我正在尝试理解RUID
等EUID
内容setuid bit
。以下是我对这个主题的疑问:
在里面如何启动(或查找)具有不同于 EUID 的 RUID 的进程?Gilles 对此问题的回答是:
只有 setuid 可执行文件才会以设置为可执行文件所有者的有效 UID 开始,而实际 UID 仍然是调用进程的实际 UID
这是什么意思
the invoking process
?如果我是对的,那么例如the invoking process
上面提到的 id = 1000 的 Bill 用户运行的 passwd 命令就只是 Bill 用户吗?我是否正确?当我们对可执行文件内的文件执行某些操作(例如,写入该文件)时,系统会通过检查
EUID
该文件的权限来检查是否允许执行该操作?例如,我们有一个可执行文件
abc
(setuid bit
未设置),它使用权限将一些数据写入1.txt
文件-rw-r--r--
。Bill 用户(UID=1000)运行abc
。现在因为abc
EUID=1000(未setuid bit
设置)并且1.txt
权限是-rw-r--r--
写入操作被系统拒绝,因为 EUID=1000!=0?
答案1
1) 它说是the invoking process
因为您的示例中的 passwd 命令是由 shell (bash、csh 等) 或使用您的 ID 运行的程序启动的。
2) 是的,你说得对。权限架构根据进程有效 ID 进行检查。