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
