Wissen, wie’s geht.

Leseprobe

Dieses Buch ist wie ein Schweizer Taschenmesser für den Linux-Admin: Für jede Herausforderung hat es eine Lösung. In dieser Leseprobe finden Sie alles Wichtige zum Bootloader GRUP, und Sie machen sich mit dem Paketmanagement vertraut. Außerdem können Sie einen Blick in das vollständige Inhalts- und Stichwortverzeichnis des Buches werfen.

»Bootvorgang« »Paketmanagement«

Inhalt

Index

Die Autoren

Leseprobe weiterempfehlen

Dirk Deimeke, Stefan Kania, Charly Kühnast, Daniel van Soest, Peer Heinlein Linux-Server – Das umfassende Handbuch 1.156 Seiten, gebunden, 3. Auflage 2014 49,90 Euro, ISBN 978-3-8362-3020-9

www.galileo-press.de/3685 Kapitel 2 2 Bootvorgang

Der Startvorgang eines Linux-Systems ist die Basis dafür, überhaupt etwas mit dem System anfangen zu können. Wir geben einen Einblick in den Bootloader, die initiale Ramdisk und den Start mittels init-Skripten. Ein kurzer Blick auf »eventgesteuertes Starten« mittels »upstart« und »systemd« rundet dieses Kapitel ab.

2.1 Einführung

Mit dem Bootloader wird das Betriebssystem gestartet. Nachdem das BIOS den mehr oder weniger ausführlichen Systemcheck durchgeführt hat, werden die Bootmedien in der Rei- henfolge der Präferenzen abgearbeitet.

Wenn es zur Festplatte kommt, werden die ersten 512 Byte der Festplatte ausgewertet; in die- sen ist der Master Boot Record (MBR) zu finden. Von den 512 Byte sind die ersten 446 für den Bootloader reserviert. In diesem begrenzten Bereich lassen sich keine großen Programme unterbringen, daher wird der Bereich dafür genutzt, Code von anderer Stelle nachzuladen.

Der frühere Linux Loader (LILO) ist heute kaum nach verbreitet, daher beschränken wir uns im Weiteren auf den Grand Unified Bootloader (GRUB) und die Weiterentwicklung GRUB 2.

2.2 Der Bootloader GRUB

Man unterscheidet bei GRUB drei Stages. Die Hauptaufgabe der ersten Stufe – Stage 1 –liegt darin, die zweite Stufe – Stage 1.5 – zu laden. In dieser Stufe liegen die notwendigen Treiber zum Ansprechen des Dateisystems. Stage 1.5 fällt unterschiedlich aus, je nachdem welches Dateisystem verwendet wird. Zu finden ist diese ebenfalls sehr kleine Stufe zwischen dem Master Boot Record (MBR) und der ersten Partition. Bei der Installation von GRUB werden die benötigten Treiber festgestellt und entsprechend installiert.

Sobald der Dateisystemtreiber verfügbar ist, kann mit dem »eigentlichen« Bootloader be- gonnen werden. Nach Laden dieser dritten Stufe – Stage 2 – wird von allen verwendeten Dis- tributionen ein Menü angezeigt, mit dem sie das zu startende Betriebssystem oder spezielle Optionen starten können, häufig ist eine Option zum Speichertesten oder ein failsafe-Modus auswählbar. Wenn Sie keine Option auswählen, wird das Standardbetriebssystem gestartet.

63

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 63 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.2 Der Bootloader GRUB

2.2.1 Installation Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script 'grub-install'. 2 Die Installationsroutinen der Betriebssysteme installieren den Bootloader GRUB automa- (hd0) /dev/sda tisch vor Abschluss aller Installationsarbeiten. Im Normalfall müssen Sie keine Hand anle- Listing 2.2 Installation des »GRUB« auf älteren Systemen gen, es sei denn, Sie wollen spezielle Optionen setzen, einen Bootloader reparieren oder eine (defekte) Festplatte ersetzen. Statt des Skripts grub-install lässt sich die Arbeit auch direkt mit der GRUB-Shell ausführen. Der Standardweg, den Bootloader zu installieren, ist, grub-install zu verwenden. Dieses Sie wird mit grub aufgerufen und bietet eine große Anzahl an Kommandos, um GRUB auf Skript fasst die Befehle, die notwendig sind, einen Bootloader zu installieren, auf einfache Art vielfältige Weise zu konfigurieren. und Weise zusammen. Die Befehle müssten ansonsten manuell in der GRUB-Shell ausgeführt Wie Sie in Listing 2.1 gesehen haben, ließe sich der Befehl setup mit den notwendigen Pa- werden. Die Konfigurationsparameter werden in der Datei /etc/grub.conf gesucht. rametern auch von Hand ausführen. Alternativ dazu besteht aber auch die Möglichkeit, die Je nach Distribution werden leicht unterschiedliche Werkzeuge verwendet. Listing 2.1 zeigt Schritte kleiner zu wählen und mit root festzulegen, auf welcher Partition des Verzeichnis die Installation in SUSE Linux Enterprise Server (SLES) 11, openSUSE setzt in aktuellen Ver- boot liegt. Der Befehl setup schließlich schreibt die Informationen in den MBR. sionen auf GRUB 2. Um es dem Administrator nicht zu leicht zu machen, unterscheidet sich die zu verwendende sles:~ # grub-install Schreibweise von der sonst in Linux üblichen, was aber kein böser Wille ist. Zum Zeitpunkt GNU GRUB version 0.97 (640K lower / 3072K upper memory) des Systemstarts gibt es noch keine Verbindung zu den unter /dev beschriebenen Geräten und zu denen, die beim Starten des Systems gefunden wurden. So wird aus /dev/sda der [ Minimal BASH-like line editing is supported. For the first word, TAB Parameter (hd0), der die erste Festplatte im System meint. Weiterhin wird die erste Partition lists possible command completions. Anywhere else TAB lists the possible der ersten Festplatte nicht mit /dev/sda1 beschrieben, sondern mit (hd0,0). completions of a device/filename. ] grub> setup --stage2=/boot/grub/stage2 --force-lba (hd0,0) (hd0,0) In Listing 2.3 finden Sie ein Beispiel für die Arbeit mit der GRUB-Shell. Checking if "/boot/grub/stage1" exists... yes Bitte beachten Sie, dass die Zählung bei 0 beginnt und nicht bei 1, ebenfalls muss /boot sich Checking if "/boot/grub/stage2" exists... yes nicht zwangsläufig auf der gleichen Partition wie das root-Dateisystem unter / befinden. Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) Viele Distributionen legen /boot auf eine eigene Partition mit dem Dateisystem ext2. Running "embed /boot/grub/e2fs_stage1_5 (hd0,0)"... failed (this is not fatal) sles:~ # grub Running "install --force-lba --stage2=/boot/grub/stage2 /boot/grub/stage1 (hd0,0) \ /boot/grub/stage2 p /boot/grub/menu.lst "... succeeded GNU GRUB version 0.97 (640K lower / 3072K upper memory) Done. grub> quit [ Minimal BASH-like line editing is supported. For the first word, TAB Listing 2.1 Installation des »GRUB« in SLES11 lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] Es müssen keine weiteren Eingaben vorgenommen werden, mit grub-install läuft der Rest automatisch. grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 Bei älteren Linux-Distributionen benötigt grub-install das Device (die Festplatte), auf die der GRUB geschrieben werden soll, als Parameter, beispielsweise wie in Listing 2.2 gezeigt: grub> setup (hd0) root@:~# grub-install /dev/sda Checking if "/boot/grub/stage1" exists... yes Searching for GRUB installation directory ... found: /boot/grub Checking if "/boot/grub/stage2" exists... yes Installation finished. No error reported. Checking if "/boot/grub/e2fs_stage1_5" exists... yes This is the contents of the device map /boot/grub/device.map. Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 17 sectors are embedded.

64 65

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 64 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 65 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.2 Der Bootloader GRUB

succeeded root (hd0,0) Running "install /boot/grub/stage1 (hd0) (hd0)1+17 p (hd0,0)/boot/grub/stage2 \ kernel /vmlinuz-3.0.76-0.11-default root=/dev/system/root showopts ide=nodma \ 2 /boot/grub/menu.lst"... succeeded apm=off noresume edd=off powersaved=off nohz=off highres=off \ Done. processor.max_cstate=1 nomodeset x11failsafe initrd /initrd-3.0.76-0.11-default grub> quit Listing 2.3 »GRUB-Shell« auf SLES11 ###Don't change this comment - YaST2 identifier: Original name: floppy### title Floppy In der Datei /boot/grub/device.map finden sich die Informationen über Devices, auf die der rootnoverify (fd0) GRUB geschrieben werden kann, sie sieht wie in Listing 2.4 gezeigt aus. Sollten die Informa- chainloader +1 tionen veraltet oder falsch sein, können Sie die Datei bearbeiten oder löschen. Falls sie nicht Listing 2.5 Die Datei »/etc/grub/menu.lst« verfügbar ist, wird sie neu angelegt. Ohne Auswahl des Benutzers innerhalb der durch timeout konfigurierten Sekunden beim (fd0) /dev/fd0 Starten des Systems wird der Menüpunkt gewählt, der mit default konfiguriert wird, auch (hd0) /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 hier wird bei »0« mit dem Zählen begonnen. Listing 2.4 /boot/grub/device.map Die einzelnen Menüpunkte werden durch title beschrieben, die weiteren Parameter werden Alternativ zu /dev/disk/by-id/ata-QEMU_HARDDISK_QM00001 kann auch die Schreibweise durch die folgenden Abschnitte erklärt. /dev/sda verwendet werden. »root« Der Parameter root gibt das Device bzw. die Partition an, von der gestartet werden soll, 2.2.2 Konfiguration hier wird – wie schon bei der Installation benutzt – die besondere Schreibweise mit hd0,0 Wie Sie sicher bemerkt haben, haben wir bis jetzt bis auf den Ort, an dem der Bootloader verwendet. In der Regel ist das die Partition, in der /boot zu finden ist, dort liegen auch der installiert werden soll, noch gar nichts konfiguriert. Die eigentliche Konfiguration des Boot- Betriebssystemkern und die Initial Ramdisk (initrd). loaders erfolgt in der Datei /etc/grub/menu.lst, die in Listing 2.5 gezeigt wird: »kernel« # Modified by YaST2. Last modification on Thu May 15 07:24:35 CEST 2014 default 0 Der Parameter kernel nimmt den Betriebssystemkern und seine Parameter auf. Da es bei- timeout 8 spielsweise bei SLES11 dafür eine eigene Partition /boot gibt, braucht der Pfadname nicht ##YaST - generic_mbr explizit angegeben werden. gfxmenu (hd0,0)/message Besonders wichtig ist der Parameter root=, ohne den das Linux-System gar nicht erst gestar- ##YaST - activate tet werden kann.

###Don't change this comment - YaST2 identifier: Original name: linux### Weitere Parameter werden einfach durch Leerzeichen getrennt an diese Zeile angehängt. title SUSE Linux Enterprise Server 11 SP3 - 3.0.76-0.11 root (hd0,0) »initrd« kernel /vmlinuz-3.0.76-0.11-default root=/dev/system/root resume=/dev/system/swap \ Letztlich verweist initrd auf den Pfad der Initial Ramdisk, dies wird in Abschnitt 2.5, »Der splash=silent showopts initrd /initrd-3.0.76-0.11-default Kernel und die ›initrd‹«, genauer beschrieben. Sie enthält alle Treiber, die notwendig sind, um das System zu starten, insbesondere (aber ###Don't change this comment - YaST2 identifier: Original name: failsafe### nicht nur) die Dateisystemtreiber, die nötig sind, um die unterschiedlichen für das System title Failsafe -- SUSE Linux Enterprise Server 11 SP3 - 3.0.76-0.11 notwendigen Partitionen einzubinden.

66 67

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 66 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 67 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.3 GRUB 2

Editieren beim Starten des Systems 2.3 GRUB 2 2 Bei Starten des Systems und Anzeigen des Bootmenüs können alle Parameter durch Druck Mit GRUB 2 wurde GRUB von Grund auf neu entwickelt, die Entwickler haben sich sehr viel auf die Taste (E) verändert werden. Diese Änderungen gelten nur für den neuen Start und Zeit gelassen und sich mit kleinen Versionssprüngen der 2 genähert. werden nicht auf die Festplatte geschrieben. So ist in Debian Wheezy die Version 1.99 Patchlevel 27 enthalten, die faktisch GRUB 2 ent- Auf manchen Systemen wird die Veränderungsmöglichkeit mit einem Standardpasswort spricht, aber noch nicht die Versionsnummer 2 trägt. Nebenbei bemerkt hat GRUB nie die geschützt, dieses lautet changeme, wenn es nicht verändert wurde. Version 1.0 erreicht, die aktuellste Version trägt die Nummer 0.97.

2.2.3 Booten von einem Software-RAID-1 Inkompatibilität Wenn Sie von einem Software-RAID-1 starten möchten, müssen Sie beachten, dass zum Zeit- Die Konfigurationsdateien von GRUB und GRUB 2 sind nicht kompatibel zueinander! punkt des Systemstarts der Kernel noch nicht aktiv ist und so auf den Spiegel als Ganzes – die md-Devices – noch nicht zugegriffen werden kann.

Erst nach Aktivierung des Kernels wird wieder gespiegelt. Das ist insofern verschmerzbar, als 2.3.1 Funktionsweise dass der Bootloader beim Starten nur lesenden Zugriff benötigt. Der große Unterschied von GRUB 2 im Vergleich zu GRUB ist, dass die Stages 1.5 und 2 zu ei- Als Vorarbeitmüssen Sie den Bootloader in den Master Boot Record beider Festplatten schrei- nem einzigen Stage 2 zusammengelegt wurden. Dabei nutzt GRUB 2 einen minimalistischen ben und in das Bootmenü unter /boot/grub/menu.lst zwei Einträge, einen für jede Festplatte, und sehr kleinen Kern und viele Module, die je nach Bedarf nachgeladen werden können, um aufnehmen. auf die Konfigurationsdatei zugreifen zu können.

In Listing 2.6 sehen Sie neben den Einträgen für die beiden Festplatten den Parameter fall- Auf diese Weise unterstützt GRUB 2 auch das Starten von LVM oder Software-RAIDs mit md. back, er sorgt dafür, dass der zweite Menüeintrag ausgeführt wird, falls der unter default angegebene nicht verfügbar ist: 2.3.2 Installation default 0 fallback 1 Um festzustellen, welche Version von GRUB auf Ihrem System verwendet wird, lohnt sich ein timeout 10 Blick auf dpkg -l | grep grub bei Ubuntu und Debian bzw. rpm -qa | grep grub bei open- SUSE und SLES11. title Debian GNU/Linux, kernel 3.2.0-4-amd64 Ansonsten kann man GRUB 2 genauso wie GRUB mit grub-install (bei openSUSE mit root (hd0,1) grub2-install) installieren, allerdings müssen Sie bei GRUB 2 angeben, wo der Bootloader kernel /vmlinuz-3.2.0-4-amd64 root=/dev/md2 ro installiert werden soll. Dabei zeigt GRUB 2 deutlich weniger Ausgaben bei der Installation, initrd /initrd.img-3.2.0-4-amd64 siehe Listing 2.7: title Debian GNU/Linux, kernel 3.2.0-4-amd64 root@debian:~# grub-install /dev/sda root (hd1,1) Installation finished. No error reported. kernel /vmlinuz-3.2.0-4-amd64 root=/dev/md2 ro initrd /initrd.img-3.2.0-4-amd64 root@ubuntu:~# grub-install /dev/sda Listing 2.6 »menu.lst« für ein Software-RAID-1 Installing for i386-pc platform. Installation finished. No error reported. Falls die Spiegelung vor dem Start des Computers in Ordnung war, starten beide Einträge dasselbe System. opensuse:~# grub2-install /dev/sda Installation finished. No error reported. Listing 2.7 Installation »GRUB 2«

68 69

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 68 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 69 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.3 GRUB 2

2.3.3 Konfiguration E 40_custom 2 Diese Datei ist für eigene Booteinträge vorhanden. Die Konfigurationsdatei von GRUB 2 finden Sie unter /boot/grub/grub.cfg. Bitte ändern Sie diese nicht von Hand, sie wird von den Skripten unter /etc/grub.d erstellt. In diesem Ver- E 41_custom zeichnis wird den Skripten eine Nummer vorangestellt, um die Reihenfolge festzulegen. Das Hiermit wird die /boot/grub/custom.cfg eingebunden, sofern sie existiert. Verfahren, die Konfiguration aus einzelnen Bausteinen (Skripten) zusammenstellen zu las- E README sen, macht GRUB 2 deutlich flexibler und besser automatisierbar – so werden installierte Diese Datei enthält Hintergrundinformationen für die Skripte in diesem Verzeichnis. Kernel automatisch erkannt und in das Bootmenü aufgenommen: als GRUB. Die Skriptnummern, die mit 00, 10 oder 20 beginnen, sind reserviert. Alle Nummern da- Die hohe Flexibilität wird allerdings durch eine komplexere Konfiguration erkauft. Ohne zwischen können Sie für eigene Skripte verwenden. Je nachdem, welche Nummer Sie Ihrem gutes Shell-Skripting-Know-How kommt man da nicht viel weiter. Skript geben, wird es früher oder später im Prozess ausgeführt. Apropos ausgeführt, die Einfachere Konfigurationen wie das Bootmenü sind relativ leicht machbar. Einstellungen, Skripte unterhalb von /etc/grub.d müssen alle ausführbar sein. die das komplette Bootverhalten beeinflussen, wie beispielsweise Timeouts oder der Kernel, Wir legen jetzt einen neuen Eintrag im Bootmenü an. Dazu werden am Ende der Datei der standardmäßig gestartet werden soll, werden in der Datei /etc/default/grub vorgenom- 40_custom die Zeilen aus Listing 2.8 neu eingefügt: men. #!/bin/sh In der aktuellen Ubuntu-Version 14.04 sind die folgenden Dateien im Verzeichnis /etc/grub.d exec tail -n +3 $0 zu finden: # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change E 00_header # the 'exec tail' line above. Mit diesem Skript werden die Standardeinstellungen aus der Datei /etc/default/grub gesetzt. menuentry "Ubuntu 14.04 Kernel 3.13.0-32" { E 05_debian_theme set root='(hd0,1)' Diese Datei sorgt für das Aussehen des Bootmenüs, hier werden Farben und Hintergrund- linux /boot/vmlinuz-3.13.0-32-generic \ bild definiert. root=UUID=97152e6d-aef0-4b21-be4d-6bfbd1171e01 initrd /boot/initrd.img-3.13.0-32-generic E 10_linux } Dieses Skript nimmt alle installierten Kernel in das Bootmenü auf. Listing 2.8 Eigener Eintrag in der Datei »40_custom« E 20_linux_xen Hier werden besondere Einstellungen und besondere Kernel für Xen-Virtualisierung Das Skript sorgt nur dafür, dass die Zeilen ab der dritten Zeile ausgegeben werden. Die ei- getroffen. gentliche Konfiguration findet sich in der geschweiften Klammer nach dem menuentry,der E 20_memtest86+ den Text des Eintrags im Bootmenü enthält. Das Programm memtest wird mit diesem Skript in das Bootmenü aufgenommen, es führt Wie gewohnt kennzeichnet set root die Partition, in der sich das Verzeichnis /boot befindet. automatisierte Speichertests aus. Natürlich bietet GRUB 2 eine Besonderheit: Die Festplattennummerierung beginnt bei 0, E 30_os-prober und die Nummerierung der Partition beginnt bei 1. So wird aus der Partition /dev/sdb3 unter Dieses Skript sucht nach installierten (anderen) Betriebssystemen und nimmt sie in das GRUB hd1,2 und unter GRUB 2 hd1,3. Bootmenü auf. Nach linux (früher kernel) folgt der zu startende Betriebssystemkern. Und initrd ist so, wie E 30_uefi-firmware bereits beschrieben, die Initial Ramdisk. Besondere Einstellungen für UEFI-Systeme werden mit diesem Skript getroffen. Mittels update-grub wird ein neuer Bootloader geschrieben, und beim nächsten Start finden wir unseren neuen Eintrag im Bootmenü.

70 71

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 70 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 71 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.3 GRUB 2

Wie bereits beschrieben ist GRUB 2 modular aufgebaut und bringt keine Treiber mit, daher efiemu.mod memrw.mod ufs1.mod 2 muss man eventuell noch Module mit dem Kommando insmod hinzuladen, um aus einem elf.mod minicmd.mod ufs2.mod einfachen Menüeintrag ein startfähiges System zu machen. example_functional_test.mod minix2.mod uhci.mod ext2.mod minix.mod usb_keyboard.mod Beispiele dafür sind LVM, besondere Dateisysteme oder auch RAID. Alle verfügbaren Module extcmd.mod mmap.mod usb.mod Ihrer GRUB-2-Installation finden sich im Verzeichnis /boot/grub und enden auf .mod.In fat.mod msdospart.mod usbms.mod Listing 2.9 finden Sie die Module eines Debian-Wheezy-Systems: font.mod multiboot2.mod usbserial_common.mod root@debian:/boot/grub# ls *.mod fshelp.mod multiboot.mod usbserial_ftdi.mod 915resolution.mod gcry_whirlpool.mod play.mod functional_test.mod nilfs2.mod usbserial_pl2303.mod acpi.mod gettext.mod png.mod gcry_arcfour.mod normal.mod usbtest.mod adler32.mod gfxmenu.mod probe.mod gcry_blowfish.mod ntfscomp.mod vbe.mod affs.mod gfxterm.mod pxecmd.mod gcry_camellia.mod ntfs.mod vga.mod afs_be.mod gptsync.mod pxe.mod gcry_cast5.mod ntldr.mod vga_text.mod afs.mod gzio.mod raid5rec.mod gcry_crc.mod ohci.mod video_bochs.mod aout.mod halt.mod raid6rec.mod gcry_des.mod part_acorn.mod video_cirrus.mod ata.mod hashsum.mod raid.mod gcry_md4.mod part_amiga.mod video_fb.mod ata_pthru.mod hdparm.mod read.mod gcry_md5.mod part_apple.mod videoinfo.mod at_keyboard.mod hello.mod reboot.mod gcry_rfc2268.mod part_bsd.mod video.mod befs_be.mod help.mod regexp.mod gcry_rijndael.mod part_gpt.mod videotest.mod befs.mod hexdump.mod reiserfs.mod gcry_rmd160.mod part_msdos.mod xfs.mod biosdisk.mod hfs.mod relocator.mod gcry_seed.mod part_sun.mod xnu.mod bitmap.mod hfsplus.mod scsi.mod gcry_serpent.mod part_sunpc.mod xnu_uuid.mod bitmap_scale.mod iorw.mod search_fs_file.mod gcry_sha1.mod parttool.mod xzio.mod blocklist.mod iso9660.mod search_fs_uuid.mod gcry_sha256.mod password.mod zfsinfo.mod boot.mod jfs.mod search_label.mod gcry_sha512.mod password_pbkdf2.mod zfs.mod bsd.mod jpeg.mod search.mod gcry_tiger.mod pbkdf2.mod btrfs.mod keylayouts.mod sendkey.mod gcry_twofish.mod pci.mod bufio.mod keystatus.mod serial.mod Listing 2.9 GRUB-2-Module eines Debian-Wheezy-Systems cat.mod legacycfg.mod setjmp.mod chain.mod linux16.mod setpci.mod Auf dem gleichen System findet sich in der /boot/grub/grub.cfg ein Beispiel dafür, wie ein cmostest.mod linux.mod sfs.mod Teil dieser Module eingesetzt wird (siehe Listing 2.10): cmp.mod loadenv.mod sleep.mod ... configfile.mod loopback.mod squash4.mod ### BEGIN /etc/grub.d/10_linux ### cpio.mod lsacpi.mod tar.mod menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' \ cpuid.mod lsapm.mod terminal.mod --class debian --class gnu-linux --class gnu --class os { crypto.mod lsmmap.mod terminfo.mod load_video cs5536.mod ls.mod test_blockarg.mod insmod gzio datehook.mod lspci.mod testload.mod insmod part_msdos date.mod lvm.mod test.mod insmod ext2 datetime.mod lzopio.mod tga.mod set root='(hd0,msdos1)' dm_nv.mod mdraid09.mod trig.mod search --no-floppy --fs-uuid --set=root a7cbb284-892b-4d43-a10b-40e0d34466c4 drivemap.mod mdraid1x.mod true.mod echo 'Loading Linux 3.2.0-4-amd64 ...' echo.mod memdisk.mod udf.mod

72 73

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 72 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 73 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.4 Bootloader Recovery

linux /vmlinuz-3.2.0-4-amd64 root=/dev/mapper/debian-root ro quiet 2.4 Bootloader Recovery echo 'Loading initial ramdisk ...' 2 initrd /initrd.img-3.2.0-4-amd64 Es passiert selten, aber wenn Sie Ihr System aufgrund einer Fehlkonfiguration des Bootloa- } ders nicht mehr starten können, sollten Sie den Bootloader reparieren. Dazu können Sie den ... Rechner von einer beliebigen Live-CD1 oder DVD oder von einem USB-Stick neu starten.

Listing 2.10 Die Optionen des Standardkernels aus der »/boot/grub/grub.cfg« Der einfachste Weg, eine Reparatur durchzuführen, ist, die Live-CD des Systems zu verwen- den, mit der Sie den Rechner installiert haben. Beachten Sie jedoch, dass Sie in jedem Fall bei Änderungen in der Datei /boot/grub/grub.cfg werden nicht automatisch übernommen. Mit Benutzung einer anderen Rettungs-CD die gleiche Architektur verwenden wie das installier- dem Kommando update-grub wird GRUB 2 aktualisiert, wie in Listing 2.11 zu sehen ist: te System. root@debian:~# update-grub Nach dem Start des Rettungssystems wird die Festplatte Ihres defekten Systems eingebun- Generating grub.cfg ... den. Das bedeutet, dass Sie alle Partitionen mounten. Im Regelfall werden die Partitionen Found linux image: /boot/vmlinuz-3.2.0-4-amd64 unter /mnt eingebunden. Sie können natürlich auch eigene Verzeichnisse verwenden, wenn Found initrd image: /boot/initrd.img-3.2.0-4-amd64 Sie dabei keines der vom Live-System benutzten Verzeichnisse nutzen. done Listing 2.11 »update-grub« Das Kommando fdisk -l zeigt Ihnen alle gefundenen Festplatten an. Falls Software-RAIDs oder LVM benutzt werden, müssen diese vor der Benutzung aktiviert werden. Wie das geht, Interessant ist, dass die Konfigurationsdatei /etc/default/grub ein Shell-Skript ist. Allerdings finden Sie in Kapitel 3, »Festplatten und andere Devices«. werden dort nur Variablen gesetzt, die nach Aufruf von update-grub durch /etc/grub.d/ Device Boot Start End Blocks Id System 00_header ausgewertet werden. /dev/sda1 * 2048 499711 248832 83 Linux In der folgenden Auflistung finden Sie die wichtigsten Variablen: /dev/sda2 501758 20969471 10233857 5 Extended /dev/sda5 501760 20969471 10233856 8e Linux LVM E GRUB_DEFAULT=0 Listing 2.12 Ausgabe »fdisk -l« auf einem Testsystem Hiermit wird der Standardeintrag gesetzt. E GRUB_TIMEOUT=5 In Listing 2.12 finden Sie den seltenen Fall eines Systems ohne eigene swap-Partition. Ver- Nach Ablauf der durch TIMEOUT gesetzten Zeit wird der Standardeintrag gestartet. mutlich findet sich in der ersten Partition das boot-Verzeichnis, was wir durch Mounten E GRUB_HIDDEN_TIMEOUT=0 verifizieren können (siehe Listing 2.13): Wenn nur ein Betriebssystem existiert, wird dieser Wert als Wartezeit benutzt. Sobald ein Rescue:~# mount /dev/sda1 /mnt weiterer Eintrag hinzukommt, ist der Wert bedeutungslos. Rescue:~# ls /mnt E GRUB_HIDDEN_TIMEOUT_QUIET=true config-3.2.0-4-amd64 initrd.img-3.2.0-4-amd64 System.map-3.2.0-4-amd64 Mit true wird kein Countdown angezeigt, bei false wird er entsprechend angezeigt. grub lost+found vmlinuz-3.2.0-4-amd64 Rescue:~# umount /mnt E GRUB_CMDLINE_LINUX= Hiermit werden Standardoptionen für jede linux-Zeile gesetzt. Listing 2.13 Mounten des vermeintlichen »boot«-Filesystems

