Lösungen zu Kapitel 9
Rechte
Die Rechte-Bits erklären sich wie folgt:
- rw-rw-rw- : 666
- Diese eingängige Rechtemaske setzt das Lese- und das Schreibrecht für alle – den Eigentümer, die Gruppe und den Rest der Welt.
- rwsr-xr-x : 4755
- Diese Maske erlaubt das allgemeine Lesen sowie das Ausführen mit den Rechten des Besitzers der Datei. Dieser darf zusätzlich die Datei schreiben.
- rwxrwxrwt : 1777
- Hier dürfte jeder alles. Auf Verzeichnissen hätte diese Rechtemaske die Wirkung, dass Dateien nur vom jeweiligen Eigentümer gelöscht oder verschoben werden können (wie in /tmp).
Syslog
Man müsste die Nachricht in einer Endlosschleife an den Logger schicken, dabei den Text jedoch mit einer Art »Zeitstempel« individualisieren, um eine Zusammenfassung der Nachrichten zu verhindern:
#include <syslog.h> int main(int argc, char* argv[]) { int i; while (1) { if(i++ >= 32000) i = 0; syslog(LOG_ALERT, "..:: we are flooding the log, attempt #%i ::..", i); } return 0; }
Listing B.11 syslog-dos.c
Logfile überfluten
Wir schreiben also eine bei jedem Schritt leicht veränderte Nachricht mit höchster Priorität nach /var/log/syslog – und zwar in einer Endlosschleife. Sollten Sie wirklich so mutig sein und den Code einmal ausprobieren wollen, brechen Sie das Programm sofort nach dem Start durch Drücken von Strg+C wieder ab. Diese Schleife ist nämlich verdammt schnell …
linux# gcc -o flood syslog-dos.c linux# ./flood ^C
Listing B.12 Den Code kompilieren und ausführen
Wenn Sie nun einen Blick in die /var/log/syslog werfen, werden Sie schon mehrere tausend Einträge sehen. Anhand dieser Geschwindigkeit werden Sie sich vorstellen können, dass auch ein paar Gigabyte freier Plattenplatz relativ schnell vollgeschrieben sein kann.
... Jun 9 12:36:01 athlon2000 syslog: ..:: we are flooding the log, attempt #17700 ::.. Jun 9 12:36:01 athlon2000 syslog: ..:: we are flooding the log, attempt #17701 ::.. Jun 9 12:36:01 athlon2000 syslog: ..:: we are flooding the log, attempt #17702 ::..
Listing B.13 Auszug aus der vollen /var/log/syslog
Was man dagegen tun kann? Das ist eine andere Aufgabe …
Die größten Dateien finden
In der Aufgabe sollten die 10 größten Dateien im eigenen Homeverzeichnis gefunden werden. Folgender Einzeiler erledigt dabei diese Aufgabe:
$ find /home/$USER -type f -exec du -k { ";"}
2>/dev/null | sort -din | tail –10
Listing B.14 Die zehn größten Dateien finden
Dabei wurde find kreativ mit du kombiniert, das Ganze sortiert und schließlich ausgegeben.