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