Linux基础命令-setfacl设置文件ACL策略规则

Linux基础命令-setfacl设置文件ACL策略规则setfacl 命令用于设置文件访问控制列表 允许更精确的权限分配

大家好,欢迎来到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 上一次登录:日 35 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

(0)
上一篇 2025-10-23 13:20
下一篇 2025-10-23 13:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信