Linux基础篇--ACL访问控制列表

ACL  Access Control List:访问控制列表

    实现灵活的权限管理

    一般的权限只能针对所有者、所属组、其他三种对象,对于第四类以及第五类人则无法做出限制,功能有限,因此可以用到acl控制列表来实现

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能

CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

    tune2fs –o acl /dev/sdb1

    mount –o acl /dev/sdb1 /mnt/test

传统权限和ACL设定权限优先级(从高到低):

    所有者,自定义用户(ACL定义用户),自定义组(ACL定义组),其他人

setfacl   设置acl控制列表

    命令用法:

        setfacl -m u:用户名:权限  文件名    

        如setfacl  -m  u:test1:rwx  /etc/fstab

    选项:

 -x 用户名  文件名   删除acl权限

 -b     彻底删除全部acl权限

 -R -m  递归设置acl权限

设定acl控制列表后,会在权限列最后一位多出一个“+”号

 

getfacl     获取acl列表

    用法:getfacl  dir/file    获取文件或目录的acl列表

    选项:

        getfacl file1 | setfacl --set-file=- file2 复制file1的acl权限给file2

 

mask      

acl列表中权限最高,其他权限全都低于mask权限,可用于批量修改acl列表中的权限。

一旦设定mask值,所属组的权限就是mask权限。

    命令用法:

        setfacl -m mask::rx file

设定maks权限前

设定mask权限后

    选项:

        --set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL即可

    示例:

        setfacl --set u::rw,u:wang:rw,g::r,o::- file1

 

备份和恢复ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息

    用法:

getfacl -R /tmp/dir1 > acl.txt   备份acl权限到acl.txt文件

setfacl -R -b /tmp/dir1        删除dir1目录所有权限

setfacl -R --set-file=acl.txt /tmp/dir1  用新权限代替原有权限

setfacl --restore acl.txt        从acl.txt获取权限列表

getfacl -R /tmp/dir1          查看权限

猜你喜欢

转载自blog.csdn.net/u013168176/article/details/81271508