C 为什么我自己的suid程序仍然保留原始uid?
我正在使用下面的程序,我已经使用了它(通过以root身份运行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
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:不允许设置用户标识符或设置组标识符位
生效