【发布时间】:2020-07-16 11:56:50
【问题描述】:
根据man page,POSIX 系统调用
int access(const char *pathname, int mode);
执行以下操作
access() 检查调用进程是否可以访问文件 路径名。如果路径名是符号链接,则取消引用。
它是否也检查ACLs,或者只是所有者/组/其他人的权利?
(假设 OS&FS 支持 ACL,并且文件上有 ACL)
具体来说,它是否检查 Linux 上的 ACL(当 ACL 在内核和 FS 中启用时)?
【问题讨论】:
-
它执行任何实现
access()的操作系统。并非每个操作系统甚至都有 ACL。或任何类型的权限。 -
@Sam Varshavchik:实际上,并不是每个文件系统都有 ACL,或者启用了它们。除了操作系统是否支持它们。当然,我假设操作系统支持它们,否则这个问题一开始就没有意义。
-
正如你所引用的:“access() 检查调用进程是否可以访问文件路径名。”这意味着如果拥有该进程的用户可以访问该文件,那么该进程可以访问该文件。如果他/她在文件的 ACL 上,则用户可以访问该文件。所以这个过程也是如此。
-
acl_extended_fd 的手册页提到“access(2) 系统调用可用于检查是否授予对文件对象的给定类型的访问权限。”。这听起来像是将所有访问控制机制都考虑在内。
标签: c linux posix system-calls acl