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   目录











展开阅读全文

没有更多推荐了,返回首页