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