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.

Raspunde prin e-mail lui