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;
}
Vytvořit cílový adresář při extrahování Tarballu?
Jak porozumět seznamu zvukových karet; Význam Mid, Hdmi, Pch?