many places中记录了setuid
位使普通用户能够以执行者所有者的权限而不是自己的权限运行可执行文件。
但是,我还没有找到记录setuid
位实现的任何地方。
这是我的猜测。
当从bash
发出命令时,它会进行fork
然后exec
系统调用。
控件传递到内核,内核检查setuid
参数上的exec
位。
如果内核看到设置了位,那么它将开始将新进程的euid
设置为文件的所有者,然后启动新进程。
进程通常以文件所有者的权限退出。
原始bash
进程从未获得根权限。
这是接近实际实现的方式,还是一组不同的步骤?
最佳答案
是的,这是正确的。阅读〈aa〉——巴兹勒·斯塔林克维奇
关于linux - setuid位实际上是如何在* nix中实现的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30206019/