我已经使用 root 运行了一个程序,其中我为 uid 9999999 调用了 setuid 函数,然后它成功设置了这个 uid,即使它在 /etc/passwd 中不存在。那么 setuid 如何验证 uid 以及设置此无效 uid 会产生什么影响?
问问题
102 次
2 回答
2
setuid
不验证用户 ID,只是该进程有权设置它。
系统不关心用户是否在/etc/passwd
;中没有条目。例如,您可以拥有任何用户 ID 拥有的文件,即使没有与之关联的“真实”用户。
于 2013-03-06T15:12:27.713 回答
1
setuid
root
当您有足够的权限执行它时(即,如果您是),通常不会验证任何内容。它只是将 UID 设置为所请求的 UID,无论用户名是否与该 UID 在/etc/passwd
或其他地方相关联。
(根据POSIX,如果 UID 无效,它可能会失败EINVAL
,但我知道的 Unix 风格从不这样做。)
于 2013-03-06T15:11:09.597 回答