ACL 的全称是 Access Control List(访问控制列表),它是一种 比传统文件权限(rwx)更灵活的权限控制机制

在 Linux/Unix 系统中,文件的权限通常用 rwx(读、写、执行)和 所有者 / 用户组 / 其他人 来控制,但这种方式有个缺陷:
👉 只能针对 一个所有者、一个用户组和所有其他人 设置权限。

ACL 的作用就是 突破这个限制

  • 允许你针对 多个用户多个用户组 分别设置不同的权限。
  • 更细粒度地控制文件和目录的访问。

🔑 ACL 的核心点

  1. 文件基本权限(Owner / Group / Other)
    • rwx 三种权限,传统方式。
  2. 扩展权限(通过 ACL 设置)
    • 你可以给指定的用户或用户组单独设置权限。
  3. 默认 ACL(只对目录有效)
    • 指定目录下新建的文件/子目录会自动继承 ACL 权限。

📌 常用命令

  1. 查看 ACL

    1
    getfacl 文件名

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    # file: test.txt
    # owner: root
    # group: root
    user::rw-
    user:alice:r--
    group::r--
    mask::rw-
    other::r--

    表示 alice 用户对 test.txt 有单独的 r-- 权限。

  2. 设置 ACL

    1
    2
    setfacl -m u:alice:r test.txt    # 给用户 alice 读权限
    setfacl -m g:devs:rw test.txt # 给用户组 devs 读写权限
  3. 删除 ACL

    1
    setfacl -x u:alice test.txt
  4. 清空所有 ACL

    1
    setfacl -b test.txt

📊 举个例子

假设有个文件 report.docx,默认权限是 rw-------(只有 owner 能读写)。
但现在要求:

  • 用户 bob 也能读
  • 用户组 devs 能读写

用 ACL 可以这样:

1
2
setfacl -m u:bob:r report.docx
setfacl -m g:devs:rw report.docx

👉 总结一句话:
ACL 是对传统 Linux 权限的补充,能实现更灵活、更细粒度的权限控制