繁体   English   中英

有效UID的行为不符合预期

[英]Effective UID doesn't behave as expected

我编写了以下c程序来打印真实有效的uid:

#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

结果

现在我得到了:

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

我希望有效的uid为0。

任何人都可以解释为什么不是吗?

谢谢

令人惊讶的,不是吗?

值得检查文件系统上的挂载选项 - 它可能已使用nosuid选项挂载。 要检查选项,请尝试运行mount命令或cat /proc/mounts

(我确定你知道你所在的文件系统,但为了完整性,如果你在那里进行cd,根据你的例子,你可以使用df .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM