Linux setfacl与getfacl命令详解

34次阅读

答案:getfacl 和 setfacl 命令用于查看和设置文件的 ACL 权限,实现更精细的访问控制。1. getfacl 显示文件或目录的 ACL 信息,包括用户、组、掩码和其他权限;2. setfacl 通过 - m 添加或修改 ACL 规则,- x 删除指定条目,- b 清除所有扩展 ACL;3. 可使用 - d 设置默认 ACL 以供新文件 继承 ,-R 递归 应用到子目录和文件;4. 实际应用包括共享目录权限管理、临时授权及批量处理;5. 使用时需确保文件系统挂载时启用 acl 选项,并注意 chmod 可能影响 mask 权限。

Linux setfacl 与 getfacl 命令详解

linux 系统中,传统的文件权限管理基于用户、组和其他三类主体进行控制,但有时需要更精细的权限设置。这时就需要使用 ACL(access Control List,访问控制列表)。setfaclgetfacl 是用于管理和查看 ACL 权限的核心命令。它们让管理员可以为特定用户或组设置独立的读、写、执行权限,而不影响原有权限结构。

getfacl:查看文件或目录的 ACL 权限

该命令用于显示文件或目录的访问控制列表,包括标准权限和扩展 ACL 规则。

基本语法:

getfacl filename

例如,查看 testfile 的 ACL 信息:

getfacl testfile

输出示例:

# file: testfile # owner: alice # group: users user::rw- user:bob:r-- group::r-- mask::r-- other::r--

说明:

  • user::rw- 表示文件所有者的权限
  • user:bob:r– 表示用户 bob 被单独赋予只读权限
  • group::r– 表示所属组的权限
  • mask::r– 是最大有效权限,限制赋予用户和组的权限上限
  • other::r– 表示其他用户的权限

常用选项:

  • -a:仅显示 ACL 条目,不显示文件名和注释
  • -d:显示默认 ACL(针对目录)
  • -R:递归列出子目录和文件的 ACL

setfacl:设置或修改 ACL 权限

该命令用于为文件或目录添加、修改或删除 ACL 规则。

基本语法:

setfacl [选项] -m|-x acl 规则 文件

-m 用于添加或修改 ACL 规则,-x 用于删除指定的 ACL 条目。

常见用法示例:

  • 给用户 alice 对 file1 的读写权限:
    setfacl -m u:alice:rw file1

  • 给组 dev 对 project_dir 的读执行权限:
    setfacl -m g:dev:rx project_dir

  • 设置默认 ACL(新创建的文件自动继承):
    setfacl -m d:u:bob:rwx /shared_folder

  • 删除用户 alice 的 ACL 条目:
    setfacl -x u:alice file1

  • 移除所有扩展 ACL(保留基本权限):
    setfacl -b file1

重要提示:

  • 目录必须启用 ACL 支持(通常 ext4/xfs 等现代文件系统默认支持)
  • 挂载时需开启 acl 选项,如:mount -o acl /dev/sda1 /mnt/data
  • 使用 chmod 修改权限后,可能会更新 mask 值,从而影响 ACL 的实际生效权限

实际应用场景建议

ACL 特别适用于共享目录环境。比如多个开发人员需要不同级别的访问权限。

  • 创建一个共享项目目录,设置默认 ACL 确保新文件自动分配正确权限
    setfacl -d -m g:developers:rwx /project

  • 临时授权某位同事访问敏感 配置文件,完成后立即撤销
    setfacl -m u:jane:r /etc/app.conf

    完成后执行:

    setfacl -x u:jane /etc/app.conf

  • 批量处理目录及其内容的 ACL
    setfacl -R -m g:qa:rx /test-suites

基本上就这些。掌握 setfacl 与 getfacl 可以大幅提升 linux 系统 权限管理的灵活性和安全性。注意定期检查 ACL 设置,避免遗留不必要的访问权限。

站长
版权声明:本站原创文章,由 站长 2025-10-25发表,共计1555字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources