我试图了解 setuid 的工作原理。到目前为止,我的理解是,执行应用了 setuid 的文件的进程运行时就好像文件的所有者执行了它,而不管实际执行者是谁。但为什么不直接为所有人设置执行权限(毕竟我认为这就是有效发生的情况)?我可能在这里遗漏了一些明显的东西?
答案1
是的,你错过了一些明显的东西。当您运行cat
(或ls
、sed
、awk
、vi
或任何其他普通程序)时,您将像您自己一样运行它,因此程序/进程受到您的权限的约束。当您运行 setuid 程序(例如 )时passwd
,该进程以 root 的 UID 运行,以便它可以修改/etc/shadow
(您在自己的 UID 下运行,无法访问该进程 - 甚至无法读取)。