ACL 的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在 UGO 权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。
它被设计为 UNIX 文件权限管理的一个补充。ACL 允许你给任何的用户或用户组设置任何文件/目录的访问权限。
既然是作为 UGO 权限管理的补充,ACL 自然要有 UGO 办不到或者很难办到的本事,例如:
类型 | 描述 |
---|---|
access ACL | 我们可以认为每一个对象(文件/目录)都可以关联一个 ACL 来控制其访问权限,这样的 ACL 被称为 access ACL。 |
default ACL | 目录也可以关联一个 ACL 来控制在该目录中创建的对象的默认 ACL,这样的 ACL(目录关联的 ACL)被称为 default ACL。 |
一个 ACL 由多个 ACL 条目组成。一个 ACL 条目指定一个用户或者一组用户对所关联对象的读、写、执行权限。
ACL 定义的权限是 ugo 权限的超集。
文件的 ugo 权限总是与对应的 ACL 条目保持一致。修改文件的 ugo 权限会导致修改相关的 ACL 条目,同样的,修改这些 ACL 条目会导致修改对应的 guo 权限。
一个文件的 access ACL 会在通过 creat()、mkdir()、mknod()、mkfifo() 和 open() 函数创建该文件时被初始化。
如果一个目录被设置了 default ACL,那么将会由文件创建函数的 mode 参数和目录的 default ACL 共通决定新文件的 ACL 权限:
说明:此时 umask 被忽略。
如果一个目录没有被设置 default ACL,那么将由文件创建函数的 mode 参数和 umask 共同决定新文件的 ACL 权限:
ACL 格式是通过两个冒号把一个 ACL 条目分为三个部分:
ACL 条目的类型:ACL 条目 qualifier:权限信息
权限信息就是用 rwx 来表示的信息,不支持某个权限的话可以使用 - 表示。当 ACL 条目的类型为 ACL_USER 或 ACL_GROUP 时,ACL 条目 qualifier 包含与 ACL 条目关联的用户和组的标识符。
当 ACL 条目的类型为其它时,ACL 条目 qualifier 为空。
ACL 的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在 UGO 权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。