09.01 Linux 进程凭证(Credentials)
Linux 进程凭证
进程凭证包括以下内容:
- 实际用户 ID(real user ID)和实际组 ID(real group ID)。
- 有效用户 ID(effective user ID)和有效组 ID(effective group ID)。
- 保存的 set-user-ID(saved set-user-ID)和保存的 set-group-ID(saved set-group-ID)。
- 文件系统用户 ID(file-system user ID)和文件系统组 ID(file-system group ID)(Linux 专有)。
- 辅助组 ID。
保存的设置用户/组 ID
文件系统中每个非目录文件有设置用户/组 ID 位,启动这样的文件会使得有效用户/组 ID 按照文件的所有者来设置。出于安全考虑,在 Linux 中可执行文件的设置用户/组 ID 权限对于 shell 脚本无效。
设计保存的设置用户 ID(保存的设置组 ID 同,为了表述方便略去)是为了让程序的有效用户 ID 能够在实际用户 ID 和保存的设置用户 ID 之间切换。这样程序在不需要使用其他用户(尤其是 root)的权限时可以将有效用户 ID 转回实际用户 ID,需要权限时再转回来。程序启动时,保存的设置用户 ID 从有效用户 ID 复制过来。
文件系统用户/组 ID
文件系统用户/组 ID 管辖和文件系统操作相关的权限问题,是由 Linux 专有的。一般情况下它们和有效用户/组 ID 相同,除非调用了 setfsuid
/ setfsgid
。