chmod
我理解在 Linux 上使用第一个数字作为权限管理的概念用户,第二个作为团体第三个为其他用户如上所述这个答案在了解 UNIX 权限和文件类型。
假设我有一个有 5 个用户的 Linux 系统:admin
、usera
、userb
和。默认情况下,用户、和对里面的所有文件都有执行权限,所以这些用户可以使用系统的命令行执行里面的文件,因为这些文件有 75 个userc
guest
usera
userb
userc
/usr/bin
5允许。到目前为止完全没问题。但是,我想禁止用户guest
在该文件夹上执行文件/usr/bin
,我知道我可以通过将该文件夹内所有文件的权限更改为类似 750 的权限来实现这一点chmod
,但如果我这样做,我会弄乱用户的权限usera
,userb
并且userc
因为他们也将被禁止执行文件。
在我的计算机上, 中的所有文件/usr/bin
都属于该组root
,因此我知道我可以创建一个newgroup
,将所有这些文件的组更改为它并添加usera
,userb
和userc
到newgroup
。但这样做听起来对系统默认设置的修改太多了。有谁知道解决这个问题的更聪明的方法?
如何禁止单个用户使用命令行(或在 上执行任何文件PATH
),而不需要使用需要更改太多文件权限的过于复杂的解决方案?
答案1
使用 ACL 删除权限。在这种情况下,您不需要修改所有可执行文件的权限;只需删除执行权限即可/usr/bin/
禁止遍历该目录,从而禁止访问其中的任何文件。
setfacl -m u:guest:r /usr/bin
u
这将ser的权限设置为guest
仅r
ead 该目录/usr/bin
,因此他们可以访问ls
该目录,但不能访问其中的任何内容。
您也可以删除所有权限:
setfacl -m u:guest:- /usr/bin
答案2
你想做什么?禁止某些用户使用系统的标准命令只是极端的不文明行为……可能使系统陷入危险的命令介于两者之间,并且已经过仔细的安全审查。文件的权限应该可以阻止大多数恶作剧的尝试。
- 考虑给它们一个受限制的外壳(检查手册,它可能被命名为类似
rbash
;但要小心,rsh
是一种不同类型的动物!)。他们相当有效地限制了用户(但要小心,它是可能会爆发!) - 如果这是一个负责拥有某些服务的伪用户,那么常见的解决方法是为“用户”提供一个不执行任何操作的 shell,例如
/bin/true
(检查您的系统手册以获取此行中的任何建议,可能有一个特殊的程序为此;if/bin/true
是一个 shell 脚本不要用它来做这个)。这样,如果有人设法登录该帐户,他们的会话就会立即结束。 - 为他们创建一个
chroot
(同样,有办法突破),或者使用 BSD 监狱的 Linux 容器来限制他们,并且只暴露你希望他们看到的内容。大多数控制,但设置和保持最新状态很混乱。