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

Setfacl

命令介绍

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

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

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
setfacl命令Linux系统中用于设置文件或目录ACL(Access Control List)的工具。ACL是一种可以在文件或目录上设置的权限控制方式,可以更加精细地控制文件或目录的权限。 setfacl命令的语法如下: ``` setfacl [-bkndRLP] [-m|-M] [user[:group]]:perms file/dir ``` 其中,常用的选项和参数说明如下: - -m:添加ACL。 - -M:替换文件或目录的ACL。 - -b:删除文件或目录的ACL。 - -k:设置默认ACL,该ACL将应用于新创建的文件或目录。 - -n:不解析用户名和组名。 - -d:设置默认ACL。 - -R:递归处理子目录和文件。 - -L:递归处理符号链接。 - -P:不递归处理符号链接。 - user:用户名。 - group:组名。 - perms:权限。 例如,要为文件test.txt设置一个ACL,允许用户tom读取、写入和执行该文件,可以使用以下命令: ``` setfacl -m u:tom:rwx test.txt ``` 如果要删除该ACL,可以使用以下命令: ``` setfacl -b test.txt ``` 如果要为目录/var/www/html设置一个ACL,允许用户tom对该目录及其子目录和文件有读取、写入和执行权限,并且设置默认ACL,可以使用以下命令: ``` setfacl -R -m d:u:tom:rwx,u:tom:rwx /var/www/html ``` 需要注意的是,使用ACL设置文件或目录的权限时,ACL权限会与文件或目录的基本权限进行合并,较高的权限将覆盖较低的权限。因此,在使用setfacl命令时,需要谨慎设置ACL权限,以确保文件或目录的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux学习中

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值