代码
我编写了以下C程序来打印实际和有效的用户ID:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void main() {
printf("real uid: %d\n", (int) getuid());
printf("effective uid: %d\n", (int) geteuid());
}
我使用gcc进行编译:
jazz@kryptonite beyond_basics $ gcc -o uid_demo.out uid_demo.c
接下来,我按照以下方式更改了所有者和权限:
jazz@kryptonite beyond_basics $ sudo chown root:root uid_demo.out
jazz@kryptonite beyond_basics $ sudo chmod u+s uid_demo.out
Result
Now I got:
jazz@kryptonite beyond_basics $ ll uid_demo.out
-rwsr-xr-x 1 root root 8712 Sep 8 18:12 uid_demo.out*
当运行程序时,我得到以下结果:
jazz@kryptonite beyond_basics $ ./uid_demo.out
real uid: 1000
effective uid: 1000
问题
我本来期望有效用户ID为0。
有人能解释一下为什么不是吗?
谢谢
nosuid
。 - ensc