GNU/Linux >> Linux Esercitazione >  >> Linux

Linux Setuid non funziona?

Sto imparando Linux suid, quindi ho scritto un piccolo programma c con il seguente contenuto per testarlo

#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 è un file che può essere modificato solo da root

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

Se eseguo il programma di test con un account utente, dovrebbe aggiungere 100 al file vuoto.
Ma viene fuori:

sh:test.txt:Permission denied

Perché?

Risposta accettata:

Il problema è che chiami la funzione system() , che chiama una shell /bin/sh . E la shell /bin/sh non ha un bit suid impostato. Ecco perché stampa il Permission denied messaggio.

Devi scrivere la parte in puro codice c:

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

Linux
  1. Cosa succede se "uccidi -9" non funziona?

  2. Il comando Rm nello script Bash non funziona con la variabile?

  3. Perché `esce &` non funziona?

  4. ssh-copy-id non funziona

  5. Il comando du non analizza le directory nascoste

Linux:come funziona il display di Linux?

Come funziona la memoria di scambio in Linux?

Perché questa espressione regolare non funziona su Linux?

ZFS sotto Linux, funziona?

In che modo fakeroot non è una violazione della sicurezza in Linux?

Come funziona il display di Linux?