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