wrapper

Martin Kozusky kozusky na ics.muni.cz
Středa Duben 4 19:49:44 CEST 2001


Ahoj,
potrebuju napsat v C wrapper, tj program  ktery kdyz spustim s parametry
(jmeno jineho programu a parametry k nemu) spusti se zadany program a tento
program bude mit prava roota (vlastnikem wrapperu bude root).

napr kdyz obycejny uzivatel napise:
./wrapper echo ahoj >/dev/tty1
tak aby to na tty1 vypsalo "ahoj", i kdyz ten uzivatel na to nema pravo
nebo kdyz pustim
./wrapper reboot
tak se restartuje PC, a nebude se me to pred restartem ptat na heslo (coz se
deje kdyz halt pousti nekdo jiny nez root)
nemate nekdo nejaky zdrojak?

pokousel jsem se neco napsat, kdyz pustim napr
./wrapper mc, pusti to Midnight, kdyz dam "ps aux" tak mi to dokonce napise,
ze jede pod rootem, ale stejne rootovske prava nemam
kdy pustim
./wrapper sh
tak mi to pusti shell, ale "ps aux" dokonce rika ze to vubec nebezi pod
rootem

wrapper ma nastaven SUID, jeho vlastnikem je root, tak nevim kde je problem

Diky za kazdou radu,
Martin Kozusky


zde je zdrojak meho wrapperu
-------------------------------
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char *argv[])
 { int vysl,i;
   char *pars[15];
   extern char **environ;

 if (argc<2)
   {
    printf("Spatny pocet argumentu (aspon jeden - jmeno programu)\n");
    return 0;
   }
/* kopirovani parametru */

pars[0]=malloc(100);
 for (i=1;i<argc;i++)
  {pars[i]=malloc(100);
   pars[i-1]=argv[i];
//   printf("--%s\n",pars[vysl-1]);
  }

// printf("Pocet parametru: %d\n",i);
 pars[i]=NULL; /* posledni parametr */
 vysl=execvp(pars[0],pars,environ);
 return 1;
  }
-----------
po kompilaci ($gcc -o wrapper wrapper.c) dam
$chown root:users wrapper
$chmod u+s,g+s wrapper






Další informace o konferenci Linux