访问控制列表ACL

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信息。

 

原文地址:https://www.cnblogs.com/momenglin/p/8533173.html