在许多地方记录了setuid
位,使普通用户能够以执行者的特权而不是他自己的特权运行可执行文件。
但是,我还没有发现任何位置记录了setuid
位的实现。
这是我的猜测。
- 当
bash
的命令时,它会制作fork
,然后进行exec
系统调用。 - 控制传递到内核,而内核检查了
exec
的setuid
位。 - 如果内核看到了位置,则它将开始将新过程的
euid
设置为文件的所有者,然后启动新过程。 - 该过程正常带有文件所有者的特权。
- 原始
bash
过程从未获得根特权。
这是在实践中实际实现的接近,还是另一组步骤?
是的,这是正确的。读取execve(2) - basile starynkevitch