2012/2/28 Alejandro Vargas <[email protected]>:
> El 27 de febrero de 2012 20:14, Gonzalo Aguirre 
> <[email protected]>escribió:
>
>
>
>> ejecuto como un usuario
>>
>> $ ./prueba
>>         UID           GID
>> Real      1000  Real      100
>> Effective 0  Effective 0
>> cat: datos.txt: Permission denied
>>
>
> A ver... te paso un programa que a mi me funciona correctamente. Lo que
> hace es ejecutar un shell script pero con su (en este caso el shell script
> se llama "/usr/lib/arduino/arduino_anv" pero lo podés cambiar por otra cosa
> o en lugar del execlp hacer lo que te haga falta (como leer un archivo).
> Este programa estoy seguro de que funciona porque yo lo estoy usando.
>
> OJO, este programa sólo cambia de grupo, pero podés agregar un
> setreuid(geteuid(),geteuid());
>
> #include
> <stdio.h>
>
> #include
> <unistd.h>
>
>
>
> main()
> {
>
>
> setregid(getegid(),getegid());
>
>    printf("Executing... getuid=%d geteuid=%d\n, getgid=%d getegid=%d\n,",
> getuid(), geteuid(), getgid(), getegid());
>    execlp("/usr/lib/arduino/arduino_anv", "",
> NULL);
>
>    printf("Exec
> failed\n");
>
> }
>

Grande ANV!!.. funcionó, se ve que le gusta más la función exec() que system()

Gracias!


-- 
GA

Responder a