【问题标题】:Can I get a different UID than EUID and GID than EGID in a command?我可以在命令中获得与 EUID 和 GID 不同的 UID 与 EGID 吗?
【发布时间】:2020-05-09 20:16:56
【问题描述】:

我有一个程序有自己的 UID、EUID、GID、EGID,我想获得 UID!=EUID 和 GID!=EGID。

我尝试过更改程序文件的所有者和组,但总是得到相同的结果。

这里是c代码:

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    char cad[128];

    pid_t pid;
    pid = getpid();

    char s1[] = "ps -p ";
    char s2[] = " -o cmd,pid,ppid,uid,euid,gid,egid,pri,stat";
    char spid[42];
    sprintf(spid, "%d", (int)pid);
    char result[2048];

    strcpy(result, s1);
    strcat(result, spid);
    strcat(result, s2);

    sprintf(cad,"Program %s started.\n",argv[0]);
    write(1,cad,strlen(cad));

    system(result);

    read(0,cad,1);

    sprintf(cad,"Program %s ended.\n",argv[0]);
    write(1,cad,strlen(cad));

    exit(0);
}

我尝试过的命令是:

$ sudo chown 2000 filename
$ sudo chgrp 2000 filename
$ sudo chmod u+r,g+x filename

然后执行编译好的程序。总是得到:

Program ./pgm1_1_1 started.
CMD                           PID  PPID   UID  EUID   GID  EGID PRI STAT
./pgm1_1_1                  18216 17683  1000  1000  1000  1000  19 S+

【问题讨论】:

    标签: c bash process uid


    【解决方案1】:

    您没有在权限中设置 SUID 和 SGID 位:

    sudo chmod ug+s filename
    

    或者,同时进行权限设置,您可以使用以下任何一种:

    sudo chmod 6755 filename              # Numeric permissions (octal)
    sudo chmod a=rx,u+w,ug+s filename     # Symbolic permissions
    

    您应该在完成权限设置后运行ls -l filename。设置 SUID 和 SGID 位后,您应该会看到如下内容:

    -rwsr-sr-x  1 2000  2000  8712 May  8 00:18 filename
    

    这两个s 值在权限中至关重要。你可能有名字让我可以看到 UID 和 GID 号码。

    【讨论】:

    • 谢谢!现在我可以看到更改,但我仍然获得与 EUID 相同的 UID 和与 EGID 相同的 GID,并且我想要获取值 UID!= EUID 和 GID!= EGID。我想我错过了一些概念。我在哪里可以发现?
    • 这就是事情开始变得棘手的地方。我想知道文件系统是否安装了诸如“no setuid”之类的选项?这将说明没有看到任何效果。
    • 它使用“no suid”选项挂载。那是问题吗?我该如何解决?非常感谢,非常感谢您的帮助!
    • “no suid”挂载选项是问题所在,是的。解决方法 A 包括将程序放在没有设置“no suid”选项的文件系统上(root 或/ 文件系统可能就是这样),或者重新安装没有“no suid”选项的文件系统。后者可能需要编辑/etc 目录中的配置文件;在备份之前备份文件。
    猜你喜欢
    • 2015-08-10
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多