程序1:setuid()的示例
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
void main()
{
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
setuid(1000);
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
setuid(1014);
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
}
输出:
guest $ ./a.out
Real user id = 1000, Effective User id = 1014
Real user id = 1000, Effective User id = 1000
Real user id = 1000, Effective User id = 1014
guest $
程序2:seteuid()的示例
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
void main()
{
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
seteuid(1000);
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
seteuid(1014);
printf("Real user id = %d, Effective User id = %d\n",getuid(),geteuid());
}
输出:
guest $ ./a.out
Real user id = 1000, Effective User id = 1014
Real user id = 1000, Effective User id = 1000
Real user id = 1000, Effective User id = 1014
guest $
这两个程序给出相同的输出。那么,这两个功能有什么区别?根据引用(手册页),这两个功能均用于设置过程的有效用户ID。这两个程序之间的功能有何不同?
最佳答案
The documentation非常清楚区别: