ACL:Access Control List 访问控制列表
除了文件原本的权限位设置,可以自定义用户访问控制。
CentOS 7 默认创建的xfs和ext4文件系统具有ACL功能
CentOS 7 之前版本,系统安装时候创建的文件系统有ACL功能,默认手工创建的ext4文件系统无ACL功 能,需手动增加。
比如在6上新加一块磁盘,创建了sdb1分区,可以用下面命令使其支持ACL:
基本命令用法
getfacl XXX
获取文件或文件夹的权限:
setfacl
(set file acl)
给一个文件加了facl的话,整个权限位后面会有个+
号,表示设置了facl权限。
-m 参数,表示modify
禁止yu
用户访问file1
禁止yu
组访问file2
禁止其它用户访问file1
默认的从上到下的权限依次是:
如果一个用户属于多个自定义的组,权限是这几个组的权限的累加。
setfacl的其他用法
setfacl -Rb *
:清除所有acl
setfacl -M TEXT
:利用列表来批量设置权限
-d
参数(default的意思),默认在facl权限下的目录,新创建的文件和文件夹继承上一级目录的权限。例如:
setfacl -md d:u:yu:rwx /app/dir2
那么在dir2下新创建的目录就默认继承dir2的acl权限。
-x
删除某个权限:
setfacl -x u:yu:rwx /app/dir2
-X
按照文件里的内容来批量删除权限:
setfacl -X file.acl xxx
acl中的mask
facl的mask是高压线,是影响自定义用户和自定义组的权限,有了mask后,会与自定义的用户和组的权限做逻辑与,这之后是自定义用户和组的真实权限。
默认是没有高压线的,默认值一般都是所有自定义用户和组的最高权限累加。
如果设置了,就相当于设定了高压线,高于这个高压线的权限,会降低到高压线之下。
我们可以看到,设置了高压线后,自定义用户和自定义组的有效值(effective)是不超过mask的r--
facl权限的复制、备份和恢复
复制acl权限:
getfacl file1 | setfacl --set-file=- file2
主要的文件操作命令cp和mv都支持ACL,只是cp命令需要 加上-p 参数。但是tar等常见的备份工具是不会保留目录 和文件的ACL信息。