如何设置用户无法执行写入操作?

如何设置用户无法执行写入操作?

我想确保非 root 用户无法运行任何程序,因为该用户有写入权限。这还包括使用“其他”方式运行不“尊重”文件权限设置的 python、perl、bash 程序。此外,使用 chmod 或类似方法逃脱不应存在漏洞。有没有针对 vanilla Ubuntu 11.10 服务器的优雅解决方案?

答案1

授予用户对使用“noexec”挂载选项挂载的卷上的目录的写入权限。

答案2

这样做真的很麻烦,而且坦率地说,这违背了授予 shell 访问权限的初衷!不要忘记,为了获得 shell,许多程序都是在输入密码后执行的,其中最不常见的是 BASH 或类似程序,它们会为您提供控制台!如果您不希望人们执行程序,请不要授予他们 shell 访问权限。如果他们只需要管理文件,请授予他们 FTP/SFTP 访问权限。您甚至可以授予 SCP 访问权限,并在 /etc/passwd 中拒绝该用户使用 shell(查看守护进程用户)

答案3

不,通常没有。(最好的是 noexec 挂载目录,它不会阻止运行 perl/python 脚本。)如果他们可以执行 chmod,那么他们就可以使放入其目录中的文件可执行。为了防止这种情况,您需要某种基于规则的访问控制,它们通常是内核模块。由于 Linux 内核支持安全模块,因此大多数模块都可以在运行时加载和卸载。

研究一下 SELinux,它允许你自定义程序(可执行文件)和/或用户可以做什么,尽管编写策略可能有点棘手,但也有很多示例/参考资料。(见http://oss.tresys.com/projects/slide

GrSecurity 有一个全局标志热塑性弹性体(可信路径执行),这意味着只有 root 拥有的文件才能运行(并且只能从 root 拥有的目录运行),此外它还支持 RBAC(基于规则的访问控制)。

一般最佳做法是设置一个系统,为您选择的 LSM 启用训练模式,使用一段时间,然后锁定它,并让用户进入。然后,当用户遇到问题时,您可以微调限制。当然,仅使用参考策略是一个很好的起点。

答案4

下面的操作会删除常规文件的执行权限,但保留目录的执行权限,以便可以浏览它们...

chmod -R a-x+X directory

编辑 如果希望root用户仍然能够执行,可以执行以下操作。

su root
chmod -R g-x+X o-x+X directory

相关内容