如何以root身份执行命令
发布时间:2020-12-14 01:54:09 所属栏目:Linux 来源:网络整理
导读:我在 Linux(Debian)上开发了一个C代码.不时,我需要通过system()执行一些命令 我想知道是否可以通过system()以root身份执行命令.如果不是这样,是否有任何函数可以以root身份执行命令(或运行二进制文件),我可以在C代码上使用它? 解决方法 在我们想要普通用户
我在
Linux(Debian)上开发了一个C代码.不时,我需要通过system()执行一些命令
我想知道是否可以通过system()以root身份执行命令.如果不是这样,是否有任何函数可以以root身份执行命令(或运行二进制文件),我可以在C代码上使用它? 解决方法
在我们想要普通用户执行root命令之前我们遇到了这种情况,这是我们的解决方案(使用setuid / SUID):
假使,假设: >用户名:汤姆 第1步:编写C代码工具:my_sudo.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); } 第2步:编译my_sudo.c以获取my_sudo可执行文件 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 第3步:在您的C代码中 ... int main() { ... system("/usr/bin/mysudo yum install xxxxx"); ... } #gcc && ls -l #-rwxr--r-- 1 Tom gTom 1895797 Jul 23 13:55 my_pro 第4步:执行./my_pro 您可以在没有sudo的情况下执行yum安装. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |