【问题标题】:Does the Posix "access" syscall take ACLs into consideration?Posix“访问”系统调用是否考虑了 ACL?
【发布时间】: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


【解决方案1】:

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

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

来自 POSIX 的access

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

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

【讨论】:

    猜你喜欢
    • 2013-04-07
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多