A.10 Lösungen zu Kapitel 14
Rechte
Stellen Sie folgende Rechte als Oktalzahl dar und geben Sie deren Bedeutung umgangssprachlich an:
- rw-rw-rw-
- rwsr-xr-x
- rwxrwxrwt
Antwort:
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 Benutzer – 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 in 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
Sie sind ein böser Mensch. Überlegen Sie sich anhand des Beispielcodes auf Seite 465, wie ein Programm aussehen müsste, das die Logfiles eines Systems mit Müll (über-)füllt.
[»]Im Normalfall werden gleichlautende Meldungen vom Logger zusammengefasst und als eine Meldung mit der entsprechenden Häufigkeit des Auftretens gespeichert. Wie können Sie dies böswillig umgehen?
Antwort:
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:
Listing A.13 syslog-dos.c
#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;
}
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. Führen Sie dieses Programm nicht aus, wenn Sie nicht wissen, was Sie damit anrichten können. Brechen Sie das Programm in jedem Fall sofort nach dem Start durch Drücken von Strg + C wieder ab. Eine solche Schleife ist nämlich verdammt schnell ...
Listing A.14 Den Code kompilieren und ausführen
linux# gcc -o flood syslog-dos.c
linux# ./flood
^C
Wenn Sie nun einen Blick in die Datei /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 können.
Listing A.15 Auszug aus der vollen /var/log/syslog
...
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 ::..
Jun 9 12:36:01 athlon2000 syslog: ..:: we are \
flooding the log, attempt #17702 ::..
Jun 9 12:36:01 athlon2000 syslog: ..:: we are \
flooding the log, attempt #17702 ::..
...
Was man dagegen tun kann? Das ist eine andere Aufgabe ...
Übersicht über Kernelmodule
Verschaffen Sie sich eine Übersicht über die auf Ihrem Linux-System verfügbaren Kernelmodule sowie die derzeit geladenen Kernelmodule.
Antwort:
Eine Übersicht über die auf Ihrem System verfügbaren Kernelmodule erhalten Sie, indem Sie einen Blick in Ihre modules.dep-Datei in /lib/modules/<Kernel-Version> werfen.
Listing A.16 Die modules.dep (Auszug)
$ more /lib/modules/2.6.31-20-generic/modules.dep
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko:
kernel/arch/x86/kernel/cpu/cpufreq/e_powersaver.ko:
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko:
kernel/arch/x86/kernel/msr.ko:
kernel/arch/x86/kernel/cpuid.ko:
kernel/arch/x86/kernel/apm.ko:
kernel/arch/x86/kernel/scx200.ko:
kernel/arch/x86/kernel/microcode.ko:
kernel/arch/x86/crypto/aes-i586.ko: kernel/crypto/aes_generic.ko
kernel/arch/x86/crypto/twofish-i586.ko: kernel/crypto/twofish_common.ko
kernel/arch/x86/crypto/salsa20-i586.ko:
kernel/arch/x86/crypto/crc32c-intel.ko:
kernel/arch/x86/kvm/kvm.ko:
kernel/arch/x86/kvm/kvm-intel.ko: kernel/arch/x86/kvm/kvm.ko
kernel/arch/x86/kvm/kvm-amd.ko: kernel/arch/x86/kvm/kvm.ko
kernel/fs/nfs_common/nfs_acl.ko: kernel/net/sunrpc/sunrpc.ko
kernel/fs/quota/quota_v1.ko:
kernel/fs/quota/quota_v2.ko: kernel/fs/quota/quota_tree.ko
kernel/fs/quota/quota_tree.ko:
kernel/fs/nls/nls_cp437.ko:
kernel/fs/nls/nls_cp737.ko:
...
Die derzeit geladenen Module liefert das Tool lsmod.
Listing A.17 lsmod (Auszug)
$ lsmod
Module Size Used by
ppp_deflate 4732 0
zlib_deflate 20088 1 ppp_deflate
bsd_comp 5436 0
ppp_async 8860 1
crc_ccitt 1852 1 ppp_async
nls_utf8 1568 1
isofs 31620 1
option 25184 1
usbserial 36264 4 option
usb_storage 52768 1
binfmt_misc 8356 1
ppdev 6688 0
vboxnetflt 84840 0
vboxnetadp 78344 0
vboxdrv 121160 1 vboxnetflt
joydev 10240 0
snd_hda_codec_intelhdmi 12860 1
...
Die größten Dateien finden
Schreiben Sie ein kurzes Shellskript beziehungsweise eine Anweisungsfolge, die die zehn größten Dateien in Ihrem Home-Verzeichnis findet.
[+]Für die Lösung können Sie zum Beispiel find und du in Kombination nutzen.
Antwort:
Folgender Einzeiler
erledigt die Aufgabe:
Listing A.18 Die zehn größten Dateien finden
$ find /home/$USER -type f -exec du -k { ";"} \
2>/dev/null | sort -din | tail –10
Dabei wurde find kreativ mit du kombiniert, das Ganze sortiert und schließlich ausgegeben.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.