[转帖]Linux命令之getfacl和setfacl命令

linux,命令,getfacl,setfacl · 浏览次数 : 0

小编点评

**getfacl命令简介** `getfacl` 命令用于显示文件或目录的访问控制列表 (ACL)。它使用命令行模式提供多种选项,您可以使用它们来设置、查询和删除文件的 ACL。 **参数** * `-a, --access` 显示文件的访问权限,包括读、写、执行权限。 * `-default, --default` 显示文件的默认访问权限。 * `-c, --no-header` 不显示注释标题。 * `-e, --all-effective` 显示所有有效权限。 * `-E, --no-effective` 显示所有没有有效权限的权限。 * `-s, --skip-base` 跳过文件,只显示基本条目(实际测试中使用此参数后,输出为空)。 * `-R, --recursive`递归查询子目录。 * `-L, --logical`按照逻辑路径,包括软链接。 * `-P, --physical`按照物理路径,不包括软链接。 * `-t, --physical` 使用物理路径,包括软链接。 * `-n, --numeric` 显示用户的 UID 和组群的 GID。 * `-absolute-names` 保留路径中开始的根 "/"。 * `-v, --version` 显示版本信息。 * `-h, --help` 显示帮助信息。 * `-M, --modify=acl` 从文件读取访问控制列表条目更改访问控制列表。 * `-modify-file=file` 从文件读取访问控制列表条目更改单个文件访问控制列表。 * `-x, --remove=acl` 从文件删除访问控制列表条目。 * `-remove-file=file` 从文件读取访问控制列表条目并删除单个文件访问控制列表。 * `-remove-all` 删除所有扩展访问控制列表条目。 * `-k, --remove-default` 删除所有默认访问控制列表条目。 * `-remove-default` 应用默认访问控制列表的操作。 * `-restore=file` 恢复访问控制列表。 * `-test` 测试模式,不真正修改访问控制列表属性。 * `-version` 查看版本信息。 * `-help` 显示帮助信息。

正文

一、命令简介

  getfacl命令来自于英文词组”get file access control list“的缩写,其功能是用于显示文件或目录的ACL策略。对指定的文件或目录进行精准的权限控制,FACL是不二之选。对于每个文件,getfacl显示文件名、所有者、组和访问控制列表(ACL)。如果目录具有默认ACL,则获取facl还显示默认ACL。非目录不能具有默认ACL。
  setfacl,​顾名思义,设置文件或者目录访问控制列表,即​ACL​规则。这一般是用于对文件或者目录执行扩展授权,比如文件属于用户user1,但是希望给user2也添加授权,让user2也可以对文件进行操作,我们就可以通过setfacl命令实现。

二、getfacl使用示例

1、查看getfacl版本

[root@s142 ~]# getfacl -v
getfacl 2.2.51

2、获取getfacl命令帮助

[root@s142 ~]# getfacl --help
getfacl 2.2.51 – get file access control lists
Usage: getfacl [-aceEsRLPtpndvh] file …

3、查看文件所有权限

[root@s142 home]# getfacl -a /home
getfacl: Removing leading ‘/’ from absolute path names
# file: home
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

4、查看目录默认权限

  看到如下,说明目录没有设置默认权限。

[root@s142 home]# getfacl -d /home/abc
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abc
# owner: root
# group: root

5、按照物理路径查询

  看到如下,abd是软链接,使用-P参数按照物理路径查询无输出,使用-L参数查询输出abd及下面文件的权限ACL规则。
在这里插入图片描述

6、按照逻辑路径查询

在这里插入图片描述

7、不显示注释头

[root@s142 home]# getfacl -c /home
getfacl: Removing leading ‘/’ from absolute path names
user::rwx
group::r-x
other::r-x

8、显示路径包含根/

[root@s142 home]# getfacl -p /home
# file: /home
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

9、显示用户和用户组ID

在这里插入图片描述

10、表格格式输出权限ACL

在这里插入图片描述

三、setfacl使用示例

1、查看命令版本

[root@s142 home]# setfacl -v
setfacl 2.2.51

2、获取命令帮助

[root@s142 home]# setfacl --help
setfacl 2.2.51 – set file access control lists
Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …

3、修改文件ACL

  使用setfacl -m u:username:perms files设置权限,u:username:perms是针对用户授权,也可以使用g:groupname:perms对用户组授权,还可以使用m::perms的方式对所有用户和组进行授权,使用o::perms对其它用户组进行授权。
在这里插入图片描述

[root@s142 home]# setfacl -m u:wuhs:rwx /home/abd/abc
[root@s142 home]# getfacl -a /home/abd/abc
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abd/abc
# owner: root
# group: root
user::rw-
user:wuhs:rwx
group::r–
mask::rwx
other::r–

4、从ACL移除条目

  使用setfacl -x参数移除指定的ACL条目,一次只可以移除一条。

[root@s142 home]# setfacl -x u:wuhs /home/abd/abc
[root@s142 home]# getfacl /home/abd/abc
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abd/abc
# owner: root
# group: root
user::rw-
group::r–
mask::r–
other::r–

5、拷贝文件权限到另外一个文件

  我们可以setfacl结合getfacl命令使用,将文件A的权限拷贝到文件B的ACL规则中去,使用set-file=-的方式完成ACL权限拷贝。

[root@s142 home]# setfacl -m u:wuhs:6 /home/abc/abc
[root@s142 home]# getfacl /home/abc/abc | setfacl --set-file=- /home/abc/abd
getfacl: Removing leading ‘/’ from absolute path names
[root@s142 home]# getfacl /home/abc/abd
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abc/abd
# owner: root
# group: root
user::rw-
user:wuhs:rw-
group::r–
mask::rw-
other::r–

6、设置默认ACL规则

  使用-d和-m参数一起使用完成默认ACL的设置,还可以结合-R参数,这样目录下的所有子目录权限也与设置目录权限一致。
在这里插入图片描述

[root@s142 home]# setfacl -d -R -m u::7 /home/abc
[root@s142 home]# setfacl -d -R -m g::5 /home/abc
[root@s142 home]# setfacl -d -R -m o::4 /home/abc
[root@s142 home]# getfacl /home/abc
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abc
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r–

7、清除默认ACL规则

[root@s142 home]# setfacl -k /home/abc
[root@s142 home]# getfacl /home/abc
getfacl: Removing leading ‘/’ from absolute path names
# file: home/abc
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

8、清除所有扩展ACL规则

  使用-b参数是清除所有的扩展ACL规则,创建文件属主关联的基本规则是不会清除的。
在这里插入图片描述

[root@s142 home]# setfacl -b /home/abc

9、通过文件完成ACL授权

  可以使用-M参数指定授权ACL文件,一次完成多条目授权规则授权,我们也可以同时对多个文件或者目录授权。
在这里插入图片描述

四、参数说明

1、使用语法

用法:
$ getfacl [参数] file …
$ setfacl --restore=file 或者 setfacl [参数] file …

2、getfacl参数说明

参数参数说明
-a, --access仅显示文件的ACL
-d, --default仅显示文件的ACL
-c, --omit-header不显示注释标题
-e, --all-effective显示所有的有效权限
-E, --no-effective显示没有的有效权限
-s, --skip-base跳过文件,只具有基本条目(实际测试使用此参数后,输出为空)
-R, --recursive递归查询
-L, --logical按照逻辑路径,包括软链接
-P, --physical按照物理路径,不包括软链接
-t, --tabular使用表格输出格式
-n, --numeric显示用户的UID和组群的GID
-p, --absolute-names保留路径中开始的根"/"
-v, --version显示版本信息
-h, --help获取命令帮助信息

3、setfacl参数说明

