当你想要执行一个需要root权限的脚本时,你通常的做法是什么样的呢,如:
ls /root
你会得到如下输出:
下面给出一种不需要输入密码就能执行root权限脚本的方法
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BUFFSIZE 1024
int main(int argc, char *argv[]){
char *cmd = malloc(BUFFSIZE);
setuid(geteuid());
setgid(getegid());
cmd = argv[1];
int i = 0;
for(i = 0;i < argc - 1;i++) {
argv[i] = argv[i+1];
}
if(execvp(cmd, argv)){
printf("error");
free(cmd);
exit(1);
}
free(cmd);
}
然后进行如下操作:
gcc -o transeuid transeuis.c
sudo chown root:root transeuid
sudo chmod +s transeuid
接着调用transeuid来执行ls /root
./transeuid ls /root
就能看到/root下内容了