程序 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());
}
Output:
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());
}
Output:
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。这两个程序的功能有何不同?