C 为什么我自己的suid程序仍然保留原始uid?

C 为什么我自己的suid程序仍然保留原始uid?,c,linux,permissions,suid,C,Linux,Permissions,Suid,我正在使用下面的程序,我已经使用了它(通过以root身份运行chown root XXX;chmod 4755 XXX),但是输出仍然是ruid 1000,euid 1000,suid 1000,这里的effect uid不应该是零吗 #define _GNU_SOURCE #include <stdio.h> #include <unistd.h> int main() { uid_t ruid, euid, suid; if (! g

我正在使用下面的程序,我已经使用了它(通过以root身份运行
chown root XXX;chmod 4755 XXX
),但是输出仍然是
ruid 1000,euid 1000,suid 1000
,这里的effect uid不应该是零吗

#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>

int main()
{
        uid_t ruid, euid, suid;
        if (! getresuid (&ruid, &euid, &suid))
                printf ("ruid %d, euid %d, suid %d\n", ruid, euid, suid);
        else
                perror ("getresuid");

        return 0;
}
定义GNU源
#包括
#包括
int main()
{
uid_t ruid,euid,suid;
if(!getresuid(&ruid,&euid,&suid))
printf(“ruid%d,euid%d,suid%d\n”,ruid,euid,suid);
其他的
perror(“getresuid”);
返回0;
}
ls-l的输出:


-rwsr-xr-x 1 root root 9.7K May 1 11:36测试*

请检查
mount
命令输出,可以使用
nosuid
选项安装文件系统

从mount手册页

nosuid:不允许设置用户标识符或设置组标识符位 生效


请检查
mount
命令输出,可以使用
nosuid
选项装载文件系统

从mount手册页

nosuid:不允许设置用户标识符或设置组标识符位 生效