GNU/Linux >> Znalost Linux >  >> Linux

Linux Setuid nefunguje?

Učím se linux suid, takže jsem napsal malý program c s následujícím obsahem, abych to otestoval

#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 je soubor, který může upravit pouze root

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

Pokud spustím testovací program s uživatelským účtem, měl by přidat 100 do prázdného souboru.
Ale vyjde:

sh:test.txt:Permission denied

Proč?

Přijatá odpověď:

Problém je v tom, že zavoláte funkci system() , který volá shell /bin/sh . A shell /bin/sh nemá nastavený suid bit. Proto se vypíše Permission denied zprávu.

Část musíte napsat v čistém c kódu:

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

Linux
  1. ssh-copy-id nefunguje

  2. Příkaz du neanalyzuje skryté adresáře

  3. ZFS pod Linuxem, funguje to?

  1. Jak funguje debugger v Linuxu?

  2. Změna hesla uživatele root nezmění heslo sudo

  3. Jak funguje alokace zásobníku v Linuxu?

  1. Linux – Proč Locale Es_mx funguje, ale Es ne?

  2. Touchpad nefunguje na Acer Aspire

  3. Autorepeat nefunguje