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