Linux进程管理:用户ID、会话与守护进程详解
1. 用户ID相关概念
在Linux系统中,与进程相关的用户ID有三种:真实用户ID(real user ID)、有效用户ID(effective user ID)和保存的用户ID(saved user ID)。
当一个进程执行 exec 调用时,通常有效用户ID不变。但如果执行的是 setuid (suid)二进制文件,进程的有效用户ID会改变,会被设置为程序文件所有者的用户ID。例如, /usr/bin/passwd 是一个 suid 文件,其所有者是 root ,当普通用户的shell创建一个进程来执行该文件时,无论执行用户是谁,该进程的有效用户ID都会变为 root 。
非特权用户只能将有效用户ID设置为真实用户ID或保存的用户ID,而超级用户可以将有效用户ID设置为任意值。
保存的用户ID是进程最初的有效用户ID。当进程进行 fork 操作时,子进程会继承父进程的保存用户ID。在执行 exec 调用时,内核会将保存的用户ID设置为有效用户ID,以此记录 exec 时的有效用户ID。非特权用户不能更改保存的用户ID,超级用户可以将其设置为与真实用户ID相同的值。
有效用户ID是验证进程凭证时检查的值,真实用户ID和保存的用户ID则作为非 root 进程可以切换的替代用户ID值。真实用户ID
超级会员免费看
订阅专栏 解锁全文
118

被折叠的 条评论
为什么被折叠?



