GNU/Linux >> Tutoriales Linux >  >> Linux

¿Linux Setuid no funciona?

Estoy aprendiendo linux suid, así que he escrito un pequeño programa c con el siguiente contenido para probarlo

#include<stdio.h>
int main(){
system("echo 100 >> test.txt");
return 0;
}
-rwsr-xr-x 1 root root 8004 Sep 10 16:19 test

test.txt es un archivo que solo puede ser modificado por root

-rw-r----- 1 root root 

Si ejecuto el programa de prueba con una cuenta de usuario, debería agregar 100 al archivo vacío.
Pero, sale:

sh:test.txt:Permission denied

¿Por qué?

Respuesta aceptada:

El problema es que llamas a la función system() , que llama a un shell /bin/sh . Y el caparazón /bin/sh no tiene conjunto de bits suid. Por eso se imprime el Permission denied mensaje.

Tienes que escribir la parte en código c puro:

int main() {
  FILE *fd = fopen("test.txt", "a");
  fprintf(fd, "%s", "100");
  fclose(fd);
  return 0;
}

Linux
  1. ssh-copy-id no funciona

  2. du command no analiza directorios ocultos

  3. ZFS bajo Linux, ¿funciona?

  4. ¿Cómo funciona un depurador en Linux?

  5. Cambiar la contraseña de root no cambia la contraseña de sudo

Linux:¿cómo funciona la pantalla de Linux?

¿Por qué `exit &` no funciona?

¿Cómo funciona el intercambio de memoria en Linux?

¿Por qué esta expresión regular no funciona en Linux?

¿Cómo fakeroot no es una brecha de seguridad en Linux?

¿Cómo funciona la pantalla de Linux?