如何以root身份执行命令

我在Linux(Debian)上开发了C代码。有时,我需要通过执行一些命令system()

我想知道是否可以通过system()root用户执行命令。如果不是这种情况,是否有任何功能可以我在C代码上以root身份执行命令(或运行二进制文件)?

回答:

在遇到普通用户要执行root命令之前,我们遇到了这种情况,这是我们的解决方案(使用setuid / SUID):

假使,假设:

  • Tom
  • gTom
  • my_pro.c

回答:

...

int main(int args, char *argv[]) {

if (args < 2)

printf("Usage: my_sudo [cmd] [arg1 arg2 ...]");

// cmd here is the shell cmd that you want execute in "my_pro"

// you can check the shell cmd privilege here

// example: if (argv[1] != "yum") return; we just allow yum execute here

char cmd[MAX_CMD];

int i;

for ( i = 2; i < args; i ++) {

// concatenate the cmd, example: "yum install xxxxx"

strcat(cmd, " ");

strcat(cmd, argv[i]);

}

system(cmd);

}

回答:

   sudo chown root:gTom my_sudo   // user root && gTom group

sudo chmod 4550 my_sudo // use SUID to get root privilege

#you will see my_sudo like this(ls -l)

#-r-sr-x--- 1 root my_sudo 9028 Jul 19 10:09 my_sudo*

#assume we put my_sudo to /usr/sbin/my_sudo

回答:

...

int main() {

...

system("/usr/bin/mysudo yum install xxxxx");

...

}

#gcc && ls -l

#-rwxr--r-- 1 Tom gTom 1895797 Jul 23 13:55 my_pro

回答:

您可以执行yum installno sudo

以上是 如何以root身份执行命令 的全部内容, 来源链接: utcz.com/qa/433631.html

回到顶部