ACL是什么??
ACL英文原意是Access Control List(访问控制列表).它能够实现灵活的权限管理,除了文件的所有者,所属组和其他人,设置相应的权限外,ACL允许你给任何用户或是用户组设置任何文件/目录的访问权限(注意的是有些不支持数字模式的权限给定)
ACL有什么用??
作为UGO权限管理的补充,acl有GUO办不到或者是难以办到的功能
1.可以针对用户来设置权限
2.可以针对用户组来设置权限
3.子文件/子目录继承父目录的权限
检查linux是否支持ACL??
acl需要linux内核和文件系统的配合才能工作,目前我们能见到的大多数linux发行版默认是支持的,但最好还是先检查一下
注意:在linux中Vfat 文件系统不支持acl
centos7.0默认创建的xfs和ext4文件系统上有acl
centos7.x之前版本,手工创建的ext4文件系统也不支持acl
功能。需手动增加:
tune2fs -o acl /dev/sdb1
mount -o acl /dec/sdb1 /mnt
设置/dev/sda1挂载选项,用Posix Access Control Lists和用户指定的扩展属性
那如何设置acl呢??
1. setfacl -m u:用户名:所给权限:文件
2. setfacl -m u:用户名:所给的权限:目录
如果后面是目录,则只有所给的这个目录有这个权限,其子目录里面没有。
3. setfacl -Rm g:组名:所给权限X:目录
用R 就会递归到子目录里和文件,用X只给目录执行权限给文件件怎会没有
4. setfacl -M file.acl 文件或是目录
比如,编辑一个acl文件。以后用到这个权限时直接调用就行了 u:wang:0 g:tom:rw
大量文件对要求有相同的acl,可写在文件里这样统一管理比较方便
5. setfacl -m d:u:用户名:权限 目录
表示在这个目录下新建的文件、目录默认都会有这个acl
6. setfacl -x u:用户名:文件|目录
删除所创建的acl
7. setfacl -X file.acl 目录
默认acl权限给了x,文件也不会继承x权限
base acl不能删除
8. setfacl -k dir 删除默认acl权限
9. setfacl -b file清除所有自己设置的acl权限
如何限制特殊用户的最高权限呢??
acl文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限)而非传统的组权限
mask 只影响除所用者和other的之外的人和组的最大权限
mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限
用户或组的设置必须在mask权限设定范围内才会生效
10. Setfacl -m mask ::rw 文件名(中间两个冒号之间没有空格)
–set选项会把原有的acl项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能像-m一样只是添加acl就可以如
11. setfacl –set u::rw,u:wang:rw,g::r,o::– 文件
12 . acl 的备份 getfacl -R /tmp/dir >acl.txt
13. getfacl 可看到特殊权限
原创文章,作者:yywan1314,如若转载,请注明出处:http://www.178linux.com/27841