阻止用户将文件标记为可执行文件?

lfa*_*one 3 security ubuntu executable

我想确保我的系统的用户无法修改文件 +x,并且我不希望 /home/ 或 /var/ 中的任何内容是可执行的。

我不能把它们放在不同的分区上。

运行 Ubuntu 9.04 服务器。

jj3*_*j33 11

我打算向 chmod 或其他东西建议一个包装器,但我想得越多,用户最终会找到解决这个问题的方法(从另一个盒子 scp 一个可执行文件,或者运行 perl -s "chmod('FILE'); “, 等等...

所以,我认为FS方法是最好的。既然你说你不能将它们移动到一个新的文件系统,那么在没有 exec 权限的情况下使用 --bind 挂载“重新挂载” /home 和 /var 怎么样?

mount -o noexec --bind /var /var
mount -o noexec --bind /home /home
Run Code Online (Sandbox Code Playgroud)

我不确定这是否可行,但似乎很有希望......

编辑:
嗯,我喜欢这个答案中漂亮、闪亮的“好答案”徽章,但在玩过它之后,我认为它行不通。我最初的测试是在旧的 (2.4.9) 内核上进行的,并且“在自身之上安装”功能似乎有效。我用更新的内核 (2.6.18) 再次尝试,但它似乎不起作用。我开始研究解决方法(例如将 /var 和 /home 重命名为其他名称,然后将它们安装回去。不过我并没有走得太远,因为我在手册页中找到了这个,用于安装在较新的盒子上:

请注意,文件系统挂载选项将与原始挂载点上的相同,并且无法通过将 -o 选项与 --bind/--rbind 一起传递来更改。

哦,好吧...... --bind 仍然是一个有趣的选择......