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.
根据 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.