Sé que habilitar setuid en los scripts tiene problemas de seguridad y, por lo tanto, está inactivo de forma predeterminada, pero espero que funcione para los ejecutables. Creé y ejecutable que muestra uid como salida siguiendo las instrucciones descritas en esta publicación: Permitir setuid en scripts de shell
Pero devuelve el mismo uid (1000) antes y después de ejecutarse sudo chmod +s ./setuid-test
. Creo que esto significa que setuid no tiene ningún efecto en mi ejecutable, ¿por qué y cómo resolverlo?
El código fuente:
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
printf("%d", geteuid());
return 0;
}
Construido y ejecutado con
$ gcc -o setuid-test setuid-test.c
$ ./setuid-test
1000
$ sudo chown nobody ./setuid-test; sudo chmod +s ./setuid-test
$ ./setuid-test
1000
Cuando corro ls -la
, esto es lo que obtengo:
me@me:~$ ls -la setuid-test
-rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
me@me:~$ ls -la setuid-test
---- devuelve -----rwsrwsr-x 1 nobody me 8572 Aug 19 16:39 setuid-test
df .
en el directorio para encontrar el punto de montaje, entonces mount | grep nameofmountpoint
. ¿Hay una nosuid
bandera en la lista?