利用访问控制列表(Access Control List,ACL)可以实现对文件系统对象更细粒度的访问控制。目前主流的文件系统均支持ACL,比如EXT、XFS、NTFS等。咱们将通过两次微课来学习Linux中如何对文件系统的ACL的进行管理,主要包括以下知识点:
- 启用ACL
- 管理ACL
- 配置默认ACL
- ACL与屏蔽位
本次微课将学习前两个知识点。
启用ACLRHEL/CentOS 7、8中,对XFS/EXT2、3、4文件系统默认启用ACL。早期RHEL/CentOS或其它发生版本,还需要通过mount选项来启用。如下所示,在mount命令中使用ACL选项:
# mount -o acl /dev/sdb1 /data
管理ACL
- setfacl命令
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
setfacl --restore=file
-b,--remove-all:删除所有扩展的ACL规则,基本的ACL规则(Owner/Group/Other)将被保留。
-k,--remove-default:删除缺省的ACL规则。如果没有缺省规则,将不提示。
-n,--no-mask:不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
--mask:重新计算有效权限,即使ACL mask被明确指定。
-d,--default:设定默认的ACL规则。
--restore=file:从文件恢复备份的ACL规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的ACL规则。此参数不能和除--test以外的任何参数一同执行。
--test:测试模式,不会改变任何文件的ACL规则,操作后的ACL规格将被列出。
-R,--recursive:递归地对所有文件及目录进行操作。
-L,--logical:跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P,--physical:跳过所有符号链接,包括符号链接文件。
--version:输出setfacl的版本号并退出。
--help:输出帮助信息。
--:标识命令行参数结束,其后的所有参数都将被认为是文件名。
-:如果文件名是-,则setfacl将从标准输入读取文件名。
-m, --modify:根据参数的定义添加ACL
-x, --remove:根据参数的定义删除ACL
-M, --modify-file:根据文件的定义添加CL
-X (--remove-file):根据文件的定义删除ACL
- getfacl命令
getfacl [-aceEsRLPtpndvh] file...
-a, --access 仅显示文件访问控制列表
-d, --default 仅显示默认的访问控制列表
-c, --omit-header 不显示注释表头
-e, --all-effective 显示所有的有效权限
-E, --no-effective 显示无效权限
-s, --skip-base 跳过只有基条目(base entries)的文件
-R, --recursive 递归显示子目录
-L, --logical 逻辑遍历(跟随符号链接)
-P, --physical 物理遍历(不跟随符号链接)
-t, --tabular 使用制表符分隔的输出格式
-n, --numeric 显示数字的用户/组标识
-p, --absolute-names 不去除路径前的 '/' 符号
-v, --version 显示版本并退出
-h, --help 显示本帮助信息