版权所有 © 2014 tutorialspoint
int setuid(uid_t uid);
在Linux下,setuid() 的实现方式与具有_POSIX_SAVED_IDS 特性的POSIX版本相同。这允许set-user-ID(非root)程序放弃所有用户权限,执行一些非特权工作,然后以安全的方式重新启用原始有效用户ID。
如果用户是root或程序是set-user-ID-root,则必须特别小心。setuid() 函数会检查调用者的有效用户ID,如果它是超级用户,则所有进程相关的用户ID都将设置为uid。发生这种情况后,程序将无法恢复root权限。
因此,希望暂时放弃root权限,假定非root用户的身份,然后恢复root权限的set-user-ID-root程序不能使用setuid()。可以使用(非POSIX,BSD)调用seteuid()来实现此目的。
如果uid与旧的有效uid不同,则进程将被禁止留下核心转储。
getuid (2)
seteuid (2)
setfsuid (2)
setreuid (2)
广告