访问授权

当用户登录为某个帐户(使用 loginsu 命令)时,分配给该帐户的用户标识和组标识将与此用户进程相关联。 这些标识确定进程的访问权。

具有用户标识 0 的进程称为 root 用户进程。 通常,允许这些进程具有所有访问许可权。 但是如果 root 用户进程请求执行程序的许可权,只有在执行许可权授权到至少一个用户时才授权访问。

AIXC ACL 的访问授权

信息资源的所有者负责管理访问权。 资源是受许可权位保护的,许可权位包含在对象的方式中。 许可权位定义授权给对象所有者、对象组和 others 缺省类的访问许可权。 操作系统支持可独立授权的三种不同的访问方式(读、写和执行)。

对于文件、目录、命名管道和设备(特殊文件),访问授权如下:

  • 对于 ACL 中的每个访问控制条目 (ACE),标识列表与进程标识相比较。 如果有匹配,那么进程接收为该条目定义的许可权和限制。 将为 ACL 中每个匹配的条目计算许可权和限制的逻辑联合。 如果请求进程不匹配 ACL 中的任何条目,那么它接收缺省条目的许可权和限制。
  • 如果请求的访问方式是允许的(包含在许可权的联合中)并且不受限制(包含在限制的联合中),那么授权访问。 否则,拒绝访问。

如果在表中的所有标识匹配请求进程相应类型的有效标识,那么 ACL 的标识列表匹配进程。 如果用户类型标识与进程中的有效用户标识相同则用户类型标识匹配,如果组类型标识与进程中的有效组标识或增补组标识之一相同则组类型标识匹配。 例如,一个有标识列表的 ACE 如下所示:

USER:fred, GROUP:philosophers, GROUP:software_programmer

它将匹配具有 fred 有效用户标识和以下组集的进程:

philosophers, philanthropists, software_programmer, doc_design

但不匹配具有 fred 有效用户标识和以下组集的进程:

philosophers, iconoclasts, hardware_developer, graphic_design

请注意,有以下项的标识列表的 ACE 将同时匹配两个进程:

USER:fred, GROUP:philosophers

换言之,ACE 函数中的标识列表是一组必须为将授权的指定访问保持的条件。

当第一次访问对象时,在系统调用级别对这些对象进行所有访问许可权检查。 由于 System V 进程间通信 (SVIPC) 对象是无状态访问的,所以对每次访问进行检查。 对于具有文件系统名称的对象,必需能解析实际对象的名称。 名称可相对(相对于进程的工作目录)解析或绝对(进程的根目录)解析。 所有名称解析通过搜索这些目录的其中之一开始。

任意访问控制机制允许信息资源的有效访问控制,并提供信息的机密性和完整性的单独保护。 所有者控制的访问控制机制仅在用户采用时才有效。 所有用户必须知道如何授权和拒绝访问许可权,以及如何设置它们。

NFS4 ACL 的访问授权

具有 WRITE_ACL 特权的任何用户都可以控制访问权。 信息资源的所有者始终具有 WRITE_ACL 的权限。 对使用 NFS4 ACL 的文件和目录,将按以下方式授予访问权:
  • 按顺序处理 ACE 列表,且仅那些与请求者匹配的具有“who”(即,标识)的 ACE 才考虑进行处理。 处理使用特定 who EVERYONE@ 的 ACE 时,不检查请求者的凭证。
  • 处理每个 ACE 直至允许请求者访问的所有位为止。 只要允许了一个位,在稍后的 ACE 的处理中就不再考虑它。
  • 如果拒绝了与请求者的访问相符的任何位,那么拒绝访问且不再处理剩余的 ACE。
  • 如果未允许请求者的访问的所有位,且无要处理的 ACE,那么拒绝访问。

如果 ACE 拒绝了请求的访问且请求用户为超级用户或 root 用户,那么通常允许访问。 请注意, READ_ACLWRITE_ACLREAD_ATTRIBUTESWRITE_ATTRIBUTES始终允许对象所有者。 有关访问权授权算法的更多信息,请参阅 NFS4 访问控制表