防止用户运行某些程序

是否有可能阻止用户在其Linux电脑上运行某些程序? 有白名单方法吗? 黑名单?

简单的解决scheme可能是简单地删除系统二进制文件的执行权限。 如果你想阻止用户编写目录或者从目录运行东西,你可以创build一个独立的分区,并使用noexec选项挂载这些文件系统。

man mount(noexec选项)

不要允许在挂接的文件系统上直接执行任何二进制文件。 (直到最近才有可能使用像/lib/ld*.so / mnt / binary这样的命令来运行二进制文件,这个技巧从Linux 2.4.25 / 2.6.0开始就失败了。

我相信另一种方法来完成这个你需要使用像AppArmor或SELinux的东西。

对此的回答取决于您是否想要黑名单或白名单解决scheme。

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

黑名单其实更难,但这不是一件坏事。 黑名单我认为本质上不太安全。 事实上,我不能真正想到这样做,不对待就像一个伪白名单,即每个人都是相关组的成员,你只是删除你不想要的。

使用组并拒绝执行程序。 还是你在寻找更多?

你可以用标准的* nix权限和组来攻击一些东西。

但是,如果您需要更多的东西,您可能需要google POSIX ACL。 大多数(所有?)主要的Linux文件系统都支持它们,它们给了你很多额外的控制和粒度。

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

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

可能不会。 这取决于“某些程序”的含义。 如果用户有一个有用的交互式shell,他们几乎可以安装任何他们想要的软件。 但是如果你不希望它们能够运行你已经安装的软件的特定副本,普通的文件权限就可以正常工作。 例如,创build一个组“xmmsblacklist”,chmod 705 / usr / bin / xmms,chgrp xmmsblacklist / usr / bin / xmms,并将用户添加到该组。