Die Variablen werden erst nach einem erneuten Aufruf von update-grub gültig. Die fünfte Partition wird vom Logical Volume Manager (LVM) verwaltet.

Mit dem Kommando lvs können wir uns die gefundenen Logical Volumes anzeigen lassen. Der Parameter -o +lv_path sorgt dafür, dass uns auch gleich der Pfad für das Mounten ge- zeigt wird (siehe Listing 2.14):

1 Zum Beispiel die »System Rescue CD«, www.sysresccd.org.

74 75

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 74 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 75 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.5 Der Kernel und die »initrd«

Rescue:~# lvs -o +lv_path 2.5 Der Kernel und die »initrd« LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert \ 2 Path Beim Laden des Kernels gibt es ein klassisches Henne-Ei-Problem: Der Kernel probiert näm- root debian -wi-ao-- 9.31g \ lich zunächst, alle notwendigen Module zu laden, die für den Zugriff auf die Hardware not- /dev/debian/root wendig sind. Das sind insbesondere die Treiber zum Ansprechen der Festplatte und des swap_1 debian -wi-ao-- 460.00m \ Dateisystems. Die dafür notwendigen Module liegen aber auf dem noch nicht lesbaren Datei- /dev/debian/swap_1 system. Um dieses Dilemma zu lösen, lädt der Bootloader nicht nur den Kernel direkt in den Listing 2.14 Gefundene Partition im LVM Speicher, sondern auch die Initial Ramdisk (initrd). Die initrd besteht aus einem kompri- mierten cpio-Archiv und enthält ein absolut minimales Linux mit allen für den Start not- An dieser Stelle haben wir alle Informationen zusammen, um die Dateisysteme benutzen zu wendigen Modulen. Der Kernel benutzt die initrd als root-Filesystem. Sobald alle nötigen können (siehe Listing 2.15): Treiber geladen sind, bindet der Kernel das eigentliche root-Filesystem ein und startet den Rescue:~ # mount /dev/debian/root /mnt init-Prozess. Rescue:~ # mount /dev/sda1 /mnt/boot/ Listing 2.15 Mounten der Dateisysteme 2.5.1 »initrd« erstellen und modifizieren

Um das Linux-System komplett zu machen, müssen wir die dynamischen Pseudo-Datei- Bei der Installation eines Systems wird auch eine Initial Ramdisk (initrd) erstellt, die Treiber systeme (/dev, /proc und /sys) aus der Live-CD in die Verzeichnisse unterhalb von /mnt ein- enthält, die für den Start des Rechners benötigt werden, bevor die Dateisysteme verfügbar binden. Das funktioniert über Bind-Mounts. sind. Diese Ramdisk wird bei jedem Kernelupdate neu erstellt und mit neuen Versionen der Treiber versehen. Wenn das nicht passieren würde, erhielten wir nach Wechsel der root-Umgebung mittels chroot (»change root environment«) keine Informationen über verbundene Geräte und Ker- Wenn Sie allerdings Hardware benutzen, die Treiber benötigt, die nicht im Kernel vorhanden nelparameter (siehe Listing 2.16): sind, wie beispielsweise besondere RAID-Controller oder Netzwerkkarten, so müssen Sie – wenn Sie Ihr System von den Geräten aus starten wollen – selbst Hand anlegen, wenn das Rescue:~ # mount --bind /dev /mnt/dev nicht die Installationsroutine des Herstellers für Sie übernimmt. Rescue:~ # mount --bind /proc /mnt/proc Rescue:~ # mount --bind /sys /mnt/sys Die verschiedenen Distributionen nutzen unterschiedliche Tools für die Erstellung.

Listing 2.16 Bind-Mount der Pseudodateisysteme In den folgenden Abschnitten finden Sie die Beschreibungen für die im Buch unterstütz- ten Distributionen, gefolgt von einem Abschnitt über die komplett manuelle Erstellung der Damit sind jetzt alle Vorarbeiten abgeschlossen, um via chroot auf das System zu wechseln Initial Ramdisk. und den Bootloader zu reparieren (siehe Listing 2.17): Rescue:~ # chroot /mnt Debian und Ubuntu Rescue:/ # grub-install Debian und Ubuntu benutzen mkinitramfs und update-initramfs. Wenn Sie nicht besonde- Rescue:/ # exit re Gründe haben, sollte immer update-initramfs verwendet werden, da dieses Kommando Listing 2.17 Neuinstallation des Bootloaders unter anderem auch mkinitramfs auf Basis der bereits bestehenden Konfiguration aufruft.

Die Erstellung der initrd wird über die Konfigurationsdatei /etc/initramfs-tools/initramfs.conf Sobald Sie fertig sind, müssen alle Dateisysteme ausgehängt werden. Sie müssen anschlie- und weitere Dateien innerhalb des Verzeichnisses /etc/initramfs-tools gesteuert. Aufgrund ßend das System neu starten. der vielen Kommentare in den Dateien werden Sie schnell zum Ziel kommen.

Einen besonderen Blick verdient die wichtigste Variable, MODULES. Sie kann verschiedene Wer- te annehmen, wie folgende Auflistung zeigt:

76 77

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 76 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 77 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.5 Der Kernel und die »initrd«

E most 2 Das ist die Standardeinstellung bei Ubuntu und Debian. Damit werden fast alle Datei- (excluding hid-*ff.ko hid-a4tech.ko hid-cypress.ko hid-dr.ko hid-elecom.ko \ system- und Hardwaretreiber übernommen. Die daraus resultierende sehr große Initial hid-gyration.ko hid-icade.ko hid-kensington.ko hid-kye.ko hid-lcpower.ko \ Ramdisk kann dafür aber auch fast jedes System starten. hid-magicmouse.ko hid-multitouch.ko hid-ntrig.ko hid-petalynx.ko \ hid-picolcd.ko hid-pl.ko hid-ps3remote.ko hid-quanta.ko hid-roccat-ko*.ko \ E dep hid-roccat-pyra.ko hid-saitek.ko hid-sensor-hub.ko hid-sony.ko \ Das laufende System wird analysiert, um festzustellen, welche Module wichtig sind. Diese hid-speedlink.ko hid-tivo.ko hid-twinhan.ko hid-uclogic.ko hid-wacom.ko \ Einstellung verkleinert die Initial Ramdisk auf ein Minimum. hid-waltop.ko hid-wiimote.ko hid-zydacron.ko) E netboot Adding module /lib/modules/3.2.0-4-amd64/kernel/drivers/hid/hid.ko Wie der Name es beschreibt, werden mit dieser Einstellung nur Treiber verwendet, die ... für das Starten vom Netz nötig sind. Adding library /lib/x86_64-linux-gnu/libuuid.so.1 Calling hook dmsetup E list Building cpio /boot/initrd.img-3.2.0-4-amd64.new initramfs Ausschließlich Module aus /etc/initramfs-tools/modules werden zum Bau der Initial Ram- Listing 2.18 disk verwendet, dies erlaubt die größtmögliche Kontrolle. Neuerstellen einer »initrd«

Auch ohne weitere Konfiguration werden die Module aus /etc/initramfs-tools/modules bei Wenn der Name der initrd bereits existierte, ist nichts weiter zu tun. Sollten Sie aber einen den Parametern most, dep und netboot zur Initial Ramdisk hinzugefügt. neuen Namen verwenden, muss im Bootloader der entsprechende Name eingetragen wer- Die Konfigurationen in den Dateien unterhalb von /etc/initramfs-tools/conf.d können die den, sonst können Sie das System nicht mehr starten. Werte aus /etc/initramfs-tools/initramfs.conf überschreiben. SLES11 und openSUSE Um eine neue initrd zu erstellen bzw. die bestehende aktualisieren zu lassen, können Sie Anders als bei Ubuntu und Debian nutzen SLES11 und openSUSE das Skript mkinitrd,umeine mit update-initramfs den Neubau starten. Die unten stehenden Parameter helfen bei der Initial Ramdisk zu erstellen. Das Skript ermittelt die Treiber, die aufgenommen werden müs- Erstellung: sen, und nutzt die Informationen aus /etc/sysconfig/kernel, in der eine Liste von Modulen zu E update-initramfs -u finden ist, die zusätzlich hinzugefügt werden sollen (siehe Listing 2.19): Hiermit werden alle vorhandenen initrds aktualisiert. ... E update-initramfs -k KERNEL Kernel image: /boot/vmlinuz-3.11.10-17-default Dieser Paremeter wird benötigt, wenn nur die initrds einer bestimmten Kernelversion Initrd image: /boot/initrd-3.11.10-17-default aktualisiert werden sollen. Root device: /dev/system/root (mounted on / as ext4) E update-initramfs -c Resume device: /dev/system/swap Dieser Parameter erstellt komplett neue Initial Ramdisks. Kernel Modules: thermal_sys thermal processor fan dm-mod dm-log dm-region-hash \ dm-mirror dm-snapshot scsi_dh scsi_dh_rdac scsi_dh_emc scsi_dh_hp_sw \ Der Name der initrd ergibt sich aus dem Namen des Kernels. Eine vorhandene Ramdisk wird scsi_dh_alua ata_piix linear somit bei jedem Aufruf von update-initramfs überschrieben. Features: acpi dm block lvm2 Wenn Sie dieses Verhalten nicht wünschen, sollten Sie den Parameter backup_initramfs=yes ... in der Datei /etc/initramfs-tools/update-initramfs.conf setzen oder manuelle Backups erstel- Listing 2.19 Beispiel »mkinitrd« auf openSUSE len (siehe Listing 2.18): Die Installation des Systems setzt automatisch die Variable INITRD_MODULES. Wenn diese Liste root@debian:~# update-initramfs -v -k 3.2.0-4-amd64 -c um eigene Einträge ergänzt wird, muss anschließend mkinitrd aufgerufen werden. update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64 Copying module directory kernel/drivers/hid Analog zu update-initramfs bei Ubuntu und Debian bietet auch mkinitrd einige Optionen an, die Ihnen helfen, die initrd anzupassen:

78 79

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 78 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 79 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.6 »Upstart«

E -k KERNEL total 40 2 Angabe des Kernels, für das die initrd gebaut werden soll. Ohne Angabe des Parameters drwxr-xr-x 2 root root 4096 Aug 10 16:14 bin wird vmlinuz benutzt. drwxr-xr-x 3 root root 4096 Aug 10 16:14 conf drwxr-xr-x 6 root root 4096 Aug 10 16:14 etc E -i INITRD -rwxr-xr-x 1 root root 6797 Aug 10 16:14 init setzt den Namen der initrd. Ohne diese Angabe wird /boot/initrd genommen. drwxr-xr-x 6 root root 4096 Aug 10 16:14 lib E -m MODULES drwxr-xr-x 2 root root 4096 Aug 10 16:14 lib64 nimmt eine Liste von Modulen auf der Kommandozeile, ansonsten wird der Inhalt der drwxr-xr-x 2 root root 4096 Aug 10 16:14 run Variablen INITRD_MODULES aus /etc/sysconfig/kernel ausgelesen. drwxr-xr-x 2 root root 4096 Aug 10 16:14 sbin drwxr-xr-x 6 root root 4096 Aug 10 16:14 scripts E -f FEATURES setzt Funktionalitäten für den Kernel, abhängig davon werden weitere Module und Skrip- Listing 2.21 »initrd« entpacken te eingebunden. Als Beispiel seien hier Software-RAID (Parameter dm)undLogical Volume Manager (Parameter lvm2) genannt. In dem resultierenden Verzeichnis /var/tmp/initrd können Sie nun Ihre Änderungen einpfle- gen und danach alles wieder einpacken (siehe Listing 2.22): In Listing 2.20 sehen Sie einen Beispielaufruf von mkinitrd: root@debian:/var/tmp/initrd# find . \ opensuse:~ # mkinitrd -k vmlinuz-3.11.10-17-default -i initrdtest -m ext4 -f \ | cpio --create --format=newc \ "lvm2 dm block" | gzip > /boot/initrd.adminbuch 63331 blocks Kernel image: /boot/vmlinuz-3.11.10-17-default Listing 2.22 »initrd« einpacken Initrd image: /boot/initrdtest Root device: /dev/system/root (mounted on / as ext4) In der Datei /boot/initrd.adminbuch findet sich nun die initrd, die alle Ihre Änderungen Resume device: /dev/system/swap Kernel Modules: thermal_sys thermal processor fan dm-mod dm-log dm-region-hash \ enthält. dm-mirror dm-snapshot scsi_dh scsi_dh_rdac scsi_dh_emc scsi_dh_hp_sw \ scsi_dh_alua ata_piix linear Features: acpi dm block lvm2 2.6 »Upstart« Listing 2.20 Beispielaufruf von »mkinitrd« Nach dem Bootvorgang, in dem der Kernel das root-Filesystem eingebunden und alle not- wendigen Module geladen hat, übernimmt der init-Daemon den weiteren Ablauf.

