POSIX.1e打算为 POSIX 定义 ACL(访问控制列表)机制(以及其他与安全相关的问题),但这些提案从未转换为正式标准。尽管如此,至少在所有主要的 Unix 变体( Linux、BSD、MacOS X (ACL)、HP-UX、AIX (p107ff)、Solaris )中都支持 ACL(不一定是 POSIX.1e ACL )。我还没有发现讨论的一个细节是文件上的 ACL 如何与目录上的粘性位交互。
对于普通目录(没有 ACL 来混淆问题),可以将权限设置为例如 1777(例如,在 /tmp 上找到)。
drwxrwxrwt 16 root sys 4819 May 4 12:09 /tmp
粘性位由权限最后位置的“t”表示。这意味着如果用户可以写入文件,则用户只能从目录中删除文件。这是有道理的;如果用户可以写入文件,则文件的内容可以被破坏。
我的问题是:
- 假设 /tmp 目录的一般(非 ACL)权限如上所示。
- 进一步假设偏执的用户“trembler”将文件的非 ACL 权限设置
/tmp/secret
为 600(用户“trembler”,组“worried”)。 - 假设 'trembler' 通过专门引用 'blase' 的 ACL 将 /tmp/secret 上的 'rw' 访问权限授予另一个用户,'blase'。
- 可以'blase'删除文件
/tmp/secret
如果考虑 ACL,答案应该是“是”;如果忽略 ACL,答案将是“否”。假设在相关文件系统上启用了 ACL,所有 Unix 变体的行为是否一致?