在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命令详解