unix下提升权限的方法

在unix下运行程序时,有时候需要提升一些命令的权限,例如在普通用户下,运行route命令,系统就会提示权限不够。
但是如果使用下面的程序,在普通用户下运行route命令时,也是可以运行的。
这些命令,仅仅是一些binary文件。如果运行的是一些函数,系统的权限是不会提升的。相关的资料可以看fork和seteuid的函数说明.
int forkprivilege(char *cmd, int delay)
{
 int pid, stat;

 if ((pid = fork())) {
  waitpid(pid, &stat, 0);
  if (delay) {
   sleep(delay);
  }
  return 0;
 } else if (pid < 0) {
  exit(1);
 } else {
  setuid(0);
  seteuid(0);
  execl("/bin/sh", "/bin/sh", "-c", cmd, NULL);
 }
 exit(1);
 return -1;
}

你可能感兴趣的:(unix,cmd,null,delay)