- 论坛徽章:
- 1
|
APUE中说:
setuid()
1:root权限下可以更改实际用户ID和有效用户ID。
2:非root权限则只更改有效用户ID。
现附上本人代码:- #include<unistd.h>
- #include<stdio.h>
- int main(int argc, char *argv[])
- {
- printf("before setuid\n");
- printf("uid:%d,euid:%d,\n",getuid(),geteuid());
-
- setuid(2);
- printf("after setuia(2)d\n");
- printf("uid:%d,euid:%d,\n",getuid(),geteuid());
- /*
- setuid(3);
- printf("after setuid(3)\n");
- printf("uid:%d,euid:%d,\n",getuid(),geteuid());
- */
- setreuid(1,0);
- printf("after setreuid(1,0)\n");
- printf("uid:%d,euid:%d,\n",getuid(),geteuid());
- seteuid(2);
- printf("after seteuid(2)\n");
- printf("uid:%d,euid:%d,\n",getuid(),geteuid());
- // puts(getlogin());
-
- return 0;
- }
复制代码
运行结果如下:
非root权限下执行setuid和setreuid之后uid 和 euid没有一点变化;
我的问题是:
一、非root权限不能执行setreuid函数和seteuid函数吗?
二、按照APUE中的setuid函数的解释,非root权限只能改变有效用户ID,但是非root用户权限下执行setuid,有效用户ID为什么得不到变化。
请大神们指教!!!
|
|