admin管理员组文章数量:1542784
在我们想要普通用户执行root命令之前我们遇到了这种情况,这是我们的解决方案(使用setuid / SUID):
假使,假设:
>用户名:汤姆
>组:gTom
> C程序文件:my_pro.c
第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安装.
版权声明:本文标题:linux下以root权限执行命令,如何以root身份执行命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727080836a1096814.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论