首页 > 解决方案 > Posix“访问”系统调用是否考虑了 ACL?

问题描述

根据手册页,POSIX 系统调用

int access(const char *pathname, int mode);

执行以下操作

access() 检查调用进程是否可以访问文件路径名。如果 pathname 是符号链接,则取消引用。

它是否还检查ACL或仅检查所有者/组/其他人的权利?
(假设 OS&FS 支持 ACL,并且文件上有 ACL)

具体来说,它是否检查 Linux 上的 ACL(在内核和 FS 中启用 ACL 时)?

标签: clinuxposixsystem-callsacl

解决方案


是的,access应该考虑 ACL 和任何其他可能存在的机制。否则,这将access毫无意义。例如,如果access说读取文件可以,但由于 ACL 或其他原因而尝试读取失败,那将使其无用。

POSIX 的访问没有直接提及 ACL。但是有注释表明应该考虑可能存在的其他机制。

从 POSIX 的访问

[..] 同样,如果系统提供任何不基于用户 ID 的附加或替代文件访问控制机制,它们仍将被考虑在内。

描述中定义的集合以外的 amode 的附加值可能是有效的;例如,如果系统具有扩展的访问控制。


推荐阅读