文件的权限详解(二)ACL篇
ACL访问控制列表作用:
1、 ACL:Access Control List,实现灵活的权限管理
2、 除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
3、 CentOS7.0默认创建的xfs和ext4文件系统有ACL功能。
4、 CentOS7.X之前版本,默认手工创建的ext4文件系统无ACL功能。需手动增加:
tune2fs –o acl /dev/sdb1
mount –o acl /dev/sdb1 /mnt
5、 ACL生效顺序:所有者,自定义用户,自定义组,其他人
ACL使用两个命令来对其进行控制
getfacl:取得某个文件/目录的ACL设置项目
setfacl:设置某个文件/目录的ACL设置项目
setfacl命令
作用:设置文件访问控制列表的命令
语 法:
格 式1:setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file…
格 式2:setfacl –restore=file
参 数:
-
-m:设置后续acl参数
setfacl -m u:wang:rwx file|directory 设置wang用户对文件或目录具有读写执行权限 setfacl -m g:salesgroup:rw file| directory 设置组用户对文件或目录的读写执行权限
-
-x:删除后续acl参数
setfacl -x u:wang file |directory 删除wang用户对文件的访问限制
-
–b,–remove-all:删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
setfacl -b file1清除所有ACL权限
-
–k,–remove-default:删除缺省的acl规则。如果没有缺省规则,将不提示。
setfacl -k dir 删除默认ACL权限
-
–m:重新计算有效权限,即使ACL mask被明确指定。
-
–d,--default:设定默认的acl规则;以后这个目录下创建的文件都将具有此权限
setfacl -m d:u:wang:rx directory
-
-R,–recursive:递归的对目前该目录下所有文件及目录进行操作。
setfacl -Rm g:sales:rwX directory
-
– getfacl file1 | setfacl –set-file=- file2 复制file1的acl权限给file2
-
–restore=file:从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除–test以外的任何参数一同执行
-n ,–no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
-L ,–logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P ,–physical:跳过所有符号链接,包括符号链接文件。
–test :测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。
—
标识命令行参数结束,其后的所有参数都将被认为是文件名。
–
如果文件名是-,则setfacl将从标准输入读取文件名。
其他:
以文本文件方式批量设置acl权限 -M
[root@localhost qiuzhaoxian]# cat acl.test u:qzx:--- u:user1:rwx u:user2:r u:user3:7 g:gentoo:0 g:user4:rx [root@localhost qiuzhaoxian]# setfacl -M acl.test 123 [root@localhost qiuzhaoxian]# getfacl 123 # file: 123 # owner: xiaoming # group: xiaoming user::rwx user:qzx:--- user:user1:rwx user:user2:r-- user:user3:rwx group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
– X 以文本方式批量删除文件acl(本来有删除对应的acl权限)acl权限
[root@localhost qiuzhaoxian]# cat bbb.test u:user1 u:user2 u:user3 [root@localhost qiuzhaoxian]# setfacl -X bbb.test 123 [root@localhost qiuzhaoxian]# getfacl 123 # file: 123 # owner: xiaoming # group: xiaoming user::rwx user:qzx:--- group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
以参考文件的acl权限设置目标文件
[root@localhost qiuzhaoxian]# mkdir 456 [root@localhost qiuzhaoxian]# getfacl 123 | setfacl --set-file=- 456 [root@localhost qiuzhaoxian]# getfacl 456 # file: 456 # owner: root # group: root user::rwx user:qzx:--- group::rwx group:user4:r-x group:gentoo:--- mask::rwx other::---
注:setfacl –set-file=– 这里的=后边的-表示从标准输入读取文件
这里的- 可以换成文件(当备份恢复时用)
–set选项会把原有的ACL项都删除,用新的替代,需要注意的
是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以.
如:
setfacl –set u : : rw , u : qzx: rw , g : : r , o::- file1
备份和恢复ACL
#getfacl -R /tmp/dir1 > acl.txt#setfacl -R -b /tmp/dir1 #setfacl -R --set-file=acl.txt /tmp/dir1#getfacl -R /tmp/dir1
关于mask
mask只影响除所有者和other的之外的人和组的最大权限
Mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限
一旦设置acl mask后 所属组权限就变成mask权限
也就是说用chmod g=wx 文件 那么mask也将编程wx
用户或组的设置必须存在于mask权限设定范围内才会生效。
设置方式
setfacl -m mask::rx file
原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/28909