c - 为什么我自己的 suid-ed 程序仍然保留原来的 uid?

标签 c linux permissions suid

我正在使用以下程序,并且我已经对它进行了 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/

相关文章:

c++ - 在不使用额外的整数指针参数的情况下,用节点左侧所有值的总和替换树的每个节点

c++ - 对于实时应用程序,C 和 C++ 哪个更好?

c - Linux 内核是否重用具有重复挂载点的 dentry 结构?如果是这样,怎么办?

linux - Shell 程序 - 确定文件中的平均字长

android - 麦克风权限

linux - 向两个用户(我的 apache 服务器和我自己)添加权限

c - 在 C 中不使用 fseek 移动文件位置

c - C中非常简单的服务器

linux - 是否可以在 linux 中显示排序的进度?

c# - 图形 API - 权限不足,无法完成操作