Terminal setuid标志不';t更改有效的用户ID

Terminal setuid标志不';t更改有效的用户ID,terminal,Terminal,这里有一个名为uid\u demo.c的文件,它显示了真实的用户ID和有效的用户ID #include <stdio.h> int main() { printf("real uid: %d\n", getuid()); printf("effective uid: %d\n", geteuid()); } 输出: -rwsrwxr-x 1 root root 8712 Jun 29 15:09 uid_demo 当我运行程序时,它应该显示我的真实用户ID(10

这里有一个名为
uid\u demo.c
的文件,它显示了真实的用户ID和有效的用户ID

#include <stdio.h>

int main() {
    printf("real uid: %d\n", getuid());
    printf("effective uid: %d\n", geteuid());
}
输出:

-rwsrwxr-x 1 root root 8712 Jun 29 15:09 uid_demo
当我运行程序时,它应该显示我的真实用户ID(1000)和有效用户ID 0(root),因为文件的所有者是root,并且setuid权限已打开。但是,它会显示以下内容:

real uid: 1000
effective uid: 1000

有什么帮助吗?提前感谢。

您可能正在使用
nosuid
标志挂载的文件系统上运行程序,因此您的setuid位不受尊重

将代码移动到文件系统上没有此选项的另一个位置,或者在当前文件系统的装载选项中禁用nosuid标志

nosuid标志是一种安全功能

real uid: 1000
effective uid: 1000