权限管理 ACL 实践

最近更新时间:2025-07-15 15:53:51

我的收藏

概述

对于腾讯云 GooseFSx 的目录和文件,需要对不同的用户或组配置不同的访问权限。GooseFSx 的访问控制列表 ACL(Access Control List)遵从 Linux 的 ACL,将 GooseFSx 挂载成本地目录后,用户可像本地目录一样管理 GooseFSx 目录文件的 ACL,例如:
细粒度权限控制:允许您为每个文件和目录定义细粒度的权限控制。您可以指定不同用户和组的访问权限,包括读取、写入、执行等。
多级权限继承:ACL 权限功能支持多级权限继承。您可以在目录级别设置权限,并选择是否将这些权限应用于其子目录和文件。方便地管理和继承权限,减少权限管理的复杂性。
用户和组管理:ACL 功能允许您管理用户和组,并将其与文件和目录的权限关联起来。您可以创建和管理用户和组,为其分配适当的权限,并根据需要进行修改和删除。

环境依赖

适用于 Linux 系统。
已创建 POSIX 客户端,并已将 GooseFSx 挂载成本地目录,详情请参见 管理 GooseFSx 客户端
已创建文件(例如 /data/report.txt, /data 是 GooseFSx 挂载目录)。
已创建用户(例如 alice)。

ACL 权限命令

常见的 ACL 权限命令用法如下表所示:
命令
说明
setfacl -m g:group:w <filename>
给用户组 group 设置写权限。
setfacl -m u:user:w <filename>
给用户 user 设置写权限。
setfacl -x g:group <filename>
删除用户组 group 的权限。
getfacl file1 | setfacl --set-file=- file2
将文件 file1 的 ACL 复制到文件 file2 上。
setfacl -b file1
删除所有扩展的 ACL 规则,基本的 ACL 规则(所有者,群组,其他)将被保留。
setfacl -k file1
删除文件 file1上的所有默认的规则。
setfacl -R -m g:group:rw dir
对目录树 dir 下的文件和目录增加用户组 group 读写的权限。
setfacl -d -m g:group:rw dir
对用户组 group 设置目录 dir 下新创建的文件和目录的读写权限。
setfacl -m m::rwx <filename>
设置 ACL 中的掩码,用于控制组和其他用户的最大权限。

命令示例

设置/修改 ACL 权限

使用 setfacl 命令来修改文件或目录的 ACL 权限。例如,要修改文件的 ACL 权限,可以运行以下命令:
setfacl 参数 <filename>
示例1:授予用户(例如 alice)读写执行权限(不影响其他用户)
sudo setfacl -m u:alice:rwx /data/report.txt
说明:
setfacl 命令依赖 ACL 库,若未安装 ACL 库,会报错(setfacl: command not found),请自行根据您所安装的系统版本选择安装 ACL 库。如:
Debian / Ubuntu: sudo apt-get install acl
CentOS / RHEL: sudo yum install acl
示例2:授予 LDAP 组(例如 ldap_developers)读写权限
sudo setfacl -m g:ldap_developers:rw /data/report.txt
示例3:使用 setfacl 授予 AD 组(例如 FileAdmins)读写执行权限
sudo setfacl -m g:FileAdmins:rwx /data/report.txt

查看 ACL 权限

使用 getfacl 命令来查看文件或目录的 ACL 权限。例如,要查看文件的 ACL 权限,可以执行以下命令:
getfacl <filename>
命令示例:
getfacl /data/report.txt
输出示例:
# file: data/report.txt # 文件路径
# owner: root # 文件所有者
# group: admin # 文件所属组
user::rw- # 所有者的权限(rw-:可读、可写,不可执行)
user:alice:rw- # 用户 alice 的权限(如果此前已设置用户或组特定的权限,则显示该项)
group::r-- # 所属组的权限(r--:只读)
group:developers:r-- # 组 developers 的权限(如果此前已设置用户或组特定的权限,则显示该项)
mask::rw- # 最大有效权限掩码(限制 ACL 条目的最高权限,如果此前已设置用户或组特定的权限,则显示该项)
other::r-- # 其他用户的权限(r--:只读)