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

Raf*_*rsk 9 permissions chmod path

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

比方说,我有一个Linux系统具有5个用户:adminuserauserbusercguest。默认情况下,用户usera,userbuserc对里面的所有文件都有执行权限/usr/bin,因此这些用户可以使用系统的命令行执行里面的文件,因为这些文件有 75 5权限。到目前为止完全没问题。但是,我想禁止用户guest执行文件夹上的文件/usr/bin,我知道我可以通过将这个文件夹中所有文件的权限更改为 750 之类的东西来实现这一点chmod,但是如果我这样做,我会搞砸用户的权限userauserb而且userc因为它们也将禁止执行文件。

在我的电脑中,所有文件/usr/bin都属于集团root,所以我知道我可以创建一个newgroup,该组中的所有这些文件的改变,并添加userauserbusercnewgroup。但是这样做听起来像是对系统默认设置进行了太多修改。有谁知道解决这个问题的更聪明的方法?

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

mur*_*uru 13

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

setfacl -m u:guest:r /usr/bin
Run Code Online (Sandbox Code Playgroud)

这将user的权限设置guest为仅r读取目录/usr/bin,因此他们可以ls访问该目录但不能访问其中的任何内容。

您也可以删除所有权限:

setfacl -m u:guest:- /usr/bin
Run Code Online (Sandbox Code Playgroud)

  • @roaima:请解释一下。 (9认同)
  • 这可能会破坏所有分发升级。这真是个坏主意。 (5认同)
  • 为什么?从上面的命令中,只有用户“guest”会受到影响,还是我遗漏了什么? (5认同)
  • 如果不出意外,当你的操作系统相当于 `filesystem` 包被重新安装并尝试重新声明原始权限时,它就会中断。 (4认同)