【发布时间】: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+
【问题讨论】: