系统管理指南:安全性服务

使用访问控制列表保护文件

传统 UNIX 文件保护可为以下三类用户提供读写和执行权限:文件属主、文件组和其他用户。访问控制列表 (Access Control List, ACL) 通过允许您执行以下操作来提供更好的文件安全性:

例如,如果想要组中的每个用户都能够读取某文件,则只需要授予该组对该文件的读取权限即可。现在,假设您希望组中只有一个用户能够写入该文件。标准 UNIX 不提供该级别的文件安全性。但是,ACL 可提供此级别的文件安全性。

ACL 项定义文件的 ACL。这些项通过 setfacl 命令设置。 ACL 项由以下字段组成并使用冒号进行分隔:


entry-type:[uid|gid]:perms
entry-type

设置文件权限的 ACL 项的类型。例如,entry-type 可以是 user(文件属主)或 mask(ACL 掩码)。有关 ACL 项的列表,请参见表 6–7表 6–8

uid

用户名或用户 ID (user ID, UID)。

gid

组名或组 ID (group ID, GID)。

perms

表示 entry-type 中设置的权限。perms 可以由符号字符 rwx 或八进制数字表示。这些数字与用于 chmod 命令的数字相同。

在以下示例中,ACL 项为用户 stacey 设置读写权限。


user:stacey:rw-

注意 – 注意 –

仅 UFS 文件系统支持 UFS 文件系统属性,例如 ACL。因此,如果将具有 ACL 项的文件恢复或复制到 /tmp 目录(通常挂载为 TMPFS 文件系统)中,则这些 ACL 项将丢失。使用 /var/tmp 目录临时存储 UFS 文件。


文件的 ACL 项

下表列出了对文件设置 ACL 时可以使用的有效 ACL 项。前三个 ACL 项提供基本的 UNIX 文件保护。

表 6–7 文件的 ACL 项

ACL 项 

说明 

u[ser]::perms

文件属主权限。 

g[roup]::perms

文件组权限。 

o[ther]:perms

文件属主或文件组成员之外的用户的权限。 

m[ask]:perms

ACL 掩码。掩码项表示允许用户(属主除外)和组拥有的最大权限。掩码是一种可快速更改所有用户和组的权限的方法。 

例如,mask:r-- 掩码项表示,用户和组只能拥有读取权限,即使他们可能拥有写和执行权限。

u[ser]:uid:perms

特定用户的权限。对于 uid,可以指定用户名或数字 UID。

g[roup]:gid:perms

特定组的权限。对于 gid,可以指定组名或数字 GID。

目录的 ACL 项

表 6–7 中说明的 ACL 项外,还可以对目录设置缺省 ACL 项。在具有缺省 ACL 项的目录中创建的文件或目录将具有与缺省 ACL 项相同的 ACL 项。表 6–8 列出了目录的缺省 ACL 项。

首次为特定用户和组设置目录的缺省 ACL 项时,还必须为文件属主、文件组、其他用户和 ACL 掩码设置缺省 ACL 项。这些项是必需的。这些项是下表中前四个缺省 ACL 项。

表 6–8 目录的缺省 ACL 项

缺省 ACL 项 

说明 

d[efault]:u[ser]::perms

缺省文件属主权限。 

d[efault]:g[roup]::perms

缺省文件组权限。 

d[efault]:o[ther]:perms

文件属主或文件组成员之外的用户的缺省权限。 

d[efault]:m[ask]:perms

缺省 ACL 掩码。 

d[efault]:u[ser]:uid:perms

特定用户的缺省权限。对于 uid,可以指定用户名或数字 UID。

d[efault]:g[roup]:gid:perms

特定组的缺省权限。对于 gid,可以指定组名或数字 GID。

用于管理 ACL 的命令

以下命令可管理文件或目录的 ACL。

setfacl 命令

设置、添加、修改和删除 ACL 项。有关更多信息,请参见 setfacl(1) 手册页。

getfacl 命令

显示 ACL 项。有关更多信息,请参见 getfacl(1) 手册页。