防止用户运行某些程序

防止用户运行某些程序

是否有可能阻止用户在 Linux 计算机上运行某些程序?是否有白名单方法?黑名单?

答案1

简单的解决方案可能是简单地删除系统二进制文件的执行权限。如果您想阻止用户编译或运行他们有写权限的目录中的内容,您可以创建一个单独的分区并使用 noexec 选项挂载这些文件系统。

man mount (无执行选项)

不允许在已挂载的文件系统上直接执行任何二进制文件。(直到最近,仍然可以使用 /lib/ld*.so /mnt/binary 之类的命令来运行二进制文件。此技巧自 Linux 2.4.25 / 2.6.0 起失效。)

我相信要实现这一点,你需要使用另一种方法应用装甲或者SELinux

答案2

这个问题的答案取决于您是否想要黑名单或白名单解决方案。

白名单实际上相当简单。使用与 Ubuntu 和许多其他发行版相同的方法。为特定程序或程序组创建一个组,将可执行文件的组设置为该组,然后将用户添加到该组(如果您希望他们能够访问它)。这就是在 Ubuntu(和其他发行版)上访问 sudo、打印机和一大堆其他东西的方式。

黑名单实际上更难,但在我看来这并不是一件坏事。我认为黑名单本质上不太安全。事实上,我真的想不出一种不将其视为伪白名单的方法,即每个人都是相关组的成员,您只需删除那些您不想要的人。

答案3

使用组并拒绝执行程序。或者您还想了解更多?

答案4

如果您想授予人们有限的 shell 访问权限,请查看 rbash。它为用户提供了各种限制。还可以查看 PAM 的 limits.conf(Ubuntu 上的 /etc/securit/limits.conf)。第三个选项是为您的用户创建一个 jail/chroot 环境,您可以在其中精确决定他们可以访问哪些二进制文件和库。

其他人也指出使用权限、noexec 和 ACL 来实现这一点。这真的取决于你的需求,哪种解决方案是最好的。

相关内容