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

Linux基础命令-setfacl设置文件ACL策略规则Setfacl 命令介绍 先查看文档中如何描述这个命令的 NAME setfacl set file access control lists setfacl Set file access control lists 直译过来是设置文件访问控制列表 其主要功能是用于设置文件 ACL 策略规则

大家好,我是讯享网,很高兴认识大家。

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命令使用起来稍稍复杂一些,对比大部分的命令格式,这个就有点与众不同了,若觉得以上内容还行的,可以点赞支持一下!
在这里插入图片描述

小讯
上一篇 2025-04-03 13:26
下一篇 2025-01-24 18:52

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68669.html