Access Control Lists (简体中文)

访问控制列表 (ACL) 为文件系统提供了一种额外的、灵活的权限机制。它被用于完善 UNIX 的文件权限机制。ACL 允许您将任意磁盘资源授权给任意用户组或用户。

翻译状态:本文是 Access Control Lists翻译。上次翻译日期:2021-05-15。如果英文版本有所更改,则您可以帮助同步翻译。

安装

aclsystemd 的依赖之一, 它应该已经被安装了.

启用 ACL

要启用 ACL,文件系统在挂载时必须要加入 acl 参数。要开机时自动启用 ACL,你可以通过编辑 fstab 文件来实现。

默认情况下 Btrfs、Ext2/3/4 已经启用了 acl 参数,因此无需额外指定。对于 Ext* 文件系统你可以使用以下命令检查 acl 是否真的已经启用:

# tune2fs -l /dev/sd''XY'' | grep "Default mount options:"
Default mount options:    user_xattr acl

还需要检查 /proc/mounts 文件中是否存在 noacl 。以防止默认挂载选项被覆盖。

你可以通过 tune2fs -o option partition 命令设置文件系统的默认挂载选项。例如:

# tune2fs -o acl /dev/sdXY

这将导致此磁盘以后在被其他 Linux 挂载时依然会使用相同的挂载选项。

注意:
  • acl 选项在创建 ext2/3/4 文件系统时将被默认启用,该行为由 /etc/mke2fs.conf 控制。
  • /proc/mounts 文件中不会列出默认挂载选项。

使用

设置 ACL

ACL 可以通过 setfacl 命令被设置。

提示:
  • 你可以通过添加 --test 参数来测试该命令的结果
  • 要递归地将操作应用到所有的文件和目录上,使用 -R/--recursive 参数。

为用户设定权限(user 是用户名或 UID):

# setfacl -m "u:user:permissions" <file/dir>

为用户组设定权限 (group是用户组名或 GID):

# setfacl -m "g:group:permissions" <file/dir>

为其他用户设定权限:

# setfacl -m "other:permissions" <file/dir>

允许所有新创建的文件目录从父目录继承条目(这不会影响将复制到目录中的文件):

# setfacl -dm "条目" <目录>

删除权限:

# setfacl -x "用户/用户组" <文件/目录>

删除默认权限

# setfacl -k <文件/目录>

删除所有ACL权限(拥有者、用户组和其他用户的权限将被保留)

# setfacl -b <file/dir>

查看 ACL

要显示 ACL 权限,使用:

# getfacl <file/dir>

例子

给予 对 文件的所有访问权:

# setfacl -m "u:johnny:rwx" abc

检查权限:

# getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
user:johnny:rwx
group::r--
mask::rwx
other::r--

改变 的权限:

# setfacl -m "u:johnny:r-x" abc

检查权限:

删除所有已添加的 ACL 权限信息:

# setfacl -b abc

检查权限:

ACL 对 ls 命令的影响

当使用 命令时,含有ACL权限的文件将会显示一个 +

私有文件的执行权限

下面的例子演示了如何对 WEB 服务器这样的进程赋予其访问用户目录的权限,以便防止其越权处理文件。

假设运行该 WEB 服务器进程的用户为 ,授予其访问 的权限。

首先授予 执行权限:

# setfacl -m "u:http:--x" /home/geoffrey

由于 现在已经对 拥有执行权,下面移除 other 对 的权限:

# chmod o-rx /home/geoffrey

使用getfacl 查看更改:

正如上面的输出所示, 不再具有任何权限,但是用户 仍然能够访问文件,因此可以认为安全性有所提高。

参阅

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.