setuid设置了一个很大的数字

时间:2013-03-06 15:06:12

标签: unix posix setuid

我运行了一个使用root的程序,我在其中为uid 9999999调用了setuid函数,然后它成功设置了这个uid,即使它在/ etc / passwd中也不存在。 那么setuid如何验证uid以及设置这个无效的uid会产生什么影响?

2 个答案:

答案 0 :(得分:2)

setuid不验证用户ID,只是该进程具有设置它的权限。

系统不关心用户是否在/etc/passwd中没有条目;例如,即使没有与之关联的“真实”用户,您也可以拥有任何用户ID所拥有的文件。

答案 1 :(得分:1)

当您有足够的权限执行时,

setuid通常不会验证任何内容(例如,如果您是root)。它只是将UID设置为请求的UID,无论用户名是否与/etc/passwd或其他地方的UID相关联。

(根据POSIX,如果UID无效,它可能会失败EINVAL,但我知道的Unix风格从未这样做过。)