8.2. 设置存取 ACL

ACL 有两种:存取 ACL(access ACLs)和默认 ACL(default ACLs)。存取 ACL 是对指定文件或目录的存取控制列表。默认 ACL 只能和目录相关。如果目录中的文件没有存取 ACL,它就会使用该目录的默认 ACL。默认 ACL 是可选的。

ACL 可以按以下条件配置:

  1. 每用户

  2. 每组群

  3. 通过有效权限屏蔽

  4. 为不属于文件用户组群的用户配置

setfacl 工具为文件和目录设置 ACL。使用 -m 来添加或修改文件或目录的 ACL:

setfacl -m <rules> <files>

规则(<rules>)必须使用以下格式指定。同一条命令中可以指定多项规则,只要它们是用逗号分开即可。

u:<uid>:<perms>

为用户设置存取 ACL。用户名或 UID 必须被指定。用户可以是系统上的任何合法用户。

g:<gid>:<perms>

为组群设置存取 ACL。组群名称或 GID 必须被指定。组群可以是系统上的任何合法组群。

m:<perms>

设置有效权限屏蔽。该屏蔽是组群所有者和所有用户和组群项目的权限的合集。

o:<perms>

为文件的组群用户之外的用户设置存取 ACL。

空格被忽略。权限(<perms>)必须是代表读、写、和执行的字符(rwx)的组合。

如果某文件或目录已经有了一个 ACL,而 setfacl 命令仍被使用了,额外的规则就会被添加到已存在的 ACL 中,或用来修改已存在的规则。

例如,要给用户 tfox 以读写权限:

setfacl -m u:tfox:rw /project/somefile

要删除用户、组群或其它人的所有权限,使用 -x 选项,并且不指定任何权限:

setfacl -x <rules> <files>

例如,删除 UID 为 500 的用户的所有权限:

setfacl -x u:500 /project/somefile