S 位和访问控制表
可以使用 setuid 和 setgid 程序,并将 S 位应用于 ACL。
使用 setuid 和 setgid 程序
在多数情况下许可权位机制允许对资源的有效访问控制。 但对于更精确的访问控制,操作系统提供了 setuid 和 setgid 程序。
AIX®操作系统只用 uids 和 gids 来定义身份。 未使用 uids 和 gids 定义身份的 ACL 类型将映射到 AIX 身份模型。 例如,NFS4 ACL 类型将用户标识定义为 user@domain 格式的字符串,且此字符串映射到了数字 UID 和 GID。
大多数程序使用其调用者的用户和组访问权运行。 程序所有者通过使程序成为 setuid 或 setgid 程序(即在许可权字段中设置了 setuid 或 setgid 位的程序),可以关联调用它们的用户的访问权。 当进程运行程序时,该进程将获取程序所有者的访问权。 setuid 程序使用其所有者的访问权运行,而 setgid 程序则拥有其组的访问权,并且两个位都可以根据许可权机制进行设置。
虽然进程分配有额外的访问权,这些权限都由具有这些权限的程序控制。 因此,setuid 和 setgid 程序允许间接授予访问权的用户编程的访问控制。 程序作为可信子系统,保护用户的访问权。
虽然可以很有效地使用这些程序,如果不小心设计将有安全性风险。 特别地,程序在它仍有其所有者的访问权时决不返回控制给用户,因为这样将允许用户无限制地使用所有者的权限。
将 S 位应用于 ACL
ACL(如 NFS4)不直接处理 S 位。 NFS4 ACL 不指定如何容纳这些位作为 ACL 的一部分。 AIX 操作系统已处理该问题,因此在执行访问检查时将使用 S 位,并且将对任何与 NFS4 ACL 相关的访问检查进行补充。 AIX 操作系统随附的 chmod 命令可用于设置或重置具有 ACL (例如 NFS4) 的文件系统对象上的 S 位。