• acl权限和设置方法


    ACL主要目的是提供传统的权限之外的具体权限的设置。ACL可以针对单一用户,单一文件或目录来进行r,w,x的权限设置。对于需要特殊权限的使用状况非常有帮助。
         ACL主要可以针对以下几个项目来进行设置:
              用户:可以针对用户来设置权限;
              用户组:可以针对用户组来设置其权限;
              默认属性:可以在该目录下在新建目录时设置新数据的默认权限。
           
    如何启动ACL
         使用mount,可以直接查看挂载参数的功能。如果没有acl,则说明挂载的时候没有开启acl权限。那么我们可以使用dump2fs -h /dev/sda2命令来查看该块设备的状态信息。其中有一行Default mount options: *****,如果****中有acl,则说明支持acl。
         接下来,我们可以使用mount -o remount,acl / 的命令来重新挂载根分区,这样就打开了acl权限。
         如果想要每次开机都生效,可以编辑/etc/fstab,并修改相关参数。
              /dev/sda1 / ext4 defaults,acl 1 1
    ACL设置技巧
        setfacl [-bkRd] [{-m|-x} acl参数]  目标文件名
        参数:

            -m:设置后续的acl参数给文件使用,不可以与-x合用。
            -x:删除后续的acl参数,不可与-m合用。
            -b:删除所有的acl设置参数。
            -k:删除默认的acl参数。
            -R:递归设置acl。

            -d:设置默认的acl参数,只对目录有效。在该目录下新建的数据会引用此默认值。

    例子:有一个目录/project,所有者是root,所属组是tgroup,组里面有两个用户zhangsan和lisi,他们拥有读写执行权限,其他人没有任何权限,但是现在有一个外来用户st需要读和执行权限,用acl可以解决该问题。

    创建用户zhangsan和lishi,st

    useradd zhangsan

    useradd lisi

    useradd st

    创建组

    groupadd tgroup

    把zhangsan和lisi加入组

    gpasswd -a zhangsan tgroup
    gpasswd -a lisi tgroup

    创建目录,并赋值权限和所有者和所属组

    mkdir  /project
    chown root:tgroup  /project
    chmod 770  /project

    设置acl权限

    setfacl  -m  -u:(用户名):(赋予的权限)    目录

    setfacl -m u:st:rx    /project/

    之后可以看到,权限后面多了一个+,代表是acl权限

    转存失败重新上传取消

    通过查看命令

    getfacl 目录

    getfacl  /project

    给一个组设置acl权限

    grouopadd  tgroup2

    setfacl -m g:tgroup2:rwx   /project/

    注意上图有个mask的字段,该字段又表示什么意思呢?

    mask是最大有效权限,如果赋予用户acl权限,是需要和mask权限相与才能得到用户的真正的权限的。

    可以调整mask权限的值来达到调整最后用户真正权限的目的。

    setfacl -m m:rw   /project/

    看到mask权限改变了。mask&&acl,最后用户真正的权限也会相应改变。

    删除acl权限

    1 删除指定用户的acl权限

       setfacl  -x  u:用户名  文件名

      setfacl   -x u:st          /project/

    2 删除指定组用户的acl权限

          setfacl  -x  g:组名  文件名

          setfacl -x g:tgroup2   /project/

    3 删除文件下所有acl权限

          setfacl  -b  文件名

          setfacl -b     /project/

    默认的acl权限和递归acl权限

    递归acl权限

    父目录设置acl权限,所有子目录和子文件都有该相同acl权限

       setfacl  -m u:用户名:权限   -R  目录

       setfacl  -m u:st:rx   -R  /project/

    不过有个问题,在创建这条命令之后的目录和文件,都不具备该acl权限,如果想要以后创建的文件和目录具备该acl权限,需要默认的acl权限

     默认acl权限

       setfacl  -m d  u:用户名:权限   -R  目录

    默认acl权限的作用:父目录设定了默认acl权限,那么父目录新建的文件和目录,都会继承该acl权限。

    默认acl权限和递归acl权限的区别

    1 默认的只对新建的文件和目录会继承该acl权限,以前建立好的,没有这个功能,如果以前建立好的文件和目录要有该acl权限,得用递归acl权限。

    2 递归的alc权限,只对以前创建好的文件和目录能有该acl权限,对于后来新建的没有,默认和递归的作用正好相反。

    3 默认acl权限   setfacl  -m d  u:用户名:权限   -R   目录

       递归acl权限   setfacl  -m     u:用户名:权限   -R   目录

  • 相关阅读:
    Java基础之浅谈接口
    在学习Python时遇到的一些项目bug
    数据库查找、增加等基本操作
    IO模型学习笔记
    Windows10安装MySQL5.7.43
    腾讯云自定义配置购买云服务器图文操作教程 新手必看!
    灰色关联度分析-详细代码和说明
    【NSArray和NSDictionary的内存管理 Objective-C语言】
    k8s - pod卷的使用 - pod镜像的升级与回滚 - 探针
    【vue3|第20期】vue3中Vue Router路由器工作模式
  • 原文地址:https://blog.csdn.net/liuliuhelingdao/article/details/127334489