Linux文件权限管理工具setfacl命令详解

在Linux中,setfacl命令用于细分文件权限,是独立于传统的ugo+rwx权限之外的具体权限设置,可以对某个文件或目录设置更精确的操作权限,比如配置某个文件仅面向某位用户具有某种权限。

同时,getfacl是查看ACL的命令。

语法

setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...

参数说明

参数 说明
-b, --remove-all 删除所有扩展ACL,只保留基本规则
-d, --default 设置默认ACL
-h, --help 显示帮助
-k, --remove-default 移除默认ACL
-L, --logical 仅跟踪符号链接文件,不跟踪符号链接目录
-m, --modify-acl 更改文件ACL
-M, --modify-file=file 从文件读取ACL信息并按照信息内容修改ACL
-n, --no-mask 不重新计算有效UMASK
-P, --physical 跳过所有符号链接,包括符号链接文件
-R, --recursive 递归操作子目录
-v, --version 显示版本并退出
-x, --remove=acl 删除指定的ACL
-X, --remove-file=file 从文件读取ACL信息并按照信息内容删除ACL
--mask 重新计算有效UMASK
--restore=file 从备份文件恢复,可通过“getfacl -R”生成备份文件
--set=acl 设置当前文件的ACL
--set-file=file 从文件中读取ACL信息
--test 测试模式,不真正修改ACL
-: 标识命令行参数结束,其后的所有参数都将被认为是文件名,如果文件名是“-”则从标准输入读取文件名

举例

# 查看文件file的ACL
getfacl file

# 对用户lzl添加文件file的读写权限
setfacl -m u:lzl:rw- file
# 对组grpa添加文件file的读写权限
setfacl -m g:grpa:r-w file
# 对用户lzl添加目录dira中所有文件的默认权限
setfacl -d -R -m u:lzl:rw- dira
# 对other添加目录dira中所有文件的默认权限
setfacl -d -R -m o:: --- dira

# 清除file的ACL
setfacl -b file
# 清除用户lzl对file的ACL
setfacl -x u:lzl file

常见问题

设置文件ACL时报错“Operation not supported”,表示当前磁盘分区不支持ACL,修改文件/etc/fstab,加上acl标签:

/dev/sdb1 /testacl xfs defaults,acl 0 0

原创文章禁止转载:技术学堂 » Linux文件权限管理工具setfacl命令详解

精彩评论

6+3=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