Access Control Lists (简体中文)
启用 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.