文件特殊权限-ACL权限

ACL权限:
ACL(access control list)访问控制列表,可以对单一的用户或者组设置对文件或目录的独立rwx权限。
1.开启ACL权限
由于ACL是传统的Unix-like操作系统权限的额外支持项目,因此要使用ACL必须要有文件系统的支持才行。目前绝大部分的文件系统都支持ACL的功能,包括EXT3/EXT4,JFS,XFS 等。
ext系列---文件系统查询命令格式:dumpe2fs -h 分区设备名称

Default mount options; 缺省(默认)挂载选项
假如没有开启ACL权限,手动开启分区ACL权限。 mount -o remount ,acl 分区(e.g. /或/boot等)

此命令执行后是临时让/分区有ACL权限,重启后失效。若永久开启ACL需要修改配置文件/etc/fstab文件:

xfs文件系统--dmesg | grep -I "acl"
xfs文件系统是centos7中默认使用的文件系统(旧版本通常为ext系列),XFS文件系统默认开启ACL权限。

因为是不同的文件系统,所以查询的方式也并不相同: dmesg | grep -I "acl"
#在返回信息中:

第一条说明了:系统在219运行系统模式,其中就包含了ACL。
第二条说明了:具有ACL、安全属性、没有启用调试的SGI XFS。
2.ACL权限的使用
描述:设置访问控制列表。
用法:setfacl 【选项】 {-m|-x} {u:username:rwx} 文件或目录
选项:
-b 删除所有ACL条目 -m 添加ACL条目
-x 删除指定用户的ACL权限 -k :清除指定目录的默认ACL权限
-R 对目录设置ACL权限时,一并将ACL权限递归到所有已存在的子文件上
-d 对目录设置默认ACL权限,该权限不对目录生效,仅对在目录下新建的子文件生效
注意:在具有默认ACL权限的目录下创建新目录时,新目录不仅继承ACL权限,还会继承默认权限
在ACL权限里可以添加-R选项来递归设置ACL权限,具体格式是: setfacl -R -m u:user:rwx aa
mask:在ACL权限里还有mask的相关设置,可以把mask理解为有效权限。它的意思就是用户或组的权限必须要存在于mask的权限设置范围内才能生效。
下面请看实例:

#(给u1用户在/kk/目录赋予rwx的ACL权限)

#(为test目录设置mask为r可读。再次查看发现ACL权限出现了变化。user1的ACL权限在加上mask之后只有r权限。)
注:为/test/添加默认最大权限(mask)为r,其他ACL权限不得超出此权限。但mask的设置必须遵循最后设置原则,其他ACL权限设置完成后最后设置mask默认ACL才能正常生效。在生产环境中我们通常将mask默认设置成rwx,然后针对不同的用户和用户组规定他们权限。
默认ACL权限:只能设置到目录上
setfacl -dm u:username:rwx filename 或
setfacl -m d:g:groupname:rwx filename
1.在有默认权限的目录下创建新文件&新目录时,新创建的文件会继承目录上的权限
2.默认ACL只是为了让目录将该ACL权限传递给后续子文件,但不对当前目录本身生效
3.在有默认权限的目录下新建子目录时,子目录除了会继承基本的ACL权限之外,还会继承默认ACL权限
mask生效的机制:基础权限的优先级大于acl权限
1.若给了文件所属组较大权限,则mask会跟随所属组权限,即便后续设置了新的基础acl权限,mask也不会被改变{基础权限的优先级大于acl权限}
2.设置新的acl权限时,acl权限小于组权限时,acl权限的mask不会跟随acl设置;当acl权限大于组权限时,acl的mask就会跟随acl权限生效
3.mask最后可以使用手动设置的方式进行最终修改
注:当文件设置了ACL权限之后,改文件所属组位置上所显示的不再是所属组权限,显示的是mask的权限

posted @ 2021-03-09 18:57  风雪一刀藏  阅读(705)  评论(0编辑  收藏  举报