2.5.2 »initrd« manuell modifizieren Der klassische init-Prozess folgt dem in System V2 vorgestellten Verfahren und wird nach Zusätzlich zu den vorgestellten Methoden, die zugegebenermaßen relativ beschränkt sind, diesem auch SysVinit genannt. Er ist verantwortlich für das Starten der Dienste in der rich- lässt sich die initrd auch manuell verändern. tigen Reihenfolge, das Folgen und auch den Wechsel von Runleveln sowie für das Stoppen von Prozessen. Dieses Verfahren ist sehr robust, aber leider auch sehr statisch. Als Basis für Ihre Arbeiten nehmen Sie sich bitte eine vorhandene initrd und packen diese aus. Listing 2.21 zeigt Ihnen, dass es sich bei der initrd um ein minimales root-Filesystem Upstart ist ein potenzieller Nachfolger, der vom statischen Starten von Skripten übergeht handelt: zum eventbasierten Starten. So können Bedingungen definiert werden, die erfüllt sein müs- sen, um Dienste starten zu können (beispielsweise wird der Webserver erst dann gestartet, root@debian:~# mkdir /var/tmp/initrd wenn das Netzwerk verfügbar ist, oder ein Virenscanner, wenn ein USB-Stick eingesteckt root@debian:~# cd /var/tmp/initrd/ wird). Der Start von Diensten mit Upstart ist hoch parallelisierbar. Als besonderes Feature ist root@debian:/var/tmp/initrd# gzip -dc /boot/initrd.img-3.2.0-4-amd64 \ Upstart auch in der Lage, abgestürzte Dienste neu zu starten. | cpio --extract --make-directories 63331 blocks root@debian:/tmp/initrd# ls -l 2 https://de.wikipedia.org/wiki/System_V.

80 81

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 80 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 81 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.6 »Upstart«

Ursprünglich von Canonical entwickelt, ist Upstart seit Ubuntu 6.10 (»Edgy Eft«) Bestandteil script 2 der Distribution. In der Übergangsphase wurden Dienste trotzdem mit SysVinit-Skripten . /etc/default/rsyslog gestartet, und alle neueren Entwicklungen wurden mit Upstart-Skripten versehen. exec rsyslogd $RSYSLOGD_OPTIONS end script openSUSE wird voraussichtlich auf die Alternative zu Upstart, nämlich systemd,setzen,da- Listing 2.23 »rsyslog.conf« her wird das vermutlich auch das Ziel für SUSE Linux Enterprise Server sein. Momentan setzt eine Konsolidierung der init-Systeme ein, Red Hat Enterprise Linux 7 und ebenfalls CentOS Ein Upstart-Skript kann minimal aus einer Zeile bestehen, die mittels exec einen Dienst 7setzenaufsystemd, Debian wird ebenfalls auf systemd setzen, wird aber noch den SysVinit startet. Dieser Dienst würde allerdings nie automatisch gestartet werden, da Upstart die als Alternative anbieten. Canonical rückt aus diesem Grund auch von Upstart ab und will in Ereignisse nicht kennt, die für den Start oder Stopp notwendig wären. weiteren Versionen vermutlich auch auf systemd umsteigen. Die Bedingungen kann man im Skript sehen, zum einen ist da start on filesystem,sobald Wir beschränken uns hier auf Upstart, weil der Wandel in allen Distributionen noch nicht also das Event filesystem eingetreten ist, kann der rsyslogd starten. Das Event filesystem wird vollzogen ist. vom Befehl mountall ausgelöst. Der Dienst rsyslogd soll gestoppt werden (stop on runlevel [06]), wenn entweder Runlevel 0 oder 6 erreicht wurde. Diese Eigenschaft ist aus Gründen 2.6.1 Funktionsweise der Kompatibilität zum SysVinit vorhanden.

Da bei Upstart alle Dienste durch einen init-Daemon, verwaltet werden, ist ein Wechsel von Wichtig ist noch die Direktive expect fork. Sie bedeutet, dass der Hauptprozess wenigstens SysVinit sehr leicht möglich. Allerdings verwendet Upstart nicht den SysVinit-Daemon, son- einen Kindprozess bekommt und sich selbst beendet. Würde diese Direktive fehlen, wüsste dern bringt einen eigenen mit. Upstart nicht, dass der Dienst sauber gestartet wurde.

Prozesse, die mit Upstart verwaltet werden, nennt man Jobs. Sie werden definiert durch Die Direktive respawn startet den Dienst neu, sobald er abgestürzt ist. eine Konfigurationsdatei (JOBNAME.conf in /etc/init.d), die beschreibt, welche Bedingungen für das Starten und Stoppen erfüllt sein müssen. Skripte des originalen SysVinit bleiben 2.6.2 Events im Detail weiterhin unterhalb von /etc/init.d. Die wichtigsten Ereignisse von Upstart sehen Sie hier in der Übersicht: Der Dienst rsyslog ist ein einfaches Beispiel, das mit sehr wenigen Abhängigkeiten aus- kommt, wie Listing 2.23 zeigt: E startup wird ausgelöst, sobald der init-Daemon seine Startphase beendet hat. Dienste ohne wei- # rsyslog - system logging daemon tere Voraussetzungen können direkt danach starten. # # rsyslog is an enhanced multi-threaded replacement for the traditional E starting/stopping # syslog daemon, logging messages from applications Wenn ein Dienst dabei ist, hochzufahren, wird das starting-Event ausgelöst; analog dazu stopping, wenn ein Job dabei ist, herunterzufahren. description "system logging daemon" E started/stopped Bei diesen Events ist der Dienst gestartet oder gestoppt. start on filesystem stop on runlevel [06] In Listing 2.24 finden Sie die Ausgabe des Kommandos apropos event signalling, das alle Events enthält: expect fork root@ubuntu:/etc/init# apropos event signalling respawn acpi_listen (8) - ACPI event listener acpid (8) - Advanced Configuration and Power Interface event daemon pre-start script all-swaps (7) - event signalling that all swap partitions have been ac... /lib/init/apparmor-profile-load usr.sbin.rsyslogd control-alt-delete (7) - event signalling console press of Control-Alt-Delete end script dbus-event (7) - event signalling that a dbus signal has been emitted

82 83

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 82 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 83 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.6 »Upstart«

epoll (7) - I/O event notification facility E start on started aaa and (started bbb or started ccc) 2 file-event (7) - event signalling that a file has changed Verknüpfungen sind auch möglich, dazu gibt es and und or und Klammern. filesystem (7) - event signalling that filesystems have been mounted E start on started abc until starting xyz inotify (7) - monitoring filesystem events Wenn abc gestartet wurde und xyz noch nicht, wird der Job ausgeführt. Achtung: Der Job iwevent (8) - Display Wireless Events generated by drivers and setti... wird nicht gestoppt, wenn xyz im späteren Verlauf gestartet wird. keyboard-request (7) - event signalling console press of Alt-UpArrow local-filesystems (7) - event signalling that local filesystems have been mou... mounted (7) - event signalling that a filesystem has been mounted 2.6.3 Prozessdefinitionen mounting (7) - event signalling that a filesystem is mounting nologin (5) - prevent unprivileged users from logging into the system Wie Sie bereits in Listing 2.23 gesehen haben, gibt es weitere Programmierelemente, die ver- pam_nologin (8) - Prevent non-root users from login wendet werden können. So werden Blöcke zwischen script und end script als Shell-Skripte power-status-changed (7) - event signalling change of power status interpretiert. remote-filesystems (7) - event signalling that remote filesystems have been m... Zusätzlich dazu können mit pre-start, post-start, pre-stop und post-stop noch Bedin- runlevel (7) - event signalling change of system runlevel gungen definiert werden, die für das nachfolgende exec oder einen folgenden script/end session-end (7) - event signalling session shutdown sigevent (7) - structure for notification from asynchronous routines script-Block gelten. socket-event (7) - event signalling that a socket connection has been made Klassischerweise kann man im pre-start prüfen, ob die Bedingungen für einen Start ge- started (7) - event signalling that a job is running geben sind (existieren die Dateien, die benötigt werden, überhaupt?). Und in einem post- starting (7) - event signalling that a job is starting stop-Teil können temporäre Dateien weggeräumt werden. startup (7) - event signalling system startup stopped (7) - event signalling that a job has stopped stopping (7) - event signalling that a job is stopping 2.6.4 Anzeige aller »Upstart«-Jobs systemd-udevd (8) - Device event managing daemon systemd-udevd-control.socket (8) - Device event managing daemon Alle bekannten Jobs, inklusive Status, zeigt der Befehl initctl list an (siehe Listing 2.25): systemd-udevd-kernel.socket (8) - Device event managing daemon root@ubuntu:~# initctl list systemd-udevd.service (8) - Device event managing daemon mountall-net stop/waiting udevd (8) - Device event managing daemon mountnfs-bootclean.sh start/running upstart-event-bridge (8) - Bridge between system Upstart and session Upstart passwd stop/waiting upstart-events (7) - Well-known Upstart events summary rc stop/waiting virtual-filesystems (7) - event signalling that virtual filesystems have been... rsyslog start/running, process 397 Listing 2.24 Liste der Events startpar-bridge stop/waiting tty4 start/running, process 776 Eigene Events erzeugen Sie mit initctl, so erstellt initctl emit yippieh das Ereignis yippieh. udev start/running, process 293 upstart-udev-bridge start/running, process 287 Das Event alleine macht allerdings noch gar nichts. Im Folgenden erklären wir, was sich mit ureadahead-other stop/waiting einem Event durchführen lässt: apport start/running E start on started cron console-setup stop/waiting Wenn cron gestartet wurde, soll der Job starten. hwclock-save stop/waiting irqbalance stop/waiting E start on starting networking plymouth-log stop/waiting Dieser Job startet gleichzeitig mit networking. systemd-logind start/running, process 398 E stop on runlevel [!5] tty5 start/running, process 781 Dieser Job wird bei Übergang in alle Runlevel außer 5 gestoppt. failsafe stop/waiting

84 85

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 84 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 85 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.6 »Upstart«

mountall.sh start/running udev-finish stop/waiting atd start/running, process 863 hostname stop/waiting 2 dbus start/running, process 380 mountall-reboot stop/waiting mounted-var stop/waiting mountall-shell stop/waiting plymouth-shutdown stop/waiting mounted-tmp stop/waiting plymouth stop/waiting network-interface (lo) start/running resolvconf start/running network-interface (eth0) start/running ssh start/running, process 838 plymouth-ready stop/waiting udev-fallback-graphics stop/waiting plymouth-splash stop/waiting checkroot.sh start/running plymouth-upstart-bridge stop/waiting control-alt-delete stop/waiting tty1 start/running, process 955 hwclock stop/waiting udevmonitor stop/waiting mounted-proc stop/waiting dmesg stop/waiting setvtrgb stop/waiting mountall-bootclean.sh start/running shutdown stop/waiting network-interface-security (network-interface/eth0) start/running cron start/running, process 862 network-interface-security (network-interface/lo) start/running mountall stop/waiting network-interface-security (networking) start/running mounted-debugfs stop/waiting networking start/running mountkernfs.sh start/running procps stop/waiting console stop/waiting tty6 start/running, process 789 mounted-run stop/waiting console-font stop/waiting acpid start/running, process 858 network-interface-container stop/waiting checkfs.sh start/running ureadahead stop/waiting checkroot-bootclean.sh start/running Listing 2.25 Jobs eines minimalen Ubuntu 14.04 LTS kmod stop/waiting mountnfs.sh start/running Die Informationen, die Sie in Listing 2.25 finden können, sind zum Teil leicht irreführend. plymouth-stop stop/waiting Ein Status stop/waiting kann bedeuten, dass der Dienst gestoppt oder noch nicht ausgeführt rcS stop/waiting wurde. Insbesondere das waiting sehen Sie auch, wenn keine Bedingung hinterlegt wurde. ufw start/running Sicher können Sie nur sein, dass es eine entsprechende Konfigurationsdatei gibt. wait-for-state stop/waiting bootmisc.sh start/running Der erste Teil der Informationen in Listing 2.25 beinhaltet den Status, der erreicht werden soll: flush-early-job-log stop/waiting start oder stop. Der Wert hinter dem Schrägstrich zeigt, wo sich der Prozess auf dem Weg friendly-recovery stop/waiting zum Ziel befindet. Eine aktive Prozess-ID wird ebenfalls angezeigt. Sollte der Status pre-start rc-sysinit stop/waiting oder post-stop sein, sehen Sie die ID des Pre- oder Post-Prozesses. upstart-socket-bridge start/running, process 558 mountdevsubfs.sh start/running tty2 start/running, process 786 2.6.5 Anzeige und Überprüfung der Job-Konfigurationen udevtrigger stop/waiting Mit initctl show-config können Sie sich die Job-Konfigurationen anzeigen lassen. Wenn Sie upstart-file-bridge start/running, process 426 einen Parameter mitgeben, wird nur der Job angezeigt, den Sie als Parameter übergeben container-detect stop/waiting mounted-dev stop/waiting haben, ansonsten sehen Sie alle Job-Konfigurationen (siehe Listing 2.26): mtab.sh start/running tty3 start/running, process 787

86 87

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 86 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 87 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration 2 Bootvorgang 2.6 »Upstart«

mysql 2.6.6 Starten, Stoppen und Neustarten von Diensten start on runlevel [2345] 2 Wie bereits erläutert ist Upstart abwärtskompatibel mit SysVinit. Sie können noch immer stop on starting rc RUNLEVEL=[016] die Dienste mittels der Skripte in /etc/init.d starten oder stoppen. Allerdings weist Sie das root@ubuntu:~# initctl show-config mountall mountall System darauf hin, wenn ein Dienst bereits direkt zu Upstart migriert wurde. Betrachten Sie emits virtual-filesystems dazu Listing 2.28: emits local-filesystems root@ubuntu:~# /etc/init.d/cron restart emits remote-filesystems Rather than invoking init scripts through /etc/init.d, use the service(8) emits all-swaps utility, e.g. service cron restart emits filesystem emits mounting Since the script you are attempting to invoke has been converted to an emits mounted Upstart job, you may also use the stop(8) and then start(8) utilities, start on startup e.g. stop cron ; start cron. The restart(8) utility is also available. stop on starting rcS cron stop/waiting root@ubuntu:~# initctl show-config shutdown cron start/running, process 2782 shutdown root@ubuntu:~# ls -l /etc/init.d/cron start on power-status-changed lrwxrwxrwx 1 root root 21 Mar 9 12:56 /etc/init.d/cron -> /lib/init/upstart-job Listing 2.26 Beispiele für »show-config« Listing 2.28 Klassisches Neustarten von »cron«

Die Datenbank mysql ist ein gutes Beispiel dafür, dass es kein echtes Upstart-Skript gibt, Wie Sie in Listing 2.28 sehen können, ist das Skript in /etc/init.d ein Verweis auf /lib/init/ sondern nur das SysVinit-Skript übernommen wurde. upstart-job. Letzteres sorgt dafür, dass die Upstart-Kommandos für den Neustart verwendet Das Skript mountall hingegen definiert eine ganze Reihe an Events, die durch emits charak- werden. terisiert werden. Wie auf »externe« Veränderungen reagiert wird, zeigt shutdown. Der richtige neue Weg wäre allerdings

Konfigurationen können mittels initctl check-config überprüft werden, das Kommando root@ubuntu:~# service cron restart gibt die Jobs aus, die entweder nicht gestartet oder gestoppt werden können. Häufig sind cron stop/waiting nicht installierte Zusatztools der Grund, vergleichen Sie dazu Listing 2.27. cron start/running, process 2809 root@ubuntu:~# initctl check-config Listing 2.29 Neustarten von »cron« mit »Upstart« plymouth-shutdown start on: unknown job uxlaunch start on: unknown job xdm 2.6.7 Abschlussbemerkung plymouth-stop Die hier vorgestellten Befehle und Direktiven bilden nur einen Ausschnitt der Möglichkeiten start on: unknown job oem-config von Upstart ab. Dieser Ausschnitt ist jedoch eine gute Basis für weitere Schritte mit Upstart, start on: unknown job ubiquity eigene Skripte und Job-Definitionen können Sie damit bereits jetzt erstellen. Über die Man- start on: unknown job uxlaunch page von init (man 5 init) können Sie noch einige andere Direktiven finden. start on: unknown job lightdm start on: unknown job lxdm Nachdem sich auch Canonical aus der Upstart-Entwicklung zurückgezogen hat, lohnt es start on: unknown job xdm sich nicht, die eigenen Skripte auf dieses init-System umzustellen, da systemd vermutlich start on: unknown job kdm die Nachfolge antreten wird. In Ihren bestehenden Installationen werden Sie aber noch mit start on: unknown job gdm Upstart konfrontiert. Listing 2.27 »initctl check-config«

88 89

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 88 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 89 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: bootvorgang/bootvorgang , Aktueller Job: administration Aktuelle Quelldatei: festplatten/festplatten , Aktueller Job: administration Kapitel 6 Paketmanagement

Der Umgang mit Software – Quellcode, Paket und Paketmanagementlösungen – steht im Vordergrund dieses Kapitels. Erfahren Sie, wie Sie Ihre selbst entwickelte 6 Software in Pakete schnüren, Update-Pakete erstellen und das Paketmanagement Ihrer Distribution richtig einsetzen.

Zu den Aufgaben einer Paketverwaltung (engl. packet management) gehören das Installie- ren, das Aktualisieren und das Deinstallieren von Software. Schon in den Anfangsjahren von Linux wurde solch ein System erforderlich. Durch die wachsende Anzahl von Programmen der GNU-Sammlung konnten Linux-Systeme fast alle Aufgaben bewältigen. Lediglich das In- stallieren der Software sorgte für Unmut, da das Übersetzen des Quellcodes (Kompilieren)auf dem eigenen System oft beschwerlich war. Vorausgesetzte Software (dependencies1) muss- ten von Hand nachinstalliert werden, Updates sorgten für Konflikte mit anderer installierter Software, und die Deinstallation musste ebenfalls von Hand durchgeführt werden.

6.1 Paketverwaltung

Hier setzt die Paketverwaltung an. Sie löst Abhängigkeiten auf und versucht, notwendige Software selbstständig nachzuinstallieren. Sie entfernt Programme sauber aus dem System und prüft bei Updates, ob Überschneidungen existieren und wie diese gelöst werden können. Dafür musste die Software aber in eine entsprechende Form gebracht werden: in Pakete.

Eine Paketverwaltung besteht aus zwei Teilen. Der erste Teil ist für das Laden der Programme aus einem Repository2 sowie für das Auflösen von Abhängigkeiten und Konflikten verant- wortlich. Der zweite Teil, zum Beispiel dpkg (Debian Packet Management)oderrpm (RPM Packet Management), sorgt für die eigentliche Installation.

In diesem Kapitel erfahren Sie alles zu den zwei größten Paketverwaltungen, dpkg und rpm. Sie erfahren, wie Pakete zu diesen Paketverwaltungen konvertiert werden, welche weiteren Programme es gibt und wie Sie selbst Pakete aktualisieren, erstellen und patchen können.

1 dependencies,engl.fürAbhängigkeiten. Damit meint man in der Paketverwaltung Software, die für den Betrieb anderer Software benötigt wird. 2 Repository,engl.fürLager, Depot.

189

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 189 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.1 Paketverwaltung

6.1.1 »rpm« oder »deb«? anderen den Fork von Johnson, rpm5, der zum Beispiel in Alt Linux, ArkLinux und Unity Linux Anwendung findet. Trotz aller Vorteile, die eine Paketverwaltung bietet, besitzen Paketverwaltungen auch Nach- teile. Zum einen verfügen Paketverwaltungen zum Großteil lediglich über Binärpakete. Diese Bei rpm-Paketen handelt es sich um komprimierte Dateien, denen ein binärer Header vor- Pakete sind für eine Architektur übersetzt und nur auf dieser lauffähig. Dies führt zu stati- angestellt ist. Dieser Header ist nicht komprimiert, sodass dieser leicht durchsucht werden schen Paketen, die nicht voll an das System, auf dem sie laufen, angepasst sind. Zum anderen kann. kommt es bei Paketverwaltungen auch zu Konflikten. Die zentrale Datei eines Pakets im rpm-Format ist die SPEC-Datei. Sie enthält alle Metainfor- 6 Wenn in den Paketen Alpha und Beta teilweise die gleichen Dateien enthalten sind, können mationen des Pakets, also Informationen darüber, was in dem Paket enthalten ist, wohin es Sie nicht beide Pakete gleichzeitig installieren. Falls die Aktualisierung des Pakets Gamma installiert wird, wie es installiert wird, sowie Informationen zum Paket selbst. auch die Aktualisierung des Pakets Delta fordert, das Paket Epsilon aber die »alte Version« Diese Datei ist in folgende acht Sektionen unterteilt: des Pakets Delta benötigt, ist eine Aktualisierung von Alpha nicht möglich. Eine gute Paket- E verwaltung zeichnet sich dadurch aus, dass sie diese Konflikte effektiv löst. Präambel Informationen über das Paket, die mittels rpm dem Benutzer angezeigt werden In der heutigen Zeit haben sich drei Konzepte durchgesetzt: E Prep E die rpm-Paketverwaltung ein Skript, das den Quellcode-Dateibaum erzeugt E die dpkg-Paketverwaltung E Build E quellenbasierte Distributionen ein Kompilierungsskript

Die ersten beiden Paketverwaltungen haben die Linux-Welt quasi in zwei Lager gespalten. Die E Install letzte Variante findet eher selten Anwendung, aber Distributionen wie zum Beispiel Gentoo Installationsanweisung für die Binaries – in den meisten Fällen »make install« Linux verzichten ganz auf Binärpakete und stellen lediglich den Quellcode zur Verfügung, E Files sodass jede Installation voll an das System angepasst wird. eine Auflistung aller Dateien, die im Paket enthalten sind

Jede Distribution verfügt über ihre eigene Implementierung einer Paketverwaltung. Das hat E Install/Uninstall zur Folge, dass zum Beispiel zwei auf rpm basierende Distributionen nicht zwingend mitein- Skripte für die Installation und Deinstallation. Diese Sektion besteht wiederum aus vier ander kompatibel sein müssen. Unterabschnitten: pre, post, prerun und postrun. Das sind Befehle, die vor/nach der Installation/Deinstallation ausgeführt werden. »rpm« E Verify Die Paketverwaltung rpm wurde ursprünglich als Red Hat Packet Management bezeichnet, Skript zur Prüfung der Installation da sie von Red Hat entwickelt wurde. Da rpm aber ein Teil der Linux Standard Base wer- E Clean den wollte, wurde das Projekt einfach in ein rekursives Akronym umbenannt: RPM Packet Befehle, die auf dem Entwicklerrechner ausgeführt werden sollen Management. Die Dateinamen der rpm-Pakete haben folgende Konvention: Das Ziel vom rpm bestand darin, Softwarepakete sowohl für Entwickler als auch für den --..rpm Anwender einfacher zu gestalten. Abhängigkeiten sollten berücksichtigt und automatisch Listing 6.1 Schema der »rpm«-Paketdateinamen aufgelöst werden, Redundanzen sollten vermieden, und das saubere Entfernen von Software sollte möglich gemacht werden. Ebenso sollte das Einspielen von Updates einfacher gestaltet »deb« werden, ebenso wie das sichere Verwalten von Konfigurationen. Die Paketverwaltung deb wurde von Ian Murdock entwickelt. Die Bezeichnung deb bezieht 1999 kam es zur Zweiteilung von rpm, da der Hauptentwickler Jeff Johnson Red Hat verließ sich hierbei auf die ersten drei Buchstaben der Linux-Distribution Debian.DieZielsetzung und einen Fork des Projekts startete. Jetzt gibt es zwei rpm-Versionen: zum einen das in von deb entspricht der von rpm, allerdings sind beide nicht miteinander kompatibel. Hierfür SUSE, Red Hat, Fedora und vielen anderen Distributionen verwendete rpm von rpm.org,zum

190 191

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 190 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 191 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.1 Paketverwaltung

gibt es aber Konvertierungstools, die es erlauben, Pakete für die jeweils andere Paketverwal- Ubuntu- und Debian-Pakete sind zum Teil binärkompatibel, sodass Debian-Pakete auch un- tung nutzbar zu machen. ter einigen Ubuntu-Versionen lauffähig sind. Ebenso gilt dies für Red Hat und SUSE.

Ein deb-Paket setzt sich aus folgenden Abschnitten zusammen: Die Bedienung der einzelnen Tools unterscheidet sich erheblich voneinander. Die Debian- basierte Variante ist eine Suite mit mehreren Anwendungen, die jeweils eine Anwendung E debian-binary für spezielle Aufgaben zur Verfügung stellt. Die Red-Hat-Variante kommt hingegen mit Textdatei mit Angabe der Versionsnummer des verwendeten Paketformats nur einem Programm aus, und die SUSE-Variante yast kann sowohl als Kommandozeilen- E control 6 tool als auch im ASCII-Menü gesteuert werden, wobei ab openSUSE 10.2 das zusätzliche Tool enthält alle relevanten Informationen des Pakets, die in eigenen Dateien verwaltet wer- zypper parallel zu yast eingesetzt werden kann. den. Die folgenden Dateien sind immer vorhanden: Neben den von den Distributionen ausgelieferten Programmen können auch unabhängige – control eingesetzt werden. Hier ist vor allem das Tool smart erwähnenswert, das sich selbst als »der Kurzbeschreibung des Pakets und Auflistung der Abhängigkeiten Paketmanager« bezeichnet. Auf der Projektseite http://labix.org/smart erhalten Sie weitere – md5sums Informationen zum Einsatz des von Gustavo Niemeyer entwickelten Tools. Prüfsummen der enthaltenen Dateien Einen Auszug der Befehle zur Bedienung der einzelnen Tools auf der Kommandozeile ent- – conffiles nehmen Sie Tabelle 6.1 für die Paketverwaltung und Tabelle 6.2 für lokalen Pakete. Auflistung der Konfigurationsdateien im Paket – preinst, postinst, prerm, postrm Aktion RHEL SLES Debian/Ubuntu Skripte, die vor oder nach der Installation/Deinstallation ausgeführt werden – config Paket installieren yum install yast -i apt-get install ein debconf-Skript, das Metainformationen für die debconf-Datenbank enthält zypper install

– shlibs Paket deinstallieren yum remove yast --remove apt-get remove Auflistung der Programmbibliotheken zypper remove E data Paketinformationen abfragen yum info zypper info apt-cache showpkg Archiv der enthaltenen Programmdaten Paket zur Datei suchen yum provides – apt-file search Auch hier gibt es eine zentrale Datei, die für das Paket verantwortlich ist: control.Inihrsind sowohl alle Metainformationen zum Paket enthalten als auch die Installationsanweisungen. Alle installierten Pakete yum list * – – anzeigen Dateinamen von deb-Paketen folgen einer definierten Syntax:

_-_.deb Tabelle 6.1 Auszug: Kommandozeilenbefehle für Repositorys Listing 6.2 Schema der »deb«-Paketdateinamen

Aktion RHEL SLES Debian/Ubuntu 6.1.2 »yum«, »yast« oder »apt«? Paket installieren yum install rpm -i dpkg -i Wie bereits erläutert besteht eine Paketverwaltung nicht allein aus einem Programm. Zu Paket deinstallieren yum remove rpm -e dpkg -r ihr gehört immer (mindestens) ein Tool, das sich um das Laden der Software, das Auflösen von Abhängigkeiten und die Beseitigung von Konflikten kümmert. Jede Distribution besitzt Paketinformationen abfragen yum info rpm -qi dpkg -p eine eigene Umsetzung. So findet yum auf Red-Hat-basierten Systemen Anwendung, yast auf SUSE-basierten und apt auf Debian-basierten. Wenn Distributionen binärkompatibel Tabelle 6.2 Auszug: Kommandozeilenbefehle für lokale Pakete miteinander sind, können Sie auch Pakete aus der jeweils anderen Distribution installieren.

192 193

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 192 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 193 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

Aktion RHEL SLES Debian/Ubuntu Speicherort installierter Pakete Installierte Pakete auf Systemen mit deb-Paketverwaltung finden Sie im Verzeichnis Paket zur Datei suchen yum provides rpm -qf – /var/cache/apt/archives/. Bei SLES11 finden Sie die installierten Pakete unter /var/cache/zypp/ packages/:/rpm/. Alle installierten Pakete yum list * rpm -qa dpkg -l anzeigen 6 Tabelle 6.2 Auszug: Kommandozeilenbefehle für lokale Pakete (Forts.) FallsSieeinPaketaufdemSystemkonvertieren,aufdemdieSoftwareinstalliertwerdensoll, können Sie diese mit dem Schalter -i auch direkt von installieren lassen. root@example:/# alien -i 6.1.3 Außerirdische an Bord – »alien« Listing 6.5 Direkte Installation Es gibt Software, die nur in einer Paketform angeboten wird und nicht als Quellcode zur Verfügung steht. Um diese Software auf dem eigenen System betreiben zu können, muss das Paket umgewandelt werden. Hier eilt Ihnen alien zur Hilfe. Das ursprünglich von Debian- 6.2 Pakete im Eigenbau Entwickler Christoph Lameter geschriebene Tool konvertiert Pakete in die Formate rpm, deb, slp (Stampedes), tgz (Slackwares) und pkg (Solaris). Neben der Vielzahl an Software, die über die Repositorys bezogen werden kann, gibt es auch Die Installation von alien setzt viele weitere Pakete voraus, unter anderem auch die Kom- Software, die lediglich als Quellcode zur Verfügung steht. Um solche Programme auf Ihrem System betreiben zu können, müssen sie kompiliert werden. Hierfür verwenden Sie den pilierungsprogramme (gcc, make etc.). Auf Systemen, die auf Debian basieren, können Sie Ihnen vermutlich bereits bekannten Dreisprung: alien aus den Paketquellen installieren. Leider ist alien in SLES11 nicht enthalten. daniel@example:/usr/local/packet# ./configure LadenSiedenaktuellenQuellcodeunterhttp://packages.debian.org/unstable/source/alien daniel@example:/usr/local/packet# make herunter, und führen Sie nach dem Entpacken wie in der enthaltenen Datei INSTALL be- daniel@example:/usr/local/packet# make install schrieben die folgenden Befehle aus: Listing 6.6 Kompilierung im Dreisprung daniel@example:/usr/local/alien# perl MakeFiles.pl root@example:/usr/local/alien# make Dies ist natürlich eine adäquate Möglichkeit, Software auf »einem« System zu verwenden. root@example:/usr/local/alien# make install Wenn Sie aber mehrere Systeme der gleichen Architektur mit dem gleichen Betriebssystem Listing 6.3 »alien« aus dem Quellcode installieren verwenden,könnenSiedenQuellcodeauchineinPaketschnüren,umsodieSoftwareein- fach zu verteilen, eine Update-Sicherheit zu erzeugen oder auch Patches effektiv zu verteilen. Oder erzeugen Sie auf einem Debian-basierten System einfach ein rpm-Paket mittels alien. In diesem Abschnitt erfahren Sie alles zu Paketen: wie Sie diese aus einem tarball3 erzeugen, Laden Sie dafür die entsprechende deb-Datei herunter. Falls Sie ein Paket konvertieren wol- wie Sie Patches einspielen und wie Sie Update-Pakete erstellen. len, das bereits installiert ist, finden Sie die deb-Datei unter /var/cache/apt/archives.Wenden Sie alien nun mit dem Schalter -r (oder -to-rpm)an: root@example:/var/cache/apt-/archives# alien -r alien_8.79ubuntu0.1_all.deb 6.2.1 Am Anfang war das Makefile alien-8.79ubuntu0.1-2.noarch.rpm generated Software, die nicht in den Repositorys zur Verfügung steht, wird in der Regel von den Ent- Listing 6.4 Umwandeln von »deb« zu »rpm« wicklern als tgz oder auch tar.gz-Datei zur Verfügung gestellt. Aus dieser entpacken Sie den Quellcode und kompilieren dann das Programm. Um selbst geschriebene Software so zur alien erzeugt nun die Datei alien-8.79ubuntu0.1-2.noarch.rpm. Wie Sie dem neuen Dateinamen Verfügung zu stellen, muss diese erst mal in die richtige Form gebracht werden. Dazu dient entnehmen können, wurde auch die Versionsnummer angepasst. Falls Sie die eigentliche das Makefile,aufdasdasconfigure-Skript zugreift, das das Programm entsprechend Ihrem Versionsnummer des Pakets behalten wollen, verwenden Sie den Schalter -k beim Aufruf von alien.

3 tarball (tape archive ball) – Archivformat, in dem oft Quellcode ausgeliefert wird.

194 195

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 194 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 195 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

System verarbeitet. Im Grunde genommen sind Makefiles nichts weiter als Textdateien, in Das soeben erstellte Programm dient als zu verpackende Basis. Erstellen Sie nun die Datei denen der Übersetzungsprozess von Programmen formalisiert enthalten ist. Darüber hinaus Makefile.am mit folgendem Inhalt: stellt das Makefile eine Intelligenz zur Verfügung, die bereits vorhandene und kompilierte bin_PROGRAMS = helloworld Abhängigkeiten, oder bei Updates auch eigenen Code, erkennt und diese nicht erneut kom- helloworld_SOURCES = helloworld.c piliert. Listing 6.8 »Makefile.am« Das Erstellen eines solchen Makefiles von Hand kann bei größeren Projekten mit vielen Ab- 6 hängigkeiten schnell in unüberschaubare Arbeit ausarten. Um effizient Makefiles zu erstel- Die Datei Makefile.am wird von den autotools ausgewertet. In ihr wird der Name des Pro- len, gibt es die »GNU autotools«, die Ihnen die Arbeit zu einem Großteil abnehmen. Folgende gramms (bin _PROGRAMS) und dessen Quellcode (helloworld_SOURCES) deklariert. Bei größeren Arbeitsschritte müssen Sie durchlaufen, um ein eigenes tgz zu erstellen: Projekten werden hier alle programmrelevanten Dateien aufgeführt und auch alle Bibliothe- ken. Führen Sie nun autoscan aus. Dieses Programm analysiert die Makefile.am und ihren 1. Quellcode erstellen Quellcode. Es erstellt die Datei configure.scan, die als Basis zur Erstellung der configure.in 2. Makefile.am erstellen dient: 3. autoscan – configure.scan nach configure.in # -*- Autoconf -*- 4. aclocal – Anpassung für die Sprachumgebung # Process this file with autoconf to produce a configure script. 5. autoconf – Verarbeitung von Konfigurationsdateien AC_PREREQ([2.65]) 6. autoheader – Verarbeitung von zusätzlichem Quellcode AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS]) 7. automake – Erzeugen des Makefiles AC_CONFIG_SRCDIR([hello.c]) In diesem Abschnitt zeigen wir Ihnen, wie Sie das allseits beliebte Programm »helloworld« AC_CONFIG_HEADERS([config.h]) von seinem C-Code-Dasein befreien und als tgz-Datei zur Verfügung stellen. # Checks for programs. Erstellen Sie zunächst ein Verzeichnis hello-1.0 in Ihrem Homeverzeichnis. In diesem Ver- AC_PROG_CC zeichnis erstellen Sie das helloworld.c-Programm mit folgendem Quellcode: /* Simple "Hello World!" program in C */ # Checks for libraries. #include main() # Checks for header files. { printf("Hello world! Once again... \n"); # Checks for typedefs, structures, and compiler characteristics. } # Checks for library functions. Listing 6.7 »helloworld.c« AC_CONFIG_FILES([Makefile]) AC_OUTPUT Erstellung als Benutzer Die Erstellung von Paketen (tgz, rpm oder deb) sollte immer als normaler Benutzer ausgeführt Listing 6.9 »configure.scan« werden. Da »root« Vollzugriff auf alle Dateien hat, könnten während der Installation eines Benennen Sie die Datei entsprechend um, und passen Sie die Parameter dem hello- von ihm erstellten Pakets Dateien überschrieben oder gelöscht werden, die auf dem System world.c-Programm an: benötigt werden. AC_PREREQ(2.59) Die Installation des gepackten Programms selbst muss hingegen von »root« durchgeführt AC_INIT([helloworld], [1.0], [[email protected]]) werden, da Benutzern die entsprechenden Rechte fehlen. AM_INIT_AUTOMAKE([1.9 foreign]) AC_PROG_CC

196 197

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 196 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 197 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

AC_CONFIG_FILES([Makefile]) checkinstall von Felipe Eduardo Sanchez Diaz Duran. Es ist in der Lage, aus vorliegendem AC_OUTPUT tar.gz-Quellcode paketverwaltungstaugliche Pakete des Typs deb (Debian/Ubuntu), rpm (Red Listing 6.10 »configure.in« Hat/SUSE) und tgz () zu erstellen. Auf der Projektseite http://checkinstall.izto.org erfahren Sie aktuelle Neuigkeiten zum Projekt. Achten Sie darauf, die Zeile AC_CONFIG_HEADERS([config.h]) zu entfernen, da unser Pro- Wenn Sie keine Software mit pre- und post-install-Skripten verwenden, was zum Beispiel bei gramm keine Header-Datei besitzt. Da Sie weiter mit den autotools arbeiten, müssen Sie die Kernelmodulen sehr oft der Fall ist, können Sie mit checkinstall bequem Pakete erstellen. 6 dritte Zeile hinzufügen, die von autoscan nicht erstellt wurde. Führen Sie anschließend die Befehle aclocal und autoconf aus. Diese ergänzen und erweitern die Struktur des tgz. Installieren Sie checkinstall aus den Repositorys. Leider ist es in SLES11 nicht enthalten, kom- pilieren Sie daher für SLES11 den Quellcode von der Projektseite, oder laden Sie das fertige Führen Sie nun autoheader aus, das mit einer Fehlermeldung endet. RPM-Paket in der Version 1.6.1 von der binärkompatiblen Distribution »openSUSE 11.2« her- daniel@example:/home/daniel/hello-1.0# autoheader unter. autoheader: error: AC_CONFIG_HEADERS not found in configure.in EntpackenSiedenQuellcode,denSieineinPaketumwandelnwollen,ausdemtarball,und Listing 6.11 Fehlermeldung: »autoheader« führen Sie anschließend das Kommando checkinstall aus. Wir verwenden hierfür wieder das erstellte hello-1.0.tar.gz. Obwohl der Befehl eine Fehlermeldung ausgibt, nimmt er wichtige Konfigurationen vor. Anschließend beenden Sie die Verarbeitung mit automake,dasnebendemconfigure-Skript daniel@example:~# tar -xsvf hello-1.0.tar.gz das passende Makefile erzeugt. daniel@example:~# cd hello-1.0 daniel@example:~/hello-1.0# sudo checkinstall -D daniel@example:/home/daniel/hello-1.0# automake --add-missing Listing 6.15 Entpacken des »tarball« und starten von »checkinstall« Listing 6.12 Fehlende Dateien ergänzen Der Parameter -D gibt an, dass ein deb-Paket erzeugt werden soll. Anschließend prüft check- Der Parameter -add-missing gibt an, dass automake fehlende Standarddateien hinzufügen install den vorliegenden Quellcode und stellt Ihnen ein paar Fragen zum Paket. soll. Jetzt stehen Ihnen alle benötigten Dateien zur Verfügung. Packen Sie diese mittels tar checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran in ein Archiv, das Sie auf jedem System entpacken und kompilieren können. Diese Software wurde unter der GNU GPL veröffentlicht daniel@example:/home/daniel/# tar -cavf hello-1.0.tar.gz hello-1.0/ Listing 6.13 Ein »tar«-Archiv erstellen The package documentation directory ./doc-pak does not exist. Should I create a default set of package docs? [y]: Nach dem bekannten Dreisprung können Sie das Programm einfach über den Befehl hello- Listing 6.16 Rückfrage: Paketdokumentation world aufrufen und erhalten die erwartete Ausgabe. daniel@example:~# helloworld Paketverwaltungen erwarten für jedes Paket eine Dokumentation. Da in unserem selbst Hello World! Once again ... erstellten Programm keine vorhanden ist, fragt checkinstall nach,obeseineleereDoku- mentation für uns erstellen soll. Bestätigen Sie dies mit der Eingabe von (Y). Listing 6.14 Test der Installation Anschließend fragt checkinstall nach einer Beschreibung für das Paket. Beachten Sie, dass der Befehl make install beim Dreisprung immer als root ausgeführt Bitte geben Sie eine Beschreibung für das Paket ein. werden muss! Beenden Sie Ihre Beschreibung mit einer leeren Zeile oder EOF. >> Easy to use "helloworld" Programm written in C. >> 6.2.2 Vom Fellknäuel zum Paket Listing 6.17 Angabe der Paketbeschreibung Eine noch elegantere Variante, um das Programm helloworld zur Verfügung zu stellen, besteht darin, es in ein rpm- oder deb-Paket zu hüllen. Hierfür verwenden Sie das Tool Geben Sie eine passende Beschreibung des Pakets an.

198 199

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 198 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 199 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

Wenn Sie das Paket veröffentlichen wollen, sollten Sie diese Beschreibung in Englisch ver- ======Installation erfolgreich ======fassen, da Ihr Paket ansonsten vermutlich von der Paketverwaltung nicht akzeptiert wird. Kopiere Dateien in das temporäre Verzeichnis...OK

Abschließend gibt checkinstall eine Übersicht über die Paketparameter aus und gibt Ihnen Stripping ELF binaries and libraries... OK die Möglichkeit, diese nochmals zu verändern.

***************************************** Komprimiere man-Seiten...OK **** Debian package creation selected *** 6 ***************************************** Erzeuge Datei-Liste...OK

Das Paket wird entsprechend dieser Vorgaben erstellt: Erstelle Debian-Paket...OK

0 - Maintainer: [ [email protected] ] Installiere Debian-Paket...OK 1 - Summary: [ Easy to use "helloworld" Programm written in C. ] 2 - Name: [ hello ] Lösche temporäre Dateien...OK 3 - Version: [ 1.0 ] 4 - Release: [ 1 ] Schreibe Sicherungs-Paket...OK 5 - License: [ GPL ] 6 - Group: [ checkinstall ] Lösche temporäres Verzeichnis...OK 7 - Architecture: [ i386 ] 8 - Source location: [ hello-1.0 ] ********************************************************************** 9 - Alternate source location: [ ] 10 - Requires: [ ] Done. The new package has been installed and saved to 11 - Provides: [ hello ] /home/daniel/hello-1.0/hello_1.0-1_i386.deb Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: You can remove it from your system anytime using: Listing 6.18 Letzte Kontrolle der Paketparameter: »deb«

dpkg -r hello Wie Sie Listing 6.18 entnehmen können, wurde als E-Mail-Adresse des Maintainers4 einfach root@ von checkinstall gewählt. Passen Sie diese an, und fahren Sie mit der Eingabe ********************************************************************** von (Ð) fort. Listing 6.19 Paketierung Abschließend führt checkinstall die Paketierung aus.

======Installations-Ergebnisse ======Nun steht Ihnen das deb-Paket hello_1.0-1_i386.deb zur Verfügung. Die Erzeugung eines make[1]: Betrete Verzeichnis ’/home/daniel/hello-c/hello-1.0’ rpm-Pakets läuft äquivalent. Lediglich die in Listing 6.18 dargestellte Ausgabe fällt aufgrund test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin" der unterschiedlichen Paketverwaltungen entsprechend anders aus: /usr/bin/install -c hello ’/usr/local/bin’ ************************************** make[1]: Für das Ziel »install-data-am« ist nichts zu tun. **** RPM package creation selected *** make[1]: Verlasse Verzeichnis ’/home/daniel/hello-c/hello-1.0’ **************************************

This package will be built according to these values:

1 - Summary: [ Easy to use "helloworld" Programm written in C. ] 4 Maintainer (engl. »to maintain«, dt. »instandhalten«) – beschreibt den Autor des distributions- spezifischen Pakets.

200 201

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 200 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 201 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

2 - Name: [ hello ] Die Schalter -Naur weisen diff an, die Unterschiede der datei01.txt zur datei02.txt vollständig 3 - Version: [ 1.0 ] zu ermitteln und im C-Format darzustellen. Die Ausgabe wird in die Datei datei01.patch 4 - Release: [ 1 ] geschrieben, die folgenden Inhalt hat: 5 - License: [ GPL ] --- datei01.txt 2014-07-11 12:22:56.019985049 +0100 6 - Group: [ Applications/System ] +++ datei02.txt 2014-07-11 12:27:22.643985051 +0100 7 - Architecture: [ i386 ] @@ -1,3 +1,4 @@ 8 - Source location: [ hello-1.0 ] 6 -Ein einfaches Beispiel, 9 - Alternate source location: [ ] -das die Funktionsweise von 10 - Requires: [ ] +Ein einfaches BEISPIEl, 11 - Provides: [ hello ] +das die Funktionsweise +des gut funktionierenden Programm Geben Sie die betreffende Nummer ein, um die Vorgaben zu ändern: 'diff' darstellen soll. Listing 6.20 Letzte Kontrolle der Paketparameter: »rpm« Listing 6.22 Diff der »datei01.txt« zu »datei02.txt«

6.2.3 Patchen mit »patch« und »diff« In den ersten beiden Zeilen werden die Ursprungsdateien definiert. Durch die doppelten Plus- und Minuszeichen wird angegeben, von welcher zu welcher Datei der diff erstellt wur- Das klassische Patchen von Software, das Sicherheitslücken oder Bugs behebt, findet heut- de. Die dritte Zeile, die von At-Zeichen (@) umgeben ist, zeigt an, wo sich der entsprechende zutage kaum noch Anwendung. In den meisten Fällen werden Updates binnen kürzester Zeit Block in beiden Dateien befindet und, durch ein Komma getrennt, wie lang er in der jewei- als Paket angeboten und sogar in die Repositorys übernommen. ligen Datei ist. Anschließend folgen die Zeilen, die durch Symbole kategorisiert sind. Das Dennoch gibt es Patches, die eventuelle Verbesserungen mit sich bringen oder sogar in Pa- Programm diff kennt drei Kategorien: keten enthalten sind. Letzteres tritt oft ein, wenn der Maintainer nicht das ganze Paket neu E Hinzugefügte Zeilen erstellt hat, sondern lediglich das Update in Form eines Patches hinzugefügt hat. Ein Patch voranstehendes Pluszeichen (+) besteht aus einer diff-Datei. Das Programm diff erstellt eine Übersicht über die Unterschie- E Gelöschte Zeilen de zweier Dateien. Diese wird in einer speziellen Syntax dargestellt, sodass hinzugefügte, voranstehendes Minuszeichen (–) gelöschte oder veränderte Zeilen separat dargestellt werden. E Nicht veränderte Zeilen Für ein einfaches Beispiel erstellen Sie zwei Textdateien, wie sie in Tabelle 6.3 gezeigt werden. ohne voranstehendes Zeichen

In einer diff-Datei können auch mehrere Dateien und deren Veränderungen aufgelistet sein. datei01.txt datei02.txt In ihr wird nie der gesamte Inhalt einer Datei aufgelistet, sondern lediglich die Veränderun- Ein einfaches Beispiel, Ein einfaches BEISPIEl, gen und deren direkte Umgebung. Daher kann die dritte Zeile des Beispiels auch mehrfach das die Funktionsweise von das die Funktionsweise vorkommen und somit mehrere geänderte Blöcke einer Datei referenzieren. Diese Dateien 'diff' darstellen soll. des gut funktionierenden Programm bilden die Grundlage eines Patches. Das Programm patch wird angewandt, um diese Verän- 'diff' darstellen soll. derungen einzuspielen. Der Standardaufruf von patch lautet:

Tabelle 6.3 Ausgangsdateien root@example:~# patch -Np0 -i datei01.patch Listing 6.23 Patch einspielen Erstellen Sie einen diff der Dateien über den nachstehenden Befehl:

daniel@example:~# diff -Naur datei01.txt datei02.txt > datei01.patch Das Programm spielt nun die Änderungen aus der Datei datei01.patch ein. Der Schalter -N gibt dabei an, dass die Richtung aus der diff-Datei verwendet werden soll. Der Schalter p0 Listing 6.21 »diff«-Erzeugung weist patch an, die Verzeichnisstruktur ab dem Level »0« anzuwenden, und der Schalter -i verlangt die Patch-Datei.

202 203

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 202 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 203 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

Software-Patches werden meist mit einer Verzeichnisstruktur erzeugt. Erstellen Sie folgende 6.2.4 Updates ohne Repository Verzeichnisstruktur: Oft ist es sinnvoll, Software, die als Update nur im Quellcode vorliegt, aber noch nicht in build/ den Repositorys vorhanden ist, in ein Paket zu schnüren. Somit können Sie eine Update- |-- orig Sicherheit gewährleisten, diese Software auf mehreren Systemen der gleichen Architektur | `-- datei.txt verteilen oder Patches schnell auf allen Systemen Ihres Umfelds einspielen. Gerade in `-- orig.patch 5 LTS -Distributionen sind oft veraltete Pakete enthalten. 6 `-- datei.txt Der einfachste Weg, solche Update-Pakete zu erstellen, besteht darin, die »alte« Paketversion Listing 6.24 Patch-Verzeichnisstruktur zu installieren und dem Paket quasi den neuen Quellcode unterzuschieben. Kopieren Sie anschließend die datei01.txt nach build/orig/datei.txt und die Datei datei02.txt nach build/orig.patch/datei.txt, und stellen Sie deren ursprünglichen Inhalt wieder her. Abhängigkeiten ErstellenSienundenneuendiff mit folgendem Befehl: Unter Umständen sind neue Softwareversionen nicht mehr mit vorhandenen Programm- daniel@example:~# diff -Naur build/orig/datei.txt \ bibliotheken kompatibel. Dadurch kann es bei der Erstellung eines Update-Pakets zu Fehlern build/orig.patch/datei.txt > datei.patch kommen. In einigen Fällen reicht es, die Abhängigkeiten innerhalb des Pakets auf die »alten Versionen« hin anzupassen. Listing 6.25 Neue Patch-Datei erstellen

Spielen Sie den angelegten Patch ein: Als Beispiel für das Erstellen eines Update-Pakets nehmen wir den Very Secure FTP Daemon daniel@example:~# patch -Np0 -i datei.patch (vsftpd). Dieser wurde von den Entwicklern in der Version 2.3.2 im August 2010 als Quellcode patching file build/orig/datei.txt zur Verfügung gestellt. In einer Ubuntu 10.04 LTS ist der vsftpd lediglich in der Version 2.2.2 Listing 6.26 Patch-Datei einspielen enthalten, in einem SLES11 und einem Debian 5 sogar nur in der Version 2.0.7.

Die Datei orig/datei.txt entspricht jetzt der Datei patch/datei.txt. Die Besonderheit des Para- meters p0 wird im nächsten Beispiel deutlich. Hier wird der gleiche Patch erneut eingespielt, 6.2.5 »rpm«-Update-Paket diesmal aber von einer tieferen Verzeichnisebene aus: Installieren Sie folgende Pakete, um rpm-Pakete erstellen zu können:

daniel@example:~/build# patch -Np1 -i ../datei.patch E gcc patching file orig/datei.txt E kernel-source Listing 6.27 Patch-Datei aus tieferer Verzeichnisebene einspielen Für das vorliegende Beispiel vsftpd müssen zusätzlich folgende Pakete installiert werden:

Da sich die Verzeichnisstruktur fest in der Patch-Datei befindet, muss patch über den Para- E libopenssl-devel meter 1 angewiesen werden, den Pfad um den ersten Teil der Verzeichnisstruktur zu kürzen, E pam-devel damit die Dateien auch gefunden werden. Anderenfalls würde patch mit einer Fehlermel- E libcap-devel dung abbrechen. Diese sind leider nicht Bestandteil von SLES11. Um diese trotzdem zu installieren, erweitern Sie die Repositorys um den Zweig von openSUSE 11.2, der binärkompatibel mit dem SLES11 Länge der Pfade SP1 ist. Ebenso benötigen Sie die Quellpakete, die die Endung src.rpm (source-rpm) haben. Das Programm patch prüft vor jedem Durchlauf, ob bereits ein Patch eingespielt wurde. Dies Diese können Sie über zypper installieren. kann Ihnen zum Verhängnis werden. Das Programm setzt voraus, dass der Pfad zur »neuen« Datei länger ist als der zur »alten«. Beachten Sie dies nicht, wird der erstellte diff nicht von patch eingespielt. 5 Long Time Support,engl.fürLangzeitunterstützung.

204 205

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 204 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 205 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

daniel@example:~# sudo zypper source-install vsftpd vsftpd-2.0.4-dmapi.patch vsftpd-2.0.5-utf8-log-names.patch Listing 6.28 Installation des Quellpakets »zypper« vsftpd.logrotate vsftpd-2.0.4-enable-ssl.patch vsftpd-2.0.5-vuser.patch vsftpd.pam vsftpd-2.0.4-lib64.diff vsftpd-2.2.2.tar.bz2 Paketsuche vsftpd.xml Falls Sie Software nicht in den Repositorys finden, dann sollten Sie einen kurzen Blick auf Listing 6.30 Dateiauflistung von »SOURCE« http://software.opensuse.org werfen. Dort finden Sie viele Pakete, die in den Repositorys nicht 6 vorhanden sind. Neben den Patch-Dateien mit der Endung patch und diff,denKontroll-,Konfigurations- und Dokumentationsdateien ist dort auch der eigentliche Quellcode des Pakets in der Datei vsftpd-2.2.2.tar.bz2 abgelegt. Quellpakete gehören bei rpm nicht zur Paketverwaltung und werden dementsprechend Da aus dem vorhandenen Paket ein Update-Paket erstellt wird, muss der Quellcode der auch nicht in der rpm-Datenbank gelistet. Der Inhalt des Pakets wird in das Verzeichnis Version 2.3.2 entsprechend angepasst werden. Da der Quellcode von den Entwicklern als /usr/src/packages installiert. tar.gz-Datei zur Verfügung gestellt wird und nicht als tar.bz2, wie es der Maintainer des SUSE- Dort finden Sie den sogenannten build-tree. Pakets vorzieht, muss das tar.gz entpackt und anschließend entsprechend neu gepackt im daniel@example:~# tree /usr/src/packages/ SOURCE-Ordner abgelegt werden. Führen Sie hierfür die nachstehenden Befehle aus: /usr/src/packages/ daniel@example:~# tar -xsvf vsftpd-2.3.2.tar.gz |-- BUILD ... |-- RPMS daniel@example:~# tar -cavf vsftpd-2.3.2.tar.bz2 vsftpd-2.3.2/ | |-- athlon ... | |-- geode daniel@example:~# mv vsftpd-2.3.2.tar.bz2 /usr/src/packages/SOURCE/ | |-- i386 | |-- i486 Listing 6.31 Umpacken des Quellcodes | |-- i586 | |-- i686 Die SPEC-Datei, die die zentrale Konfigurationsdatei des Pakets darstellt, finden Sie unter | `-- noarch /usr/src/packages/SPEC/vsftpd.spec. Diese muss an die neue Version angepasst werden. Än- |-- SOURCES dern Sie dafür die Versionsnummer in den folgenden Zeilen auf »2.3.2«. | # spec file for package vsftpd (Version 2.3.2) |-- SPECS ... | Version: 2.3.2 `-- SRPMS ... Listing 6.29 Verzeichnisstruktur »build-tree« Listing 6.32 Auszug »vsftpd.spec«

Allen rpm-Paketen, die erstellt werden, liegt diese Verzeichnisstruktur zugrunde. Das Pro- Erstellen Sie darüber hinaus einen Eintrag im ChangeLog. gramm rpmbuild, das das eigentliche Erstellen übernimmt, verlangt, dass der Quellcode und die zum Erstellen notwendige SPEC-Datei sich in dieser Verzeichnisstruktur befinden. Der %changelog Quellcode befindet sich im Ordner SOURCE. * Tue Sep 09 2010 [email protected] - Update to version 2.3.2 daniel@example:/usr/src/packages/SOURCE# ls Listing 6.33 Anpassung des »ChangeLog« in der »vsftpd.spec« README.SUSE vsftpd-2.0.4-xinetd.diff vsftpd.firewall vsftpd-2.0.4-conf.diff Anschließend wird das Update-Paket mittels rpmbuild erstellt. vsftpd-2.0.5-enable-debuginfo.patch vsftpd.ini

206 207

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 206 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 207 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.2 Pakete im Eigenbau

daniel@example:~# sudo rpmbuild -bb /usr/src/packages/SPECS/vsftpd.spec Nun können wir den »neuen« Quellcode dem »alten« Paket hinzufügen. Aktualisieren Sie Listing 6.34 Umpacken des Quellcodes den Quellcode mittels uupdate, das Sie im Verzeichnis des alten Quellcodes (/usr/mydebs/ vsftpd-2.2.2) ausführen. Da der Quellcode kompiliert und installiert wird, muss das Erstellen des rpm-Pakets mittels daniel@example:~/vsftpd-2.2.2# uupdate -u ../vsftpd-2.3.2.tar.gz rpmbuild als root ausgeführt werden. New Release will be 2.3.2-0ubuntu1. Symlinking to pristine source from vsftpd_2.3.2.orig.tar.gz... Der Parameter -bb weist rpmbuild an, ein binäres Paket zu erzeugen. Dieses wird im build-tree 6 unter RPMS im Verzeichnis der entsprechenden Architektur abgelegt. -- Untarring the new sourcecode archive ../vsftpd-2.3.2.tar.gz Success! The diffs from version 2.2.2-3ubuntu6 worked fine. daniel@example:~# ls /usr/src/packages/RPMS/i586/ Remember: Your current directory is the OLD sourcearchive! vsftpd-2.3.2-7.1.i586.rpm Do a "cd ../vsftpd-2.3.2" to see the new package Listing 6.35 Erstelltes »rpm«-Paket Listing 6.39 Aktualisierung des Quellcodes

Installieren Sie das neu erstellte Paket wie gewohnt, um den vsftpd in der aktuellen Version Nun wurde dem »alten« Paket der neue Quellcode untergeschoben. Modifizieren Sie nun zu betreiben. noch die Versionsnummer in der Datei /usr/mydebs/vsftpd-2.3.2/debian/control.ErhöhenSie root@example:~# rpm -i /usr/src/packages/RPMS/i586/vsftpd-2.3.2-7.1.i586.rpm den Wert von »Standards-Version: 3.8.3« um 1 auf »3.8.4«, da ansonsten das Erstellen des Listing 6.36 Installation Pakets fehlschlägt. Erstellen Sie nun ein Binärpaket mittels debuild: daniel@example:~/vsftpd/vsftpd-2.2.3# debuild -i -us -uc -b

6.2.6 »deb«-Update-Pakete Listing 6.40 Paket erstellen

Installieren Sie folgende Pakete, um deb-Pakete erzeugen zu können: Unter /home/vsftpd/ finden Sie das neu erstellte Paket vsftpd_2.3.2-0ubuntu1_ E devscripts i386.deb,dasSiemitdpkg -i wie gewohnt installieren können. E build-essential

Laden Sie zunächst das Quellpaket des vsftpd herunter: 6.2.7 Updatesicher konfigurieren

daniel@example:~/vsftpd# sudo apt-get source vsftpd Zu den Nachteilen einer Paketverwaltung gehört, dass sie als root ausgeführt wird und somit Vollzugriff auf alle Dateien haben kann. So kann es vorkommen, dass beim Aktualisieren von Listing 6.37 Herunterladen des vorhandenen Quellcodes mittels »apt-get« Paketen vorhandene Konfigurationsdateien überschrieben werden.

Dieses Paket dient als Basis, in die der aktuelle Quellcode eingespielt wird. Beachten Sie dabei, Ein weiterer Nachteil besteht darin, dass Abhängigkeiten von den Paketverwaltungen nur so dass Sie sich in einem leeren Verzeichnis befinden, da dort der Quellcode des Pakets instal- weit verarbeitet werden können, wie diese von den Maintainern gepflegt wurden. Diese Um- liert wird. Im Beispiel haben wir den Quellcode in das Verzeichnis /home//vsftpd stände führen teilweise zu Störungen, deren Ursache nicht leicht auffindbar ist. In diesem installiert. Laden Sie nun den aktuellen Quellcode (https://security.appspot.com/vsftpd.html) Abschnitt erfahren Sie, wie Sie den GAU vermeiden können. von der Projektseite, und speichern Sie diesen im Verzeichnis /home//vsftpd: daniel@example:~/vsftpd# ls -l Der »hold«-Status drwxr-xr-x 9 root root 4096 2010-09-04 16:49 vsftpd-2.2.2 Leider kommt es immer wieder vor, dass die Weiterentwicklung von Software länger dauert -rw-r--r-- 1 root root 23276 2010-04-16 00:06 vsftpd_2.2.2-3ubuntu6.diff.gz alsgeplant.DieskannzuKonfliktenführen. -rw-r--r-- 1 root root 1351 2010-04-16 00:06 vsftpd_2.2.2-3ubuntu6.dsc Die Entwicklung der Software Alpha steht still. Hingegen wird die Software Beta,vonder -rw-r--r-- 1 root root 185562 2010-01-05 17:04 vsftpd_2.2.2.orig.tar.gz -rw-r--r-- 1 root root 187229 2010-09-04 16:49 vsftpd-2.3.2.tar.gz Alpha abhängt, stetig weiterentwickelt. Wenn nun »alte« Funktionen aus der Software Beta nicht weiter in die »neuen« Versionen übernommen werden, kann die Software Alpha nicht Listing 6.38 Übersicht »vsftpd«

208 209

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 208 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 209 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.3 Updates nur einmal laden: »Cache«

mehr ordnungsgemäß arbeiten. Ein weiteres Beispiel stellen Funktionen dar, die von älteren »rpm« Versionen unterstützt werden, aber in neuen Versionen fehlen. Bei der Installation untersucht rpm, ob es Änderungen an der Konfigurationsdatei gibt. Je Eine Paketverwaltung löst solche Probleme meist auf und unterbindet das weitere Einspie- nachdem, wie das Paket erstellt wurde, wird Ihre aktuelle Konfigurationsdatei ersetzt und len von Updates für die entsprechende Software. Leider kommt es vor, dass Entwickler keine eine Sicherheitskopie erzeugt (Suffix: .rpmsave oder .rpmorig), oder Ihre Konfigurationsdatei Versionsangaben für abhängige Software einpflegen. Dann kommt es zum GAU.Umdie- bleibt bestehen, und die »neue« Konfigurationsdatei wird mit dem Suffix .rpmnew angelegt. sen zu verhindern, haben Sie die Möglichkeit, einzelne Pakete aus den Updates herauszu- 6 lösen, sodass die von Ihnen benötigte Software zwar im veralteten, aber dafür lauffähigen ».rpmsave«, ».rpmorig« und ».rpmnew« Zustand bleibt. Hierfür wurde in den deb-Paketverwaltungen der hold-status und unter der Kontrollieren Sie nach »großen« Updates, ob diese Dateien existieren, und passen Sie gegebe- rpm-Paketverwaltung der lock-status implementiert. nenfalls Ihre Konfiguration an! Unter deb-basierten Distributionen können Sie den Status von Paketen mittels dpkg -set- selections ändern. Setzen Sie folgenden Befehl ab, um den Status des Pakets vsftpd auf hold zu setzen: »deb« root@example:~# echo "vsftpd hold" | dpkg --set-selections Bei »deb«-basierten Systemen wird ein anderer Ansatz verfolgt. Hier wird ebenfalls geprüft, Listing 6.41 »deb«-Paket auf »hold« setzen ob eine lokale Konfigurationsdatei existiert. Wird mit dem »neuen« Paket eine Konfigurationsdatei ausgeliefert, wird Ihnen die Wahl UnterSLES11könnenSiedenStatuseinesrpm-Pakets mittels zypper addlock sperren. Das gelassen: Paket vsftpd sperren Sie mit folgendem Befehl: root@example:~# zypper addlock vsftpd Listing 6.42 »rpm«-Paket auf »hold« setzen

Eine Übersicht der in deb-Systemen auf hold gesetzten Pakete erhalten Sie über den folgen- den Befehl: root@example:~# dpkg --get-selections | grep hold vsftpd hold Listing 6.43 Übersicht gesperrter »deb«-Pakete

Ebenso können Sie sich auf rpm-Systemen die als gesperrt markierten Pakete anzeigen las- sen. Abbildung 6.1 Auswahl zur Änderung der Konfigurationsdatei »samba« root@example:~# zypper locks # | Name | Typ | Repository Falls dies nicht im Paket konfiguriert wurde, wird Ihre bisherige Konfigurationsdatei beibe- --+------+------+------halten. 1 | vsftpd | package | (beliebig) Listing 6.44 Übersicht gesperrter »rpm«-Pakete 6.3 Updates nur einmal laden: »Cache« Konfigurationsdateien Bandbreite ist Zeit, und Zeit ist kostbar. Es ist ärgerlich, wenn ein und dasselbe Update von Prüfen Sie die aktuellen Paketverwaltungen, ob Veränderungen an vorhandenen Konfigu- zehn (oder mehr) Ihrer Server Ihre Internetleitung minutenlang bis zum Anschlag füllt. Vor rationsdateien vorgenommen wurden, und legen Sie entsprechend Sicherungskopien an, allem dann, wenn es doch ausreichen würde, das Update einmal aus dem Internet herunter- sodass bei einem Update Ihre »alte« Konfiguration nicht blind überschrieben wird. zuladen und in Ihrem Netzwerk zu verteilen!

210 211

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 210 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 211 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.3 Updates nur einmal laden: »Cache«

6.3.1 deb-basierte Distributionen: »apt-cacher-ng« E CacheDir Verzeichnis, in dem der Cache abgelegt wird Der apt-cacher-ng stellt umfangreiche Funktionen zur Verfügung. Mit ihm können Sie einen effizienten Cache betreiben, er lässt multiple Zugriffe zu und bietet Ihnen auch noch Aus- E LogDir wertungsmöglichkeiten. Verzeichnis, in dem die Log-Dateien abgelegt werden E Port Definition des TCP-Ports, auf dem der Dienst lauscht (Standard: 3142) 6 6.3.2 Installation E ExTreshold Installieren Sie folgende Pakete aus den Paketquellen: Angabe in Tagen, ab wann ein nicht referenziertes Paket als abgelaufen betrachtet wird

E apt-cacher-ng Zusätzlich können Sie auch nachstehende Parameter konfigurieren:

Die benötigten Abhängigkeiten werden automatisch mit installiert. E Verbose, Debug, ForeGround Parameter zur Fehleranalyse 6.3.3 Konfiguration E offlinemode steuert das Verhalten, wenn keine Internetverbindung existiert Nach der Installation des Pakets apt-cacher-ng finden Sie unter /etc/apt-cacher-ng die gut E dokumentierte Konfigurationsdatei acng.conf des Dienstes. In der Standardkonfiguration StupidFs sind bereits einige Parameter gesetzt. steuert zusätzliche Maßnahmen, wenn der Cache auf einem NTFS- oder FAT-Dateisystem betrieben wird Listing 6.45 zeigt den Inhalt der Datei ohne die beschreibenden Kommentarzeilen. E Proxy CacheDir: /var/cache/apt-cacher-ng Darüber kann ein übergeordneter Proxy-Server angegeben werden, falls Ihr Server nicht LogDir: /var/log/apt-cacher-ng direkt mit dem Internet kommunizieren kann. Port:3142 Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives NebendiesendienstspezifischenKonfigurationenfindetdasRemapping über den Parameter Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives Remap- statt. In jeder Zeile wird definiert, für welche Anfragen eine entsprechende Datei Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol \ (Angabe nach dem Parameter file) geladen werden soll. In diesem Zusammenhang spricht # Debian Volatile Archives man auch von backends. Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin \ Wie Sie Listing 6.45 entnehmen können, sind neben den Ubuntu-Quellen auch direkt Debian, # incomplete, please create this file or specify preferred mirrors here cygwin, Arch-Linux, Fedora und weitere Quellen definiert. Zu der reinen Konfiguration des Remap-sfnet: file:sfnet_mirrors # ; file:backends_sfnet \ Remappings gehört aber noch eine jeweilige Datei, in der das eigentliche Mapping stattfin- # incomplete, please create this file or specify preferred mirrors here Remap-alxrep: file:archlx_mirrors /archlinux # ; file:backend_archlx \ det. Im Standard finden Sie bereits für Debian und Ubuntu entsprechende backends unter # Arch Linux /etc/apt-cacher-ng. Schauen wir uns diese für Ubuntu mal genauer an, wie in Listing 6.46 Remap-fedora: file:fedora_mirrors # Fedora Linux dargestellt: Remap-epel: file:epel_mirrors # Fedora EPEL http://de.archive.ubuntu.com/ubuntu/ Remap-slrep: file:sl_mirrors # Scientific Linux Listing 6.46 Standardwerte: »backends_ubuntu« ReportPage: acng-report.html ExTreshold: 4 Darüber wird definiert, wie die Anfragen der Clients übersetzt werden sollen. Die Standard- Listing 6.45 Auszug der Standardwerte: »acng.conf« konfiguration ist sofort einsetzbar und muss nicht angepasst werden. Falls Sie Verände- rungen vorgenommen haben, müssen Sie diese dem apt-cacher-ng über ein Neuladen der Dabei sind folgende dienstspezifische Parameter konfiguriert: Konfiguration bekannt machen. Das Neuladen können Sie wie gewohnt über das Programm service oder die init.d-Skripte durchführen.

212 213

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 212 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 213 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.3 Updates nur einmal laden: »Cache«

6.3.4 Fütterungszeit – bereits geladene Pakete dem Cache hinzufügen

Falls Sie den apt-cacher-ng auf einem System betreiben, das bereits Updates geladen hat, können Sie diese Ihrem frischen Cache hinzufügen. So können Sie bereits die erste Band- breitenersparnis generieren. Dafür müssen folgende Schritte durchlaufen werden:

1. Lokale Proxy-Konfiguration Zunächst müssen Sie dem Server mitteilen, dass er ebenfalls über den apt-cacher-ng 6 Updates laden soll (siehe Abschnitt 6.3.6, »Clientkonfiguration«). 2. Paketlisten laden Laden Sie nun die aktuellen Paketlisten herunter, darüber werden dem apt-cacher-ng die bereits vorhandenen Pakete bekannt gemacht: Abbildung 6.2 Import über das Webinterface apt-cache update 3. Aufräumen der Pakete 6.3.5 Aufräumen – Zweige aus dem Cache entfernen Nun sollten Sie zunächst die benötigten Pakete von Ihrem Server entfernen. Nutzen Sie Durch die Benutzung von apt-cacher-ng wird viel Plattenplatz benötigt. Falls dieser einmal dafür folgenden Befehl: knapp wird, können Sie zum Beispiel veraltete Distributionen, die Sie im Haus gar nicht apt-get autoclean mehr betreiben, aus Ihrem Cache entfernen. Hierfür wurde das Skript distkill.pl geschaffen. 4. Verzeichnis »_import« anlegen Darüber können Sie gezielt Distributionen aus dem Cache entfernen. Listing 6.47 zeigt die Erstellen Sie das Verzeichnis _import mittels nachfolgendem Befehl: Übersicht nach dem Start:

mkdir -p /var/cache/apt-cacher-ng/_import daniel@example:~# sudo /usr/lib/apt-cacher-ng/distkill.pl 5. Rechte anpassen Passen Sie die Rechte an dem soeben erstellten Verzeichnis an, damit der apt-cacher-ng Scanning /var/cache/apt-cacher-ng, please wait... dies auch benutzen kann. Setzen Sie dafür den nachstehenden Befehl ab: Found distributions: chown apt-cacher-ng /var/cache/apt-cacher-ng/_import bla, taggedcount: 0 6. Kopieren der Pakete 1. raring-updates (56 index files) Kopieren Sie nun die lokalen Pakete in das Importverzeichnis mittels folgendem Befehl: 2. precise-updates (72 index files) cp -al /var/cache/apt/archives/* /var/cache/apt-cacher-ng/_import/ 3. precise-security (64 index files) 4. precise (72 index files) 7. Importvorgang starten 5. raring-security (56 index files) Sie können den Importvorgang über den Button Start Import auf dem Webinterface 6. trusty-backports (56 index files) von apt-cacher-ng (http://localhost:3142/acng-report.html) starten (siehe Abbildung 6.2). 7. raring (66 index files) 8. Aufräumen 8. precise-backports (64 index files) Nach dem erfolgreichen Import wird das Verzeichnis _import nicht länger benötigt. Ent- 9. trusty-updates (56 index files) fernen Sie es mittels nachfolgendem Befehl: 10. trusty (64 index files) rm -rf /var/cache/apt-cacher-ng/_import 11. trusty-security (56 index files) 12. raring-backports (56 index files)

Found architectures: 13. amd64 (96 index files) 14. i386 (98 index files)

214 215

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 214 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 215 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

WARNING: The removal action may wipe out whole directories containing index files. Select d to see detailed list.

(Number nn: tag distribution or architecture nn; 0: exit; d: show details; \ r: remove tagged; q: quit): Listing 6.47 Distributionen aus dem Cache entfernen: »distkill.pl« 6 In der letzten Zeile der Ausgabe aus Listing 6.47 sind Hinweise zum Umgang mit dem Programm aufgelistet. Das Skript wird über Tasten gesteuert, diese haben nachstehende Bedeutung:

E (1) – (9): Auswahl der Repositorys – die Nummerierung steht jeweils vor den Einträgen. E (0): kehrt zur vorherigen Auswahl zurück E (D): zeigt Details zu dem ausgewählten Repository an E (R): entfernt das ausgewählte Repository Abbildung 6.3 Report-HTML: »apt-cacher-ng« E (Q): beendet das Programm

6.3.8 rpm-basierte Distributionen 6.3.6 Clientkonfiguration Dieser Abschnitt fällt leider äußerst kurz aus. Leider gibt es für rpm-basierte Distributionen Die Clientkonfiguration geht schnell von der Hand, da nur eine Datei editiert werden muss. keine angepasste Software, die einen Repository-Cache bereitstellt. Passen Sie bei den Clients die Konfigurationsdatei /etc/apt/apt.conf.d/01proxy an, ändern Sie Selbstverständlich können Sie einen Squid oder Nginx dafür missbrauchen. Diesen fehlen diese, oder erstellen Sie sie, wie in Listing 6.48 dargestellt: allerdings die notwendigen Fähigkeiten, um mit Paketen anständig umzugehen. Daher emp- Acquire::http::Proxy "http://:3142"; fehlen wir Ihnen, darauf zu verzichten. Setzen Sie bei Bedarf eher einen eigenen Mirror auf, Listing 6.48 Clientkonfiguration: »01proxy« wie es in Abschnitt 6.4.11, »rpm-basierte Distributionen«, erläutert wird.

Da kein Dienst im Hintergrund läuft, ist keine weitere Aktion notwendig. Alle zukünftigen Downloads werden nun über den apt-cacher-ng geladen. 6.4 Alles meins: »Mirror«

Im Gegensatz zum Proxy oder Cache wird bei einem Mirror das gesamte Repository gespie- 6.3.7 Details: »Report-HTML« gelt. Dadurch können Sie ein vollständiges System installieren, ohne auch nur ein Paket aus Wenn der Dienst gestartet ist, können Sie über die URL http://:3142/acng-report.html dem Internet zu laden. Allerdings benötigt ein vollständiger Spiegel auch sehr viel Platten- Statusinformationen abrufen, wie in Abbildung 6.3 dargestellt. Beachten Sie dabei, dass Sie platz. Pro Sektion können schon mal 20 GB zusammenkommen. Achten Sie also darauf, dass durch die IP-Adresse Ihres Servers ersetzen. Ihr System genügend Platz zur Verfügung hat.

Selbst kleine Konfigurationen können Sie auf der Webseite vornehmen. Einen Blick ist sie allemal wert. 6.4.1 deb-basierte Distributionen: »debmirror«

Installieren Sie folgende Pakete:

216 217

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 216 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 217 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

E debmirror E -s E ubuntu-keyring Setzt die Shell des Benutzers auf die Bash. E apache2 E -m Falls das angegebene Homeverzeichnis nicht existiert, wird es mit angelegt. Die benötigten Abhängigkeiten werden automatisch mit installiert. E -c der Benutzer wird mit einem Kommentar versehen, hier »Ubuntu Mirror«. 6 6.4.2 Konfiguration E mirror Da debmirror kein eigener Dienst ist, sondern nur ein Programm zur Verfügung stellt, müs- gibt den Benutzernamen an, der erzeugt wird sen Sie die Struktur selbst aufbauen. Dazu gehören folgende Arbeitsschritte: 1. Benutzer und Gruppe anlegen 6.4.4 Verzeichnisstruktur anlegen

2. Verzeichnisstruktur anlegen Nun können wir die Verzeichnisstruktur anlegen. Dazu wechseln wir mittels su zum neu 3. Mirror-Skript erstellen (Ubuntu) angelegten Benutzer und erstellen die benötigten Verzeichnisse unter seinem Namen, wie 4. Cronjobs einrichten es Listing 6.50 darstellt: 5. Schlüssel importieren daniel@server:/# sudo su - mirror mirror@server:/# mkdir -p ~/bin ~/ubuntu ~/ubuntu-security ~/ubuntu-updates \ 6. Mirror erstellen ~/ubuntu-backports 7. Mirror verfügbar machen – Webdienst konfigurieren Listing 6.50 Verzeichnisse anlegen 8. Clientkonfiguration

Diese Schritte werden wir nun nacheinander abarbeiten. Da die Verzeichnisse direkt als Benutzer mirror erzeugt wurden, sind die Rechte bereits kor- rekt gesetzt.

6.4.3 Benutzer und Gruppe anlegen 6.4.5 Mirror-Skript erstellen (Ubuntu) Erstellen Sie zunächst einen eigenen Benutzer, der für den Spiegel zuständig ist. Das hat den Vorteil, dass die Erzeugung des Spiegels nicht mit root-Rechten durchgeführt werden muss. Damit der Spiegel erstellt und regelmäßig aktualisiert wird, empfiehlt sich der Einsatz ei- nes Skripts, das über den cron regelmäßig gestartet wird. In unserem Beispiel erzeugen wir daniel@server:/# sudo groupadd mirror Skripte für das Spiegeln von Ubuntu. daniel@server:/# sudo useradd -g mirror -d /var/www/mirror -s /bin/bash -m \ -c "Ubuntu Mirror" mirror Dazu erstellen wir ein zentrales Skript, das mit einem Parameter aufgerufen werden muss. Listing 6.49 Benutzer und Gruppe »mirror« anlegen Der Parameter gibt das zu spiegelnde Repository an. Erstellen Sie also zunächst die Datei /var/www/mirror/bin/mirror-ubuntu.sh mit dem Inhalt aus Listing 6.51, und geben Sie dem In Listing 6.49 wird zunächst die Gruppe mirror angelegt. Anschließend wird der Benutzer Skript Ausführungsrechte mittels chmod +x mirror-ubuntu.sh. mirror mit useradd erzeugt, die Parameter haben dabei nachstehende Bedeutung: 1: #!/bin/bash E -g 2: # weist dem Benutzer einer Gruppe zu, hier mirror 3: # Mirror Ubuntu-Repostiories 4: # E -d 5: # VARS Das Homeverzeichnis des Benutzers wird auf die nachstehende Pfadangabe geändert, 6: # $1 sets the repository name hier /var/www/mirror. Da der Benutzer nur als Dienstgeber fungiert, sollte der Spiegel 7: auch unter /var/ liegen und nicht unter /home/. 8: REPO=$1

218 219

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 218 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 219 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

9: if [ -z $REPO ] ; then Der in Zeile 16–27 von Listing 6.51 dargestellte Aufruf von debmirror enthält viele Parameter, 10: logger -t mirror-$REPO[$$] ERROR no repository name given! die wir uns nun genauer ansehen: 11: exit 1 E --passive 12: fi 13: setzt den Download-Modus von FTP auf passiv. 14: logger -t mirror-$REPO[$$] Updating $REPO E --progress 15: stellt einen Fortschrittsbalken beim Download dar. Dies ist nur relevant, wenn Sie das 6 16: debmirror \ Skript von Hand auf einer Konsole ausführen. 17: --passive \ E --nosource 18: --progress \ gibt an, dass keine Quellen geladen werden sollen, sondern nur Binärpakete. 19: --nosource \ 20: --host=de.archive.ubuntu.com \ E --host 21: --root=ubuntu \ gibt den Server an, von dem der Spiegel geladen werden soll. Wählen Sie stets einen 22: --dist=lucid,precise \ Server der eine gute Verfügbarkeit hat und in Ihrer Nähe ist. Im Beispiel wurde 23: --section=multiverse,universe,restricted,main \ de.archive.ubuntu.com verwendet, was eine gute Wahl ist, da sich dahinter stets mehrere 24: --arch=i386,amd64 \ verfügbare und vollständige Repositorys verbergen. 25: -e http \ E --root 26: --verbose \ setzt das Wurzelverzeichnis auf dem Quellserver, in dem die Ubuntu-Archive liegen. 27: /var/www/mirror/$REPO Wenn nicht anders angegeben, wird im Standard stets ubuntu verwendet. 28: 29: logger -t mirror-$REPO[$$] Finished Updating Ubuntu E --dist Listing 6.51 Skript zum Laden der Spiegel: »mirror-ubuntu.sh« spezifiziert durch Komma getrennt, welche Distributionen geladen werden sollen. Das Beispielskript in Listing 6.51 lädt die LTS-Versionen Lucid und Precise. Falls Sie ausschließ- Die einzelnen Zeilen haben dabei folgende Bewandtnis: lich die Version 12.04 im Einsatz haben, können Sie den Parameter entsprechend an- passen. E Zeile 1 E Der shebang des Skripts gibt an, mit welcher Sprache es interpretiert werden soll. --section gibt die Sektionen an, die geladen werden sollen. E Zeile 2–7 E Kommentare, die das Skript und dessen Variablen beschreiben --arch spezifiziert durch Komma getrennt die Architektur. Falls Sie nur 64-Bit-Systeme betrei- E Zeile 8 ben, genügt es auch, nur diese Pakete zu spiegeln. weist der Variablen REPO den ersten übergebenen Parameter ($1)zu. E -e E Zeile 9–12 gibt das Übertragungsprotokoll an. Im Beispielen haben wir http verwendet. prüft, ob ein Repository-Name übergeben wurde. Wenn nicht, wird mit einer Fehlermel- E dung abgebrochen. --verbose erweitert die Ausgabe. E Zeile 14 E protokolliert im syslog, dass das Update begonnen hat. /var/www/mirror/$REPO gibt den lokalen Speicherort des jeweiligen Spiegels an. Über den Parameter $REPO wird E Zeile 16–27 also auch das Verzeichnis angegeben. Soll zum Beispiel das ubuntu-security-Repository führt das Update aus (die Details erläutern wir im Anschluss). gespiegelt werden, dann finden Sie die Daten unter /var/www/mirror/ubuntu-security. E Zeile 29 protokolliert im syslog, dass das Update beendet wurde.

220 221

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 220 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 221 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

Signing Key " importiert Bei wenig Plattenplatz: »precleanup« gpg: Schlüssel FBB75451: Öffentlicher Schlüssel "Ubuntu CD Image Automatic \ Falls Ihr Spiegelsystem nicht genügend Plattenplatz hat, können Sie dem Programm debmir- Signing Key " importiert ror den Parameter --precleanup hinzufügen. Dieser sorgt dafür, dass vor dem Download Ihr gpg: Schlüssel C0B21F32: Öffentlicher Schlüssel "Ubuntu Archive Automatic \ lokaler Spiegel aufgeräumt wird. Die Entwickler warnen aber davor, dass dies zu einem inkon- Signing Key (2012) " importiert sistenten Spiegel führen kann. Setzen Sie diesen Parameter also nur im Notfall ein. gpg: Schlüssel EFE21092: Öffentlicher Schlüssel "Ubuntu CD Image Automatic \ Signing Key (2012) " importiert 6 gpg: Anzahl insgesamt bearbeiteter Schlüssel: 4 gpg: importiert: 4 (RSA: 2) 6.4.6 Cronjobs einrichten gpg: Keine uneingeschränkt vertrauenswürdigen Schlüssel gefunden Damit Sie nicht ständig alle Updates von Hand anstoßen müssen, können Sie mehrere Cron- mirror@server:~$ jobs einrichten, die das für Sie erledigen. Vorzugsweise sollte der Spiegel in der Nacht erzeugt Listing 6.54 GPG-Schlüssel für »mirror« importieren werden, da in der Regel dann niemand Ihre Internetleitung benötigt. Erzeugen Sie also für den Benutzer mirror die notwendigen Cronjobs. Dazu benutzen wir das Tool crontab wie in Listing 6.52 dargestellt: Stolperfalle: richtiger Benutzer Achten Sie darauf, dass der Import als Benutzer mirror durchgeführt wird! Ansonsten kann das daniel@server:/# sudo crontab -e -u mirror System die GPG-Schlüssel nicht finden und bricht mit einer entsprechenden Fehlermeldung Listing 6.52 Cronjobs des Benutzers »mirror« öffnen ab.

Fügen Sie anschließend die Zeilen aus Listing 6.53 in den sich öffnenden Editor ein:

01***bash -l -c "/var/www/mirror/bin/mirror-ubuntu.sh ubuntu" 6.4.8 Mirror erstellen 02***bash -l -c "/var/www/mirror/bin/mirror-ubuntu.sh ubuntu-security" 03***bash -l -c "/var/www/mirror/bin/mirror-ubuntu.sh ubuntu-updates" Um zu prüfen, ob unser Skript auch funktionstüchtig ist, können wir dieses einfach ausfüh- 04***bash -l -c "/var/www/mirror/bin/mirror-ubuntu.sh ubuntu-backports" ren. Fehler werden entsprechend in der Bash ausgegeben. Falls Sie nicht direkt den Down- Listing 6.53 Cron-Konfiguration load starten wollen, können Sie temporär dem Befehl debmirror den zusätzlichen Parameter --dry-run mitgeben. Damit läuft das gesamte Update, aber ohne Pakete herunterzuladen. Damit geben Sie an, dass jede Nacht ab 01:00 Uhr stündlich die Updates laufen sollen. Über die Parameter nach dem Skript mirror-ubuntu.sh definieren Sie, welche Repositorys gela- 6.4.9 Mirror verfügbar machen – Webdienst konfigurieren den werden sollen. Falls Sie also keine Pakete aus den Backports benötigen, können Sie die entsprechende Zeile einfach entfernen. Damit Ihr Spiegel auch von Ihren Clients benutzt werden kann, müssen Sie diese verfügbar machen. In der Regel wird hierfür als Übertragungsprotokoll HTTP eingesetzt.

6.4.7 Schlüssel importieren Falls Sie bereits einen Apache auf dem System betreiben, müssen Sie lediglich einen weiteren virtuellen Host anlegen und diesen wie in Listing 6.55 beschrieben einrichten: Damit der angelegte Benutzer mirror den Spiegel erstellen und aktualisieren kann, benötigt er die GPG-Schlüssel der Repositorys. Diese können wir einfach aus dem System importieren NameVirtualHost mirror.example.com:80 wie in Listing 6.54 dargestellt: DocumentRoot /var/www/mirror/ mirror@server:~$ gpg --no-default-keyring --keyring trustedkeys.gpg \ ServerName mirror.example.com --import /usr/share/keyrings/ubuntu-archive-keyring.gpg gpg: Schlüsselbund `/var/www/mirror/.gnupg/trustedkeys.gpg' erstellt Alias /mirror/ "/var/www/mirror/" gpg: /var/www/mirror/.gnupg/trustdb.gpg: trust-db erzeugt gpg: Schlüssel 437D05B5: Öffentlicher Schlüssel "Ubuntu Archive Automatic \ Options Indexes FollowSymLinks

222 223

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 222 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 223 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

AllowOverride None Ersetzen Sie mit der IP-Adresse oder dem Hostnamen des Systems, auf dem Sie den Order allow,deny Spiegel betreiben. Beachten Sie, dass die Zeilen aus Listing 6.57 aufgrund ihrer Länge umbro- allow from all chen wurden, aber eigentlich in eine Zeile gehören. Anschließend werden alle Updates von Ihrem eigenen Mirror geladen. Listing 6.55 Apache-Konfiguration des Spiegels: »/etc/apache2/sites-available/mirror.conf« 6.4.11 rpm-basierte Distributionen 6

AbschließendmüssenSiedenneuenvirtuellenHostnochaktivierenunddenApachedurch- Um einen Spiegel einer rmp-basierten Distribution zu erstellen, wird kein gesondertes Soft- starten wie in Listing 6.56 dargestellt: warepaket benötigt. Die Spiegelung erfolgt einfach mittels rsync.

daniel@server:/# sudo a2ensite mirror Im Beispiel werden wir einen Mirror für openSUSE einrichten. Nachstehende Punkte müssen Enabling site mirror. dafür abgearbeitet werden: To activate the new configuration, you need to run: service apache2 reload 1. Benutzer und Gruppe anlegen 2. Verzeichnisstruktur anlegen daniel@server:/# sudo service apache2 reload 3. Mirror-Skript erstellen * Reloading web server config apache2 [ OK ] daniel@server:/# 4. Cronjobs einrichten Listing 6.56 Host aktivieren und Apache neu laden 5. Mirror erstellen 6. Mirror verfügbar machen – Webdienst konfigurieren

6.4.10 Clientkonfiguration 7. Clientkonfiguration

Damit Ihre Server von nun an über Ihren eigenen Spiegel Updates laden, müssen Sie ihnen Diese Schritte werden wir nun nacheinander abarbeiten. dieses mitteilen. Dafür müssen Sie die lokale Datei /etc/apt/sources.list anpassen.

Speichern Sie die aktuelle Version dieser Datei unter einem anderen Namen, und legen Sie 6.4.12 Benutzer und Gruppe anlegen eine neue mit dem Inhalt aus Listing 6.57 an: Zunächst sollte ein Benutzer für den Spiegelvorgang eingerichtet werden. Setzen Sie dazu deb http:///mirror/ubuntu precise universe multiverse main restricted die Befehle aus Listing 6.58 ab: deb http:///mirror/ubuntu-security precise-security universe main \ root@server:/# groupadd mirror restricted multiverse root@server:/# useradd -g mirror -d /srv/pub/opensuse -m -c "Mirror User" mirror deb http:///mirror/ubuntu-updates precise-updates main restricted \ root@server:/# chown -R mirror:mirror /srv/pub/opensuse universe multiverse deb http:///mirror/ubuntu-backports precise-backports main restricted \ Listing 6.58 Benutzer und Gruppe »mirror« anlegen universe multiverse Der erste Befehl aus Listing 6.58 legt die Gruppe mirror an. Im zweiten Befehl wird ein gleich- Listing 6.57 Clientkonfiguration: »sources.list« namiger Benutzer angelegt. Dieser wird direkt mit dem Parameter -g der Gruppe hinzuge- fügt. Mit dem Parameter -d wird das Heimatverzeichnis auf /srv/pub/opensuse festgelegt, Release beachten! falls es nicht existiert wird es durch die Angabe von -m direkt mit angelegt. Zu guter Letzt Beachten Sie dabei, dass Sie das für das System zutreffende Release eintragen. Also trusty für wird über den Parameter -c noch ein Kommentar für den Benutzer angegeben. Abschlie- Ubuntu 14.04 bzw. precise für Ubuntu 12.04. ßend werden dem angelegten Benutzer Rechte am erstellten Verzeichnis zugewiesen.

224 225

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 224 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 225 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

6.4.13 Verzeichnisstruktur anlegen E --delay-updates stellt sicher, dass die neuen Dateien erst nach Ende der Verarbeitung in das Zielverzeich- Der Mirror soll unter /srv/pub/opensuse abgelegt werden. Dafür müssen die entsprechen- nis kopiert werden – so ist sichergestellt, dass keine Inkonsistenzen während des Herun- den Verzeichnisse erstellt und dem neu angelegten Benutzer zugeordnet werden. Setzen Sie terladens entstehen. dafür die Befehle aus Listing 6.59 ab: E --timeout 300 root@server:/# mkdir /srv/pub/opensuse setzt die maximale Zeitspanne, in der auf eine Transaktion gewartet wird, auf 300 Sekun- root@server:/# mkdir /srv/pub/opensuse/update 6 den – also fünf Minuten. Listing 6.59 Verzeichnisse anlegen Damit das Skript ausgeführt werden kann, müssen dessen Rechte angepasst werden. Führen Sie dazu abschließend den Befehl aus Listing 6.61 aus: 6.4.14 Mirror-Skript erstellen daniel@server:~> sudo chmod +x /usr/bin/mirror.sh Damit Sie nicht ständig die gleichen Befehle absetzen müssen, erstellen wir ein kleines Skript, Listing 6.61 Rechtekorrektur Mirror-Skript das uns die Arbeit abnimmt. Erstellen Sie dafür mit root-Rechten die Datei /usr/bin/mirror.sh mit den Zeilen aus Listing 6.60: 6.4.15 Cronjobs einrichten #!/bin/bash SERVER=$1 Zur automatisierten Aktualisierung des Spiegels wird das soeben erstellte Skript nun in Cron- MIRROR=$2 jobs gepackt. Öffnen Sie den Cron-Editor für den Benutzer mirror über den Befehl aus Listing 6.62: if [ -z "$1" ] ; then echo "need server"; exit 1; fi daniel@server:~> sudo crontab -u mirror -e if [ -z "$2" ] ; then echo "need mirror path"; exit 1; fi mkdir -p $MIRROR 2>&1 Listing 6.62 Cronjobs des Benutzers »mirror« bearbeiten echo -e "\nStarting download process..." rsync -av --delete --progress --delay-updates --timeout=300 ${SERVER} ${MIRROR} Fügen Sie nun im sich öffnenden Editor die Zeilen aus Listing 6.63 ein. Listing 6.60 Mirror-Skript: »/usr/bin/mirror.sh« 0 1 * * * sleep $(($RANDOM/64)); /usr/bin/mirror.sh \ "ftp-1.gwdg.de::pub/opensuse/distribution/12.3/repo/oss/" \ Das Skript erwartet zwei Parameter: als Erstes den Server, von dem die Pakete geladen wer- "/srv/pub/opensuse/12.3/oss/" den, und als Zweites den Pfad zu Ihrem lokalen Spiegel. 0 3 * * * sleep $(($RANDOM/64)); /usr/bin/mirror.sh \ Das Skript prüft zunächst, ob die benötigten Parameter übergeben wurden. Anschließend "ftp-1.gwdg.de::pub/opensuse/distribution/12.3/repo/non-oss/" \ wird, falls noch nicht vorhanden, der lokale Pfad angelegt. Zuletzt startet das Skript den "/srv/pub/opensuse/12.3/non-oss/" Synchronisierungsprozess mittels rsync. Dies sehen wir uns nun genauer an:

E -av 0 5 * * * sleep $(($RANDOM/64)); /usr/bin/mirror.sh \ aktiviert den archive-undverbose-Modus. Dabei wird sichergestellt, dass symbolische "ftp-1.gwdg.de::pub/opensuse/update/12.3/" \ Links sowie die Attribute und Rechte der Ursprungsdateien erhalten bleiben. Gleichzeitig "/srv/pub/opensuse/12.3/update/" erhalten Sie eine umfangreichere Ausgabe. Listing 6.63 Cronjobs definieren E --delete Jede Nacht wird um 01:00 Uhr der Spiegel oss,um03:00UhrderSpiegelnon-oss und um Hierüber wird rsync angewiesen, unbenötigte Dateien zu entfernen. 05:00 Uhr der Spiegel update geladen. Damit dieser Vorgang nicht immer strikt um die an- E --progress gegebenen Uhrzeiten gestartet wird, wurde mittels des sleep-Kommandos eine Variabilität zeigt einen Fortschrittsbalken des Vorgangs an. hinzugefügt. Der Befehl bewirkt, dass immer eine zufällige Anzahl an Sekunden gewartet wird, bevor der eigentliche Job gestartet wird.

226 227

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 226 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 227 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement 6.4 Alles meins: »Mirror«

Wie bereits erörtert erwartet das mirror.sh-Skript zwei Parameter. Im ersten den Server, 37577 100% 35.84MB/s 0:00:00 (xfer#2, to-check=26530/26534) von dem der Spiegel geladen wird. Wie Sie Listing 6.63 entnehmen können, wird der i586/GraphicsMagick-1.3.17-2.4.1.i586.rpm gwdg.de-Mirror-Server verwendet. Die Gemeinschaftseinrichtung der Universität Göttingen 802444 100% 4.94MB/s 0:00:00 (xfer#3, to-check=26529/26534) und der Max-Planck-Gesellschaft ist einer der bekanntesten OpenSUSE-Mirror-Anbieter. Der [...] Server wurde in der Rsync-Syntax angegeben (zwei aufeinanderfolgende Doppelpunkte zur Listing 6.64 Auszug: Ausgabe des Skripts »mirror.sh« Trennung von Server und Pfad). Im zweiten Parameter wird der lokale Pfad angegeben, den 6 wir zuvor erstellt haben. 6.4.17 Mirror verfügbar machen – Webdienst konfigurieren Sie können den Serverpfad auch im Browser eingeben, um so einsehen zu können, welche Damit Ihre Clients den erstellten Spiegel auch nutzen können, müssen Sie diesen verfüg- Distributionen dort angeboten werden. Unter ftp://ftp-1.gwdg.de/pub/opensuse wird Ihnen bar machen. Hierfür genügt eine Webserverinstallation – mehr zum Thema erfahren Sie in der Inhalt angezeigt. Kapitel 8, »Webserver«. Im Beispiel verwenden einen Apache-Webserver.

Richten Sie für den Mirror einen neuen VirtualHost ein. Dafür erstellen Sie die Datei Anpassungen pro Spiegel /etc/apache2/vhosts.d/mirror.example.com.conf mit dem Inhalt aus Listing 6.65: Beachten Sie, dass im Beispiel lediglich ein Spiegel von OpenSUSE 12.3 geladen wird. Wollen Sie eine andere oder mehrere Distributionen anbieten, müssen Sie die Pfade anpassen oder ServerAdmin [email protected] mehrere mirror.sh-Skriptzeilen erstellen! ServerName mirror.example.com

DocumentRoot "/srv/pub/opensuse" 6.4.16 Mirror erstellen Selbstverständlich müssen Sie jetzt nicht eine Nacht warten, um zu sehen, ob der Mirror Options FollowSymLinks Indexes erstellt wird. Das Skript können Sie auch von der Konsole aus starten. Damit die Dateiberech- IndexOptions FancyIndexing VersionSort NameWidth=* Charset=UTF-8 \ tigungen korrekt gesetzt werden, sollten Sie das Skript als Benutzer mirror starten. Listing TrackModified FoldersFirst XHTML 6.64 zeigt die Ausgabe, die das Skript erzeugt: AllowOverride None daniel@server:~> sudo su mirror /usr/bin/mirror.sh \ Order allow,deny "ftp-1.gwdg.de::pub/opensuse/distribution/12.3/repo/oss/" \ Allow from all "/srv/pub/opensuse/12.3/oss/" Starting download process... Listing 6.65 Konfiguration des VirtualHost: »/etc/apache2/vhosts.d/mirror.example.com.conf« This is ftp5.gwdg.de (134.76.12.5). Contacts: [email protected] Selbstverständlich müssen Sie den Dateinamen und die Direktive ServerName Ihrer Umge- bung anpassen. Nach den Änderungen müssen Sie den Dienst neu starten. Anschließend This server does not support --checksum (-c) können Ihre Clients – vorausgesetzt, das mirror.sh-Skript ist bereits einmal vollständig ge- laufen – Ihren neu geschaffenen Mirror-Server einsetzen. receiving file list ... 26534 files to consider ./ 6.4.18 Clientkonfiguration openSUSE:12.3:Update.repo 293 100% 286.13kB/s 0:00:00 (xfer#1, to-check=26532/26534) Wir bleiben im SUSE-Universum und zeigen Ihnen in diesem Abschnitt, wie Sie den Clients i586/ in Ihrem Netz den neu geschaffenen Mirror-Server mitteilen. Öffnen Sie dafür den yast2,und i586/GraphicsMagick-1.3.17-2.1.1_2.4.1.i586.drpm wählen Sie unter Software den Unterpunkt Software Repositorys aus. Im sich öffnenden

228 229

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 228 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 229 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration Aktuelle Quelldatei: paketmanagement/paketmanagement , Aktueller Job: administration 6 Paketmanagement

Dialog können Sie über die Schaltfläche Add oder die Tastenkombination (±)+(A) ein neues Repository hinzufügen.

Wählen Sie im folgenden Dialog als Medien-Typ »HTTP. . . « aus, und fahren Sie über die Schaltfläche Next weiter fort. Nun werden Sie aufgefordert, einen Namen (Repository Name) und die URL anzugeben. Geben Sie hier den Namen und Pfad Ihres Spiegelservers an, zum Beispiel http://mirror.example.com/opensuse/13.3.

Anschließend wird Ihr Spiegelserver durchsucht und analysiert. Nach Abschluss der Verar- beitung steht Ihnen der neue Server in der Liste der Software-Repositorys zur Verfügung. Damit der Server benutzt wird, müssen Sie diesen aktivieren und ihm eine niedrigere Priori- tät zuweisen. Alternativ können Sie auch die bisherigen Server deaktivieren oder entfernen.

230

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 230 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: backup/backup , Aktueller Job: administration Auf einen Blick

Auf einen Blick

TEIL I Grundlagen ...... 61

TEIL II Aufgaben ...... 187

TEIL III Dienste ...... 279

TEIL IV Infrastruktur ...... 779

TEIL V Kommunikation ...... 841

TEIL VI Automatisierung ...... 991

TEIL VII Sicherheit, Verschlüsselung und Zertifikate ...... 1047 Inhalt

Inhalt

Vorwort ...... 29 Über dieses Buch ...... 37

1 Der Administrator 41

1.1 Der Beruf des Systemadministrators ...... 41 1.1.1 Berufsbezeichnung und Aufgaben ...... 41 1.1.2 Job-Definitionen ...... 42 1.2 Nützliche Fähigkeiten und Fertigkeiten ...... 47 1.2.1 Soziale Fähigkeiten ...... 47 1.2.2 Arbeitstechniken ...... 48 1.3 Das Verhältnis vom Administrator zu Normalsterblichen ...... 49 1.3.1 Der Chef und andere Vorgesetzte ...... 50 1.3.2 Benutzer ...... 50 1.3.3 Andere Administratoren ...... 51 1.4 Unterbrechungsgesteuertes Arbeiten ...... 52 1.5 Einordnung der Systemadministration ...... 53 1.5.1 Arbeitsgebiete ...... 53 1.5.2 DevOps ...... 55 1.6 Ethischer Verhaltenskodex ...... 57 1.7 Administration – eine Lebenseinstellung? ...... 59

TEIL I Grundlagen

2 Bootvorgang 63

2.1 Einführung ...... 63 2.2 Der Bootloader GRUB ...... 63 2.2.1 Installation ...... 64 2.2.2 Konfiguration ...... 66 2.2.3 Booten von einem Software-RAID-1 ...... 68

5

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 5 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

2.3 GRUB 2 ...... 69 3.2.5 Eine Volume Group erweitern ...... 112 2.3.1 Funktionsweise ...... 69 3.2.6 Spiegelung zu einem Volume hinzufügen ...... 113 2.3.2 Installation ...... 69 3.2.7 Eine defekte Festplatte ersetzen ...... 115 2.3.3 Konfiguration ...... 70 3.2.8 Backups mit Snapshots ...... 115 2.4 Bootloader Recovery ...... 75 3.2.9 Mirroring ausführlich ...... 119 3.2.10 Kommandos ...... 123 2.5 Der Kernel und die »initrd« ...... 77 2.5.1 »initrd« erstellen und modifizieren ...... 77 3.3 »udev« ...... 124 2.5.2 »initrd« manuell modifizieren ...... 80 3.3.1 »udev«-Regeln ...... 125 3.3.2 Eigene Regeln schreiben ...... 126 2.6 »Upstart« ...... 81 2.6.1 Funktionsweise ...... 82 3.4 Alles virtuell? »/proc« ...... 129 2.6.2 Events im Detail ...... 83 3.4.1 CPU ...... 129 2.6.3 Prozessdefinitionen ...... 85 3.4.2 RAM ...... 130 2.6.4 Anzeige aller »Upstart«-Jobs ...... 85 3.4.3 Kernelkonfiguration ...... 131 2.6.5 Anzeige und Überprüfung der Job-Konfigurationen ...... 87 3.4.4 Kernelparameter ...... 132 2.6.6 Starten, Stoppen und Neustarten von Diensten ...... 89 3.4.5 Gemountete Dateisysteme ...... 132 2.6.7 Abschlussbemerkung ...... 89 3.4.6 Prozessinformationen ...... 133 3.4.7 Netzwerk ...... 134 3.4.8 Änderungen dauerhaft speichern ...... 135 3.4.9 Abschlussbemerkung ...... 135 3 Festplatten und andere Devices 91

3.1 RAID ...... 91 3.1.1 RAID-0 ...... 92 4 Dateisysteme 137 3.1.2 RAID-1 ...... 92 3.1.3 RAID-5 ...... 92 4.1 Dateisysteme: von Bäumen, Journalen und einer Kuh ...... 137 3.1.4 RAID-6 ...... 93 4.1.1 Bäume ...... 138 3.1.5 RAID-10 ...... 93 4.1.2 Journale ...... 140 3.1.6 Zusammenfassung ...... 94 4.1.3 Und die Kühe? COW-fähige Dateisysteme ...... 141 3.1.7 Weich, aber gut: Software-RAID ...... 95 4.2 Praxis ...... 141 3.1.8 Software-RAID unter Linux ...... 96 4.2.1 Ext2/3-FS aufgebohrt: mke2fs, tune2fs, dumpe2fs, e2label ...... 141 3.1.9 Abschlussbemerkung zu RAIDs ...... 103 4.2.2 ReiserFS und seine Tools ...... 144 3.2 Rein logisch: Logical Volume Manager »LVM« ...... 104 4.2.3 XFS ...... 145 3.2.1 Grundlagen und Begriffe ...... 106 4.2.4 Das Dateisystem vergrößern oder verkleinern ...... 146 3.2.2 Setup ...... 107 4.2.5 Ausblick auf BtrFS ...... 148 3.2.3 Aufbau einer Volume Group mit einem Volume ...... 108 4.3 Fazit ...... 150 3.2.4 Erweiterung eines Volumes ...... 111

6 7

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 6 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 7 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

6.1.2 »yum«, »yast« oder »apt«? ...... 192 5 Berechtigungen 151 6.1.3 Außerirdische an Bord – »alien« ...... 194

5.1 User, Gruppen und Dateisystemstrukturen ...... 151 6.2 Pakete im Eigenbau ...... 195 5.2 Dateisystemberechtigungen ...... 154 6.2.1 Am Anfang war das Makefile ...... 195 6.2.2 Vom Fellknäuel zum Paket ...... 198 5.2.1 Spezialbits ...... 155 6.2.3 Patchen mit »patch« und »diff« ...... 202 5.3 Erweiterte Posix-ACLs ...... 158 6.2.4 Updates ohne Repository ...... 205 5.3.1 Das Setzen und Anzeigen von einfachen ACLs ...... 159 6.2.5 »rpm«-Update-Paket ...... 205 5.3.2 Setzen von Default-ACLs ...... 161 6.2.6 »deb«-Update-Pakete ...... 208 5.3.3 Setzen von erweiterten ACLs ...... 162 6.2.7 Updatesicher konfigurieren ...... 209 5.3.4 Entfernen von ACLs ...... 165 6.3 Updates nur einmal laden: »Cache« ...... 211 5.3.5 Sichern und Zurückspielen von ACLs ...... 166 6.3.1 deb-basierte Distributionen: »apt-cacher-ng« ...... 212 5.4 Erweiterte Dateisystemattribute ...... 166 6.3.2 Installation ...... 212 5.4.1 Attribute, die jeder Benutzer ändern kann ...... 167 6.3.3 Konfiguration ...... 212 5.4.2 Attribute, die nur »root« ändern kann ...... 168 6.3.4 Fütterungszeit – bereits geladene Pakete dem Cache hinzufügen ...... 214 5.4.3 Weitere Attribute ...... 169 6.3.5 Aufräumen – Zweige aus dem Cache entfernen ...... 215 5.5 Quotas ...... 169 6.3.6 Clientkonfiguration ...... 216 5.5.1 Installation und Aktivierung der Quotas ...... 169 6.3.7 Details: »Report-HTML« ...... 216 5.5.2 Journaling-Quotas ...... 171 6.3.8 rpm-basierte Distributionen ...... 217 5.5.3 Quota-Einträge verwalten ...... 172 6.4 Alles meins: »Mirror« ...... 217 5.6 Pluggable Authentication Modules (PAM) ...... 176 6.4.1 deb-basierte Distributionen: »debmirror« ...... 217 5.6.1 Verschiedene PAM-Typen ...... 177 6.4.2 Konfiguration ...... 218 5.6.2 Die PAM-Kontrollflags ...... 177 6.4.3 Benutzer und Gruppe anlegen ...... 218 5.6.3 Argumente zu den Modulen ...... 178 6.4.4 Verzeichnisstruktur anlegen ...... 219 5.6.4 Modulpfade ...... 178 6.4.5 Mirror-Skript erstellen (Ubuntu) ...... 219 5.6.5 Module und ihre Aufgaben ...... 179 6.4.6 Cronjobs einrichten ...... 222 5.6.6 Die neuere Syntax bei der PAM-Konfiguration ...... 180 6.4.7 Schlüssel importieren ...... 222 5.7 Konfiguration von PAM ...... 182 6.4.8 Mirror erstellen ...... 223 6.4.9 Mirror verfügbar machen – Webdienst konfigurieren ...... 223 5.8 »ulimit« ...... 183 6.4.10 Clientkonfiguration ...... 224 5.8.1 Setzen der »ulimit«-Werte ...... 184 6.4.11 rpm-basierte Distributionen ...... 225 5.9 Abschlussbemerkung ...... 185 6.4.12 Benutzer und Gruppe anlegen ...... 225 6.4.13 Verzeichnisstruktur anlegen ...... 226 TEIL II Aufgaben 6.4.14 Mirror-Skript erstellen ...... 226 6.4.15 Cronjobs einrichten ...... 227 6 Paketmanagement 189 6.4.16 Mirror erstellen ...... 228 6.4.17 Mirror verfügbar machen – Webdienst konfigurieren ...... 229 6.1 Paketverwaltung ...... 189 6.4.18 Clientkonfiguration ...... 229 6.1.1 »rpm« oder »deb«? ...... 190

8 9

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 8 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 9 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

7 Backup und Recovery 231 TEIL III Dienste

8 Webserver 281 7.1 Backup gleich Disaster Recovery? ...... 231

7.2 Backupstrategien ...... 232 8.1 Apache ...... 281 7.3 Datensicherung mit »tar« ...... 235 8.1.1 Virtuelle Hosts einrichten ...... 281 7.3.1 Weitere interessante Optionen für GNU-»tar« ...... 236 8.1.2 HTTPS konfigurieren ...... 283 7.3.2 Sicherung über das Netzwerk mit »tar« und »ssh« ...... 237 8.1.3 Benutzer-Authentisierung mit Kerberos ...... 287 7.4 Datensynchronisation mit »rsync« ...... 238 8.1.4 Apache-Server mit ModSecurity schützen ...... 288 7.4.1 Lokale Datensicherung mit »rsync« ...... 238 8.1.5 Tuning und Monitoring ...... 291 7.4.2 Synchronisieren im Netzwerk mit »rsync« ...... 239 8.2 LightHttpd ...... 295 7.4.3 Wichtige Optionen für »rsync« ...... 239 8.2.1 Virtuelle Hosts mit »mod_simple_vhost« einrichten ...... 295 7.4.4 Backupskript für die Sicherung auf einen Wechseldatenträger ...... 241 8.2.2 Virtuelle Hosts ohne »mod_simple_vhost« einrichten ...... 296 7.4.5 Backupskript für die Sicherung auf einen Backupserver ...... 242 8.2.3 HTTPS konfigurieren ...... 297 7.4.6 Verwendung von »ssh« für die Absicherung von »rsync« ...... 244 8.3 Nginx ...... 299 7.5 Imagesicherung mit »dd« ...... 245 8.3.1 Grundlegende Konfiguration ...... 299 7.5.1 Sichern des Master Boot Records (MBR) ...... 245 8.3.2 Virtuelle Hosts ...... 300 7.5.2 Partitionstabelle mithilfe von »dd« zurückspielen ...... 246 8.3.3 HTTPS mit Nginx ...... 302 7.5.3 Erstellen eines Images mit »dd« ...... 246 8.4 Logfiles auswerten ...... 303 7.5.4 Einzelne Dateien mit »dd« aus einem Image zurückspielen ...... 247 7.5.5 Abschlussbemerkung zu »dd« ...... 249 7.6 Disaster Recovery mit ReaR ...... 249 307 7.6.1 ReaR konfigurieren ...... 251 9 FTP-Server 7.6.2 Aufrufparameter von ReaR ...... 253 9.1 Einstieg ...... 307 7.6.3 Der erste Testlauf ...... 253 9.1.1 Das File Transfer Protocol ...... 307 7.6.4 Der Recovery-Prozess ...... 258 9.1.2 vsftpd ...... 308 7.6.5 Die ReaR-Konfiguration im Detail ...... 260 7.6.6 Migrationen mit ReaR ...... 261 9.2 Download-Server ...... 308 7.7 Backup und Recovery mit Bacula/Bareos ...... 262 9.3 Zugriff von Usern auf ihre Homeverzeichnisse ...... 310 7.7.1 Das erste Backup: Der Bareos-Server sichert sich selbst ...... 264 9.4 FTP über SSL (FTPS) ...... 311 7.7.2 Einrichtung eines zu sichernden externen Clients ...... 274 9.5 Anbindung an LDAP ...... 313 7.7.3 Sichern von MySQL und LDAP ...... 277 7.7.4 Bareos und ReaR als Dreamteam ...... 277 7.7.5 Bacula/Bareos für Fortgeschrittene ...... 278 10 Mailserver 315

10.1 Postfix ...... 315 10.1.1 Grundlegende Konfiguration ...... 316 10.1.2 Postfix als Relay vor Exchange, Dovecot oder anderen Backends ...... 318

10 11

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 10 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 11 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

10.1.3 Die Postfix-Restrictions: der Schlüssel zu Postfix ...... 320 12 Syslog 385 10.1.4 Weiterleitungen und Aliase für Mailadressen ...... 328 10.1.5 SASL/SMTP-Auth ...... 329 12.1 Aufbau von Syslog-Nachrichten ...... 385 10.1.6 SSL/TLS für Postfix einrichten ...... 331 12.2 Der Klassiker: »SyslogD« ...... 387 10.2 Antivirus- und Spam-Filter mit Amavisd-new, ClamAV und SpamAssassin ...... 333 12.3 Syslog-ng ...... 388 10.2.1 Installation ...... 334 12.3.1 Der »options«-Abschnitt ...... 388 10.2.2 ClamAV konfigurieren ...... 335 12.3.2 Das »source«-Objekt ...... 390 10.2.3 Updates für SpamAssassin konfigurieren ...... 336 12.3.3 Das »destination«-Objekt ...... 390 10.2.4 Amavisd-new konfigurieren ...... 336 12.3.4 Das »filter«-Objekt ...... 392 10.2.5 Eine Quarantäne mit Amavis betreiben ...... 341 12.3.5 Das »log«-Objekt ...... 393 10.2.6 Postfix für die Verwendung mit Amavisd-new konfigurieren ...... 343 12.4 Rsyslog ...... 394 10.3 POP3/IMAP-Server mit Dovecot ...... 345 12.4.1 Eigenschaftsbasierte Filter ...... 394 10.3.1 Vorbereitungen im Linux-System ...... 345 12.4.2 Ausdrucksbasierte Filter ...... 395 10.3.2 Log-Meldungen und Debugging ...... 346 10.3.3 User-Authentifizierung ...... 347 12.5 Loggen über das Netz ...... 396 10.3.4 Aktivierung des LMTP-Servers von Dovecot ...... 348 12.5.1 SyslogD ...... 396 10.3.5 Einrichten von SSL/TLS-Verschlüsselung ...... 349 12.5.2 Syslog-ng ...... 397 12.5.3 Rsyslog ...... 397 10.4 Der Ernstfall: Der IMAP-Server erwacht zum Leben ...... 350 12.6 Syslog in eine Datenbank schreiben ...... 398 10.5 Monitoring und Logfile-Auswertung ...... 352 12.6.1 Anlegen der Log-Datenbank ...... 398 10.5.1 Logfile-Auswertung mit »Lire« ...... 353 12.6.2 In die Datenbank loggen ...... 399 10.5.2 Logfile-Auswertung mit »Pflogsumm« ...... 356

13 Proxy-Server 403 11 Datenbank 359

13.1 Einführung des Stellvertreters ...... 403 11.1 MySQL in der Praxis ...... 359 11.1.1 Installation und grundlegende Einrichtung ...... 359 13.2 Proxys in Zeiten des Breitbandinternets ...... 404 11.1.2 Replikation ...... 360 13.3 Herangehensweisen und Vorüberlegungen ...... 405 11.1.3 Master-Master-Replikation ...... 368 13.4 Grundkonfiguration ...... 405 11.2 Tuning ...... 371 13.4.1 Aufbau des Testumfelds ...... 406 11.2.1 Tuning des Speichers ...... 371 13.4.2 Netzwerk ...... 406 11.2.2 Tuning von Indizes ...... 378 13.4.3 Cache ...... 407 11.3 Backup und Point-In-Time-Recovery ...... 382 13.4.4 Logging ...... 408 11.3.1 Restore zum letztmöglichen Zeitpunkt ...... 382 13.4.5 Handhabung des Dienstes ...... 410 11.3.2 Restore zu einem bestimmten Zeitpunkt ...... 383 13.4.6 Objekte ...... 412 13.4.7 Objekttypen ...... 413 13.4.8 Objektlisten in Dateien ...... 413

12 13

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 12 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 13 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

13.4.9 Regeln ...... 414 14.4 Initialisierung und Testen des Kerberos-Servers ...... 466 13.4.10 Überlagerung mit »first match« ...... 416 14.4.1 Verwalten der Principals ...... 468 13.4.11 Anwendung von Objekten und Regeln ...... 417 14.5 Kerberos und PAM ...... 472 13.5 Authentifizierung ...... 418 14.5.1 Konfiguration der PAM-Dateien auf dem SLES11 ...... 472 13.5.1 Benutzerbasiert ...... 421 14.5.2 Testen der Anmeldung ...... 473 13.5.2 Gruppenbasiert ...... 431 14.6 Neue Benutzer mit Kerberos-Principal anlegen ...... 473 13.6 Helferlein ...... 434 14.7 Hosts und Dienste ...... 474 13.6.1 squidGuard ...... 435 14.7.1 Entfernen von Einträgen ...... 475 13.6.2 Antiviren-Check: ClamAV mit HAVP einbinden ...... 437 14.8 Konfiguration des Kerberos-Clients ...... 477 13.6.3 Dansguardian ...... 439 14.8.1 PAM und Kerberos auf dem Client ...... 478 13.7 Log-Auswertung: »Calamaris« und »Sarg« ...... 443 14.9 Replikation des Kerberos-Servers ...... 478 13.7.1 Calamaris ...... 443 14.9.1 Bekanntmachung aller KDCs im Netz ...... 478 13.7.2 Sarg ...... 444 14.9.2 Konfiguration des KDC-Masters ...... 482 13.8 Unsichtbar: »transparent proxy« ...... 445 14.9.3 Konfiguration des KDC-Slaves ...... 483 13.9 Ab in den Pool – Verzögerung mit »delay_pools« ...... 447 14.9.4 Replikation des KDC-Masters auf den KDC-Slave ...... 484 13.9.1 Funktionsweise – alles im Eimer! ...... 447 14.10 Kerberos Policies ...... 486 13.9.2 Details – Klassen, Eimer und ACLs richtig wählen ...... 448 14.11 Kerberos im LDAP einbinden ...... 488 13.10 Familienbetrieb: »Sibling, Parent und Co.« ...... 450 14.11.1 Konfiguration des LDAP-Servers ...... 488 13.10.1 Grundlagen ...... 450 14.11.2 Umstellung des Kerberos-Servers ...... 491 13.10.2 Eltern definieren ...... 452 14.11.3 Zurücksichern der alten Datenbank ...... 494 13.10.3 Geschwister definieren ...... 452 14.11.4 Bestehende LDAP-Benutzer um Kerberos-Principal erweitern ...... 495 13.10.4 Load Balancing ...... 453 14.11.5 Anbinden des zweiten KDCs an den LDAP ...... 500 13.10.5 Inhalte eigenständig abrufen: »always_direct« ...... 453 13.11 Cache-Konfiguration ...... 454 13.11.1 Cache-Arten: »Hauptspeicher« und »Festplatten« ...... 454 501 13.11.2 Hauptspeicher-Cache ...... 454 15 Samba 13.11.3 Festplatten-Cache ...... 455 15.1 Kurze Einführung in die Protokolle SMB und NetBIOS ...... 502 13.11.4 Tuning ...... 458 15.1.1 Das Protokoll SMB ...... 504 15.1.2 Das Protokoll NetBIOS ...... 504 15.1.3 Möglichkeiten mit NetBIOS ...... 505 14 Kerberos 459 15.1.4 Grundeinstellung der »smb.conf« ...... 505 15.1.5 Verwendung von WINS zur Namensauflösung ...... 507 14.1 Begriffe im Zusammenhang mit Kerberos ...... 460 15.1.6 Parameter für den »nmbd«in der »smb.conf« ...... 508 14.2 Funktionsweise von Kerberos ...... 461 15.1.7 Clientkonfiguration ...... 510 14.3 Installation und Konfiguration des Kerberos-Servers ...... 461 15.2 Samba als Fileserver ...... 511 14.3.1 Konfiguration der Datei »/etc/krb5.conf« ...... 462 15.2.1 Erstellen einfacher Freigaben ...... 511 14.3.2 Konfiguration der Datei »kdc.conf« ...... 464 15.2.2 Spezielle Freigaben ...... 514

14 15

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 14 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 15 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

15.2.3 Zusammenfassung mehrerer Freigaben ...... 516 15.9 Virtuelle Server und virtuelle Domänen ...... 582 15.2.4 Kopieren von Freigabeeinstellungen ...... 517 15.9.1 Zusammenführung der Server in jeder Arbeitsgruppe ...... 583 15.2.5 Freigaben in der Registry verwalten ...... 517 15.9.2 Zusammenführen der zwei Arbeitsgruppen auf einer Maschine ...... 584 15.2.6 Erstellen einer Freigabe in der Registry ...... 520 15.10 Distributed File System mit Samba ...... 588 15.2.7 Zugriff auf eine Freigabe aus der Registry ...... 520 15.10.1 Samba als DFS-Proxy ...... 588 15.2.8 Erweitern einer Freigabe in der Registry ...... 521 15.10.2 Samba als DFS-Link-Server ...... 589 15.2.9 Sichern der Freigabeeinstellungen aus der Registry ...... 521 15.11 Vertrauensstellung ...... 590 15.2.10 Löschen einer Freigabe aus der Registry ...... 522 15.11.1 Der Samba-Server als vertrauende Domäne ...... 592 15.2.11 Wiederherstellen von Freigaben in der Registry ...... 522 15.11.2 Der Samba-Server als vertraute Domäne ...... 592 15.2.12 Ablauf des Zugriffs auf eine Freigabe ...... 523 15.12 Sicherung der Konfigurationen ...... 594 15.3 Benutzerverwaltung ...... 526 15.3.1 Anlegen der Benutzer in der »smbpasswd« ...... 527 15.3.2 Umwandeln der »smbpasswd« in »tdbsam« ...... 529 15.4 Verschiedene »passdb backends« ...... 530 16 Samba4 597 15.4.1 »smbpasswd« ...... 530 15.4.2 »tdbsam« ...... 531 16.1 Vorbereitung für die Installation ...... 597 15.4.3 »ldapsam« ...... 532 16.1.1 Installation der Pakete unter Debian und Ubuntu ...... 598 16.1.2 Installation der Pakete auf einem SLES11 ...... 598 15.5 Samba als Domänencontroller ...... 534 15.5.1 Grundeinstellung des Domänencontrollers ...... 535 16.2 Konfiguration von Samba4 als Domaincontroller ...... 599 15.5.2 Weitere Möglichkeiten mit »rpcclient« ...... 536 16.2.1 Erster Start des DC unter Debian und Ubuntu ...... 603 15.5.3 Einrichten eines Domänenadministrators ...... 542 16.2.2 Erster Start des DC auf dem SLES11 ...... 603 15.5.4 Kennwortrichtlinien mit »pdbedit« erstellen ...... 544 16.3 Testen des Domaincontrollers ...... 604 15.5.5 Einrichten von Benutzern und Hosts in der Domäne ...... 546 16.3.1 Testen der Serverports ...... 604 15.5.6 Benutzeranmeldung ...... 553 16.3.2 Testen des DNS-Servers ...... 605 15.6 Winbind ...... 554 16.3.3 Test des Verbindungsaufbaus ...... 606 15.6.1 Verschachtelte Gruppen ...... 557 16.3.4 Test des Kerberos-Servers ...... 606 15.6.2 Mitgliedschaft in einer Windows-Domäne ...... 560 16.4 Benutzer- und Gruppenverwaltung ...... 607 15.6.3 Konfiguration des Kerberos-Clients ...... 561 16.5 Benutzer- und Gruppenverwaltung über die Kommandozeile ...... 608 15.6.4 Einstellung in der »smb.conf« ...... 563 16.5.1 Verwaltung von Gruppen über die Kommandozeile ...... 608 15.6.5 Beitritt zur Windows-Domäne ...... 565 16.5.2 Verwaltung von Benutzern über die Kommandozeile ...... 612 15.6.6 Testen der Domänenmitgliedschaft ...... 567 16.6 Die »Remote Server Administration Tools«(RSAT) ...... 617 15.6.7 Freigaben und Berechtigungen als Domänenmitglied ...... 569 16.6.1 Einrichtung der »RSAT« ...... 617 15.7 Samba als Printserver ...... 572 16.6.2 Beitritt eines Windows-Clients zur Domäne ...... 617 15.7.1 Freigaben für Druckertreiber und Spooling ...... 573 16.6.3 Benutzer- und Gruppenverwaltung mit den »RSAT« ...... 620 15.7.2 Einrichtung eines Printeradmins ...... 574 16.7 Gruppenrichtlinien ...... 621 15.7.3 Installation von Windows-Druckertreibern ...... 574 16.7.1 Verwaltung der GPOs mit den RSAT ...... 621 15.7.4 Zuordnung des Druckertreibers ...... 577 16.7.2 Erste Schritte mit dem Gruppenrichtlinieneditor ...... 621 15.8 Samba und Kerberos ...... 578 16.7.3 Erstellen einer Gruppenrichtlinie ...... 623

16 17

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 16 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 17 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

16.7.4 Verknüpfung der Gruppenrichtlinie mit einer OU ...... 626 18 LDAP 671 16.7.5 Verschieben der Benutzer und Gruppen ...... 628 16.7.6 GPOs über die Kommandozeile ...... 629 18.1 Einige Grundlagen zu LDAP ...... 672 16.8 Linux-Client in der Domäne ...... 630 18.1.1 Was ist ein Verzeichnisdienst? ...... 672 16.8.1 Konfiguration der Authentifizierung ...... 636 18.1.2 Der Einsatz von LDAP im Netzwerk ...... 673 16.8.2 Mounten über »pam_mount« ...... 637 18.1.3 Aufbau des LDAP-Datenmodells ...... 673 16.8.3 Vorbereitung auf dem SLES11 ...... 638 18.1.4 Objekte ...... 674 16.9 Zusätzliche Server in der Domäne ...... 640 18.1.5 Attribute ...... 675 16.9.1 Einrichtung eines Fileservers ...... 640 18.1.6 Schema ...... 675 16.9.2 Ein zusätzlicher Domaincontroller ...... 641 18.1.7 Das LDIF-Format ...... 679 16.9.3 Konfiguration des zweiten DC ...... 642 18.2 Unterschiede in den einzelnen Distributionen ...... 680 16.10 Was gehtnoch mit Samba4? ...... 650 18.2.1 Umstellung auf die statische Konfiguration unter SLES11 ...... 680 18.2.2 Umstellung auf die statische Konfiguration unter Ubuntu-Server und Debian ...... 681 18.2.3 Pfade und Benutzer ...... 681 17 NFS 651 18.2.4 Die Datenbank-Backends ...... 681 18.2.5 Grundkonfiguration des LDAP-Servers ...... 681 17.1 Unterschiede zwischen »NFSv3«und »NFSv4« ...... 651 18.3 Konfiguration des LDAP-Clients ...... 684 17.2 Funktionsweise von »NFSv4« ...... 652 18.3.1 Konfiguration des Clients auf dem SLES11 ...... 684 17.3 Einrichten des »NFSv4«-Servers ...... 653 18.3.2 Konfiguration des Clients unter Debian »Squeeze« ...... 685 17.3.1 Konfiguration des Pseudodateisystems ...... 653 18.3.3 Konfiguration des LDAP-Clients unter Ubuntu-Server ...... 686 17.3.2 Anpassen der Datei »/etc/exports« ...... 654 18.3.4 Erster Zugriff auf den LDAP-Server ...... 687 17.3.3 Tests für den NFS-Server ...... 656 18.4 Grafische Werkzeuge für die LDAP-Verwaltung ...... 688 17.4 Konfiguration des »NFSv4«-Clients ...... 658 18.4.1 Konfiguration des »LAM« ...... 690 17.5 Konfiguration des »idmapd« ...... 659 18.4.2 Konfiguration des Lamdaemons ...... 691 17.6 Optimierung von »NFSv4« ...... 661 18.5 Änderungen mit »ldapmodify« ...... 694 17.6.1 Optimierung des »NFSv4«-Servers ...... 661 18.5.1 Interaktive Änderung mit »ldapmodify« ...... 694 17.6.2 Optimierung des »NFSv4«-Clients ...... 662 18.5.2 Änderungen über eine »ldif«-Datei mit »ldapmodify« ...... 695 17.7 »NFSv4« und Firewalls ...... 663 18.6 Absichern der Verbindung zum LDAP-Server über TLS ...... 696 18.6.1 Erstellen der Zertifizierungsstelle ...... 697 17.8 NFS und Kerberos ...... 664 18.6.2 Erstellen des Serverzertifikats ...... 697 17.8.1 Erstellung der Principals und der »keytab«-Dateien ...... 665 18.6.3 Signieren des Zertifikats ...... 697 17.8.2 Kerberos-Authentifizierung unter Debian und Ubuntu ...... 667 18.6.4 Zertifikate in die »slapd.conf«eintragen ...... 698 17.8.3 Kerberos-Authentifizierung auf einem SLES11 ...... 667 18.6.5 Konfiguration des LDAP-Clients ...... 698 17.8.4 Anpassen der Datei »/etc/exports« ...... 668 17.8.5 NFS-Client für Kerberos unter Debian und Ubuntu konfigurieren ...... 668 18.7 Absichern des LDAP-Baums mit ACLs ...... 699 17.8.6 NFS-Client für Kerberos auf SLES11 konfigurieren ...... 668 18.7.1 Eine eigene Datei für die ACLs einbinden ...... 700 17.8.7 Testen der durch Kerberos abgesicherten NFS-Verbindung ...... 669 18.7.2 Erste ACLs zur Grundsicherung des DIT ...... 701 17.8.8 Testen der Verbindung ...... 669 18.7.3 ACLs mit regulären Ausdrücken ...... 702

18 19

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 18 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 19 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

18.7.4 ACLs für den Einsatz von Samba im LDAP ...... 703 19 Druckserver 761 18.7.5 Testen von ACLs vor dem Einsatz ...... 704

18.8 Filter zur Suche im LDAP-Baum ...... 706 19.1 Policies ...... 762 18.8.1 Testen der Fähigkeiten des LDAP-Servers ...... 706 19.1.1 Grundkonfiguration des Netzwerkzugriffs ...... 762 18.8.2 Einfache Filter ...... 707 19.1.2 Location policies ...... 763 18.8.3 Filter mit logischen Verknüpfungen ...... 708 19.1.3 Operation policies ...... 765 18.8.4 Einschränkung der Suchtiefe ...... 709 19.1.4 Weitere Konfigurationsmöglichkeiten ...... 766 18.9 Verwendung von Overlays ...... 710 19.1.5 Browsing ...... 768 18.9.1 Overlays am Beispiel von »dynlist« ...... 710 19.2 Drucker und Klassen einrichten und verwalten ...... 769 18.9.2 Weitere Overlays ...... 712 19.2.1 Drucker einrichten ...... 769 18.10 Partitionierung des DIT ...... 712 19.2.2 Klassen einrichten ...... 770 18.10.1 Einrichtung von »subordinate«-Datenbanken ...... 713 19.3 Druckerquotas ...... 771 18.10.2 Verwaltung von »Referrals« ...... 715 19.4 CUPS über die Kommandozeile ...... 772 18.10.3 Automatisierung des »chaining« ...... 719 19.4.1 Einstellen eines Standarddruckers ...... 772 18.10.4 Administration der beiden Teilbäume ...... 721 19.4.2 Optionen für einen Drucker verwalten ...... 773 18.11 Replikation des DIT ...... 723 19.5 PPD-Dateien ...... 775 18.11.1 Konfiguration des Providers ...... 724 19.6 CUPS und Kerberos ...... 776 18.11.2 Konfiguration des Consumers ...... 726 19.6.1 Erstellen des Kerberos-Principals und der »keytab«-Datei ...... 776 18.12 Die dynamische Konfiguration ...... 728 19.6.2 Umstellung der Authentifizierung am CUPS-Server ...... 777 18.12.1 Umstellung auf die dynamische Konfiguration am Provider ...... 729 19.7 Noch mehr Druck ...... 778 18.12.2 Umstellung auf die dynamische Konfiguration am Consumer ...... 733 18.13 Verwaltung von Weiterleitungen für den Mailserver Postfix ...... 735 18.14 Benutzerauthentifizierung von Dovecot über LDAP ...... 738 TEIL IV Infrastruktur 18.15 Benutzerauthentifizierung am Proxy Squid über LDAP ...... 740 20 Hochverfügbarkeit 781 18.15.1 Aktivierung der Authentifizierung über LDAP ...... 741 18.15.2 Benutzerbezogene Authentifizierung ...... 742 20.1 Das Beispiel-Setup ...... 781 18.15.3 Gruppenbezogene Authentifizierung ...... 742 20.2 Installation ...... 782 18.16 Benutzerauthentifizierung am Webserver Apache über LDAP ...... 744 20.2.1 Ubuntu 12.04 LTS und 14.04 LTS ...... 782 18.16.1 Konfiguration der Cache-Parameter ...... 744 20.2.2 Debian 6 und 7 (»Squeeze« und »Wheezy«) ...... 782 18.16.2 Konfiguration der Zugriffsparameter ...... 745 20.2.3 Debian 5.0 (»Lenny«) ...... 782 18.17 LDAP und Kerberos ...... 747 20.2.4 openSUSE ...... 783 18.18 Authentifizierung am LDAP-Server über »GSSAPI« ...... 749 20.2.5 SUSE Linux Enterprise Server ...... 783 18.18.1 Einrichtung der Authentifizierung unter Debian und Ubuntu ...... 749 20.3 Einfache Vorarbeiten ...... 783 18.18.2 Einrichten der Authentifizierung unter SLES11 ...... 755 20.4 Shared Storage mit DRBD ...... 784 18.19 Und was geht sonst noch alles mit LDAP? ...... 759 20.4.1 Grundlegende Konfiguration unter Debian und SUSE ...... 785 20.4.2 Grundlegende Konfiguration unter Ubuntu LTS ...... 785

20 21

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 20 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 21 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

20.4.3 Die wichtigsten Konfigurationsoptionen ...... 786 TEIL V Kommunikation 20.4.4 Die DRBD-Ressource in Betrieb nehmen ...... 787 843 20.5 Grundkonfiguration der Clusterkomponenten ...... 790 22 Netzwerk 20.5.1 OpenAIS und Corosync: das Benachrichtigungssystem ...... 791 22.1 Netzwerkkonfiguration mit »iproute2« ...... 843 20.5.2 Pacemaker: der Ressourcen-Manager ...... 792 22.1.1 Erste Schritte ...... 844 20.5.3 Quorum deaktivieren ...... 794 22.1.2 Syntax von »ip« ...... 846 20.6 Dienste hochverfügbar machen ...... 796 22.1.3 Links ansehen und manipulieren: »ip link« ...... 846 20.6.1 Die erste Ressource: eine hochverfügbare IP-Adresse ...... 797 22.1.4 IP-Adressen ansehen und manipulieren: »ip address« ...... 849 20.6.2 Hochverfügbarkeit am Beispiel von Apache ...... 799 22.1.5 Manipulation von ARP-Einträgen: »ip neighbour« ...... 853 20.6.3 DRBD integrieren ...... 801 22.2 Routing mit »ip« ...... 855 20.6.4 Fencing ...... 804 22.2.1 Routing-Informationen anzeigen ...... 855 22.2.2 Da geht noch mehr: »Advanced Routing« ...... 857 22.2.3 Die vorhandenen Regeln ansehen ...... 857 21 Virtualisierung 807 22.2.4 Eine neue Routing-Tabelle anlegen ...... 859 22.2.5 Ändern der »Policy Routing Database« ...... 859 21.1 Einleitung ...... 807 22.2.6 Routing über mehrere Uplinks ...... 861 21.2 Für den »Sysadmin« ...... 808 22.2.7 Fazit bis hierher ...... 866 21.3 Servervirtualisierung ...... 812 22.3 Bonding ...... 866 21.3.1 KVM ...... 813 22.3.1 Bonding-Konfiguration ...... 867 21.3.2 Xen ...... 815 22.3.2 Bonding bei Debian und Ubuntu ...... 870 22.3.3 Bonding bei SLES ...... 870 21.4 Netzwerkgrundlagen ...... 816 22.4 IPv6 ...... 871 21.5 Management und Installation ...... 819 22.4.1 Die Vorteile von IPv6 ...... 872 21.5.1 Einheitlich arbeiten: »libvirt« ...... 819 22.4.2 Notation von IPv6-Adressen ...... 873 21.5.2 Konsolenbasiertes Management: »virsh« ...... 823 22.4.3 Die Netzmasken ...... 874 21.5.3 Virtuelle Maschinen installieren ...... 827 22.4.4 Die verschiedenen IPv6-Adressarten ...... 874 21.5.4 »virt-install« ...... 829 22.4.5 Es geht auch ohne »ARP« ...... 876 21.5.5 Alleskönner: »Virtual Machine Manager« ...... 831 22.4.6 Feste Header-Länge ...... 877 21.5.6 Zusätzliche Konsolentools ...... 835 22.4.7 IPv6 in der Praxis ...... 879 21.6 Umzugsunternehmen: Live Migration ...... 837 22.5 Firewalls mit »netfilter« und »iptables« ...... 881 21.6.1 Vorbereitungen ...... 837 22.5.1 Der Weg ist das Ziel – wie Pakete durch den Kernel laufen ...... 881 21.6.2 Konfiguration im »Virtual Machine Manager« ...... 839 22.5.2 Einführung in »iptables« ...... 882 22.5.3 Regeln definieren ...... 884 22.5.4 Die klassischen Targets ...... 886 22.5.5 Ein erster Testlauf ...... 886

22 23

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 22 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 23 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

22.5.6 Rein wie raus: »Stateful Packet Inspection« ...... 887 24 Administrationstools 939 22.5.7 Das erste Firewallskript ...... 889 22.5.8 Externe Firewall ...... 891 24.1 Was kann dies und jenes noch? ...... 939 22.5.9 Logging ...... 897 24.1.1 Der Rsync-Daemon ...... 939 22.5.10 Network Address Translation und Masquerading ...... 899 24.1.2 Wenn’s mal wieder später wird: »screen« ...... 941 22.5.11 Weitere nützliche Module für »iptables« ...... 900 24.1.3 Anklopfen mit »nmap« ...... 941 22.6 Abschlussbemerkung ...... 903 24.1.4 Netzwerkinspektion: »netstat« ...... 945 22.7 DHCP ...... 903 24.1.5 Zugreifende Prozesse finden: »lsof« ...... 947 22.7.1 Funktionsweise ...... 903 24.1.6 Was macht mein System? »top«! ...... 951 22.7.2 Konfiguration ...... 904 24.1.7 Wenn gar nichts mehr geht – Debugging mit »strace« ...... 956 24.1.8 Prüfung der Erreichbarkeit mit »My traceroute« ...... 961 22.8 DNS-Server ...... 907 24.1.9 Subnetzberechnung mit »ipcalc« ...... 961 22.8.1 Funktionsweise ...... 907 22.8.2 Unterschied: rekursiv und autoritativ ...... 909 24.2 Aus der Ferne – Remote-Administrationstools ...... 963 22.8.3 Einträge im DNS: »Resource Records« ...... 909 24.2.1 PuTTY ...... 963 22.8.4 Die Grundkonfiguration ...... 910 24.2.2 WinSCP ...... 966 22.8.5 Zonendefinitionen ...... 913 24.2.3 Synergy ...... 967 22.8.6 Die erste vollständige Zone ...... 917 24.2.4 Eine für immer: »mosh« ...... 970 22.8.7 Die »hint«-Zone ...... 919 22.8.8 Reverse Lookup ...... 921 22.8.9 Slave-Server ...... 922 25 Versionskontrolle 973 22.8.10 DNS-Server und IPv6 ...... 924

22.9 Nachwort zum Thema Netzwerk ...... 926 25.1 Philosophien ...... 974 25.1.1 Lokal ...... 974 25.1.2 Zentral ...... 975 25.1.3 Dezentral ...... 976 23 OpenSSH 927 25.2 Versionskontrollsysteme ...... 977 23.1 Die SSH-Familie ...... 927 25.2.1 CVS ...... 977 23.1.1 Die Clients: »ssh«, »scp«, »sftp« ...... 928 25.2.2 Apache Subversion ...... 980 23.1.2 Der Server: »sshd« ...... 930 25.2.3 GNU Bazaar ...... 982 25.2.4 Mercurial ...... 984 23.2 Schlüssel statt Passwort ...... 932 25.2.5 Git ...... 986 23.2.1 Schlüssel erzeugen ...... 932 23.2.2 Passwortloses Login ...... 933 25.3 Kommandos ...... 989 23.2.3 Der SSH-Agent merkt sich Passphrasen ...... 934 23.3 X11-Forwarding ...... 935 23.4 Portweiterleitung und Tunneling ...... 936 23.4.1 SshFS: entfernte Verzeichnisse lokal einbinden ...... 937

24 25

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 24 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 25 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt Inhalt

TEIL VI Automatisierung TEIL VII Sicherheit, Verschlüsselung und Zertifikate

26 Scripting 993 28 Sicherheit 1049

26.1 Aufgebohrte Muscheln ...... 993 28.1 Weniger ist mehr ...... 1050 26.2 Vom Suchen und Finden: ein kurzer Überblick ...... 994 28.2 »chroot« ...... 1051 26.2.1 Die Detektive: »grep«, »sed« und »AWK« ...... 994 28.2.1 Dienste ...... 1051 26.2.2 Reguläre Ausdrücke verstehen und anwenden ...... 995 28.2.2 »jailkit« ...... 1053 26.3 Fortgeschrittene Shell-Programmierung ...... 998 28.3 Selbstabsicherung: »AppArmor« ...... 1056 26.3.1 Expansionsschemata ...... 998 28.3.1 Status und Betriebsarten ...... 1057 26.3.2 Umgebungsvariablen ...... 1003 28.3.2 Eigene Profile erstellen ...... 1060 26.3.3 »Back to bash«: ein tieferer Blick in die Muschel ...... 1004 28.4 Gotcha! Intrusion-Detection-Systeme ...... 1064 26.3.4 Logging in Skripten ...... 1008 28.4.1 »snort« und Co...... 1064 26.4 Tipps und Tricks aus der Praxis ...... 1011 28.4.2 Installation ...... 1066 26.4.1 Aufräumkommando ...... 1011 28.4.3 Regeln – »oinkmaster« ...... 1068 26.4.2 IFS ...... 1012 28.4.4 Anwendung von Intrusion-Detection-Systemen in der Praxis ...... 1073 26.4.3 Datumsmagie ...... 1012 28.5 Klein, aber oho: »fail2ban« ...... 1075 26.4.4 E-Mails aus einem Skript versenden ...... 1013 28.5.1 Konfiguration ...... 1075 26.4.5 Interaktive Programme steuern ...... 1013 28.5.2 Aktive Sperrungen ...... 1078 28.5.3 Reguläre Ausdrücke ...... 1079 28.6 OpenVPN ...... 1080 27 Monitoring – wissen, was läuft 1015 28.6.1 Serverinstallation – OpenVPN, PKI und Co...... 1081 28.6.2 Roadwarrior ...... 1088 27.1 Nagios ...... 1016 28.6.3 Site-to-site ...... 1093 27.1.1 Installation ...... 1017 28.6.4 Simple-HA ...... 1095 27.1.2 Allgemeine Konfiguration ...... 1020 28.6.5 Tipps und Tricks ...... 1097 27.1.3 Konfiguration der Objekte ...... 1021 27.1.4 Eigene Hosts und Services konfigurieren ...... 1030 27.1.5 Benachrichtigungen ...... 1032 29 Verschlüsselung und Zertifikate 1103 27.1.6 NRPE – Partitionsfüllstand und andere lokale Werte remote überprüfen 1035 27.1.7 PNP4Nagios – grafische Aufbereitung der Messwerte ...... 1039 29.1 Definition und Historie ...... 1103 27.2 Monitoring mit Munin ...... 1043 29.2 Moderne Kryptologie ...... 1105 27.3 Fazit ...... 1045 29.2.1 Symmetrische Verschlüsselung ...... 1105 29.2.2 Asymmetrische Verschlüsselung ...... 1106 29.3 Den Durchblick behalten ...... 1107 29.3.1 Das Grundproblem ...... 1107 29.3.2 Verwendungszwecke ...... 1108

26 27

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 26 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 27 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Inhalt

29.3.3 Umsetzung mithilfe einer PKI ...... 1108 29.3.4 X.509 ...... 1109 29.3.5 Ein anderer Ansatz: PGP (Web-of-Trust) ...... 1111 29.4 In der Praxis ...... 1112 29.4.1 Einrichtung einer PKI mit Server- und E-Mail-Zertifikaten ...... 1112 29.4.2 E-Mail-Verschlüsselung ...... 1123 29.5 Neben der Kommunikation – Dateiverschlüsselung ...... 1130 29.5.1 Dateien ...... 1130 29.5.2 Devices ...... 1131 29.5.3 Festplatten/System ...... 1133 29.6 Rechtliches ...... 1137 29.6.1 Fortgeschrittene elektronische Signatur ...... 1138 29.6.2 Qualifiziertes Zertifikat ...... 1138 29.6.3 Qualifizierte elektronische Signatur ...... 1138 29.6.4 Sichere Signaturerstellungseinheit (SSEE) ...... 1139

Die Autoren ...... 1141 Index ...... 1143

28

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 28 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: ucsencs.def , Aktueller Job: administration Index

Index

A Hot Backup 233 inkrementell 233 access-Maps 322 loop device 247 address_verify 327 vollständig 233 ADS 560 Wechseldatenträger 241 Advanced Routing 857 Backupbrowser 506 alien 194 Backupmethode 232 Amanda 234 Backupstrategie 231, 232 Amavisd-new 333 Bacula 234, 262 mit Postfix 344 Bareos 234, 262 amavisd-release 343 Backupvolumen 264 Antivirus (Mail) 333 bconsole 265 Apache 281 Client 274 HTTPS anbieten 283 Datenbanken 263 Kerberos 287 und Rear 277 ModSecurity 288 bash 998 Server Name Indication 286 declare 1006 Server-Status 293 Expansion 998 Tuning 291 functions 1006 virtuelle Hosts 281 local 1005 Apache Subversion 980 Logging in Skripten 1008 APIPA 849 Operationen 1000 AppArmor 1056 Spezialparameter 1004 eigene Profile 1060 test 1007 Statusabfrage 1058 Tipps und Tricks 1011 apt-cacher-ng Variablen 1005 Aufräumen 215 Bazaar GNU Bazaar Cache bereinigen 215 bconsole 265 Clientkonfiguration 216 BDC 507, 532 Import 214 Benutzerprofil 515 Konfiguration 212 Berechtigungsstruktur 154 Architektur 53 Betrieb 54 Archiv in einem anderen Verzeichnis Bind-Mount 76 entpacken 236 bind9 arp 843, 845 Ablauf der Namensauflösung 908 AutoYaST 233 autoritativ 907 awk 994 iterativ 908 rekursiv 908 B BIND9_DLZ 601 BIND9_FLATFILE 601 Blacklisten (Mail) 322 B+-Baum 139 Blattobjekte 674 B-Baum 139 Blockgröße 141 Backscatter 326, 341 Bonding 847, 866 Backup 231 Betriebsmodi 866 Cold Backup 233 Bonding-Treiber 867 differenziell 233

1143

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1143 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

bonding MaxClients 766 dd_rescue 247 Kommentare 911 bond0 868 MaxClientsPerHost 766 deb-mirror Zeilenabschluss 911 Bootloader 63 MaxCopies 766 Clientkonfiguration 224 Nameserver 907 BOUNCE-Destiny 340 MaxJobs 767 deb-Paket 191 Negativ Cache TTL 914 btree (Postfix) 320 MaxJobsPerUser 766 aus Repositorys 193 Records 909 BtrFS 148 PreserveJobFiles 767 Lokal 193 Refresh 914 Builtin-Gruppe 538 PreserveJobHistory 767 debmirror 217 rekursiv 908 LOCAL 765 Konfiguration 218 Resource Records 909 C OWNER 766 demoCA 697 Retry 914 Policies 762 Desktop-Virtualisierung 808 Reverse Lookup 921 CA.pl 697 location policies 762, 763 DevOps 55 RR 909, 915 CA.sh 697 operation policies 762, 765 DFS 588 Serial 914 Calamaris 443 printer instances 773 DFS-Link 588 serial 924 Centreon 1016 printers.conf 772 DFS-Proxy 588 Slave-Server 922 chain 719 SYSTEM 766 DFS-Server 589 SOA 913 chaining 719 SystemGroup 766 DHCP 903 TTL 913 checkinstall 198 Web-Frontend 763 Client 903 Zonentransfer 923 chroot 1051 cupsd.conf 762 default-lease-time 905 DNS-Server 600 FTP 1051 CVS 977 DHCPACK 904 DNSBL 323 jailkit 1053 DHCPDISCOVER 904 domain component (dc) 683 CIFS 502 D DHCPOFFER 904 Domainadministrator 542 ClamAV 333, 335 DHCPREQUEST 904 Domaincomputer 547 classes.conf 772 DANE 316 Leases 906 Domaincontroller 534, 597 Cluster 781 Dansguardian 439 max-lease-time 905 Domaintree 591 Knoten 781 DAP-Datenbank 672 Relay-Agent 904 doveadm 348 Cluster Resource Manager 792 Dateisystemattribut 166 statische Zuweisung 906 Dovecot 345 cn=config 729 chattr 167 subnet 905 auth-Socket 330 common name 674 fstab 167 Diffie-Hellmann 332 SASL 330 Corosync 790 NFS 166 dig 918 DRBD 784 Authkey 792 Dateisysteme 137 Disaster Recovery 231 im Cluster 801 COW (Copy on Write) 141 BtrFS 148 DISCARD-Destiny 340 Druckauftrag 573 Cronjob 649 Ext2/3 141 DNS 907 Drucker CUPS CUPS 761 FAT 137 A-Record 916 Druckertreiber 573, 574 Browsing 768 Journaling 140 AAAA-Record 916 dumpe2fs 143 BrowseInterval 768 ReiserFS 144 Ablauf der Namensauflösung 908 dynlist BrowseRelay 768 XFS 145 autoritativ 907 dyngroup.schema 711 classes.conf 772 Dateisystemrecht 158 BIND 910 CUPS-Port 762 ACL 158 CNAME 917 E cupsd.conf 762 Default-ACL 161 DENIC 922 Druckaufträge formatieren 772 getfacl 160 Expire 914 E-Mail-Verschlüsselung 1122 Drucker anlegen 769 maske 162 FQDN 913 e2fsck 144 Druckerquotas 771 setfacl 160 Glue-Record 916 edquota 174 Encryption Required 763 Attribute 167 hint-Zone 919 Empfängervalidierung 326 Kerberos 776 fstab 159 in-addr.arpa 921 Engineering 54 DefaultAuthType 777 Dateiverschlüsselung 1130 iterativ 908 env 1002 Kerberos-Principal 776 Datenbank 359 listen-on 911 Environment 1002 Klassen einrichten 770 dd 238, 245 local resolver 907 Etherchannel 866 Limit Master Boot Record 245 minimum 914 Expansion 998 TempDir 767 MBR sichern 245 MX-Record 916 Ext2 141 Limits 766 Partitonstabelle sichern 246 named.conf 910 Ext3 141

1144 1145

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1144 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1145 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

F group_mapping.tdb 538 mkinitramfs 77 Adresse 873 Groupmapping 538, 541 modifizieren 80 Adressraum 872 FAI 233 groupOfUniqueNames 702 RAID 77 anycast 875 fail2ban 1075 GRUB Internet Assigned Numbers Authority 871 DAD 876 fail2ban-regex 1079 chroot 76 iotop 955 Header-Aufbau 877 iptables 1078 grub-install 64 ip 843, 851 Header-Länge 877 False Positive 334 GRUB-Shell 65 neighbour add 854 Interface Identifier 874, 878 FAT 137 initrd 67 address show 846 ipv6calc 926 Fencing 804 memtest 70 label 850 link-lokal 876, 879 Festplattenverschlüsselung 1133 menu.lst 66 link 846 Multicast 875 Festplattenzugriffe ermitteln 955 Recovery 75 set 848 Multihoming 878 Fileserver 511 Software-RAID 68 link show 846 NAT 872 Filesystem-Check 247 GRUB 2 69 neighbour 845, 853 Neighbor Cache 877 forest 591 /etc/default/grub 74 route 845 Neighbor Discovery 876 Freigabe 511, 523 grub.cfg 70 routing 855, 858 Network Prefix 874 Freigaben GRUB-Shell 64 add 856 Netzmaske 874 export 519 Gruppenrichtlinien 553, 621 delete 856 Notation 873 Registry 517 samba-tool gpo 621 Priorität 859 ping6 880 registry shares = yes 520 Verknüpfung 626 show 855 Privacy Extension 879 smbclient 520 Gruppenrichtlinieneditor 621 ipcalc 961 ssh 879 tdbtool 518 Gruppenrichtlinienobjekt 621 IPP 761 unicast 874 freshclam 335 Gruppenrichtlinienverwaltung 623 iproute2 843 fstab 159 Gruppenrichtlinienverwaltungs-Editor 624 iptables 881 J FTP 307 chains 881 aktives FTP 307 H connlimit 901 Journaling 140 Anonymous 308 Default Policy 883, 890 Ext3 142 Download-Server 308 H-Baum 139 DMZ 891 Jxplorer 689, 731 IPv6 309 hash (Postfix) 320 DNAT 899 LDAP-Anbindung 313 heimdal-client 561, 606 DoS 899 K passives FTP 308 hide unreadable 516 Filter 884 FORWARD 882 Protokoll 307 Hochverfügbarkeit 781 KDC-Master 478 ICMP 885, 896 SSL-Verschlüsselung 311 Kerberos 459, 561 INPUT 882 vsftpd 308 I ACL 467 limit 898 Zugriff auf Homeverzeichnisse 310 addprinc 469 limit-burst 898 FTP-Server FTP IANA 871 Authentication Server 460 lo 890 Icinga 1015 delprinc 475 Logging 897 G ID-Mapping 610, 636 kadmin 468, 482 MASQUERADE 899, 900 IDS/IPS 1064 kadmin.local 468 Module 885 Geräteverschlüsselung 1131 in der Praxis 1073 kdb5_util 467 Multiport-Modul 890 getent 567, 688 ifconfig 843, 844, 850 kdb5_util dump 485 NAT 899 getent group 565 Image KDC-Slave 478 OUTPUT 882 Git 986 erstellen 246 kdc.conf 462, 464 POSTROUTING 882 globale Gruppe 538 mounten 247 kdestroy 478 PREROUTING 881 GNU Bazaar 982 IMAP 345 Key Distribution Center 460 recent 901 GnuPG 1111 inet_interfaces 316 keytab 474 Regeln löschen 883 GOsa 689 init-Skript 603 kinit 470 SNAT 899 GPO 621 initrd 77 klist 470 SPI 887 grep 994 erstellen 77 kpropd 484 TARGET 883, 886 Greylisting 324 initramfs.conf 77 kpropd.acl 484 IPv6 872

1146 1147

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1146 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1147 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

krb5.conf 462 Cache-Parameter 744 ldapmodify 694 physical extent 106 ktadd 482 Module 744 ldapsam 532 physical volume 106 ktrem 476 Zugriffsparameter 745 ldapsearch 687, 695, 731 pvdisplay 108 ktutil 475 apparmor 699 LDIF 687 pvmove 115 listprincs 469 Attribute 675 Lebenseinstellung 59 pvreate 108 PAM 472, 478 authz-regexp 753, 757 libnss-ldap 685 Spiegelung 119 pam-config 472 bdb 681 libpam-ldap 685 Spiegelung hinzufügen 113 Policies 486 Datenmodell 673 libvirt 819 vgcreate 109 Principal 460 Distinguished Name 673 XML-Format 821 vgdisplay 109 randkey 470 DIT 673 LightHttpd 295 vgextend 112 Realm 460 dynamische Konfiguration 680 HTTPS anbieten 297 vgreduce 115 Replikation 478 Filter 707 virtuelle Hosts 295 volume group 106 SRV-Einträge 479 Verknüpfung 708 limits.conf 184 LVM-Snapshot 233 Ticket 460 GSSAPI 749, 755 Link Aggregation 866 Ticket Granting Server 460 Debian/Ubuntu 749 Linux-Client 630 M Ticket Granting Ticket 460 hdb 681 winbind 631 Kerberos-Server 606 Kerberos 747 Linux-Konto 526 Maildir 347 Kerberos-Tickets 637 PAM 754 LIR 871 Makefile 195 Kickstart 233 Principal 747 Lire (Log-Auswertung) 353 autotools 196 kinit 562, 606 SLES11 755 LMHOSTS 507 Master Boot Record 63 klist 563, 606, 637 keytab 748 LMTP 318, 348 Masterbrowser 506 Knotentyp 510 ldapwhoami 752 Load Balancing (squid) 453 mdadm 96 Kommunikationsprotokoll 524 LDIF 679 Log-Auswertung (Webserver) 303 Mercurial 984 kpartx 248 Objekte 673, 674 Logical Volume Manager LVM Migrationen 261 KVM 813 ODI 707 Logonscripte 549 Mirror 217 libvirt 819 OID 675 kix 550 Clientkonfiguration 224 Live Migration 837 registrieren 675 lokale Gruppe 538 mke2fs 141 Netzwerk 815 ou 673 loop device 247 mkfs.reiserfs 145 virsh 823 Overlay 710, 712 lpd 761 mkfs.xfs 145 virt-clone 836 dds 712 lpoptions 772 mkinitramfs 77 virt-install 829 dynlist 711 lpstat 772 mkinitrd 79 virt-top 835 refint 712 lsof 947 Mobile SSH 970 virt-viewer 836 slapd.conf 710 Dateizugriffe 948 ModSecurity 288 virtio 814 valsort 712 Netzwerkressourcen 948 mosh 970 Virtual Machine Manager 831 pre-Authentication 750 LVM 104 Mount Count (Ext) 142 VM-Installation 827 Replikation 723 Aufbau einer Volume Group 108 mtr 960 Schema 675 Begriffe 106 Munin 1043 L Squid 740 Eine defekte Festplatte ersetzen 115 Nodes 1044 squid.conf 741 Erweiterung einer Volume Group 112 My traceroute 960 LAM 682, 689 statische Konfiguration 680 Erweiterung eines Volumes 111 myhostname 317 Lamdaemon 691 supportedControl 707 Grundlagen 106 mynetworks 317 ACL 693 supportedExtension 707 Installation 107 MySQL 359 visudo 693 Syntaxbeschreibung 678 Kommandos 123 Benutzerkonto anlegen 360 LDAP 671 TLS logical extent 106 Indextuning 378 ACL 699 Verbindungsaufbau 698 logical volume 106 Installation 359 Aufbau 699 UTF-8 673 lvconvert 113 Point-In-Time-Recovery 381 Passwörter 701 LDAP-Account-Manager 608 lvcreate 110 Replikation 360 slapd.conf 700 LDAP-Client 684 lvdisplay 110 Root-Kennwort 360 subschema 701 ldap.conf 686 lvextend 111 Speichertuning 371 Apache 744 ldapadd 683, 688 Mirroring 119

1148 1149

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1148 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1149 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

N gss/krb5 668 TLS-Auth 1086 Partitionierung 153 gss/krb5i 668 explicit-exit-notify 1097 passdb backend 526 Naemon 1015 idmapd 659 Modemverbindungen (DSL-Mo- passdb.tdb 538 Nagios 1015 lockd 652 dem/UMTS) 1099 Passwort 613 NRPE 1035 mountd 652 Rechteanpassungen auf Windows-Clients 1100 Patchen 202 Performanceüberwachung 1039 Portmapper 652 register-dns 1097 diff 202 Plugins 1016 Pseudodateisystem 653 Roadwarrior 1088 patch 204 PNP4Nagios 1039 root_squash 655 Client 1091 pdbedit 529, 542, 544, 552, 608 named.conf 910 rpcinfo 656 Server 1088 PDC 507, 532 directory 911 rsize 662 Simple-HA 1095 Perfect Forward Secrecy 332 forwarders 912 secure 655 Site-to-site 1093 Performanceüberwachung 1039 Port 912 statd 652 Tipps und Tricks 1097 Pflogsumm 325 zone 912 subtree-checking 656 Debug 1101 PGP 1111 Namensauflösung 505 sync 655 explicit-exit-notify 1097 phpldapadmin 689 Namensstandard 151 UTF-8 652 Rechteanpassungen auf Windows-Cli- PNP4Nagios 1039 Nameserver 603 wdelay 657 ents 1100 Point’n’Print 577 Ablauf der Namensauflösung 908 wsize 662 register-dns 1097 Point-In-Time-Recovery 381 autoritativ 907 Nginx 299 Windows-Installationspfad 1097 poledit.exe 553 iterativ 908 NIC Teaming 866 Windows-Routing/-Netzwerk 1098 Policy Routing 857 rekursiv 908 NIS 529 Windows-Schnittstellenreihenfolge 1098 PRDB 857 NDS nis.schema 682 tun/tap 1081 Priorität 859 filelocking 651 nmap 941 Zertifikatsverteilung 1087 POP3 345 net groupmap 538 nmbd 502 Operation 54 Port 139 523 net rpc join 565 nmblookup 506, 508 os-level 506 Port 445 523 net sam 538 NRPE 1035 Overlay 710 Port-Scans 941 NetBEUI 504 NSS 554 Postfix 315 NetBIOS 502, 504 nsswitch.conf556,567,685,686 P als Relay 318 Namensauflösung 508 ntlm 640 Grundkonfiguration 316 NetBIOS-Client 505 NTP-Server 784 Pacemaker 792 main.cf 316 NetBIOS-Domainname 600 NUD 853 Constraints 800 master.cf 316 NETLOGON 549 CRM-Shell 795 Postgrey 325 netlogon 606 O Ressource 796 postmap 320 NetSaint 1015 Paketverwaltung 189 PostScript 761 netstat 523, 604, 647, 945 OpenAIS 790 deb 191 PPD 775 Netzwerke 843 Authkey 792 Pakete erzeugen 198 printeradmin 574 Netzwerkkarte 846 OpenLDAP 671 rpm 190 printers.conf 772 Flag 847 OpenSSH 927 Update-Pakete 205 Printserver 572 Interfacename 848 passwortloser Login 933 Update-Sicherheit 209 rpcclient 577 MAC 847 Port-Forwarding 936 PAM 176, 472, 636 Privilegien 537 MTU 847 Protokoll 931 /etc/pam.d 182 proc 129 Netzwerkpräfix 851 Schlüssel 932 Konfiguration 182 config.gz 131 primäre IP-Adresse 852 X11-Forwarding 935 Kontrollflags 177 CPU 129 Netzwerkmaskenberechnung 961 OpenSSL 1112 Modulargumente 178 net 134 NFS 651 openssl.cnf 696 Modulaufgaben 179 RAM 130 async 655 openVPN 1080 Modulpfade 178 sysctl.conf 135 bind-Mountpoint 653 Debug 1101 pam-config 472 Proxy, Squid 403 exportfs 657 easy-rsa 1081 PAM-Module 631 Public Key Infrastructure 1108 exports 668 CA 1084 pam_mount.conf.xml 639 Einrichten 1112 fsid 656 Clientzertifikat 1087 pamifizieren 176 PuTTY 963 fstab 659 Serverzertifikat 1085 parent (squid) 452 Pyzor 335

1150 1151

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1150 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1151 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

Q Registry 517 LDAP-Server 526 Netbios name 509 Reguläre Ausdrücke 995 nested groups 557 os level 509 Quarantäne (E-Mail) 333, 341 Syntax 996 net getlocalsid 535 preferred master 509 Quota-System 169 ReiserFS 144 Samba-Konto 526 profile acls 516 aqouta.group 170 reiserfstune 145 Samba-Ports 604 read only 512 aquota.user 170 Relax and Recover 249 samba-tool 600, 601, 607, 608 winbind separator 540 edquota 172 relay_domains 318, 329 create username 613 winssupport 508, 509 fstab 170 Remote Server Administration Tools 617 disable user 615 SMB2 503 grpquota 170 Replikation 360 group add 610 smbclient 606 Hardlimit 173 Master-Master 368 group addmembers 611 smbd 502 Journaling-Quotas 171 Master-Slave 360 group list 608 smbpasswd 526, 527, 530 quotacheck 170 Repository-Mirror 217 group listmembers 609 SMTP-Auth 329 quotaon 172 repquota 173 user 612 smtpd_recipient_restrictions 320 repquota 175 Rescue-Image (ReaR) 250 user delete 616 snort 1064 Softlimit 173 resolv.conf 603, 907 user enable 615 acidbase/BASE 1073 usrquota 170 Resolver 606 user list 613 mysql 1068 Restrictions 320 samba.schema 682 oinkmaster 1069 R rfc2307bis.schema 682 Sarg 444 Regeln 1068 Richtlinien 549 SASL 329 snort.conf 1066 RID 534, 635 scp 929 Spam-Score 338 RAID 91 RIR 871 screen 941 Spam-Tagging 339 Level 0 92 root-Exploit 316 Scripting 993 spamd/spamc 336 Level 1 92 root-Shell 38 sed 994 Spamfilter 333 Level 10 93 route 843, 845, 855 Serverports 604 Spamhaus 324 Level 5 92 rpcclient 535, 536 sfdisk 246 Spezialbits 155 Level 6 93 rpm-Paket 190 sftp 930 SGID 156 mdadm 96 aus Repositorys 193 SGID 156 Sticky-Bit 157 softraid 95 Lokal 193 shadow 544 SUID 156 Razor 335 RRDTool 1039 Shell-Expansion 998 Spoolverzeichnis 573 RBL 323 RSAT 617 Shinken 1016 Squid 403 RBL/DNSBL 333 rsync 238, 644, 645 sibling (squid) 452 acl-Objekte 411 Realm 600 dry-run 648 SID 516, 534 basic_ldap_auth 430 ReaR 249 komprimiertes Backup 243 Signaturgesetz 1137 basic_ncsa_auth 421 default.conf 260 Sichern über das Netz 239 simple bind 684 Cache 407 EXTERNAL 252 spiegeln 238 simpleSecurityObject 725 Calamaris 443 Konfiguration 251 ssh 244 Single Sign-on 671 Dansguardian 439 local.conf 251 Rsync-Daemon 939 slap.access 699 delay_access 450 Migrationen 261 rsync-Server 645 slapacl 704, 706 delay_class 448 NETFS 252 rsyncd 647, 939 slapd.conf 681, 723 delay_parameters 449 P2P 261 rsyncd.conf 646 slapd.d 730 delay_pool 447 P2V 261 Rsyslog 394 slappasswd 682 delay_pools N 448 Recovery-Prozess 258 Filter, ausdrucksbasiert 395 slaptest 730 ext_ldap_group_acl 433 REQUESTRESTORE 251 Filter, eigenschaftsbasiert 394 slurpd 724 ext_wbinfo_group_acl 432 Rescueimage 251 SMB 502 http_access-Regeln 414 und Bareos 277 smb.conf 504 intercept 445 V2P 261 S [homes] 514 IP-Authentifizierung 416 V2V 261 copy 517 Logging 408 Referral 713, 715 sa-update 336 domain master 509 negotiate_kerberos_auth 426 Regex 995 Samba 501 local master 509 Netzwerk 406 Syntax 996 [global] 505 Kerberos 578 Netbios aliases 509 ntlm_auth 423

1152 1153

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1152 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1153 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index Index

Sarg 444 Consumer 723 Archiv prüfen 236 Geräte 1131 squidGuard 434 delta-syncrepl 724 exkludieren von Dateien 236 Historie 1103 Testumfeld 406 entryCSN 723 ssh 237 Kerckhoffs Grundsätze 1105 transparent 445 entryUUID 723 umask 237 Public Key Infrastructure 1108 Verzögerung des Datenverkehrs (de- Provider 723 tc 843 Einrichten 1112 lay_pools) 447 refreshAndPersist 723 tdb-Datenbank 517 Rechtliches 1137 Verzeichnisdienste 422 refreshOnly 723 tdbbackup 594 Symmetrisches Verfahren 1105 squid Sessioncookie 723 tdbdump 518, 594, 635 Web-of-Trust (PGP) 1111 always_direct 453 Sessionlog 725 tdbsam 526, 531 X.509-Zertifikate 1109 Beziehungen 450 Synergy 967 tdbtool 518 Versionskontrolle 973 Cache 454 Syslog 385 Terminal-Multiplexer 941 Dezentral 976 Cache anlegen 457 Datenbank 398 testparm 535 Lokal 974 cache_dir 455 Facility 385 Thrunk 1015 Philosophien 974 cache_mem 454 Log-Level 385 Ticket 460 Verteilte Systeme 976 cache_peer 451 Priority 385 TLS 672, 696 Zentral 975 Festplatten-Cache 455 Remote-Logging 396 ldap.conf 698 Versionskontrollsysteme 973 Festplatten-Cache-Berechnung 456 Severity 385 ldapsearch 698 Überblick 977 Hauptspeicher-Cache 454 Syslog-ng 388 slapd.conf 698 Apache Subversion 980 inodes 456 Destination-Objekt 390 top 951 CVS 977 Load Balancing 453 Filter-Objekt 392 transport_maps 318 Git 986 parent 452 Log-Objekt 393 tree 153, 155 GNU Bazaar 982 sibling 452 Source-Objekt 390 Trunking 866 Mercurial 984 squidGuard 434 SyslogD 387 tune2fs 142 Vertrauensstellung 590 SSH 927 Systemadministrator 41 vertrauende Domäne 590 SshFS 937 Arbeitstechniken 48 U vertraute Domäne 590 ssh (Client) 928 Aufgaben 42 Verzeichnisdienst 671 SSH-Agent 934 DevOps 55 udev 124 Verzeichnisstruktur 155 SSHd (Server) 930 Einordnung 53 ulimit 183 virsh 823 SshFS 937 Fähigkeiten und Fertigkeiten 47 Hardlimit 185 virt-clone 836 SSL-Zertifikat Intermediate/Advanced System Administra- limits.conf 184 virt-install 829 für Apache 283 tor 45 Softlimit 185 virt-top 835 für Dovecot 349 Job-Definitionen 42 umask 157 virt-viewer 836 für LightHttpd 297 Junior System Administrator 44 Umgebungsvariablen 1002 Virtual Machine Manager für Postfix 331 Novice System Administrator 43 update-initramfs 77 Live Migration 837 Standarddrucker 772 Senior System Administrator 46 Upstart 81 Virtual Machine Manager (VMM) 831 standby-Master 733 Softskills 47 Event 83 virtual-Maps 328 Sticky-Bit 157 Unternehmensgröße 43 Prozessdefinitionen 85 VirtualBox 808 STONITH 804 Verhältnis zu anderen Administratoren 51 Import/Export 812 strace 956 Verhältnis zu Benutzern 50 V Installationsmedium anlegen 809 strong bind 684 Verhältnis zu Chef/Vorgesetzten 50 Netzwerkkonfiguration 810 Subnetzberechnung 961 Verhaltenskodex 57 Virtualisierung 807 VCS Versionskontrollsysteme subordinate 712 SysVinit 81 Desktop-Virtualisierung 808 Verbindungsaufbau 606 subordinate Referral 717 sysvol 606 Grundlagen 807 Verschlüsselung 1103 Subversion Apache Subversion KVM 813 Asymmetrisches Verfahren 1106 SUID 156 libvirt 819 T Dateien 1130 supportedFeatures 707 Netzwerk 815 E-Mails 1122 SVN Apache Subversion virsh 823 tar 235 GnuPG 1123 SWAT 514 virt-install 829 Archiv erstellen 235 S/MIME 1130 syncprov 724 virtio 814 Archiv im aktuellen Verzeichnis entpacken 235 Festplatten 1133 syncrepl 723 Archiv komprimieren 236 Live Migration 837

1154 1155

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1154 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% S. 1155 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Index

Server-Virtualisierung 812 PAM 557 vir-clone 836 winbind seperator 565 vir-top 835 Windows Remote Server Administration Tools virt-viewer 836 (RSAT) 607, 617 Virtual Machine Manager (VMM) 831 Windows-ACL 570 Xen 814 WINS 507, 508 virtuelle Domänen 582 WinSCP 966 virtuelle Server 582 wireshark 525 vmail (Userkennung) 345 Workgroup 506 vsftpd 1051 X W X.500 672 wbinfo 567 X.509-Zertifikate 1109 wbinfo -g 634 Xen 814 wbinfo -u 634 XFS 145 Web-of-Trust 1111 xinetd 645, 647 Webalizer 303 xinetd.d 645 Webserver 281 Apache 281 Z LightHttpd 295 Nginx 299 Zeitserver 784 Whitelist (Mail) 322 Zertifikate 1109 Wietse Venema 315 Zugriffsrechte 151 Winbind 539, 554, 610, 630

1156

Deimeke/Heinlein/Kania/Kühnast/van Soest – Das Linux-Administrationshandbuch – Dritte Auflage – Sommer 2014 Galileo Press, ISBN: 978-3-8362-3020-9 Layout: gp.cls, Version 3.5.016 (27th June, 2014), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 12. September 2014, 10:47 Uhr Umlaut-Check: äöüÄÖÜ. Ligaturen: fl fi S. 1156 Einstellungen: ohne Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0% Aktuelle Quelldatei: administration.ind , Aktueller Job: administration Wissen, wie’s geht.

Dirk Deimeke unterstützt als Mitglied des Kernteams das Projekt »Taskwarrior«, eine Aufgabenverwaltung für die Kommandozeile. Seit Juni 2014 arbeitet er als Senior System Engineer für die Bank Vontobel AG. Neben Artikeln in seinem Blog veröffentlicht Dirk monatlich mit Roman Hanhart den IT-Podcast »DeimHart«.

Stefan Kania hatte seinen ersten Kontakt mit Linux im Jahr 1993 während seiner Ausbildung zum Informatiker am b.i.b E.V. in Paderborn. Seit 1997 ist er freiberuf- lich als Consultant und Trainer tätig. Seine Schwerpunkte liegen in der Implemen- tierung von Samba und LDAP sowie in Schulungen zu beiden Themen.

Charly Kühnast arbeitet beim Kommunalen Rechenzentrum Niederrhein in Kamp- Lintfort. Dort ist er für die Verfügbarkeit und Sicherheit der Internet-Infrastruktur verantwortlich. Daneben gibt er sein Wissen als Lehrbeauftragter an verschiedenen Hochschulen weiter.

Daniel van Soest arbeitet im Kommunalen Rechenzentrum Niederrhein in Kamp- Lintfort. Der Schwerpunkt seiner Tätigkeit liegt auf der Betreuung der zentralen Internet-Infrastruktur und der Administration der Sicherheitssysteme.

Peer Heinlein betreibt in Berlin den politischen, gemeinnützigen Internet-Provider »JPBerlin«. Er installiert und pflegt dort sämtliche Server, spricht TCP/IP und UUCP im Schlaf und legt wegen der besonderen politischen Nutzerstruktur des Providers größten Wert auf Sicherheit, korrekte Konfiguration und Zuverlässigkeit der Server.

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Gerne dürfen Sie diese Dirk Deimeke, Stefan Kania, Charly Kühnast, Leseprobe empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Daniel van Soest, Peer Heinlein Die vorliegende Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Linux-Server – Das umfassende Handbuch Nutzungs- und Verwertungsrechte liegen beim Autor und Verlag. 1.156 Seiten, gebunden, 3. Auflage 2014 49,90 Euro, ISBN 978-3-8362-3020-9 Teilen Sie Ihre Leseerfahrung mit uns! www.galileo-press.de/3685