如果这不是正确的论坛,请见谅。
我正在寻找以下问题的解决方案:
我们已使用 A 组用户拥有的全局读取/执行访问权限 (555) 来保护系统上的信息,允许 A、B、C 等组用户访问。该系统多年来一直有效运行。
但是,我现在想向网络添加一个新组,即组 X,但根据文件权限,组 X 将无法读取/执行。您能提出解决方案吗?
我最初的想法是修改每个用户的 cd 命令,但 \cd 将克服这个障碍,此外这不会影响 GUI 环境。
编辑:我一直在阅读有关 ACL 的文章,过去也曾接触过它们。由于所有数据都在单独的分区上,因此我可以为该分区激活 ACL,例如
LABEL=/home /home ext3 rw,acl 1 2
然后在最高级别修改 ACL 权限。这样会绕过原来的全局权限吗?这是一个可行的选择吗?
谢谢。
答案1
对全世界可读的文件设置黑名单不是安全的方法。考虑一下如果创建的用户意外缺少该组会发生什么?相反,最好以附加方式分配权限。您可以通过添加一个包含所有需要访问权限的用户的新组来做到这一点,或者使用法克尔斯为每个组分配权限。
添加“users1”组以对目录具有读/写/执行权限:
setfacl -m g:users1:rwx <directory name>
要自动将这些相同的权限分配给该目录内新创建的文件/目录,请添加以下-d
选项:
setfacl -d -m g:users1:rwx <directory name>
用来getfacl
检查你的工作。
我建议你通读一下SETFACL(1)和盖特法克尔(1)通过使用man setfacl
和man getfacl
。
此外,您还需要以支持 ACL 的方式重新挂载根分区:
mount -o remount,acl /
并修改 /etc/fstab 以包含acl
重启选项,例如:
/dev/xvda / ext3 noatime,errors=remount-ro,acl 0 1
答案2
当您将文件的权限设置为时555
,您授予了三项权限:
- 第一个
5
是赋予文件用户所有者的权限。 - 第二个
5
是赋予该文件的组所有者的权限。 - 第三
5
是赋予其他所有人的权限。
5
indeed 代表读取和执行权限,因此,如果要授予文件所属用户和组读取和执行权限,但不授予其他用户权限,则可以将文件权限设置为550
注意:您提到修改命令cd
,我猜您想禁止人们进入带有的文件夹cd
。为此,您只需删除文件夹的执行权限。
这是一种非常简单的方法,我不知道您想如何精确地授予权限,如果您需要的不仅仅是修改授予所有者用户/所有者组/其他所有人的权限,那么您可能确实想使用 ACL。