参数参数说明
-m, --modify=acl更改文件的访问控制列表
-M, --modify-file=file从文件读取访问控制列表条目更改
-x, --remove=acl从文件访问控制列表移除条目
-X, --remove-file=file从文件读取访问控制列表条目并删除
-b, --remove-all删除所有扩展访问控制列表条目
-k, --remove-default移除默认访问控制列表
–set=acl设定替换当前的文件访问控制列表
–set-file=file从文件中读取访问控制列表条目设定
–mask重新计算有效权限掩码
-n, --no-mask不重新计算有效权限掩码
-d, --default应用到默认访问控制列表的操作
-R, --recursive递归操作子目录
-L, --logical按照逻辑路径,包括软链接
-P, --physical按照物理路径,不包括软链接
–restore=file恢复访问控制列表
–test测试模式,并不真正修改访问控制列表属性
-v, --version查看版本信息
-h, --help显示帮助信息
文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux进阶新增用户26354 人正在系统学习中

与[转帖]Linux命令之getfacl和setfacl命令相似的内容:

[转帖]Linux命令之getfacl和setfacl命令

一、命令简介 getfacl命令来自于英文词组”get file access control list“的缩写,其功能是用于显示文件或目录的ACL策略。对指定的文件或目录进行精准的权限控制,FACL是不二之选。对于每个文件,getfacl显示文件名、所有者、组和访问控制列表(ACL)。如果目录具有

[转帖]Linux命令之strace命令

一、命令简介 strace是一个有用的诊断、指导和调试工具。系统管理员、诊断专家和故障解决人员将发现,对于解决源代码不易获得的程序的问题,这是非常宝贵的,因为它们不需要重新编译以跟踪它们。学生、黑客和过分好奇的人会发现,通过跟踪甚至是普通程序,可以了解到大量关于系统及其系统调用的信息。程序员会发现,

[转帖]Linux命令之systemctl命令

一、systemctl命令简介 CentOS 5使用SysV init;CentOS 6使用Upstart,CentOS 7使用Systemd管理守护进程。centos7采用 systemd管理,服务独立的运行在内存中,服务响应速度快,但占用更多内存。独立服务的服务启动脚本都在目录 /usr/lib

[转帖]Linux命令之ulimit命令

一、命令简介 ulimit是一个计算机命令,用于shell启动进程所占用的资源,可用于修改系统资源限制。使用ulimit命令用于临时修改资源限制,如果需要永久修改需要将设置写入配置文件/etc/security/limits.conf。 二、使用示例 1、查看当前资源限制设置 [root@test1

[转帖]Linux命令之tr命令

一、命令介绍 tr 命令用于转换或删除文件中的字符。tr 指令从标准输入设备读取数据,执行转换(或者压缩、删除)处理,将结果输出到标准输出设备。 二、使用示例 0、示例文件 [root@test1 test]# cat 1.txt The string is used to describe the

[转帖]Linux网络命令之 `brctl`

文章目录 1 网桥的概念2 管理网桥的命令3 举例 1 网桥的概念 摘自百度百科: 网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。 网桥是一种对帧进行转发的技术,根据 MAC 分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来。 网桥也叫桥接器,是连接两个局域网的一种存

[转帖]linux之iftop命令

https://rumenz.com/rumenbiji/linux-iftop.html Linux安装iftop > yum install iftop -y > iftop 界面如下 界面参数说明 =>代表发送数据 <=代表接收数据 TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm

[转帖]Linux工具之nethogs命令

一、nethogs命令简介 NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是按照进程进行带宽分组。NetHogs不需要依赖载入某个特殊的内核模块。如果发生了网络阻塞你可以启动NetHogs立即看到哪个PID造成的这种状况。这样就很容易找出哪个程序跑

[转帖]Linux之Shell 脚本执行三种方式

什么是Shell? Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash ShellShell也是一门编程语言<解释型的编程语言>,即shell脚本一个系统可以存在多个shell,可以通过cat /etc/shells命令查看系统中安装的shell,不同的shell可能支

[转帖]Linux之fstab文件详解

https://blog.yelvlab.cn/archives/592/ fstab文件是干什么用的: /etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。当系