Setfacl

命令介绍

查看文档如何描述这个命令

NAME
setfaclset file access control lists

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://blog.csdn.net/rhn_111/article/details/129346367

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46896.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

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