George CARAGEA wrote:
> Salut!
>
> Vreau si eu sa fac un un script sau un programel C care sa fie executat
> de un user oarecare, sa se suideze ca root si sa schimbe permisiile pe un
> director. Uite sursa C:
>
> #include <stdio.h>
> #include <unistd.h>
> #include <string.h>
> #include <stdlib.h>
>
> void main(int argc, char * argv[])
> {
>
> char * dirStr = (char *) calloc (80,sizeof(char));
>
> if (argc>=2)
> strncpy(dirStr,argv[1],70);
> else strncpy(dirStr,"/usr/local/cvs",50);
>
>
> printf("\nSetting permissions for directory %s.\n",dirStr);
>
> execl("/bin/chown","/bin/chown","-R","cvs.cvs",dirStr,NULL);
> }
>
> Am suidat executabilul si l-am facut root.root, dar nu merge, tot da
> niste permission denied, deci banuiesc ca nu pastreaza suidul.
>
> Am facut un script suidat, dar nu merge ( lanseaza bash nesuidat,
> right?)
>
> Ce alte solutii exista?
man 2 chown
int chown(const char *path, uid_t owner, gid_t group);
nu e nevoie sa folosesti exec[whatever], ci apelezi direct chown(..)
si setezi executabilul root (sau ce vrei tu).
sau faci setuid(0) in program, cum s-a mai zis..
scripturile suidate nu merg (in general). Desi pe unele variante de unix mai
pot functiona inca.
spor la treaba.
jack
---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
unsubscribe from this list.