König der Editoren
09/09, S.60: Oft denke ich mir bei den Tooltipps: Das kann der Emacs doch schon lange. Er findet aber nie als Alternative Erwähnung. Jetzt widmet ihr der Familie Diff einen ganzen Artikel und lasst wieder den Emacs aus. Dabei übernahm er wahrscheinlich bei vielem, das ihr vorstellt, die Vorreiterrolle. Das fängt an, wenn man eine Datei mit Endung ».diff« oder ».patch« öffnet, die der Editor auf Dateien anwenden kann. Die Unterschiede stellt er als Hyperlinks zum Original dar. Im »Tools«-Menü findet man vielfältige Vergleichs- und Verschmelzungsmöglichkeiten, mit und ohne Ahnendatei, wort- oder zeilenweise.
Daniel Pfeiffer, per E-Mail
Debian-Spiegeleien
08/09, S. 3: Ich habe von Jan Kleinerts Misere gelesen, Patches für Kubuntu einzusammeln und auf den PC einer Bekannten zu bringen. Vor demselben Problem stand ich vor langer Zeit mit Debian Etch auch und habe damals auf Basis von Debmirror ein Skript geschrieben. Es lädt Patches einer Distribution herunter und kopiert diese anschließend in ein zentrales Verzeichnis. Dieses Verzeichnis ziehe ich dann einfach auf einen USB-Stick und kopiere seinen Inhalt auf dem Zielrechner nach »/var/cache/apt/archives«. Abschließend führe ich dort »apt-get update && apt-get upgrade« aus, um die Updates zu installieren.
Anbei das Skript in verschiedenen Varianten – ich hoffe, es hilft weiter. Das Paket »debmirror« sollte auf der Maschine, die den Download ausführt, selbstverständlich installiert sein.
Klaus Stärk, per E-Mail
Herzlichen Dank für Ihren Tipp! Die Skripte haben wir als Tar-Archiv unter der URL [https://www.linux-magazin.de/static/listings/magazin/2009/11/leserbriefe/] online gestellt. (jk)
Nagios-Plugin
10/09, S. 86: Ich möchte euch für den Artikel über mein Projekt Check_mk danken. Gleichzeitig enthält der Artikel aber leider einige fachliche Ungenauigkeiten, die ich gerne klarstellen möchte.
Der “Performance-Boost” auf das Drei- bis Vierfache ergibt sich nicht gegenüber dem normalen Nagios-Verfahren, sondern gegenüber der nicht kompilierten Variante von Check_mk. Bei einer großen Anzahl von Services auf einem Host kann die Steigerung deutlich größer ausfallen. Die Nagios-Option »cfg_dir« gilt schon seit vielen Jahren als bevorzugte Alternative gegenüber »cfg_file«. Mir ist keine produktive Nagios-Installation ohne »cfg_dir« bekannt. Auch Linux-Distributoren wie Suse und Debian verwenden diese Option.
Das im Artikel beschriebene Angriffsszenario gilt auch für den Nagios Remote Plugin Executor (NRPE). Zwar unterstützt dieser SSL, verwendet aber ein immer gleiches, einkompiliertes Zertifikat. Damit ist für Nagios die Echtheit des Agenten nicht überprüfbar. Umgekehrt wird ein Schuh daraus: Im Gegensatz zu NRPE bietet gerade Check_mk die Möglichkeit, mit SSH eine perfekte Absicherung gegen genau dieses und viele andere Szenarien zu erreichen. Dazu ist aber kein Root-Zugang erforderlich, es wird lediglich ein immer gleicher Befehl als Superuser ausgeführt. Weil Root-Rechte für den Zugang zu vielen Systeminformationen zwingend erforderlich sind, unterscheidet sich Check_mk hier nicht von anderen Agenten.
Das Auslösen der Inventur und das Einbinden von neuen Checks geschieht nicht wie im Artikel beschrieben über einen Cronjob, sondern stets manuell. Optional ist eine regelmäßige Prüfung, ob neue, noch nicht überwachte Dienste gefunden werden. Diese läuft dann als normaler Nagios-Check.
Mathias Kettner, per E-Mail
Danke für die Klarstellung, hier waren die Angaben zu Check_mk undeutlich. Wir sind davon ausgegangen, dass der Performance-Boost sich auf ein Original-Nagios bezieht. Natürlich läuft in der Regel ein kompiliertes Programm schneller als ein Interpretiertes. Leider sagt das aber nichts über die Gesamtperformance des Systems aus.
Aus meiner Sicht ist der gewählte SSH-Ansatz massiv ungeeignet. Zum Beispiel ließen sich mit Stunnel oder einem SSH-Tunnel seriöse, authentifizierte, verschlüsselte Kommunikationswege implementieren, die keine Root-Rechte erfordern. Die vorgeschlagenen Command-Restrictions sind aus meiner Sicht eine Krücke, um einen unglücklichen Ansatz im Nachhinein zu legitimieren. Dass lokale Root-Rechte für einige Funktionen nötig sind, ist bekannt. Allerdings reicht es dazu aus, dass der lokale Prozess als Root läuft und eben nicht eine Root-Shell startet. Es gibt zahlreiche Konzepte, wie so eine Privileg-Separation zu implementieren ist.
Beim Thema Inventur ist die Formulierung im Artikel etwas ungenau – natürlich lässt sich die Cronjob-Aufgabe auch von Hand anstoßen. (Tobias Eggendorfer)
Undurchlässiges Rohr
10/09, S. 108: Das Listing 4 des Bash Bashing ist fast perfekt, hat aber einen bösen Fallstrick: Durch die Pipe gerät die While-Schleife zu einer Subshell mit einem anderen Scope:
ls -- *.txt |
while read i; do
counter=$((counter+1))
echo "$counter: $i ..."
done
echo "Found $counter files"
Weil sich Änderungen der Variablen in der Subshell nicht auf den äußeren Scope auswirken, überrascht der Output:
1: 1.txt ... 2: 2.txt ... 3: 3.txt ... Found 0 files
Ohne Subshell kommt das Skript aus, wenn sich die Schleife direkt eines Filedeskriptors mittels »<(…)« bedient:
while read i; do [...];U done < <(ls -- *.txt) echo "Found $counter files"
Das Leerzeichen zwischen den beiden “< <” ist dabei wichtig, denn das erste ist für das Pipen der Daten in die Schleife zuständig, das zweite erzeugt den Filedeskriptor.
Stefan Mayr, per E-Mail
Lauter Nullen
10/09, S. 108: Der Artikel zur Leerzeichenproblematik der Bash war mal nötig, er ist aber nicht ganz vollständig, da auch Newlines im Namen erlaubt sind. Eine mit »touch $(echo -e “mitnumbruch.txt”)« erzeugte Datei bringt auch Listing 4 ins Stolpern.
Harald Kirsch, per E-Mail
Der Einwand ist berechtigt. Leider gibt es keine elegante Lösung. Ein Ansatz hantiert mit Nullbytes als Trenner. Sowohl »find« als auch das eingebaute »read« können damit umgehen, allerdings nur mit Spezialoptionen wie »-print0« oder »-d $(echo -e “a
Nichts da
10/09, S. 108: Im Absatz “Leer, kein und nichts” hat sich entweder ein Fehler eingeschlichen oder ich kann den Effekt nicht reproduzieren. Starte ich das Skript
#!/bin/bash
./argv ${1+$@}
das seinerseits das Programm aus Listing 1 aufruft, ohne Argumente, erhalte ich die gleichen Ergebnisse wie mit »”$@”«.
Dominik D. Geyer, per E-Mail
Stimmt, bei modernen Shells ist das offenbar so. Einige ältere Quellen berichten jedoch davon, dass einige Implementationen der Shell den Klammeraffen in Doublequotes zu einem Argument der Länge null auswerten. (mg)
NBD-Sorgen
10/09, S. 99: Unter den Leserbriefen sehe ich zum Thema NBD: “Die Redaktion hat bei Open Suse nachgefragt und keine Antwort erhalten.”
Das Programm »kvm-nbd« ist eine Kopie der Qemu-Version, also kann eines der beiden benutzt werden. »qemu-nbd« gibt es seit Qemu 0.10.0, Open Suse 11.1 liefert aber die Qemu-Version 0.9.2 aus, die noch kein »qemu-nbd« besitzt.
Wir haben aber im Frühjahr Qemu 0.10.1 als Update für Open Suse 11.1 zur Verfügung gestellt. Dabei wurde allerdings leider »qemu-nbd« nicht mit eingepackt. Für die kommende Open-Suse-Version 11.2 ist das jetzt behoben. Wir hätten auf Nachfrage gerne weitergeholfen. Außerdem ist es immer sinnvoll, einen Bugreport zu schreiben.
Andreas Jaeger, Program Manager Open Suse, per E-Mail
| Listing 1: »argv.c« |
|---|
01 #include <stdio.h>
02 int main(int argc, char **argv)
03 {
04 int i;
05 for (i = 0; i < argc; i++)
06 printf("Arg #%d: _%s_n", i, argv[i]);
07 return 0;
08 }
|




