第 24 章 Linux 中的访问控制列表

目录

24.1. ACL 的优势
24.2. 定义
24.3. 处理 ACL
24.4. 应用程序中的 ACL 支持
24.5. 参考信息

摘要

本章概述了 Linux 文件系统的 POSIX ACL(访问控制列表)的背景和功能。可以将 ACL 作为文件系统对象的传统权限概念的扩展来使用。利用 ACL,可以比传统权限概念更灵活地定义权限。

POSIX ACL 这一术语表明它是一种真正的 POSIX(可移植操作系统接口)标准。由于多种原因,相应的标准草案 POSIX 1003.1e 和 POSIX 1003.2c 已被撤消。但是,在属于 UNIX 系列的许多系统上使用的 ACL 都基于这两个草案,并且本章中介绍的文件系统 ACL 的实施也遵照这两个标准。有关它们的信息,请参见 http://wt.xpilot.org/publications/posix.1e/

24.1. ACL 的优势

传统情况下,会为 Linux 系统上的每个文件对象定义三组权限。这三组权限包括用于每种类型用户(即文件拥有者、组和其它用户这三种用户)的读 (r)、写 (w) 和执行 (x) 权限。此外,还可以设置设置用户 ID设置组 ID粘滞位。 这种简缩概念完全适用于大多数实际情况。但对于较复杂的方案或高级应用程序,系统管理员在以前必须采用多种技巧来避开传统权限概念的限制。

ACL 可以用于要求扩展传统文件权限概念的情况。它们可用于向单个用户或组分配权限,即使这些权限并不与原始拥有者或所属组相对应。访问控制列表是 Linux 内核的一项功能。目前,ReiserFS、Ext2、Ext3、JFS 和 XFS 都支持访问控制列表。通过使用 ACL,无需在应用程序级别实施复杂的权限模型就可以实现复杂的方案。

在类似用 Linux 服务器替换 Windows 服务器这样的情况下,ACL 的优势就尤为明显。即使在移植后,一些已连接的工作站仍可以继续在 Windows 下运行。Linux 系统利用 Samba 向 Windows 客户机提供文件和打印服务。如果 Samba 支持访问控制列表,则既可以在 Linux 服务器上配置用户权限,也可以在具有图形用户界面的 Windows(仅限 Windows NT 和更高版本)中配置用户权限。利用 winbindd,甚至可以向仅存在于 Windows 域中而在 Linux 服务器中没有任何帐户的用户分配权限。