Linux-ACL权限

    xiaoxiao2021-12-14  18

    ACL   access control list  访问控制列表

    1 ACL权限简介

    当你了解了Linux中的属主属组其他人权限后,就会发现,这样的权限划分并不能满足我们的需求。比如你有个文件,你的权限为rwx,文件所属组的权限为rwx,而其它人没有权限。现在需要给某个用户分配rx权限,那么在不打破现在属主属组其它人的权限的情况下,就没有办法实现这种权限分配了。那么此时就用到了ACL权限。

    2 查看、开启、设定与删除ACL权限

        2.1 查看

        ACL权限是作用于分区的,属于挂载权限,当你挂载的时候指定使用ACL权限才会开启。

        dumpe2fs -h /dev/sda1  

        #查看指定分区详细文件系统信息,从而得知该分区的ACL权限情况  -h 表示仅显示超级块分区信息

        2.2 开启

        在上一步的查看中,如果指定的分区没有开启ACL权限,那么就需要我们手动开启。

        临时开启:

        mount -o remount,acl /   # mount -o remount,acl  /dev/sda1  重新挂载指定分区

        # 重新挂载根分区,并加入ACL权限

        永久开启:

        修改配置文件  vim /etc/fstab 

        (defaults,acl)  在defaults后加上 acl  

        不过我这里的defaults 已经包含 acl 就不必再额外加acl了

        

        mount -o remount /

        #重新挂载文件系统或重启系统,使修改生效

        2.3 设定

        查看文件的ACL权限以便管理ACL权限   getfacl  文件名

        设定文件的ACL权限  setfacl 选项 文件名

         选项:

         -m 设定ACL权限

         -x  删除指定的ACL权限

         -b  删除所有的ACL权限

         -d 设定默认的ACL权限

         -k  删除默认ACL权限

         -R 递归设定ACL权限

         setfacl -m u:testuser:rx /testdir

         # 给用户 testuser 赋予 r-x 权限,使用 u:用户名:权限 格式

         # 给用户组 testgroup 赋予 r-x 权限,使用 g:组名:权限 格式 

     

        2.4 删除 

        setfacl -x u:testuser 文件名  #删除指定文件的指定用户的ACL权限

        setfacl -b 文件名  #删除指定文件的所有用户的ACL权限

    3 最大有效权限

    在getfacl 命令的输出中,我们可以看到一个 mask 值,如下图:

    mask是用来指定最大权限的。如果我们给用户赋予了ACL权限,是需要和mask的权限进行“与”运算,才能得到用户的真正权限。所以最大有效权限是给用户设定的权限与mask相与的结果。

    设定mask的值:  setfacl -m m:rwx 文件名

    比如针对 testdir 给用户 testuser 分配的权限为 rwx

    而 mask 为 r-x  那么用户的实际权限为 r-x 如下图:

    '与' 运算结果为 r-x

    4 默认ACL权限和递归ACL权限

    递归ACL权限:

    setfacl -m u:testuser:rx -R testdir/   

    # 递归的把testdir目录以及其下的所有文件给testuser分配  rx   ACL权限 仅针对目录

    默认ACL权限:

    默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录下的所有新建的子文件都会继承父目录的ACL权限。

    setfacl -m d:u:testuser:rw -R  /home/testdir # 赋予目录默认权限 仅针对目录有效

    转载请注明原文地址: https://ju.6miu.com/read-968248.html

    最新回复(0)