是否可以禁止特定用户执行 /usr/bin 上的文件而不将所有文件权限更改为 750?

是否可以禁止特定用户执行 /usr/bin 上的文件而不将所有文件权限更改为 750?

chmod我理解在 Linux 上使用第一个数字作为权限管理的概念用户,第二个作为团体第三个为其他用户如上所述这个答案了解 UNIX 权限和文件类型

假设我有一个有 5 个用户的 Linux 系统:adminuserauserb和。默认情况下,用户、和对里面的所有文件都有执行权限,所以这些用户可以使用系统的命令行执行里面的文件,因为这些文件有 75 个usercguestuserauserbuserc/usr/bin5允许。到目前为止完全没问题。但是,我想禁止用户guest在该文件夹上执行文件/usr/bin,我知道我可以通过将该文件夹内所有文件的权限更改为类似 750 的权限来实现这一点chmod,但如果我这样做,我会弄乱用户的权限userauserb并且userc因为他们也将被禁止执行文件。

在我的计算机上, 中的所有文件/usr/bin都属于该组root,因此我知道我可以创建一个newgroup,将所有这些文件的组更改为它并添加usera,userbusercnewgroup。但这样做听起来对系统默认设置的修改太多了。有谁知道解决这个问题的更聪明的方法?

如何禁止单个用户使用命令行(或在 上执行任何文件PATH),而不需要使用需要更改太多文件权限的过于复杂的解决方案?

答案1

使用 ACL 删除权限。在这种情况下,您不需要修改所有可执行文件的权限;只需删除执行权限即可/usr/bin/禁止遍历该目录,从而禁止访问其中的任何文件。

setfacl -m u:guest:r /usr/bin

u这将ser的权限设置为guestread 该目录/usr/bin,因此他们可以访问ls该目录,但不能访问其中的任何内容。

您也可以删除所有权限:

setfacl -m u:guest:- /usr/bin

答案2

你想做什么?禁止某些用户使用系统的标准命令只是极端的不文明行为……可能使系统陷入危险的命令介于两者之间,并且已经过仔细的安全审查。文件的权限应该可以阻止大多数恶作剧的尝试。

  • 考虑给它们一个受限制的外壳(检查手册,它可能被命名为类似rbash;但要小心,rsh是一种不同类型的动物!)。他们相当有效地限制了用户(但要小心,它可能会爆发!)
  • 如果这是一个负责拥有某些服务的伪用户,那么常见的解决方法是为“用户”提供一个不执行任何操作的 shell,例如/bin/true(检查您的系统手册以获取此行中的任何建议,可能有一个特殊的程序为此;if/bin/true是一个 shell 脚本不要用它来做这个)。这样,如果有人设法登录该帐户,他们的会话就会立即结束。
  • 为他们创建一个chroot(同样,有办法突破),或者使用 BSD 监狱的 Linux 容器来限制他们,并且只暴露你希望他们看到的内容。大多数控制,但设置和保持最新状态很混乱。

相关内容