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");

}



-- 

Qapla'
Alejandro Vargas

Responder a