每个进程有三个用户ID:
- 真实用户ID (
ruid
)。 - 有效用户ID (
euid
)。 - 已保存的用户 ID (
suid
)。
同样,一个进程也有三个组ID:
- 真实组ID (
rgid
)。 - 有效组ID (
egid
)。 - 已保存的组 ID (
sgid
)。
根据我的理解,在处理权限时使用euid
和egid
(与 一起)。supplementary group IDs
但是ruid
andsuid
和rgid
和 呢sgid
,它们在处理权限时有什么作用吗?
答案1
实际上,Linux 使用文件系统用户 ID 和组 ID(当然还有补充组 ID)来确定访问文件的权限;看setfsuid()
。通常这些与有效用户 ID 和组 ID 相同。真实和保存的用户 ID 和组 ID 绝不会用于确定对文件、共享内存等的访问权限。
真实且已保存的用户ID是用于确定一个进程是否可以向另一个进程发送信号;看man 2 kill
。
看man 7 credentials
进行完整的讨论。