1.ACL介绍
Linux 下用户对文件的操作权限有 r-读, w-写, x-可执行三种,而对linux 下的文件而言,用户身份分为:所有者, 所属组, 其它人, 且文件的所有者,所属组都只能是一个,所以在对文件分配用户的使用权限时,只能对这三种身份进行分配rwx 权限.Linux 主要作为服务器系统使用,用户众多.所以在实际使用场景中,这三种身份并不能很好地实现资源权限分配问题,所以就有了ACL权限。ACL 权限就是为了解决linux 下三种身份不能满足资源权限分配需求的问题的.
2. 那些文件系统支持ACL
Linux下的文件系统支持acl的有:ext2、ext3、ext4,xfs。
CentOS7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt/test
ACL生效顺序:所有者,自定义用户,自定义组,其他人。
3. 用法介绍
a.为多用户或组的文件和目录赋予访问权限rwx
• getfacl file|directory #查看文件的acl属性。
• setfacl -m u:wang:rwx file|directory #为文件设置acl的user属性。
• setfacl -Rm g:sales:rwX directory #为文件设置acl的group属性。
• setfacl -M file.acl file|directory #恢复acl属性
• setfacl -m g:salesgroup:rw file| directory #为文件设置acl的group属性。
• setfacl -m d:u:wang:rx directory #设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。
• setfacl -x u:wang file|directory #删除一条默认权限,但是删除后,仍有属性(+)存在。
• setfacl -X file.acl directory # 批量删除acl属性。
b.ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限) ,而非传统的组权限getfacl
可看到特殊权限: flags通过ACL赋予目录默认x权限, 目录内文件也不会继承x权限base ACL 不能删除
setfacl -k dir #删除默认ACL权限
setfacl –b file1 #清除所有ACL权限
getfacl file1 | setfacl –set-file=- file2 #复制file1的acl权限给file2
c.ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大权限) ,而非传统的组权限
getfacl 可看到特殊权限: flags
通过ACL赋予目录默认x权限, 目录内文件也不会继承x权限
base ACL 不能删除
setfacl -k dir #删除默认ACL权限
setfacl –b file1 #清除所有ACL权限
getfacl file1 | setfacl –set-file=- file2 #复制file1
d. 备份和恢复ACL 主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p
参数。但是tar等常见的备份工具是不会保留目录和文件的ACL信息。
getfacl -R /tmp/dir1 > acl.txt
setfacl -R -b /tmp/dir1
setfacl -R –set-file=acl.txt /tmp/dir1
setfacl –restore acl.txt
getfacl -R /tmp/dir1的acl权限给file2。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95514