我正在使用以下程序,并且我已经对它进行了 suid 编辑(通过以 root 身份运行 chown root XXX; chmod 4755 XXX
),但输出仍然是 ruid 1000 , euid 1000, suid 1000
, 这里的uid不应该为0吗?
#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;
}
ls -l 的输出:
-rwsr-xr-x 1 root root 9.7K May 1 11:36 test*
最佳答案
请检查mount
命令的输出,您的文件系统可以使用nosuid
选项挂载。
来自挂载手册页
nosuid: Do not allow set-user-identifier or set-group-identifier bits to take effect.
关于c - 为什么我自己的 suid-ed 程序仍然保留原来的 uid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312392/