Posix "access" 系统调用是否考虑了 ACL?

Does the Posix "access" syscall take ACLs into consideration?

根据 man page,POSIX 系统调用

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

执行以下操作

access() checks whether the calling process can access the file pathname. If pathname is a symbolic link, it is dereferenced.

它是否也检查 ACLs,或者只检查 owner/group/others 的权限?
(假设 OS&FS 支持 ACL,并且文件上有 ACL)

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

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

POSIX 的访问没有直接提到 ACL。但有注释建议应考虑可能存在的其他机制。

来自 POSIX 的 access:

[..] Likewise, if a system provides any additional or alternate file access control mechanisms that are not user ID-based, they will still be taken into account.

Additional values of amode other than the set defined in the description may be valid; for example, if a system has extended access controls.