大家好,欢迎来到IT知识分享网。
Setfacl
命令介绍
先查看文档中如何描述这个命令的
setfacl(Set file access control lists)直译过来是设置文件访问控制列表 ,其主要功能是用于设置文件ACL策略规则。FACL即文件访问控制列表策略,通过该技术可以更加精准的控制权限的分配。
这样子说可能有些难理解它真正的含义是什么,可以举一个例子,例如仅允许某个用户访问指定目录,或仅有某个用户才具有写入权限,把权限约束在一个极小的范围内,系统也就更加安全。
语法格式
setfacl的语法格式是:setfacl 【参数】【文件/目录】
setfacl [-bkndRLPvh] [{
-m|-x} acl_spec] [{
-M|-X} acl_file] file ... setfacl --restore=file
基本参数
命令的常用参数是以下这些,一起来看看
-b | 删除所有扩展访问控制列表,保留基本的信息 |
---|---|
-k | 移除默认访问控制列表 |
-d | 应用到默认访问控制列表的操作,针对目录使用 |
-P | 跳过所有符号链接,包括符号链接文件 |
-R | 递归操作子目录 |
– m | 更改文件访问控制列表 |
-x | 根据文件中访问控制列表移除条目 |
-X | 从文件读取访问控制列表条目并删除 |
-M | 从文件读取访问控制列表条目更改 |
– -restore=file | 从文件恢复备份的ACL规则,通过这种机制可以恢复整个目录树的ACL规则 |
– – test | 测试模式,不会改变任何文件的ACL规则,操作后的ACL规格将被列出 |
参考实例
1. 对目录进行FACL策略规则设置
可以看到加上-d
参数后,显示的规则多了一些目录默认规则信息
[root@localhost ~]# setfacl -d -m u:test:rwx namedir/ [root@localhost ~]# getfacl namedir/ # file: namedir/ # owner: root # group: root user::rwx user:root:rwx user:test1:rwx group::r-x mask::rwx other::r-x default:user::rwx default:user:root:rwx default:group::r-x default:mask::rwx default:other::r-x
2. 获取文件的ACL信息
获取文件的ACL信息会需要用到getfacl
这个命令,一起来看下默认显示的ACL是咋样的
[root@localhost ~]# touch a.txt [root@localhost ~]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- group::r-- other::r--
3.更改文件的ACL规则
更改文件的ACL规则会需要用到-m
的参数,设置用户test
的权限为读写执行,并且设置用户test1
的权限为000权限。
[root@localhost ~]# setfacl -m u:test:rwx a.txt [root@localhost ~]# setfacl -m u:test1:- a.txt [root@localhost ~]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- user:root:rwx user:test1:--- group::r-- mask::rwx other::r--
若是要修改所有组对这个文件的访问权限,可以将u改成g,一起来试试
[root@localhost ~]# groupadd grp [root@localhost ~]# usermod -G grp test1 [root@localhost ~]# useradd -G grp test2 [root@localhost ~]# setfacl -m g:grp:- a.txt [root@localhost ~]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- group::r-- group:grp:--- mask::r-- other::r-- [root@localhost ~]# su - test1 上一次登录:日 3月 5 16:39:21 CST 2023pts/1 上 [test1@localhost ~]$ cat /root/a.txt cat: /root/a.txt: 权限不够
4.去掉所有的ACL规则
直接使用-b
参数即可
[root@localhost ~]# setfacl -b a.txt [root@localhost ~]# getfacl a.txt # file: a.txt # owner: root # group: root user::rw- group::r-- other::r--
5.移除一条ACL规则
-x
参数是可以直接移除一个规则的,若在工作中,只想移除一个ACL规则,可以使用这个参数了,因为-b
相当于是全部删掉,只保留原来的ACL信息。
这里的话移除用户test2
的规则
[root@localhost ~]# setfacl -Rm u:test1:rwx namedir [root@localhost ~]# setfacl -Rm u:test2:rwx namedir [root@localhost ~]# getfacl namedir # file: namedir # owner: root # group: root user::rwx user:root:rwx user:test1:rwx user:test2:rwx group::r-x mask::rwx other::r-x [root@localhost ~]# setfacl -x u:test2 namedir #执行这一条命令 [root@localhost ~]# getfacl namedir/ # file: namedir/ # owner: root # group: root user::rwx user:root:rwx user:test1:rwx #原本这里有一行test2的规则,现在已经移除了 group::r-x mask::rwx other::r-x
总结
setfacl
命令使用起来稍稍复杂一些,对比大部分的命令格式,这个就有点与众不同了,若觉得以上内容还行的,可以点赞支持一下!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121485.html