Sie sind auf Seite 1von 547

Harald Maaen

LPIC-1
Sicher zur erfolgreichen Linux-Zertifizierung
Liebe Leserin, lieber Leser,
in vielen Unternehmen gilt ein Zertifikat des LPI als Garant fr umfassende Linux-
Kenntnisse von Mitarbeitern und Bewerbern. Ein guter Grund also, sich den Prfun-
gen des LPI zu stellen.
Natrlich bringt es ein hoher Standard mit sich, dass das Bestehen der Prfungen keine
Selbstverstndlichkeit ist. Auch wenn Sie ber ausreichendes Wissen und mehrjhrige
praktische Erfahrung mit Linux verfgen, werden in den Prfungen einige Fallen lau-
ern, in die man schnell hineintappen kann. Und genau dafr wurde dieses Buch ver-
fasst, das auf die beiden Prfungen zum Erwerb des Zertifikats LPIC-1 vorbereiten will.
Aktuell zu den ab April 2012 geltenden Lernzielen werden alle Themen behandelt,
die geprft werden. Dabei wird jeweils detailliert dargestellt, welche Kenntnisse Sie
fr die Prfung haben mssen. Zu jeder Prfung gibt es eine kleine Testprfung im
Buch. Die Fragen hneln in der Art den in der Prfung verwendeten. Im Antwortteil
erfahren Sie nicht nur, welche Antwort richtig ist, sondern auch warum sie richtig
ist und die anderen falsch sind.
Damit Sie die Prfungssituation schon einmal testen knnen, wurde ein Prfungs-
simulator erstellt. Die Oberflche hnelt der in der Prfung verwendeten. Auch das
Arbeiten unter Zeitdruck knnen Sie testen: Je nach Anzahl der Fragen wird eine
Zeitbegrenzung festgesetzt.
Sollten sonst noch Fragen zu Linux offen sein, dann schauen Sie doch mal in das
Openbook des Linux-Handbuches von Steffen Wendzel und Johannes Pltner, das
Sie wie den Prfungssimulator auf der beiliegenden DVD-ROM finden.
Viel Erfolg fr die Prfungen!
Ihre Anne Scheibe
Lektorat Galileo Computing
anne.scheibe@galileo-press.de
www.galileocomputing.de
Galileo Press Rheinwerkallee 4 53227 Bonn
Auf einen Blick
LPI 101 .................................................................................. 19
Topic 101: Systemarchitektur ..................................................... 21
Topic 102: Linux-Installation und -Paketverwaltung ................... 57
Topic 103: GNU- und Unix-Kommandos .................................... 87
Topic 104: Gerte, Linux-Dateisysteme,
Filesystem Hierarchy Standard ................................... 157
bungsfragen zu LPI 117-101 ..................................................... 207
LPI 102 .................................................................................. 281
Topic 105: Shells, Skripte und Datenverwaltung ......................... 283
Topic 106: Oberflchen und Desktops ........................................ 325
Topic 107: Administrative Aufgaben ........................................... 355
Topic 108: Grundlegende Systemdienste .................................... 389
Topic 109: Netz-Grundlagen ...................................................... 411
Topic 110: Sicherheit .................................................................. 439
bungsfragen zu LPI 117-102 ..................................................... 465
Der Name Galileo Press geht auf den italienischen Mathematiker und Philosophen Galileo
Galilei (15641642) zurck. Er gilt als Grndungsfigur der neuzeitlichen Wissenschaft und
wurde berhmt als Verfechter des modernen, heliozentrischen Weltbilds. Legendr ist sein
Ausspruch Eppur si muove (Und sie bewegt sich doch). Das Emblem von Galileo Press ist der
Jupiter, umkreist von den vier Galileischen Monden. Galilei entdeckte die nach ihm benannten
Monde 1610.
Lektorat Anne Scheibe
Korrektorat Monika Paff, Langenfeld
Einbandgestaltung Barbara Thoben, Kln
Coverfoto Getty Images
Typografie und Layout Vera Brauner
Herstellung Katrin Mller
Satz III-satz, Husby
Druck und Bindung Bercker Graphischer Betrieb, Kevelaer
Gerne stehen wir Ihnen mit Rat und Tat zur Seite:
anne.scheibe@galileo-press.de bei Fragen und Anmerkungen zum Inhalt des Buches
service@galileo-press.de fr versandkostenfreie Bestellungen und Reklamationen
britta.behrens@galileo-press.de fr Rezensionsexemplare
Dieses Buch wurde gesetzt aus der Linotype Syntax Serif (9,25/13,25 pt) in FrameMaker.
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen National-
bibliografie; detaillierte bibliografische Daten sind im Internet ber http://dnb.d-nb.de
abrufbar.
ISBN 978-3-8362-1780-4
Galileo Press, Bonn 2012
3., aktualisierte Auflage 2012
Das vorliegende Werk ist in all seinen Teilen urheberrechtlich geschtzt. Alle Rechte vorbehalten, insbesondere das Recht
der bersetzung, des Vortrags, der Reproduktion, der Vervielfltigung auf fotomechanischem oder anderen Wegen und der
Speicherung in elektronischen Medien. Ungeachtet der Sorgfalt, die auf die Erstellung von Text, Abbildungen und Program-
men verwendet wurde, knnen weder Verlag noch Autor, Herausgeber oder bersetzer fr mgliche Fehler und deren Fol-
gen eine juristische Verantwortung oder irgendeine Haftung bernehmen. Die in diesem Werk wiedergegebenen Gebrauchs-
namen, Handelsnamen, Warenbezeichnungen usw. knnen auch ohne besondere Kennzeichnung Marken sein und als
solche den gesetzlichen Bestimmungen unterliegen.
5
Inhalt
Vorwort ....................................................................................................... 15
Hinweise zum Buch .............................................................................. 15
Hinweise zur Prfung ........................................................................... 17
LPI 101
Power On! Die Hardware wird initialisiert und die Daemonen geweckt. Grundlegende Fertigkeiten in der Konfiguration von Massenspeichern, Peripheriegerten und BIOS-Einstellungen sind fr die erste Prfung unbedingt erforderlich. 21
Topic 101: Systemarchitektur ..................................................... 21
101.1 Hardware-Einstellungen ermitteln und konfigurieren ................. 21
Allgemeines ................................................................................... 22
Module zur Laufzeit beeinflussen und konfigurieren ...................... 22
Modulkonfigurationsdateien .......................................................... 28
Zum Kernel gehrende Dateien und Verzeichnisse ......................... 29
Die Gertedateien fr Festplatten und CD-ROMs ........................... 30
Die Gertedateien fr Partitionen .................................................. 31
Ressourcen fr Hardwarekomponenten .......................................... 32
Der PCI-Bus ................................................................................... 33
USB Universal Serial Bus .............................................................. 34
USB-Host-Controller-Typen ........................................................... 34
USB-Klassen .................................................................................. 35
USB-Module automatisch laden ..................................................... 36
Coldplug und Hotplug ................................................................... 37
Das virtuelle Dateisystem sysfs ....................................................... 37
udev, hald und dbus ...................................................................... 38
101.2 Das System starten ...................................................................... 38
Allgemeines ................................................................................... 39
Boot-Strap-Loader ......................................................................... 41
Kernel-Parameter ........................................................................... 42
Startprotokollierung ....................................................................... 43
101.3 Runlevel wechseln und das System anhalten oder
neu starten ................................................................................... 45
Allgemeines ................................................................................... 46
Die Runlevel und ihre Funktion ...................................................... 46
Die Konfigurationsdatei inittab ...................................................... 47
Verzeichnisse und Dateien des init-Prozesses ................................. 49
Runlevel-Wechsel, Herunterfahren, Neustart ................................. 52
Upstart .......................................................................................... 53
Systemd ......................................................................................... 54
Inhalt
6
Nachdem Sie ber die korrekte Konfiguration der Hardware bestens Bescheid wissen, kann nun mit der Planung der Partitionen und der Konfiguration eines Bootloaders fortgefahren werden. 57
Topic 102: Linux-Installation und -Paketverwaltung ................. 57
102.1 Festplattenaufteilung planen ....................................................... 57
Allgemeines ................................................................................... 57
Planung im Detail .......................................................................... 58
Logical Volume Manager ............................................................... 59
LVM-Komponenten und Zusammenhnge ..................................... 60
102.2 Einen Bootmanager installieren ................................................... 61
Allgemeines ................................................................................... 61
GRUB-Legacy ................................................................................. 62
GRUB 2 ......................................................................................... 63
102.3 Shared Librarys verwalten ............................................................ 64
Allgemeines ................................................................................... 64
Verwaltung von Shared Librarys ..................................................... 65
102.4 Debian-Paketverwaltung verwenden ........................................... 66
Allgemeines ................................................................................... 67
Konfigurationsdateien und Verzeichnisse ....................................... 67
DPKG-Programme ......................................................................... 69
102.5 RPM und YUM-Paketverwaltung verwenden .............................. 76
Allgemeines ................................................................................... 76
Konfigurationsdateien .................................................................... 77
RPM aktiv verwenden .................................................................... 78
Abfragen der RPM-Datenbank ....................................................... 79
berprfung installierter Pakete .................................................... 81
Pakete umwandeln ........................................................................ 82
yum und der yumdownloader ........................................................ 82
Ein groer Teil dessen, was ganz selbstverstndlich als Linux bezeichnet wird, entspringt in Wirklichkeit dem GNU-Projekt. In dem nun folgenden Kapitel geht es um einen kleinen Teil von GNU. GNU is Not Unix. GNU is Not Unix. GNU is Not U... 87
Topic 103: GNU- und Unix-Kommandos .................................... 87
103.1 Auf der Kommandozeile arbeiten ................................................. 87
Allgemeines ................................................................................... 88
Aufbau eines Shell-Kommandos ..................................................... 88
bergabe der Optionen ................................................................. 89
Umgebungsvariablen und Shellvariablen ........................................ 90
Beliebte Variablen fr die Prfung ................................................. 93
Bash-Befehls-History und automatisches Vervollstndigen
von Befehlen .................................................................................. 94
Befehlseingabe ............................................................................... 95
PATH-Variable ............................................................................... 95
Rekursive Befehlsausfhrung .......................................................... 96
Das Kommando uname .................................................................. 97
Die Manpages im Allgemeinen ...................................................... 97
Inhalt
7
Funktionsweise der Manpages ....................................................... 97
$MANPATH und die Datei manpath.config .................................... 97
Die Sektionen des Mansystems ...................................................... 98
Aufbau von Manpages ................................................................... 99
Verwandte Befehle ........................................................................ 99
103.2 Textstrme mit Filtern verarbeiten .............................................. 101
Allgemeines ................................................................................... 102
cat .............................................................................................. 102
tac .............................................................................................. 102
head .............................................................................................. 103
tail .............................................................................................. 103
expand/unexpand .......................................................................... 104
fmt .............................................................................................. 104
nl .............................................................................................. 104
pr .............................................................................................. 105
wc .............................................................................................. 105
hexdump ....................................................................................... 106
od .............................................................................................. 106
sort .............................................................................................. 106
uniq .............................................................................................. 107
split .............................................................................................. 107
cut, paste und join ......................................................................... 108
tr .............................................................................................. 110
103.3 Grundlegende Dateiverwaltung ................................................... 111
Allgemeines ................................................................................... 112
Kommandos fr Dateioperationen ................................................. 112
Verwendung von Wildcards ........................................................... 118
103.4 Strme, Pipes und Umleitungen verwenden ................................ 124
Allgemeines ................................................................................... 125
stdin, stdout und stderr ................................................................. 125
Umleitungen (Redirects) ................................................................ 126
Pipes ............................................................................................. 127
tee und xargs ................................................................................. 128
103.5 Prozesse erzeugen, berwachen und beenden ............................. 128
Allgemeines ................................................................................... 129
berwachen von Prozessen ........................................................... 129
Signale an Prozesse senden ............................................................ 133
Jobs im Vorder- und im Hintergrund .............................................. 135
Prozesse unabhngig von einem Terminal laufen lassen ................. 138
103.6 Prozess-Ausfhrungsprioritten ndern ...................................... 139
Allgemeines ................................................................................... 139
nice .............................................................................................. 140
Inhalt
8
renice ............................................................................................ 140
top und ps zur berprfung von Prioritten ................................... 141
103.7 Textdateien mit regulren Ausdrcken durchsuchen ................... 142
Allgemeines ................................................................................... 142
Regulre Ausdrcke ....................................................................... 143
Die Verwendung von grep ............................................................. 144
egrep und fgrep ............................................................................. 148
Die Verwendung von sed ............................................................... 148
103.8 Grundlegendes Editieren von Dateien mit dem vi ....................... 152
Allgemeines ................................................................................... 152
Bedienungsgrundlagen ................................................................... 153
Navigation in einem Dokument ..................................................... 154
Einfgen, Lschen, Kopieren und Auffinden von Text .................... 155
Befehlszeilenoptionen fr vi ........................................................... 156
Im nchsten Themenkomplex soll dargestellt werden, was alles ntig ist, um Daten sicher auf einem Medium speichern zu knnen und die Zugriffsrechte auf diese Dateien professionell zu handhaben. 157
Topic 104: Gerte, Linux-Dateisysteme,
Filesystem Hierarchy Standard .................................. 157
104.1 Partitionen und Dateisysteme anlegen ........................................ 157
Allgemeines ................................................................................... 157
Erzeugen der Partitionen ................................................................ 158
Formatieren der Dateisysteme ....................................................... 161
Erstellen einer Swap-Datei ............................................................. 165
104.2 Die Integritt von Dateisystemen sichern ................................... 166
Allgemeines ................................................................................... 166
Sicherstellen der Integritt des Dateisystems und
Problembehebung ......................................................................... 167
XFS-Werkzeuge ............................................................................. 170
berwachen des freien Platzes und der freien Inodes ..................... 171
104.3 Das Ein- und Aushngen von Dateisystemen steuern ................. 174
Allgemeines ................................................................................... 174
Manuelles Mounten und Unmounten ............................................ 174
Automatisches Mounten ber die Datei /etc/fstab ......................... 178
104.4 Platten-Quotas verwalten ............................................................ 180
Allgemeines ................................................................................... 181
Mglichkeiten der Quotierung ....................................................... 181
Vorbereiten von Quota .................................................................. 182
Aktivieren von Quota ..................................................................... 183
ndern und berprfen von Quota ............................................... 184
104.5 Dateizugriffsrechte und -eigentmerschaft verwalten ................ 186
Allgemeines ................................................................................... 186
Vergabe der Berechtigungen .......................................................... 187
Inhalt
9
Verwendung von SUID, SGID und Sticky Bit .................................. 189
chown ........................................................................................... 191
chgrp ............................................................................................. 192
Verwendung von umask ................................................................. 192
Dateiattribute der ext2-, ext3- und ext4-Dateisysteme .................. 193
104.6 Harte und symbolische Links anlegen und ndern ...................... 195
Allgemeines ................................................................................... 195
Softlinks ......................................................................................... 195
Hardlinks ....................................................................................... 198
104.7 Systemdateien finden und Dateien am richtigen
Ort platzieren ............................................................................... 200
Allgemeines ................................................................................... 200
FHS Filesystem Hierarchy Standard .............................................. 200
Programme zum Auffinden von Dateien ......................................... 202
207
bungsfragen zu LPI 117-101 ...................................................... 207
Fragen ......................................................................................................... 207
Antworten und Erklrungen zu den Prfungsfragen ..................................... 247
LPI 102
Was eine Shell ist und wie man sie benutzt, wissen Sie ja bereits. Jetzt werden Sie lernen, an der Shell einige individuelle Anpassungen vorzunehmen und Skripte zu schreiben, welche die alltgliche Arbeit erleichtern. Optimieren Sie Ihre Arbeitsumgebung! 283
Topic 105: Shells, Skripte und Datenverwaltung ........................ 283
105.1 Die Shell-Umgebung anpassen und verwenden ........................... 283
Allgemeines ................................................................................... 284
Verwendung von Shells .................................................................. 284
Umgebungsvariablen und Shellvariablen ........................................ 285
Aliase und Funktionen ................................................................... 287
Konfigurationsdateien der Bash ..................................................... 290
Systemweite Konfigurationsdateien ............................................... 291
Konfigurationsdateien fr den Benutzer ......................................... 291
Das Skeleton Verzeichnis /etc/skel ................................................. 292
105.2 Einfache Skripte anpassen oder schreiben ................................... 292
Allgemeines ................................................................................... 293
Ausfhren eines Skripts .................................................................. 293
Ausfhrungsberechtigung .............................................................. 295
Position eines Skripts ..................................................................... 296
bergabevariablen und Rckgabewerte ......................................... 296
Schleifen und Bedingungen ............................................................ 297
105.3 SQL-Datenverwaltung .................................................................. 304
Allgemeines ................................................................................... 305
SQL Die Befehle .......................................................................... 305
Inhalt
10
Die ersten Schritte ......................................................................... 306
Eine erste Datenbank ..................................................................... 309
Abfragen mit SELECT und WHERE ................................................. 311
Aktualisieren von Datenstzen ....................................................... 314
Sortieren und Gruppieren .............................................................. 314
Erweitern von Datenbanken ........................................................... 316
Arbeiten mit mehreren Tabellen .................................................... 318
Destruktive Kommandos ................................................................ 323
In diesem Kapitel lernen Sie die prfungsgerechte Konfiguration von X11, von Displaymanagern und Windowmanagern. Es wird also zur Abwechslung ausnahmsweise einmal grafisch. 325
Topic 106: Oberflchen und Desktops ........................................ 325
106.1 X11 installieren und konfigurieren ............................................... 325
Allgemeines ................................................................................... 325
Der Aufbau von X .......................................................................... 326
Der Startvorgang von X .................................................................. 328
X-Terminals ................................................................................... 329
X-Librarys ...................................................................................... 329
Konfigurationsdateien .................................................................... 329
X-Fontserver .................................................................................. 333
X-Display exportieren .................................................................... 335
xwininfo ........................................................................................ 336
xdpyinfo ........................................................................................ 337
106.2 Einen Displaymanager einrichten ................................................. 339
Allgemeines ................................................................................... 339
Starten und Beenden eines Displaymanagers .................................. 339
Konfigurationsdateien der Displaymanager .................................... 340
106.3 Hilfen fr Behinderte .................................................................... 340
Allgemeines ................................................................................... 341
Sehbehinderte und Blinde .............................................................. 341
Barrierefreiheit ............................................................................... 342
Orca .............................................................................................. 347
GOK .............................................................................................. 352
emacspeak ..................................................................................... 353
Nun geht es um eine der wichtigsten Ttigkeiten eines Administrators: das Verwalten von Benutzerkonten, Gruppenkonten und das Schaffen einer anfnglichen Umgebung, in der die Benutzer arbeiten knnen. 355
Topic 107: Administrative Aufgaben ........................................... 355
107.1 Benutzer- und Gruppenkonten und
dazugehrige Systemdateien verwalten ...................................... 355
Allgemeines ................................................................................... 356
passwd, shadow, group, gshadow .................................................. 357
Befehle zur Verwaltung von Benutzern ........................................... 361
Inhalt
11
Befehle zur Verwaltung von Gruppen ............................................. 365
Befehle zur Verwaltung des Shadow-Systems ................................. 368
107.2 Systemadministrationsaufgaben durch Einplanen
von Jobs automatisieren .............................................................. 369
Allgemeines ................................................................................... 369
Die Verwendung von cron ............................................................. 370
Die Verwendung von at ................................................................. 373
Grundlegendes zu anacron ............................................................. 374
Zugriffssteuerung auf cron und at ................................................... 374
107.3 Lokalisierung und Internationalisierung ...................................... 375
Allgemeines ................................................................................... 376
Zeitzoneneinstellung ...................................................................... 376
Umgebungsvariablen fr die Lokalisation ....................................... 379
Historische Zeichenstze ................................................................ 381
ASCII American Standard Code for Information
Interchange ................................................................................... 382
ISO 8859 ....................................................................................... 385
Unicode und UTF-8 ....................................................................... 386
Konvertierung von Zeichenstzen .................................................. 386
Die Dienste eines Systems mssen kontrolliert und gepflegt werden. Um sich die Arbeit so weit wie mglich zu erleichtern, knnen Sie hier einiges automatisieren. Zur Vereinfachung der Kontrolle knnen Sie die Protokollierung auf die eigenen Bedrfnisse zuschneiden. 389
Topic 108: Grundlegende Systemdienste .................................... 389
108.1 Die Systemzeit verwalten ............................................................. 389
Allgemeines ................................................................................... 390
Manuelle Konfiguration der Systemzeit .......................................... 390
Die RTC-Uhr einstellen .................................................................. 391
Zeitzonen ...................................................................................... 391
Zeitsynchronisation ber das Netzwerk .......................................... 392
Automatische Zeitsynchronisation .................................................. 392
NTP Diagnose ................................................................................ 393
pool.ntp.org .................................................................................. 394
108.2 Systemprotokollierung ................................................................. 394
Allgemeines ................................................................................... 395
syslogd und syslog-ng .................................................................... 395
Die Konfigurationsdateien ............................................................. 395
Einsatz von Log-Dateien zur Fehlersuche ....................................... 397
Selbst Ereignisse loggen ................................................................. 398
Der Kernellog ................................................................................ 399
108.3 Grundlagen von Mail Transfer Agents (MTAs) ............................. 399
Allgemeines ................................................................................... 400
MUA, MDA und MTA .................................................................... 400
Inhalt
12
Mail Aliase .................................................................................. 401
Weiterleitung von Mail .................................................................. 402
Wichtige Dateien und Verzeichnisse .............................................. 402
sendmail-Konfigurationsdateien ..................................................... 403
postfix-Konfigurationsdateien ........................................................ 403
Smarthost und SMTP-Relay ............................................................ 404
exim und qmail .............................................................................. 405
108.4 Drucker und Druckvorgnge verwalten ....................................... 405
Allgemeines ................................................................................... 405
Verwalten der Druckerwarteschlangen ........................................... 406
Befehle zur Kontrolle von Druckvorgngen .................................... 407
lpc Line Printer Control ............................................................... 408
Drucken mit CUPS ......................................................................... 409
TCP/IP ist das Netzwerkprotokoll, das sich im Laufe der Jahrzehnte weltweit, sowohl im Internet, als auch in Intranets, absolut durchgesetzt hat. Grund genug, hier ein paar Worte darber zu verlieren. 411
Topic 109: Netz-Grundlagen ....................................................... 411
109.1 Grundlagen von Internet-Protokollen .......................................... 411
Allgemeines ................................................................................... 412
TCP/IP-Geschichte kurz gefasst ...................................................... 412
Das DoD-Modell ........................................................................... 413
Die Protokolle der dritten Schicht .................................................. 413
Die Protokolle der zweiten Schicht ................................................ 415
Das Internetprotokoll IPv4 ............................................................. 416
IP-Klassen ...................................................................................... 417
Die Verwendung der Subnetzmaske und CIDR ............................... 418
Die Broadcast-Adressen ................................................................. 420
Standardgateway ........................................................................... 421
Das Internetprotokoll IPv6 ............................................................. 421
TCP/IP Werkzeuge ......................................................................... 423
109.2 Grundlegende Netz-Konfiguration .............................................. 429
Allgemeines ................................................................................... 430
Konfigurationsdateien eines Netzwerk-Clients ............................... 430
Konfigurationsprogramme fr Netzwerk-Clients ............................. 433
109.3 Grundlegende Netz-Fehlersuche .................................................. 435
Allgemeines ................................................................................... 436
netstat ........................................................................................... 436
109.4 Client-seitiges DNS konfigurieren ............................................... 437
Allgemeines ................................................................................... 438
Inhalt
13
Ein Administrator muss natrlich auch in der Lage sein, Sicherheitsbedrohungen in seinem Netzwerk aufzufinden und zu beseitigen. Die folgenden Themen bieten dazu eine gute Grundlage. 439
Topic 110: Sicherheit ................................................................... 439
110.1 Administrationsaufgaben fr Sicherheit durchfhren .................. 439
Allgemeines ................................................................................... 440
Auffinden von Dateien mit gesetztem SUID/SGID-Bit .................... 440
Setzen oder Lschen von Passwrtern und
Passwort-Verfallszeiten .................................................................. 440
nmap, netstat und socket ............................................................... 440
Ressourcenverwendung kontrollieren ............................................. 441
Offene Dateien .............................................................................. 442
Arbeiten mit erhhten Rechten ...................................................... 444
110.2 Einen Rechner absichern .............................................................. 445
Allgemeines ................................................................................... 446
Superdaemons ............................................................................... 446
TCP-Wrapper konfigurieren ........................................................... 448
Die Datei /etc/nologin ................................................................... 449
110.3 Daten durch Verschlsselung schtzen ....................................... 449
Allgemeines ................................................................................... 450
SSH verwenden .............................................................................. 450
SSH-Client-Verbindung .................................................................. 451
SSH-Konfigurationsdateien ............................................................ 452
Authentifizierung der Server mit Schlsseln .................................... 453
Generieren von Schlsseln ............................................................. 454
Benutzerauthentifizierung mit Schlsseln ....................................... 455
Der Authentifizierungsagent .......................................................... 457
GnuPG ........................................................................................... 457
Schlsselerstellung mit GnuPG ....................................................... 458
GnuPG-Dateien ............................................................................. 461
GnuPG verwenden ......................................................................... 461
GnuPG-Zertifikat widerrufen .......................................................... 463
465
bungsfragen zu LPI 117-102 ...................................................... 465
Fragen ......................................................................................................... 465
Antworten und Erklrungen zu den Prfungsfragen ..................................... 502
Index ........................................................................................................... 535
15
Vorwort
Herzlich willkommen!
Dieses Buch bietet Ihnen eine optimale Mglichkeit, Ihr Wissen ber Linux zu
verbessern und sich auf die ersten beiden Prfungen des Linux Professional Insti-
tute (LPI) vorzubereiten. Die vorliegende Auflage bercksichtigt bereits die letz-
ten nderungen des LPI zum 01. April 2012.
Das Zertifikat, das Sie nach dem Bestehen dieser Prfungen erwerben, wird
Ihnen erhebliche Vorteile bei der Suche nach einem Arbeitsplatz bringen. Auch
fr Arbeitgeber ist es wnschenswert, die Fachkompetenz der eigenen Mitarbei-
ter schriftlich belegen zu knnen. Eine vollstndige und aktuelle Auflistung der
mglichen Zertifizierungen mit LPI finden Sie unter:
http://www.lpi.org/linux-certifications/programs
Hinweise zum Buch
Fr wen ist dieses Buch?
Dieses Buch richtet sich an all diejenigen, die zur Frderung ihrer beruflichen
Laufbahn Fachwissen erlangen und dieses zertifizieren lassen wollen. Das Buch
ist ausdrcklich nicht als Nachschlagewerk gedacht, sondern bereitet gezielt auf
die Prfungen LPIC 101 und LPIC 102 vor. Um die Level-1-Zertifikation des Linux
Professional Institute zu erwerben, mssen Sie diese beiden Prfungen ablegen
und bestehen.
Voraussetzungen
Sie sollten bereits gute Vorkenntnisse aus dem Bereich der EDV mitbringen. Auch
Fachwissen im Bereich Unix oder Linux ist absolut von Vorteil, wenn auch nicht
Voraussetzung. Wenn in diesem Buch Themen behandelt werden, die aus dem
Bereich Linux fr Einsteiger zu sein scheinen, dann hat dies den Hintergrund,
dass diese Themen fr Sie prfungsfhig aufgearbeitet werden sollen.
Damit die vorgestellten Themen auch praktisch angewendet werden knnen,
bentigen Sie einen Computer, auf dem eine beliebige Linux-Distribution instal-
liert ist. Da die Prfungen des LPI unabhngig von einem bestimmten Hersteller
16
Vorwort
bzw. einer bestimmten Distribution erstellt wurden, sind Sie hier in Ihrer Aus-
wahl eigentlich nicht eingeschrnkt. Praktischer ist es allerdings, wenn Sie min-
destens zwei Linux-Distributionen in virtuellen Maschinen einsetzen. Sie knnen
dann einfach die distributionsspezifischen Unterschiede selbst sehen und gege-
benenfalls testen. Das ist z.B. beim Thema Paketmanagement besonders interes-
sant. Sollten Sie sich fr den Einsatz mehrerer Distributionen entscheiden, dann
empfehle ich Ihnen die Auswahl eines eher Debian-basierten (z.B. Debian,
Ubuntu, Mint) und eines Red Hat-basierten Systems (z.B. CentOS, Fedora). So
knnen Sie gleichzeitig die Vor- und Nachteile dieser beiden Welten einmal
selbst (hoffentlich vorurteilsfrei) unter die Lupe nehmen.
Der Aufbau des Buches
Das Buch ist in vier Abschnitte unterteilt. Fr beide Prfungen, die zum Erwerb
des ersten LPI-Zertifikates notwendig sind, gibt es jeweils eine Sektion, die zum
Selbststudium der jeweiligen Prfungsinhalte geeignet ist. Auerdem gibt es fr
beide Prfungen einen Bereich mit realistischen Fragen, wie sie auch in der Pr-
fung gestellt werden knnten. Zum besseren Verstndnis sind die Antworten zu
den Fragen genau erlutert. Sie sollten nicht versuchen, die Fragen auswendig zu
lernen, weil Sie in der Prfung mit vllig anderen Fragen konfrontiert werden.
Die im Buch verwendeten Fragen sind keine Prfungsfragen.
Die Kapitel in diesem Buch sind genauso angeordnet und benannt, wie die soge-
nannten Objectives des LPI. Jedem Kapitel ist eine Wichtung (im Original als
Weight bezeichnet) zugeordnet. Die Wichtung gibt einen klaren Hinweis auf die
Anzahl der Fragen, die zu dem jeweiligen Thema gestellt werden. Sie entspricht
nmlich seit April 2009 der genauen Fragenanzahl in der Prfung von 60 mgli-
chen Fragen.
Wie man mit diesem Buch arbeitet
In den ersten beiden LPI-Prfungen werden Sie mit sehr vielen Fragen konfron-
tiert, die sich mit Kommandos und deren (u.U. selten verwendeten) Optionen
beschftigen. Es wurde beim Erstellen dieses Buches sehr sorgfltig darauf geach-
tet, genau die Parameter und Optionen eines Kommandos niederzuschreiben, die
fr die Prfungen auch relevant sind. Das ist aber leider keine Garantie dafr,
dass keine anderen Optionen in der Prfung abgefragt werden. Sie sollten sich
also zustzlich zu den dokumentierten Beispielen auch mit den Manpages der
entsprechenden Kommandos beschftigen. Gerade in den ersten beiden Prfun-
gen kommen Sie allein mit Berufserfahrung nicht weiter. Es ist hier auch notwen-
dig, Parameter zu kennen, die man in der Praxis eher selten bentigt und bei
Bedarf in den Manpages nachlesen wrde.
17
Vorwort
Die Prfungssimulation
Die dem Buch beiliegende Prfungssimulation basiert auf XML und kann z.B. mit
dem Webbrowser Firefox ausgefhrt werden. ffnen Sie zu diesem Zweck ein-
fach die Datei pruefungssimulator_starten.html. Sie sollten dieses Programm aber
erst dann verwenden, wenn Sie sich grndlich mit den Themen des Buches
beschftigt haben. Sie knnen mit dem Programm Ihren Kenntnisstand berpr-
fen, aber die Aussagekraft des erzielten Ergebnisses sinkt umgekehrt proportio-
nal mit der Anzahl der Durchgnge durch die Prfungssimulation.
Hinweise zur Prfung
Onlineprfung
Es gibt zwei verschiedene Organisationen, bei denen Sie die Prfungen in soge-
nannten Prfungszentren online ablegen knnen. In Bezug auf die gestellten Fra-
gen macht es keinen Unterschied, fr welche der beiden Sie sich entscheiden.
Pearson Vue: http://www.vue.com
Thomson Prometric: http://www.prometric.com
Besuchen Sie einfach eine dieser beiden Webseiten, und registrieren Sie sich. Die
genauen Vorgehensweisen sind auf den jeweiligen Webseiten erklrt. Wenn ein
Konto fr Sie eingerichtet wurde, werden Sie per E-Mail informiert. Es ist dann
sofort mglich, Prfungen verschiedenster Hersteller bzw. Organisationen online
zu buchen. Sie knnen den Zeitpunkt selbst bestimmen und ein Prfungszent-
rum in Ihrer Nhe aus der Datenbank auswhlen. Die Bezahlung erfolgt bequem
per Kreditkarte, und Sie werden per E-Mail benachrichtigt, sobald der Termin fr
Sie reserviert wurde. Im Augenblick bentigt Pearson Vue 24 Stunden Vorlauf fr
die Buchung einer Prfung. Thomson Prometric bentigt sogar 48 Stunden. Sie
knnen also eine Prfung frhestens fr den nchsten Tag buchen. Die LPI-Pr-
fungen kosten derzeit 145 .
Papierprfung
Es gibt hin und wieder auch die Mglichkeit, LPI-Prfungen auf Papier abzule-
gen. Das geschieht meist auf Messen oder Kongressen. Diese Prfungen knnen
normalerweise zu einem erheblich gnstigeren Preis abgelegt werden als die im
vorangegangenen Abschnitt thematisierten Onlineprfungen. Da Papierprfun-
gen nicht immer sofort ausgewertet werden knnen, kann es allerdings eine
Weile dauern, bis Sie ber das Ergebnis Ihrer Prfung informiert werden. In
Deutschland werden Papierprfungen normalerweise auf der CeBIT in Hannover
18
Vorwort
oder auf den Linux-Tagen angeboten. Weitere Veranstaltungen, auf denen Sie
Papierprfungen ablegen knnen, finden Sie auf dieser Webseite:
http://lpievent.lpice.eu
Hier wird Ihnen auch gleich die Mglichkeit gegeben, sich zu einer Prfung anzu-
melden.
Punktevergabe
Die Punktevergabe bei den Prfungen sieht im Moment folgendermaen aus:
Zum Bestehen einer beliebigen LPI-Prfung sind 500 Punkte erforderlich. In den
Prfungen 117-101 und 117-102 mssen Sie jeweils 60 Fragen in 90 Minuten
beantworten. Hierbei knnen Sie jeweils 800 Punkte erreichen. Bei Prfungen, die
auf Papier abgelegt werden, kann die Punktevergabe abweichend sein.
In den Prfungen sind jeweils Betafragen enthalten, die Ihre Punktezahl nicht
beeintrchtigen. Da diese Fragen nicht gesondert markiert sind, mssen Sie sie
ebenfalls beantworten. Wegen der eingestreuten Betafragen ist eine genaue
Berechnung der bentigten Punkte in Prozent auch nicht mglich.
Sprachen
In Deutschland steht die LPI-Prfung in den Sprachen Deutsch, Englisch, Chine-
sisch und brasilianisches Portugiesisch zur Verfgung. Viele Prflinge legen die
Prfung in englischer Sprache ab, um eventuellen bersetzungsfehlern aus dem
Weg zu gehen. Das ist bei einigen Prfungen, die ich aus eigener Erfahrung
kenne, auch absolut angebracht. Die Fragen in den LPI-Prfungen sind allerdings
im Verhltnis zu den gngigen Herstellerprfungen kurz gefasst und bieten des-
halb wenig Stoff fr bersetzungsfehler. Wenn Ihr Englisch nicht erstklassig ist,
sollten Sie die Prfung lieber in Ihrer Muttersprache ablegen.
Ich wnsche Ihnen viel Spa und Erfolg beim Bestehen der Prfungen!
Harald Maaen
LPI 101
21
Power On! Die Hardware wird initialisiert und die Daemonen geweckt.
Grundlegende Fertigkeiten in der Konfiguration von Massenspeichern,
Peripheriegerten und BIOS-Einstellungen sind fr die erste Prfung
unbedingt erforderlich.
Topic 101: Systemarchitektur
101.1 Hardware-Einstellungen ermitteln und
konfigurieren
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, die wesentliche Hardware
eines Systems zu bestimmen und zu konfigurieren.
Wichtigste Wissensgebiete:
integrierte Peripheriegerte aktivieren und deaktivieren
Systeme mit oder ohne externe Peripheriegerte wie Tastaturen konfigurieren
die verschiedenen Arten von Massenspeicher unterscheiden
die korrekte Hardwarekennung fr verschiedene Gerte einstellen, vor allem
das Gert, von dem das System gestartet wird
die Unterschiede zwischen Coldplug- und Hotplug-Gerten kennen
Hardwareressourcen fr Gerte ermitteln
Werkzeuge und Hilfsprogramme, um verschiedene Hardware-Informationen
aufzulisten (z.B. lsusb, lspci usw.)
Werkzeuge und Hilfsprogramme, um USB-Gerte zu manipulieren
konzeptuelles Verstndnis von sysfs, udev, hald, dbus
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/sys
/proc
/dev
modprobe
22
Systemarchitektur 101
Hotplug-Konfigurationsdateien, -begriffe und -Hilfsprogramme
lsmod
lspci
lsusb
Allgemeines
Zur Konfiguration von Hardwaregerten und auch der Peripherie ist eine Kommu-
nikation mit dem Kernel des Systems erforderlich. Der Kernel eines Betriebssys-
tems hat die Aufgabe, als Schnittstelle zwischen der Hardware und der Software
zu fungieren. Natrlich handelt es sich bei dem Kernel selbst um ein Softwarepro-
dukt, das allerdings den Kernbestandteil des Betriebssystems darstellt. Bei Linux
handelt es sich um einen zum groen Teil modular aufgebauten Kernel. Die ein-
zelnen Module dieses Kernels knnen zur Laufzeit des Systems geladen und auch
wieder entladen werden. Man kann die Module eines Kernels mit Treibern ande-
rer Betriebssysteme vergleichen. Der modulare Aufbau hilft dabei, unntige Neu-
starts des ganzen Systems zu vermeiden. Im Gegensatz hierzu stehen monolithi-
sche Kernel. Diese knnen schwere Strungen verursachen, wenn eine
Hardwarekomponente versagt oder aus dem System entfernt wird.
Ausschlielich monolithisch aufgebaute Kernel sind verhltnismig unflexibel,
weil beim Systemstart der gesamte Kernel geladen werden muss, unabhngig von
der verwendeten Hardware. Sollte der laufende Kernel verschiedene Gerte
nicht untersttzen, muss er gegen einen neuen ersetzt werden.
Mit der Konfiguration angepasster Kernel mssen Sie sich erst dann beschftigen,
wenn Sie den LPIC Level 2 in Angriff nehmen. Hier soll es aber zunchst um die
Beeinflussung eines bestehenden Kernels gehen.
Module zur Laufzeit beeinflussen und konfigurieren
Mit den folgenden Befehlen und Methoden knnen die Module des laufenden
Kernels beeinflusst und berprft werden. So ist es mglich, im laufenden
Betrieb Gertetreiber zu laden oder zu entladen. Das kann z.B. erforderlich wer-
den, wenn eine Hardwarekomponente wegen fehlerhaften Verhaltens neu initia-
lisiert werden muss. Im Folgenden werden die dafr bentigten Kommandos
dargestellt.
Identifizieren von Kernel-Versionen
Die Version des aktuell laufenden Kernels finden Sie heraus, indem Sie folgendes
Kommando ausfhren:
23
Hardware-Einstellungen ermitteln und konfigurieren 101.1
harald@archangel:/> uname -r
2.6.11.4-21.9-smp
Diese Versionsnummer findet sich aber auch noch an anderen Stellen wieder.
Unter /lib/modules/ finden Sie in Abhngigkeit von der verwendeten Distribution
vielleicht sogar eine ganze Historie der Kernel, die einmal auf Ihrem System
installiert waren. Ein anderes Verzeichnis wre /usr/src/<Kernel-Version>, in dem
sich schlussendlich der Quellcode eines Kernels befindet. Auerdem ist sie auf
der Webseite von kernel.org (http://www.kernel.org) zu finden.
Aber was verbirgt sich hinter dieser Buchstaben- und Zahlenkombination? Es
existiert auch hier ein Schema, das bestimmten Konventionen gehorcht:
Die erste Zahl, in diesem Fall also die 2, steht fr das sogenannte Major
Release. Das Major Release wird nur dann erhht, wenn es sozusagen revolu-
tionre Erneuerungen im Kernel zu verzeichnen gibt. Deshalb will ein Linu-
xer einen solchen Kernel sofort haben!
Die zweite Zahl (im vorangegangenen Beispiel die 6) stellt die Version Minor
Release dar. Das Minor Release ndert sich jedes Mal, wenn einem Kernel neue
wesentliche Funktionen hinzugefgt werden. Dass die Ziffer an zweiter Stelle
steht, sollte aber nicht zu einer Unterschtzung der Versionsnderungen fh-
ren. So bestehen bereits zwischen den Versionen 2.4 und 2.6 bahnbrechende
Unterschiede. Es gibt zudem noch eine Unterscheidung zwischen Minor-
Release-Versionen mit geraden und ungeraden Werten:
Gerade Versionen (2.4, 2.6 usw.) werden als stable bezeichnet und gelten
somit als sicher (stable = haltbar, dauerhaft).
Ungerade Versionen (2.3, 2.5 usw.) bezeichnet man als Entwickler-Kernel.
Der Verwendungszweck ist hier deutlich dem Namen zu entnehmen. Es wird
aber natrlich gern gesehen, dass solche Kernel auf nicht produktiven Com-
putern zu Testzwecken eingesetzt werden. Ab der Version 2.6 werden aller-
dings die Entwicklerkernel nicht mehr auf diese Art unterschieden. Hier-
durch soll der Aufwand, der beim Portieren von neuen Funktionen einer
(tatschlich nicht existierenden) 2.7er Kernelversion in den aktuellen Pro-
duktionskernel entfallen. Stattdessen wird bei den 2.6er Kerneln momentan
eine vierte Ziffer zur Versionsverwaltung verwendet (z.B. 2.6.32.2)
Die dritte Zahl (im vorangegangenen Beispiel die 11) steht fr den Patch-Level
des Kernels. Bei Erhhung des Patch-Levels ist allerdings nur mit kleineren
nderungen und Fehlerbeseitigungen des Vorgnger-Kernels zu rechnen.
Alles, was danach folgt (im Beispiel ist es 4-21.9-smp), ist lediglich eine
Bezeichnung, die man vor dem Kompilieren im sogenannten Makefile des Ker-
nels angeben kann. Hier sind der eigenen Fantasie fr Benennungskonventio-
nen keine Grenzen gesetzt.
24
Systemarchitektur 101
lsmod
Mit dem Befehl lsmod knnen Sie den Status der Module eines laufenden Kernels
anzeigen. Hierbei greift lsmod auf die Datei /proc/modules zu und gibt das Ergeb-
nis in einer bersichtlicheren Form aus.
Hier der Vergleich:
harald@archangel:~> cat /proc/modules
vfat 17792 0 Live 0xe0c37000
fat 43804 1 vfat, Live 0xe0c6e000
usbserial 34024 0 Live 0xe11e8000
8139too 30464 0 Live 0xe10fe000
mii 9088 1 8139too, Live 0xe0fad000
parport_pc 44356 1 Live 0xe0e81000
reiserfs 263024 1 Live 0xe0e8e000
ext3 145032 1 Live 0xe0dc2000
Nun die Ausgabe mit dem lsmod-Befehl:
harald@archangel:~> lsmod
Module Size Used by
vfat 17792 0
fat 43804 1 vfat
usbserial 34024 0
8139too 30464 0
mii 9088 1 8139too
parport 40392 3 ppdev,parport_pc,lp
reiserfs 263024 1
ext3 145032 1
Die Originalausgabe wurde aus Platzgrnden um ca. 80 % gekrzt.
modinfo
Mit modinfo knnen Sie ein Modul des Kernels genauer unter die Lupe nehmen:
archangel: / # modinfo /lib/modules/2.6.11.4-21.9-smp/kernel/
drivers/usb/storage/usb-storage.ko
filename: /lib/modules/2.6.11.4-21.9-smp/kernel/drivers/usb/
storage/usb-storage.ko
author: Matthew Dharm <mdharm-usb@one-eyed-alien.net>
description: USB Mass Storage driver for Linux
license: GPL
vermagic: 2.6.11.4-21.9-smp SMP 586 REGPARM gcc-3.3
supported: yes
depends: ide-core,usbcore,scsi_mod
25
Hardware-Einstellungen ermitteln und konfigurieren 101.1
alias: usb:v03EEp6901dl0000dh0100dc*dsc*dp*ic*isc*ip*
alias: usb:v03F0p0107dl0200dh0200dc*dsc*dp*ic*isc*ip*
In diesem Beispiel finden sich Details ber das Modul, das fr Massenspeicher-
gerte zustndig ist, die an eine USB-Schnittstelle angeschlossen sind. Der Autor
mitsamt seiner Mail-Adresse wird angezeigt. Zudem erhlt man Informationen
ber den Verwendungszweck des Moduls sowie die Versionsnummer, und vor
allem die Abhngigkeiten von anderen Modulen werden aufgezeigt. Das sind
sehr wesentliche Informationen, die auch noch von anderen Programmen, die
Sie gleich kennenlernen werden, ausgewertet und genutzt werden.
modinfo versteht einige Optionen, die berwiegend dazu gedacht sind, nicht
bentigte Informationen auszublenden. Dies sind:
-a zeigt nur den Autor des Moduls an.
-d zeigt die Beschreibung (description).
-l zeigt die Lizenz.
-p zeigt zu bergebende Parameter, falls mglich.
-n zeigt den Dateinamen des Moduls an.
insmod
Mit dem Kommando insmod lassen sich Module in den laufenden Kernel integrie-
ren. Das Programm erwartet die bergabe des Moduls mit kompletter Pfadan-
gabe und eventuellen Optionen, falls das Modul diese bentigt.
Es werden automatisch Abhngigkeiten geprft, aber nicht automatisch aufge-
lst. Sollte ein zu ladendes Modul also von weiteren Modulen abhngen, gibt
insmod lediglich eine Fehlermeldung aus. Das Laden des Moduls fr USB-Massen-
speichergerte knnte dann etwa so aussehen:
archangel:~# insmod /lib/modules/2.6.11.4-21.9-smp/kernel/drivers/
usb/storage/usb-storage.ko
blicherweise gibt insmod im Erfolgsfall keine Besttigungsmeldung aus. Das
fragliche Modul wird kommentarlos in den Arbeitsspeicher geladen und vom
Kernel verwendet.
rmmod
Mit diesem Kommando knnen Sie nicht mehr bentigte Module wieder aus
dem Arbeitsspeicher entfernen. Hierbei ist allerdings keine Pfadangabe erforder-
lich, weil rmmod mit der /proc/modules-Datei arbeitet, und dieses muss (und kann)
nicht explizit angegeben werden. Beispiel:
26
Systemarchitektur 101
archangel:~# rmmod usb-storage.ko
Dieses Kommando entfernt also bei Bedarf den nicht mehr bentigten USB-Mas-
senspeichertreiber. Es werden, wie auch beim insmod-Kommando, keine Erfolgs-
meldungen ausgegeben. Es gibt allerdings auch hier Fehlermeldungen, wenn
man versucht, ein Modul zu entladen, das noch von einem anderen Modul oder
von einem Programm benutzt wird:
archangel:~ # rmmod ide_core.ko
ERROR: Module ide_core is in use by ide_cd,ide_disk,piix
hnliches geschieht, wenn man versucht, einen Dateisystemtreiber zu entfernen,
whrend er von einem Laufwerk gerade bentigt wird.
Optionen fr rmmod:
-v startet den Verbose-Mode.
-f erzwingt das Entladen eines Moduls, auch wenn eventuelle Abhngigkei-
ten nicht erfllt sind (Vorsicht!).
modprobe
Dieses Kommando ist eine optimierte Kombination von insmod und rmmod in
einem einzigen Programm. Der Verwendungszweck ist grundstzlich denen lte-
rer Werkzeuge hnlich, jedoch bietet modprobe einige zustzliche Annehmlichkei-
ten. So kann modprobe z.B. nicht nur Abhngigkeiten zwischen Modulen erken-
nen, sondern hieraus resultierende Probleme auch beheben. Es lst also solche
Abhngigkeiten auf, indem es fehlende Module selbststndig findet und auch
ldt. Pfadangaben wie bei insmod sind hier nicht ntig, weil modprobe den Befehl
uname r benutzt, um selbst das Basisverzeichnis der Module fr den momentan
genutzten Kernel zu finden. Eine weitere Besonderheit ist, dass man mit
modprobe einfach alle Module eines Typs auf einmal laden lassen kann. Dieser
Vorgang kommt somit einer Hardwareerkennung sehr nahe. Fr Netzwerkkarten
knnte dies in etwa so aussehen:
archangel:~ # modprobe -at net
Die Option a steht hier fr all und das -t fr type des Moduls, das geladen wer-
den soll. Auch hier gilt wieder der Grundsatz, dass bei Erfolg keine Meldungen
ausgegeben werden, sondern nur im Fehlerfall.
Weitere Mglichkeiten, die modprobe bietet, sind das Entfernen und Auflisten
von Modulen. Beim Entfernen von Modulen knnen Sie auch mehrere Module
durch Leerzeichen voneinander getrennt bergeben. Beispiel:
archangel:~ # modprobe r ext3 reiserfs (Vorsicht!)
27
Hardware-Einstellungen ermitteln und konfigurieren 101.1
Das Auflisten von Modulen unterscheidet sich von der Auflistung durch lsmod.
Whrend lsmod Module zeigt, die bereits geladen wurden, listet modprobe
Module auf, die in den laufenden Kernel integriert werden knnen. Beispiele:
archangel:~ # modprobe l zeigt alle ladbaren Module an:
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/char/agp/amd-k7-agp.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/sjcd.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/optcd.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/isp16.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/gscd.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/cdrom.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/aztcd.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/drivers/cdrom/sonycd535.ko
archangel:~ # modprobe -lt fs zeigt alle Dateisystemmodule an:
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/xfs/xfs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/vfat/vfat.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/ufs/ufs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/udf/udf.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/subfs/subfs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/smbfs/smbfs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/romfs/romfs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/reiserfs/reiserfs.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/quota_v2.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/quota_v1.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/fs/sysv/sysv.ko
depmod
Die Abhngigkeiten zwischen den Modulen werden in einer Datei mit der
Bezeichnung modules.dep zentral festgehalten. Beispiel:
/lib/modules/2.6.11.4-21.9-smp/modules.dep
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/pci/ac97/snd-ac97-
codec.ko:
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/core/snd-pcm.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/core/snd-timer.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/core/snd.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/soundcore.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/core/snd-page-alloc.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/oss/ymfpci.ko:
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/oss/ac97_codec.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/oss/uart401.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/oss/sound.ko
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/soundcore.ko
28
Systemarchitektur 101
Normalerweise ist es nicht erforderlich, diese doch recht unbersichtliche Datei
von Hand zu bearbeiten. Die hier vorliegende Datei ist brigens erheblich
gekrzt worden.
Ohne Optionen erstellt depmod eine neue modules.dep-Datei, indem es vorher die
Informationen ber Abhngigkeiten bei allen vorhandenen Modulen erfragt und
sammelt. Das kann u.U. ein paar Sekunden dauern.
Ntzliche Optionen fr depmod sind:
-n Trockenlauf mit Ausgabe nach stdout
-A Schnelldurchgang: Es wird vor der Erstellung einer neuen modules.dep
geprft, ob es berhaupt Module gibt, die neuer sind als die bestehende
modules.dep.
Modulkonfigurationsdateien
modules.dep
ber diese Datei wurde bereits in Zusammenhang mit depmod berichtet. Daher
beschrnke ich mich hier auf eine Veranschaulichung des Sachverhalts in Form eines
fr die Darstellungsweise einer Abhngigkeit in dieser Datei typischen Beispiels:
/lib/modules/2.6.11.4-21.9-smp/kernel/sound/pci/ac97/snd-ac97-
codec.ko:/lib/modules/2.6.11.4-21.9-smp/kernel/sound/core/snd-pcm.ko
Dieser exemplarische Auszug ist eine Kopie der ersten Zeilen aus dem voran-
gegangenen Beispiel. Hier hngt das Modul snd-ac97-codec.ko von dem Modul
snd-pcm.ko ab. Der Doppelpunkt stellt dabei den Zusammenhang her.
modules.conf, modprobe.conf, modprobe.conf.local
Diese drei Konfigurationsdateien steuern das Verhalten von modprobe und sind
wie die meisten der hnlich zu ihr aufgebauten Dateien im /etc-Verzeichnis behei-
matet. Die modules.conf wird von neueren modprobe-Versionen allerdings nicht
mehr verwendet und ist deshalb in Abhngigkeit von der eingesetzten Distribu-
tion auf vielen Systemen nicht mehr zu finden.
Die modprobe.conf.local hat die Besonderheit, von Konfigurationsfrontends nicht
modifiziert zu werden, weshalb sie sich besonders fr die manuelle Konfiguration
eignet.
In diesen Dateien werden u.a. die Optionen fr Module festgelegt. So kann man
einem Hardwaregert z.B. einen speziellen IRQ- oder DMA-Kanal zuweisen. Bei-
spiel:
29
Hardware-Einstellungen ermitteln und konfigurieren 101.1
options 3c505 io=0x300 irq=10
In diesem Beispiel werden folglich einer Netzwerkkarte eines namhaften Herstel-
lers die I/O-Adresse 0x300 und der Interrupt 10 zugewiesen.
Auerdem knnen fr bestehende Gerte Alias-Namen vergeben werden, so dass
man beim Hinzufgen von Modulen nicht erst berlegen muss, welche Gerte im
Computer im Einzelnen eingebaut sind. Beispiel:
alias eth0 3c505
Mit modprobe eth0 knnen Sie das Netzwerkkartenmodul ohne Kenntnis der im
System verwendeten Netzwerkkarte laden.
Weitere Informationen finden Sie auch fr diesen Kontext in den Manpages. Fr
die Prfung sollten die hier genannten Fakten allerdings mehr als ausreichend sein.
Zum Kernel gehrende Dateien und Verzeichnisse
In einem Verzeichnis unterhalb von /usr/src befinden sich die Quellen fr den
Linux-Kernel. Hier wird ein Verzeichnis angelegt, das die genaue Versionsnum-
mer des Kernels enthlt, z.B. /usr/src/linux-2.6.11.4-21.9. Zustzlich wird ein
Softlink erstellt, so dass die zu konfigurierenden Kernel-Quelldateien unter dem
Pfad /usr/src/linux zu erreichen sind.
Der statische Teil des lauffhigen Kernels befindet sich im Verzeichnis /boot. Im Nor-
malfall findet man dort einen Softlink namens vmlinuz, der auf den tatschlichen
Namen des Kernels zeigt. Hier gibt es bei der Verwendung mehrerer Kernel entspre-
chende Abweichungen. Auch sind distributionsspezifische Unterschiede denkbar.
Die Module des Kernels, um die es zunchst gehen soll, befinden sich in Ver-
zeichnissen unterhalb von /lib/modules. An dieser Stelle wird fr jeden installier-
ten Kernel ein Unterverzeichnis angelegt, das nach der Kernel-Versionsnummer
benannt ist, z.B. /lib/modules/2.6.11.4-21.9-smp.
Hier befanden sich in Kernel-Versionen vor 2.4 die Unterverzeichnisse fr ver-
schiedene Kategorien von Modulen. Ab Version 2.4 gibt es zunchst ein Unter-
verzeichnis namens kernel und erst darauf folgend die Verzeichnisse mit den
jeweiligen Kategorien. Hier einige Beispiele:
/lib/modules/2.6.11.4-21.9-smp/kernel/fs fr Dateisystemmodule
/lib/modules/2.6.11.4-21.9-smp/kernel/net fr Netzwerkkartenmodule
/lib/modules/2.6.11.4-21.9-smp/kernel/scsi fr SCSI-Adaptermodule
/lib/modules/2.6.11.4-21.9-smp/kernel/video fr Grafikadaptermodule
30
Systemarchitektur 101
An dieser Stelle findet man auch die Datei /lib/modules/2.6.11.4-21.9-smp/ modu-
les.dep. Diese Datei enthlt Informationen ber die Abhngigkeiten der Kernel-
Module untereinander.
Die Moduldateien selbst sind durch den Compiler erstellte, ausfhrbare Dateien
mit der Dateierweiterung o, wie Objekt. Bei neuen Kernel-Versionen (2.6) ist
diese Erweiterung auf ko, wie Kernel-Objekt, gendert worden.
Die Gertedateien fr Festplatten und CD-ROMs
Sowohl physikalische als auch logische Laufwerke werden unter Linux als Gerte-
dateien unterhalb von /dev dargestellt. Hierbei handelt es sich nicht um ein gewhn-
liches Verzeichnis auf der Festplatte, sondern um eine Prsentation der Gerte durch
den Kernel. Man sagt, die Gerte werden ins Userland exportiert. Die Prsentation
war bei lteren Kernel-Versionen statisch, weshalb auch Gerte dargestellt wurden,
die der Computer gar nicht besa. Fr die Prfung mssen Sie diese Gertedateien
genau kennen. Dateien fr Gerte, die am IDE-Bus angeschlossen sind, beginnen
normalerweise mit /dev/hd. Der nchste Buchstabe sagt etwas ber die Position des
Gertes am Controller aus, aber nichts ber das tatschlich verwendete Gert. Sie
knnen eine Festplatte, ein CD-ROM- oder DVD-Laufwerk nicht an der Gertedatei
unterscheiden. Die meisten (E)IDE-Controller verfgen ber zwei Kanle: Primary
IDE und Secondary IDE. An jeden der beiden Kanle knnen jeweils zwei Gerte
(ein Master und ein Slave) angeschlossen werden. Moderne IDE-RAID-Controller
verwalten mehr Gerte, dies werde ich hier aber aufgrund der Irrelevanz fr die Pr-
fung nicht weiter thematisieren. Die IDE-Gertedateien sind
/dev/hda Primary Master,
/dev/hdb Primary Slave,
/dev/hdc Secondary Master,
/dev/hdd Secondary Slave.
Wenn man ein CD-ROM-Laufwerk z.B. als Secondary Master anschliet, dann
wird oft ein Softlink von /dev/cdrom nach /dev/hdc erstellt. Das Gert bleibt aber
unter /dev/hdc weiterhin ansprechbar.
Die Gertedateien fr SCSI-Laufwerke beginnen mit /dev/sd. Ansonsten ist die
Bezeichnung hnlich:
/dev/sda erstes SCSI-Gert
/dev/sdb zweites SCSI-Gert

und so weiter.
31
Hardware-Einstellungen ermitteln und konfigurieren 101.1
SATA-Festplatten werden gehandhabt wie SCSI-Laufwerke und bekommen die
entsprechend gleichen Gertedateien zugewiesen. Beachten Sie bitte auch, dass
manche Debian-Ableger (z.B. Ubuntu, Joli-OS, Mint) auch IDE-Festplatten mit
den Gertedateien /dev/sda usw. ansprechen.
Die Gertedateien fr Partitionen
Aufgrund des Aufbaus eines Master Boot Records und der darin enthaltenen Par-
titionstabelle knnen auf einer Festplatte nur vier Partitionen erstellt werden. Es
wird unterschieden zwischen primren Partitionen und erweiterten Partitionen.
Eine primre Partition ist direkt ansprechbar. Sie knnen eine solche Partition
formatieren und benutzen. Es knnen bis zu vier primre Partitionen auf einer
Festplatte koexistieren.
Eine erweiterte Partition kann nicht direkt verwendet werden. Sie dient lediglich
als eine Art Behlter fr logische Partitionen. Sie knnen nur eine einzige
erweiterte Partition auf einer Festplatte anlegen. In der erweiterten Partition ist
Platz fr bis zu 60 logische Partitionen, wenn es sich um ein IDE-Gert handelt.
Auf SCSI- und SATA-Gerten knnen in einer erweiterten Partition lediglich 12
logische Partitionen erstellt werden.
Primre und erweiterte Partitionen werden von 1 bis 4 durchnummeriert. Die
erste logische Partition bekommt die Ordnungszahl 5 zugewiesen, auch wenn es
nur eine primre und eine erweiterte Partition geben sollte. Eine Partitionierung
kann also z.B. so aussehen:
/dev/hda1 erste primre Partition auf dem Primary Master
/dev/hda2 zweite primre Partition
/dev/hda3 einzige erweiterte Partition
/dev/hda5 erste logische Partition
/dev/hda6 zweite logische Partition
/dev/hda7 dritte logische Partition
Es sind nach der Partitionierung fnf Laufwerke tatschlich nutzbar. Die erwei-
terte Partition /dev/hda3 ist nicht verwendbar, weil sie lediglich als eine Art
Behlter fr die in ihr enthaltenen logischen Partitionen dient.
Viele Administratoren lassen sich davon verwirren, dass es blicherweise maximal
vier IDE-Gerte gibt (/dev/hda bis /dev/hdd) und auch maximal vier echte Parti-
tionen. Es soll deshalb erneut darauf hingewiesen werden, dass diese beiden Fak-
ten nichts miteinander zu tun haben. Aus diesem Grund erfolgt die Nummerie-
rung der Partitionen (auch und insbesondere der logischen Partitionen) bei SCSI-
32
Systemarchitektur 101
Festplatten genauso wie bei IDE-Festplatten. Das Beispiel zeigt die Partitionierung
der fnften SCSI-Festplatte, durch die fnf Laufwerke zur Verfgung stehen:
/dev/sde1 erste primre Partition
/dev/sde2 zweite primre Partition
/dev/sde3 dritte primre Partition
/dev/sde4 einzige erweiterte Partition
/dev/sde5 erste logische Partition
/dev/sde6 zweite logische Partition
Wie Sie sehen, erfolgt die Partitionierung von SCSI-Laufwerken nach demselben
Schema wie bei IDE-Gerten.
Ressourcen fr Hardwarekomponenten
Sie haben bereits erfahren, dass fr die Verwendung von Hardware die Konfigu-
ration von Ressourcen erforderlich ist. Um die aktuelle Konfiguration von Hard-
wareressourcen zu prfen, knnen Sie die jeweils entsprechenden von /proc kon-
sultieren. Das Verzeichnis /proc ist kein Verzeichnis im eigentlichen Sinn,
sondern bildet Parameter des Kernels ab und kann dementsprechend auch zur
Abfrage des Kernels verwendet werden.
In diesem Zusammenhang sind folgende Verzeichnisse fr die Prfung wichtig:
/proc/interrupts enthlt Informationen ber die vom System verwendeten
Interrupts.
/proc/ioports enthlt Informationen ber die von Hardwarekomponenten ver-
wendeten I/O-Adressen.
/proc/dma ist eine Liste der von Gerten verwendeten DMA-Kanle.
/proc/pci ist ein eigentlich veraltetes Verzeichnis, das bei lteren Kernel-Versi-
onen Informationen ber den PCI-Bus enthielt. Heutige Kernel-Versionen ver-
wenden eine eigene Verzeichnishierarchie unterhalb von /proc/bus/pci.
Auch SCSI-Gerte werden in /proc abgebildet. Die Gertedateien fr SCSI-Gerte
haben eine andere Bezeichnung als IDE-Gerte. Die erste SCSI-Festplatte, die am
Bus gefunden wird, bekommt die Bezeichnung /dev/sda. Die Gertedatei ist nicht
mit der SCSI-ID oder der LUN verknpft, sondern bezeichnet die Gerte in der
Reihenfolge, wie sie am Bus gefunden werden. Wenn etwa die zweite SCSI-Fest-
platte eines Systems die SCSI-ID 4 hat, wird sie dennoch mit der Gertedatei /dev/
sdb angesprochen. Das erste SCSI-Bandlaufwerk wird mit /dev/st0 angesprochen
(ein Floppy-Streamer im Vergleich dazu wre /dev/ft0).
33
Hardware-Einstellungen ermitteln und konfigurieren 101.1
Informationen ber angeschlossene SCSI-Gerte befinden sich im Verzeichnis
/proc/scsi eines Computers.
Ein Beispiel fr Informationen ber SCSI-Gerte im /proc-Verzeichnis finden Sie
hier:
archangel:~ # cat /proc/scsi/scsi
Attached devices:
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: WD Model: 1600BEA External Rev: 1.04
Type: Direct-Access ANSI SCSI revision: 04
Da USB-Laufwerke unter Linux hnlich behandelt werden wie SCSI-Gerte, wer-
den diese auch in einer hnlichen Umgebung im /proc-System abgebildet:
archangel:~ # cat /proc/scsi/usb-storage/3
Host scsi3: usb-storage
Vendor: Western Digital
Product: External HDD
Serial Number: 575845393037313238333331
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
Der PCI-Bus
Der PCI-Bus (Peripheral Component Interconnect) ist ein 32-Bit-Bus-System, das
Anfang der 90er Jahre des letzten Jahrhunderts in Zusammenarbeit vieler hard-
wareproduzierender Firmen entwickelt wurde. Inzwischen gibt es auch eine 64-
Bit-Version dieses Bus-Typs. Er kann verwendet werden, um Erweiterungskarten
auf die Hauptplatine eines Computers zu stecken. Einige sogenannte Onboard-
Komponenten (Soundkarten, Grafikkarten usw.) verwenden den PCI-Bus aber
auch direkt. Die auf einer Hauptplatine befindlichen IDE-Controller sind auch
PCI-Gerte. Um sich einen berblick ber den PCI-Bus eines Systems zu verschaf-
fen, knnen Sie das Kommando lspci verwenden. Dieses Kommando kennt drei
Stufen von Verbose. Wenn Sie lspci -vvv eingeben, bekommen Sie also uerst
detaillierte Informationen zu Ihrem PCI-Bus. Eventuell brauchen Sie aber auch
sehr genaue Informationen ber ein bestimmtes Gert, wie in diesem Beispiel
ber die Grafikkarte:
Tipp
Wenn Sie mit SCSI-Gerten fr die Prfung ben mchten, aber keine besitzen, knnen
Sie USB-Gerte als Ersatz verwenden. Diese werden unter Linux als SCSI-Gerte
gehandhabt.
34
Systemarchitektur 101
archangel:/ # lspci -v
...
0000:01:00.0 VGA compatible controller: nVidia Corporation NV18
[GeForce4 MX 440 AGP 8x] (rev a2) (prog-if 00 [VGA])
Flags: bus master, 66Mhz, medium devsel, latency 32, IRQ 11
Memory at fc000000 (32-bit, non-prefetchable) [size=16M]
Memory at f4000000 (32-bit, prefetchable) [size=64M]
Expansion ROM at fd000000 [disabled] [size=128K]
Capabilities: [60] Power Management version 2
Capabilities: [44] AGP version 3.0
Das Programm lspci arbeitet mit dem Verzeichnis /proc/bus/pci zusammen. Es
wertet alle Dateien in diesem Verzeichnis aus und stellt die Informationen in
bersichtlicher Weise dar. Wenn Sie die Option -t (tree) verwenden, stellt lspci
die PCI-Gerte in einer Baumstruktur dar. Die fr Menschen lesbaren Informati-
onen bezieht lspci aus einer Datenbank.
USB Universal Serial Bus
Der USB (Universal Serial Bus) ist ein von Intel entwickeltes Bus-System zum
Anschluss von Peripheriegerten an einen PC. Die erste Version erschien bereits
im Jahre 1996. Fr die Prfung sollten Sie mit den unterschiedlichen Typen von
USB-Controllern und den verschiedenen Treiberkategorien fr USB-Gerte ver-
traut sein.
USB-Host-Controller-Typen
Im Allgemeinen unterscheidet man heute nur zwischen zwei USB-Typen. Der
ltere Vertreter ist USB 1.1, der bertragungsraten von lediglich 12 MB/s maxi-
mal untersttzt. Von diesem gibt es allerdings zwei Varianten:
OHCI (Open Host Controller Interface)
UHCI (Universal Host Controller Interface)
Wenn Sie lediglich Windows einsetzen, brauchen Sie sich um den Unterschied
nicht zu kmmern, aber bei Linux-Systemen mssen Sie den fr den jeweiligen
Typ passenden Treiber laden. Das wren die sogenannten Host-Controller-Treiber
usb-ohci.o oder usb-uhci.o.
Neuere USB-Gerte vom Typ USB 2.0 untersttzen bertragungsraten von
immerhin 480 MB/s. Voraussetzung ist allerdings, dass alle involvierten Gerte
auch diesen Standard untersttzen. Aufgrund der Abwrtskompatibilitt ist es
z.B. mglich, eine USB 2.0-Festplatte ber einen USB 1.1-Hub an einem USB 2.0-
35
Hardware-Einstellungen ermitteln und konfigurieren 101.1
Controller zu betreiben, aber eben nur mit 12 MB/s. Es gibt von USB 2.0 bisher
nur einen Standard: EHCI (Enhanced Host Controller Interface).
Der passende Host-Controller-Treiber wre entsprechend usb-ehci.o.
USB-Klassen
Nachdem der richtige Treiber fr den Host-Controller geladen wurde, knnen die
bentigten Klassentreiber eingebunden werden. Damit Sie eine USB-Maus oder
-Tastatur anschlieen knnen, mssen Sie zunchst den Treiber hid.o laden. HID
steht fr Human Interface Devices und ist zustndig fr Eingabegerte. Beliebtes
Prfungsthema ist auch das Modul usb-storage.o, das fr die Ansteuerung von
Massenspeichern, wie USB Memory Sticks und USB-Festplatten, bentigt wird.
Weitere USB-Klassen, die Treibermodule bentigen, sind Kommunikationsgerte
(Modems u.a.), Audiogerte (Wavetables usw.), Infrarotgerte, Bluetooth und
Drucker. Ein Blick in die geladenen Module eines Systems frdert noch mehr
zutage:
archangel:~ # lsmod | grep usb
usb_storage 72512 1
hci_usb 19720 0
bluetooth 55300 4 hidp,rfcomm,l2cap,hci_usb
usbcore 1688 6 usb_storage,hci_usb,ehci_hcd,uhci_hcd
ide_core 131904 4 usb_storage,ide_cd,ide_disk,piix
scsi_mod 136264 6 usb_storage,sg,st,sr_mod,libata,sd_mod
Wenn ein USB-Gert initialisiert wurde, wird unterhalb von /proc ein Verzeichnis
angelegt, unter dem das Gert fortan erreichbar ist. Die Dateien in diesem System
liegen in binrer Form vor und sind fr den Administrator nicht mit einem Editor
einsehbar. Um Informationen ber USB-Gerte anzeigen zu knnen, verwenden
Sie stattdessen das Programm lsusb. Auf Wunsch knnen Sie mit dem Parameter
-t auch eine Baumstruktur anzeigen lassen:
archangel:/proc/bus/usb # lsusb -t
Bus# 5
`-Dev# 1 Vendor 0x0000 Product 0x0000
`-Dev# 29 Vendor 0x1058 Product 0x0702
Bus# 4
`-Dev# 1 Vendor 0x0000 Product 0x0000
Bus# 3
`-Dev# 1 Vendor 0x0000 Product 0x0000
Bus# 2
`-Dev# 1 Vendor 0x0000 Product 0x0000
`-Dev# 52 Vendor 0x050f Product 0x0003
36
Systemarchitektur 101
|-Dev# 53 Vendor 0x1131 Product 0x1001
`-Dev# 54 Vendor 0x04e8 Product 0x1623
Bus# 1
`-Dev# 1 Vendor 0x0000 Product 0x0000
Um genauere Informationen ber ein einzelnes Gert zu erhalten, knnen Sie
dieses ber die Vendor- und Produktnummer angeben und einen ausfhrlichen
Bericht erstellen lassen. Diese Nummern knnen Sie der normalen Ausgabe von
lsusb weiter oben entnehmen.
archangel:/proc/bus/usb # lsusb -d 0x1058:0x0702 -v
Bus 005 Device 029: ID 1058:0702 Western Digital Technologies, Inc.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
...
USB-Module automatisch laden
Ein Hardwaregert darf man normalerweise erst dann aus dem Computer entfer-
nen, wenn der zu diesem Gert gehrende Treiber entladen wurde. Umgekehrt
muss der Treiber natrlich auch wieder geladen werden, wenn Sie die Hardware-
komponente erneut hinzufgen. Da USB-Gerte im laufenden Betrieb an- und
abgesteckt werden knnen, liegt nichts nher, als die Treiberverwaltung zu auto-
matisieren. Hierfr gibt es zwei verschiedene Mechanismen, die ich Ihnen im
Folgenden vorstelle.
usbmgr
Der Daemon usbmgr kann ausschlielich USB-Gerte verwalten. Wenn ein Gert
an den Computer angeschlossen wird, bermittelt dieses Gert seine Vendor-ID
und seine Product-ID. Das sind die IDs, die Sie in der Ausgabe von lsusb bereits
gesehen haben. In der Datei /etc/usbmgr/usbmgr.conf findet der usbmgr die mit
den IDs korrespondierenden Treibermodule heraus, ldt sie in den Arbeitsspei-
cher und fhrt sie aus. Die Datei usbmgr.conf muss in regelmigen Abstnden
aktualisiert werden, damit auch neuere Hardwarekomponenten erkannt werden
knnen. Die Datei /etc/usbmgr/preload.conf enthlt eine Liste mit Treibern, die
der usbmgr schon beim Systemstart laden soll. Die Konfigurationsdatei /etc/
37
Hardware-Einstellungen ermitteln und konfigurieren 101.1
usbmgr/host enthlt den Namen des Treibers fr den Host (usb-ohci, usb-uhci oder
usb-ehci).
hotplug
Wesentlich weiter verbreitet als der usbmgr ist der Daemon hotplug. Da er auer
USB-Gerten auch PCMCIA-Karten und FireWire-Komponenten bedienen kann,
stellt er im Allgemeinen die bessere Wahl dar.
Wenn ein USB-Gert an den Computer angeschlossen wird, bermittelt der Ker-
nel eine Information ber dieses Gert an hotplug. Im Verzeichnis /etc/hotplug
befinden sich zu den Komponentenarten (USB, PCMCIA usw.) passende Skripte,
die dann die Installation der Treibermodule bernehmen.
Unabhngig vom verwendeten Daemon sollten Sie aber darauf verzichten, USB-
Massenspeicher einfach ohne Vorwarnung vom PC zu trennen. Stellen Sie sicher,
dass alle Schreibvorgnge vorher beendet wurden. Sie sollten das Gert zumin-
dest mit dem Kommando umount aushngen!
Nicht nur der USB-Bus ist geeignet, Hotplug-Gerte zu verwenden. Deshalb wid-
men wir uns diesem Thema in den nchsten Abschnitten etwas nher.
Coldplug und Hotplug
Der Unterschied zwischen Coldplug- und Hotplug-Gerten ist der, dass ein Hot-
plug-Gert im laufenden Betrieb in den Computer eingebaut werden kann, wh-
rend der Computer fr die Montage eines Coldplug-Gertes heruntergefahren und
ausgeschaltet werden muss. Typische Vertreter fr Hotplug-Gerte sind PCMCIA-
Karten bei Notebooks, FireWire- und alle USB-Gerte. Die Konfigurationsdateien
fr Hotplug-Gerte finden Sie unter dem Verzeichnis /etc/hotplug. Detailliertes
Wissen ber die Konfiguration von Hotplug ist fr die Prfung nicht erforderlich.
Das virtuelle Dateisystem sysfs
Das virtuelle Dateisystem sysfs exportiert, hnlich dem /proc-System, Informatio-
nen ber Treibermodule des Kernels in ein fr den Benutzer sichtbares Verzeich-
nis, nmlich /sys. Der Inhalt des Verzeichnisses sieht so aus:
root@archangel:/sys# ls -l
insgesamt 0
drwxr-xr-x 23 root root 0 2009-04-14 18:39 block
drwxr-xr-x 17 root root 0 2009-04-14 18:39 bus
drwxr-xr-x 32 root root 0 2009-04-14 18:39 class
drwxr-xr-x 10 root root 0 2009-04-14 18:39 devices
drwxr-xr-x 3 root root 0 2009-04-14 18:39 firmware
38
Systemarchitektur 101
drwxr-xr-x 3 root root 0 2009-02-12 19:47 fs
drwxr-xr-x 4 root root 0 2009-02-12 19:47 kernel
drwxr-xr-x 134 root root 0 2009-04-14 18:39 module
drwxr-xr-x 2 root root 0 2009-04-14 18:39 power
drwxr-xr-x 59 root root 0 2009-04-14 18:39 slab
Jedes dieser Unterverzeichnisse reprsentiert ein Treibermodell des laufenden
Kernels. Es existieren viele symbolische Links innerhalb dieser Verzeichnisse, um
den Zusammenhang zwischen den Gerten (z.B. zwischen Controller und Fest-
platte) darzustellen.
Da das Verzeichnis /sys dynamisch generiert wird, enthlt es keine unntigen
Informationen ber nicht vorhandene Gerte. Der Ressourcenverbrauch wird
hierdurch auf ein Minimum reduziert.
udev, hald und dbus
Der hald ist ein Daemon, der den Hardware Abstraction Layer reprsentiert. Im
Zusammenhang mit Hotplug-Gerten hat er die Aufgabe, den Daemon dbus dar-
ber zu informieren, wenn ein Wechsellaufwerk an das System angeschlossen
oder entfernt wurde. Das Ergebnis kennen Sie wahrscheinlich aus eigener Erfah-
rung: Sobald ein USB-Memorystick eingesteckt wird, erscheint ein entsprechen-
des Symbol auf dem Desktop. Entfernt man den Memorystick (natrlich nach-
dem man ihn unmounted hat), verschwindet auch das Symbol wieder.
In etwas entfernterem Zusammenhang ist hier noch udev zu nennen. Hierbei han-
delt es sich um einen Gertemanager, der bei moderneren Kernel-Versionen das
virtuelle Verzeichnis /dev verwaltet. Dieses Programm sorgt fr ein aufgerumtes
/dev-Verzeichnis, in dem sich nur die Gerte befinden, die auch tatschlich vor-
handen sind. So wird /dev dynamisch erstellt.
101.2 Das System starten
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, das System durch den Start-
vorgang zu geleiten.
Wichtigste Wissensgebiete:
zur Startzeit dem Bootloader gngige Kommandos und dem Systemkern Opti-
onen bergeben
39
Das System starten 101.2
Wissen ber den Startvorgang vom BIOS bis zum Abschluss des Systemstarts
demonstrieren
Ereignisse beim Systemstart in den Protokolldateien nachschlagen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/var/log/messages
dmesg
BIOS
bootloader
kernel
init
Allgemeines
Der Betriebssystemstart ist ein echtes Dilemma. Schlielich ist das Betriebssystem
dazu da, Software auszufhren, fllt aber selbst unter die Kategorie Software. Man
spricht hier von einem Boot-Strap-Problem (auch Henne-Ei-Problem). In diesem
Kapitel wird der Startvorgang eines Linux-Computers genauer unter die Lupe
genommen. Nach Einschalten des Computers werden zunchst einige initiale Pro-
zesse durch das BIOS ausgefhrt. Unter anderem findet ein Power-On Self-Test
statt, mit dem das System auf grundstzliche Funktionstchtigkeit geprft und dar-
ber hinaus der Arbeitsspeicher auf seine Gre und prinzipielle Funktionstch-
tigkeit hin getestet werden. Dieser Test kann allerdings eine genaue Diagnose bei
sporadisch auftretendem Hardwareversagen nicht ersetzen. Schon die kurze Dauer
der berprfung lsst ahnen, dass hier keine sehr sorgfltige Belastungsprobe der
Bauelemente durchgefhrt wird. Nachdem alle Hardwarekomponenten initiali-
siert wurden, sucht das BIOS nach einem Betriebssystem oder einem Programm,
das ein Betriebssystem laden kann. Die genaue Suchreihenfolge ist im BIOS-Setup
hinterlegt und beinhaltet meist Diskettenlaufwerke, Festplatten, CD-ROMs, SCSI-
Adapter, ZIP-Medien, USB-Gerte und zudem bootfhige (PXE-)Netzwerkkarten.
In der weiteren Betrachtung des Themas wird davon ausgegangen, dass der Start-
vorgang auf der Festplatte fortgesetzt wird. Zunchst ist es erforderlich, den logi-
schen Aufbau einer Festplatte zu kennen, damit man versteht, auf welche Arten
ein Betriebssystem geladen werden kann.
Eine Festplatte kann in mehrere Partitionen unterteilt sein. Es ist mglich, bis zu
vier echte Partitionen auf einer Festplatte zu erstellen. Sollten mehr als vier Par-
titionen, logische Laufwerke o.. (je nach Betriebssystem) existieren, so handelt
es sich wahrscheinlich um logische Partitionen oder Laufwerke innerhalb einer
erweiterten Partition oder um Volumen, die vom Betriebssystem auerhalb der
40
Systemarchitektur 101
Partitionstabelle verwaltet werden. Auch Bit-Slices knnen vortuschen, man
htte mehr als vier Partitionen.
Man kann bei vielen Systemen und so auch bei Linux drei primre und eine
erweiterte Partition besitzen. Diese erweiterte Partition kann dann ihrerseits logi-
sche Partitionen enthalten, die ebenfalls nicht von der Partitionstabelle verwaltet
werden. Die Partitionstabelle befindet sich im sogenannten Master Boot Record
(MBR). Dieser MBR gehrt selbst keiner Partition an, sondern ist eigenstndig. Er
ist immer genau 512 Byte gro und befindet sich ganz am Anfang der Festplatte
in Sektor 0, Spur 0. Nachdem der Aufbau der Festplatte nun zumindest ansatz-
weise geklrt ist (weitere Informationen folgen noch in diesem Kapitel), kann die
Beschreibung des Computerstartvorgangs fortgesetzt werden. Das BIOS liest nun
einfach in Spur 0 des Sektors 0 den Master Boot Record der Festplatte und findet
dort beispielhaft Folgendes vor:
63eb 1090 d08e 00bc b8b0 0000 d88e c08e
befb 7c00 00bf b906 0200 a4f3 21ea 0006
be00 07be 0438 0b75 c683 8110 fefe 7507
ebf3 b416 b002 bb01 7c00 80b2 748a 8b01
024c 13cd 00ea 007c eb00 00fe 0000 0000
0000 0000 0000 0000 0000 8000 0001 0000
0000 0000 faff 07eb c2f6 7580 b202 ea80
7c74 0000 c031 d88e d08e 00bc fb20 64a0
3c7c 74ff 8802 52c2 80be e87d 011c 05be
f67c 80c2 4874 41b4 aabb cd55 5a13 7252
813d 55fb 75aa 8337 01e1 3274 c031 4489
4004 4488 89ff 0244 04c7 0010 8b66 5c1e
667c 5c89 6608 1e8b 7c60 8966 0c5c 44c7
0006 b470 cd42 7213 bb05 7000 76eb 08b4
13cd 0d73 c2f6 0f80 d884 be00 7d8b 82e9
6600 b60f 88c6 ff64 6640 4489 0f04 d1b6
e2c1 8802 88e8 40f4 4489 0f08 c2b6 e8c0
6602 0489 a166 7c60 0966 75c0 664e 5ca1
667c d231 f766 8834 31d1 66d2 74f7 3b04
0844 377d c1fe c588 c030 e8c1 0802 88c1
5ad0 c688 00bb 8e70 31c3 b8db 0201 13cd
1e72 c38c 1e60 00b9 8e01 31db bff6 8000
c68e f3fc 1fa5 ff61 5a26 be7c 7d86 03eb
95be e87d 0034 9abe e87d 002e 18cd feeb
5247 4255 0020 6547 6d6f 4800 7261 2064
6944 6b73 5200 6165 0064 4520 7272 726f
0a0d bb00 0001 0eb4 10cd 3cac 7500 c3f4
0000 0000 0000 0000 2f05 000b 0000 2080
0021 fe83 ffff 0800 0000 6800 027b fe00
ffff fe05 ffff 7000 027b 7ab0 22c7 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 aa55
41
Das System starten 101.2
In diesem Fall sind das ein Ladeprogramm in hexadezimaler Schreibweise, nm-
lich die erste Stufe von GRUB 2, und im unteren Bereich die Partitionstabelle. Es
gibt in Abhngigkeit vom verwendeten Betriebssystem zwei absolut unterschied-
liche Mglichkeiten, wie der Startvorgang fortgesetzt werden kann. Wenn ein
Bootloader im Master Boot Record vorgefunden wird, wie in diesem Fall, gibt das
BIOS die Kontrolle an diesen ab und beendet sich. Falls im MBR kein Bootloader
vorhanden ist (dann wren im oberen Bereich des MBRs brigens nur Nullen zu
sehen), konsultiert das BIOS die Partitionstabelle. Hier sucht das BIOS nach
einem Verweis auf eine startfhige Partition. Die Partitionstabelle beginnt in der
fnften Zeile, von unten an gezhlt, mit 8002. Der Eintrag fr jede Partition ent-
spricht genau einer Zeile. Das Ende der Partitionstabelle wird mit 55aa markiert.
Hierbei handelt es sich um eine Abschlussmarkierung, die nicht Bestandteil eines
Partitionseintrages ist. Die offensichtliche Vertauschung der Bytes (55aa wird
als aa55 dargestellt) wird durch das Programm verursacht, das diese Partitionsta-
belle darstellt. Programme, die eine Big-Endian-First-Byte-Abfolge verwenden,
zeigen das Byte mit den hchstwertigen Bits zuerst an. Andere Programme nut-
zen die Little-Endian-First-Byte-Abfolge. Sie zeigen das Byte mit den niedrigst-
wertigen Bits zuerst an. Dieser Unterschied ist historisch durch die Verwendung
unterschiedlicher Prozessorarchitekturen begrndet. Whrend Intel-basierte Sys-
teme Little Endian verwenden, kommt beispielsweise bei Motorola 6800 Big
Endian zum Einsatz.
Die Partition, die mit 80 beginnt, ist die Startpartition. Sollte also kein Ladepro-
gramm im MBR vorliegen, wrde das BIOS nun diesem Verweis folgen und den
Bootsektor der Partition mit der Markierung 80 einlesen (Machen Sie sich bitte
den Unterschied zwischen Startsektor einer Partition und MBR klar!). Sptestens
hier sollten sich dann entweder ein Bootloader oder das Betriebssystem selbst
befinden. Nun kann der tatschliche Vorgang, den man als Booten bezeichnet,
beginnen.
Boot-Strap-Loader
Der Ausdruck Booten ist historisch gewachsen und hat seine Wurzeln in einer
Situation, in die der Baron von Mnchhausen einst angeblich geraten sein soll. Er
war in einen Sumpf gefallen, und weil niemand da war, der ihm htte helfen kn-
nen, hat er sich selbst an den eigenen Haaren aus dem Sumpf herausgezogen. Im
Lauf des Tradierens ist diese Mnchhausen-Geschichte beim bersetzen in die
englische Sprache insoweit abgewandelt worden, dass sich der Baron am Stiefel-
gurt (Boot-Strap) aus dem Sumpf herausgezogen haben soll. Genau so muss sich,
sinnbildlich gesehen, ein Betriebssystem auch selbst hochziehen. Ein Betriebssys-
tem dient letztendlich als Plattform, um Software auszufhren. Andererseits ist
42
Systemarchitektur 101
ein Betriebssystem jedoch selbst Software. Deshalb benutzen wir den Begriff
Boot-Strap-Loader, der spter auf Bootloader verkrzt wurde.
Die Konfiguration der beiden Bootloader GRUB Legacy und GRUB 2 werden Sie
auf den nchsten Seiten noch erlernen. In dieser Prfung wird es aber auch nur
noch vereinzelt Fragen zu dieser Thematik geben. Der Bootloader Lilo gilt inzwi-
schen als veraltet und ist seit April 2012 nicht mehr Gegenstand dieser Prfung.
Kernel-Parameter
Sie knnen dem Kernel zur Startzeit durch den Bootloader Parameter bergeben
lassen. Hierfr gibt es zwei Mglichkeiten: Entweder tragen Sie die zu berge-
benden Parameter in die Konfigurationsdateien des Bootloaders dauerhaft ein
(z.B. in /boot/grub/grub.conf), oder Sie bergeben diese von Hand beim Sys-
temstart. Letztere Methode ist natrlich nur dann sinnvoll, wenn Sie dem Kernel
ausnahmsweise, etwa zu Testzwecken oder zur Fehlerbehebung, Parameter ber-
geben mssen.
Wenn Parameter an Module des Kernels bergeben werden mssen, erfolgt dies
ber die Datei /etc/modules.conf (bei lteren Kerneln) oder /etc/modprobe.conf (bei
modernen Kerneln). Der erzielte Effekt ist in allen Fllen gleich. Mgliche Parame-
ter sind z.B.:
ide=nodma
apm=off
acpi=off
Eine weitere Mglichkeit besteht darin, einer Hardwarekomponente einen ande-
ren IRQ-, DMA-Kanal oder eine andere Adresse zu bergeben. Bei der heutigen
Hardware ist diese Methode aber absolut nicht mehr angebracht.
Wenn Kernel-Parameter bei jedem Systemstart bergeben werden mssen, tra-
gen Sie diese in die Datei grub.conf ein:
kernel /bzImage-2.6.11 root=/dev/hda2 ide=nodma apm=off
Die Parameterbergabe durch modules.conf bzw. modprobe.conf erfolgt oft des-
halb, weil einem Gert beim Systemstart Parameter bergeben werden mssen.
So wrde z.B. die Zeile
options sonycd535 sonycd535=0x340
einem veralteten CD-ROM-Laufwerk von Sony die I/O-Adresse 340 bergeben.
Es knnen mit dieser Methode keine Optionen an Sektionen des Kernels berge-
ben werden, die nicht modular kompiliert wurden.
43
Das System starten 101.2
Wenn Sie whrend des Systemstarts Parameter bergeben mssen, ist die Vorge-
hensweise natrlich eine andere. Sie stoppen den Bootvorgang in dem Augen-
blick, in dem das Bootmen erscheint. Das erreichen Sie durch ein kurzes Betti-
gen der Cursortasten. Whlen Sie den gewnschten Eintrag aus dem Bootmen
aus, und bettigen Sie anschlieend die Taste (E). Es ffnet sich dann ein Emacs
hnlicher Editor, mit dem Sie den gewhlten Bootmeneintrag bearbeiten kn-
nen. nderungen, die Sie hier vornehmen, sind nicht dauerhaft und werden beim
nchsten Systemstart nicht mehr angewendet. Um den Startvorgang fortzusetzen,
bettigen Sie bei GRUB 2 die Tastenkombination (Strg) + (X). Wenn Sie noch
GRUB Legacy verwenden, bettigen Sie die Eingabetaste, gefolgt von einem (B).
Ein prominenter bergabeparameter, den Sie aus verstndlichen Grnden aus-
schlielich am Boot-Prompt bergeben, ist init=/bin/bash. Sie bentigen ihn,
wenn Sie Ihr Root-Passwort vergessen haben. Es wird nach Ausfhrung dieses
Parameters nicht, wie sonst blich, der init-Prozess gestartet, sondern nur die
Shell /bin/bash ohne Passwortabfrage. Das Root-Dateisystem ist jetzt allerdings
im Nur-lesen-Modus gemountet, weshalb noch die Eingabe folgender Befehle
erforderlich wird:
mount -o remount,rw /
passwd root
Jetzt knnen das Kennwort neu gesetzt und der Computer anschlieend im nor-
malen Modus neu gestartet werden.
Linux-Gegner weisen in diesem Zusammenhang natrlich sofort auf die theore-
tisch bestehende Sicherheitslcke hin. Doch hier gilt es, zwei entscheidende
Argumente dagegenzuhalten:
Dieses unsichere Verhalten von Linux knnen Sie sowohl bei GRUB als auch
bei LILO ber die jeweiligen Konfigurationsdateien abschalten. Das ist natr-
lich nur dann notwendig, wenn man die physikalische Sicherheit eines Sys-
tems nicht sicherstellen kann.
Es darf ohnehin keine nicht autorisierte Person unbeaufsichtigt in die Nhe
eines Computers gelangen, weil sonst ein Diebstahl der Festplatte, des ganzen
Computers oder ein Sabotageakt durch Gewalteinwirkung nicht ausgeschlos-
sen werden knnte.
Startprotokollierung
Die Ausgaben, die der Kernel beim Systemstart produziert, werden selbstver-
stndlich protokolliert. Nur wenige Menschen wrden es schaffen, den Startpro-
zess von Linux mit den bloen Augen zu verfolgen.
44
Systemarchitektur 101
In der Prfung wird hier gern mit dem Programm dmesg gearbeitet. Dieses Pro-
gramm liest den sogenannten Kernel-Ring-Buffer aus, in dem sich die Meldungen
des Kernels befinden. Weil dmesg mehrere Hundert Zeilen ausgeben kann, emp-
fiehlt es sich, die Ausgabe in eine Textdatei umzuleiten oder an less zu pipen:
dmesg > kernelmeldungen.log
dmesg | less
SFW2-INext-DROP-DEFLT IN=dsl0 OUT= MAC= SRC=83.189.45.7
DST=88.73.56.127 LEN=131 TOS=0x00 PREC=0x00 TTL=57 ID=51842
PROTO=UDP SPT=50142 DPT=16406 LEN=111 SFW2-INext-DROP-DEFLT
IN=dsl0 OUT= MAC= SRC=85.182.126.21 DST=88.73.56.127 LEN=4 8
TOS=0x00 PREC=0x00 TTL=121 ID=39923 DF PROTO=TCP SPT=1066 DPT=1874
WINDOW=6553 5 RES=0x00 SYN URGP=0 OPT (020405A001010402)
SFW2-INext-DROP-DEFLT IN=dsl0 OUT= MAC= SRC=85.182.126.21
DST=88.73.56.127 LEN=4 8 TOS=0x00 PREC=0x00 TTL=121 ID=39988
DF PROTO=TCP SPT=1066 DPT=1874 WINDOW=6553 5 RES=0x00 SYN URGP=0
OPT (020405A001010402)
Das ist aber nicht das erwartete Ergebnis. Der Grund fr diese stark gekrzte Aus-
gabe ist der, dass die Firewall bei Linux im Kernel integriert ist. Deshalb protokol-
liert diese auch in den Kernel-Ring-Buffer. Wenn dmesg allerdings kurz nach dem
Systemstart ausgefhrt wird, erhalten Sie durchaus brauchbare Informationen.
Hier ein Beispiel ber das Laden der Module fr zwei Netzwerkkarten:
8139too Fast Ethernet driver 0.9.27
eth0: RealTek RTL8139 at 0xe0dc0000, 00:e0:7d:78:e6:18, IRQ 193
eth0: Identified 8139 chip type 'RTL-8139B'
eth1: RealTek RTL8139 at 0xe0f70400, 00:e0:4c:39:68:3f, IRQ 169
eth1: Identified 8139 chip type 'RTL-8139B'
Sollte der letzte Startvorgang schon lnger zurckliegen, hilft nur noch die Aus-
wertung der Datei /var/log/messages. Hier werden die Informationen ber den
Startvorgang deutlich lnger, mglicherweise sogar fr immer, aufgehoben. Um
die kernel-bezogenen Meldungen schneller auffinden zu knnen, empfiehlt sich
eine Filterung mittels grep, bevor das Ergebnis an less bergeben wird.
grep kernel /var/log/messages | less
Hier finden Sie tatschlich die Eintrge von vorhin wieder, diesmal sogar mit
genauer Angabe des Zeitpunktes, zu dem die Module geladen wurden.
Aug 4 11:34:37 archangel kernel: 8139too Fast Ethernet driver 0.9.27
Aug 4 11:34:37 archangel kernel: eth0: RealTek RTL8139 at 0xe0dc0000,
00:e0:7d:78:e6:18, IRQ 193
45
Runlevel wechseln und das System anhalten oder neu starten 101.3
Aug 4 11:34:37 archangel kernel: eth0: Identified 8139 chip type
'RTL-8139B'
Aug 4 11:34:37 archangel kernel: eth1: RealTek RTL8139 at 0xe0f70400,
00:e0:4c:39:68:3f, IRQ 169
Aug 4 11:34:37 archangel kernel: eth1: Identified 8139 chip type
'RTL-8139B'
Auch diese Ausgabe ist, wie die meisten anderen, erheblich gekrzt worden.
101.3 Runlevel wechseln und das System anhalten oder
neu starten
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, den Runlevel des Systems zu
verwalten. Dieses Prfungsziel umfasst das Wechseln in den Single-User-Modus,
das Anhalten und den Neustart des Systems. Kandidaten sollten ebenfalls in der
Lage sein, Benutzer vor einem Wechsel des Runlevel zu benachrichtigen und Pro-
zesse korrekt anzuhalten. Dieses Prfungsziel umfasst ferner das Einstellen des
Standard-Runlevel. Es enthlt auch Kenntnisse ber Funktionen potentieller
Ersatzprogramme fr init.
Wichtigste Wissensgebiete:
den Standard-Runlevel setzen
zwischen Runlevel wechseln, einschlielich dem Single-User-Modus
Systemhalt und Neustart von der Kommandozeile
Benutzer vor einem Runlevel-Wechsel oder anderem greren Ereignis
benachrichtigen
Prozesse korrekt beenden
Wissen ber grundlegende Funktionen von upstart und systemd
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/inittab
shutdown
init
/etc/init.d
telinit
46
Systemarchitektur 101
Allgemeines
Beim Systemstart bergibt der Kernel, wenn dieser mit seiner Initialisierung fer-
tig ist, die Kontrolle an den init-Prozess. Bei diesem Prozess handelte es sich bis
vor nicht allzu langer Zeit bei allen Linux-Distributionen um den init-Daemon,
der schon seit 1983 bei System-V-basierten Betriebssystemen zum Einsatz kam.
(Der Name leitet sich vom Unix-System der Firma AT&T ab). Alternativen zu init
und die sich daraus ergebenden Unterschiede bei der Konfiguration werden am
Ende dieses Kapitels nher beschrieben.
Bei Linux ist es nicht nur mglich, das Betriebssystem herauf- bzw. herunterzu-
fahren. Es gibt hier zustzliche Abstufungen. Die Zustnde, in denen sich der
Computer dabei jeweils befindet, werden als Runlevel bezeichnet. Fr den Wech-
sel von einem Runlevel in einen anderen ist der Prozess init zustndig. Von
manchen Administratoren wird init auch als der Vater aller Prozesse bezeichnet.
Das kommt wohl daher, dass er immer der erste Prozess ist, der auf einem Linux-
Computer gestartet wird. Aus diesem Grund erhlt er auch stets die PID 1. Beim
Herunterfahren des Betriebssystems ist init auerdem der letzte Prozess, der
sich beendet. Im folgenden Beispiel, das die Ausgabe des ps A-Kommandos wie-
dergibt, erkennt man deutlich, wo der init-Prozess angesiedelt ist:
archangel:~ # ps -A
PID TTY TIME CMD
1 ? 00:00:00 init
2 ? 00:00:00 migration/0
3 ? 00:00:00 ksoftirqd/0
4 ? 00:00:00 migration/1
5 ? 00:00:00 ksoftirqd/1
6 ? 00:00:00 events/0
Wenn Sie pstree ausfhren, wird init die Wurzel des Prozessbaumes reprsen-
tieren.
Die Runlevel und ihre Funktion
Runlevel sind sozusagen Zustnde oder Funktionsstufen, in denen sich ein Linux-
basiertes System befinden kann. Leider sind nicht alle Runlevel durch eine
genaue Normung festgelegt. Sie mssen also gegebenenfalls nachlesen, wie die
Distribution, die Sie gerade verwenden, die Runlevel organisiert. Im Normalfall
gestaltet sich das Ganze folgendermaen:
Runlevel 0 ist bei allen Distributionen gleich definiert. Wenn der Computer in
diesen Runlevel eintritt, schaltet er sich aus, vorausgesetzt natrlich, das BIOS
untersttzt eine automatische Abschaltung des Gertes.
47
Runlevel wechseln und das System anhalten oder neu starten 101.3
Runlevel 1 entspricht Runlevel s oder auch Runlevel S. Dies gilt ebenfalls fr
alle Distributionen in gleicher Weise. Dieser Status wird auch als Single-User-
Mode bezeichnet, weil Linux hier nur rudimentre Systemfunktionen zur Ver-
fgung stellt. In dieser Stufe gibt es noch keine Netzwerkfunktionalitt und
keine Multiuser-Untersttzung (daher die Bezeichnung Single-User-Mode).
Der Runlevel 1 sollte nur zur Wartung und Administration verwendet werden.
Runlevel 2 ist nicht bei allen Distributionen gleich definiert. In der Regel kn-
nen Sie zumindest davon ausgehen, dass es in Runlevel 2 keine Untersttzung
fr eine grafische Anmeldung gibt. In jedem Fall gibt es in dieser Stufe eine
Multiuser-Funktionalitt, und bei manchen Distributionen wird hier das Netz-
werk gestartet.
Runlevel 3 ist ebenfalls nicht bei allen Distributionen gleich konfiguriert. Mul-
tiuser-Funktionalitt ist selbstverstndlich vorhanden. Das Netzwerk luft
sptestens in diesem Status bei allen bekannten Distributionen. Unterschiede
bestehen lediglich distributionsspezifisch gesehen darin, ob jetzt eine grafi-
sche Anmeldung zur Verfgung steht oder nicht.
Runlevel 4 wird von keiner bekannten Distribution genutzt.
Runlevel 5 ist der hchste funktionale Runlevel und untersttzt in der Regel
Netzwerk, Multiuser-Untersttzung und eine grafische Anmeldung, wenn
eine solche installiert wurde.
Runlevel 6 ist dagegen distributionsbergreifend festgelegt. Wenn man diesen
Runlevel startet, fhrt init das System herunter und startet es anschlieend
neu.
Die Konfigurationsdatei inittab
Die Datei /etc/inittab ist die Hauptkonfigurationsdatei fr den init-Prozess, der
sich im brigen selbst im /sbin-Verzeichnis befindet. Hier knnen Sie beispiels-
weise festlegen, in welchen Runlevel Linux standardmig bootet. So kann es
z.B. fr Sie interessant sein, zu verhindern, dass der Rechner jedes Mal bis zur
grafischen Anmeldung hochfhrt, wenn Sie lediglich ein paar Kommandos testen
wollen, fr die man nur eine Konsole bentigt. Suchen Sie also in Ihrer /etc/init-
tab folgende Zeilen:
# The default runlevel is defined here
id:3:initdefault:
Im gezeigten Beispiel ist Runlevel 3 als Standardwert eingestellt. Wenn Sie diesen
Wert ndern, ist er beim nchsten Neustart wirksam. Die Werte 0 oder 6 sind
hier nicht empfehlenswert, weil der Computer gleich nach dem Start herunter-
fahren oder neu starten wrde.
48
Systemarchitektur 101
Ein paar Zeilen weiter in der inittab knnen Sie nachverfolgen, wie die Runlevel
in Ihrer Distribution organisiert sind:
# runlevel 0 is System halt
# runlevel 1 is Single user mode
# runlevel 2 is Local multiuser without remote network
# runlevel 3 is Full multiuser with network
# runlevel 4 is Not used
# runlevel 5 is Full multiuser with network and xdm
# runlevel 6 is System reboot
Die meisten Linux-Distributionen stellen von sich aus sechs Konsolen bereit, auf
denen man gleichzeitig arbeiten kann. Es ist aber auch mglich, weitere Konsolen
hinzuzufgen oder zu entfernen. Achten Sie aber darauf, nicht die Konsole zu
belegen, die Ihr X-Window-System verwendet:
1:2345:respawn:/sbin/mingetty --noclear tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
Die erste Ziffer jeder Zeile ist die ID der zu startenden Konsole. Sie muss mit der
Nummer des verwendeten Terminals bereinstimmen. Nach dem ersten Doppel-
punkt folgen die Runlevel, in denen die jeweiligen Konsolen verfgbar sein sol-
len. Der Runlevel 1 ist nicht vertreten, weil dieser an anderer Stelle konfiguriert
wird und auch nur eine einzige Konsole zulsst. Die Anweisung respawn ist ein
Kunstwort und knnte wohl am ehesten mit wieder hervorbringen bersetzt wer-
den. Eine Konsole, die beendet wurde, wird hierdurch automatisch wieder neu
gestartet. Das passiert allerdings normalerweise nie von selbst. Es wre hchstens
die Situation vorstellbar, eine Konsole mit dem kill-Befehl beenden zu mssen,
weil sich ein in dieser Konsole laufender Prozess nicht mehr ansprechen lsst.
Bekannt fr solche Fehler ist der unter bekehrten DOS-Benutzern beliebte Mid-
night Commander. Er blockiert ein Terminal z.B. dauerhaft, wenn man mit ihm
gerade auf ein NFS-Laufwerk zugreift und dieses pltzlich nicht mehr zur Verf-
gung steht. Der Midnight Commander zeigt sich dann auch von einem kill s 9
nicht mehr sonderlich beeindruckt und bleibt im Arbeitsspeicher liegen. Ein
Beenden der Shell, auf der er ausgefhrt wird, hilft in der Regel auch nicht wei-
ter. Abhilfe ist in einem solchen Fall nur so mglich: Es muss der richtige
mingetty-Prozess (am besten mit pstree) herausgefunden und dieser mit kill
beendet werden. Dann findet ein respawn der beendeten Konsole statt. /sbin/
mingetty ist eines der wichtigsten Konsolenprogramme, das das Programm /bin/
login aufruft. TTY ist eine sehr alte Abkrzung, die fr Teletyper steht.
49
Runlevel wechseln und das System anhalten oder neu starten 101.3
Die letzte interessante und zudem prfungsrelevante Option innerhalb der
inittab ist:
# what to do when CTRL-ALT-DEL is pressed
ca::ctrlaltdel:/sbin/shutdown -r +4
Hier wird dargestellt, was passieren soll, wenn jemand den sogenannten Affen-
griff ausfhrt. In diesem Fall wird der Computer nach genau vier Minuten (+4)
neu gestartet (-r). Die genaue Verwendung des Befehls shutdown wird weiter
unten erlutert. Vorher wird eine Konsolenmeldung an alle angemeldeten Benut-
zer gesendet. Da es sich um eine Konsolenmeldung handelt, werden natrlich
keine Windows-Benutzer, die auf einen Samba-Server zugreifen, benachrichtigt.
Sollten Sie den Computer immer allein verwenden, spricht nichts dagegen, die
shutdown-Anweisung gegen ein init 0 oder init 6 zu tauschen. Damit eine solche
nderung sofort und nicht erst nach einem Neustart des Systems wirksam wird,
sollten Sie anschlieend telinit q ausfhren. Merken Sie sich bitte auch fr die
Prfung, dass telinit q den init-Prozess veranlasst, im laufenden Betrieb die
Datei inittab neu einzulesen.
Verzeichnisse und Dateien des init-Prozesses
Abgesehen von der /etc/inittab gibt es noch einige andere Dateien und Verzeich-
nisse, die der init-Prozess ausliest und verwendet. Hier gibt es allerdings in Abhn-
gigkeit von der verwendeten Distribution zum Teil erhebliche Unterschiede. Das
macht sich vor allem in der Platzierung von Skripten bemerkbar, die beim Wechsel
von Runlevel involviert sind. So arbeiten Red Hat-basierte Systeme meist mit einem
monolithischen Initialisierungsskript, whrend die meisten anderen Distributio-
nen kleine Einzelskripte abarbeiten. Das Basisverzeichnis ist aber bei den meisten
Systemen leicht auffindbar, weil durch entsprechende Softlinks fr eine Art Red-
undanz gesorgt wird. So heit dieses Basisverzeichnis typischerweise /etc/init.d
bzw. /etc/rc.d. Hier befinden sich bei den meisten Distributionen die einzelnen
init-Skripte. Sie knnen diese natrlich auch im laufenden Betrieb von Hand aus-
fhren. So knnen Sie mit folgenden Befehlszeilen z.B. sendmail beenden:
/etc/init.d/sendmail stop
oder
/etc/rc.d/sendmail stop
hnlich sieht es aus, wenn Sie sendmail wieder starten mchten:
/etc/init.d/sendmail start
oder
50
Systemarchitektur 101
/etc/rc.d/sendmail start
Schon nimmt sendmail seine Arbeit wieder auf. Welche bergabeparameter ein
solches Skript versteht, knnen Sie im Skript selbst nachsehen. Alle diese Skripte
verstehen, so wie in unserem Beispiel, start und stop. Einige verstehen auch
noch status oder reload. Mit status knnen Sie nachprfen, ob der zugehrige
Daemon luft. Die reload-Anweisung dient dazu, einem Programm ein SIGHUP
zu senden und es somit zu veranlassen, seine Konfigurationsdateien neu einzule-
sen. Das kann hilfreich sein, wenn Sie diese Dateien verndert haben und das
Programm diese einlesen soll, ohne vorbergehend seinen Dienst einzustellen.
Es lohnt sich durchaus, sich mit einem solchen Skript nher auseinanderzusetzen,
auch wenn man es nicht wie eine Geschichte lesen kann. Sie knnen auch ohne
Programmierkenntnisse einige Informationen finden, die zum Verstndnis bei-
tragen, wie die Skripte verarbeitet werden. Als Beispiel dienen hier einige Frag-
mente aus dem Startskript von Apache2:
### BEGIN INIT INFO
# Provides: apache2 httpd2
# Required-Start: $local_fs $remote_fs $network
# X-UnitedLinux-Should-Start: $named $time postgresql sendmail mysql ypclient
dhcp radiusd
# Required-Stop: $local_fs $remote_fs $network
# X-UnitedLinux-Should-Stop:
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Apache2 httpd
# Description: Start the httpd daemon Apache 2
### END INIT INFO
Die wichtigsten Informationen, die Sie diesem Startskript entnehmen knnen,
sind u.a. die Angaben darber, in welchem Runlevel Apache berhaupt laufen
soll. Default-Start sagt, dass Apache in Runlevel 3 und 5 laufen soll. In Runlevel
0, 1, 2 und 6 luft er laut Default-Stop standardmig nicht. Runlevel 4 wird ver-
stndlicherweise gar nicht erst erwhnt. Im oberen Teil des Skripts erkennen Sie
(hinter Required-Start), welche anderen Dienste Apache voraussetzt, die ihrer-
seits wieder von weiteren Programmen abhngen. In diesem Zusammenhang
interessiert darber hinaus, welche Parameter das Startskript von Apache ver-
steht. Dazu mssen Sie wissen, dass der erste Parameter eines Shell-Skripts
immer in der Variablen $1 hinterlegt wird. Also sucht man zunchst nach der
Variablen $1 innerhalb des Skripts:
action="$1"
Offensichtlich bergibt das Skript die Eingabevariable an eine andere Variable
namens action. Also muss man nach dieser Variablen und eventuell nach einer
Auswahlanweisung suchen. Die Suche wird folgende zwei Fundstellen ergeben:
51
Runlevel wechseln und das System anhalten oder neu starten 101.3
case "$action" in
stop|try-restart|*status*|probe)
und
case "$action" in
start*)
Das ist das Ergebnis. An /etc/rc.d/apache2 knnen Sie die Parameter stop, start,
try-restart, status und probe anhngen. Dieses Beispiel war im brigen schon
vergleichsweise kompliziert, weil die meisten anderen Skripte ohne Umweg mit
der Variablen $1 arbeiten.
Nachdem Sie jetzt wissen, wie diese Skripte manuell bedient werden, knnen Sie
dieses Vorgehen auch auf die Arbeitsweise von init bertragen.
Bei den meisten Distributionen liegen unterhalb des Verzeichnisses /etc/init.d
bzw. /etc/rc.d Unterverzeichnisse, die den jeweiligen Runlevel zugeordnet sind.
Diese heien /etc/init.d/rc1.d, /etc/init.d/rc2.d usw. Bei anderen Distributionen
liegen diese Verzeichnisse durchaus auch direkt unterhalb von /etc. In diesen Ver-
zeichnissen befinden sich Softlinks, die auf die jeweiligen Startskripte zeigen, die
in diesem Runlevel gestartet werden sollen. Diese Softlinks sehen in Runlevel 3
beispielsweise so aus:
K04apache2
S13named
K05sendmail
S18apache2
In Wirklichkeit liegen hier vielleicht 50 bis100 Softlinks (in Abhngigkeit von der
Anzahl der installierten Pakete), aber vier sollen zur Veranschaulichung gengen.
Beim Eintreten in einen Runlevel fhrt init alle Skripte aus, deren Softlink ein S
wie start vorangestellt wurde. Durch die folgende zweistellige Nummerierung
wei init auch, in welcher Reihenfolge er die Skripte abarbeiten muss. Beim Ver-
lassen des Runlevels arbeitet er alle Skripte ab, deren Softlink ein K wie kill vor-
angestellt wurde. Auch hier gibt die zweistellige Nummerierung einen Hinweis
auf die Verarbeitungsreihenfolge.
Die letzte Frage, die sich noch stellt, ist die, weshalb ein und dasselbe Skript, das
durch zwei unterschiedliche Softlinks aktiviert wurde, einmal einen Daemon
startet und diesen ein anderes Mal beendet:
K04apache2
S18apache2
52
Systemarchitektur 101
Beide Softlinks zeigen auf /etc/rc.d/apache2, aber die Lsung ist ganz einfach:
Jedes Skript kann durch die Abfrage einer Variablen, nmlich $0, feststellen, ob
es durch Aufruf seines eigenen Dateinamens oder durch den Aufruf eines Links
gestartet wurde, und dementsprechend mit Verzweigungen innerhalb des Pro-
gramms reagieren.
Runlevel-Wechsel, Herunterfahren, Neustart
Wenn Sie herausfinden wollen, in welchem Runlevel sich ein System gerade
befindet, geben Sie einfach das Kommando runlevel ohne Parameter ein:
archangel:~ # runlevel
1 3
Dieses System befindet sich in Runlevel 3 und lief vorher in Runlevel 1. Es sind
also immer rechts der derzeitige und links der vorherige Runlevel eines Systems
angegeben.
Zum Wechsel eines Runlevels verwenden Sie das Kommando init oder telinit.
In den meisten Fllen ist telinit sowieso kein eigenstndiges Programm mehr,
sondern lediglich ein Softlink auf init. Es ist also egal, welchen der beiden
Befehle Sie verwenden. Wenn Sie in einen anderen Runlevel wechseln wollen,
geben Sie einfach init ein, gefolgt von der Nummer des gewnschten Runlevels.
So wechselt init 1 in den Singleuser-Mode. init s oder init S liefern dasselbe
Ergebnis. Mit init 0 knnen Sie das System herunterfahren oder mit init 6 neu
starten. In beiden Fllen werden eventuell verbundene Benutzer allerdings nicht
benachrichtigt, und es wird ohne weitere Verzgerungen sofort heruntergefah-
ren. Ein Datenverlust wre nicht auszuschlieen.
Weitere Methoden, ein System herunterzufahren oder neu zu starten, sind:
shutdown
halt
reboot
poweroff
Der einzig sinnvolle Befehl der soeben genannten ist allerdings shutdown. Alle
anderen sollten nicht von Administratoren verwendet werden, sondern es sind
Hilfsprogramme, die von init bentigt werden. Wenn Sie den halt-Befehl einmal
testen mchten, sollten Sie vorher zumindest mit dem Kommando sync Ihren Fest-
platten die Gelegenheit geben, den aktuellen Cache-Inhalt zu schreiben, denn nach
Eingabe von halt fhrt das System erschreckend schnell herunter.
53
Runlevel wechseln und das System anhalten oder neu starten 101.3
Die sauberste Methode, ein System herunterzufahren oder neu zu starten, ist die
Verwendung von shutdown. Die Benutzer werden vor dem Herunterfahren des
Systems gewarnt. Alle noch laufenden Programme werden durch das Signal 15
aufgefordert, sich zu beenden. Sollten die Programme dies allerdings nach einer
angemessenen Zeit nicht getan haben, werden sie mit dem Signal 9 gewaltsam
terminiert. Wichtige Optionen sind hier:
-r fr reboot
-h fr halt
-t fr time in Sekunden
-k nur Konsolenmeldung senden, aber nicht herunterfahren
-f kein fsck bei Flligkeit whrend des Neustarts
-F nach Neustart fsck erzwingen
Mit dem folgenden Befehl wird der Computer sofort neu gestartet und beim
Startvorgang fsck nicht ausgefhrt:
shutdown f r now
Das ist eine wichtige Option, wenn Sie bei einem Produktionsserver wegen eines
neuen Kernels booten mssen und nicht so lange warten knnen, bis fsck alle
Festplatten berprft hat. Wohl aus diesem Grund stellen diese beiden Schalter
eine beliebte Prfungsthematik dar.
Upstart
Unter Ubuntu und dessen Derivaten (z.B. Linux Mint) wurde der klassische Init-Dae-
mon durch Upstart ersetzt. Der Hauptvorteil von Upstart gegenber Init ist ein spr-
bar beschleunigter Systemstart. Das liegt daran, dass Init alle Dienste, fr die er
zustndig ist, in chronologischer Reihenfolge startet. Upstart startet Dienste parallel,
die nicht voneinander abhngig sind, was eine deutliche Zeitersparnis bedeutet.
Aus der Verwendung von Upstart ergeben sich einige Unterschiede in der Admi-
nistration, die Sie kennen sollten. Da Upstart zu Init kompatibel sein soll, gibt es
aber auch erfreulich viele Parallelen. Die Kommandos, die Sie im Verlauf dieses
Kapitels kennen gelernt haben, knnen weiterhin verwendet werden (z.B. init,
telinit, runlevel, sysctl). Auch bestehende Skripte im Verzeichnis /etc/rc.d
werden weiterhin zustzlich abgearbeitet, und der Prozess mit der PID 1 heit
immer noch /sbin/init. Doch kommen wir nun zu den Unterschieden zu Init:
Die Konfigurationsdateien bzw. Skripte von Upstart liegen in den Verzeichnissen
/etc/init und /etc/event.d.
54
Systemarchitektur 101
Die Datei /etc/inittab wird nicht mehr verwendet.
Es gibt keine Verknpfungen mehr, die den Start oder das Beenden eines Dienstes
in einem bestimmten Runlevel bewirken. Stattdessen ist die Information dazu, in
welchem Runlevel ein Dienst laufen soll, im Skript selbst enthalten. Sie sehen hier
das Skript /etc/init/smbd.conf, das den Samba-Server startet bzw. beendet:
description "SMB/CIFS File Server"
author "Steve Langasek <steve.langasek@ubuntu.com>"
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
respawn
pre-start script
RUN_MODE="daemons"
[ -r /etc/default/samba ] && . /etc/default/samba
[ "$RUN_MODE" = inetd ] && { stop; exit 0; }
install -o root -g root -m 755 -d /var/run/samba
end script
exec smbd -F
Eine weitere Neuerung ist die Verwendung kurzer Kommandos zur Steuerung
der Dienste bzw. Daemonen. Um den Samba-Server zu veranlassen, seine Konfi-
guration neu einzulesen, knnen Sie z.B. dieses einfache Kommando verwenden:
root@archangel:/# reload smbd
Hierfr wre unter dem System-V-Init ein erheblich lngerer Befehl ntig gewe-
sen:
root@archangel:/# /etc/rc.d/smbd reload
Gltige Kommandos fr Upstartsysteme sind start, stop, restart, reload und
status.
Systemd
Systemd ist ebenfalls eine Alternative fr Init. Wenn Sie damit experimentieren
wollen, sollten Sie Fedora 15 oder eine neuere Version verwenden. In anderen
Linux-Distributionen ist Systemd zumindest in einer Standardinstallation nicht
enthalten. Genau wie Upstart startet Systemd Dienste, wenn diese nicht vonein-
ander abhngig sind, parallel und beschleunigt dadurch den Systemstart erheb-
lich. Auch Systemd ist grundstzlich kompatibel mit System-V-basierten Skripten.
Sie knnen auch hier, genau wie bei einem Upstart-System, weiterhin mit den alt
bekannten Kommandos von System-V arbeiten (z.B. runlevel, init und sysctl).
Es gibt allerdings fr Systemd auch eigene Administrationstools.
55
Runlevel wechseln und das System anhalten oder neu starten 101.3
Als Ersatz fr sysctl gibt es jetzt systemctl. Wenn Sie z.B. zum Runlevel 3 wech-
seln wollen, dann knnen Sie dazu (anstatt init 3) folgendes Kommando ver-
wenden:
[root@fedora16 /]# systemctl isolate runlevel3.target
Auch das Starten und das Beenden von Diensten knnen mit diesem Werkzeug
durchgefhrt werden. So starten Sie den SSH-Server:
[root@fedora16 /]# systemctl start sshd.service
Zur Beeinflussung von Diensten gibt es folgende wichtige Optionen:
start startet einen Dienst.
stop beendet einen Dienst.
restart startet einen Dienst neu.
status berprft, ob ein Dienst luft.
enable sorgt dafr, dass ein Dienst beim Systemstart automatisch geladen
wird, indem die ntigen Symlinks erstellt werden.
disable entfernt die Symlinks, die fr den auomatischen Start eines Dienstes
beim Systemstart verwendet werden.
Ein weiteres Tool von Systemd ist systemd-cgls. Sie knnen mit diesem Programm
die laufenden Dienste in einer Baumhierarchie anzeigen. Da die Ausgabe des Pro-
gramms eher umfangreich als informativ ist, verzichte ich hier auf ein Beispiel.
57
Nachdem Sie ber die korrekte Konfiguration der Hardware bestens
Bescheid wissen, kann nun mit der Planung der Partitionen und der Kon-
figuration eines Bootloaders fortgefahren werden.
Topic 102: Linux-Installation und
-Paketverwaltung
102.1 Festplattenaufteilung planen
Wichtung: 2
Beschreibung: Kandidaten sollten ein Platten-Partitionierungsschema fr ein
Linux-System entwerfen knnen.
Wichtigste Wissensgebiete:
Dateisysteme und Swap Space einzelnen Partitionen oder Platten zuordnen
die Partitionierung an den Verwendungszweck des Systems anpassen
sicherstellen, dass die /boot-Partition den Anforderungen der Hardware-Archi-
tektur fr den Systemstart gengt
Wissen ber die grundlegenden Features von LVM
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/(Wurzel- bzw. Root-Dateisystem)
/var-Dateisystem
/home-Dateisystem
Swap Space
Mountpoints
Partitionen
Allgemeines
Bevor Linux auf einem Computer installiert wird, sollten Sie sich ein paar Gedan-
ken ber das Layout der Partitionierung und der zu verwendenden Dateisysteme
58
Linux-Installation und -Paketverwaltung 102
machen. Bedenken Sie, dass sich die Partitionie.rung im Nachhinein nicht mehr
ohne Weiteres ndern lsst. In Anbetracht dessen, dass auch grere Festplatten
inzwischen verhltnismig preiswert zu erwerben sind, rate ich hier nicht dazu,
geizig mit dem Plattenplatz zu haushalten, wenn Sie sich nicht spter ber ein
vollgelaufenes Dateisystem rgern wollen.
Planung im Detail
Wenn Sie Ihre Verzeichnisstruktur in mehrere Partitionen unterteilen, verhin-
dern Sie damit, dass durch die berfllung eines einzelnen Verzeichnisses die
Stabilitt des ganzen Systems beeintrchtigt wird. Es ist denkbar, dass ein lang-
fristig unbeobachtetes System durch umfangreiche Protokollierungen das Ver-
zeichnis /var stark anwachsen lsst. Wenn sich /var dann auf einer separaten Par-
tition befindet, werden andere Verzeichnisse nicht negativ beeinflusst.
Ein weiteres, wichtiges Kriterium ist die Datensicherung. Das Programm dump
sichert z.B. immer ganze Partitionen. Deshalb ist es angebracht, Daten, die hufig
gesichert werden (z.B. /home), von den Daten zu trennen, die selten gesichert
werden mssen (z.B. /usr oder /var).
Bei der Planung der Reihenfolge der Partitionen sollte als Erstes eine Partition fr
/boot eingeplant werden. Da es bei sehr alten BIOS-Versionen oder auch veralte-
ten Versionen von LILO zu Startproblemen fhrt, wenn der Bootloader oder das
Kernel-Image oberhalb des 1.024. Zylinders der Festplatte liegen, sollte diese Par-
tition relativ klein gewhlt werden. Sie knnen dieses Problem vermeiden,
indem Sie eine ca. 50 MB groe Partition fr /boot als erste Partition auf der Fest-
platte einplanen.
Die Gre einer Swap-Partition festzulegen, ist schwierig. Sie hngt von der Ver-
wendung des Systems und von der Menge des Arbeitsspeichers ab, ber den der
Computer verfgt. Der von einem Computer verwendete Speicher ist der virtu-
elle Speicher. Dieser ist die Summe aus physikalischem Speicher (RAM) und
Swap Space. Im Gegensatz zu anderen Betriebssystemen lagert Linux erst dann
Daten in den Swap Space aus, wenn kein physikalischer Speicher mehr brig ist.
Wenn Sie also garantieren knnen, dass immer gengend RAM-Speicher zur Ver-
fgung steht, brauchen Sie zumindest theoretisch keinen Swap Space. Eine alte
Faustregel besagt, dass immer doppelt so viel Swap Space wie physikalischer
Speicher vorhanden sein sollte. Vielleicht sollten Sie sich darber frher oder
spter Ihre eigene Meinung bilden.
Wie viel Platz der Root-Verzeichnisbaum / bentigt, hngt davon ab, welche
anderen Partitionen Sie noch erstellen mchten. Wenn Sie keine weiteren Partiti-
59
Festplattenaufteilung planen 102.1
onen erstellen, muss im Root-Verzeichnisbaum natrlich der gesamte Platz, der
bentigt wird, auch zur Verfgung stehen. Sie sollten in so einem Fall fr eine
moderne Distribution mindestens 20 GB einkalkulieren. Sollten Sie allerdings
inhaltsreiche Verzeichnisse separat partitionieren, knnen 800 MB fr das Haupt-
verzeichnis ausreichend sein.
Das Verzeichnis /usr belegt auf meinen Referenzsystemen bis zu 5 GB. Nach den
Empfehlungen vieler Quellen im Internet ist schon deutlich weniger ausreichend.
In diesem Fall htte dies schon zu Engpssen gefhrt. Nehmen Sie lieber 10 GB.
Fr das Verzeichnis /var sollten Sie ca. 2 GB einkalkulieren. Es gibt Unterschiede
von Distribution zu Distribution, was genau sich berhaupt in diesem Verzeich-
nis befindet, aber 2 GB sind normalerweise absolut ausreichend.
Temporren Dateien in /tmp muss man nicht so viel Platz einrumen. Mit 400 MB
unter /tmp sollten Sie problemlos auskommen.
Das Verzeichnis /home ist vom Platzbedarf nicht vorhersehbar. Sie mssen selbst
kalkulieren, wie viel Platz Ihre Benutzer im Dateisystem bentigen werden. Des-
halb sollten Sie hier auch Quotas einsetzen.
Logical Volume Manager
LVM ist ein Akronym fr Logical Volume Manager. Der Sinn von LVM ist die
Abstraktion physikalischer Datentrger gegenber dem Dateisystem. Im Gegen-
satz zu RAID-Systemen bieten logische Volumen keine Redundanz. Trotzdem gibt
es eine Parallele, nmlich die Abstraktion. Bei der Konfiguration von RAID wer-
den mehrere Datentrger zu einem Array zusammengefasst. Anschlieend wird
das RAID-Array aber am Stck formatiert. Dem Dateisystem wurde also ver-
schwiegen, dass es sich um mehrere Datentrger handelte. Bei LVM ist das hn-
lich, wenn auch der Verwendungszweck ein anderer ist. Aus der Sicht des Datei-
systems wird beim Einsatz von LVM auf logische Volumen zugegriffen. Der
Vorteil dieser Technologie liegt in der flexiblen Verwendung von Speicherres-
sourcen. Ein logisches Volumen kann nachtrglich vergrert oder auch verklei-
nert werden. Sollte einem Server der Speicherplatz in einem logischen Volumen
ausgehen, dann knnen Sie einfach weitere Festplatten hinzufgen und fr das
bestehende Volumen verfgbar machen. Umgekehrt knnen Sie einem berdi-
Prfungstipp
Fr die Prfung sollten Sie sich auch berlegen, welche dieser Dateisysteme oft gesichert
werden mssen (etwa /home) und welche vielleicht gar nicht (/proc, /dev, /tmp).
60
Linux-Installation und -Paketverwaltung 102
mensionierten Server wieder Festplatten entnehmen (was man in der Praxis aller-
dings kaum machen wird).
Wenn Sie die Vorteile von RAID und LVM miteinander kombinieren mchten,
dann knnen Sie LVM auf einem bestehenden RAID-Array einrichten.
LVM-Komponenten und Zusammenhnge
LVM besteht aus drei Komponenten:
Physikalische Volumen (pv) sind vergleichbar mit echten Partitionen auf einer
Festplatte. Tatschlich werden diese Volumen auch mittels fdisk vorbereitet.
Der Dateisystemtyp ist 8E.
Volumen-Gruppen (vg) sind ein Zusammenschluss aus mehreren physikali-
schen Volumen. Sie knnen diese Gruppen nachtrglich mit weiteren physi-
kalischen Volumen erweitern.
Logische Volumen (lv) werden innerhalb der Volumen-Gruppen erstellt. Aus
der Sicht des Dateisystems handelt es sich hierbei um Partitionen. Sie werden
letztendlich in den Dateisystembaum gemountet und verwendet.
Wenn Sie den Zusammenhang dieser drei Bauelemente von LVM verstanden
haben, wird es Ihnen nicht weiter schwer fallen, die zugehrigen Kommandos zu
verwenden. Sie beginnen jeweils mit den in Klammern stehenden beiden Zei-
chen der Begriffserklrung. Sie knnen sich ber die Befehle einen schnellen
berblick verschaffen:
root@arch-deb-book:/# ls -l /sbin/pv* /sbin/lv* /sbin/vg*
Sie werden feststellen, dass es sich bei fast allen Kommandos um Softlinks han-
delt, die auf /sbin/lvm zeigen und dann in Abhngigkeit vom verwendeten Befehl
(die Variable $0 wird ausgewertet) ihre Arbeit verrichten. Sollte der ls-Befehl bei
Ihnen kein brauchbares Ergebnis liefern (ca. 40 Zeilen), dann ist das Paket lvm2
auf Ihrem System nicht installiert.
Damit Sie neue Festplatten fr LVM verfgbar machen knnen, mssen Sie
zunchst mittels fdisk (oder auch cfdisk) geeignete Partitionen vom Typ Linux
LVM erstellen. Der Code fr diesen Partitionstyp ist 8E.
Hinweis
Die genaue Verwendung der Kommandos und Konfigurationsdateien in Zusammen-
hang mit LVM sind erst Thema in der Prfung LPIC-117-201. Sie brauchen sich darum
also jetzt noch nicht zu kmmern.
61
Einen Bootmanager installieren 102.2
102.2 Einen Bootmanager installieren
Wichtung: 2
Beschreibung: Kandidaten sollten einen Bootmanager auswhlen, installieren
und konfigurieren knnen.
Wichtigste Wissensgebiete:
alternative und Notfall-Startmglichkeiten vorsehen
einen Bootloader wie GRUB Legacy installieren und konfigurieren
grundlegende Konfigurationsnderungen an GRUB 2 durchfhren
mit dem Bootloader interagieren
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/boot/grub/menu.lst, grub.cfg und andere Varianten
grub-install
MBR
Superblock
Allgemeines
Damit ein System starten kann, bentigt es ein Programm, das die fr den Boot-
vorgang ntigen Schritte ausfhrt. Ein solches Programm wird als Boot-Strap-Loa-
der bezeichnet. Nachdem das BIOS das System initialisiert und getestet hat, sucht
es auf startfhigen Laufwerken nach einem solchen Startprogramm. Sollte es sich
dabei um eine Festplatte handeln, wird zunchst der Sektor 0 der Festplatte
eingelesen. Dieser enthlt dann entweder den Boot-Strap-Loader selbst oder
innerhalb der Partitionstabelle einen Verweis auf die aktive Partition, die dann
stattdessen diesen Bootloader enthlt.
Fr Linux kommt als Bootloader heutzutage eigentlich nur noch GRUB in Frage.
Der ursprnglich viel verwendete LILO ist kaum noch anzutreffen und nun auch
von der Liste der LPIC-1 Prfungsthemen endgltig verschwunden. Dafr ms-
sen Sie sich jetzt mit zwei unterschiedlichen Versionen von GRUB auskennen:
GRUB Legacy und GRUB 2.
Beide haben die Aufgabe, den Kernel aufzufinden und zu starten. Danach geben
sie die Kontrolle an den Kernel ab und sind bis zum nchsten Systemstart unttig.
Sie werden in diesem Kapitel die Unterschiede zwischen diesen beiden Boot-
Strap-Loadern kennen lernen und knnen dann selbst entscheiden, welchem Sie
den Vorzug geben.
62
Linux-Installation und -Paketverwaltung 102
GRUB-Legacy
GRUB ist ein zweistufiger Bootloader. Genau genommen sind es inzwischen drei
Stufen, weil aus Grnden der Kompatibilitt zu verschiedenen Dateisystemen
irgendwann ein Stage 1,5 hinzuerfunden wurde.
GRUB-Stages
Das Programm fr den ersten Stage befindet sich im MBR der Festplatte, von
der das System starten soll. Es gibt aber normalerweise auch noch eine Kopie in
/boot/grub/stage1. Hierbei handelt es sich um eine Binrdatei, weshalb ein nor-
maler Pager eine Fehlermeldung ausgeben wird, wenn Sie versuchen, den Inhalt
der Datei zu betrachten. Sie knnen die Datei im Hexadezimalformat anzeigen,
indem Sie folgendes Kommando verwenden:
[root@fedora10 grub]# od -h stage1
0000000 48eb 0090 0000 0000 0000 0000 0000 0000
0000020 0000 0000 0000 0000 0000 0000 0000 0000
*
0000060 0000 0000 0000 0000 0000 0000 0000 0203
0000100 00ff 8000 0001 0000 0800 ebfa f607 80c2
0000120 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0
0000140 2000 a0fb 7c40 ff3c 0274 c288 be52 7d7f
0000160 34e8 f601 80c2 5474 41b4 aabb cd55 5a13
0000200 7252 8149 55fb 75aa a043 7c41 c084 0575
...
Fr den Stage 1,5 wird dann ein Programm ausgefhrt, das mit dem verwendeten
Dateisystem bereinstimmt, z.B. reiserfs_stage1_5. Diese Datei befindet sich
ebenfalls im Pfad /boot/grub.
Die letzte Stufe des Bootloaders (Stage 2) befindet sich wiederum in der Datei
/boot/grub/stage2. Dieses Programm stellt das Bootmen fr den Benutzer bereit
und ist auch fr das Starten des Kernels zustndig.
GRUB-Legacy-Prompt
GRUB verfgt ber einen Prompt, den Sie verwenden knnen, um mit dem Boot-
loader zu interagieren. Das ist etwa dann ntig, wenn aufgrund einer Fehlkonfi-
guration das System nicht startet. Sie knnen dann mit GRUB das System manuell
booten. Dazu bentigt GRUB Informationen ber die Position des Hauptverzeich-
nisses, den Kernel und, falls vorhanden, die initiale RAM-Disk. Die GRUB-Einga-
beaufforderung sieht folgendermaen aus:
grub>
63
Einen Bootmanager installieren 102.2
Wenn Sie ein System manuell starten mssen, knnen Sie ein Kommando wie
dieses verwenden:
grub> root (hd0,0)
grub> kernel /boot/vmlinuz-2.6.23.1-10.fc7 root=/dev/sda2
grub> initrd /boot/initrd-2.6.23.1-10.fc7.img
grub> boot
Es wurde hier davon ausgegangen, dass sich das Verzeichnis /boot auf einer SCSI-
Festplatte, nmlich /dev/sda1, befindet, whrend sich das Hauptverzeichnis /
auf /dev/sda2 befindet.
GRUB-Legacy-Konfigurationsdateien
GRUB unterscheidet nicht zwischen SCSI-Festplatten und IDE-Gerten. Die erste
Partition auf der ersten Festplatte, die ihm durch ein BIOS bermittelt wird,
bezeichnet GRUB als (hd0,0). Dabei spielt die Art des verwendeten Festplatten-
subsystems keine Rolle. Damit fr den weiteren Startverlauf eine Zuordnung
mglich ist, bentigt er die Konfigurationsdatei /boot/grub/device.map. In dieser
Datei gibt es lediglich eine Zuordnung von der GRUB-Notation zu den norma-
len Linux-Gerten:
[root@fedora10 grub]# cat device.map
(hd0) /dev/sda
In der Datei menu.lst (normalerweise ein Softlink auf grub.conf) finden Sie im
Normalfall Eintrge wie den folgenden fr jedes zu startende Betriebssystem:
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.1-10.fc7)
root (hd0,0)
kernel /vmlinuz-2.6.23.1-10.fc7 ro root=/dev/VolGroup00/
LogVol00 rhgb quiet
initrd /initrd-2.6.23.1-10.fc7.img
GRUB 2
GRUB 2 ist eigentlich ein vllig neuer Bootloader und hat mit seinem Vorlufer
nicht mehr besonders viel gemeinsam. Im Gegensatz zu GRUB-Legacy positio-
niert GRUB 2 einige Konfigurationsdateien unterhalb von /etc. Die Hauptkonfigu-
rationsdatei befindet sich immer noch im Verzeichnis /boot/grub (auch /boot/
64
Linux-Installation und -Paketverwaltung 102
grub2). Es ist die Datei grub.cfg, die durch das Programm grub-mkconfig (auch
grub2-mkconfig) generiert wird. Als Vorlage kommen hier die Datei /etc/default/
grub und weitere Dateien unterhalb von /etc/grub.d zum Einsatz.
Sie sollten also zur Konfiguration von GRUB 2 lediglich die genannten Dateien im
/etc-Verzeichnis editieren.
Wenn Sie einem System manuell einen neuen Kernel hinzugefgt haben, dann
mssen Sie das Skript update-grub2 ausfhren. Diese Vorgehensweise entspricht
also der von GRUB-Legacy.
102.3 Shared Librarys verwalten
Wichtung: 1
Beschreibung: Kandidaten sollten in der Lage sein, die Shared Librarys zu bestim-
men, von denen ausfhrbare Programme abhngen, und diese bei Bedarf zu
installieren.
Wichtigste Wissensgebiete:
Shared Librarys identifizieren
die typischen Orte fr Systembibliotheken identifizieren
Shared Librarys laden
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
ldd
ldconfig
/etc/ld.so.conf
LD_LIBRARY_PATH
Allgemeines
Um Systemressourcen effizient zu verwenden, werden Programme modular auf-
gebaut. Die eigentliche Aufgabe, die das Programm ausfhrt, wird im Code des
jeweiligen Programms selbst hinterlegt. Funktionen, die andere Programme auch
verwenden, werden dynamisch in das laufende Programm eingebunden. Solche
Funktionen sind in sogenannten Librarys enthalten. Es wre z.B. nicht sinnvoll,
wenn jedes Programm seine eigene Druckroutine enthalten wrde. Stattdessen
bindet ein Programm, wenn es drucken muss, dynamisch eine Bibliothek ein, die
65
Shared Librarys verwalten 102.3
dann diese Aufgabe ausfhrt. Durch diese Vorgehensweise werden Speicherres-
sourcen eingespart. Unter Windows finden Sie diese Bibliotheken als Dateien mit
der Erweiterung .dll (Dynamic Link Library). Unter Linux heien die Bibliothe-
ken Shared Librarys und haben die Erweiterung .so (Shared Object).
Programme, die mit solchen Shared Librarys arbeiten, bezeichnet man als dyna-
mically linked, whrend Programme, die den Code der Shared Librarys in sich
selbst tragen, als statically linked bezeichnet werden.
Verwaltung von Shared Librarys
Um zu identifizieren, von welchen Librarys ein Programm abhngt, knnen Sie
das Tool ldd verwenden. Die Ausgabe des Programms zeigt gleichzeitig die Posi-
tion der bentigten Librarys im Dateisystem an:
archangel:/ # ldd /usr/bin/grep
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/tls/libc.so.6 (0x40030000)
/lib/ld-linux.so.2 (0x40000000)
Wenn Sie neue Bibliotheken auf einem System installieren, bentigen Sie das
Programm ldconfig, damit der dynamische Linker diese Bibliotheken auch ver-
wendet. Zu diesem Zweck liest ldconfig die Datei /etc/ld.so.conf ein. Hier sind
alle Verzeichnisse aufgelistet, in denen sich dynamische Librarys befinden:
archangel:/ # less /etc/ld.so.conf
/usr/X11R6/lib
/usr/i486-linux/lib
/usr/i486-linux-libc5/lib=libc5
/usr/i486-linux-libc6/lib=libc6
/usr/i486-linuxaout/lib
/usr/i386-suse-linux/lib
/usr/local/lib
... weitere Zeilen wurden abgeschnitten ...
Diese Verzeichnisse werden von ldconfig konsultiert, um die Datei /etc/
ld.so.cache aufzubauen. Danach knnen die neuen Librarys vom dynamischen
Linker verwendet und bei Bedarf eingebunden werden.
Um den aktuellen Inhalt der Datei /etc/ld.so.cache anzuzeigen, verwenden Sie fol-
gendes Kommando:
archangel:/ # ldconfig -p | less
1128 libs found in cache `/etc/ld.so.cache'
libzvbi.so.0 (libc6) => /usr/lib/libzvbi.so.0
66
Linux-Installation und -Paketverwaltung 102
libzio.so.0 (libc6) => /usr/lib/libzio.so.0
libzio.so (libc6) => /usr/lib/libzio.so
libz.so.1 (libc6) => /lib/libz.so.1
libz.so.1 (libc6) => /usr/lib/libz.so.1
libz.so (libc6) => /usr/lib/libz.so
liby2.so.2 (libc6) => /usr/lib/liby2.so.2
libyui.so.2 (libc6) => /usr/lib/libyui.so.2
... weitere Zeilen wurden abgeschnitten ...
Manche Programme funktionieren nur dann, wenn eine Bibliothek mit einer
bestimmten Versionsnummer auf Ihrem System installiert ist. Die Versionsnum-
mer einer einzelnen Bibliothek ermitteln Sie auf folgendem Weg:
archangel:/ # ldconfig -p | grep libusb
libusb-0.1.so.4 (libc6) => /usr/lib/libusb-0.1.so.4
102.4 Debian-Paketverwaltung verwenden
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, Pakete mit den Debian-Paket-
werkzeugen zu verwalten.
Wichtigste Wissensgebiete:
Debian-Binrpakete installieren, aktualisieren und entfernen
Pakete finden, die bestimmte Dateien oder Bibliotheken enthalten und instal-
liert sind oder nicht
Paketinformationen bestimmen, wie Version, Inhalt, Abhngigkeiten
Integritt des Paketes und Installationsstatus (ob das Paket installiert ist oder
nicht)
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/apt/sources.list
dpkg
dpkg-reconfigure
apt-get
apt-cache
aptitude
67
Debian-Paketverwaltung verwenden 102.4
Allgemeines
In den nchsten Abschnitten sollen Sie erlernen, wie die Paketverwaltung bei
Distributionen funktioniert, die auf Debian basieren (Debian, Ubuntu, Mint,
Knoppix, Damn Small usw.). Das Selbstkompilieren von Programmen, die Sie als
Tar-Balls aus dem Internet heruntergeladen haben, hat nmlich einen Schnheits-
fehler: Sie knnen diese Programme nicht mehr sauber deinstallieren. Dieser
Nachteil wird durch paketbasierte Installationen beseitigt. Der Aufbau der Datei-
namen bei Debian-Paketen soll an folgendem Beispiel verdeutlicht werden:
fortune-mod_1.99.1-3_i386.deb
Der Name des Paketes ist fortune-mod.
Die Versionsnummer lautet 1.99.1.
Die Revisionsnummer (Release) ist 3.
Die untersttzte Architektur ist i386.
Diese vier Komponenten werden immer durch einen Unterstrich voneinander
getrennt. Die meisten Programmierer halten sich an diese Namenskonvention,
was das Identifizieren von Paketen im Internet erheblich erleichtert.
Konfigurationsdateien und Verzeichnisse
/etc/dpkg/dpkg.cfg
Das ist die Konfigurationsdatei fr dpkg. In dieser Datei werden die voreingestell-
ten Optionen fr dpkg festgelegt. Sie knnen sich dabei Arbeitsaufwand ersparen,
wenn Sie immer dieselben Optionen mit dpkg verwenden. Die Datei wird zeilen-
separiert ausgewertet. Es steht also in jeder Zeile nur eine Option. Bei den meis-
ten aktuellen Distributionen enthlt die Datei im Auslieferungszustand nur eine
einzige Zeile, mit der die Log-Datei definiert wird:
log /var/log/dpkg.log
/var/lib/dpkg/info
In diesem Verzeichnis befinden sich zu jedem installierten Paket mehrere Skripte
und Dateien, die fr eine korrekte Installation und auch spter wieder fr die
Deinstallation bentigt werden. Das Beispiel zeigt die entsprechenden Dateien
fr den Editor nano:
root@ubuntu-server:/var/lib/dpkg/info# ls -lha | grep nano
-rw-r--r-- 1 root root 12 2007-02-07 12:32 nano.conffiles
-rw-r--r-- 1 root root 1,5K 2007-10-15 23:19 nano.list
-rw-r--r-- 1 root root 2,3K 2007-02-07 12:32 nano.md5sums
-rwxr-xr-x 1 root root 579 2007-02-07 12:32 nano.postinst
68
Linux-Installation und -Paketverwaltung 102
-rwxr-xr-x 1 root root 160 2007-02-07 12:32 nano.postrm
-rwxr-xr-x 1 root root 379 2007-02-07 12:32 nano.preinst
-rwxr-xr-x 1 root root 288 2007-02-07 12:32 nano.prerm
Wenn Sie nach einer verunglckten Installation manuell das System aufrumen
mchten, finden Sie immer in der entsprechenden .list-Datei eine Aufstellung
aller zum Programm gehrenden Dateien und Verzeichnisse. Im Falle von nano
handelt es sich dabei brigens um 64 ber das System verteilte Dateien.
/var/lib/dpkg/status
In der Datei status sind Informationen ber bereits installierte Pakete hinterlegt.
Es wird auch angegeben, ob die Installation vollstndig ausgefhrt oder ob ein
Programm bereits wieder deinstalliert wurde. Das Beispiel zeigt Informationen
ber einen korrekt installierten nano-Editor:
Package: nano
Status: install ok installed
Priority: important
Section: editors
Installed-Size: 1624
... weitere Zeilen wurden abgeschnitten ...
Der nchste Eintrag zeigt ein Paket, das sauber deinstalliert wurde:
Package: courier-imap
Status: deinstall ok config-files
Priority: extra
Section: mail
Installed-Size: 1540
... weitere Zeilen wurden abgeschnitten ...
/var/lib/dpkg/available
Diese Datei enthlt eine Liste der verfgbaren Pakete. Sie beinhaltet Informatio-
nen ber die Gre des Paketes, die Versionsnummer, Abhngigkeiten, den
Autor, die Prozessorarchitektur und vieles andere mehr. Das Beispiel zeigt einen
Eintrag fr den Editor nano:
Package: nano
Priority: important
Section: editors
Installed-Size: 1624
Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
Architecture: i386
Version: 2.0.2-1
69
Debian-Paketverwaltung verwenden 102.4
Replaces: pico
Provides: editor
Depends: libc6 (>= 2.5-0ubuntu1), libncursesw5 (>= 5.4-5)
Suggests: spell
Conflicts: nano-tiny (<= 1.0.0-1), pico
Size: 286950
Description: free Pico clone with some new features
... weitere Zeilen wurden abgeschnitten ...
/etc/apt/apt.conf
Hierbei handelt es sich um die Konfigurationsdatei fr die apt-tools. Normaler-
weise ist hier nur ein Eintrag fr den verwendeten Proxy hinterlegt, damit apt-
get ohne Probleme Pakete aus dem Internet herunterladen kann. Beispiel:
debian40:/# cat /etc/apt/apt.conf
Acquire::http::Proxy "http://192.168.0.1:3128";
/etc/apt/sources.list
Diese Datei enthlt die Quellen fr apt-get. Das ist meistens eine Liste mit FTP-
Servern (bei modernen Distributionen auch HTTP-Servern), von denen Software
mit apt-get install online installiert werden kann. Zustzlich sind natrlich
auch lokale Quellen in dieser Datei enthalten. Beispiel:
root@archangel:~# head /etc/apt/sources.list
#deb cdrom:[Ubuntu 8.04 _Hardy Heron_ Release i386 (20080423)]/
hardy main restricted
# See http://help.ubuntu.com/community/
UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/
hardy main restricted universe multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates main restric
DPKG-Programme
dpkg
Wenn Sie ein Programm auf einem Debian-basierten System installieren wollen,
verwenden Sie das Kommando dpkg. Aus Bequemlichkeit greifen aber heutzutage
selbst die grten Puristen auf Frontends wie dselect oder apt-get zurck.
70
Linux-Installation und -Paketverwaltung 102
Manche Optionen von dpkg knnen sowohl mit einem einzelnen Buchstaben als
auch mit einem ganzen Wort verwendet werden. Die beiden folgenden Komman-
dos installieren jeweils ein Paket:
debian40:/pakete# dpkg -i fortune_1.0-861_i386.deb
debian40:/pakete# dpkg --install fortune_1.0-861_i386.deb
Entsprechend ist die Ausgabe, die von diesen beiden Kommandos erzeugt wird,
ebenfalls identisch:
Whle vormals abgewhltes Paket fortune.
(Lese Datenbank ... 75945 Dateien und Verzeichnisse sind derzeit
installiert.)
Entpacke fortune (aus fortune_1.0-861_i386.deb) ...
Richte fortune ein (1.0-861) ...
Die Deinstallation eines Programms, das mit dpkg installiert wurde, erfolgt mit
den Schaltern -r oder --remove. Hierbei werden Konfigurationsdateien nicht
gelscht. Wenn Konfigurationsdateien ebenfalls aus dem System entfernt werden
sollen, mssen Sie die Optionen -P bzw. --purge verwenden. Es folgt eine Auf-
listung der wichtigsten Optionen fr die Prfung:
-i bzw. --install installiert das angegebene Paket.
-r bzw. --remove entfernt das angegebene Paket. Konfigurationsdateien blei-
ben aber erhalten. Achtung! Die Option -e ist nicht, wie bei RPM, die Erase-
Funktion!
-P bzw. --purge entfernt das angegebene Programm inklusive der Konfigura-
tionsdateien.
-s bzw. --status gibt umfangreiche Informationen ber das installierte Paket
aus.
-C bzw. --audit zeigt Pakete an, die nur teilweise auf dem System installiert
sind.
-L bzw. --listfiles zeigt die Dateien an, die ein Paket installiert hat.
Prfungstipp
Fr die Prfung mssen Sie mit dpkg absolut vertraut sein. Es werden auch Fragen zu
selten verwendeten Optionen von dpkg gestellt.
Prfungstipp
Prgen Sie sich fr die Prfung die hier aufgefhrten Optionen in beiden Schreibweisen
ein. Achten Sie auch auf Gro- und Kleinschreibung.
71
Debian-Paketverwaltung verwenden 102.4
dselect
Bei dselect handelt es sich um ein Frontend fr dpkg. Mit dselect knnen Sie
folgende Operationen durchfhren:
eine Zugriffsmethode auswhlen
die Liste der verfgbaren Pakete erneuern, falls mglich
eine Auswahl der fr Ihr System gewnschten Pakete treffen
gewnschte Pakete installieren und aktualisieren
alle unkonfigurierten Pakete konfigurieren
nicht gewnschte Software lschen
dpkg-reconfigure
Mit dpkg-reconfigure knnen Sie ein bereits installiertes Paket neu konfigurie-
ren. Mit dpkg-reconfigure -a knnen Sie sogar alle installierten Pakete neu kon-
figurieren. Dieser Vorgang kann aber in Abhngigkeit von der Menge der instal-
lierten Pakete sehr viel Zeit in Anspruch nehmen.
apt-get
Das Programm apt-get ist ein sehr beliebtes Frontend fr dpkg. Auch wenn der
Name und der Hauptverwendungszweck das implizieren: Man kann mit apt-get
nicht nur Programme bekommen bzw. holen, sondern auch diagnostizieren,
neu konfigurieren und deinstallieren. Die Installation eines Paketes mit apt-get
ist sehr bequem und erfolgt einfach so:
debian40:/# apt-get install fortune
Paketlisten werden gelesen... Fertig
Abhngigkeitsbaum wird aufgebaut... Fertig
Achtung, whle fortune-mod an Stelle von fortune
Die folgenden zustzlichen Pakete werden installiert:
fortune-mod fortunes-min librecode0
Vorgeschlagene Pakete:
xcontrib
Die folgenden NEUEN Pakete werden installiert:
fortune-mod fortunes-min librecode0
0 aktualisiert, 3 neu installiert, 0 zu entfernen und 19 nicht
aktualisiert.
Es mssen noch 0B von 816kB Archiven geholt werden.
Nach dem Auspacken werden 1655kB Plattenplatz zustzlich benutzt.
Mchten Sie fortfahren [J/n]?
Wie man sieht, ist apt-get intuitiv bedienbar. Das Programm hat selbst erkannt,
dass das Paket, das mit fortune korrespondiert, fortune-mod heit, und installiert
72
Linux-Installation und -Paketverwaltung 102
dieses automatisch. Abhngigkeiten von anderen Paketen (fortunes-min
librecode0) werden ebenfalls vollautomatisch aufgelst. Es wird angegeben, wie
viel Platz das neue Programm auf der Festplatte belegen wird. Die Installation
kann man in dieser Phase noch unterbinden.
Die Deinstallation eines Paketes funktioniert genauso, nur dass Sie statt install
die Option remove verwenden:
debian40:/# apt-get remove fortune
Paketlisten werden gelesen... Fertig
Abhngigkeitsbaum wird aufgebaut... Fertig
Achtung, whle fortune-mod an Stelle von fortune
Die folgenden Pakete werden ENTFERNT:
fortune-mod fortunes-min
0 aktualisiert, 0 neu installiert, 2 zu entfernen und 19 nicht
aktualisiert.
Es mssen 0B Archive geholt werden.
Nach dem Auspacken werden 352kB Plattenplatz freigegeben worden sein.
Um die Liste der verfgbaren Pakete (Paketindexdatei) zu aktualisieren, knnen
Sie die Option update verwenden:
root@archangel:~# apt-get update
OK http://security.ubuntu.com hardy-security Release.gpg
OK http://de.archive.ubuntu.com hardy Release.gpg
OK http://de.archive.ubuntu.com hardy/main Translation-de
OK http://de.archive.ubuntu.com hardy/restricted Translation-de
OK http://de.archive.ubuntu.com hardy/universe Packages
OK http://de.archive.ubuntu.com hardy/multiverse Packages
OK http://de.archive.ubuntu.com hardy/main Sources
OK http://de.archive.ubuntu.com hardy/restricted Sources
OK http://de.archive.ubuntu.com hardy/universe Sources
OK http://de.archive.ubuntu.com hardy/multiverse Sources
OK http://de.archive.ubuntu.com hardy-updates/main Packages
Paketlisten werden gelesen... Fertig
Die Ausgabe des Befehls wurde aus Platzgrnden gekrzt. Die Auflistung ist nor-
malerweise etwa dreimal so lang. Die Information darber, wo apt-get diese
Indexlisten beziehen kann, stehen in der Konfigurationsdatei /etc/apt/sources.list.
Es kann vorkommen, dass Sie diese Datei bearbeiten mssen, wenn Sie ein Paket
mittels apt-get installieren mchten, dieses aber nicht in den standardmig vor-
handenen Repositorys enthalten ist.
Eine Aktualisierung aller installierten Pakete kann apt-get mit der Option upgrade
durchfhren. Zwar bieten moderne Linux-Distributionen auch automatische Erin-
nerungen, die auf die Notwendigkeit von Updates hinweisen, diese Mechanismen
73
Debian-Paketverwaltung verwenden 102.4
setzen allerdings voraus, dass man sich lokal an der Maschine befindet. Ein Update
aus der Ferne ber ein Terminal wird deshalb so durchgefhrt:
root@archangel:~# apt-get upgrade
Paketlisten werden gelesen... Fertig
Abhngigkeitsbaum wird aufgebaut
Reading state information... Fertig
Die folgenden Pakete werden aktualisiert:
ghostscript ghostscript-x libgs8
3 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht
aktualisiert.
Es mssen 3017kB Archive geholt werden.
After this operation, 0B of additional disk space will be used.
Mchten Sie fortfahren [J/n]? j
Hole:1 http://security.ubuntu.com hardy-security/
main libgs8 8.61.dfsg.1-1ubuntu3.2 [2217kB]
Hole:2 http://security.ubuntu.com hardy-security/
main ghostscript 8.61.dfsg.1-1ubuntu3.2 [740kB]
85 % [2 ghostscript 366070/740kB 49 %]
Das Programm zeigt den Fortschritt whrend der Installation jedes Paketes an,
wie Sie in der letzten Zeile sehen knnen.
aptitude
Da in der Prfung normalerweise nicht nach grafischen Frontends gefragt wird,
soll die Arbeitsweise der Synaptics-Paketverwaltung unterschlagen werden. Inte-
ressanter ist eher die Benutzerschnittstelle aptitude. Mit diesem Programm kn-
nen Sie zum Beispiel bequem nach Paketen suchen, auch wenn Sie deren
genauen Namen nicht kennen. Wenn Sie etwa einen DHCP-Server installieren
mssen, aber nicht wissen, welches Paket einen solchen Server enthlt, versu-
chen Sie Folgendes:
root@archangel:~# aptitude search dhcp
p autodns-dhcp Automatic DNS updates for DHCP
p dhcp-client -
p dhcp-helper A DHCP relay agent
i dhcp3-client DHCP client
p dhcp3-relay DHCP relay daemon
p dhcp3-server DHCP server for automatic IP address assignment
p dhcpdump Parse DHCP packets from tcpdump
p dhcping DHCP Daemon Ping Program
p ebox-dhcp eBox DHCP server module
p gdhcpd GTK+ configuration tool for dhcpd3-server
p udhcpc very small DHCP client
p udhcpd very small DHCP server
74
Linux-Installation und -Paketverwaltung 102
In der sechsten Zeile ist dann auch tatschlich der vom ISC empfohlene DHCP-
Server zu finden. Sie knnen diesen dann mit apt-get installieren.
Einige Optionen, die aptitude versteht, gibt es auch bei apt-get. Die wichtigsten
sind update, upgrade, clean und autoclean. Erfahrungsgem arbeitet apt-get
aber bei update und upgrade zuverlssiger. Es gibt sogar Flle, in denen aptitude
Sie auf diesen Umstand hinweist:
W: Duplicate sources.list entry http://de.archive.ubuntu.com hardy/
multiverse Packages (/var/lib/apt/lists/de.archive.ubuntu.com_
ubuntu_dists_hardy_multiverse_binary-i386_Packages)
W: Duplicate sources.list entry http://de.archive.ubuntu.com hardy/
multiverse Translation-de (/var/lib/apt/lists/de.archive.ubuntu.com_
ubuntu_dists_hardy_multiverse_i18n_Translation-de)
W: Probieren Sie "apt-get update", um diese Probleme zu korrigieren.
brigens: Sie knnen aptitude auch interaktiv verwenden. Fhren Sie das Pro-
gramm einfach mal ohne Optionen oder Parameter aus!
apt-cache
Mit apt-cache knnen Sie lediglich den Cache des apt-Systems verwalten. Wenn
Sie Programme mit apt-get installieren, werden die Quellen in einem Cache zwi-
schengespeichert. Dieser befindet sich normalerweise im Verzeichnis /var/cache/
apt/archives. Sie knnen mit der Option stats eine bersicht ber den Cache
ausgeben:
root@archangel:~# apt-cache stats
Gesamtzahl an Paketnamen: 32616 (1305k)
davon gewhnliche Pakete: 24910
davon rein virtuelle Pakete: 649
davon einzelne virtuelle Pakete: 1735
davon gemischte virtuelle Pakete: 234
davon fehlend: 5088
Gesamtzahl an unterschiedlichen Versionen: 28361 (1475k)
Total Distinct Descriptions: 32098 (770k)
Gesamtzahl an Abhngigkeiten: 196493 (5502k)
Gesamtzahl an Version/Datei-Beziehungen: 30952 (495k)
Total Desc/File relations: 32098 (514k)
Gesamtzahl an Bereitstellungen: 5783 (116k)
Gesamtzahl an Mustern: 120 (1568)
Gesamtmenge an Abhngigkeits/Versionsspeicher: 1010k
Gesamtmenge an Slack: 76,7k
Gesamtmenge an Speicher: 8970k
75
Debian-Paketverwaltung verwenden 102.4
Zur Bereinigung des Cache knnen Sie wahlweise aptitude oder apt-get einsetzen:
root@archangel:~# aptitude clean
Paketlisten werden gelesen... Fertig
Abhngigkeitsbaum wird aufgebaut
Reading state information... Fertig
Lese erweiterte Statusinformationen
Initialisiere Paketstatus... Fertig
Erzeuge Tag-Datenbank... Fertig
Wenn Sie Informationen ber die Abhngigkeiten eines Programms von anderen
Programmen oder Bibliotheken bentigen, kann apt-cache Ihnen die gewnsch-
ten Informationen aus den Metadaten der Pakete generieren. Das Kommando
erzeugt allerdings eine sehr umfangreiche Ausgabe, weshalb ich hier auf ein Bei-
spiel verzichte.
alien
Wenn Sie ein Programm installieren wollen, das nicht als dpkg-Paket vorliegt, dann
knnen Sie dieses auerirdische Paket mit alien konvertieren. Obwohl alien ber-
wiegend auf Debian-Systemen zum Einsatz kommt, untersttzt es unterschiedliche
Formate sowohl als Eingabe- als auch als Ausgabedateiformat. Das Programm
erkennt das Format einer Eingabedatei automatisch und wandelt diese in das auf der
Kommandozeile angegebene Format um. Folgende Pakettypen werden untersttzt:
rpm (Red Hat)
dpkg (Debian)
tgz (Slackware)
pkg (Solaris)
slp (Stampede)
Wenn Sie ein Paket mit alien bersetzen wollen, geben Sie die Quelldatei und
das Ausgabeformat an. Sie knnen das Programm aber auch sofort nach der Kon-
vertierung installieren, wenn Sie die Option -i bzw. --install angeben. Das
generierte Quellpaket wird dann nach der Installation automatisch gelscht.
debian40:/aliens# alien fortune-1.0-860.i586.rpm --to-deb
fortune_1.0-861_i386.deb generated
In diesem Beispiel ist ein bestehendes RPM-Paket in ein DPKG-Paket bersetzt
worden. Die ursprngliche Datei bleibt erhalten. Beachten Sie, dass die Minor-
Versionsnummer gegenber dem Quellpaket um 1 erhht wurde. Wenn Sie die-
ses Standardverhalten von alien nicht wnschen, knnen Sie die Option -k oder
--keep-version verwenden.
76
Linux-Installation und -Paketverwaltung 102
Die bersetzung in andere Paketformate als DPKG geht sinngem genauso von-
statten. Ersetzen Sie dazu in dem Schalter --to-deb das deb einfach durch das
gewnschte Format (z.B. --to-rpm).
102.5 RPM und YUM-Paketverwaltung verwenden
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, Pakete mit den RPM und
YUM-Werkzeugen zu verwalten.
Wichtigste Wissensgebiete:
Pakete mit RPM und YUM installieren, erneut installieren, aktualisieren und
entfernen
Informationen ber RPM-Pakete bestimmen wie Version, Status, Abhngig-
keiten, Integritt und Signaturen
herausfinden, welche Dateien ein Paket zur Verfgung stellt, und herausfin-
den, aus welchem Paket eine bestimmte Datei kommt
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
rpm
rpm2cpio
/etc/yum.conf
/etc/yum.repos.d/
yum
yumdownloader
Allgemeines
Fast alle Distributionen, die nicht auf Debian basieren, verwenden fr das Paket-
management RPM, den Red Hat Package Manager. Er ermglicht ebenfalls die
Installation von Programmen, die bereits fertig kompiliert in einem Binrformat
vorliegen. Leider kann dieses System nicht automatisch Abhngigkeiten auflsen
Prfungstipp
Sie sollten fr die Prfung mit Debian-Paketen umgehen knnen. In den Prfungen wird
der Akzent allerdings eher auf der Benutzung und Konfiguration von Frontends wie
apt-get und aptitude liegen.
77
RPM und YUM-Paketverwaltung verwenden 102.5
und Pakete, die als Grundlagen fr das gewnschte Paket notwendig sind,
beschaffen und installieren. Diese Aufgabe wird fr gewhnlich von Frontends
bernommen. Die meisten modernen Distributionen verwenden hierfr YUM.
Die Dateinamen der Pakete sind hnlich aufgebaut wie die von dpkg. Es kommt
lediglich statt des Unterstrichs ein normaler Bindestrich zum Einsatz. Den Aufbau
zeigt das Beispiel:
bash-3.0-15.i586.rpm
Der Name des Paketes ist bash.
Die Versionsnummer lautet 3.0.
Die Revisionsnummer (Release) ist 15.
Die untersttzte Architektur ist i586.
Konfigurationsdateien
Die Hauptkonfigurationsdatei von RPM ist die Datei rpmrc. Diese Datei kann sich
in verschiedenen Verzeichnissen befinden:
/etc/rpmrc enthlt eine systemweite Konfiguration, die auch dann erhalten
bleibt, wenn RPM selbst aktualisiert wird. Die Datei ist normalerweise nicht
vorhanden und muss bei Bedarf erstellt werden.
/usr/lib/rpm/rpmrc ist eine systemweite Konfiguration. Sie wird berschrie-
ben, wenn RPM aktualisiert wird.
/usr/lib/rpmrc ist ein inzwischen veralteter Speicherort, der vom Verwen-
dungszweck her /usr/lib/rpm/rpmrc entspricht.
Die Datei .rpmrc im Verzeichnis eines Benutzers definiert Einstellungen, die
nur fr einen bestimmten Benutzer gelten sollen.
Im Verzeichnis /usr/lib/rpm befinden sich etliche Skripte, die RPM verwendet,
um das Paketmanagement durchzufhren.
Die Datenbanken mit installierten Komponenten, Abhngigkeiten, Konflikten
und anderen Informationen fr RPM befinden sich in /var/lib/rpm. Diese Dateien
knnen nicht mit einem Editor bearbeitet werden, weshalb sie ebenfalls fr die
Prfung belanglos sind.
Prfungstipp
Es gibt selten einen Grund, diese Dateien zu modifizieren, wenn Sie nicht selbst Pakete
erstellen. Sie mssen fr die Prfung lediglich wissen, dass diese Datei existiert. Wissen
ber den genauen Aufbau der Datei ist nicht erforderlich.
78
Linux-Installation und -Paketverwaltung 102
RPM aktiv verwenden
In Bezug auf RPM ist fr die Prfung nur ein einziges Programm Thema, nmlich
das Kommando rpm selbst. Damit Sie nicht denken, es gebe darber hinaus nichts
anderes, folgt eine (kommentarlose) Auflistung der RPM-Programme auf meinem
Referenzsystem:
rpmbuild, rpme, rpmi, rpmqpack, rpmsign, rpmverify, rpm2cpio, rpmdb,
rpmgraph, rpmlocate, rpmquery, rpmu, rpmlead, rpmsignature, rpmheader,
rpmarchive
Installation, Update und Deinstallation
Wenn Sie Software mit rpm installieren, stehen Ihnen, hnlich wie bei dpkg, Opti-
onen mit einzelnen Buchstaben oder Optionswrter zur Verfgung. So knnen
Sie ein Paket sowohl mit rpm -e als auch mit rpm --erase deinstallieren. Die wich-
tigsten Optionen zur aktiven Arbeit mit rpm sind die folgenden:
-i bzw. --install installiert das angegebene Paket (oder die Pakete).
-U bzw. --upgrade aktualisiert das angegebene Paket (oder die Pakete) bzw.
installiert es einfach, wenn keine Vorgngerversion gefunden wird.
-F bzw. --freshen aktualisiert Pakete nur, wenn diese auf dem System bereits
vorhanden sind.
-v bzw. --verbose aktiviert den Verbose-Mode.
-e bzw. --erase (frher --uninstall) entfernt das angegebene Paket.
-h bzw. --hash sorgt fr eine Fortschrittsanzeige mit 50 Hash-Zeichen (#).
Ein typisches rpm-Kommando zur Installation wre folgendes:
archangel:/ # rpm -Uhv /i586/fortune-1.0-860.i586.rpm
Preparing.. ########################################### [100 %]
1:fortune ########################################### [100 %]
Das Programm war brigens vorher vom System entfernt worden. Trotzdem hat
die Option -U keinen Fehler hervorgerufen, sondern das nicht vorhandene Pro-
gramm aktualisiert.
Zwangsinstallation
Sollte ein Paket die Installation verweigern, knnen Sie es meist trotzdem instal-
lieren, wenn Sie die entsprechenden Optionen kennen. Das knnte z.B. der Fall
Prfungstipp
Merken Sie sich unbedingt, dass bei rpm die Option -r nicht fr remove steht, sondern
fr requires. Es besteht hier Verwechslungsgefahr mit dpkg!
79
RPM und YUM-Paketverwaltung verwenden 102.5
sein, wenn eine oder mehrere Abhngigkeiten nicht erfllt sind oder wenn ein
Konflikt mit einem bestehenden Paket besteht. Sie sollten diese Optionen also
nur dann verwenden, wenn Sie sich ber die Konsequenzen der Installation im
Klaren sind:
--force erzwingt die Installation auch bei bestehenden Konflikten.
--nodeps lsst die Prfung der Abhngigkeiten aus. Das gilt sowohl fr die
Installation als auch fr die Deinstallation von Paketen.
Fr beide Schalter gibt es vllig zu Recht keine Kurzform, damit man sich der
Tragweite des jeweiligen Kommandos bewusst wird.
Abfragen der RPM-Datenbank
Ein sehr wichtiges Thema in der Prfung ist die Abfrage der RPM-Datenbank.
Hier sollten Sie auch Abfragen kennen, die Ihnen vielleicht unwichtig erscheinen.
Grundstzlich beginnt eine Abfrage mit rpm -q. Sie knnen aber auch verschie-
dene Zusatzschalter anwenden, um die Suche zu verfeinern. Man unterscheidet
hier zwischen Package Selection Options und Query Options. Erstere dienen dazu,
Pakete aufzufinden, die bestimmte Eigenschaften haben. Im Gegensatz dazu ver-
wenden Sie Query Options, um Informationen ber ein bestimmtes Paket zu
bekommen.
Eine einfache Abfrage ohne weitere Optionen dient normalerweise lediglich
dazu, festzustellen, ob ein bestimmtes Paket installiert ist und wenn ja, welche
Version dieses Paketes installiert ist:
archangel:/ # rpm -q fortune
fortune-1.0-860
Wre das Paket auf dem System nicht vorhanden, wrde das Ergebnis so ausse-
hen:
archangel:/ # rpm -q fortune
package fortune is not installed
Package Selection Options
Bei dieser Form der Abfrage geht es darum, ein Paket zu finden, auf das
bestimmte Eigenschaften zutreffen. Sie knnen so auch herausfinden, zu wel-
chem Paket eine bestimmte Datei gehrt:
archangel:/ # rpm -qf /usr/X11R6/bin/startx
xorg-x11-6.8.2-30
80
Linux-Installation und -Paketverwaltung 102
Eine beliebte Kombination von Kommandos ist die folgende:
archangel:/ # rpm -qa | grep apache
apache2-worker-2.0.53-9.15
apache2-mod_php5-5.0.3-14.37
apache2-prefork-2.0.53-9.15
apache2-2.0.53-9.15
Das Kommando rpm -qa (query all) liefert eine Liste aller installierten RPM-
Pakete. Mit dem grep wird die Liste anschlieend so gefiltert, dass nur Pakete
angezeigt werden, in deren Dateiname die Zeichenfolge apache vorkommt. Diese
Kombination knnen Sie auch verwenden, wenn Sie sich nicht sicher sind, wie
der genaue Name eines Paketes lautet.
Query Options
Die Query Options dienen dazu, Informationen zu einem bestimmten Paket zu
bekommen. Sie sollten sich die folgenden Optionen einprgen:
-qR bzw. --requires zeigt Abhngigkeiten zu anderen Paketen an.
-ql bzw. --list fhrt die im Paket enthaltenen Dateien auf.
-qc bzw. --configfiles zeigt nur die Konfigurationsdateien eines Paketes an.
-qd bzw. --docfiles zeigt nur die Dokumentationsdateien eines Paketes an.
-qi bzw. --info zeigt umfangreiche Informationen zu einem Paket an.
Bei allen diesen Abfragen muss unterschieden werden, ob diese an ein bereits
installiertes Programm oder direkt an ein Paket gestellt werden. Wenn Sie z.B. ein
Paket abfragen wollen, bevor es installiert wird, bentigen Sie zustzlich die
Option p. Beispiel:
archangel:/i586 # rpm -qpl zip-2.3-741.i586.rpm
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/share/doc/packages/zip
... weitere Zeilen wurden abgeschnitten ...
Prfungstipp
Achtung! Die Option -i ist, ohne -q verwendet, der Schalter fr die Installation. Die
Kombination -qi ist jedoch eine Abfrage. Es gibt Prfungsfragen, die genau auf diese
Tatsache abzielen.
81
RPM und YUM-Paketverwaltung verwenden 102.5
Wenn Sie ein bereits installiertes Paket abfragen wollen, lassen Sie die Option p
weg. Es wird dann nur der reine Paketname ohne die Versionsnummer und
Dateierweiterung angegeben:
archangel:/storage/suse93/suse/i586 # rpm -ql bzip2
/usr/bin/bunzip2
/usr/bin/bzcat
/usr/bin/bzip2
/usr/bin/bzip2recover
... weitere Zeilen wurden abgeschnitten ...
berprfung installierter Pakete
Sie knnen ein installiertes RPM-Paket berprfen. Es wird dabei festgestellt, ob
zum Paket gehrende Dateien gelscht oder modifiziert wurden. Dazu verwen-
den Sie einfach den Schalter -V. Dieser steht in diesem Fall nicht fr verbose, son-
dern fr verify. Die Ausgabe einer berprfung knnte so aussehen:
archangel:/ # rpm -V samba
S.5....T c /etc/samba/smbpasswd
S.5....T c /etc/samba/smbusers
S.5....T c /etc/xinetd.d/swat
Das Ergebnis der berprfung zeigt nderungen an den aufgefhrten Dateien.
Da es sich hierbei um Konfigurationsdateien handelt, ist das nicht weiter beun-
ruhigend. Die Bezeichnungen vor den Dateinamen bedeuten bei der berpr-
fung Folgendes:
S (Size) die Gre weicht vom Original ab.
M (Mode) die Berechtigungen auf die Datei wurden gendert.
5 (MD5) die Checksumme ist abweichend.
D (Device) Fehler in Gertenummern.
L (Link) Fehler im Pfad eines Softlinks.
U (User) der Besitzer der Datei wurde gendert.
G (Group) die Besitzergruppe einer Datei wurde gendert.
T (Time) die nderungszeit der Datei hat sich gendert.
Die einzelnen Fehlercodes mssen Sie nicht auswendig kennen. Es reicht, zu wis-
sen, dass Sie eine Paketberprfung grundstzlich durchfhren knnen.
82
Linux-Installation und -Paketverwaltung 102
Pakete umwandeln
Wie Sie RPM-Pakete installieren und auflisten, haben Sie bereits gelernt. Aber
was ist eigentlich, wenn man aus einem RPM-Paket nur eine bestimmte Datei
herausextrahieren mchte? An dieser Stelle mssen normale RPM-Tools leider
passen. Die einzige sinnvolle Mglichkeit besteht momentan darin, mit rpm2cpio
das RPM-Paket in ein cpio-Paket umzuwandeln und daraus die Datei zu extrahie-
ren. Es wre ebenso mglich, das Paket einfach zu installieren, die gewnschte
Datei zu sichern und das Paket anschlieend wieder zu deinstallieren. Dies ist
allerdings etwas umstndlich. Das Programm rpm2cpio kommt brigens vllig
ohne Optionen aus, was in Bezug auf die Prfung natrlich erfreulich ist. Ledig-
lich das RPM-Paket muss als Option bergeben werden:
archangel:~ # rpm2cpio samba-3.3.2-0.33.rpm >samba.cpio
Als Ergebnis erhalten Sie dann eine cpio-Datei. Wenn Sie wissen, welche Datei Sie
einzeln extrahieren mchten, knnen Sie die Ausgabe von rpm2cpio auch direkt
an cpio bergeben:
archangel:~ # rpm2cpio samba-3.3.2-0.33.rpm |cpio -ivd usr/share/
man/man7/samba.7
/usr/share/man/man7/samba.7
12 Blocks
Auf diese Weise wurde nur die reine Manpage von Samba auf das System instal-
liert.
yum und der yumdownloader
Mit dem Programm yum knnen Sie hnlich wie mit apt-get Programme installie-
ren. Allerdings handelt es sich in diesem Fall um RPM-Pakete und nicht um
DPKG-Pakete. Die Syntax ist sogar relativ hnlich.
Die Hauptkonfigurationsdatei von yum ist /etc/yum.conf. Hier wird unter anderem
das Cache-Verzeichnis fr Pakete festgelegt. In der Standardeinstellung befindet
es sich unter /var/cache/yum. Im Verzeichnis /etc/yum.repos.d befinden sich
Dateien mit der Dateierweiterung repo. In diesen Dateien befinden sich Verweise
auf URLs, die Quellen fr RPM-Pakete enthalten.
Um ein Programm mithilfe von yum zu suchen, gehen Sie hnlich vor wie bei
apt-get:
[root@centos01 /]# yum search fortune
Loading "installonlyn" plugin
Setting up repositories
extras 100 % |=========================| 1.1 kB 00:00
83
RPM und YUM-Paketverwaltung verwenden 102.5
updates 100 % |=========================| 951 B 00:00
base 100 % |=========================| 1.1 kB 00:00
addons 100 % |=========================| 951 B 00:00
Reading repository metadata in from local files
primary.xml.gz 100 % |=========================| 90 kB 00:00
################################################## 298/298
primary.xml.gz 100 % |=========================| 101 kB 00:00
################################################## 156/156
primary.xml.gz 100 % |=========================| 878 kB 00:03
################################################## 2508/2508
primary.xml.gz 100 % |=========================| 157 B 00:00
Excluding Packages in global exclude list
Finished
fortune-mod.i386 1.99.1-7.el5.centos extras
Matched from:
fortune-mod
A program which will display a fortune
Fortune-mod contains the ever-popular fortune program, which will
display quotes or witticisms. Fun-loving system administrators
can add fortune to users' .login files, so that the users get their
dose of wisdom each time they log in.
http://www.redellipse.net/code/fortune
Die Ausgabe des Programms ist recht umfangreich und detailliert. Sie erfahren
unter anderem auch, dass das Paket, das tatschlich bentigt wird, fortune-mod
heit. Mit dem folgenden Kommando wird fortune hnlich wie mit apt-get her-
untergeladen und installiert:
[root@centos01 /]# yum install fortune-mod.i386
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
Reading repository metadata in from local files
Excluding Packages in global exclude list
Finished
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for fortune-mod to pack into transaction set.
fortune-mod-1.99.1-7.el5. 100 % |================| 19 kB 00:00
---> Package fortune-mod.i386 0:1.99.1-7.el5.centos set to be updated
--> Running transaction check
--> Processing Dependency: librecode.so.0 for package: fortune-mod
--> Restarting Dependency Resolution with new changes.
--> Populating transaction set with selected packages. Please wait.
84
Linux-Installation und -Paketverwaltung 102
---> Downloading header for recode to pack into transaction set.
recode-3.6-22.el5.centos. 100 % |===============| 8.3 kB 0:00
---> Package recode.i386 0:3.6-22.el5.centos set to be updated
--> Running transaction check
Dependencies Resolved
===============================================================
Package Arch Version Repository Size
===============================================================
Installing:
fortune-mod i386 1.99.1-7.el5.centos extras 1.2 M
Installing for dependencies:
recode i386 3.6-22.el5.centos extras 837 k
Transaction Summary
===============================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 2.0 M
Is this ok [y/N]: y
Das Programm prft nochmals die bereits bekannten Quellen (Repositorys), stellt
fest, welche Abhngigkeiten noch aufgelst werden mssen und fragt dann nach,
ob die Installation tatschlich durchgefhrt werden soll. Sobald die Abfrage
besttigt wurde, beginnen der Download und die anschlieende Installation:
Downloading Packages:
(1/2): fortune-mod-1.99.1 100 % |===============| 1.2 MB 00:03
(2/2): recode-3.6-22.el5. 100 % |===============| 837 kB 00:02
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: recode ######################### [1/2]
Installing: fortune-mod ######################### [2/2]
Installed: fortune-mod.i386 0:1.99.1-7.el5.centos
Dependency Installed: recode.i386 0:3.6-22.el5.centos
Complete!
Wenn das Programm nicht mehr bentigt wird, kann es mit der Option remove
wieder entfernt werden. Auch diese Vorgehensweise ist mit apt-get identisch:
[root@centos01 ~]# yum remove fortune-mod
Loading "installonlyn" plugin
Setting up Remove Process
Resolving Dependencies
85
RPM und YUM-Paketverwaltung verwenden 102.5
--> Populating transaction set with selected packages. Please wait.
---> Package fortune-mod.i386 0:1.99.1-7.el5.centos set to be erased
--> Running transaction check
Dependencies Resolved
==============================================================
Package Arch Version Repository Size
==============================================================
Removing:
fortune-mod i386 1.99.1-7.el5.centos installed 2.8 M
Transaction Summary
==============================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Is this ok [y/N]: y
Nach der Besttigung der Sicherheitsabfrage wird das Programm deinstalliert.
Angeblich beginnt dieser Vorgang mit einem Download:
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Removing : fortune-mod ######################### [1/1]
Removed: fortune-mod.i386 0:1.99.1-7.el5.centos
Complete!
Der yumdownloader ist lediglich ein Hilfsmittel, das RPM-Pakete aus dem Internet
herunterldt. Er greift hierbei automatisch auf Quellen zurck, die unter den
Repositorys in /etc/yum.repos.d/ konfiguriert sind. Folgende Optionen knnen
verwendet werden:
--destdir gibt ein Zielverzeichnis fr den Download an. Alternativ wird das
aktuelle Verzeichnis verwendet.
--urls zeigt lediglich die Quell-URLs an. Ein Download wird nicht durchge-
fhrt.
Prfungstipp
Sie knnen (und sollten) noch einige andere Optionen von yum in der Manpage nachle-
sen. Beachten Sie bitte den Umstand, dass die Option update hier nicht die Repositorys
aktualisiert wie bei apt. Vielmehr wird hierdurch die Aktualisierung installierter Pakete
initiiert. Solche Unterschiede werden gerne in Prfungen thematisiert.
86
Linux-Installation und -Paketverwaltung 102
--resolve lst Abhngigkeiten auf und sorgt dafr, dass zustzlich bentigte
Pakete automatisch heruntergeladen werden.
--source ldt statt der Binrdateien die Programmquellen herunter.
Prfungstipp
Die Thematik Paketmanagement sollte nicht auf die leichte Schulter genommen wer-
den. Es gibt garantiert viele Prfungsfragen zu diesem Thema, die Detailwissen verlan-
gen. Leider ist es (im Moment) nicht mehr mglich, zwischen einer RPM- und einer
DPKG-Prfung zu whlen. Deshalb mssen Sie beide Systeme genau kennen. In den
Prfungen gab es im April 2009 eine Verlagerung des Schwerpunktes auf yum, apt-get
und aptitude.
87
Ein groer Teil dessen, was ganz selbstverstndlich als Linux bezeichnet
wird, entspringt in Wirklichkeit dem GNU-Projekt. In dem nun folgenden
Kapitel geht es um einen kleinen Teil von GNU. GNU is Not Unix. GNU is
Not Unix. GNU is Not U...
Topic 103: GNU- und Unix-Kommandos
103.1 Auf der Kommandozeile arbeiten
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, ber die Kommandozeile mit
Shells und Kommandos zu interagieren. Dieses Prfungsziel setzt die Bash als
Shell voraus.
Wichtigste Wissensgebiete:
einzelne Shell-Kommandos und einzeilige Kommandofolgen verwenden, um
einfache Aufgaben auf der Kommandozeile zu lsen
die Shell-Umgebung verwenden und anpassen, etwa um Umgebungsvariablen
zu definieren, zu verwenden und zu exportieren
die Kommando-Vorgeschichte verwenden und ndern
Kommandos innerhalb und auerhalb des definierten Suchpfads aufrufen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
.
bash
echo
env
exec
export
pwd
set
unset
88
GNU- und Unix-Kommandos 103
man
uname
history
Allgemeines
Inzwischen gibt es fr Linux zwar etliche grafische Frontends, und auch die meis-
ten administrativen Ttigkeiten knnen inzwischen mit der Maus ausgefhrt
werden, aber das wichtigste Eingabegert bleibt bei der Systemverwaltung
immer noch die Tastatur. Damit Sie im Textmodus mit dem Computer kommuni-
zieren knnen, bentigen Sie eine Shell. Der Begriff Shell bedeutet in der engli-
schen Sprache Schale, was genau den Punkt trifft, weil man ber diese Schale mit
dem Kern(el) Informationen austauschen kann. Unter Linux wird standardmig
die Bash als Shell verwendet. Hierbei handelt es sich um eine Weiterentwicklung
der ursprnglichen Unix-Shell sh. Die Shell sh ist immer noch Bestandteil von
Linux, wird aber zumindest als Login-Shell nicht mehr so oft verwendet. Die
Shell sh wurde von Stephen Bourne bereits 1977 entwickelt, whrend die Bash
(Bourne Again Shell) als Teil des GNU-Projektes erst Ende der 80er Jahre des letz-
ten Jahrhunderts von Brian Fox und Chet Ramey geschrieben wurde. Die
Bezeichnung Bash ist ein Wortspiel und kann als Born Again oder Bourne Again
gelesen werden. Weitere bekannte, unter Linux verwendete Shells sind ksh (Korn
Shell), csh (C-Shell), tcsh (eine Erweiterung der C-Shell), zsh (mit ksh verwandte Z-
Shell), rsh (Remote Shell) und einige mehr.
Aufbau eines Shell-Kommandos
Ein Kommando besteht aus bis zu drei verschiedenen Komponenten. Die erste
Komponente ist das Kommando selbst, also eine ausfhrbare Datei, ein Skript
oder ein shell-interner Befehl. Ein Kommando kann auch fr sich allein stehen
und ohne Optionen oder Argumente funktionieren:
archangel:~ # mount
Wenn das Kommando mount ohne Optionen oder Argumente ausgefhrt wird,
zeigt es aktuell eingehngte Dateisysteme an. Es gibt aber auch Konstellationen,
in denen ein Kommando mit einer oder mehreren Optionen ausgefhrt wird:
archangel:~ # mount -a
In diesem Beispiel wurde mount mit der Option -a ausgefhrt. Das Programm
mount wrde mit dieser Option alle in der Datei /etc/fstab aufgefhrten Dateisys-
teme einhngen.
89
Auf der Kommandozeile arbeiten 103.1
Es ist aber auch mglich, mount ausschlielich mit Argumenten zu versehen:
archangel:~ # mount /dev/hda1 /boot
Argumente unterscheiden sich von Optionen. Eine Option sagt einem Pro-
gramm, wie es sich verhalten soll. Argumente teilen einem Programm mit, was es
verarbeiten soll. Es ist mglich, einem Programm sowohl mehrere Optionen als
auch mehrere Argumente zu bergeben. Bei vielen Programmen ist die Reihen-
folge sogar variabel:
mount -o username=antje,password=xy //fs1/data /mnt/ -t smbfs
Das Beispiel zeigt eine Mischung mit einer Option vorn, einer Option hinten und
den Argumenten in der Mitte. Der mount-Befehl baut in diesem Fall eine Netz-
werkverbindung zu einem Windows-Computer auf. Konsultieren Sie im Zwei-
felsfall immer die Manpage eines Programms, wenn Sie herausfinden wollen, wie
Optionen und Argumente bergeben werden mssen.
bergabe der Optionen
Bei der bergabe von Optionen gibt es mehrere gngige Methoden. Einige Kom-
mandos verlangen, dass den Optionen ein Bindestrich vorangestellt wird, andere
arbeiten auch ohne einleitenden Bindestrich. Auerdem sehen viele Programme
vor, dass ganze Worte als Optionen verwendet werden. Diesen werden in der
Regel zwei Bindestriche vorangestellt. Das folgende Beispiel kennen Sie sinnge-
m schon aus dem vorangegangenen Kapitel:
archangel:~ # rpm --install -vh /i586/fortune-1.0-860.i586.rpm
Preparing.. ########################################### [100 %]
Diesmal wurden absichtlich mehrere Formen der Optionsbergabe kombiniert.
Es sind ein Optionswort mit zwei vorangestellten Bindestrichen und zwei Optio-
nen mit einem gemeinsamen vorangestellten Bindestrich vorhanden. Ein weite-
rer prominenter Vertreter der flexiblen Programme ist tar. Sie knnen tar mit
normalen Optionen oder Optionsworten verwenden. Auerdem kann tar auch
Optionen ohne vorangestellte Bindestriche bernehmen. Die folgenden vier
Kommandos fhren bei tar zu demselben Ergebnis:
# tar -x -z -v -f xmbmon205.tar.gz
# tar -xzvf xmbmon205.tar.gz
# tar xvzf xmbmon205.tar.gz
# tar --extract --gzip --verbose --file=xmbmon205.tar.gz
90
GNU- und Unix-Kommandos 103
Umgebungsvariablen und Shellvariablen
Grundstzlich haben Variablen die Aufgabe, Werte aufzunehmen. Diese knnen
von einem Programm ausgewertet und weiterverarbeitet werden. Variablen beein-
flussen aber auch das Erscheinungsbild und Verhalten des ganzen Betriebssystems.
Sie knnen sich den Inhalt einer Variablen einfach durch die Eingabe des Kom-
mandos echo, gefolgt von einem Dollarzeichen und dann der Variablen selbst, aus-
geben lassen:
archangel:~ # echo $OSTYPE
linux
Man unterscheidet auf einem Unix- oder auch Linux-System zwischen Umge-
bungsvariablen und Shellvariablen. Die Unterschiede zwischen diesen beiden
Variablentypen liegen einerseits darin, durch welche Konfigurationsdateien sie
deklariert werden und demzufolge wann und durch welches Programm sie aus-
gewertet werden, und andererseits in ihrem Wirkungsbereich:
Umgebungsvariablen gelten fr alle Shells, die ein Benutzer verwendet. Die
Inhalte dieser Variablen werden an Subshells vererbt. Das bedeutet, dass beim
Aufruf einer Subshell ein automatischer Export der Variablen in diese Subshell
stattfindet. Bei Umgebungsvariablen werden normalerweise Grobuchstaben
verwendet.
Shellvariablen mssen in jeder Subshell, die durch den Benutzer oder ein Skript
gestartet wird, neu deklariert werden. Es findet standardmig keine Vererbung
statt. Fr Shellvariablen verwendet man blicherweise Kleinbuchstaben.
Wenn sich ein Benutzer an einem System anmeldet, werden bereits mehrere Vari-
ablen definiert. Wenn er dann weitere Shells ffnet oder Skripte ausfhrt, wer-
den weitere Variablen deklariert. Dafr sind folgende Konfigurationsdateien
unter Linux vorhanden:
/etc/profile ist die erste Konfigurationsdatei, die bei der Anmeldung eines
Benutzers eingelesen wird. Sie enthlt erste Umgebungsvariablen und (fr die
Prfung besonders wichtig!) die erste PATH-Anweisung. Damit sich nderun-
gen an dieser Datei auswirken, muss sich der Benutzer gegebenenfalls ab- und
wieder anmelden.
/etc/bashrc kann von der .bashrc eines Benutzers geladen werden. Sie enthlt
systemweite Einstellungen, Aliase und Funktionen. Diese Datei wird beim
Start jeder Shell neu eingelesen und erfordert deshalb nach nderung keine
Neuanmeldung des Benutzers.
~/.bash_profile wird (falls vorhanden) nur bei einer Neuanmeldung eingelesen
und sofort nach /etc/profile ausgefhrt. Sie beinhaltet zustzliche Pfadanwei-
91
Auf der Kommandozeile arbeiten 103.1
sungen (z.B. das Heimatverzeichnis), den zu verwendenden Standard-Editor
und benutzerspezifische Umgebungsvariablen.
~/.bash_login ist eine Alternative zu .bash_profile und wird auch nur dann
abgearbeitet, wenn die Datei .bash_profile nicht existiert. Auch diese Datei
wird nur whrend der Anmeldung verwendet. Inhalt und Verwendungszweck
entsprechen der .bash_profile.
~/.profile ist die ursprngliche Konfigurationsdatei der Bash. Sie wird nur
whrend der Anmeldung eingelesen, und auch nur dann, wenn weder eine
.bash_profile- noch eine .bash_login-Datei im Verzeichnis des Benutzers exis-
tieren. Inhalt und Verwendungszweck entsprechen der .bash_profile und
.bash_login.
~/.bashrc ist die andere, ursprngliche Konfigurationsdatei der Bash. Sie wird
in jedem Fall eingelesen, und zwar auch beim Aufruf einer neuen Shell. Nach
nderungen in dieser Datei ist entsprechend keine Neuanmeldung des Benut-
zers erforderlich. Sie beinhaltet im Wesentlichen Aliase und Funktionen.
~/.bash_logout ist eine optionale Datei, die ausgefhrt wird, wenn der Benut-
zer sich abmeldet. Sie knnte z.B. den Monitor lschen.
Sie knnen sich alle aktuell gesetzten Shellvariablen anzeigen lassen, indem Sie
das Kommando set ohne Optionen und Argumente verwenden. Da die Ausgabe
des Kommandos recht umfangreich ist, lohnt sich eine Ausgabe mit dem Pager
less:
archangel:~ # set | less
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
... ca. 800 Zeilen wurden abgeschnitten ...
Um die Umgebungsvariablen aufzulisten, nutzen Sie das Kommando env. Auch
hier sollten Sie less zur Anzeige verwenden:
archangel:~ # env | less
LESSKEY=/etc/lesskey.bin
HOSTNAME=archangel
HOST=archangel
TERM=xterm
SHELL=/bin/bash
... ca. 60 Zeilen wurden abgeschnitten ...
Wenn Sie selbst eine Variable deklarieren mssen, knnen Sie das einfach durch
Eingabe der Variablen, gefolgt von dem zuzuweisenden Wert an der Eingabeauf-
92
GNU- und Unix-Kommandos 103
forderung, erledigen. Variablen, die auf diese Art Werte erhalten, werden aber nicht
automatisch in Subshells exportiert, wie die folgende Befehlsfolge demonstriert:
archangel:~ # x=5000
archangel:~ # echo $x
5000
archangel:~ # bash
archangel:~ # echo $x
archangel:~ #
Im ersten Schritt wurde der Variablen x der Wert 5000 zugewiesen. Anschlieend
wurde die Variable mit dem echo-Kommando ausgegeben. In der vierten Zeile
wird mit dem Kommando bash eine Subshell gestartet. Der Versuch, die Variable
mit dem echo-Befehl auszugeben, schlgt fehl, weil keine Vererbung der Variab-
len in die Subshell stattgefunden hat.
Wenn der Inhalt einer Variablen in einer Subshell bentigt wird, muss die Vari-
able exportiert werden. Beispiel:
archangel:~ # Name=Hans
archangel:~ # echo $Name
Hans
archangel:~ # export Name
archangel:~ # bash
archangel:~ # echo $Name
Hans
Diesmal wurde die Variable Name mit dem Kommando export exportiert, bevor
die Subshell gestartet wurde. Wie der zweite echo-Befehl zeigt, steht die Variable
danach in der Subshell zur Verfgung.
Es ist aber auch mglich, die Deklaration und den Export einer Variablen in
einem einzigen Schritt durchzufhren. Das wird in der ersten Zeile des folgenden
Beispiels demonstriert:
archangel:~ # export Name=Willi
archangel:~ # bash
archangel:~ # echo $Name
Willi
Prfungstipp
Achtung: Eine Variable kann niemals in eine bergeordnete Shell exportiert werden,
sondern nur in eine Subshell. In der Prfung wird man Sie mit diesem Verhalten kon-
frontieren.
93
Auf der Kommandozeile arbeiten 103.1
Wenn Sie den Inhalt einer Variablen nicht mehr bentigen, sollten Sie diese mit
dem Kommando unset wieder zurcksetzen. Es macht auch Sinn, zu Beginn eines
Skripts zunchst alle verwendeten Variablen zurckzusetzen. Damit verhindern
Sie, dass eventuell exportierte Variablen mit gleichen Bezeichnungen den Funkti-
onsablauf Ihres Skripts stren. Beispiel:
archangel:~ # unset Name
Beliebte Variablen fr die Prfung
Manche Variablen werden in der Prfung immer wieder abgefragt. Dazu gehren
besonders die folgenden:
$HISTSIZE definiert die Anzahl der Kommandos, die in der Befehls-History
aufbewahrt werden. Diese Variable wird normalerweise in der Datei /etc/pro-
file festgelegt.
$PS1 bestimmt das Aussehen der Eingabeaufforderung (Prompt). Beispiel:
harald@archangel:~> echo $PS1
\u@\h:\w>
Die Zeichen \u stehen fr Username. Das @ wird normal ausgegeben. Die Zei-
chen \h werden mit dem Host-Namen ersetzt. Es folgt ein Doppelpunkt.
Anschlieend zeigt \w fr Working Directory das aktuelle Verzeichnis an. Die
Tilde ~ reprsentiert hierbei das Heimatverzeichnis des Benutzers. Es folgt ein
>. Der Prompt kann durch nderung der Variablen PS1 den eigenen Wn-
schen angepasst werden. Es empfiehlt sich dann eine Konfiguration in der
Datei /etc/bashrc.
$? enthlt den Errorlevel des zuletzt ausgefhrten Kommandos. In der Regel
bedeutet der Wert 0 in dieser Variablen, dass das letzte Programm erfolgreich
ausgefhrt wurde. Die Fehlerwerte variieren von Programm zu Programm.
Beliebte Werte sind 1 und 127. Beispiel:
archangel:~ # Kommando, das es nicht gibt
bash: Kommando: command not found
archangel:~ # echo $?
127
Das Kommando, das es nicht gibt hat einen Errorlevel von 127 zur Folge.
$1, $2 usw. enthalten die Optionen und Argumente, die an ein Programm
bergeben werden. Sie werden im Normalfall von dem gestarteten Programm
oder Skript selbst ausgewertet. Mehr ber dieses Thema erfahren Sie im zwei-
ten Teil dieses Buches.
94
GNU- und Unix-Kommandos 103
Bash-Befehls-History und automatisches Vervollstndigen
von Befehlen
Damit Sie auf der Kommandozeile effizienter arbeiten knnen, stellt die Bash
Ihnen noch zwei hervorragende Hilfsfunktionen zur Verfgung. Stellen Sie sich
vor, Sie wollen das folgende Programm entpacken:
linux:/dl/ # tar xvzf ez-ipupdate-3.0.11b7-linux-i386.tar.gz
Die Wahrscheinlichkeit ist recht hoch, dass man sich bei diesem langen Dateinamen
vertippt, und Dateinamen von solchem Ausma sind unter Linux nicht gerade die
Ausnahme. Mit der automatischen Befehlsvervollstndigung der Bash ist das kein
Problem mehr. Der Befehl muss nur so weit ausgeschrieben werden, dass die Shell
diesen eindeutig identifizieren kann. Danach bettigen Sie die Tabulatortaste:
linux:/dl/ # tar xvzf ez[TAB]
Dieser Befehl sollte ausreichen, um den Tar-Ball zu entpacken. Wenn es beim
Bettigen der TAB-Taste mehrere Mglichkeiten zur Vervollstndigung des Kom-
mandos gibt, bekommen Sie einen akustischen Hinweis. Sie knnen dann durch
wiederholtes Bettigen der TAB-Taste eine Auswahl der Mglichkeiten zur Ver-
vollstndigung erhalten.
Eine weitere ntzliche Funktion der Bash ist die Befehls-History. Alle Befehle, die
Sie verwenden, werden in einer Datei mit der Bezeichnung .bash_history abge-
speichert. Der Punkt zu Beginn der Datei ist schon ein Hinweis darauf, dass es
sich um eine Datei handelt, die im Heimatverzeichnis eines Benutzers abgelegt
wird. Wie viele Kommandos in der History-Liste zwischengespeichert werden,
wird ber die Variable HISTSIZE festgelegt. Sie finden diese Variable normaler-
weise in der Datei /etc/profile.
Um bereits verwendete Befehle zu wiederholen und gegebenenfalls zu editieren,
stehen Ihnen verschiedene Mglichkeiten zur Verfgung. Die beliebteste ist
wahrscheinlich die Verwendung der (Cursor nach oben)-Taste. Hierdurch werden
die zuletzt verwendeten Befehle in umgekehrter Reihenfolge aufgerufen. Dieses
Verhalten kennen DOS-Anwender auch von doskey. Weitere Mglichkeiten zur
Verwendung der History sind:
!! Dieses Kommando wird als Bang-Bang bezeichnet und fhrt den letzten
Befehl der History noch einmal aus.
!n Wenn Sie einfach den Befehl history eingeben, bekommen Sie eine num-
merierte Auflistung der zuletzt verwendeten Befehle. Sie knnen dann n mit
der Nummer des gewnschten Befehls ersetzen.
!-n fhrt den letzten Befehl -n aus. Wenn Sie !-2 eingeben, wird der vorletzte
Befehl wiederholt.
95
Auf der Kommandozeile arbeiten 103.1
!<Zeichenkette> fhrt den letzten Befehl aus, der mit <Zeichenkette>
beginnt. Wenn Sie etwa das Kommando tail /var/log/messages noch einmal
wiederholen mchten, geben Sie einfach !ta ein.
!? <Zeichenkette> fhrt den letzten Befehl aus, in dem <Zeichenkette> vor-
kommt.
Befehlseingabe
Wie man einen normalen Befehl eingibt, wissen Sie schon lange, aber es gibt
darber hinaus noch ein paar spezielle Befehle.
Sie knnen z.B. mehrere Befehle in einer einzigen Befehlszeile ausfhren, indem
Sie die einzelnen Kommandos einfach durch Semikolon getrennt aufzhlen:
archangel:/ # df -h;free -m
Dieses Kommando zeigt nacheinander die Festplattenbelegung und anschlieend
die aktuelle Speicherverwendung an.
An die Ausfhrung zweier Kommandos auf einer einzigen Kommandozeile kn-
nen auch Bedingungen geknpft werden. Wenn Sie anstatt des Semikolons im
vorangegangenen Beispiel zwei Ampercent-Zeichen (&&) verwendet htten, wre
das zweite Kommando nur dann ausgefhrt worden, wenn das erste Kommando
erfolgreich gewesen wre. Die Verwendung zweier Pipe-Zeichen (||) zwischen
den Kommandos bewirkt hingegen, dass das zweite Kommando nur dann ausge-
fhrt wird, wenn das erste Kommando fehlschlgt.
Umgekehrt knnen Sie lange Kommandos ber mehrere Zeilen verteilen, indem
Sie den Befehl mit einem Backslash aufteilen:
mount -o username=harald,password=P@sswort47 \
-t smbfs \
//archangel/storage /mnt/storage
Der unbersichtliche, lange Befehl wurde an sinnvollen Stellen abgeteilt und so
ber mehrere Zeilen verteilt. Bewirkt wurde die Teilung durch jeweils einen
Backslash am Ende der ersten beiden Zeilen. Beachten Sie bitte, dass hinter den
Backslashs keine Leerzeichen stehen drfen.
PATH-Variable
Wenn Sie ein Programm ausfhren wollen, das sich nicht in einem in Ihrer PATH-
Variablen enthaltenen Verzeichnis befindet, mssen Sie den kompletten Pfad zu
diesem Programm auf der Kommandozeile mit angeben. Ein klassisches Beispiel
dafr sind die Startskripte in /etc/init.d. Dieses Verzeichnis befindet sich blicher-
96
GNU- und Unix-Kommandos 103
weise nicht in der PATH-Variablen. Deshalb muss z.B. Apache unter Angabe des
Pfadnamens gestartet werden:
archangel:~ # /etc/init.d/apache2 start
Wenn Sie ein Programm ohne Angabe eines Pfades starten, prft die Shell
zunchst, ob es sich um ein internes Kommando der Shell handelt. Dazu zhlen:
echo, bg, fg, jobs, kill, pwd, set, unset und viele mehr.
Falls kein passendes Kommando gefunden wird, sucht die Shell das Programm in
allen Verzeichnissen, die in der PATH-Variablen enthalten sind. Sollten mehrere
Programme mit dem gleichen Namen vorhanden sein, wird das zuerst gefundene
ausgefhrt. Sie knnen in einem solchen Fall das Kommando which verwenden,
um festzustellen, welches Programm die Shell automatisch ausfhrt:
archangel:~ # which less
/usr/bin/less
Es ist zu beachten, dass ein Programm auch dann nicht ohne Pfadangabe ausge-
fhrt wird, wenn man sich aktuell in dessen Verzeichnis befindet. Dieses Verhal-
ten gibt es unter DOS, aber nicht bei Linux. Sie knnen ein Programm, das sich
im aktuellen Verzeichnis befindet, aber auch starten, indem Sie ./ dem Pro-
gramm voranstellen. Die Zeichen ./ reprsentieren das aktuelle Verzeichnis. Sie
knnen z.B. Konfigurationsskripte von Tar-Balls im aktuellen Verzeichnis ausfh-
ren, indem Sie folgende Syntax verwenden:
archangel:/usr/src/xmbmon205 # ./configure
Wenn Sie einen Prompt verwenden, der Ihnen nicht anzeigt, in welchem Ver-
zeichnis Sie sich gerade befinden, dann verwenden Sie das Kommando pwd (Path
of Working Directory) ohne Optionen. Der Pfad wird Ihnen dann angezeigt:
archangel:/usr/src/xmbmon205 # pwd
/usr/src/xmbmon205
Sie knnen sich den Inhalt Ihrer PATH-Variablen, genau wie den anderer Variab-
len, anzeigen lassen:
archangel:/ # echo $PATH
/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/
usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin:/opt/kde3/bin:/usr/lib/
jvm/jre/bin
Rekursive Befehlsausfhrung
Wenn ein Kommando rekursiv ausgefhrt wird, dann bezieht sich sein Wirkungs-
bereich nicht nur auf das angegebene Verzeichnis, sondern auch auf alle Unter-
97
Auf der Kommandozeile arbeiten 103.1
verzeichnisse und alle darin enthaltenen Dateien. Programme, die rekursiv ausge-
fhrt werden knnen, verstehen normalerweise die Option --recursive oder kurz
-R. Typische Vertreter fr diese Programme sind rm, chmod, chown, chgrp und cp.
Das Kommando uname
Der Befehl uname gibt Informationen zum laufenden System aus. Mit entspre-
chenden Optionen versehen, knnen Sie hier auch die Versionsnummer des lau-
fenden Kernels berprfen.
Zum Beispiel:
root@archangel:~# uname -r
2.6.24-23-generic
oder:
root@archangel:~# uname -a
Linux archangel 2.6.24-23-
generic #1 SMP Mon Jan 26 00:13:11 UTC 2009 i686 GNU/Linux
Die von uname generierten Informationen knnen Sie im Folgenden benutzen,
um sich genauere Informationen ber bestimmte Module anzusehen oder um die
zum laufenden Kernel passenden Module zu laden bzw. zu entladen.
Die Manpages im Allgemeinen
Manpages sind ein komfortabel zu benutzendes Hilfesystem und stehen fr fast
alle Linux-Befehle zur Verfgung. Geben Sie einfach den Befehl man, gefolgt von
dem zu erklrenden Befehl, auf der Kommandozeile ein, und schon erhalten Sie
eine genaue Beschreibung.
Funktionsweise der Manpages
Immer wenn Sie eine Manpage aufrufen, konsultiert das Programm man die in der
Variablen $MANPATH enthaltenen Verzeichnisse. Hier knnen mehrere Ver-
zeichnisse auf einmal hinterlegt sein. In nach Sektionen unterteilten Unterver-
zeichnissen befinden sich die Dateien der Manpages im komprimierten Zustand.
Das Mansystem dekomprimiert die angeforderte Datei und bergibt sie anschlie-
end an einen Pager. Dieser zeigt daraufhin die gewnschte Manpage an.
$MANPATH und die Datei manpath.config
Wie bereits erwhnt, enthlt die Variable $MANPATH Informationen darber, wo
sich die Manpages berhaupt befinden. Genauere Informationen darber finden
98
GNU- und Unix-Kommandos 103
Sie in der Konfigurationsdatei /etc/manpath.config. Wenn dem System neue Man-
pages hinzugefgt werden, wird diese Datei normalerweise bei Bedarf auch auto-
matisch aktualisiert. Ein manueller Eingriff ist in der Regel nicht ntig. Um den
aktuellen MANPATH zu ermitteln, geben Sie einfach das Kommando manpath
ohne Parameter ein. Das Ergebnis sieht dann beispielsweise so aus:
archangel:/ # manpath
/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/gnome/share/man
Ein weiterer, wichtiger Pfad ist der, in dem das Mansystem seine Temporrda-
teien ablegt. Wie bereits erwhnt, sind Manpages im Rohformat komprimiert.
Deshalb werden sie vor dem Anzeigen in ein temporres Verzeichnis dekompri-
miert. In der Regel handelt es sich hierbei um das Verzeichnis /var/cache/man.
Dieses Verzeichnis wird, gesttzt durch den Daemon cron, zyklisch von catman
bereinigt. Um das Cache-Verzeichnis Ihres Computers ausfindig zu machen,
geben Sie das Kommando manpath c ein:
archangel:/ # manpath -c
/var/cache/man:/var/cache/man/local:/var/cache/man/opt
Die Sektionen des Mansystems
Das Mansystem ist in mehrere Sektionen unterteilt. Diese Sektionen sind folgen-
dermaen gegliedert:
1 ausfhrbare Programme fr Benutzer
2 Systemaufrufe (Funktionen, die durch den Kernel untersttzt werden)
3 Bibliothekaufrufe (Librarys)
4 besondere Dateien (normalerweise in /dev)
5 Dateiformate und Konventionen
6 Spiele
7 Sonstiges (Makro-Pakete und Konventionen)
8 administrative Programme (nur fr den Root)
9 Kernel-Routinen (nicht standardisiert)
A mehrteilige Manpages
Zu vielen Programmen oder Dateien gibt es berhaupt nur eine einzige Manpage.
Sollte es aber mehrere geben, so wird jene angezeigt, die numerisch betrachtet in
der niedrigsten Sektion steht. Ein Beispiel hierfr ist crontab. Fr crontab gibt es
zwei Eintrge in den Manpages, weil es sich bei crontab sowohl um ein ausfhr-
bares Programm als auch um eine Konfigurationsdatei handelt. Deshalb gibt es
99
Auf der Kommandozeile arbeiten 103.1
fr crontab einen Eintrag unter Sektion 1 und einen unter Sektion 5. Brauchen
Sie nun Informationen ber die Konfigurationsdatei crontab, so knnen Sie diese
mit folgendem Kommando aufrufen:
man 5 crontab
Hilfe zum Programm crontab bekommen Sie, indem Sie die Manpage ohne
Angabe der Sektion aufrufen:
man crontab
Aufbau von Manpages
Der Aufbau einer Manpage ist festgelegt und sollte immer die folgenden Ele-
mente enthalten:
Name die Bezeichnung des Elements mit einer kurzen Beschreibung
Synopsis eine vollstndige Kurzbeschreibung der Syntax
Description eine ausfhrliche Beschreibung des Elements
Defaults voreingestellte Parameter
Overview ein berblick ber die komplexeren Zusammenhnge
Options Optionen und deren Beschreibung
Return Values Informationen ber eventuelle Rckgabewerte, teilweise auch
als Exit-Status bezeichnet
See also Verweise auf artverwandte Themen
Bugs bekannte Fehler
Files Konfigurationsdateien u..
Es sind noch mehr Elemente denkbar, aber die hier aufgefhrten sind die wohl
gelufigsten.
Verwandte Befehle
Es gibt noch einige Befehle, die mit man verwandt sind bzw. die man zumindest
thematisch in diesem Zusammenhang erwhnen muss, weil sie auch in der Pr-
fung in einen gemeinsamen Kontext fallen. Vorrangig sind hier die Kommandos
whatis und apropos zu nennen. Der Grund hierfr ist, dass diese beiden auch auf
die Dateien des Mansystems zugreifen. Der Befehl whatis durchsucht hierfr nur
das Feld Name aller verfgbaren Manpages. Das ist besonders dann praktisch,
wenn man damit rechnen muss, dass es zu einem Element in mehreren Sektionen
Eintrge gibt, z.B. in crontab:
100
GNU- und Unix-Kommandos 103
archangel:/ # whatis crontab
crontab (1) maintain crontab files for individual users
crontab (5) tables for driving cron
crontab (1p) schedule periodic background work
Wenn Sie vergessen sollten, whatis einen Abfragewert als Argument zu berge-
ben, dann fragt das Programm brigens noch einmal nach:
archangel:/ # whatis
whatis what?
Das Programm apropos ist ebenfalls nur ein verkrzter Spezialfall der Manpages.
Im Gegensatz zu whatis durchsucht apropos nicht nur das Feld Name, sondern
auerdem das Feld Description. Deshalb hat man die Mglichkeit, mit apropos
nach einem Programm zu suchen, das eine bestimmte Aufgabe erfllt. Stellen Sie
sich vor, Sie besitzen ein neues Bandlaufwerk, haben aber keine Idee, welche Pro-
gramme ein solches ansteuern knnen. Geben Sie einfach folgendes Kommando
ein:
archangel:~ # apropos tape
mt (1) control magnetic tape drive operation
st (4) SCSI tape device
smbtar (1) shell script for backing up SMB/
CIFS shares directly to Unix tape drives
Immerhin ergab die Abfrage drei Treffer, mit denen sich schon etwas anfangen
lsst. Wenn Sie die hiermit korrespondierenden Manpages gelesen haben und
eventuellen See also-Hinweisen am Ende der jeweiligen Page gefolgt sind, drften
schon allein dadurch viele Fragen zum Thema Streamer geklrt worden sein.
Es folgen nun einige ntzliche Kommandos, die sowohl fr die Praxis als auch fr
die Prfung interessant sind, die aber nicht direkt mit dem Mansystem in Verbin-
dung stehen.
whereis zeigt an, wo sich ein Programm, seine Konfigurationsdatei(en) und die
zugehrige(n) Manpage(s) befinden. Um dies herauszufinden, stellen Sie die
Frage: Wo ist cron?
archangel:~ # whereis cron
cron: /usr/sbin/cron /etc/cron.d /etc/cron.daily /etc/cron.hourly
/etc/cron.monthly /etc/cron.weekly /usr/lib/cron /usr/share/man/man8/
cron.8.gz
which zeigt den vollstndigen Pfad eines Kommandos an. Das ist ntzlich, wenn
Sie mehrere Versionen eines Programms besitzen und wissen mchten, welche
von diesen bei einer Kommandoeingabe ohne Pfadhinweis ausgefhrt wird:
101
Textstrme mit Filtern verarbeiten 103.2
archangel:~ # which less
/usr/bin/less
which zeigt hier an, welches less bei einem Start ohne Pfadangabe ausgefhrt
wrde.
103.2 Textstrme mit Filtern verarbeiten
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, Filter auf Textstrme anzu-
wenden.
Wichtigste Wissensgebiete:
Textdateien und Ausgabestrme durch Textfilter schicken, um die Ausgabe mit
Standard-UNIX-Kommandos aus dem GNU-textutils-Paket zu verndern
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
cat
cut
expand
fmt
head
od
join
nl
paste
pr
sed
sort
split
tail
tr
Prfungstipp
Bei der Prfung wird inzwischen auf das Thema Dokumentation nicht mehr allzu viel
Wert gelegt. Dennoch sollten Sie natrlich mit der Verwendung des Mansystems bes-
tens vertraut sein.
102
GNU- und Unix-Kommandos 103
unexpand
uniq
wc
Allgemeines
Unter Linux stehen Ihnen viele Programme zur Verfgung, mit denen Sie Texte
manipulieren knnen. Diese Programme werden auch zum Teil als Filter bezeich-
net. Auf den nchsten Seiten werden Sie einige dieser ntzlichen Tools kennen-
lernen.
cat
Das Programm cat wird hauptschlich benutzt, um Textdateien auf dem Bild-
schirm auszugeben oder in ein Programm umzuleiten. Ursprnglich steht cat fr
concatenate (verketten), und das Programm war dazu gedacht, mehrere Dateien
zu einer einzigen Datei zusammenzufassen. Sie knnen mit den entsprechenden
Schaltern auch nicht druckbare Zeichen ausgeben. Im nchsten Beispiel wurde
eine Datei mit folgendem Inhalt verwendet:
1 Birnen
2 Aepfel
3 Bananen
4 Erdbeeren
Die Abstnde zwischen den Ziffern und dem Obst sind in Wirklichkeit je zwei
Tabstopps. Mit cat -A knnen diese dargestellt werden, wie die folgende Aus-
gabe demonstriert:
archangel:/textfiles # cat textfile1 -A
1^I^IBirnen$
2^I^IAepfel$
3^I^IBananen$
4^I^IErdbeeren$
tac
Es ist recht offensichtlich, dass tac einfach nur ein umgedrehtes cat ist. Und tac
macht auch genau das, wonach es aussieht, wie die umgekehrte Nummerierung
im folgenden Beispiel erkennen lsst:
archangel:/textfiles # tac textfile1
4 Erdbeeren
3 Bananen
103
Textstrme mit Filtern verarbeiten 103.2
2 Aepfel
1 Birnen
head
Das Kommando head zeigt per Voreinstellung die ersten zehn Zeilen einer Datei
an. Es knnen auch mehrere Dateien angegeben werden. Der Ausgabe jeder ein-
zelnen Datei wird dann der Dateiname vorangestellt:
archangel:/textfiles # head textfile1 textfile2
==> textfile1 <==
1 Birnen
2 Aepfel
3 Bananen
4 Erdbeeren
==> textfile2 <==
hellgruen
rot
gelb
dunkelgruen
Mit der Option -n kann die Anzahl der auszugebenden Zeilen auf einen anderen
Wert als 10 eingestellt werden:
archangel:/textfiles # head -n 1 textfile1
1 Birnen
tail
In der Praxis erheblich wichtiger als head ist das Kommando tail. Tail bedeutet
Ende, Heck oder auch Schwanz. Per Default gibt tail die letzten zehn Zeilen
einer Textdatei aus. Das ist besonders ntzlich, um schnell einen Blick auf das
Ende einer Log-Datei werfen zu knnen. Sowohl in der Praxis als auch in der Pr-
fung besonders beliebt ist die Ausgabe des Syslogs mit tail:
archangel:/ # tail /var/log/messages
Genauso wie bei head knnen Sie mit -n die Anzahl der von tail auszugebenden
Zeilen festlegen. Viel interessanter ist aber, dass tail eine Datei fortlaufend
anzeigen kann, whrend sie von einem anderen Programm beschrieben wird.
Das ist ebenfalls besonders praktisch, um den Syslog (diesmal in Echtzeit) zu beo-
bachten. Sie beenden die Ausgabe dann mit (Strg) + (C). Starten Sie Ihre Beob-
achtung mit:
archangel:/ # tail /var/log/messages -f
104
GNU- und Unix-Kommandos 103
expand/unexpand
Manchmal ist es ntig, Tabstopps in Leerzeichen umzuwandeln. Die Software,
die dieses Buch auf den Druck vorbereitet hat, ignoriert z.B. Tabstopps. Deshalb
mussten alle Beispiele in diesem Buch, die Tabstopps enthielten, konvertiert wer-
den. Diese Arbeit kann das Programm expand durchfhren. Wenn Sie expand eine
Datei als Argument bergeben, fhrt das Programm die Konvertierung nach
stdout durch. Es macht also Sinn, die Ausgabe in eine Datei umzuleiten. Umlei-
tungen werden in Abschnitt 103.4, Strme, Pipes und Umleitungen verwen-
den, noch genauer beleuchtet. Beispiel:
archangel:/textfiles # expand textfile1 > expandedtextfile1
Standardmig geht expand von acht Zeichen fr einen Tabstopp aus. Sie knnen
diesen Wert aber mit der Option -t ndern.
Das Gegenteil von expand bewirkt das Kommando unexpand. Es werden also
Spaces zu Tabstopps zusammengefasst. Auch bei diesem Kommando knnen Sie
bei Bedarf mit dem Schalter -t festlegen, wie viele Zeichen durch einen Tabstopp
ersetzt werden sollen. Der Standardwert ist ebenfalls 8.
fmt
Bei fmt handelt es sich um ein einfaches Textformatierungsprogramm. Es entfernt
automatisch Zeilenumbrche und kann mehrere Texte zu einem einzigen Text
zusammenfassen. Mit dem Parameter -w (width) knnen Sie die Breite des Textes
in Zeichen angeben.
nl
Diese Abkrzung steht fr number lines. Das Programm nummeriert also Zeilen.
Damit die zweite Beispieltextdatei auch eine Nummerierung erhlt, wird folgen-
des Kommando verwendet:
archangel:/textfiles # nl textfile2 > textfile3
archangel:/textfiles # cat textfile3
1 hellgruen
2 rot
3 gelb
4 dunkelgruen
Prfungstipp
Lassen Sie sich in der Prfung nicht zu der Annahme verleiten, compress wre das
Gegenteil von expand. compress ist ein Programm, das vom Verwendungszweck her
gzip hnelt.
105
Textstrme mit Filtern verarbeiten 103.2
Das Kommando nl versteht viele Optionen. Die Kenntnis dieser Optionen ist fr
die Prfung nicht erforderlich.
pr
Mit pr knnen Dateien fr den Druck vorbereitet werden. Das geht mit den heu-
tigen Textverarbeitungsprogrammen zwar erheblich besser, trotzdem sollten Sie
pr fr die Prfung kennen. Der folgende Befehl bereitet die altbekannte Beispiel-
datei fr den Druck vor:
archangel:/textfiles # pr -h Obstliste textfile1 > prfile
Auch hier war eine Umlenkung notwendig, weil pr sonst nach stdout schreibt.
Das Ergebnis des vorangegangenen Kommandos sehen Sie hier:
2007-11-22 18:36 Obstliste Page 1
1 Birnen
2 Aepfel
3 Bananen
4 Erdbeeren
wc
Das Programm wc (word count) zhlt die Anzahl der Zeilen, Wrter und Bytes in
einer Datei. In der Standardeinstellung zhlt wc alle drei Werte in der oben ange-
gebenen Reihenfolge. Sie knnen auch hier mehrere Dateien angeben oder Wild-
cards verwenden. Es werden dann alle Dateien einzeln bearbeitet, und zum
Schluss wird die Summe gebildet. Beispiel:
archangel:/textfiles # wc *
4 8 44 textfile1
4 4 31 textfile2
4 8 59 textfile3
12 20 134 total
Innerhalb eines Skripts ist es oft ntig, nur einen einzigen dieser Werte fr eine Datei
zu erhalten. Sie knnen dann als Option angeben, welchen Wert Sie bentigen:
-c zeigt nur die Anzahl der Bytes an.
-l zeigt nur die Anzahl der Zeilen (lines) an.
Prfungstipp
In der Prfung wird gern als Antwort fr diese Aufgabe das Programm ln genannt. Das
ist die falsche Antwort. Mit ln werden Links auf Dateien und Verzeichnisse erstellt.
106
GNU- und Unix-Kommandos 103
-w zeigt nur die Anzahl der Wrter an.
-m zeigt nur die Anzahl der Zeichen an.
hexdump
Auch wenn der Name etwas anderes aussagt: Mit hexdump knnen Dateien hexa-
dezimal, dezimal, im ASCII-Format oder als Oktaldump dargestellt werden. Das
Programm kann im Gegensatz zu einem normalen Editor auch ohne Probleme
Binrdateien einlesen. Eigentlich eignet sich mehr oder weniger alles zur Ein-
gabe. Mit dem folgenden Beispiel wird die Partitionstabelle eines Computers
angezeigt:
archangel:/boot # hexdump /dev/hda | head -n 32 | tail -n 5
00001b0 0000 0000 0000 0000 133b b839 0000 0180
00001c0 0001 fe83 063f 003f 0000 b708 0001 0000
00001d0 0701 fe83 ffff b747 0001 d8da 024a fe00
00001e0 ffff fe82 ffff 9021 024c 0ade 0017 fe00
00001f0 ffff fe83 ffff 9aff 0263 49c2 06ed aa55
Hier liest hexdump direkt von der Festplatte. Es wird mit dem Sektor 0 begonnen.
Das head-Kommando sorgt dafr, dass nur die ersten 32 Zeilen gelesen werden.
Jede Zeile enthlt 16 Byte. Es werden also 512 Byte eingelesen, was der Gre
des Master Boot Record (MBR) genau entspricht. Zum Schluss wird mit tail
dafr gesorgt, dass nur die letzten fnf Zeilen des MBR ausgegeben werden.
Darin ist die Partitionstabelle (im Beispiel fett gedruckt) enthalten.
od
Das Kommando od (octal dump) hnelt vom Verwendungszweck her dem
hexdump. Es hat allerdings einen kleineren Funktionsumfang und verwendet per
Voreinstellung das Oktalformat. Mit der Option -x kann die Ausgabe auf hexade-
zimal umgestellt werden.
sort
Mit sort knnen die Zeilen von Textdateien sortiert werden. Es ist aber genauso
gut mglich, andere Eingabequellen zu verwenden. Damit Sie eine sauber sor-
tierte Ausgabe des mount-Kommandos erhalten, knnen Sie folgenden Befehl ver-
wenden:
archangel:~ # mount | sort
/dev/fd0 on /media/floppy type subfs (rw,nodev,sync,procuid)
/dev/hda1 on /boot type ext2 (rw,acl,user_xattr)
107
Textstrme mit Filtern verarbeiten 103.2
/dev/hda2 on / type ext3 (rw,acl,user_xattr)
/dev/hda4 on /storage type reiserfs (rw)
/dev/sda1 on /media/512MB type subfs (rw, nodev,sync, procuid)
/dev/sdb1 on /media/WD_Passport type ext3 (rw)
... weitere Zeilen wurden abgeschnitten ...
Wichtige Optionen fr sort sind:
-n sortiert nach numerischen Kriterien.
-o sorgt fr die Ausgabe in einer Datei (outfile). Normalerweise gibt sort das
Ergebnis an stdout aus.
-r gibt das Ergebnis in umgekehrter Reihenfolge (reverse) aus.
Im folgenden Beispiel wird die Datei textfile1 eingelesen und in numerisch umge-
kehrter Reihenfolge in die Datei reversefile geschrieben:
archangel:/textfiles # sort textfile1 -n -r -o reversefile
uniq
Wenn Sie eine Datei, die sich wiederholende Zeilen enthlt, krzen wollen (z.B.
eine Log-Datei), dann knnen Sie das Kommando uniq verwenden. Die Voraus-
setzung ist allerdings, dass diese Zeilen aufeinander folgen. Sollte es notwendig
sein, auch die Duplikate zu entfernen, die nicht hintereinander liegen, schalten
Sie einfach das Kommando sort vor.
split
Um groe Dateien in mehrere kleinere Dateien zu unterteilen, knnen Sie das
Programm split verwenden. Als Disketten noch ein gngiges Speichermedium
waren, war diese Vorgehensweise blich, um groe Dateien auf mehrere Disket-
ten zu verteilen. Auch die bermittlung groer Datenmengen per Mail war zu
Zeiten geringer Bandbreiten im Internet ein Grund, Dateien zu teilen. Eigentlich
arbeitet split per Voreinstellung zeilenorientiert. Wenn keine entsprechenden
Optionen vergeben werden, teilt split eine Datei in kleinere Dateien zu je 1.000
Zeilen. Der Sachverhalt wird im Beispiel deutlich:
Die folgende Datei ist 101 MB gro und soll per Mail versendet werden. Leider lsst
der Internetprovider des Empfngers keine Mails zu, die grer als 12 MB sind:
-rwxr--r-- 1 root root 101M Nov 24 14:09 grosses-paket
Um eine noch kleinere Toleranz zu gewhrleisten, wird die Datei mit dem folgen-
den Kommando in nur 11 MB groe Stcke geteilt:
108
GNU- und Unix-Kommandos 103
archangel:/files # split -b 11m grosses-paket grosses-paket_
Die Option -b sorgt dafr, dass split nicht in Zeilen rechnet, sondern in Byte.
Mit 11m wird die Gre der Teilpakete dann auf 11 MB festgelegt. Das letzte
Argument grosses-paket_ gibt das Prfix fr die entstehenden Pakete an. Die
Ausgabe des folgenden Kommandos spricht fr sich selbst:
archangel:/files # ls -lha
total 203M
drwxr-xr-x 2 root root 4.0K Nov 24 14:15 .
drwxr-xr-x 25 root root 4.0K Nov 24 14:08 ..
-rwxr--r-- 1 root root 101M Nov 24 14:09 grosses-paket
-rw-r--r-- 1 root root 11M Nov 24 14:15 grosses-paket_aa
-rw-r--r-- 1 root root 11M Nov 24 14:15 grosses-paket_ab
... einige Zeilen wurden herausgeschnitten ...
-rw-r--r-- 1 root root 11M Nov 24 14:15 grosses-paket_ai
-rw-r--r-- 1 root root 2.0M Nov 24 14:15 grosses-paket_aj
Damit der Empfnger die Dateifragmente wieder zusammensetzen kann, muss er
lediglich das Programm cat in seinem eigentlichen Sinn (concatenate) verwen-
den:
archangel:/files # cat grosses-paket_a* >grosses-paket
Dieses Verfahren mit einfachen Bordmitteln funktioniert brigens hervorragend.
cut, paste und join
Die drei Programme cut, paste und join werden oft miteinander kombiniert
oder nacheinander angewendet. Fr die Beispiele kommen die folgenden beiden
Dateien zum Einsatz:
archangel:/textfiles # cat textfile1
1:Birnen
2:Aepfel
3:Bananen
4:Erdbeeren
und
archangel:/textfiles # cat textfile2
1:hellgruen
2:dunkelgruen
3:gelb
4:rot
109
Textstrme mit Filtern verarbeiten 103.2
cut
Das Kommando cut (schneiden) kann Spalten einer Datei ausschneiden. Das
bedeutet aber nicht, dass diese Spalten hinterher nicht mehr vorhanden sind. Im
Gegenteil: Das Programm gibt die ausgeschnittenen Spalten nach stdout aus. Um
die Spalten voneinander zu unterscheiden, muss cut wissen, welches Zeichen als
Trenner (Delimiter) zwischen den Spalten verwendet wird. Dieses Zeichen ist in
den aufgefhrten Beispielen ein Doppelpunkt. Die folgende Befehlszeile schnei-
det die zweite Spalte (-f2 steht fr field 2) aus der Datei textfile1 aus. Als Delimi-
ter wird ein Doppelpunkt verwendet (-d:):
archangel:/textfiles # cut -d: -f2 textfile1
Birnen
Aepfel
Bananen
Erdbeeren
Normalerweise wrde man die Ausgabe des Befehls mit einem Redirektor in eine
Datei umleiten. Es lohnt sich aber whrend der Konstruktion einer Befehlszeile
immer, das Ergebnis vorlufig auf den Bildschirm zu geben.
paste
Mit paste knnen Sie zwei oder mehr Dateien zusammenfhren. Im Gegensatz
zur Arbeitsweise von cat werden die Dateien aber, vereinfacht ausgedrckt,
nicht untereinander, sondern nebeneinander zusammengefgt. So knnen korre-
spondierende Zeilen von textbasierten Datenbanken miteinander verknpft wer-
den. Beispiel:
archangel:/textfiles # paste textfile1 textfile2
1:Birnen 1:hellgruen
2:Aepfel 2:dunkelgruen
3:Bananen 3:gelb
4:Erdbeeren 4:rot
Etwas unschn an dieser Ausgabe ist die doppelte Verwendung der Nummerie-
rung. Aber auch fr dieses Problem stehen Ihnen viele Bordmittel zur Verfgung,
wie die folgenden Abschnitte zeigen.
join
Das Programm join kann ebenfalls Textdateien miteinander verknpfen. Im
Gegensatz zu cut verwendet join die Option -t fr den Delimiter. Mit der
Option -j wird praktisch der gemeinsame Nenner festgelegt, mit dem die
Dateien verknpft werden. Im hier beispielhaft dargestellten Fall ist dies die
Nummerierung im ersten Feld beider Dateien:
110
GNU- und Unix-Kommandos 103
archangel:/textfiles # join -t : -j 1 textfile1 textfile2
1:Birnen:hellgruen
2:Aepfel:dunkelgruen
3:Bananen:gelb
4:Erdbeeren:rot
tr
Wenn einzelne Zeichen einer Textdatei durch andere ersetzt oder ganz gelscht
werden sollen, kommt das Programm tr (translate) zum Einsatz. Es bietet keine
Mglichkeit, Dateinamen als Argumente zu bergeben, weshalb eine bergabe der
Datei(en) mittels cat, gefolgt von einem Redirektor, blich ist. Komplexere nde-
rungen sollten Sie aber dem Stream-Editor sed berlassen. Da sed noch an anderer
Stelle detailliert behandelt wird, soll er hier nicht weiter thematisiert werden. Im
folgenden Beispiel wird in einer Datei der Buchstabe n durch den Buchstaben x
ersetzt. Natrlich ist das vllig sinnlos, zeigt aber sehr deutlich, wie tr arbeitet.
archangel:/textfiles # cat textfile1 | tr n x
1:Birxex
2:Aepfel
3:Baxaxex
4:Erdbeerex
Wichtige Optionen fr tr sind:
-d bzw. --delete lscht das angegebene Zeichen.
-c bzw. --complement kehrt die Ausgabe ins Gegenteil.
-s bzw. --squeeze-repeats unterdrckt sich wiederholende Zeichen.
Ein beliebtes Beispiel fr die Verwendung von tr ist auch die bersetzung aller
Zeichen von a bis z in Grobuchstaben:
archangel:/textfiles # cat textfile1 | tr a-z A-Z
1:BIRNEN
2:AEPFEL
3:BANANEN
4:ERDBEEREN
Dasselbe Ergebnis knnen Sie aber auch mit folgendem Kommando erreichen:
archangel:/textfiles # cat textfile1 | tr [:lower:] [:upper:]
Diese Form der Argumente erlaubt eine Menge interessanter Konstellationen:
[:alnum:] steht fr alle Buchstaben und Ziffern.
[:alpha:] reprsentiert alle Buchstaben.
111
Grundlegende Dateiverwaltung 103.3
[:blank:] steht fr Spaces und Tabstopps.
[:cntrl:] symbolisiert alle Steuerzeichen.
[:graph:] steht fr alle druckbaren Zeichen (ohne Space).
[:upper:] vertritt Grobuchstaben.
[:lower:] vertritt Kleinbuchstaben.
[:print:] bedeutet druckbare Zeichen (inklusive Space).
[:punct:] reprsentiert alle Satzzeichen.
[:space:] steht fr alle White-Spaces (Space, Tabstopps).
Wenn Sie einzelne Steuerzeichen ersetzen wollen, muss ein Backslash vorange-
stellt werden. Das gilt insbesondere, wenn Sie den Backslash selbst ersetzen oder
entfernen mssen.
\NNN bezeichnet ein ASCII-Zeichen in Oktalschreibweise.
\\ schtzt den Backslash bei der Ersetzung vor der Interpretation durch die
Shell. Ohne diesen Schutz geht die Bash sonst davon aus, dass dieses Kom-
mando in der nchsten Zeile fortgesetzt wird.
\a ist der audible BEL und gibt einen Piepton aus.
\b ist der Platzhalter fr backspace.
\f bezeichnet das form feed-Zeichen.
\n steht fr new line.
\r bezeichnet ein return-Zeichen.
\t ist ein horizontal tab.
\v bezeichnet den vertical tab.
Die folgende Befehlszeile entfernt mit der Bezeichnung skript-laut alle akusti-
schen Signale aus dem Skript und erstellt aus dem Ergebnis das skript-leise:
archangel:/scriptdemo # cat skript-laut | tr -d \a >skript-leise
103.3 Grundlegende Dateiverwaltung
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, die grundlegenden Linux-
Kommandos zur Verwaltung von Dateien und Verzeichnissen zu verwenden.
Wichtigste Wissensgebiete:
einzelne Dateien und Verzeichnisse kopieren, verschieben und entfernen
mehrere Dateien kopieren und Verzeichnisse rekursiv kopieren
112
GNU- und Unix-Kommandos 103
Dateien entfernen und Verzeichnisse rekursiv entfernen
einfache und fortgeschrittene Dateinamen-Suchmuster in Kommandos ver-
wenden
find verwenden, um Dateien auf der Basis ihres Typs, ihrer Gre oder ihrer
Zeiten zu finden und zu bearbeiten
tar, cpio und dd verwenden
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
cp
find
mkdir
mv
ls
rm
rmdir
touch
tar
cpio
dd
file
gzip
gunzip
bzip2
Dateisuchmuster
Allgemeines
In den folgenden Abschnitten geht es um die Grundlagen der Dateiverwaltung.
Sie mssen fr die Prfung die grundlegenden Befehle des Dateimanagements
und deren Optionen kennen. Auerdem mssen Sie in der Lage sein, Wildcards
mit diesen Kommandos zu verwenden.
Kommandos fr Dateioperationen
ls
Das Kommando ls listet den Inhalt von Verzeichnissen auf. Die Ausgabe erfolgt
per Voreinstellung in alphabetischer Reihenfolge. In der Prfung sollten Sie
zumindest mit den folgenden Optionen vertraut sein:
113
Grundlegende Dateiverwaltung 103.3
-l gibt an, dass das Listingformat verwendet wird. Dieses beinhaltet u.a. die
Zugriffsberechtigungen auf Dateien und Verzeichnisse sowie Timestamps.
-i zeigt die von Dateien und Verzeichnissen verwendeten Inodes an.
-a listet alle Dateien, auch solche, die mit einem Punkt beginnen.
-s zeigt in Kombination mit -l die Gre jeder Datei in Blocks an.
-h zeigt die Dateigre in einem menschenlesbaren Format an (21 KB, 24 MB,
3 GB usw.), setzt aber die Option -l voraus.
Aufgrund der Einfachheit des Programms verzichte ich hier auf umfangreiche
Beispiele.
cd und pwd
Um das aktuelle Verzeichnis zu wechseln, verwenden Sie das Kommando cd. Bei
cd handelt es sich um ein shell-internes Kommando. Sie knnen sowohl absolute
als auch relative Pfade mit diesem Befehl verwenden. Wenn Sie keinen Prompt
eingestellt haben, der Ihnen das aktuelle Verzeichnis anzeigt, knnen Sie das
Kommando pwd verwenden. Als Ergebnis wird Ihnen das aktuelle Verzeichnis
angezeigt.
Die Tilde
Die Tilde (~) zeigt an, dass Sie sich gerade in Ihrem Heimatverzeichnis befinden.
Sie knnen die Tilde auch in Pfadangaben verwenden. So wrde das im folgen-
den Beispiel dargestellte Kommando die dateiXY in Ihrem Heimatverzeichnis
lschen. Hierbei spielt es keine Rolle, in welchem Verzeichnis Sie sich gerade
selbst befinden:
archangel:/ # rm ~/dateiXY
Wenn Sie in Ihr Heimatverzeichnis wechseln wollen, knnen Sie ebenfalls die
Tilde verwenden. Die Eingabe von cd ohne Optionen und Argumente fhrt aber
zu demselben Ergebnis:
harald@archangel:/> cd
harald@archangel:~>
Die Tilde in der zweiten Zeile zeigt, dass der Wechsel in das Heimatverzeichnis
des Benutzers durchgefhrt wurde.
Absolute Pfadangaben
Ein Verzeichniswechsel mit einer absoluten Pfadangabe beginnt immer mit
einem Slash. Absoluter Pfad bedeutet, dass Sie den ganzen Pfad vom Hauptver-
114
GNU- und Unix-Kommandos 103
zeichnis aus angeben, egal, in welchem Verzeichnis Sie sich selbst gerade befin-
den. Beispiel:
archangel:/textfiles # cd /var/log
archangel:/var/log #
Sie mssen also bei einem Verzeichniswechsel mit einer absoluten Pfadangabe
Ihre eigene Position nie bercksichtigen.
Relative Pfadangaben
Bei einem Verzeichniswechsel mit relativer Pfadangabe bewegen Sie sich relativ
zum aktuellen Verzeichnis fort. Eine relative Pfadangabe beginnt deshalb nie mit
einem Slash. Beispiel:
archangel:/var # cd log
archangel:/var/log #
Es wurde hier relativ zum /var-Verzeichnis in das /var/log-Verzeichnis gewech-
selt.
Punkte
Zwei aufeinanderfolgende Punkte reprsentieren das bergeordnete Verzeichnis.
Sie knnen also ohne Weiteres durch die Eingabe von cd .. in das bergeordnete
Verzeichnis wechseln. Beachten Sie, dass zwischen dem Befehl und den beiden
Punkten ein Leerzeichen stehen muss. Das ist bei anderen Betriebssystemen teil-
weise different. Ein einzelner Punkt reprsentiert das aktuelle Verzeichnis. Die
Eingabe von cd . fhrt also zu keinem Ergebnis.
Beispiele fr cd:
cd wechselt in das Heimatverzeichnis.
cd / wechselt in das Hauptverzeichnis.
cd .. wechselt eine Verzeichnisebene hher.
cd ../.. wechselt zwei Verzeichnisebenen hher.
cd ../dateien wechselt zuerst eine Verzeichnisebene hher und dann dazu
relativ ins Verzeichnis dateien.
Prfungstipp
Sie mssen in der Prfung zwischen absoluten und relativen Pfadangaben unterschei-
den knnen. Auerdem mssen Sie auf exotische Argumente fr das cd-Kommando
gefasst sein.
115
Grundlegende Dateiverwaltung 103.3
cp
Mit dem Kommando cp knnen Sie Dateien und Verzeichnisse kopieren. Sie ms-
sen bei der Verwendung von cp immer sowohl eine Quelle als auch ein Ziel ange-
ben. Das gilt auch, wenn Sie sich gerade im Zielverzeichnis fr die Dateien befin-
den sollten. Letztes Argument muss hierbei immer das Ziel sein. Dafr knnen Sie
aber mit einem einzigen Kommando mehrere Dateien kopieren (abgesehen von
der Verwendung von Wildcards, siehe Abschnitt Verwendung von Wildcards).
Diese Mehrfachauswahl ist gleichzeitig der Grund, weshalb ein Ziel angegeben
werden muss. Die Shell knnte sonst bei der Interpretation des letzten Argumen-
tes nicht wissen, ob es sich um eine Quelldatei oder um eine Zieldatei handelt.
Folgende Punkte mssen bei der Verwendung von cp bercksichtigt werden:
Sowohl die Quelle als auch das Ziel knnen wahlweise relativ oder absolut
angegeben werden.
Bei dem angegebenen Ziel kann es sich wahlweise sowohl um eine Datei als
auch um ein Verzeichnis handeln.
Wenn mehrere Quelldateien angegeben wurden, geht die Shell davon aus,
dass es sich bei dem angegebenen Ziel um ein Verzeichnis handeln muss.
Wenn es sich beim Kopieren einer einzigen Datei bei dem Ziel ebenfalls um
eine Datei handelt und diese bereits existiert, wird die Zieldatei berschrie-
ben. Sie knnen das automatische berschreiben von Dateien mit der Option
-i verhindern.
Wenn es sich beim Kopieren einer einzigen Datei bei dem Ziel um ein Ver-
zeichnis handelt, dann wird die Datei in dieses Verzeichnis kopiert. Eventuell
existierende Dateien gleichen Namens werden berschrieben.
Hufig verwendete Optionen von cp sind:
-i bzw. --interactive fragt vor dem berschreiben eventuell existierender
Dateien im Zielverzeichnis, ob diese Dateien wirklich berschrieben werden
sollen.
-f bzw. --force erzwingt den Schreibvorgang im Zielverzeichnis.
-p bzw. --preserve kopiert die Datei(en) unter Beibehaltung des Eigentmers,
der Eigentmergruppe, der Berechtigungen und der Timestamps.
-R, -r bzw. --recursive kopiert ein Verzeichnis inklusive aller Unterverzeich-
nisse und Dateien.
In dem folgenden Beispiel werden die beiden Dateien /var/log/messages und
/var/log/apache2/access_log in das aktuelle Verzeichnis kopiert. Dieses wird durch
den einzelnen Punkt am Ende der Befehlszeile reprsentiert:
archangel:~ # cp /var/log/messages /var/log/apache2/access_log
116
GNU- und Unix-Kommandos 103
Beispiele mit alltglichen Kopieraktionen mchte ich Ihnen an dieser Stelle erspa-
ren. Sie sollten in der Prfung darauf vorbereitet sein, Befehlszeilen wie die
soeben dargestellte, inklusive der unmittelbar davor aufgefhrten Optionen,
lesen und verstehen zu knnen.
mv
Wenn Sie Dateien oder Verzeichnisse verschieben wollen, verwenden Sie das
Kommando mv. Genauso wie cp bentigt mv eine Quellangabe und eine Zielan-
gabe. Wenn das Ziel sich auf derselben Partition befindet wie die Quelle, werden
die Verzeichnisse und Dateien nicht tatschlich verschoben. Es werden lediglich
die Eintrge in den jeweiligen Verzeichnissen gendert, um der Verschiebung
Rechnung zu tragen. Wenn Dateien auf eine andere Partition verschoben werden,
dann werden diese Dateien zunchst auf die andere Partition kopiert und die
ursprnglichen Dateien hinterher gelscht. Deshalb dauert das Verschieben von
Daten ber Partitionsgrenzen hinweg auch erheblich lnger als Verschiebungen
innerhalb einer Partition.
Hufig verwendete Optionen von mv sind:
-u bzw. --update erstellt eine Datei nur dann, wenn die bereits existierende
Datei lter ist als die zu verschiebende Datei oder wenn die Zieldatei noch
nicht existiert.
-i bzw. --interactive fragt nach, ob bereits existierende Dateien wirklich
berschrieben werden sollen. Per Voreinstellung wird nicht nachgefragt.
-f bzw. --force erzwingt den Schreibvorgang im Zielverzeichnis.
mkdir
Um ein neues Verzeichnis zu erstellen, verwenden Sie das Kommando mkdir. Die
zu erstellenden Verzeichnisse knnen relativ zum aktuellen Verzeichnis oder als
absoluter Pfad angegeben werden. Hufig verwendete Optionen fr mkdir sind:
-p bzw. --parents erstellt gegebenenfalls bergeordnete Verzeichnisse, wenn
diese noch nicht existieren. Mit dieser Option kann eine ganze Verzeichnis-
hierarchie mit nur einem Kommando erstellt werden.
-m bzw. --mode stellt die Berechtigungen fr das neue Verzeichnis whrend
der Erstellung ein.
Mit dem folgenden Kommando erstellt der aktuell angemeldete Benutzer ein Ver-
zeichnis, das nur er selbst exklusiv verwenden kann. Voraussetzung fr die Aus-
fhrung des Kommandos sind natrlich Schreibrechte im Zielverzeichnis.
archangel:/textfiles # mkdir -m 700 Gedichte
117
Grundlegende Dateiverwaltung 103.3
Die automatische Erstellung einer Verzeichnishierarchie knnte z.B. so aussehen
wie in der folgenden Befehlszeile:
archangel:/ # mkdir --parents /arbeitsgruppe/dokumente/tabellen
rm
Mit dem Kommando rm knnen Sie Dateien und (mit den entsprechenden Opti-
onen) Verzeichnisse lschen. Sie bentigen in dem Verzeichnis, in dem Sie die
Dateien lschen wollen, Schreibrechte, aber Sie bentigen keine Schreibrechte
auf die Dateien selbst. Hufig verwendete Optionen von rm sind:
-R, -r bzw. --recursive lscht, auf ein Verzeichnis angewendet, auch dessen
Unterverzeichnisse und alle Dateien.
-i bzw. --interactive fragt bei jeder Datei noch einmal nach, ob sie wirklich
gelscht werden soll (hnlich wie bei Windows).
-f bzw. --force erzwingt das Lschen. Fehlermeldungen, die durch nicht vor-
handene Dateien verursacht werden, werden unterdrckt.
rmdir
Das Kommando rmdir entfernt leere Verzeichnisse. Verzeichnisse, die noch
Dateien enthalten, knnen auch mit zustzlichen Optionen nicht gelscht wer-
den. Sie knnen die Option -p verwenden, damit bergeordnete Verzeichnisse
automatisch mit gelscht werden, wenn diese durch die Lschung des eigentli-
chen Verzeichnisses leer werden.
touch
Eigentlich wird das Kommando touch verwendet, um die Timestamps einer Datei
zu ndern. Sie knnen touch aber auch verwenden, um neue Dateien mit einer
Gre von 0 Byte zu erstellen. Gngige Optionen von touch sind:
-t setzt den Timestamp auf den Wert [[CC]YY]MMDDhhmm[.ss].
-a ndert nur die letzte Zugriffszeit.
-m ndert nur die letzte nderungszeit.
find
Das Programm find sucht nach Dateien in einer Verzeichnisstruktur. Um die
Datei textfile1 zu finden, geben Sie folgendes Kommando ein:
Prfungstipp
Rekursive Befehlsausfhrung ist ein beliebtes Prfungsthema. Die Auswirkungen des
Kommandos rm -R mssen Ihnen also klar sein.
118
GNU- und Unix-Kommandos 103
archangel:/ # find / -name textfile1
Der Slash direkt hinter dem eigentlichen Kommando weist find an, die Suche im
Hauptverzeichnis zu beginnen. Die Option -name besagt, dass das Suchkriterium
der Dateiname ist. Der Suchausdruck ist textfile1.
Die Thematik Auffinden von Dateien wird in einem spteren Kapitel noch sehr
ausfhrlich beschrieben werden. Deshalb soll es hier zunchst bei dieser kurzen
Erklrung bleiben.
Verwendung von Wildcards
Wildcards sind im Englischen die Joker eines Kartenspiels. Bei Linux werden
Wildcards verwendet, um Operationen an mehreren Dateien gleichzeitig auszu-
fhren, damit ein Kommando nicht fr jede Datei einzeln eingegeben werden
muss. Bei Suchoperationen dienen Wildcards auch dazu, Dateien zu spezifizieren,
wenn deren Name nicht genau bekannt ist. Die Wildcards werden durch die Shell
interpretiert und nicht durch das jeweilige Kommando. Das bietet vor allem den
Vorteil, dass die Verwendung der Wildcards bei allen untersttzten Programmen
gleich abluft.
Gngige Wildcards fr Dateien sind:
* ersetzt null oder mehr Zeichen. Datei* beinhaltet demnach Datei1,
Datei255, Datei-A usw. Im Gegensatz zur Ausgabe bei DOS-Wildcards ist auch
Datei enthalten.
? ersetzt genau ein Zeichen. Datei? beinhaltet Datei1, DateiX usw., aber nicht
Datei.
[a-z] ersetzt ein einzelnes Zeichen aus dem angegebenen Bereich. Die Suche
nach Datei[a-d] beinhaltet also genau Dateia, Dateib, Dateic und Dateid. Das-
selbe Verfahren ist auch mit Grobuchstaben oder Ziffern durchfhrbar.
[abcde] ersetzt ein einzelnes der angegebenen Zeichen. Den Unterschied zu
[a-z] verdeutlicht dieses Beispiel: Datei[amz] liefert die Dateien Dateia,
Dateim und Dateiz.
[!a-z] ersetzt ein einzelnes Zeichen, das nicht angegeben ist.
Prfungstipp
Beachten Sie, dass sich die Wildcards * und ? in der Interpretation von den entspre-
chenden DOS-Platzhaltern unterscheiden. Verwechseln Sie die Verwendungsmethoden
nicht in der Prfung!
119
Grundlegende Dateiverwaltung 103.3
Beispiele fr die Verwendung von Wildcards sind folgende:
archangel:~ # find / -name "*.log"
Damit erfolgt das Durchsuchen des Systems nach Log-Dateien.
archangel:~ # find / -name "samba*.rpm"
Diese Wildcard bewirkt die Suche nach RPM-Paketen, die mit Samba in Zusam-
menhang stehen.
tar (Tape Archiver)
Das Archivierungsprogramm tar wurde eigentlich entwickelt, um Dateien zu
einem Archiv zusammenzufassen und dieses Archiv dann auf ein Bandlaufwerk
zu sichern. Sie sollten sich merken, dass man bei der bergabe von Optionen an
tar einen Strich verwenden kann, aber nicht muss. In Bezug auf das erste Beispiel
bedeutet das, dass die folgenden Kommandos beide zulssig sind und dasselbe
Ergebnis zur Folge haben:
archangel:/usr/src # tar -xvzf xmbmon205.tar.gz
archangel:/usr/src # tar xvzf xmbmon205.tar.gz
Sie knnen also bei sogenannten Fill-in-the-blanks-Prfungsaufgaben beide
Schreibweisen verwenden. Wichtige Optionen sind:
-x (extract) extrahiert ein Archiv.
-z (gzip/gunzip) sorgt fr eine Komprimierung mittels gzip bzw. eine Entkom-
primierung durch gunzip.
-v (verbose) schaltet den Verbose-Mode ein.
-c (create) erstellt ein neues Archiv.
-t (table) listet den Inhalt eines Archivs auf.
-j (bzip2/bunzip2) sorgt fr eine Komprimierung mittels bzip2 bzw. eine Ent-
komprimierung durch bunzip2.
-f (file) zeigt an, dass zur Eingabe bzw. Ausgabe eine Datei verwendet wird.
Standardmig arbeitet tar mit dem Bandlaufwerk /dev/rmt0.
Sie sollten fr die Prfung wenigstens die oben genannten Optionen kennen. Die
Reihenfolge der Optionen spielt, wie bei den meisten Programmen, keine Rolle.
Eine Ausnahme ist die Option f. Diese muss immer als Letzte verwendet werden.
Das folgende Beispiel erzeugt ein mit bzip2 komprimiertes Archiv der Konfigura-
tionsdateien eines Linux-Systems:
archangel:/ # tar -cvjf backup.tar.bz2 /etc/*
120
GNU- und Unix-Kommandos 103
Um den Inhalt eines solchen Archivs zu betrachten, bentigen Sie folgendes
Kommando:
archangel:/ # tar -tvjf backup.tar.bz2 | less
Im Notfall knnen die Dateien ohne Probleme wiederhergestellt werden:
archangel:/ # tar -xvjf backup.tar.bz2
gzip
Wenn Sie Dateien komprimieren wollen, dann knnen Sie das Programm gzip
verwenden. Wie Sie im vorangegangenen Abschnitt gelesen haben, kann tar
gzip aufrufen. Wenn Sie mehrere Dateien zu einem Archiv zusammenfassen wol-
len, ist tar in Kombination mit den Optionen z oder j die bessere Lsung. Wenn
gzip ohne Optionen verwendet wird, komprimiert er die angegebenen Dateien,
hngt an die Zieldateien die Erweiterung .gz an und lscht anschlieend die Ori-
ginaldateien. Sollen die Originaldateien erhalten bleiben, mssen Sie die Option
-c verwenden. Damit man die Effizienz von gzip sehen kann, wird diese Option
im folgenden Beispiel angewendet:
archangel:/demo # gzip lpi101.doc -c > lpi101.doc.gz
archangel:/demo # ls -lh
total 1.2M
drwxr-xr-x 2 root root 4.0K Nov 16 17:50 .
drwxr-xr-x 24 root root 4.0K Nov 16 17:45 ..
-rwxr--r-- 1 root root 903K Nov 16 17:46 lpi101.doc
-rw-r--r-- 1 root root 237K Nov 16 17:50 lpi101.doc.gz
Die Datei ist von 903 KB auf 237 KB komprimiert worden. Der Redirektor > war
in diesem Fall notwendig, weil die Ausgabe von gzip auf dem Bildschirm erfolgt,
wenn die Option -c verwendet wird.
Um eine Datei zu komprimieren, ohne das Original beizubehalten, geben Sie die
Datei einfach ohne weitere Parameter an:
archangel:/demo # gzip lpi101.doc
Sie knnen auch mehrere Dateien durch Leerstellen voneinander getrennt ange-
ben oder Platzhalter (Wildcards) verwenden.
Den Inhalt eines mit gzip komprimierten Archivs knnen Sie mit dem Schalter -l
auflisten. Es wird Ihnen dann auch die komprimierte Gre der Einzeldateien
angezeigt, falls das Archiv mehrere Dateien enthlt:
archangel:/demo # gzip -l lpi101.doc
compressed uncompressed ratio uncompressed_name
31 0 0.0 % lpi101.doc
121
Grundlegende Dateiverwaltung 103.3
gunzip
Um eine oder mehrere Dateien, die mit gzip komprimiert wurden, wieder zu
entkomprimieren, stehen Ihnen mehrere Mglichkeiten zur Verfgung:
gunzip ist das offizielle Gegenstck zu gzip. Auf der Kommandozeile angege-
bene Dateien werden von gunzip dekomprimiert.
gzip -d startet gzip im Modus decompress.
zcat verhlt sich ohne Optionen wie gunzip -c.
bzip2
Sie knnen zum Komprimieren von Dateien auch bzip2 verwenden. In vielen
Fllen erreichen Sie hierdurch eine hhere Kompression als mit gzip.
archangel:/demo # bzip2 lpi101.doc -c > lpi101.doc.bz2
archangel:/demo # ls -lh
total 1.2M
drwxr-xr-x 2 root root 4.0K Nov 16 18:00 .
drwxr-xr-x 24 root root 4.0K Nov 16 17:45 ..
-rwxr--r-- 1 root root 903K Nov 16 17:46 lpi101.doc
-rw-r--r-- 1 root root 213K Nov 16 18:00 lpi101.doc.bz2
Die Datei ist von 903 KB auf 213 KB komprimiert worden. Die Effizienz war also
zumindest in diesem Fall etwas besser als bei der Verwendung von gzip.
bunzip2
Genauso wie bei gzip gibt es auch zur Entkomprimierung von bz2-Dateien fol-
gende Mglichkeiten:
bunzip2
bzip2 -d
bzcat
Tatschlich handelt es sich in allen drei Fllen um dasselbe Programm, das ledig-
lich jeweils ber unterschiedliche Links aufgerufen wird.
Verwendung von cpio
Das Programm cpio wird verwendet, um Dateien in Archive hinein- oder aus
Archiven herauszukopieren. Es hnelt vom Verwendungszweck also im weitesten
Sinne dem tar-Befehl. Eigentlich wird cpio heutzutage kaum noch verwendet,
aber Sie mssen die grundlegendsten Optionen fr die Prfung kennen. Es gibt
drei verschiedene Betriebsmodi, in denen cpio arbeitet. Welcher Modus verwen-
det wird, hngt von der ersten bergebenen Option ab. Die Benennung dieser
122
GNU- und Unix-Kommandos 103
drei Schalter scheint auf den ersten Blick recht paradox. Merken Sie sich bitte
trotzdem mindestens diese Optionen:
cpio i | --ectract aktiviert den Copy-in-Modus. In diesem Modus werden
Dateien aus einem Archiv in das Dateisystem kopiert. Sie mssen also das i
aus Sicht des Dateisystems sehen und nicht aus Sicht des Archivs.
cpio o | --create steht fr das Gegenteil von i und wird als Copy-out-
Modus bezeichnet. Es werden also diesmal Dateien aus (out) dem Dateisystem
in das Archiv kopiert bzw. zunchst ein Archiv erstellt (create).
cpio p | --pass-through in diesem Modus wird weder ein Archiv erstellt
noch berhaupt ein Archiv verwendet. Das Programm cpio liest die zu kopie-
renden Dateien vom Standardeingabekanal und kopiert diese dann in ein Ver-
zeichnis, das als Argument bergeben wurde.
Ein Beispiel, das hnlich auch in der Prfung vorkommen knnte, verlangt, dass
alle mit OpenOffice.org erstellten Tabellendokumente, die in den Heimatver-
zeichnissen der Benutzer existieren, in ein Verzeichnis /backup gesichert werden
sollen. Die im Dateisystem verwendete Verzeichnisstruktur soll im Backup nach-
vollziehbar sein. Der verwendete Befehl knnte dann so aussehen:
archangel:/ # find /home -name *.ods | cpio -pd /backup
Das Suchwerkzeug find sucht hier also unterhalb von /home nach Dateien mit der
Erweiterung ods und bergibt diese dann an cpio. Die Option p bringt cpio in
den Pass-Through-Modus. Es wird also kein Archiv angelegt. Das Kommando d
sorgt dafr, dass die bentigten Directorys angelegt werden. Als letztes Argument
gibt /backup das Ziel fr cpio an.
Die von cpio verwendeten Optionen wrden ohne Probleme zwei Buchseiten fl-
len. Deshalb verweise ich hier auf die Manpages zu cpio. Fr die Prfung reicht
es normalerweise aus, die Schalter fr die Betriebsmodi von cpio zu kennen.
Verwendung von dd
Mit dd knnen Sie Daten kopieren oder konvertieren. Da die Konvertierung von
Daten in diesem Zusammenhang keine Rolle spielt, sei nur erwhnt, dass es etwa
mglich ist, Daten von einem Datentrger zu lesen und dann mit einer gender-
ten Blockgre auf einen anderen Datentrger zu schreiben.
Wenn Sie dd (eigentlich sinnloserweise) ohne Parameter starten, dann liest dieser
von der Standardeingabe und schreibt auf die Standardausgabe. Sie knnen dann
erkennen, dass dd stur das schreibt, was Sie eingegeben haben, ohne zu inter-
pretieren oder Modifikationen vorzunehmen:
123
Grundlegende Dateiverwaltung 103.3
archangel:/ # dd
Mal was schreiben und mit Strg + D abschicken...
Mal was schreiben und mit Strg + D abschicken...
0+1 records in
0+1 records out
49 bytes (49 B) copied, 4.2909 seconds, 0.0 kB/s
Diese Eigenschaft ist auch schon einer seiner groen Vorzge, weil Sie auf diese
Art problemlos empfindsame Betriebssysteme von einer Festplatte zu einer ande-
ren klonen knnen. Es ist ratsam, gleich groe Festplatten zu verwenden, weil
selbst der MBR und die darin enthaltene Partitionstabelle mit kopiert werden.
Dazu mssen natrlich der Eingabekanal und der Ausgabekanal gendert wer-
den. Wenn die Originalfestplatte /dev/sda ist und die erwnschte Kopie an /dev/
sdb angeschlossen wurde, sieht die dd Zeile so aus:
archangel:/ # dd if=/dev/sda of=/dev/sdb
In diesem Zusammenhang mchte ich darauf hinweisen, dass die Duplizierung
groer Datentrger mit dd erhebliche Zeit in Anspruch nimmt.
Sehr beliebt ist auch das Sichern des Master Boot Records mittels dd. Das funkti-
oniert dann so:
archangel:/ # dd if=/dev/hda of=mbr.backup ibs=512 count=1
1+0 records in
1+0 records out
512 bytes (512 B) copied, 0.037257 seconds, 13.7 kB/s
Hier wurde als Eingabe die Festplatte an /dev/hda verwendet. Die Ausgabe
erzeugt die Datei mbr.backup im aktuellen Verzeichnis, weil kein Pfad angegeben
wurde. Der Parameter ibs steht fr in block size und sorgt dafr, dass ein gelese-
ner Block immer 512 Byte gro ist. Mit count wird die Anzahl der zu lesenden
Blcke auf 1 festgelegt, denn der MBR ist ja ausschlielich der erste Block auf
einer Festplatte.
Soll dd zur Erstellung einer Datensicherung verwendet werden, mssen Sie als
Ausgabekanal einfach den Streamer einstellen. Denken Sie hierbei immer daran,
dass es rckspulende und nicht rckspulende Gerte gibt. Beispiel:
archangel:/ # dd if=/home of=/dev/st0 cbs=16b
Dieses Kommando sichert alle Benutzerverzeichnisse auf den ersten SCSI-Strea-
mer und spult das Band anschlieend zurck. Der Wert cbs sorgt fr eine dem
Streamer angemessene Blockgre.
124
GNU- und Unix-Kommandos 103
file
Mit dem Kommando file knnen Sie bei einer unbekannten Datei feststellen,
um welchen Dateitypen es sich handelt. Am besten sehen Sie den Verwendungs-
zweck an ein paar Beispielen:
root@archangel:~# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),
for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
ber /bin/bash wissen Sie ja bereits bestens Bescheid. Deshalb ist dieses Beispiel
auch selbsterklrend. In den nchsten Zeilen stt file auf ein gewhnliches
Shell-Skript:
root@archangel:~# file /etc/cron.daily/backup
/etc/cron.daily/backup: Bourne-Again shell script text executable
103.4 Strme, Pipes und Umleitungen verwenden
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, Strme umzuleiten und zu
verbinden, um Textdaten effizient zu verarbeiten. Zu diesen Aufgaben gehren
das Umleiten der Standardeingabe, Standardausgabe und Standardfehlerausgabe,
das Weiterleiten der Ausgabe eines Kommandos an die Eingabe eines anderen
Kommandos, die Verwendung der Ausgabe eines Kommandos als Argumente fr
ein anderes Kommando und das Senden der Ausgabe sowohl an die Standardaus-
gabe als auch an eine Datei.
Wichtigste Wissensgebiete:
Umleiten der Standardeingabe, Standardausgabe und Standardfehlerausgabe
Weiterleiten der Ausgabe eines Kommandos an die Eingabe eines anderen
Kommandos (Pipe)
Verwenden der Ausgabe eines Kommandos als Argumente fr ein anderes
Kommando
Senden der Ausgabe sowohl an die Standardausgabe als auch eine Datei
Prfungstipp
Sie knnen file sehr viele Optionen bergeben (siehe Manpage). Fr die Prfung
reicht es aber vllig aus, zu wissen, was das Programm grundstzlich macht.
125
Strme, Pipes und Umleitungen verwenden 103.4
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
tee
Allgemeines
Manchmal kann es vorkommen, dass Sie die Ausgabe eines Programms direkt
mit einem anderen Programm weiterverarbeiten mssen. In diesem Fall knnen
Sie eine sogenannte Pipe verwenden. Mit ihrer Hilfe ist das Zwischenspeichern
der Ausgabe des ersten Programms in einer Datei zum Zweck, diese Datei dann
mit dem zweiten Programm wieder einzulesen, unntig.
In einem anderen Fall erzeugt ein Programm vielleicht eine Ausgabe auf dem
Bildschirm, die Sie abspeichern wollen. In diesem Fall bentigen Sie eine Umlei-
tung der Standardausgabe (Redirect).
Wenn ein Programm ausschlielich von der Standardeingabe (normalerweise die
Tastatur) liest und Sie mit diesem Programm eine Datei einlesen mssen, benti-
gen Sie ebenfalls eine Umleitung. Diesmal muss allerdings die Standardeingabe
umgeleitet (Redirect) werden.
stdin, stdout und stderr
Immer wenn unter Linux ein Programm ausgefhrt wird, erhlt dieses Informa-
tionen ber drei Dateideskriptoren. Diese werden als Standard-I/Os bezeichnet:
Standardeingabekanal (stdin) ist normalerweise die Tastatur. Viele Programme
erwarten ihre Eingaben von stdin. Es gibt aber auch, wie Sie schon oft gesehen
haben, Programme, die stattdessen Dateien als Argumente erwarten. Diese
Programme verwenden stdin nicht.
stdin entspricht dem Dateideskriptor 0.
Standardausgabekanal (stdout) ist normalerweise ein Terminal. Viele Pro-
gramme machen ihre Ausgaben direkt nach stdout.
stdout entspricht dem Dateideskriptor 1.
Standardfehlerkanal (stderr) hnelt vom Verhalten her stdout, enthlt aber nur
die Fehlermeldungen eines Programms. Die Ausgabe des Fehlerkanals erfolgt
normalerweise auch auf dem Terminal.
stderr entspricht dem Dateideskriptor 2.
Dadurch, dass der Standardausgabekanal und der Standardfehlerkanal getrennt
verwaltet werden, ist es mglich, Fehlermeldungen von den normalen Ausgaben
eines Programms zu trennen. Deshalb knnen Sie den Fehlerkanal z.B. in eine
Fehlerprotokolldatei umlenken.
126
GNU- und Unix-Kommandos 103
Umleitungen (Redirects)
Umleitungen werden verwendet, um die Standard-I/Os entweder in eine Datei
hinein oder aus einer Datei heraus umzulenken. Das ist z.B. dann erforderlich,
wenn man einem Programm keine Dateien als Argumente bergeben kann.
Wenn Sie alle Meldungen des Kernels in einer separaten Datei speichern mch-
ten, knnen Sie mit grep im Syslog nach solchen Meldungen suchen und diese
dann mit einem Redirektor in eine andere Datei speichern:
archangel:/diag # grep kernel /var/log/messages > kernelmessages
Mit einem solchen Kommando erfassen Sie nur die Standardausgabe von grep. Wenn
ein Fehler auftritt, werden die entsprechenden Meldungen weiterhin auf der Konsole
ausgegeben. Sie knnen mit einer Kommandozeile wie der folgenden Standardmel-
dungen und Fehlermeldungen in zwei unterschiedlichen Dateien aufzeichnen:
archangel:/scripts # script-xy 2>fehler.log 1>erfolg.log
Hierbei lenken das Argument 1>erfolg.log die normalen Meldungen des Pro-
gramms und 2>fehler.log die Fehlermeldungen in je eine Datei um. Wenn nur
eine einzige Datei fr die Aufzeichnung sowohl von stdout als auch stderr verwen-
det werden soll, knnen Sie auch ein Kommando wie das folgende verwenden:
archangel:/scripts # script-xy >protokolldatei 2>&1
Der erste Teil des Kommandos script-xy >protokolldatei sorgt fr die Umlei-
tung von stdout in die Textdatei. 2>&1 leitet stderr auf stdout um. Das & besagt,
dass 1 keine Datei ist. Das Kommando wrde ohne das & den Standardfehlerkanal
in die Datei 1 umleiten.
Wenn Sie einen Standard-I/O umleiten, wird die Zieldatei, wenn diese noch nicht
existiert, automatisch erstellt. Sollten Sie dieselbe Umleitung noch einmal durch-
fhren, wird die ursprngliche Datei berschrieben. Um Daten an eine beste-
hende Datei anzuhngen, die fr Umleitungen verwendet wird, mssen Sie ein-
fach zwei Redirektorzeichen verwenden (>>).
archangel:/diag # grep kernel /var/log/messages >> kernelmessages
Wenn Sie nur einen einzelnen Redirektor verwenden, wird gleich zu Beginn der
Programmausfhrung die Zieldatei erstellt. Wenn diese bereits vorhanden ist,
wird sie gelscht und neu erstellt. Sollten also Zieldatei und Eingabedatei iden-
tisch sein, dann ist ein Datenverlust garantiert. Das folgende Kommando hat
demnach eine leere Kundendatenbank zur Folge:
archangel:/db # grep "Meier" kunden-db > kunden-db
Es besteht aber auch die Mglichkeit, den Standardeingabekanal umzuleiten.
Beliebt hierfr ist das Programm mail. Das folgende Kommando sendet den kom-
127
Strme, Pipes und Umleitungen verwenden 103.4
pletten Syslog per Mail an einen kompetenten Mitarbeiter. Der Betreff lautet
berprfen!, und der Inhalt der Datei erscheint im Textkrper der Mail:
archangel:/ # mail -s "berprfen!" willi < /var/log/messages
Zusammenfassung:
Um die Standardausgabe umzulenken, verwenden Sie diese Syntax:
Kommando > Zieldatei (berschreibend)
Kommando 1> Zieldatei (berschreibend)
Kommando >> Zieldatei (anhngend)
Kommando 1>> Zieldatei (anhngend)
Um den Standardfehlerkanal umzulenken, verwenden Sie:
Kommando 2> Zieldatei (berschreibend)
Kommando 2>> Zieldatei (anhngend)
Um beide Ausgabekanle umzulenken, verwenden Sie:
Kommando > Zieldatei 2>&1 (gemeinsame Zieldatei)
Kommando 1> ZieldateiA 2> ZieldateiB (getrennte Zieldateien)
Um die Standardeingabe umzulenken, verwenden Sie diese Syntax:
Kommando < Quelldatei
Pipes
Im Gegensatz zu Umleitungen lenken Pipes Datenstrme nicht in Dateien um
oder aus Dateien heraus. Sie sorgen vielmehr dafr, dass die Ausgabe eines Pro-
gramms direkt als Eingabe fr ein anderes Programm verwendet werden kann.
Die Ausgabe des ersten Programms erfolgt dann nicht nach stdout. Oft werden
Umleitungen und Pipes auch miteinander kombiniert. Sehr gebruchlich ist die
Umlenkung grerer Textmengen nach less. Das folgende Kommando wrde
mglicherweise eine solche grere Textmenge verursachen:
archangel:/ # grep "kernel" /var/log/messages
Damit Sie die Ausgabe des Kommandos berhaupt komplett lesen knnen, wird
sie einfach mit einer Pipe an less weitergegeben:
archangel:/ # grep "kernel" /var/log/messages | less
Eine Kombination aus Umleitungen und Pipes verwendet z.B. blicherweise das
Programm tr. Das liegt daran, dass tr weder eine Eingabedatei noch eine Ausga-
bedatei als Argument bergeben werden kann. Deshalb erfolgt die Eingabe oft
128
GNU- und Unix-Kommandos 103
mittels einer Pipe aus dem Programm cat heraus und die Ausgabe mit einer
Umlenkung in die entsprechende Zieldatei:
archangel:/textfiles # cat textfile1 | tr \n \r > textfile2
tee und xargs
Das Programm tee hat nichts mit dem gleichnamigen aromatischen Aufgussge-
trnk zu tun, sondern eher mit einem T-Stck. Mit tee kann der Datenstrom eines
Programms gleichzeitig auf der Konsole und in einer Textdatei ausgegeben wer-
den. Beispiel:
archangel:/ # grep pppd /var/log/messages | tee pppdmessages
Mit xargs knnen Sie die Ergebnisse eines Programms, das eine mehrzeilige Aus-
gabe liefert, an ein Programm bergeben, das immer nur ein Argument gleichzei-
tig verarbeiten kann. Beispiel:
archangel:/ # cut -d " " -f1 /var/log/apache2/access_log |\
sort | uniq | xargs -n1 host
Das Kommando wurde der bersichtlichkeit halber mit dem Backslash auf zwei
Zeilen aufgeteilt. Zur Erklrung: Mit diesem Kommando soll berprft werden,
von welchen Domnen aus auf einen Webserver zugegriffen wurde. Zunchst
wird mit dem cut-Befehl die erste Spalte des acces_log von Apache isoliert. Diese
Spalte enthlt die IP-Adressen der Besucher. Das Kommando sort sortiert die
Liste der IP-Adressen. Mit uniq wird dafr gesorgt, dass jede IP-Adresse nur ein-
mal in der Liste auftaucht. Diese Liste kann nicht direkt an das Kommando host
zur Namensauflsung bergeben werden, weil host nur ein einzelnes Argument
erwartet. Deshalb bergibt xargs die IP-Adressen einzeln. Das Kommando host
wird also durch xargs fr jede IP-Adresse einmal aufgerufen.
103.5 Prozesse erzeugen, berwachen und beenden
Wichtung: 4
Beschreibung: Kandidaten sollten die einfache Prozessverwaltung beherrschen.
Wichtigste Wissensgebiete:
Jobs im Vordergrund und im Hintergrund ablaufen lassen
einem Programm signalisieren, dass es nach dem Abmelden weiterlaufen soll
aktive Prozesse beobachten
129
Prozesse erzeugen, berwachen und beenden 103.5
Prozesse zur Ausgabe auswhlen und sortieren
Signale an Prozesse schicken
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
&
bg
fg
jobs
kill
nohup
ps
top
free
uptime
killall
Allgemeines
In diesem und auch im nchsten Kapitel geht es um die Steuerung und berwa-
chung von Prozessen. Jedes Programm, das auf einem Computer luft, besteht
aus mindestens einem Prozess. Prozesse sind in einer Baumhierarchie angeord-
net, und die Wurzel dieses Baumes ist der Prozess init. Wenn der Kernel beim
Systemstart alle seine Module initialisiert hat, bergibt er die Kontrolle an den
Prozess init. Jedem Prozess wird eine eindeutige ID zugeordnet, die PID (Pro-
zess-ID). Der init-Prozess hat immer die PID 1. Die PID 0 gibt es nicht. Fallen Sie
in der Prfung nicht darauf herein!
root@ubuntu-server:~# ps -A | head 4
PID TTY TIME CMD
1 ? 00:00:04 init
2 ? 00:00:00 migration/0
3 ? 00:00:00 ksoftirqd/0
Der init-Prozess ist der erste Prozess, der auf einem System langfristig gestartet
wird, und der letzte Prozess, der beim Herunterfahren des Systems stirbt.
berwachen von Prozessen
ps
Mit dem Kommando ps knnen Sie die aktuell auf einem Computer laufenden
Prozesse anzeigen. Es handelt sich hierbei allerdings lediglich um eine Moment-
130
GNU- und Unix-Kommandos 103
aufnahme. Programme, die ber eine kurze Lebensdauer verfgen (z.B. df), wer-
den Sie mit ps nicht anzeigen knnen. Wenn Sie das Kommando ps ohne Optio-
nen ausfhren, erhalten Sie lediglich eine Liste der Prozesse, die auf dem
aktuellen Terminal laufen. Das sind in der Regel nur die Shell und das ps-Kom-
mando selbst. Wenn Jobs im Hintergrund laufen (oder stehen), werden diese
auch angezeigt. Sie knnen bei der bergabe von Optionen einen Strich voran-
stellen oder auch nicht. In Abhngigkeit von der verwendeten Programmversion
werden Sie zu unterschiedlichen Ergebnissen kommen. Nach der UNIX-Syntax
wird der Option ein Strich vorangestellt, whrend nach BSD-Syntax kein Strich
verwendet wird. GNU-Optionen sind wiederum die ausgeschriebenen langen
Optionen. Diesen werden zwei Striche vorangestellt. Am besten lesen Sie im
Zweifelsfall immer in der Manpage der gerade verwendeten Version von ps nach.
In der Prfung wird brigens normalerweise die GNU-Syntax verwendet.
Optionen knnen, wie bei den meisten Programmen, nach Belieben kombiniert
werden. Folgende Optionen sind sowohl fr die Prfung als auch fr die Praxis
wichtig:
-a zeigt auch die Prozesse anderer Benutzer an. Voraussetzung ist, dass diese
Prozesse mit einem Terminal verknpft sind.
-u zeigt auch die Startzeit, den Pfad zur ausfhrbaren Datei und den ausfh-
renden Benutzer an.
-x fhrt auch die Prozesse auf, die nicht mit einem Terminal verbunden sind
(z.B. init oder cron).
-C prozess sorgt fr die Ausgabe aller Instanzen eines auf der Kommandozeile
angegebenen Prozesses.
-U benutzer zeigt die Prozesse eines bestimmten Benutzers an.
Es folgen einige typische Beispiele, die hnlich auch in der Prfung Verwendung
finden knnen.
Um alle Instanzen des nfsd (NFS-Daemon), die auf einem System laufen, anzuzei-
gen, geben Sie folgendes Kommando ein:
root@ubuntu-server:~# ps -C nfsd
PID TTY TIME CMD
9592 ? 00:00:00 nfsd
9593 ? 00:00:00 nfsd
9594 ? 00:00:00 nfsd
... weitere Zeilen wurden abgeschnitten ...
Eine sehr beliebte Kombination ist -aux. Damit werden alle Prozesse smtlicher
Benutzer angezeigt. Zustzlich werden Prozesse gelistet, die nicht mit einem Ter-
131
Prozesse erzeugen, berwachen und beenden 103.5
minal verbunden sind. Die Ausgabe enthlt umfangreiche Informationen zum
Prozess:
root@ubuntu-server:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 2912 1848 ? Ss Oct16 0:04 /sbin/init
root 2 0.0 0.0 0 0 ? S Oct16 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN Oct16 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Oct16 0:00 [watchdog/0]
... weitere Zeilen wurden abgeschnitten ...
Wenn Sie in einer langen Prozessliste schnell nach einem laufenden Prozess
suchen mssen, empfiehlt es sich, die Ausgabe des Kommandos an grep weiter-
zuleiten. Beispiel:
root@ubuntu-server:~# ps -A | grep apache
398 ? 00:00:00 apache2
404 ? 00:00:00 apache2
... weitere Zeilen wurden abgeschnitten ...
pstree
Das Kommando pstree zeigt ebenfalls die aktuell auf einem Computer laufenden
Prozesse an. Im Gegensatz zu ps zeigt pstree aber auch die Hierarchie der Pro-
zesse in einem Baumdiagramm aus ASCII-Zeichen an. Die Ausgabe des Komman-
dos sieht folgendermaen aus:
root@ubuntu-server:~# pstree -pn
init(1) migration/0(2)
ksoftirqd/0(3)
watchdog/0(4)
events/0(5)
khelper(6)
kthread(7) kblockd/0(30)
kacpid(31)
kacpi_notify(32)
kseriod(88)
... weitere Zeilen wurden abgeschnitten ...
Folgende Optionen, die zum Teil schon im vorangegangenen Beispiel enthalten
sind, sollten Sie kennen:
-a zeigt zustzlich die Optionen und Argumente an, die einem Prozess an der
Kommandozeile bergeben wurden.
-G hat eine Ausgabe im VT100-Modus zur Folge. Das fhrt bei den meisten
Terminals zu einer optisch ansprechenderen Ausgabe.
132
GNU- und Unix-Kommandos 103
-p zeigt zustzlich die PIDs an.
-n sorgt fr eine Sortierung nach PIDs. Normalerweise gibt pstree die Pro-
zesse in alphabetischer Reihenfolge aus.
top
Mit top knnen Sie die auf einem Computer laufenden Prozesse in Echtzeit ber-
wachen. Whrend der Ausfhrung werden die folgenden Informationen dyna-
misch im Terminal ausgegeben:
allgemeine Informationen, wie Uhrzeit, Uptime, Anzahl der angemeldeten
Benutzer, durchschnittliche Systemauslastung
Tasks: Anzahl der Prozesse insgesamt, laufende Prozesse, schlafende Prozesse,
gestoppte Prozesse und Zombie-Prozesse
CPU(s): Benutzung durch Benutzerprozesse, Systemprozesse, den Idle-Prozess
u.a.
Mem: Speicher insgesamt, in Verwendung, freier Speicher und fr Buffers ver-
wendeter Speicher
Swap: diverse Werte zur Verwendung der Swap-Partition(en)
Anschlieend folgt eine Auflistung der laufenden Prozesse. Diese werden stan-
dardmig in Reihenfolge der CPU-Verwendung ausgegeben. Die inaktiven Pro-
zesse werden anschlieend in Reihenfolge der PIDs ausgegeben. Beachten Sie
bitte, dass das Programm top selbst auch Systemressourcen belegt und deshalb
das Messergebnis beeinflusst. Dies demonstriert das folgende Beispiel:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
223 root 15 0 2056 1016 752 R 1.5 0.0 0:00.03 top
1 root 16 0 680 104 72 S 0.0 0.0 0:03.71 init
2 root RT 0 0 0 0 S 0.0 0.0 0:04.70 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 11:55.58 ksoftirqd/0
4 root RT 0 0 0 0 S 0.0 0.0 0:16.45 migration/1
5 root 34 19 0 0 0 S 0.0 0.0 3:09.48 ksoftirqd/1
6 root 10 5 0 0 0 S 0.0 0.0 0:04.55 events/0
Sie knnen top sowohl beim Aufruf als auch zur Laufzeit Optionen bergeben.
Fr die Prfung mssen Ihnen die gngigsten Optionen fr beide Situationen
bekannt sein.
Wichtige Interaktivoptionen:
k (kill) ttet einen Prozess. Es muss sowohl die PID als auch das Signal ange-
geben werden.
n (number of) nennt die Anzahl der Zeilen, die top ausgibt.
133
Prozesse erzeugen, berwachen und beenden 103.5
r (renice) ndert den Nice-Wert eines Prozesses zur Laufzeit.
h (help) gibt eine Hilfe aus.
q (quit) beendet das Programm.
Wichtige Kommandozeilenoptionen:
-i zeigt nur die Prozesse an, die aktiv sind. Schlafende Prozesse werden igno-
riert.
-b (batch) kann in Kombination mit einem Redirektor verwendet werden, um
die Ausgabe in eine Textdatei umzuleiten.
-d (delay) gibt das Aktualisierungsintervall in Sekunden an. Der Standardwert
ist eine Sekunde.
-q startet top mit Echtzeitausgabe. Die Aktualisierung wird sehr hochfrequent,
was zu einem instabilen System fhren kann.
Signale an Prozesse senden
Wenn Sie einen Prozess zur Laufzeit beeinflussen wollen, dann knnen Sie diesem
Prozess ein Signal senden. Es gibt insgesamt 64 verschiedene Signale. Die gute
Nachricht ist, dass Sie nicht alle Signale fr die Prfung kennen mssen. Sie erhal-
ten eine Auflistung aller Signale, wenn Sie das folgende Kommando ausfhren:
archangel:~ # kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
... weitere Zeilen wurden abgeschnitten ...
Die folgenden Signale werden hufig (auch manuell) an Prozesse bermittelt. Sie
sind sowohl fr die Praxis als auch fr die Prfung von Interesse:
1 bzw. SIGHUP ist das Hang-up-Signal, das ursprnglich Modems zum Auflegen
veranlasste. Es wird auch benutzt, um Prozesse, die als Daemons laufen (bind,
squid usw.), dazu zu veranlassen, ihre Konfigurationsdateien neu einzulesen.
9 bzw. SIGKILL beendet einen Prozess mit Gewalt. Dieses Signal sollte nur in
Notfllen verwendet werden, wenn Signal 15 kein Ergebnis bringt. Ein mit
SIGKILL beendeter Prozess rumt nicht auf (temporre Dateien usw.).
15 SIGTERM fordert einen Prozess auf, sich selbst zu beenden. Der Prozess
bekommt die Gelegenheit, Aufrumaktivitten durchzufhren.
Weitere Signale, die hufig vorkommen, aber ber Umwege an den Prozess
gesendet werden, sind:
134
GNU- und Unix-Kommandos 103
2 bzw. SIGINT fhrt einen Programmabbruch aus. SIGINT wird gesendet, wenn
die Tastenkombination (Strg) + (C) bettigt wird.
18 bzw. SIGCONT setzt einen Prozess fort, der zuvor mit SIGSTOP angehalten
wurde. Das Signal SIGCONT wird durch die Kommandos fg und bg gesendet,
die im nchsten Abschnitt behandelt werden.
19 bzw. SIGSTOP hlt einen Prozess an. Der Prozess kann spter mit SIGCONT
fortgesetzt werden.
20 bzw. SIGTSTP hlt einen Prozess an. Der Prozess bleibt speicherresident und
kann mit SIGCONT fortgesetzt werden. Die Tastenkombination (Strg) + (Z) sen-
det dieses Signal.
kill
Wenn Sie ein Signal an einen Prozess senden wollen, verwenden Sie das Pro-
gramm kill. Wie der Name schon vermuten lsst, ist kill primr dazu gedacht,
ein Programm zu beenden. Der etwas morbide Begriff rhrt wohl daher, dass
man das Beenden eines Prozesses unter Unix auch Sterben eines Prozesses nennt.
Das Kommando kill kann aber grundstzlich alle 64 Signale (und nicht nur die
tdlichen) an einen Prozess senden.
Die Syntax von kill ist sehr vielfltig, und Sie mssen fr die Prfung mit den
verschiedenen Optionen vertraut sein. Als Argument erwartet kill eine oder
mehrere durch Leerstellen getrennte PIDs. Ohne Optionen sendet kill das Signal
15 (SIGTERM) an den angegebenen Prozess. Wenn Sie einen Prozess mit kill
beenden wollen, mssen Sie zunchst dessen PID ermitteln. Das knnen Sie mit
dem Durchfhren des bereits bekannten Programms ps erreichen. Im folgenden
Beispiel soll ein auer Kontrolle geratener Midnight Commander beendet wer-
den. Zunchst wird die PID ermittelt:
root@ubuntu-server:~# ps -au | grep mc
root 3167 0.2 0.4 5684 2268 pts/0 T 22:02 0:00 mc
root 3183 0.0 0.1 2884 752 pts/0 S+ 22:05 0:00 grep mc
Die PID ist demnach 3167. Die zweite Zeile, die grep ausgibt, ist das grep-Kom-
mando mit der Suche nach dem mc selbst. Es soll zunchst ein SIGTERM (Signal 15)
an den Prozess gesendet werden. Dazu stehen elf Varianten zur Verfgung:
root@ubuntu-server:~# kill 3167
root@ubuntu-server:~# kill -s 15 3167
root@ubuntu-server:~# kill -s SIGTERM 3167
root@ubuntu-server:~# kill -s TERM 3167
root@ubuntu-server:~# kill -s sigterm 3167
root@ubuntu-server:~# kill -s term 3167
135
Prozesse erzeugen, berwachen und beenden 103.5
root@ubuntu-server:~# kill 15 3167
root@ubuntu-server:~# kill -SIGTERM 3167
root@ubuntu-server:~# kill -TERM 3167
root@ubuntu-server:~# kill -sigterm 3167
root@ubuntu-server:~# kill -term 3167
Alle Kommandos fhren zu demselben Ergebnis. Leider luft der Midnight Com-
mander immer noch. Das ist nicht berraschend, weil dieses Programm fr dieses
Verhalten bekannt ist. Das gilt brigens auch fr Netscape-Browser, die gerne
noch Prozesse aufrechterhalten, wenn X schon lngst beendet wurde. Dieses Ver-
halten ist auch bei LPI bekannt! Ein solcher Prozess muss mit Gewalt beendet
werden:
root@ubuntu-server:~# kill -SIGKILL 3167
Auch dieses Kommando kann in immerhin zehn Varianten ausgefhrt werden.
Die erste Variante von SIGTERM entfllt, weil SIGTERM die Voreinstellung ist.
In der Prfung wird hufig folgendes Konstrukt verwendet:
root@ubuntu-server:~# kill -SIGHUP `cat /var/run/dhcpd.pid`
Mit dem Befehlsteil cat /var/run/dhcpd.pid wird die PID des dhcpd festgestellt.
Die sogenannten Backquotes sorgen dafr, dass das Ergebnis dieses Kommandos
an kill -SIGHUP angehngt wird. Eine andere Variante dieser Methode wre:
root@ubuntu-server:~# kill -SIGHUP $(cat /var/run/dhcpd.pid)
killall
Damit Konstrukte wie das letzte Beispiel berflssig werden, wurde das Pro-
gramm killall entwickelt. Dieses Programm verwendet im Gegensatz zu kill
keine PIDs, sondern Prozessnamen. Daraus ergeben sich zwei Vorteile:
Die PID muss nicht ermittelt werden.
Es knnen mehrere Prozesse mit gleichem Namen auf einmal beendet werden
(deshalb heit das Programm killall).
Ansonsten kann killall hnlich wie kill verwendet werden. Das folgende
Kommando beendet sofort alle Midnight-Commander-Instanzen mit Gewalt:
root@ubuntu-server:~# killall -s 9 mc
Jobs im Vorder- und im Hintergrund
Sie knnen auf einer einzigen Shell praktisch beliebig viele Benutzerprozesse
(Jobs) gleichzeitig laufen lassen. Es kann aber immer nur ein Prozess im Vorder-
136
GNU- und Unix-Kommandos 103
grund laufen. Programme, die in den Hintergrund transferiert wurden, knnen
den Status running oder stopped haben. Wenn sich ein Hintergrundprozess im
Status running befindet, dann verrichtet er weiterhin seine Ttigkeit. Im Status
stopped wartet er unttig im Hintergrund, bis er fortgesetzt oder endgltig been-
det wird.
Wenn Sie ein Programm starten und anschlieend die Tastenkombination (Strg)
+ (Z) ausfhren, dann tritt das gestartete Programm in den Hintergrund. Auer-
dem sendet die Tastenkombination (Strg) + (Z) das Signal 20 (SIGTSTP) an den
Prozess, so dass dieser vorbergehend gestoppt wird.
archangel:~ # updatedb
Hier wurde anschlieend (nicht sichtbar) (Strg) + (Z) durchgefhrt.
[1]+ Stopped updatedb
Normalerweise wird man bei einem Job wie updatedb wollen, dass dieser im
Hintergrund arbeitet und seine Datenbank aktualisiert. In einem solchen Fall
knnen Sie an das Kommando einfach ein Et-Zeichen (&) anhngen. Das Pro-
gramm wird in den Hintergrund transferiert, bekommt aber kein SIGTSTP-Signal
bermittelt. Deshalb wird dieser Prozess, im Hintergrund laufend, seine Arbeit
verrichten. Beispiel:
archangel:~ # updatedb &
[1] 15749
Das Ergebnis des Kommandos kann sofort mit dem Kommando jobs berprft
werden. Sie sollten sich jedoch nicht zu lange Zeit lassen, weil der Job sonst
bereits mit seiner Arbeit fertig ist:
archangel:~ # jobs
[1]+ Running updatedb &
Wenn ein Job erledigt ist, bekommt er den Status done. Nach einmaliger Anzeige
wird der Job nicht weiterhin gelistet:
archangel:~ # jobs
[1]+ Done updatedb
Wenn mehrere Prozesse in den Hintergrund transferiert wurden, liefert jobs eine
Ausgabe wie die folgende:
archangel:~ # jobs
[1]- Stopped updatedb
[2]+ Stopped /etc/cron.daily/do_mandb
137
Prozesse erzeugen, berwachen und beenden 103.5
Die Zahlen in den eckigen Klammern [1] sind Jobnummern, ber die der jewei-
lige Job ansprechbar ist. Das Pluszeichen + markiert den Prozess, der von den
Programmen fg und bg angesprochen wird, wenn explizit kein Job auf der Kom-
mandozeile angegeben wurde.
Das Kommando jobs
Wie das Kommando jobs funktioniert, haben Sie in den vorangegangenen Bei-
spielen bereits mehrfach gesehen. Dem ist eigentlich nur noch hinzuzufgen,
dass die Option -l dafr sorgt, dass auch die PIDs der Prozesse angezeigt werden
und nicht nur deren Jobnummern. Wenn Sie die Option -p verwenden, wird aus-
schlielich die PID angezeigt. Beispiel:
archangel:~ # jobs -l
[1]- 14746 Stopped updatedb
[2]+ 15395 Stopped /etc/cron.daily/do_mandb
Die PIDs sind allerdings fr die Steuerung von Hintergrundprozessen im Wesent-
lichen nicht von Belang.
Die Kommandos bg und fg
Mit dem Kommando bg und der durch das Kommando jobs ermittelten Jobnum-
mer knnen Sie einen gestoppten Hintergrundprozess im Hintergrund fortset-
zen. Es wird dann ein SIGCONT (Signal 18) an den Prozess gesendet. Wenn Sie bg
ohne Optionen ausfhren, wird SIGCONT an den Prozess gesendet, dem in der
Auflistung von jobs das Pluszeichen zugeordnet ist. Beispiel:
archangel:~ # bg 1
[1]- updatedb &
Anschlieend wird mit jobs geprft, ob das Kommando erfolgreich war:
archangel:~ # jobs
[1]- Running updatedb &
[2]+ Stopped /etc/cron.daily/do_mandb
Wenn Sie einen Prozess, der sich im Hintergrund befindet, wieder in den Vorder-
grund holen mchten, dann verwenden Sie das Kommando fg, gefolgt von der
Jobnummer. Es wird dann das Signal 18 (SIGCONT) an den Prozess gesendet.
Wenn Sie fg keine Jobnummer angeben, wird der Prozess in den Vordergrund
geholt und gegebenenfalls gestartet, dem in der Auflistung von jobs das Pluszei-
chen vorangestellt ist. Mit folgendem Kommando wrde der Job updatedb aus
dem vorangegangenen Beispiel in den Vordergrund geholt werden:
archangel:~ # fg 1
138
GNU- und Unix-Kommandos 103
Prozesse unabhngig von einem Terminal laufen lassen
Wenn Sie einen Job unabhngig von einer Shell verwenden wollen, dann mssen
Sie das Kommando nohup verwenden. Das kann sehr ntzlich sein, wenn Sie z.B.
kurz vor Feierabend einen Prozess in Gang bringen wollen, der lange Zeit in
Anspruch nimmt. Das Kommando nohup macht einen Prozess immun gegen Sig-
nale wie SIGHUB und leitet auerdem stdout in eine Datei um, damit Programme,
die Datenstrme produzieren, zufriedengestellt werden. Diese Datei heit
nohup.out und wird im Heimatverzeichnis des Benutzers abgelegt. Beispiel:
archangel:~ # nohup updatedb &
archangel:~ # logout
Der Job luft jetzt ohne Shell weiter.
Das Programm uptime
Dieses Programm gibt die aktuelle Zeit, die Dauer, wie lange das System luft, die
Anzahl der Benutzer und die durchschnittliche Anzahl von lauffhigen Jobs in
den letzten 1, 5 und 15 Minuten aus.
Hier sehen Sie die Ausgabe des Kommandos uptime. Die Bedeutung der Ausgabe
des Befehls wird im Anschluss beschrieben:
[root@centos01 ~]# uptime
11:07:44 up 284 days,19:05,2 user,load average: 0.37, 0.11, 0.03
Als Erstes wird die aktuelle Systemzeit (11:07:44) ausgegeben. Das System luft
demnach bereits seit 284 Tagen, 19 Stunden und 5 Minuten. Es sind aktuell zwei
Benutzer verbunden. Die folgenden drei Werte zeigen an, wie viele Jobs durch-
schnittlich in den letzten 1, 5 und 15 Minuten gelaufen sind.
Wenn Sie das Kommando w verwenden, um die aktuell angemeldeten Benutzer
anzuzeigen, wird in der ersten Zeile ebenfalls die uptime angezeigt:
[root@centos01 ~]# w
11:07:44 up 284 days,19:05,2 user,load average: 0.70, 0.11, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
harald tty1 28Mar09 20days 0.02s 0.02s -bash
root pts/0 192.168.50.200 10:34 0.00s 0.38s 0.00s w
Das Kommando free
Um festzustellen, wie die momentane Speicherauslastung eines Systems aussieht,
knnen Sie das Kommando free verwenden. Die Ausgabe des Programms ist recht
breit, weshalb sie sich in einem Buch nicht vernnftig darstellen lsst. Das Programm
kennt folgende Optionen, die auch in der Prfung abgefragt werden knnten:
139
Prozess-Ausfhrungsprioritten ndern 103.6
-b (bytes) Ausgabe in Bytes
-k (kilo) Ausgabe in KB
-m (mega) Ausgabe in MB
-g (giga) Ausgabe in GB
-l Details aus High- und Low-Memory anzeigen
-o (old) altes Format verwenden
-t (total) zeigt Summen fr RAM und swap
-s (seconds) automatische Aktualisierung nach der Zeit der angegebenen
Sekunden (z.B. free s 5 fr alle 5 Sekunden)
-c (count) Hufigkeit der mit s gewnschten automatischen Aktualisierung
-V (Version) das ist nicht verbose, wie man denken knnte!
103.6 Prozess-Ausfhrungsprioritten ndern
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, die Ausfhrungsprioritten
von Prozessen zu verwalten.
Wichtigste Wissensgebiete:
die Standardprioritt eines neu erzeugten Jobs kennen
ein Programm mit einer hheren oder niedrigeren Prioritt als im Normalfall
laufen lassen
die Prioritt eines laufenden Prozesses ndern
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
nice
ps
renice
top
Allgemeines
Manchmal ist es ntig, einen Prozess mit einer hheren oder niedrigeren Priori-
tt als der normalen Prioritt laufen zu lassen. So kann ein Prozess, dessen Aus-
fhrungsgeschwindigkeit nicht wichtig ist, mit einer niedrigeren Prioritt laufen
als ein systemkritischer Prozess. Sie knnen diese Prioritten sowohl beim Start
140
GNU- und Unix-Kommandos 103
des Programms als auch nachtrglich zur Laufzeit des Programms festlegen. Ein
normaler Benutzer kann allerdings einem Prozess lediglich eine niedrigere Prio-
ritt zuordnen. Damit soll verhindert werden, dass Benutzer, die ihre eigene
Arbeit als besonders wichtig einstufen, das ganze System lahmlegen.
nice
Mit dem Kommando nice legen Sie den Nice-Wert eines Programms schon beim
Start fest. Sie sollten fr die Prfung unbedingt mit den unterschiedlichen Mg-
lichkeiten, dieses Kommando zu verwenden, vertraut sein. Wenn Sie ein Pro-
gramm mit nice ausfhren, ohne Optionen anzugeben, dann wird dieses Pro-
gramm um den Nice-Wert 10 netter. Es gibt Nice-Werte von 20 bis +19. Wenn
Sie einen negativen Wert angeben, wird dem Programm eine hhere Prioritt bei
der Ausfhrung zugewiesen. Der Nice-Wert und die Prozessprioritt sind nicht
dasselbe. Es wird durch nice lediglich Einfluss auf die Prozessprioritt genommen.
Bei der bergabe von Optionen erwartet nice immer einen vorangestellten Bin-
destrich. Wenn ein Programm mit einem positiven Nice-Wert gestartet werden
soll, dann stehen Ihnen zwei Mglichkeiten zur Ausfhrung des Kommandos zur
Verfgung:
harald@archangel:~> nice -n 12 nano
harald@archangel:~> nice 12 nano
In beiden Fllen wird der Editor nano mit einem positiven Nice-Wert von 12
gestartet. Der Strich in der zweiten Zeile ist also kein Minus, sondern dient der
Einleitung der Option. Wenn Sie einen negativen Nice-Wert verwenden wollen,
um die Ausfhrungsprioritt eines Programms zu erhhen, knnen Sie folgende
Kommandos verwenden:
michi@archangel:~ # nice -n 15 pico
michi@archangel:~ # nice --15 pico
Die zweite Zeile enthlt jetzt zwei Striche. Der erste Strich leitet die Option ein,
und der zweite ist diesmal ein Minuszeichen.
renice
Wenn Sie den Nice-Wert eines Prozesses zur Laufzeit verwenden wollen, dann
verwenden Sie das Programm renice oder top. Die Behandlung von Nice-Werten
mit top wird etwas spter in diesem Buch beschrieben.
Prfungstipp
Lassen Sie sich in der Prfung nicht von dem doppelten Strich irritieren. Es handelt sich
hier nicht um eine doppelte Verneinung!
141
Prozess-Ausfhrungsprioritten ndern 103.6
Die Syntax weicht von der des nice-Kommandos ab, was leider oft fr Verwir-
rung sorgt. Im Normalfall geben Sie renice ohne Bindestrich einfach den neuen
Nice-Wert und die PID des zu ndernden Prozesses an. Das Programm teilt
anschlieend den alten und den neuen Nice-Wert mit:
archangel:~ # renice 10 5309
5309: old priority 12, new priority 10
Hier ist also der Strich ein Minus und keine Einleitung fr eine Option. Merken
Sie sich unbedingt diesen Unterschied zu nice.
Mit der Option -u (hier wiederum ist der Strich unabdingbar) knnen Sie alle
Prozesse eines einzelnen Benutzers gleichzeitig beeinflussen. Die Syntax ist
ansonsten mit der identisch, die man auch bei der Manipulation eines Prozesses
benutzen wrde:
archangel:~ # renice 5 -u dominik
1002: old priority 0, new priority 5
top und ps zur berprfung von Prioritten
Ob ein Programm mit einer normalen Prioritt luft oder nicht, knnen Sie mit
dem bereits bekannten Programm ps berprfen:
archangel:~ # ps -au
...Zeilen wurden entfernt...
harald 2698 0.0 0.0 3024 1076 pts/2 SN+ 11:45 0:00 nano
michi 2736 0.0 0.0 2368 940 pts/3 S<+ 11:46 0:00 pico
dominik 3416 0.1 0.0 5616 2012 pts/4 S+ 12:00 0:00 mc
... Zeilen wurden entfernt ...
Die achte Spalte in der Ausgabe des Kommandos ist u.a. fr diese Information
zustndig. Wenn ein Prozess nice ist, wird in dieser Spalte ein groes N auftau-
chen. Bei einem Prozess, der mir einer erhhten Prioritt luft, finden Sie dort
ein <. Die anderen Zeichen in dieser Spalte haben mit den Prioritten nichts zu
tun. Das groe S steht fr interruptible sleep, und das Pluszeichen + weist auf
einen Prozess hin, der im Vordergrund ausgefhrt wird. Der mc in der letzten
Zeile wurde also offensichtlich als einziger nicht mit dem Kommando nice
gestartet.
Um die tatschliche Prioritt eines Prozesses und den Wert fr nice zu ermitteln,
bentigen Sie das Programm top:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2736 michi 0 15 2368 952 748 S 0.2 0.0 0:00.01 pico
142
GNU- und Unix-Kommandos 103
2698 harald 27 12 3024 1084 892 S 0.2 0.0 0:00.02 nano
3416 dominik 16 0 5616 2028 1580 S 1.2 0.1 0:00.22 mc
Hier wird auch deutlich, dass eine Prozessprioritt und der Wert fr nice nicht
dasselbe sind. Der mit nice bzw. renice eingestellte Wert hat lediglich Einfluss
auf die Prozessprioritt. Die dritte Spalte der Ausgabe von top entspricht der Pri-
oritt, die das System einem Prozess zugewiesen hat. Der Standardwert ist 16. In
der vierten Spalte findet sich der Nice-Wert.
Sie knnen mithilfe von top auch einen Nice-Wert ndern. Dazu mssen Sie
lediglich zur Laufzeit von top die Taste (R) bettigen. Sie werden dann nach der
PID des zu ndernden Prozesses gefragt. Anschlieend mssen Sie den neuen
Nice-Wert angeben.
103.7 Textdateien mit regulren Ausdrcken durchsuchen
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, Dateien und Textdaten mit
regulren Ausdrcken zu manipulieren. Dieses Prfungsziel umfasst etwa die
Erstellung einfacher regulrer Ausdrcke, die mehrere Beschreibungselemente
enthalten. Es umfasst ebenfalls den Einsatz von Werkzeugen, die regulre Aus-
drcke zum Durchsuchen eines Dateisystems oder von Dateiinhalten verwenden.
Wichtigste Wissensgebiete:
einfache regulre Ausdrcke mit mehreren Beschreibungselementen aufstellen
Werkzeuge verwenden, die mit regulren Ausdrcken Dateisysteme oder
Dateiinhalte durchsuchen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
grep
egrep
fgrep
sed
regex(7)
Allgemeines
In den nchsten Abschnitten geht es um die Verwendung regulrer Ausdrcke.
Sie werden in diesem Zusammenhang auch in der Prfung wahrscheinlich hufi-
143
Textdateien mit regulren Ausdrcken durchsuchen 103.7
ger auf den englischen Originalbegriff regular expression oder die Kunstworte reg-
exp und regex stoen. Gemeint ist damit immer dasselbe. Auch wenn viele andere
Programme ebenfalls Gebrauch von regulren Ausdrcken machen, werden Sie
in der Prfung ausschlielich in Verbindung mit dem Stream-Editor sed oder dem
Programm grep verwendet. Andere Programme, die regexp verwenden, sind z.B.
Python, awk, gawk oder Perl. Dem Editor vi, der natrlich auch regex verwendet,
ist ein eigenes Kapitel gewidmet.
Regulre Ausdrcke
Ein regulrer Ausdruck kann als eine Art Beschreibungssprache verstanden wer-
den. Hierbei werden Suchmuster verwendet, wie z.B. ein Suchwort, eine Position
im Text (Zeilenanfang, Zeilenende) oder auch Wildcards. Es wre schn, wenn
regulre Ausdrcke von allen Programmen gleich interpretiert wrden. Leider ist
das aber nicht so!
Allgemeingltige Metazeichen
^ Textanker fr den Zeilenanfang
$ Textanker fr das Zeilenende
\< markiert einen Wortanfang
\> markiert ein Wortende
\ schtzt ein Zeichen vor der Interpretation. Das kann notwendig werden,
wenn Sie etwa nach einem Dollarzeichen suchen mssen. Dieses wrde ohne
den vorangestellten Backslash als Zeilenende interpretiert werden.
[] Der Ausdruck passt auf die enthaltenen Zeichen. [abcd] ist demnach
zutreffend, wenn der Ausdruck ein a, b, c oder d enthlt. Derselbe Ausdruck
htte auch mit [a-d] beschrieben werden knnen.
[^Zeichen] Der Ausdruck trifft nicht auf Zeichen zu. Hier besteht (auch und
insbesondere in der Prfung) Verwechslungsgefahr mit dem Zeilenanfang!
Prfungstipp
Es ist empfehlenswert, sich zunchst mit den Bestandteilen regulrer Ausdrcke zu
befassen, die von den prfungsrelevanten Programmen (sed, grep, vi) gemeinsam
genutzt werden.
Prfungstipp
Die Zeichenkette ^[^#] erzielt einen Treffer, wenn am Zeilenanfang keine Raute (#) steht.
Der erste Zirkumflex bezeichnet den Zeilenanfang, whrend der zweite das Nicht fr
die Raute darstellt. Denken Sie daran: Das ist ein sehr beliebtes Prfungsthema!
144
GNU- und Unix-Kommandos 103
Wildcards (Joker)
Wildcards ersetzen einzelne Zeichen innerhalb eines Suchmusters.
* bezeichnet null oder beliebig viele Wiederholungen des voranstehenden
Zeichens. Das ist bei Ersetzungen sinnvoller, als es zunchst scheint.
? bezeichnet null oder eine einmalige Wiederholung des voranstehenden Zei-
chens. Dieser Joker wurde von sed und grep ursprnglich nicht untersttzt.
In diesem Fall knnen Sie diesen Joker aber mit egrep verwenden. Neuere
Versionen von grep untersttzen auch das Fragezeichen.
+ bezeichnet das zumindest einmalige Vorkommen des voranstehenden Zei-
chens.
. (Punkt) kann als Platzhalter fr ein beliebiges Zeichen (auer Zeilenvor-
schub) verwendet werden.
Die Verwendung von grep
Mit dem Kommando grep knnen Sie die Zeilen einer Datei nach regulren Aus-
drcken durchsuchen. Die gefundenen Zeilen werden nach stdout ausgegeben.
Der wesentlichste Unterschied zu sed ist der, dass grep keine nderungen an den
Inhalten einer Datei vornimmt. Die Bedeutung von grep ist wohl sinngem
search Globally for Regular Expressions and Print out. Mittlerweile existieren aller-
dings sowohl im Internet als auch in der einschlgigen Fachliteratur viele leicht
abweichende Interpretationen dieses Begriffes.
Bevor es an die praktische Arbeit mit grep und den regulren Ausdrcken geht,
sollten Sie noch die wichtigsten Optionen von grep kennen:
-v invertiert die Ausgabe. Es werden also die Zeilen ausgegeben, auf die der
angegebene regulre Ausdruck nicht zutrifft. Das ist kein Verbose-Mode!
-n fgt dem Suchergebnis eine Zeilennummerierung hinzu.
-E aktiviert die Verwendung von erweiterten regex. Das Programm verhlt
sich dann wie egrep.
Prfungstipp
Achtung: In der Shell ersetzt der Stern (*) mehrere beliebige Zeichen und das Fragezei-
chen (?) ein beliebiges Zeichen. Achten Sie in der Prfung darauf, dies nicht zu verwech-
seln. Beispiele:
archangel:/bin # ls g*
gawk getkeycodes grep guessfstype gunzip gzip
archangel:/bin # ls g???
gawk grep gzip
145
Textdateien mit regulren Ausdrcken durchsuchen 103.7
-c zhlt lediglich die Anzahl der bereinstimmungen mit dem Suchmuster.
-i ignoriert die Gro-/Kleinschreibung.
Beispiele zur Verwendung von grep
archangel:~ # grep Willi Adressliste
Sucht in der Datei Adressliste Zeilen, die das Suchwort Willi enthalten.
archangel:~ # grep [Ww]ill[iy] Adressliste
Sucht in der Datei Adressliste nach Willi, Willy, willi und willy. Die Zei-
chen in den eckigen Klammern verstehen sich hier also als Aufzhlung. Jede
Klammergruppe ersetzt genau ein Zeichen. Ein hnliches Ergebnis liefert das fol-
gende Kommando:
archangel:~ # grep -i will[iy] Adressliste
Mit der Option -i ignoriert grep die Gro-/Kleinschreibung. Allerdings gilt das
dann fr alle Zeichen innerhalb der Zeichenkette. Es wrde demzufolge z.B. auch
der Name wILLy gefunden werden.
Im nchsten Beispiel wird das zweite Zeichen durch einen Punkt ersetzt. Ein
Punkt reprsentiert genau ein beliebiges Zeichen (auer Zeilenvorschub).
archangel:~ # grep W.lli Adressliste
Als Ergebnis wrde in der Adressliste auch Wolli oder Wqlli (falls dieser
Name berhaupt existiert) gefunden werden.
Wenn Sie Konfigurationsdateien untersuchen wollen, kann es passieren, dass
Ihnen die umfangreiche Dokumentation innerhalb dieser Dateien oder berfls-
sige Leerzeilen die bersicht erschweren. Das ist ein klassisches Einsatzgebiet fr
grep in Kombination mit Textankern. Es wird in den folgenden Beispielen davon
ausgegangen, dass die fragliche Konfigurationsdatei mit Rauten (Hashes) am Zei-
lenanfang als Kommentarzeichen arbeitet, wie es unter Linux eigentlich fast
immer der Fall ist. Die folgenden Beispiele sind so ausgewhlt, dass prfungs-
nahe Kommandos zum Einsatz kommen:
archangel:~ # grep [#] /etc/config.conf
Hier werden alle Zeilen ausgegeben, die eine Raute (#) enthalten. Das ist aber
nicht das gewnschte Ergebnis, sondern viel eher das Gegenteil davon. Im nchs-
ten Schritt soll das Ergebnis invertiert werden. Dazu stehen zwei Mglichkeiten
zur Verfgung:
archangel:~ # grep -v [#] /etc/config.conf
archangel:~ # grep [^#] /etc/config.conf
146
GNU- und Unix-Kommandos 103
Die erste Variante invertiert einfach mit der Option -v die Ausgabe von grep. In
der zweiten Zeile wird der Raute ein Nicht vorangestellt. Dieses Nicht muss
unbedingt innerhalb der Klammern gesetzt werden, weil der Inhalt der Klam-
mern genau einem Zeichen entspricht. Wrde das Zeichen vor die Klammer
gestellt, dann wrde es als Zeilenanfang interpretiert werden. Das Ergebnis wre
dann die Ausgabe aller Zeilen, die eine Raute am Zeilenanfang enthalten. Leider
findet das zweite Kommando alle Zeilen, die Zeichen enthalten, die keine Rauten
sind. Da das berhaupt nicht das erwnschte Ergebnis ist, muss das Kommando
wohl noch modifiziert werden, wie Sie gleich noch sehen werden.
Normalerweise stehen Kommentarzeichen am Anfang einer Zeile. Damit
erwnschte Rauten, die inmitten der Konfigurationsdatei auftauchen, nicht mit
ausgesiebt werden, muss die Position des Zeichens noch festgelegt werden:
archangel:~ # grep -v ^[#] /etc/config.conf
archangel:~ # grep ^[^#] /etc/config.conf
Der Zirkumflex steht fr den Zeilenanfang. In der zweiten Version reprsentiert
der erste Zirkumflex den Zeilenanfang und der Zirkumflex innerhalb der Klam-
mern das Nicht. Leider enthlt das Ergebnis noch Leerzeilen. Diese werden im
nchsten Kommando mit einem zweiten grep-Kommando entfernt. Eine Leer-
zeile besteht aus einem Zeichen fr den Zeilenanfang (^) und einem Zeichen fr
das Zeilenende ($). Wenn diese beiden Zeichen aufeinander folgen, dann kann es
sich also nur um eine Leerzeile handeln. grep soll nach diesen Zeilen suchen und
die Ausgabe invertieren:
archangel:~ # grep -v ^[#] /etc/config.conf | grep -v ^$
archangel:~ # grep ^[^#] /etc/config.conf | grep -v ^$
Es folgen nun einige Beispiele, die das Verstndnis fr die mit grep verwendba-
ren regulren Ausdrcke frdern sollen.
Das folgende Kommando gibt Zeilen aus, die entweder die Zeichenkette Wort
allein oder Wort, gefolgt von einer beliebigen Anzahl von Ziffern zwischen 1
und 9, enthalten (Wort, Wort1, Wort47, Wort6279 usw.).
archangel:~ # grep 'Wort[1-9]*\>' Suchdatei
Das Zeichen grer als (>) reprsentiert das Ende des Wortes. Leicht abwei-
chend vom vorangegangenen Beispiel sollen jetzt nur die Zeilen ausgegeben wer-
den, die das Suchmuster Wort enthalten oder Wort, gefolgt von einer einzel-
nen Ziffer.
archangel:~ # grep 'Wort[1-9]\?\>' Suchdatei
Beachten Sie, dass sowohl ein Fragezeichen als auch ein grer als (>) durch
einen Backslash geschtzt werden muss.
147
Textdateien mit regulren Ausdrcken durchsuchen 103.7
Um alle Eintrge aus der Datei /var/log/messages anzuzeigen, die beispielsweise
am 10.12. vorgenommen wurden, knnen Sie folgendes Kommando verwenden:
archangel:~ # grep ^Dec 10 /var/log/messages
Mit dem folgenden Kommando werden alle Zeilen einer Datei angezeigt, die
drei, vier oder fnf aufeinander folgende Einsen enthalten:
archangel:~ # grep '1\{3,5\}' Suchdatei
In diesem Fall mssen die geschweiften Klammern jeweils mit einem Backslash
geschtzt werden. Ohne diesen Schutz wrde grep nach dem Muster 1{3,5} in
der Datei suchen. Diese Konstellation kann verwendet werden, um die Anzahl
der Wiederholungen eines einzelnen Zeichens genau festzulegen. Wildcards
grenzen die Anzahl der Zeichenwiederholung nur grob ein. Wenn Sie lediglich
eine Mindestanzahl von Wiederholungen ohne Limit nach oben angeben wollen,
dann verwenden Sie folgendes Konstrukt:
archangel:~ # grep '1\{3,\}' Suchdatei
Es werden hiermit alle Zeilen ausgegeben, die mindestens drei aufeinander fol-
gende Einsen aufweisen. Die folgende Befehlszeile sucht nach Zeilen, die drei
aufeinander folgende Ziffern beinhalten:
archangel:~ # grep '[0-9]\{3\}' Suchdatei
Wie bereits beschrieben, reprsentieren Angaben in rechteckigen Klammern
immer genau ein Zeichen, in diesem Fall die Ziffern von 0 bis 9. Das so beschrie-
bene Zeichen soll dreimal vorkommen. Die Angabe \{3\} legt genau das fest. Sol-
len stattdessen drei aufeinander folgende Grobuchstaben in einer Zeile enthal-
ten sein, wird folgendes Kommando diese Zeilen auffinden:
archangel:~ # grep '[A-Z]\{3\}' Suchdatei
Denken Sie daran, dass einige Metazeichen durch einen Backslash geschtzt wer-
den mssen, damit grep diese nicht als Suchmusterbestandteil versteht. Diese
Zeichen sind: ?, +, {, }, |, ( und ). Umgekehrt kann es aber auch vorkommen,
dass nach einem Zeichen gesucht werden soll, das grep als Metazeichen verste-
hen wrde. Dann muss auch dieses Zeichen durch einen Backslash geschtzt wer-
den, aber aus dem gegenteiligen Grund. Beispiel:
archangel:~ # grep '\$ [0-9]\{3,\}\>' Suchdatei
Dieses Kommando sucht nach mindestens dreistelligen Dollarbetrgen in einer
Datei. Der erste Backslash sorgt dafr, dass das Dollarzeichen nicht als Metazei-
chen fr das Zeilenende interpretiert wird. Die drei anderen Backslashes schtzen
die geschweiften Klammern und das Grer als-Zeichen davor, als Bestandteil des
Suchmusters interpretiert zu werden.
148
GNU- und Unix-Kommandos 103
Auch ein Slash muss geschtzt werden. Wenn Sie nach Zeilen mit der Pfadangabe
/var/log/ suchen mssen, sollten Sie daran denken, allen Slashes einen Back-
slash voranzustellen:
archangel~ # grep '\/var\/log\/' Suchdatei
Sinngem gilt dasselbe fr die Suche nach Windows-Pfaden, die ja als Trennzei-
chen einen Backslash verwenden. c:\windows\system32\ wrde so gesucht:
archangel~ # grep 'c:\\windows\\system32\\' Suchdatei
Das letzte Beispiel sucht nach Zeilen, die zumindest einen Grobuchstaben ent-
halten. Auch hier muss der Joker durch einen Backslash geschtzt werden:
archangel:~ # grep '[A-Z]\+' Suchdatei
egrep und fgrep
Die beiden Programme egrep (extended) und fgrep (fixed) waren ursprnglich
Varianten von grep mit zustzlichen Fhigkeiten. Beide sind heutzutage eigentlich
nicht mehr ntig, weil grep mit den entsprechenden Optionen dieselben Aufga-
ben ausfhren kann wie egrep und fgrep.
grep -E entspricht egrep.
grep -F entspricht fgrep.
Weil ltere Skripte eventuell noch egrep oder fgrep verwenden, werden diese bei-
den Programme normalerweise weiterhin in Linux-Distributionen gepflegt.
egrep untersttzt einen erweiterten Satz Metazeichen gegenber grep. Entspre-
chend wird bei der Suche auch mehr Rechenzeit bentigt. Das genaue Gegenteil
macht fgrep. Wenn in der zu suchenden Zeichenkette Metazeichen vorkommen,
werden diese als normale Zeichen interpretiert.
Weitere Verwandte von grep sind agrep fr fehlertolerantes Suchen und zgrep fr
die Suche in komprimierten Archiven. Diese sind aber bei der Prfung nicht von
Belang.
Die Verwendung von sed
Der sed ist ein Stream-Editor. Das bedeutet, dass es sich nicht um einen interak-
tiven Editor handelt, wie z.B. vi, nano oder pico. Er liest, wenn keine Datei ange-
geben wird, von der Standardeingabe und gibt das Ergebnis an stdout wieder aus.
Deshalb werden Sie die Ausgabe von sed in eine Datei umleiten mssen, wenn
Sie die nderungen abspeichern wollen. Hierbei darf die Zieldatei nicht mit der
Quelldatei identisch sein. Bei der Ausfhrung des Kommandos mit einem einfa-
149
Textdateien mit regulren Ausdrcken durchsuchen 103.7
chen Redirektor wrde sed die Datei zuerst lschen und dann neu anlegen. Das
Ergebnis wre eine leere Datei. Beispiel:
archangel:~ # sed 's/rumba/samba/g' Suchdatei1 >Suchdatei1
Dieses Kommando hat dann, wie gesagt, eine leere Datei zur Folge! Sie knnen
dieses Problem allerdings umgehen, indem Sie die Option -i (bzw. --in-place)
verwenden. Das entsprechende Kommando wrde dann so aussehen:
archangel:~ # sed -i 's/rumba/samba/g' Suchdatei1
Bei der Arbeit mit sed verwendet man Optionen und Kommandos, wobei die
Optionen allerdings meist eine eher untergeordnete Rolle spielen. Wenn keine
Optionen angegeben werden, kann sed allerdings auch nur ein Kommando mit
einer einzigen Befehlszeile entgegennehmen.
Optionen
-e Kommando Diese Option ist, wenn nur ein einziges Kommando verwendet
wird, optional. Wenn mehrere Kommandos in einer Befehlszeile verwendet
werden sollen, muss diese Option jedem Kommando vorangestellt werden.
-f Scriptdatei Mit dieser Option wird eine Skriptdatei angegeben, die die
Kommandos fr sed enthlt. Diese Methode ist besonders ntzlich, wenn
mehrere sed-Kommandos routinemig ausgefhrt werden mssen.
-g Im Normalfall reagiert sed nur auf das erste Vorkommnis eines Suchmus-
ters innerhalb einer Zeile. Wenn die Option -g gesetzt wird, gelten alle folgen-
den Kommandos als global. Es ist aber auch mglich, eine globale Verfahrens-
weise in ein Kommando aufzunehmen.
Adressierung
Standardmig bearbeitet sed alle Zeilen der angegebenen Datei(en). Es kann
aber vorkommen, dass dieses Verhalten nicht erwnscht ist. Dann mssen Sie
dem Editor mitteilen, an welcher Textposition er seine Arbeit beginnen bzw. auf-
hren soll. Fr diese Positionsangaben verwenden Sie Adressen. Sie knnen eine,
zwei oder gar keine Adresse verwenden. Es gibt grundstzlich nur drei Arten von
Adressen fr sed:
Zeilennummern
das Dollarzeichen ($) fr die letzte Zeile
ein regulrer Ausdruck, der auf beiden Seiten durch Slashes begrenzt wird
(z.B. /regexp/)
Wenn sed eine Datei komplett verarbeiten soll, dann geben Sie einfach gar keine
Adresse ein. Sollen z.B. in einem bestimmten Bereich eines Textes Ersetzungen
150
GNU- und Unix-Kommandos 103
vorgenommen werden, dann geben Sie zwei Adressen an. Diese sind dann durch
ein Komma voneinander zu trennen. Einige Kommandos arbeiten mit nur einer
Adresse. So hngt das Kommando a (append) an einer Zeile Text an, auf die die
Adresse passt. Eine Von-bis-Angabe htte hier wenig Sinn.
Kommandos
Es gibt zwei Methoden, Kommandos an sed zu bergeben. Entweder Sie geben
die Kommandos direkt auf der Kommandozeile ein, oder Sie verwenden ein
Skript. Erfreulicherweise ist die Syntax fr die Kommandos in beiden Fllen
annhernd identisch. Am besten lernen Sie diese Kommandos durch eigenes
Anwenden. Deshalb werden sie im Folgenden anhand einiger Beispiele demons-
triert.
Das erste Beispiel zeigt das Kommando y. Dieses Kommando wird fr die ber-
setzungen von einem Zeichen in ein anderes Zeichen verwendet. Es knnen auch
mehrere Zeichen bersetzt werden, aber z.B. niemals ein Zeichen in drei andere
Zeichen. Es besteht immer eine 1:1-Beziehung, hnlich wie bei dem Kommando
tr. Das folgende Beispiel veranschaulicht die Konvertierung einer kommasepa-
rierten Datei (CSV) in eine semikolonseparierte Datei:
archangel:~ # sed 'y/,/;/' Kommadatei > Semikolondatei
Das Kommando d (delete) lscht ganze Zeilen, wenn ein regulrer Ausdruck
zutrifft, oder auch Zeilen, die mit Adressen angegeben wurden:
archangel:~ # sed -e '/^$/d' -e '/^#/d' /etc/config.conf
Mit dem voranstehenden Befehl wurden sowohl Kommentarzeilen (Hash am Zei-
lenanfang ^#) als auch Leerzeilen (Aufeinanderfolge von Zeilenanfang ^ und Zei-
lenende $) aus einer Konfigurationsdatei entfernt. Da hier zwei Kommandos
gleichzeitig an sed bergeben wurden, musste diesmal der ansonsten optionale
Schalter -e zweimal verwendet werden.
Das nchste Beispiel zeigt die Lschung von Zeilen, basierend auf Adressen:
archangel:~ # sed '25,47d' Originaldatei > Kurzdatei
Bei der Zeichenkette 25,47 handelt es sich um die kommagetrennten Adressen,
hier also Zeilennummern. Das Ergebnis des Kommandos ist die Ausgabe aller Zei-
len von 1 bis 24 und der Zeilen 48 bis zum Ende.
Sie knnen die Ausgabe des Kommandos auch einfach invertieren, indem Sie
zustzlich ein Ausrufezeichen verwenden:
archangel:~ # sed '25,47!d' Originaldatei > Kurzdatei
151
Textdateien mit regulren Ausdrcken durchsuchen 103.7
Als Ergebnis werden die Zeilen 25 bis 47 ausgegeben. Alle anderen Zeilen wer-
den gelscht.
Mit der Substitution s knnen Zeichen bersetzt werden. Im Vergleich zu y ist
dieses Kommando leistungsfhiger, weil es auch mehrere Zeichen in ein einziges
Zeichen berfhren kann und umgekehrt:
archangel:/textfiles # sed 's/ue//' Namensliste
Mit diesem Befehl wird das erste in einer Zeile gefundene ue in ein bersetzt.
Der Befehl kann durch das Hinzufgen des sed-Kommandos g globalisiert wer-
den. Dadurch wird sichergestellt, dass sed auch bei mehrfachem Auftreten der
Zeichenkette ue innerhalb einer Zeile diese ebenfalls in ein bersetzt:
archangel:/textfiles # sed 's/ue//g' Namensliste
Wenn Sie eine ganze Serie von Kommandos an sed bergeben wollen, empfiehlt
sich die Verwendung einer Skriptdatei. Es ist zu beachten, dass die Kommandos
innerhalb der Skriptdatei einzeln und zudem nacheinander abgearbeitet werden.
Wenn das erste Kommando einige Zeilen lscht und das zweite Kommando Zei-
lennummern als Adressen verwendet, dann sind diese Zeilennummern durch die
Ausfhrung des ersten Kommandos verschoben. Dieser Umstand muss bei der
Planung eines Skripts bercksichtigt werden.
Das letzte Beispiel demonstriert, wie sed mit einer Skriptdatei verwendet wird,
um die Umlaute einer Textdatei in ein HTML-taugliches Format zu konvertieren.
Die Meta-Tags fr HTML mssen nachtrglich eingefgt werden. Zunchst wird
die Skriptdatei mit folgendem Inhalt erstellt:
archangel:~ # cat sed-umltohtml-script
s//\&auml\;/g;
s//\&Auml\;/g;
s//\&uuml\;/g;
s/U/\&Uuml\;/g;
s//\&ouml\;/g;
s//\&Ouml\;/g;
s//\&szlig\;/g;
Danach wird diese Serie von Kommandos mit sed -f auf die Quelldatei (umltext)
angewendet und das Ergebnis in eine neue Textdatei (htmltext) umgeleitet. Der
Backslash schtzt jeweils das Et-Zeichen vor der Interpretation. Aus wird dann
beispielsweise &auml;:
archangel:~ # sed -f sed-umltohtml-script umltext > htmltext
152
GNU- und Unix-Kommandos 103
Das war ein sehr einfaches Beispiel. Sie knnen mit sed noch wesentlich komple-
xere Arbeiten ausfhren. Fr die Prfung jedoch ist das hier Beschriebene mehr
als ausreichend.
103.8 Grundlegendes Editieren von Dateien mit dem vi
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, Textdateien mit dem vi zu edi-
tieren. Dieses Prfungsziel umfasst vi-Navigation, grundlegende vi-Modi, Einf-
gen, ndern, Lschen, Kopieren und Finden von Text.
Wichtigste Wissensgebiete:
mit vi in einem Dokument navigieren
grundlegende vi-Modi verwenden
Text einfgen, ndern, lschen, kopieren und finden
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
vi
/, ?
h, j, k, l
i, o, a
c, d, p, y, dd, yy
ZZ, :w!, :q!, :e!
Allgemeines
Der vi ist ein interaktiver Editor fr Dateien, die im Textformat vorliegen. Er ist
ein Nachfahre des Editors ed, weshalb er auch etliche Kommandos genauso
untersttzt wie sein Vorgnger. Es gibt inzwischen mehrere Derivate des vi, wie
vim, elvis, vile usw. Es ist heutzutage sogar wahrscheinlich, dass auf Ihrem
Linux-Computer vim als Editor gestartet wird, auch wenn Sie das Kommando vi
eingeben. Der Befehl vi folgt dann einem Softlink, der auf den vim zeigt. Wenn
Sie den vi bedienen knnen, werden Sie kaum in die Verlegenheit kommen, kei-
nen Editor vorzufinden, den Sie bedienen knnen, wenn Sie sich mit einer Ihnen
noch unbekannten Linux- oder Unix-Version befassen. Prfungsfragen zum vi
sind normalerweise nicht in groer Zahl zu erwarten. Leider sind diese Fragen
dafr aber ziemlich schwierig, weil viele Optionen und Kommandos abgefragt
153
Grundlegendes Editieren von Dateien mit dem vi 103.8
werden, die Sie nicht unbedingt jeden Tag brauchen. Unterschtzen Sie also nicht
die Relevanz der in den folgenden Abschnitten behandelten Themen.
Bedienungsgrundlagen
Start
Sie knnen den Editor einfach durch Ausfhren des Kommandos vi starten oder
gleichzeitig ein bzw. mehrere Dokumente laden. Mehrere Dokumente werden
durch Leerzeichen voneinander getrennt angegeben:
archangel:/textfiles # vi text1 text2
Wenn mehrere Dokumente geladen wurden, knnen Sie mit :n (vorwrts) oder
:N (rckwrts) zwischen den Dokumenten wechseln.
Modi
Wenn Sie den vi gerade gestartet haben, befindet sich der Editor im Kommando-
modus. In diesem Modus knnen Sie den Text nicht direkt bearbeiten. Sie knnen
sich lediglich im Text fortbewegen, Zwischenablagenoperationen durchfhren,
Lschungen vornehmen, nach Schlsselworten suchen, die Datei speichern usw.
Im Einfgemodus schreiben Sie Text wie mit jedem anderen Editor auch. Sie
gelangen vom Kommandomodus in den Einfgemodus, indem Sie entweder die
Taste i oder die Taste a bettigen.
i wechselt vor der aktuellen Cursorposition in den Einfgemodus.
I wechselt am Anfang der aktuellen Zeile in den Einfgemodus.
a wechselt hinter der aktuellen Cursorposition in den Einfgemodus.
A wechselt am Ende der aktuellen Zeile in den Einfgemodus.
Wie Sie sehen, gibt es bei der Auswahl der Krzel einen logischen Zusammen-
hang, so dass Sie sich die Kommandos leicht merken knnen. Um wieder in den
Kommandomodus zurckzugelangen, bettigen Sie einfach die (Esc)-Taste. Bei
den meisten Versionen und Derivaten des vi wird in einer der unteren Ecken
--insert-- angezeigt, wenn Sie sich im Einfgemodus befinden. Der Komman-
domodus wird blicherweise nicht gesondert angezeigt.
Beenden und speichern
Sie knnen den vi nur beenden oder ein Dokument speichern, wenn sich der
Editor im Kommandomodus befindet. Folgende Kommandos sollten Sie in die-
sem Zusammenhang kennen:
154
GNU- und Unix-Kommandos 103
:w dateiname speichert die Datei unter dateiname. Sollte die Datei bereits exis-
tieren, ist die Angabe des Dateinamens optional.
:w! speichert die Datei nach Mglichkeit auch dann, wenn sie schreibge-
schtzt ist.
:wq speichert die aktuelle Datei und beendet den Editor.
:x speichert die aktuelle Datei und beendet den Editor.
ZZ speichert die aktuelle Datei und beendet den Editor. Der fehlende Doppel-
punkt ist kein Druckfehler!
:q beendet den Editor. Bearbeitete Dateien mssen vorher gespeichert wor-
den sein.
:q! beendet den vi auch dann, wenn Dateien noch nicht gespeichert wurden.
Die nderungen an diesen Dateien gehen verloren.
:e dateiname ffnet die Datei dateiname. Die aktuelle Datei wird geschlossen
(versionsabhngig!). Die ursprngliche Datei muss vorher gespeichert werden.
Sie sollten diese Kommandos auch dann schon kennen, wenn Sie den vi nur aus-
probieren. Es ist nmlich nicht wie in den meisten anderen Programmen mg-
lich, moderne Versionen des vi mit (Strg) + (C) zu beenden.
Navigation in einem Dokument
Normalerweise werden Sie mit den Cursortasten in einem Textdokument navi-
gieren. Das ist auch sinnvoll, weil Sie ansonsten immer zuerst in den Kommando-
modus wechseln mssten, um sich im Text fortzubewegen. Die Cursortasten funk-
tionieren nmlich auch im Einfgemodus. Es gibt allerdings mindestens eine
Situation, in der Sie wissen mssen, wie innerhalb des vi ohne Cursortasten navi-
giert wird, nmlich dann, wenn Sie eine Terminalsoftware verwenden, die den
Editor-Block der Tastatur nicht korrekt bersetzt. Um diese Kommandos ausfh-
ren zu knnen, muss der Editor natrlich im Kommandomodus verwendet wer-
den. Die wichtigsten Bewegungskommandos sind:
h bewegt den Cursor um ein Zeichen nach links.
j bewegt den Cursor um ein Zeichen nach unten.
k bewegt den Cursor um ein Zeichen nach oben.
l bewegt den Cursor um ein Zeichen nach rechts.
G bewegt den Cursor zum Ende der Datei.
gg bewegt den Cursor zum Anfang der Datei.
H bewegt den Cursor zum oberen Bildschirmrand.
L bewegt den Cursor zum unteren Bildschirmrand.
155
Grundlegendes Editieren von Dateien mit dem vi 103.8
Sie knnen diesen Buchstaben auch Zahlen voranstellen, um mehrere Bewegun-
gen auf einmal auszufhren. So wird 20j den Cursor um 20 Zeilen nach unten
verschieben. Es gibt zudem Prfungsfragen zu kombinierten Bewegungen. Wenn
Sie z.B. um drei Zeilen nach oben und um vier Zeichen nach rechts navigieren
wollen, verwenden Sie 3k4l. Der vi wird die Kommandos 3k und 4l dann aller-
dings getrennt ausfhren.
Es gibt noch viele andere Zeichen, mit denen die Cursorbewegung (Wortweise,
Satzweise usw.) gesteuert werden kann. Diese sind aber fr die LPI-Prfung nicht
von Bedeutung.
Einfgen, Lschen, Kopieren und Auffinden von Text
Im Kommandomodus stehen Ihnen viele Mglichkeiten zur Bearbeitung eines
Textes zur Verfgung. Die folgenden Kommandos sollten Sie unbedingt kennen:
yy (yank) kopiert den Inhalt der aktuellen Zeile in die Zwischenablage.
p (paste) fgt den Inhalt der Zwischenablage unterhalb der Zeile, in der sich
der Cursor befindet, ein.
P (Paste) fgt den Inhalt der Zwischenablage oberhalb der Zeile, in der sich der
Cursor befindet, ein.
dd (delete) lscht die komplette Zeile, in der sich der Cursor befindet.
D (Delete) lscht den Text hinter dem Cursor bis zum Ende der Zeile.
cc (cut) schneidet die komplette Zeile aus, in der sich der Cursor befindet. Die
ausgeschnittene Zeile wird in die Zwischenablage kopiert. Anschlieend
wechselt vi automatisch in den Einfgemodus.
C (Cut) schneidet den Text hinter dem Cursor bis zum Ende der Zeile aus. Der
ausgeschnittene Text wird in die Zwischenablage kopiert. Anschlieend wech-
selt vi automatisch in den Einfgemodus.
o generiert eine neue Zeile unterhalb der Zeile, in der sich der Cursor aktuell
befindet. Anschlieend wechselt vi automatisch in den Einfgemodus.
O generiert eine neue Zeile oberhalb der Zeile, in der sich der Cursor aktuell
befindet. Anschlieend wechselt vi automatisch in den Einfgemodus.
/regexp sucht nach der Zeichenkette regexp.
/ sucht nach dem nchsten Vorkommen der Zeichenkette regexp.
? sucht rckwrts nach dem vorherigen Vorkommen der Zeichenkette regexp.
:!kommando fhrt das Skript mit der Bezeichnung kommando aus. Der Editor
bleibt hierbei weiterhin geffnet.
156
GNU- und Unix-Kommandos 103
Wenn ein Kommando mehrfach ausgefhrt werden soll, dann wird diesem Kom-
mando einfach ein numerischer Wert vorangestellt, der die Anzahl der Ausfh-
rungen des Befehls festlegt. Beispiel:
17dd lscht 17 Zeilen (die aktuelle Zeile und die 16 folgenden).
54yy kopiert 54 Zeilen in die Zwischenablage.
12cc schneidet die aktuelle und die elf folgenden Zeilen aus.
Befehlszeilenoptionen fr vi
Sie knnen bereits beim Starten des Editors einige anfngliche Bedingungen fest-
legen. Bei der Prfung wird es sich bei diesen anfnglichen Bedingungen wahr-
scheinlich um die Cursorposition handeln. Wenn Sie die Datei text1 so ffnen
wollen, dass der Cursor gleich in Zeile 65 positioniert wird, geben Sie folgendes
Kommando ein:
archangel:/textfiles # vi text1 +65
Eine andere Variante ist die Positionierung des Cursors mit einem Suchmuster.
Wenn Sie die Datei text1 so ffnen wollen, dass der Cursor sofort in der ersten
Zeile erscheint, in der beispielsweise das Wort Pinguin gefunden wird, geben Sie
diesen Befehl ein:
archangel:/textfiles # vi text1 +/Pinguin
Diese Befehlszeilenoptionen wurden vom Editor ex bernommen.
Prfungstipp
Die in den letzten Abschnitten besprochenen Kommandos fr den vi wurden sehr sorg-
fltig und prfungsnah ausgesucht. Sie sollten zumindest diese Kommandos kennen,
wenn Sie zur Prfung gehen.
157
Im nchsten Themenkomplex soll dargestellt werden, was alles ntig ist,
um Daten sicher auf einem Medium speichern zu knnen und die Zugriffs-
rechte auf diese Dateien professionell zu handhaben.
Topic 104: Gerte, Linux-Dateisysteme,
Filesystem Hierarchy Standard
104.1 Partitionen und Dateisysteme anlegen
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, Plattenpartitionen zu konfigu-
rieren und danach Dateisysteme auf Medien wie Festplatten anzulegen. Dies
umfasst auch den Umgang mit Swap-Partitionen.
Wichtigste Wissensgebiete:
verschiedene mkfs-Kommandos verwenden, um Partitionen zu installieren
und verschiedene Dateisysteme anzulegen wie:
ext2/ext3/ext4
xfs
reiserfs v3
vfat
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
fdisk
mkfs
mkswap
Allgemeines
Wenn Sie fr einen neuen Computer die Verzeichnisstruktur planen, gibt es ver-
schiedene Faktoren zu bercksichtigen. Die Festplattenaufteilung ist insofern
wichtig, als sie sich nachtrglich nicht ohne Weiteres ndern lsst. In den folgen-
den Abschnitten geht es allerdings vornehmlich um die Erzeugung der Dateisys-
teme im Sinne von Partitionierung und Formatierung.
158
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Erzeugen der Partitionen
Wenn Sie Partitionen auf einer Festplatte erstellen wollen, stehen Ihnen norma-
lerweise, unabhngig von der verwendeten Distribution, die Werkzeuge fdisk
und cfdisk zur Verfgung. Das Programm cfdisk ist mengefhrt und intuitiv
bedienbar. Da in den LPI-Prfungen ausschlielich der traditionelle fdisk behan-
delt wird, soll auf die Bedienung von cfdisk in diesem Buch verzichtet werden.
Wenn fdisk gestartet wird, mssen Sie zumindest als Argument die zu bearbei-
tende Festplatte angeben. Wenn Sie lediglich die aktuelle Partitionierung der
Festplatte einsehen wollen, knnen Sie die Option -l (list) verwenden:
archangel:~ # fdisk /dev/hda -l
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 7 56196 83 Linux
/dev/hda2 8 2401 19229805 83 Linux
/dev/hda3 2402 2495 755055 82 Linux swap
/dev/hda4 2496 9729 58107105 83 Linux
Wenn Sie beabsichtigen, die Partitionierung eines Datentrgers zu ndern, sollten
Sie die aktuelle Belegung genau kennen. Am besten drucken Sie die Liste aus
oder schreiben Sie sie ab. Eine bersicht ber alle Partitionen smtlicher Festplat-
ten eines Computers knnen Sie im /proc-System abfragen. Gehen Sie dazu fol-
gendermaen vor:
archangel:~ # cat /proc/partitions
major minor #blocks name
3 0 78150744 hda
3 1 56196 hda1
3 2 19229805 hda2
3 3 755055 hda3
3 4 58107105 hda4
8 16 156290904 sdb
8 17 156288321 sdb1
Wenn Sie mittels fdisk eine Festplatte partitionieren wollen, starten Sie fdisk,
und geben Sie die Festplatte mit Ihrer Gertedatei an:
archangel:~ # fdisk /dev/hda
Durch einfaches Bettigen der Taste n (new) erstellen Sie, interaktiv gefhrt, eine
neue Partition. Das folgende Beispiel demonstriert die Erstellung einer 500 MB
groen primren Partition auf einem SCSI-Laufwerk. Die vom Root gettigten
Eingaben werden durch Fettdruck hervorgehoben.
159
Partitionen und Dateisysteme anlegen 104.1
[root@fedora16 ~]# fdisk /dev/sdb
Der fdisk ist gestartet und wartet auf weitere Befehle.
Befehl (m fr Hilfe): n
Befehl Aktion
e Erweiterte
p Primre Partition (1-4)
Durch das n wurde das Erstellen einer neuen Partition eingeleitet. Als Nchstes
muss festgelegt werden, ob die Partition eine primre oder eine erweiterte Parti-
tion werden soll. Das p sagt primr:
p
Partitionsnummer (1-4): 1
Die Partitionsnummer wurde also auf 1 festgelegt. Htte es sich um eine Fest-
platte mit bestehenden Dateisystemen gehandelt, wre sptestens jetzt eine
genaue Kenntnis der bestehenden Partitionen erforderlich. Als Nchstes wird der
Startzylinder angegeben. Bei einer fabrikneuen Festplatte bietet sich Zylinder 1
frmlich an. Also wird der Vorgabewert einfach durch Bettigen der Eingabetaste
bernommen.
Erster Zylinder (1-1044, Vorgabe: 1):
Das Programm besttigt diese Angabe und fragt anschlieend nach dem Ende der
zu erstellenden Partition. Mit dem Pluszeichen wird die Einheit fr die Gre der
Partition in Byte, Kilobyte oder Megabyte festgelegt. Eine numerische Eingabe
ohne Pluszeichen steht fr die Angabe des Endzylinders. Die Angabe des Endzy-
linders ist whrend der Installation besonders interessant, damit man das Datei-
system fr /boot bequem innerhalb der ersten 1.024 Zylinder positionieren kann.
Sie brauchen sich dann nicht mehr zu berlegen, wie gro die Partition wohl
hchstens, in Megabyte gerechnet, sein darf. In diesem Beispiel soll aber eine
500-MB-Partition fr Daten erstellt werden:
Benutze den Standardwert 1
Letzter Zylinder oder +Gre, +GreK oder +GreM (1-1044,
Vorgabe: 1044): +500MB
Das Ergebnis sollte anschlieend unbedingt geprft werden:
Befehl (m fr Hilfe): p
Platte /dev/sdb: 8589 MByte, 8589934592 Byte
255 heads, 63 sectors/track, 1044 cylinders
Einheiten = Zylinder von 16065 512 = 8225280 Bytes
160
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Gert boot. Anfang Ende Blcke Id System
/dev/sdb1 1 62 497983+ 83 Linux
Nachdem die Konfiguration geprft und fr gut befunden wurde, kann die Parti-
tionstabelle auf die Festplatte geschrieben werden. Bis jetzt hat noch kein
Schreibzugriff stattgefunden!
Befehl (m fr Hilfe): w
Die Partitionstabelle wurde verndert!
Rufe ioctl() um Partitionstabelle neu einzulesen.
Synchronisiere Platten.
Der Vorgang ist nun abgeschlossen, und die Partition kann formatiert werden.
Vorher sollen aber noch ein paar Kommandos fr fdisk erlutert werden. Um
alle verfgbaren Optionen von fdisk anzuzeigen, bettigen Sie die Taste m
(menu).
a (activate) legt die aktive Partition fest. Dieses Flag wird vom BIOS ausgewer-
tet und fr Betriebssysteme bentigt, die ber kein Startprogramm im MBR
verfgen.
d (delete) lscht eine Partition.
l (list) zeigt alle von fdisk untersttzten Dateisysteme an.
m (menu) zeigt das Men an.
n (new) erstellt eine neue Partition.
p (print) zeigt die aktuelle Partitionstabelle an.
q (quit) verwirft alle nderungen und beendet fdisk.
t (type) ndert den Dateisystemtyp einer Partition.
u (units) ndert die Einstellung fr die Einheit der Anzeige (z.B. fr p).
v (verify) berprft die Partitionstabelle.
w (write) schreibt alle nderungen in die Partitionstabelle.
x (extra) ergibt ein zustzliches Men mit hardwarenahen Optionen.
Wenn Sie p bettigen, werden Sie feststellen, dass Linux sehr viele Dateisystemar-
ten untersttzt. Sie sollten allerdings dem Typ 83 (Linux) den Vorzug geben,
damit Sie bei der Formatierung ein fr Linux optimales Dateisystem (ext2, ext3,
ext4 oder ReiserFS) erstellen knnen. Fr ein Swap-Dateisystem ist der Typ 82
erforderlich. Sie sollten die anderen verfgbaren Dateisystemtypen nur dann ver-
wenden, wenn Sie mit anderen Betriebssystemen ber die zu erstellende Parti-
tion Dateien austauschen mssen. Die gngigsten Kennungen sind:
161
Partitionen und Dateisysteme anlegen 104.1
7 HPFS/Windows NTFS
c Windows 95 FAT-32 (LBA)
f Windows 95, erweiterte Partition (LBA)
82 Linux Swap
83 Linux (fr alle Linux-Dateisysteme, wie z.B. ext2, ext3, ext4, ReiserFS
usw.)
85 Linux Extended
8e Linux LVM
Formatieren der Dateisysteme
Nachdem Sie eine Partition mit fdisk erstellt haben, muss diese noch formatiert
werden. Hierbei vollzieht sich die eigentliche Erstellung des Dateisystems. Der
fdisk modifiziert lediglich die Partitionstabelle. Das wichtigste Formatierungs-
werkzeug unter Linux ist mkfs. Eigentlich handelt es sich hierbei um ein Frontend,
das je nach zu formatierendem Dateisystem ein passendes Backend-Programm
ausfhrt. Sie finden mkfs mit den zugehrigen Backends im Verzeichnis /sbin.
Einige von diesen Backends sind lediglich Hardlinks oder Softlinks, die die Bedie-
nung, unabhngig vom verwendeten Dateisystem, vereinheitlichen sollen. Die
Backends sind:
mkfs.ext2 erstellt sowohl ext2- als auch ext3-Dateisysteme. Zur Formatierung
mit ext3 wird die Option -j (Journal) verwendet.
mkfs.ext3 ist normalerweise ein Hardlink auf mkfs.ext2. Durch den Aufruf
erkennt das Programm, welches Dateisystem formatiert werden soll.
mkfs.ex4 ist genauso wie seine Artverwandten lediglich ein Link.
mkfs.reiserfs erstellt das Linux ReiserFS-Dateisystem.
mkfs.msdos erstellt MS-DOS-Dateisysteme unter Linux. Sie knnen von Parti-
tionen, die mit mkfs.msdos erstellt wurden, kein Betriebssystem starten. Nor-
malerweise handelt es sich bei mkfs.msdos um einen Softlink zu mkdosfs.
mkfs.vfat ist ein weiterer Softlink auf mkdosfs.
mkfs.ntfs erstellt NTFS-Dateisysteme unterschiedlicher Versionen. Momen-
tan werden alle Windows-Systeme (bis einschlielich Vista) untersttzt.
mkfs.xfs erstellt das ursprnglich fr IRIX entwickelte 64-Bit-Dateisystem
XFS. XFS pflegt ein Journal, hnlich wie ReiserFS und untersttzt die Verwen-
dung von Zugriffssteuerungslisten. Leider sind die Datenverluste bei einem
Stromausfall im System relativ gro.
162
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
mkfs.cramfs erstellt das Dateisystem cramFS. Hierbei handelt es sich um ein
komprimiertes Read-Only-Dateisystem, das eigentlich ausschlielich fr
Embedded Systems eingesetzt wird, auf die nicht schreibend zugegriffen wer-
den muss.
mkfs.jfs erstellt das Dateisystem JFS, das ursprnglich fr das Betriebssystem
AIX entwickelt wurde.
mkfs und mke2fs
Die beiden wichtigsten Frontends zur Formatierung sind mkfs und mke2fs. Bei
mke2fs handelt es sich allerdings erneut lediglich um einen Hardlink, nmlich auf
mkfs.ext2, mkfs.ext3 bzw. mkfs.ext4. Bei manchen Distributionen stimmt der
Aufruf der Verlinkungen nicht. So kommt es vor, dass mkfs nach den Program-
men mkfs.ex2 und mkfs.ex3 sucht (beachten Sie das fehlende t). Nennen Sie
die beiden Dateien einfach entsprechend um, wenn dieser Fehler bei Ihnen auf-
tritt:
[root@fedora16 ~]# mv /sbin/mkfs.ext2 /sbin/mkfs.ex2
[root@fedora16 ~]# mv /sbin/mkfs.ext3 /sbin/mkfs.ex3
Wenn Sie mkfs verwenden, bentigen Sie vor allem folgende Optionen:
-t (type) legt den zu formatierenden Dateisystemtyp fest.
-c (check) prft das Gert auf fehlerhafte Sektoren.
-v (verbose) erzeugt eine informativere Ausgabe.
-j (journal) erstellt ein Journal fr ext3.
-L Bezeichnung (Label) erstellt ein Volumenlabel.
ext2 und ext3
Beachten Sie die Besonderheit bei der Erstellung von ext3-Dateisystemen. Wie
Sie bereits gelesen haben, stellen die Formatierungs-Backends fr ext2 und ext3
ein und dasselbe Programm dar. Das ist auch sinnvoll, weil es sich nmlich bei
ext3 um ein ext2-Dateisystem handelt, das lediglich um ein Journal erweitert
wurde. Sie knnen sogar ein bestehendes ext2-Dateisystem um ein Journal
erweitern. Sie erhalten dann ein vollwertiges ext3-Dateisystem. Wenn Sie z.B. die
ext2-Partition /dev/hdb3 nach ext3 konvertieren wollen, geben Sie folgendes
Kommando ein:
Prfungstipp
Fr die Prfung mssen Sie sich aber vor allem mit der Bedienung der Frontend-Pro-
gramme auseinandersetzen.
163
Partitionen und Dateisysteme anlegen 104.1
[root@fedora16 ~]# tune2fs -j /dev/hdb3
tune2fs 1.40.2 (12-Jul-2007)
Erstelle Journal-Inode: erledigt
Das Dateisystem wird automatisch alle 26 Mounts bzw. alle 180 Tage
berprft, je nachdem, was zuerst eintritt. Vernderbar mit tune2fs
-c oder -t .
Bei der Formatierung knnen Sie deshalb entweder ext3 als Dateisystem ange-
ben, oder Sie whlen ext2 mit der Option -j. Sie knnen deshalb wahlweise die
folgenden beiden Kommandos verwenden:
[root@fedora16 ~]# mkfs -t ex3 /dev/sdb1
oder:
[root@fedora16 ~]# mkfs -t ex2 -j /dev/sdb1
Beide Kommandos erzeugen zudem die gleiche Ausgabe. Beachten Sie bitte, dass
in Wirklichkeit mke2fs aufgerufen wird:
mke2fs 1.40.2 (12-Jul-2007)
Dateisystem-Label=
OS-Typ: Linux
Blockgre=1024 (log=0)
Fragmentgre=1024 (log=0)
124928 Inodes, 497980 Blcke
24899 Blcke (5.00 %) reserviert fr den Superuser
erster Datenblock=1
Maximum filesystem blocks=67633152
61 Blockgruppen
8192 Blcke pro Gruppe, 8192 Fragmente pro Gruppe
2048 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blcken:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
Schreibe Inode-Tabellen: erledigt
Erstelle Journal (8192 Blcke): erledigt
Schreibe Superblcke und Dateisystem-
Accountinginformationen: erledigt
Das Dateisystem wird automatisch alle 36 Mounts bzw. alle 180 Tage
berprft, je nachdem, was zuerst eintritt. Vernderbar mit tune2fs
-c oder -t.
ext3 und ext4
Bisher sind alle ext-Dateisysteme aufwrtskompatibel. Deshalb knnen Sie ein
ext3-Dateisystem auch problemlos in ein ext4-Dateisystem konvertieren. Hierbei
kommt wieder das Programm tune2fs zum Einsatz. Wenn die zu konvertierende
164
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Partition mit der Gertedatei /dev/sdb1 verknpft ist, sieht der Aufruf des Pro-
gramms so aus:
[root@fedora16 ~]# tune2fs -O extents,uninit_bg,dir_index /dev/sdb1
Sie sollten allerdings bercksichtigen, dass die Konvertierung gegenber der
Neuerstellung des Dateisystems Nachteile mit sich bringt. So profitieren von den
neuen Features, die ext4 mitbringt, lediglich die Dateien, die erst nach der Kon-
vertierung auf dem Datentrger gespeichert wurden.
Vorteile von ext4 gegenber ext3 sind:
grere Volumen mit bis zu 1 EiB (Exbibyte)
Onlinedefragmentierung mglich
Zeitstempel in Nanosekunden
Extents zur besseren Verwaltung groer Dateien
schnelle Schreibzugriffe durch Preallokation von Blcken
geringere Fragmentierung
mkswap
Wenn Sie eine Swap-Partition formatieren wollen, bentigen Sie das Programm
mkswap. Die Partition (Typ 82) muss zuvor mit fdisk erzeugt werden.
[root@fedora16 ~]# mkswap /dev/sdb4
Swapbereich Version 1 wird angelegt, Gre 1011703 KBytes
Damit Linux die neu erstellte Swap-Partition verwendet, muss sie mit dem Kom-
mando swapon aktiviert werden.
[root@fedora16 ~]# swapon -v /dev/sdb4
swapon fr /dev/sdb4
Ohne die Option -v erhalten Sie keine Besttigung darber, dass die neue Swap-
Partition verwendet wird. Umgekehrt knnen Sie die Verwendung einer Swap-
Partition abschalten, indem Sie das Kommando swapoff verwenden. Was die
Redseligkeit von swapoff betrifft, gilt das Gleiche wie fr swapon. Die Option -v
kann also auch hier nicht schaden:
[root@fedora16 ~]# swapoff -v /dev/sdb4
swapoff fr /dev/sdb4
Damit die neue Swap-Partition gleich nach dem Systemstart verfgbar wird, muss
die Datei /etc/fstab bearbeitet werden. Tragen Sie die Swap-Partition hier folgen-
dermaen ein (der genaue Aufbau der Datei /etc/fstab wird im Kapitel Topic
104: Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard erlutert):
165
Partitionen und Dateisysteme anlegen 104.1
/dev/sdb4 swap swap pri=42 0 0
Erstellen einer Swap-Datei
Im Gegensatz zu Windows verwendet Linux im Normalfall keine Swap-Datei,
sondern, wie bereits beschrieben, ganze Swap-Partitionen. Das hat vor allem den
Vorteil, dass es nicht zu einer Fragmentierung des Auslagerungsbereiches kom-
men kann. Sollte es aber kurzfristig im Speicher einmal eng werden, knnen Sie
ohne groen Aufwand schnell eine Swap-Datei (mit all ihren Nachteilen) erzeu-
gen. Verwenden Sie dazu folgendes Kommando:
archangel:~ # dd if=/dev/zero of=/swapfile bs=1024 count=524288
524288+0 Datenstze ein
524288+0 Datenstze aus
Der dd-Befehl bewirkt hier Folgendes: Aus dem Zero Device (/dev/zero) werden
Nullen in die noch nicht existierende Datei swapfile kopiert. Die Blockgre ist
auf 1024 Bytes festgelegt. Das Ganze geschieht 524288-mal. Durch diese Prozedur
entsteht eine Datei, die aus 512 MB Nullen besteht. Diese Datei kann anschlie-
end als Swap File formatiert werden. Das geht deshalb so einfach, weil Linux
nicht zwischen einer normalen Datei (hier: /swapfile) und einer Gertedatei (z.B.
/dev/sdb4 fr Swap-Partition) unterscheidet.
archangel:~ # mkswap /swapfile
Swapbereich Version 1 wird angelegt, Gre 524288 KBytes
Zur Aktivierung der Swap-Datei geben Sie, wie gehabt, dieses Kommando ein:
archangel:~ # swapon /swapfile
Damit ein Swap File gleich nach dem Systemstart verfgbar wird, muss die Datei
/etc/fstab bearbeitet werden. Tragen Sie die Swap-Datei hier wie jedes andere
Dateisystem auch ein (der genaue Aufbau der Datei /etc/fstab wird in Abschnitt
104.3 im Zusammenhang mit dem mount-Kommando erlutert):
/swapfile swap swap defaults 0 0
Nach dem Hinzufgen der neuen Swap-Datei und ihrer Aktivierung vergewissern
Sie sich, dass sie wirklich aktiv ist, indem Sie die Ausgabe der Befehle cat /proc/
swaps oder free durchfhren:
archangel:~ # cat /proc/swaps
Filename Type Size Used Priority
/dev/hda3 partition 755044 0 42
/dev/hdb2 partition 755044 0 41
/swapfile file 524288 0 40
166
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
104.2 Die Integritt von Dateisystemen sichern
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, ein Standarddateisystem und
die zustzlichen Daten eines Journaling-Dateisystems zu verwalten.
Wichtigste Wissensgebiete:
die Integritt von Dateisystemen berprfen
freien Platz und verfgbare Inodes berwachen
einfache Probleme von Dateisystemen reparieren
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
du
df
fsck
e2fsck
mke2fs
debugfs
dumpe2fs
tune2fs
xfs-Werkzeuge (etwa xfs_metadump und xfs_info)
Allgemeines
Auf den letzten Seiten haben Sie einiges ber die Erstellung von Dateisystemen
erfahren. Sie sollten aber auch in der Lage sein, die Integritt dieser Dateisysteme
sicherzustellen und kleinere Probleme zu erkennen und zu beseitigen. Hierzu
zhlt auch die Mglichkeit, Engpsse bei der Speicherkapazitt zu ermitteln und
bei einem berfllten Dateisystem festzustellen, wo der Speicherplatz verbraucht
wird.
Prfungstipp
Fr die Prfung sollten Sie sich besonders mit der Verwendung der Frontends und den
Besonderheiten bei der Erstellung von ext3 im Verhltnis zu ext2 vertraut machen.
167
Die Integritt von Dateisystemen sichern 104.2
Sicherstellen der Integritt des Dateisystems und Problembehebung
fsck und e2fsck
Das Programm fsck ist ein Frontend zur berprfung von Dateisystemen. Es ruft
zur Laufzeit andere Programme auf, die auf die berprfung der jeweiligen Datei-
systeme spezialisiert sind. Zur berprfung von ext2- oder ext3-Dateisystemen
gibt es zustzlich das Programm e2fsck. Hierbei handelt es sich lediglich um einen
Hardlink mit den Programmen fsck.ext2, fsck.ext3 und fsck.ext4. Die Bezie-
hungen zwischen den Frontend- und den Backend-Programmen zur Dateisystem-
prfung hneln stark denen zwischen Formatierungsfrontends und -backends.
Die Backends zur Dateisystemprfung knnen natrlich auch direkt angespro-
chen werden. Dies sind:
fsck.ext2 prft ext2- und ext3-Dateisysteme. Dieses Backend ist hart verlinkt
mit fsck.ext3 und e2fsck.
fsck.ext3 ist ein Hardlink zu fsck.ext2 und e2fsck.
fsck.ext4 ist ebenfalls lediglich ein Hardlink zu den oben genannten Pro-
grammen.
fsck.reiserfs prft ReiserFS-Dateisysteme.
fsck.minix prft minix-Dateisysteme.
fsck.cramfs prft cramFS-Dateisysteme.
fsck.xfs prft XFS-Dateisysteme.
fsck.jfs prft JFS-Dateisysteme.
fsck.msdos und fsck.vfat sind Links zu dosfsck.
Sie sollten die folgenden Optionen von fsck kennen:
-f (force) erzwingt die Prfung, auch wenn das Dateisystem sauber erscheint.
-A (all) testet alle Dateisysteme, die in /etc/fstab aufgefhrt sind.
-t Dateisystemtyp (type) sorgt dafr, dass das zum Dateisystem passende
Backend gestartet wird.
-c (check) sucht nach defekten Blcken.
-b Blocknummer (block) gibt einen alternativen Superblock an.
-y (yes) beantwortet alle Fragen des Programms mit yes, damit eine Reparatur
unbeaufsichtigt durchgefhrt werden kann.
Wenn Sie fsck ausfhren, dann sollte das zu prfende Dateisystem nicht einge-
hngt sein. Das gilt insbesondere, wenn zu Reparaturzwecken Schreibzugriffe
von fsck durchgefhrt werden mssen. Sie erhalten vor der Prfung eines einge-
hngten Dateisystems eine Warnmeldung, wie das folgende Beispiel zeigt:
168
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
[root@fedora16 ~]# fsck -f /dev/sdb1
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
/dev/sdb1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? n
Sicherheitshalber wird das Dateisystem also vorher mit umount ausgehngt:
[root@fedora16 ~]# umount /dev/sdb1
Anschlieend kann die berprfung gefahrlos durchgefhrt werden:
[root@fedora16 ~]# fsck -f /dev/sdb1
fsck 1.40.2 (12-Jul-2007)
e2fsck 1.40.2 (12-Jul-2007)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sdb1: 11/124928 files (9.1 % non-contiguous), 18084/497980
blocks
Mit dem Dateisystem war in diesem Fall alles in Ordnung. Ein Dateisystem wird
standardmig alle 36 Mounts oder alle 180 Tage beim Systemstart geprft (diese
Werte knnen in Abhngigkeit von der verwendeten Distribution abweichen).
Um diese Prfung fr den nchsten Systemstart zu unterbinden, verwenden Sie
shutdown mit der Option -f:
archangel:~ # shutdown -hf now
Das ist besonders wichtig, wenn Sie einen Server z.B. fr Hardware-Arbeiten her-
unterfahren mssen, dieser aber sehr schnell wieder verfgbar sein muss. Umge-
kehrt knnen Sie die berprfung fr den nchsten Start erzwingen, wenn Sie
die Option -F verwenden:
archangel:~ # shutdown -hF now
tune2fs
Das Programm tune2fs ermglicht das Bearbeiten der Dateisystemparameter bei
einem ext2-, ext3- oder ext4-Dateisystem. So ist es z.B. mglich, die Intervalle fr
die automatische berprfung der Dateisysteme mittels fsck zu beeinflussen. Sie
knnen die Intervalle entweder ndern oder die aktuellen Werte in den entspre-
chenden Zhlern verndern. Die hierfr bentigten Optionen sind:
169
Die Integritt von Dateisystemen sichern 104.2
-c legt die maximale Anzahl der Mounts zwischen den Dateisystemberpr-
fungen fest.
-C legt fest, wie oft das Dateisystem nach der letzten berprfung tatschlich
gemountet wurde.
-i legt das Intervall zwischen den Dateisystemprfungen in Tagen, Wochen
oder Monaten fest. Ohne Zeitangabe schaltet diese Option die regelmige
berprfung aus.
-T YYYYMMDD[[HHMM]SS] legt den Zeitpunkt fest, wann die letzte Dateisystem-
prfung tatschlich stattgefunden hat.
Wenn Sie ein ext2-Dateisystem in ein ext3-Dateisystem konvertieren wollen,
dann verwenden Sie die Option -j (journal). Bei einem ext3-Dateisystem handelt
es sich, wie bereits erlutert, um ein ext2-Dateisystem mit Journal. Deshalb ist die
Konvertierung recht einfach:
[root@fedora16 ~]# tune2fs -j /dev/hdb3
tune2fs 1.40.2 (12-Jul-2007)
Erstelle Journal-Inode: erledigt
Das Dateisystem wird automatisch alle 26 Mounts bzw. alle 180 Tage
berprft, je nachdem, was zuerst eintritt. Vernderbar mit tune2fs
-c oder -t.
Um die Informationen des Superblocks anzuzeigen, verwenden Sie einfach die
Option -l. Da die vollstndige Ausgabe dieses Kommandos mindestens zwei
Buchseiten fllen wrde, soll hier auf ein Beispiel verzichtet werden.
debugfs
Das Programm debugfs dient dazu, ein ext2-, ext3- oder ext4-Dateisystem inter-
aktiv zu untersuchen oder zu modifizieren. Es gibt auch die Mglichkeit, mit
debugfs gelschte Dateien wiederherzustellen. Dazu muss zunchst das betrof-
fene Dateisystem ausgehngt werden:
[root@fedora16 /]# umount /dev/sdb1
Anschlieend wird eben dieses Dateisystem mit debugfs geffnet:
[root@fedora16 /]# debugfs /dev/sdb1
Am interaktiven Prompt von debugfs geben Sie das Kommando lsdel ein, um
gelschte Inodes anzuzeigen:
debugfs: lsdel
Inode Owner Mode Size Blocks Time deleted
12 0 100600 12288 12/ 12 Sun Dec 23 00:02:48 2007
170
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
13 0 100644 7416 8/ 8 Sun Dec 23 00:02:57 2007
2 deleted inodes found.
Davon ausgehend, dass sich die wiederherzustellende Datei auf Inode 13 befand,
muss jetzt noch folgendes Kommando verwendet werden:
debugfs: dump <13> /tmp/restored
Anschlieend kann das Dateisystem wieder gemountet und die Datei an ihren
ursprnglichen Platz zurckkopiert werden.
In der Prfung sind bis heute keine Fragen gestellt worden, die eine genauere
Kenntnis von debugfs voraussetzen.
dumpe2fs
Mit dumpe2fs knnen detaillierte Informationen ber ein ext2-, ext3- oder ext4-
Dateisystem eingeholt werden. Um einen berblick zu erhalten, starten Sie das
Programm am besten ohne Optionen, aber mit einer Dateisystemangabe als
Argument. Da die Ausgabe des Programms recht umfangreich ist, sollten Sie die
Ausgabe an less weitergeben. Beispiel:
archangel:~ # dumpe2fs /dev/hda1 | less
Da auch dumpe2fs in der Prfung eher peripher abgefragt wird, soll es hier nicht
weiter thematisiert werden.
mke2fs
Sie knnen auch mit dem Formatierungsprogramm mke2fs die Integritt eines
Dateisystems berprfen. Verwenden Sie dazu die Option -c:
[root@fedora16 ~]# mke2fs -c /dev/sdb1
mke2fs 1.40.2 (12-Jul-2007)
Dateisystem-Label=
OS-Typ: Linux
Blockgre=1024 (log=0)
Fragmentgre=1024 (log=0)
124928 Inodes, 497980 Blcke
24899 Blcke (5.00 %) reserviert fr den Superuser
... der restliche Teil der Ausgabe wurde abgeschnitten ...
XFS-Werkzeuge
Zur Verwaltung des XFS-Dateisystems gibt es mehrere Werkzeuge. Das zur Erstel-
lung eines XFS-Dateisystems notwendige mkfs.xfs kennen Sie bereits. Weitere
Tools sind:
171
Die Integritt von Dateisystemen sichern 104.2
xfs_growfs kann die Gre des Dateisystems nachtrglich erweitern.
xfs_info gibt u.a. Informationen ber die Geometrie des Dateisystems aus.
xfs_metadump speichert die Metainformationen des Dateisystems in eine
Datei.
berwachen des freien Platzes und der freien Inodes
Zur Wartung der Dateisysteme gehrt auch die berprfung des zur Verfgung
stehenden Speicherplatzes. Auerdem sollte hin und wieder geprft werden,
wofr genau Speicherplatz auf den Datentrgern verwendet wird. Schlielich
mssen Daten nicht nur gespeichert, sondern auch gesichert werden. Das nimmt
Zeit und Geld in Anspruch. Damit Sie dieser Aufgabe gerecht werden knnen,
stehen Ihnen unter Linux zwei wichtige Programme zur Verfgung, nmlich df
und du. Die Optionen dieser beiden Programme werden in der Prfung sehr hu-
fig abgefragt.
df (disk free)
Durch das Kommando df erhalten Sie Informationen ber die aktuelle Belegung
der verwendeten Dateisysteme. Selbst wenn Sie keine Optionen angeben, haben
Sie sofort einen berblick:
archangel:~ # df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 18928028 8277080 9689460 47 % /
/dev/hda4 58105324 50835552 7269772 88 % /storage
/dev/hda1 54416 11369 40238 23 % /boot
/dev/sdb1 153834852 98530852 47489584 68 % /media/usb
Die Tabelle gibt Aufschluss ber die Belegung aller eingehngten Dateisysteme.
Standardmig werden die vorhandenen Blcke, die belegten Blcke und die
noch verfgbaren Blcke in 1K-blocks (1.024 Byte) angezeigt. Die Partition /dev/
hda2 im vorangegangenen Beispiel ist also ca. 19 GB gro. Es folgt eine Angabe
der prozentualen Belegung und der Einhngepunkt (Mountpoint). Das impliziert
gleichzeitig, dass eine Partition eingehngt sein muss, damit df sie in die Auswer-
tung mit einbezieht.
Sie sollten fr die Prfung zumindest die folgenden Optionen von df kennen:
-i (inodes) zeigt die Belegung der Inodes anstatt der Blockbelegung.
-h (human readable) zeigt die Informationen in einem angenehm lesbaren
Format (in K, M, G, T, P usw.).
-m zeigt die Blcke in M anstatt in K an.
172
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Was die Inodes betrifft, lsst sich festhalten, dass es hier selten zu Engpssen
kommt. Man msste schon sehr viele, sehr kleine Dateien erzeugen, um hier an
Grenzen zu stoen. Sie sehen jetzt die Belegung der Inodes desselben Systems,
aus dem das vorangegangene Beispiel entnommen wurde:
archangel:~ # df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/hda2 2403744 344963 2058781 15% /
/dev/hda4 0 0 0 /storage
/dev/hda1 14056 42 14014 1% /boot
/dev/sdb1 19546112 69530 19476582 1% /media/usb
Wie Sie sehen, steht die Verwendung der Inodes in einem sehr sicheren Verhlt-
nis zur Belegung der Festplattenkapazitt. Damit soll sichergestellt werden, dass
die Inodes nicht zu einem begrenzenden Faktor bei der Belegung eines Dateisys-
tems werden.
Es folgen die Beispiele fr die Optionen -h und -m. Der Punkt bewirkt jeweils,
dass nur die Partition gelistet wird, in der sich das aktuelle Arbeitsverzeichnis
befindet:
archangel:/storage # df . -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/hda4 56744 49849 6896 88% /storage
Die Option -m ruft eine nderung der berschrift in der zweiten Spalte auf
1M-blocks hervor. Alle Ausgaben erfolgen jetzt in Megablocks.
archangel:/storage # df . -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda4 56G 49G 6.8G 88% /storage
Bei Verwendung der Option -h ndert sich die zweite Spaltenberschrift in Size
und die Greneinheit wird bei jedem ausgegebenen Wert einzeln angezeigt.
du (disk utilization)
Wenn Sie mit df einen Engpass auf einem Dateisystem festgestellt haben, dann
ist der nchste Schritt das Auffinden der Verzeichnisse, die diesen Engpass her-
vorrufen. Oftmals existieren irgendwo ein paar Gigabyte ISO-Dateien, die man
nicht mehr bentigt, die aber vergessen und deshalb nie gelscht wurden. Dann
bentigen Sie das Programm du.
Sie sollten fr die Prfung zumindest die folgenden Optionen von du kennen:
-a (all) zeigt auch die Belegung durch Dateien, nicht nur die von Verzeichnissen.
-k (kilo) zeigt die Blcke in Kilo an.
173
Die Integritt von Dateisystemen sichern 104.2
-m (mega) zeigt die Anzahl der Blcke in Megablocks an.
-h (human readable) macht die Ausgabe angenehmer zu lesen (in K, M, G usw.).
-c zeigt zustzlich die Summe der gelisteten Eintrge.
-s zeigt nur die Eintrge fr die angegebenen Verzeichnisse an. Ohne diese
Option zeigt du alle Eintrge rekursiv fr alle Unterverzeichnisse an.
Wenn Sie du ohne Optionen verwenden, dann wird aufgrund der rekursiven
Arbeitsweise des Programms u.U. eine unbersichtliche Anzahl von Zeilen aus-
gegeben. Wenn Sie z.B. ermitteln wollen, wie viel Platz durch einzelne Benutzer
im /home-Dateisystem belegt wird, kommen Sie ohne Optionen nicht weiter. Das
Programm wc zhlt die Zeilen, die du auf dem Referenzsystem ausgegeben htte:
archangel:/home # du | wc -l
825
Eine praktische Kombination aus Optionen ist -sch. Sie bewirkt eine bersicht-
liche Anzeige und ist leicht zu behalten.
archangel:/home # du -sch *
9.4G dominik
543M harald
190M michaela
10.1G total
Zur Erklrung: Die Option -s sorgt dafr, dass nur die angegebenen Verzeich-
nisse aufgefhrt werden. Deshalb muss auch als Wildcard der Stern verwendet
werden. Das Programm wrde sonst das aktuelle Verzeichnis auswerten, und die
Ausgabe she so aus:
archangel:/home # du -sch
10.1G .
10.1G total
Die Option -c bewirkt die Summenbildung (10.1G total) am Ende der Ausgabe
und die Option -h die angenehme Lesbarkeit in Megabyte und in Gigabyte. Das
Ergebnis des Kommandos zeigt, dass der Benutzer Dominik kontaktiert werden
sollte, um ihn auf sein Speicherverhalten aufmerksam zu machen. Um die Ver-
zeichnisse zu identifizieren, die innerhalb seines Benutzerverzeichnisses eine
starke Belegung verursachen, geben Sie folgendes Kommando ein:
archangel:/home # du -sh /home/dominik/* | less
Prfungstipp
Merken Sie sich fr die Prfung unbedingt die Optionen von df und du, und achten Sie
darauf, die beiden Kommandos nicht miteinander zu verwechseln.
174
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
104.3 Das Ein- und Aushngen von Dateisystemen steuern
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, das Einhngen eines Dateisys-
tems zu konfigurieren.
Wichtigste Wissensgebiete:
Dateisysteme manuell ein- und aushngen
das Einhngen von Dateisystemen beim Systemstart konfigurieren
von Benutzern einhngbare Wechseldateisysteme konfigurieren
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/fstab
/media
mount
umount
Allgemeines
Wie Sie wissen, werden Laufwerke unter Linux bei Bedarf ein- oder ausgehngt.
Dieser Vorgang kann manuell ausgefhrt oder durch Eintrge in der Datei /etc/
fstab automatisiert werden. Im Normalfall darf das Ein- und Aushngen eines
Dateisystems nur vom Root-Benutzer durchgefhrt werden. Ausnahmen von die-
ser Regel knnen in der Datei /etc/fstab festgelegt werden.
Manuelles Mounten und Unmounten
In der deutschen Umgangssprache wird der Vorgang des Einhngens eines Datei-
systems als mounten bezeichnet. Hierbei handelt es sich um einen verbogenen
englischen Ausdruck. Der Begriff mount bedeutet so viel wie montieren oder
anbringen. Das Kommando, das zum Einhngen eines Dateisystems verwendet
wird, heit aus verstndlichen Grnden ebenfalls mount. Soll das Dateisystem
wieder ausgehngt werden, verwendet man umount. Achtung: Es heit nicht
unmount.
mount
Wenn Sie das Kommando mount ohne Optionen und Argumente verwenden,
erhalten Sie eine Auflistung der momentan in den Verzeichnisbaum eingehng-
ten Dateisysteme. Beispiel:
175
Das Ein- und Aushngen von Dateisystemen steuern 104.3
archangel:~ # mount
/dev/hda2 on / type ext3 (rw,acl,user_xattr)
/dev/hda4 on /storage type reiserfs (rw,usrquota,grpquota)
/dev/hda1 on /boot type ext2 (rw,acl, user_xattr)
proc on /proc type proc (rw)
/dev/fd0 on /media/floppy type subfs (rw, sync,fs=floppyfss)
//connor/daten on /mnt/connor type smbfs (0)
Wenn Sie mit dem Kommando mount Dateisysteme in den Verzeichnisbaum ein-
hngen wollen, erwartet mount die Angabe von Optionen, den Pfad zum Gert,
das eingehngt werden soll, und den Pfad zum Einhngepunkt (Mountpoint).
Beispiel:
[root@fedora16 /]# mount -t ext3 /dev/sdb1 /dateien
Die Option -t ext3 gibt den Dateisystemtyp an, /dev/sdb1 ist die Partition, die
eingehngt werden soll, und das Verzeichnis /dateien ist der Mountpoint. Wenn
die Zuordnung von Dateisystem zu Mountpoint und Dateisystemtyp bereits
vorab in der Datei /etc/fstab (die Datei /etc/fstab wird auf den nchsten Seiten
ausfhrlicher thematisiert werden) vorgenommen wurde, reicht es aus, nur den
Mountpoint oder nur das einzuhngende Dateisystem anzugeben. Folgende
Kommandos fhren zu demselben Ergebnis, wenn das Dateisystem aus dem vor-
angegangenen Beispiel in die Datei fstab eingetragen wurde:
[root@fedora16 /]# mount /dateien
[root@fedora16 /]# mount /dev/sdb1
Auf dieselbe Art werden auch Diskettenlaufwerke, CD-ROMs und DVD-Lauf-
werke eingehngt. Beim Einhngen von USB Memory Sticks ist zu beachten, dass
diese dieselben Gertedateien verwenden wie SCSI-Laufwerke. Beispiel:
root@ubuntu-server:~# mount -t iso 9660 /dev/hdc /media/cdrom0
Sie knnen u.a. folgende Kommandozeilenoptionen mit dem mount-Befehl ver-
wenden:
-a (all) hngt alle Dateisysteme ein, die in der Datei /etc/fstab gelistet sind.
-r (read only) hngt ein Dateisystem schreibgeschtzt ein.
-w (writeable) hngt ein Dateisystem im read/write-Modus ein.
-t (type) gibt den Dateisystemtyp an, falls erforderlich. Folgende Arten von
Dateisystemen werden untersttzt:
adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs,
iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, ramfs, reiserfs, romfs,
smbfs, sysv, tmpfs, udf, ufs, umsdos, usbfs, vfat, xenix, xfs, xiafs
176
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
-v (verbose) sorgt fr eine Besttigung des Vorgangs. Der mount-Befehl zeigt
normalerweise keine Erfolgsmeldungen an.
-o (options) bergibt Mountoptionen. Die wichtigsten dieser Optionen soll-
ten Sie kennen.
Mountoptionen (mount -o)
Manchmal ist es notwendig, whrend des Einhngens eines Dateisystems Optio-
nen zu bergeben. Diese Optionen werden kommagetrennt mit der Kommando-
zeilenoption -o bermittelt. Das kann z.B. ntig sein, wenn Sie ein Laufwerk, das
mit der Option -r (read only) gemountet wurde, beschreiben mssen. Wenn Sie
dieses Laufwerk einfach aushngen und dann schreibbar wieder einhngen,
gehen nicht gespeicherte Daten von Benutzern, die eventuell ber das Netzwerk
auf das System zugreifen, verloren. Ein anderer Grund knnte der sein, dass Sie
das Dateisystem neu einhngen wollen, auf dem sich der mount-Befehl selbst
befindet. Wenn Sie dieses Dateisystem zuerst unmounten, haben Sie keine Mg-
lichkeit mehr, das Kommando mount erneut auszufhren. Das geschieht nicht,
wenn Sie das Dateisystem stattdessen schreibbar remounten:
[root@fedora16 /]# mount -v -o remount,rw /dateien
Beachten Sie die kommagetrennte bergabe der beiden Optionen. Wenn eine
Authentifizierung beim Zugriff auf entfernte Ressourcen notwendig ist, knnen
Benutzername und Passwort ebenfalls als kommaseparierte Optionen bergeben
werden:
archangel:~ # mount -t smbfs -o username=michaela,password=geheim
//connor/daten /mnt/connor/
Weitere Optionen finden Sie auf den nchsten Seiten im Zusammenhang mit der
Datei /etc/fstab, denn in dieser Konfigurationsdatei finden dieselben Optionen
Verwendung wie auf der Kommandozeile. In der Prfung werden Mountoptio-
nen oft mit der Datei /etc/fstab in Zusammenhang gebracht.
Netzwerkressourcen einhngen
Mit dem Kommando mount knnen auch entfernte Dateisysteme eingehngt wer-
den. Wenn Sie auf einen NFS-Server zugreifen wollen, verwenden Sie den mount-
Befehl wie folgt:
root@ubuntu-server:~# mount -t nfs archangel:/storage /daten
Als Dateisystemtyp wird also einfach nfs angegeben. Der Mountpoint ist in die-
sem Fall das lokale Verzeichnis /daten. Merken Sie sich unbedingt, wie die Syntax
fr das einzuhngende Dateisystem bei NFS aussieht:
177
Das Ein- und Aushngen von Dateisystemen steuern 104.3
hostname:/exportiertes_Verzeichnis
Im vorangegangenen Beispiel ist demnach auf dem Host archangel das Verzeich-
nis /storage exportiert worden. Es gibt einen erheblichen Unterschied zum Ein-
hngen von SMB-Dateisystemen: Mit dem Dateisystemtyp smbfs knnen sowohl
Windows-Freigaben als auch Shares auf einem Samba-Server angesprochen wer-
den. Die Syntax fr den mount-Befehl sieht dann so aus:
archangel:~ # mount -t smbfs //connor/daten /mnt/connor
In diesem Fall existiert auf dem Host connor eine Freigabe mit der Bezeichnung
daten. Diese Freigabe wird in das lokale Verzeichnis /mnt/connor auf dem Host
archangel eingehngt. Im Normalfall muss beim Zugriff auf eine SMB-Share ein
Benutzername und ein Passwort angegeben werden. Verwenden Sie dazu die
Option -o wie folgt:
archangel:~ # mount -t smbfs -o username=michaela,password=geheim
//connor/daten /mnt/connor/
umount
Wenn ein Dateisystem nicht mehr bentigt wird, knnen Sie es mit dem Kom-
mando umount aushngen. Das kann auch dann erforderlich sein, wenn Sie ein
Dateisystem mit fsck berprfen wollen. Sie knnen auch Optionen mit umount
verwenden, aber das ist in der Regel nicht ntig. Sie knnen beim Aushngen
eines Dateisystems entweder die Gertedatei oder den Mountpoint des zu entfer-
nenden Dateisystems als Argument bergeben. Wenn z.B. das Dateisystem /dev/
hda1 auf dem Mountpoint /boot eingehngt ist, fhren die folgenden beiden
Kommandos zu demselben Ergebnis:
archangel:/ # umount /dev/hda1
archangel:/ # umount /boot
Sie knnen auch alle Dateisysteme, die in der Datei /etc/fstab eingetragen sind,
mit einem einzigen Kommando aushngen, nmlich:
archangel:/ # umount -a
Das macht aber normalerweise keinen Sinn.
Prfungstipp
In der Prfung geht es eigentlich eher selten um das Kommando umount als solches,
sondern vor allem darum, wer es verwenden darf. Im Normalfall darf nur Root Dateisys-
teme ein- bzw. aushngen. Ausnahmen von dieser Regel werden in der Datei /etc/fstab
ber die entsprechenden Optionen festgelegt.
178
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Automatisches Mounten ber die Datei /etc/fstab
Wenn auf Dateisysteme regelmig zugegriffen wird, macht es natrlich Sinn,
dass diese schon beim Systemstart in den Verzeichnisbaum eingehngt werden.
Aber auch dann, wenn ein Dateisystem erst im laufenden Betrieb eingehngt
werden soll, bringt die Verwendung der Datei /etc/fstab einige Vorteile mit sich.
Sie knnen Dateisysteme, die hier aufgefhrt sind, mit dem verkrzten mount-
Befehl wesentlich bequemer einhngen. So entfllt die Angabe des Dateisystem-
typs und wahlweise des Mountpoints oder der einzuhngenden Partition. Dar-
ber wurde aber bereits in Zusammenhang mit dem Kommando mount ausfhrlich
berichtet. Sie sehen ein Beispiel fr eine fstab-Datei:
archangel:/ # cat /etc/fstab
/dev/hda2 / ext3 acl,user_xattr 1 1
/dev/hda1 /boot ext2 acl,user_xattr 1 2
/dev/hda4 /storage reiserfs defaults 1 2
/dev/hda3 swap swap pri=42 0 0
proc /proc proc defaults 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
host7:/share /mnt/host7 nfs defaults 0 0
Die sechs Spalten der Datei /etc/fstab mssen Sie fr die Prfung genau kennen:
1. Spalte enthlt das einzuhngende Gert.
2. Spalte enthlt den Mountpoint.
3. Spalte bezeichnet den Dateisystemtyp.
4. Spalte enthlt Mountoptionen (eine Auflistung folgt).
5. Spalte ist eine Information fr das Sicherungsprogramm dump. Wenn hier
eine Null steht, wird das Dateisystem von dump nicht gesichert. Dateisysteme,
die nicht stndig eingehngt sind, sollten nicht ber die Datei fstab zur Siche-
rung mit dump vorgemerkt werden.
6. Spalte enthlt Informationen fr fsck. Hier wird festgelegt, ob und in wel-
cher Reihenfolge das Programm fsck die Dateisysteme beim Systemstart pr-
fen soll:
0 wird nicht geprft.
1 wird vorzugsweise geprft.
2 wird geprft, nachdem Dateisysteme mit dem Wert 1 in diesem Feld
bereits geprft wurden.
Mountoptionen
Mountoptionen knnen im vierten Feld der Datei /etc/fstab verwendet oder
beim manuellen Einhngen von Dateisystemen mit mount -o bergeben werden.
179
Das Ein- und Aushngen von Dateisystemen steuern 104.3
Einige dieser Optionen machen aber nur bei der Verwendung mit der Datei fstab
berhaupt Sinn. Wichtige Optionen sind:
auto ermglicht automatisches Einhngen mittels mount -a.
noauto verhindert automatisches Einhngen mittels mount -a.
usrquota aktiviert die Mglichkeit der Verwendung von Quota auf Benutzer-
ebene.
grpquota aktiviert die Mglichkeit der Verwendung von Quota auf Gruppen-
ebene.
suid ermglicht die Funktion der SUID-Bits.
nosuid verhindert aus Sicherheitsgrnden die Funktion der SUID-Bits.
exec erlaubt das Ausfhren von Dateien auf diesem Dateisystem.
noexec verhindert das Ausfhren von Dateien auf diesem Dateisystem.
ro hngt das Dateisystem im read-only-Modus ein.
rw hngt das Dateisystem im read/write-Modus ein.
user erlaubt es einem normalen Benutzer, dieses Dateisystem einzuhngen.
Das Dateisystem kann dann nur von demselben Benutzer oder vom Root aus-
gehngt werden.
nouser verhindert, dass ein normaler Benutzer ein Dateisystem einhngen
kann.
users erlaubt es einem normalen Benutzer, dieses Dateisystem einzuhngen.
Das Dateisystem kann von einem beliebigen Benutzer wieder ausgehngt wer-
den.
defaults setzt die Standardeinstellungen. Ausnahmen werden kommasepa-
riert bergeben. Defaults sind: rw, suid, dev, exec, auto, nouser, async.
Die Datei /etc/mtab
Wenn ein Dateisystem eingehngt wird, dann trgt das Programm mount das
Dateisystem, den Mountpoint und eventuell bergebene Optionen in die Datei
/etc/mtab ein. Eine Ausnahme stellen Dateisysteme dar, die mit der Option -n
gemountet wurden. Beispiel:
archangel:~ # cat /etc/mtab
/dev/hda2 / ext3 rw,acl,user_xattr 0 0
Prfungstipp
Achten Sie bitte besonders darauf, die Optionen user und users nicht miteinander zu
verwechseln.
180
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
/dev/hda4 /storage reiserfs rw,usrquota,grpquota 0 0
usbfs /proc/bus/usb usbfs rw 0 0
nfsd /proc/fs/nfsd nfsd rw 0 0
/dev/hda1 /boot ext2 rw,acl,usrquota,grpquota,user_xattr 0 0
Im /proc-Dateisystem werden eingehngte Dateisysteme in jedem Fall aufgefhrt.
Auf diese Art knnen Sie auch die Dateisysteme anzeigen lassen, denen beim Ein-
hngen mit mount die Option -n bergeben wurde.
archangel:~ # cat /proc/mounts
rootfs / rootfs rw 0 0
/dev/root / ext3 rw 0 0
proc /proc proc rw,nodiratime 0 0
sysfs /sys sysfs rw 0 0
devpts /dev/pts devpts rw 0 0
tmpfs /dev/shm tmpfs rw 0 0
/dev/hda4 /storage reiserfs rw 0 0
usbfs /proc/bus/usb usbfs rw 0 0
nfsd /proc/fs/nfsd nfsd rw 0 0
/dev/hda1 /boot ext2 rw 0 0
104.4 Platten-Quotas verwalten
Wichtung: 1
Beschreibung: Kandidaten sollten in der Lage sein, Platten-Quotas fr Benutzer
zu verwalten.
Wichtigste Wissensgebiete:
Platten-Quotas fr ein Dateisystem in Kraft setzen
Benutzer-Quota-Berichte anpassen, prfen und erzeugen
Prfungstipp
Eignen Sie sich fr die Prfung auch besonders die Fhigkeit an, die Datei /etc/fstab
genau auswerten zu knnen. Sie mssen z. B. auf die Frage antworten knnen, was das
fnfte Feld in dieser Datei bewirkt.
Seit April 2009 steht die Verwendung von /media als bevorzugtes Verzeichnis fr Wech-
selmedien auf der LPIC-Liste. Seien Sie sich dessen bewusst!
181
Platten-Quotas verwalten 104.4
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
quota
edquota
repquota
quotaon
Allgemeines
Wie Sie ermitteln, ob ein Dateisystem ber ausreichend Ressourcen verfgt,
haben Sie bereits gelesen. Auch das Lokalisieren von umfangreichen Verzeichnis-
sen wurde in diesem Buch bereits behandelt. In diesem Kapitel geht es sozusagen
um die Prophylaxe. Mithilfe von Quotas knnen Sie von vornherein verhindern,
dass ein Dateisystem durch die Benutzer berfllt wird. Damit Sie Quotas ver-
wenden knnen, mssen diese vom Kernel untersttzt werden. Das ist bei den
mitgelieferten Kerneln der meisten Distributionen der Fall.
Mglichkeiten der Quotierung
Grundstzlich knnen Quotas auf Basis von Benutzerkonten oder auf Basis von
Gruppenmitgliedschaften festgelegt werden. In beiden Fllen gibt es sogenannte
Hardlimits und Softlimits. Im brigen beziehen sich Quotas immer auf ein gan-
zes Dateisystem im Sinn einer Partition. Sie knnen keine Unterverzeichnisse
einzeln quotieren.
Hardlimit
Bei einem Hardlimit handelt es sich um eine harte Grenze. Wenn ein Benutzer
Daten speichert und dabei vom Speicherplatz her an sein Hardlimit stt, dann
wird ihm der Schreibzugriff verweigert. Er muss dann zunchst Dateien lschen,
um wieder unter sein Limit zu sinken und daraufhin Schreibzugriff zu erhalten.
Softlimit und Gracetime
Ein Softlimit ist eine Grenze, die immer unterhalb des Hardlimits liegt. Wenn ein
Benutzer aufgrund seiner Datenspeicherung an sein Softlimit stt, dann darf er
weiterhin Daten speichern. Ab dem Zeitpunkt der Softlimit-berschreitung
beginnt allerdings die sogenannte Gracetime oder auch Graceperiod. Darunter ver-
steht man eine Gnadenfrist, die dem Benutzer gewhrt wird. Innerhalb dieser Gna-
denfrist muss der Benutzer ausreichend Daten lschen, um wieder unterhalb seines
Softlimits zu fallen. Tut er das nicht, wird aus dem Softlimit nach Ablauf der Gra-
cetime ein Hardlimit, und der Schreibzugriff wird dem Benutzer verweigert. Hard-
limits, Softlimits und Gracetime gibt es sowohl bei der Quotierung von Benutzern
als auch von Gruppen.
182
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Vorbereiten von Quota
Optionen in /etc/fstab
Damit Sie Quota verwenden knnen, sind einige vorbereitende Manahmen zu
treffen. Zunchst muss eine Partition mit den entsprechenden Optionen gemoun-
tet werden, damit eine Quotierung mglich wird. Zu diesem Zweck werden die
entsprechenden Optionen in die Datei /etc/fstab eingetragen. Sptestens jetzt ist
klar, warum ein Unterverzeichnis nicht einzeln quotiert werden kann, sondern
immer nur eine ganze Partition. Sie knnen Quotas auf jeder Partition einrichten,
die in der Datei /etc/fstab eingetragen ist. Es macht allerdings hauptschlich Sinn,
Quotierungen auf Dateisystemen einzurichten, auf die Benutzer Schreibzugriff
haben (z.B. /home). Ein fstab-Eintrag fr Quotas knnte so aussehen:
/dev/sdb1 /dateien ext3 defaults,usrquota,grpquota 0 0
Erstellung der Quota-Dateien
Die Quotierungen werden in Dateien, jeweils getrennt nach Benutzer-Quotas und
Gruppen-Quotas, im Hauptverzeichnis eines zu quotierenden Dateisystems abge-
speichert. Diese Dateien heien aquota.user und aquota.group. Alte Implementie-
rungen von Quota verwendeten quota.user und quota.group. Um unschne Feh-
lermeldungen zu vermeiden, sollten Sie diese beiden Dateien von Hand erstellen
und die Dateiberechtigungen auf 600 einstellen, wie die folgenden drei Befehls-
zeilen zeigen:
[root@fedora16 dateien]# touch aquota.user
[root@fedora16 dateien]# touch aquota.group
[root@fedora16 dateien]# chmod 600 aquota*
Anschlieend knnen Sie die beiden Dateien initialisieren. Sie bentigen fr diese
Aufgabe das Programm quotacheck. Dieses Werkzeug erstellt eine Tabelle der aktu-
ell existierenden Dateien und Verzeichnisse und gleicht das Ergebnis mit den bei-
den Dateien aquota.user und aquota.group ab. Wenn alle auf dem System befind-
lichen Quotas aktualisiert werden sollen, verwenden Sie folgendes Kommando:
[root@fedora16 /]# quotacheck -avug
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Checked 423 directories and 9184 files
quotacheck: Scanning /dev/sdb1 [/dateien] done
quotacheck: Checked 25 directories and 4125 files
Prfungstipp
Merken Sie sich unbedingt, dass die relevanten Optionen usrquota und grpquota hei-
en, nicht userquota und groupquota.
183
Platten-Quotas verwalten 104.4
Sie haben auch die Mglichkeit, nur eine ausgewhlte Datei zu aktualisieren. Um
nur die Datei aquota.user im Verzeichnis /dateien zu aktualisieren, geben Sie den
folgenden Befehl ein:
[root@fedora16 /]# quotacheck -vu /dateien
quotacheck: Checked 25 directories and 4125 files
Die wichtigsten Optionen von quotacheck sind:
-a (all) bearbeitet alle eingehngten Dateisysteme.
-u (user) bearbeitet nur aquota.user.
-g (group) bearbeitet nur aquota.group.
-v (verbose)
Aktivieren von Quota
Nachdem das System vorbereitet wurde, knnen Sie die Quotas einschalten. Ver-
wenden Sie dazu das Kommando quotaon. Dieses Programm versteht hnliche
Optionen wie quotacheck. Wenn Sie Quotierungen fr alle eingehngten Datei-
systeme und fr alle Benutzer und Gruppen einschalten wollen, dann verwenden
Sie folgenden Befehl:
[root@fedora16 /]# quotaon -avug
quotaon: using /home/aquota.user on /dev/sda3 [/home]
quotaon: using /dateien/aquota.user on /dev/sdb1 [/dateien]
Sie knnen aber auch selektiv Quotas starten, indem Sie entweder das Dateisys-
tem oder den Mountpoint des Dateisystems angeben, das quotiert werden soll.
Das folgende Kommando startet ausschlielich die Quotierung fr Benutzer im
Verzeichnis /dateien (vorausgesetzt, /dateien ist das Hauptverzeichnis einer Parti-
tion):
[root@fedora16 /]# quotaon -vu /dateien
Wenn Sie Quotas deaktivieren wollen, dann verwenden Sie das Kommando
quotaoff. Sie mssen Quotas z.B. dann deaktivieren, wenn Sie mit quotacheck
die Quotierungsdateien aktualisieren wollen. Die Optionen sind auch hier wie-
der denen der vorangegangenen Programme hnlich. Um alle Quotierungen des
Dateisystems, das auf /dateien gemountet ist, zu deaktivieren, verwenden Sie die-
sen Befehl:
[root@fedora16 /]# quotaoff -vug /dateien
/dev/sda3 [/home]: group quotas turned off
/dev/sda3 [/home]: user quotas turned off
184
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
/dev/sdb1 [/dateien]: group quotas turned off
/dev/sdb1 [/dateien]: user quotas turned off
Wenn Sie alle Quotierungen des Systems deaktivieren mssen, verwenden Sie
das Kommando:
[root@fedora16 /]# quotaoff -avug
/dev/sda3 [/home]: group quotas turned off
/dev/sda3 [/home]: user quotas turned off
/dev/sdb1 [/dateien]: group quotas turned off
/dev/sdb1 [/dateien]: user quotas turned off
Es werden dann alle Quotas abgeschaltet.
ndern und berprfen von Quota
ndern von Quotierungen mit edquota
Bisher sind die Quotas noch nicht wirksam geworden. Das liegt daran, dass noch
keine Limits fr Benutzer oder Gruppen eingerichtet wurden. Diese Ttigkeit
wird mit dem Kommando edquota ausgefhrt. Wenn Sie edquota ausfhren, ff-
net der vi die zum Benutzer oder zur Gruppe gehrende Quotierungsdatei, und
Sie knnen diese bearbeiten. Im folgenden Beispiel werden die Quotierungen
eines Users nur in Bezug auf das Verzeichnis /dateien gendert:
[root@fedora16 /]# edquota -f /dateien -u harald
Disk quotas for user harald (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5000 7000 0 0
Der Benutzer bekommt hier ein Softlimit von 5.000 Blocks und ein Hardlimit von
7.000 Blocks im Dateisystem /dev/sdb1. Ein Block entspricht normalerweise
1.024 Bytes. Sie knnen die genaue Blockgre mit dumpe2fs herausfinden:
[root@fedora16 /]# dumpe2fs -h /dev/sdb1 | grep "Block size"
dumpe2fs 1.40.2 (12-Jul-2007)
Block size: 1024
Es besteht auch die Mglichkeit, die Verwendung von Inodes zu limitieren. Die
Anzahl der bewilligten Inodes entspricht normalerweise der Anzahl der Dateien,
die ein Benutzer erstellen kann.
Alle Werte sind per Voreinstellung auf 0 gesetzt. Das bedeutet nicht, dass der
Benutzer nichts abspeichern darf, sondern im Gegenteil, dass es fr ihn keine
Limits gibt. Wenn Sie eine Quotierung ausschalten wollen, knnen Sie also ein-
fach alle Parameter auf 0 setzen.
185
Platten-Quotas verwalten 104.4
Kopieren von Quotierungen mit edquota
Um ein und dieselben Quotierungen fr mehrere Benutzer festzulegen, knnen
Sie den Eintrag fr einen einzigen Benutzer editieren und diesen Eintrag mit
nachfolgendem Kommandoaufruf auf die anderen kopieren:
[root@fedora16 /]# edquota p albert u martha,oliver,louis,lukas
Der Schalter -p steht fr Prototype. Die Einstellungen fr den Benutzer Albert
werden also als Vorlage fr die anderen, kommaseparierten Benutzer angewen-
det.
Anzeige des aktuellen Status mit quota
Jeder Benutzer kann mithilfe des Kommandos quota Auskunft ber die ihn
betreffenden Quotierungen erhalten. Der Benutzer Root kann sich mit der
Option u auch die Einstellungen anderer Benutzer anzeigen lassen. Sie sehen die
Ausgabe des Kommandos quota fr einen Benutzer, der sein Kontingent mit
sechs sehr groen Dateien offensichtlich berschritten hat:
[harald@fedora16 dateien]$ quota
Disk quotas for user harald (uid 500):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 7000* 5000 7000 6days 6 0 0
Wenn dieser Benutzer versucht, weitere Dateien auf diesem Dateisystem zu spei-
chern, wird er eine Fehlermeldung erhalten, die so aussieht:
[harald@fedora16 /]$ cp /home/harald/* -R /dateien/
cp: regulre Datei "/dateien/zArchiv Ausgang" kann nicht angelegt
werden: Der zugewiesene Plattenplatz (Quota) ist berschritten
Erstellen eines Berichts mit repquota
Mit repquota knnen Sie einen Bericht erzeugen, der die konfigurierten Quotie-
rungen und die aktuelle Belegung des Dateisystems darstellt. Der Bericht kann
auf Basis der Benutzer oder Gruppen ausgelegt werden. Die verwendeten Para-
meter sind auch hier wieder a, u, g und v. Als Argument wird das Dateisystem
oder der Einhngepunkt angegeben, fr den der Bericht erstellt werden soll. Die
folgenden beiden Kommandos erzielen also dasselbe Ergebnis:
[root@fedora16 /]# repquota -avug /dev/sdb1
[root@fedora16 /]# repquota -avug /dateien
Das Kommando erzeugt eine umfangreiche Tabelle, die hier nicht abgedruckt
werden soll. Machen Sie sich mit dem Kommando bitte auf Ihrem eigenen Com-
puter vertraut.
186
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
104.5 Dateizugriffsrechte und -eigentmerschaft verwalten
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, Dateizugriffe durch angemes-
senen Einsatz von Rechten und Eigentmerschaft zu steuern.
Wichtigste Wissensgebiete:
Zugriffsrechte fr regulre und besondere Dateien sowie Verzeichnisse ver-
walten
Zugriffsmodi wie SUID, SGID und das Sticky Bit verwenden, um die Sicher-
heit aufrechtzuerhalten
wissen, wie man die umask ndert
das Gruppen-Feld verwenden, um Gruppenmitgliedern Dateizugriff einzuru-
men
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
chmod
umask
chown
chgrp
Allgemeines
Die Zugriffsrechte auf Dateien und Verzeichnisse werden unter Linux durch eine
binre Zeichenkette mit einer Gesamtlnge von 12 Bit definiert. blicherweise
wird diese Zeichenkette entweder in Oktalschreibweise oder symbolisch darge-
stellt. Wenn die Oktalschreibweise verwendet wird, fasst man immer je drei der
12 Bit zu einer Gruppe zusammen. Die Symbolschreibweise bezeichnet die
Rechte read (r), write (w) und execute (x). Sie mssen die berfhrung der drei
Systeme zueinander beherrschen:
Prfungstipp
Im Hinblick auf die Prfung ist es sehr erfreulich, dass die Kommandos, die mit Quota in
Zusammenhang stehen, jeweils hnliche Optionen verstehen. Doch Vorsicht: Es gibt
auch Stolpersteine! Sie mssen genau wissen, in welchen Kommandos, Optionen oder
Dateien die Worte user und group auf usr und grp gekrzt werden und in welchen nicht.
187
Dateizugriffsrechte und -eigentmerschaft verwalten 104.5
read (r) => 100 => 4
write (w) => 010 => 2
execute (x) => 001 => 1
Die Rechte werden bei der Vergabe entweder durch die symbolische Schreib-
weise oder durch Addition der Oktalwerte angegeben. So entspricht Lese- und
Schreibrecht 4 + 2, also 6. Lesen und Ausfhren wre 4 + 1, also 5 usw.
Vergabe der Berechtigungen
Zur Vergabe von Berechtigungen im Dateisystem wird das Kommando chmod ver-
wendet. Sie knnen hierbei sowohl die Oktalschreibweise als auch die Symbol-
schreibweise fr die Berechtigungen verwenden. Zur Vereinfachung werden bei
den Erluterungen in diesem Abschnitt die ersten drei der 12 Bit fr Berechtigun-
gen nicht bercksichtigt. Die verbleibenden 9 Bit legen in Dreiergruppen jeweils
die Berechtigungen fr den Besitzer der Datei, die Besitzergruppe und zuletzt alle
anderen (others) fest. Beispiel:
[root@fedora16 files]# ls -l
insgesamt 8
-rw-r--r-- 1 root root 40 3. Jan 11:15 adressen
Die erste Spalte der Ausgabe (-) zeigt lediglich an, dass es sich hier um eine Datei
handelt. Bei einem Verzeichnis stnde hier ein d. Die erste Gruppe ist rw, ergibt
also read und write fr den Besitzer. Der Bindestrich besagt, dass das execute-
Recht (x) nicht vergeben wurde. Die zweite Gruppe r-- besagt, dass die Besitzer-
gruppe lediglich Leserechte an der Datei hat. Die letzte Gruppe, die wieder mit
r-- konfiguriert ist, legt dieselben Rechte fr alle anderen (others) fest. Eine sol-
che Datei wird als world-readable bezeichnet.
Datei- und Verzeichnisberechtigungen ndern Sie mit dem Kommando chmod. Sie
knnen hierbei sowohl die Oktal- als auch die Symbolschreibweise verwenden.
Bei Verwendung der Oktalschreibweise verwenden Sie einfach die Werte, die Sie
fr die Berechtigungen errechnet haben. Beispiel:
[root@fedora16 files]# chmod 755 script-x
In diesem Fall erhlt der Besitzer der Datei Lese-, Schreib- und Ausfhrungs-
rechte an der Datei script-x. Alle anderen erhalten lediglich das Recht, dieses
Skript zu lesen und auszufhren. Sie knnen chmod, wie viele andere Programme
auch, rekursiv verwenden. Dazu verwenden Sie die Option -R. Damit das Ergeb-
nis des Kommandos angezeigt wird, knnen Sie die Optionen -v oder -c verwen-
den. Whrend -v in altbekannter Weise alle Aktivitten dokumentiert, zeigt -c
(change) nur tatschlich genderte Dateien an. Damit alle Skripte im Verzeichnis
188
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
/files dieselben Berechtigungen erhalten wie im vorangegangenen Beispiel das
Skript script-x, verwenden Sie folgendes Kommando:
[root@fedora16 /]# chmod -Rv 755 /files
Modus von "/files/script2" als 0755 (rwxr-xr-x) erhalten
Modus von "/files/script3" nach 0755 (rwxr-xr-x) gendert
Modus von "/files/script4" nach 0755 (rwxr-xr-x) gendert
Modus von "/files/script5" nach 0755 (rwxr-xr-x) gendert
Bei Verwendung der Symbolschreibweise stehen Ihnen zustzlich andere Mg-
lichkeiten zur Verfgung. Sie knnen bei Symbolschreibweise nmlich nicht nur
absolute Werte fr die Berechtigungen angeben, sondern auch Rechte hinzuf-
gen oder abziehen. Zu diesem Zweck wird jeweils entweder ein Plus- oder ein
Minuszeichen verwendet. Wenn Sie Rechte vergeben wollen, die dem Modus
755 entsprechen, knnen Sie z.B. folgendes Kommando verwenden:
[root@fedora16 files]# chmod u=rwx,g=rx,o=rx script-x
Die Berechtigungen werden durch Kommata getrennt; zustzliche Leerzeichen
sind nicht erlaubt. Das u (user) steht fr den Besitzer der Datei, g (group) fr die
Besitzergruppe und o (others) fr den Rest der Welt. Es gibt zustzlich die Mg-
lichkeit, ein a (all) zu verwenden, wenn fr alle Benutzer dieselben Berechtigun-
gen gelten sollen. Wenn das oben genannte Skript vor versehentlichen Modifika-
tionen durch den Besitzer geschtzt werden soll, reicht es aus, wenn alle die
Berechtigungen Lesen und Ausfhren fr das Skript erhalten. Das kann durch fol-
gendes Kommando erreicht werden:
[root@fedora16 files]# chmod a=rx script-x
Wenn Sie ein neues Skript erstellen, erhlt es normalerweise aufgrund der umask
(umask wird auf den nchsten Seiten noch behandelt) die Berechtigung 644.
Damit das Skript ausgefhrt werden kann, mssen noch Ausfhrungsberechti-
gungen vergeben werden. Von den Standardberechtigungen ausgehend, stehen
dafr verschiedene Kommandos zur Verfgung. Die folgenden Kommandos
haben alle zur Folge, dass besagtes Skript durch jeden ausgefhrt werden kann.
Versuchen Sie nochmals, jedes der Kommandos genau zu verstehen:
[root@fedora16 files]# chmod 755 neues-script
[root@fedora16 files]# chmod u=rwx,g=rx,o=rx neues-script
[root@fedora16 files]# chmod a+x neues-script
[root@fedora16 files]# chmod u+x,g+x,o+x neues-script
Die letzten beiden Kommandos haben also keine absoluten Berechtigungen erteilt,
sondern die Ausfhrungsberechtigungen jeweils hinzugefgt. Genauso knnen
Berechtigungen aber auch subtrahiert werden. Verwenden Sie dazu einfach ein
Minuszeichen, wie im folgenden Beispiel gezeigt wird:
189
Dateizugriffsrechte und -eigentmerschaft verwalten 104.5
[root@fedora16 files]# chmod g-rwx,o-rwx /geheimverzeichnis -R
Mit diesem Kommando wurden allen Benutzern, auer dem Besitzer, smtliche
Rechte an dem Verzeichnis /geheimverzeichnis und an allen darin enthaltenen Unter-
verzeichnissen (-R sorgt fr rekursive Befehlsausfhrung) und Dateien entzogen.
Verwendung von SUID, SGID und Sticky Bit
Bisher wurden die ersten drei der 12 Bit, die die Zugriffe steuern, vernachlssigt.
Diese reprsentieren das SUID, das SGID und das Sticky Bit. Die Verwendung die-
ser Bits bewirkt Folgendes:
SUID bzw. Setuid
Auf eine ausfhrbare Binrdatei angewendet, bewirkt dieses Bit, dass ein Pro-
gramm immer im Sicherheitskontext des Besitzers dieses Programms ausgefhrt
wird. Ein klassisches Beispiel hierfr ist passwd. Mit diesem Programm kann ein
Benutzer sein eigenes Passwort ndern. Dazu bentigt er theoretisch gesehen
Schreibrechte auf die Datei /etc/shadow. Tatschlich kann aber nur der Root
schreibend auf diese Datei zugreifen. Da das Programm passwd ber ein gesetztes
SUID-Bit verfgt, gehrt der resultierende Prozess bei der Ausfhrung des Pro-
gramms (egal, durch wen) dem Benutzer Root. Deshalb wird dem Prozess der
Schreibzugriff gewhrt, und das Kennwort kann gendert werden. Sie erkennen
ein gesetztes SUID-Bit daran, dass bei den Symbolen fr die Ausfhrungsberech-
tigungen einer Datei fr deren Besitzer ein s gesetzt ist:
[root@fedora16 /]# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 25604 5. Apr 2007 /usr/bin/passwd
Da Programme, die mit einem SUID-Bit bestckt sind, mit Root-Rechten ausge-
fhrt werden, stellen diese ein Sicherheitsrisiko dar. Es macht deshalb Sinn, ein
Produktivsystem hin und wieder nach solchen Dateien zu durchsuchen. Diese
Aufgabe knnen Sie leicht mit find durchfhren:
[root@fedora16 /]# find / -perm -u+s
Das SUID-Bit hat zumindest unter Linux keine Auswirkung auf Verzeichnisse und
Skripte.
SGID oder Setgid
Das SGID hat auf ausfhrbare Dateien einen hnlichen Einfluss wie das SUID-Bit.
Der Prozess, der beim Ausfhren einer Datei mit gesetztem Setgid-Bit entsteht,
gehrt der Gruppe, die auch die Eigentumsrechte an der Datei besitzt. Ein klassi-
scher Vertreter fr solche Programme ist sendmail:
190
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
[root@fedora16 /]# ls -l /usr/sbin/sendmail
-r-xr-sr-x 1 root mail 676688 Aug 30 2006 /usr/sbin/sendmail
Sie erkennen das gesetzte Setgid-Bit am kleinen s bei den Ausfhrungsberechti-
gungen der Besitzergruppe.
Wenn das SGID-Bit auf ein Verzeichnis angewendet wird, dann werden alle
Dateien, die in diesem Verzeichnis neu erstellt werden, automatisch der Gruppe
zugeordnet, der auch das Verzeichnis selbst gehrt. Das ist sehr praktisch bei der
Verwendung von Arbeitsgruppenverzeichnissen.
Sticky Bit
Auch das Sticky Bit wird gern fr Arbeitsgruppen verwendet. Wenn Sie es auf ein
Verzeichnis anwenden, kann nur noch der Besitzer einer Datei, der Besitzer des
Verzeichnisses oder Root eine Datei lschen bzw. umbenennen, die sich in die-
sem Verzeichnis befindet. Sie erkennen das Sticky Bit am kleinen t an der Posi-
tion fr die Ausfhrungsberechtigung von others.
drwxr-xr-t 2 root root 4096 Oct 19 18:42 public
Auf Dateien angewendet, hat das Sticky Bit unter Linux keinen Einfluss.
Setzen der speziellen Berechtigungen
Die drei speziellen Bits werden ebenfalls mit dem Kommando chmod gesetzt. Wenn
Sie diese Bits von vornherein einplanen, knnen Sie diese direkt bei der normalen
Vergabe von Dateirechten mit bergeben. Soll etwa ein Programm durch jeden als
Root ausfhrbar sein, dann knnen Sie folgendes Kommando verwenden.
archangel:/tools # chmod 4755 killerprogramm
Sie erkennen das gesetzte SUID-Bit wieder am kleinen s:
-rwsr-xr-x 1 root root 10060 Jan 3 17:00 killerprogramm*
Sie knnen das SUID-Bit auch nachtrglich hinzufgen, indem Sie es mit dem
Plus-Operator bergeben:
archangel:/tools # chmod u+s killerprogramm
Wenn Sie einem Verzeichnis das Sticky Bit nachtrglich hinzufgen wollen, kn-
nen Sie dieses Kommando verwenden:
archangel:/tools # chmod o+t /worgroup
Bei der Interpretation der Ausgabe des ls-Kommandos ist in Bezug auf spezielle
Mode Bits Folgendes zu beachten: Alle speziellen Mode Bits werden auf den kor-
respondierenden Ausfhrungsberechtigungen platziert. Deshalb wird die jewei-
191
Dateizugriffsrechte und -eigentmerschaft verwalten 104.5
lige Ausfhrungsberechtigung verdeckt. Ob es sich jeweils auch um eine aus-
fhrbare Datei handelt, erkennen Sie daran, ob das spezielle Bit mit einem
Kleinbuchstaben oder mit einem Grobuchstaben dargestellt wird:
-rwsr-xr-x
Das SUID-Bit ist gesetzt. Die Datei ist fr den Besitzer ausfhrbar.
-rwSr--r--
Das SUID-Bit ist gesetzt. Die Datei ist fr den Besitzer nicht ausfhrbar.
-rwxr-sr-x
Das SGID-Bit ist gesetzt. Die Datei ist fr die Besitzergruppe ausfhrbar.
-rwxr-Sr--
Das SGID-Bit ist gesetzt. Die Datei ist fr die Besitzergruppe nicht ausfhrbar.
-rwsr-xr-t
Das Sticky Bit ist gesetzt. Die Datei ist fr alle ausfhrbar.
-rwsr-xr-T
Das Sticky Bit ist gesetzt. Die Datei ist nicht fr alle ausfhrbar.
chown
Das Krzel chown steht fr change owner. Ursprnglich wurde das Programm pri-
mr dazu eingesetzt, um den Besitzer einer Datei oder eines Verzeichnisses zu
ndern. Inzwischen knnen Sie aber auch die Eigentmergruppe von Dateien
und Verzeichnissen mit chown ndern. Sie sollten fr die Prfung unbedingt wis-
sen, wie diese Aufgaben jeweils einzeln oder gleichzeitig mittels chown durchge-
fhrt werden. Die folgenden Beispiele zeigen, eng an die Prfungssituation ange-
lehnt, wie Sie mit chown arbeiten. Mit den ersten beiden Kommandozeilen
werden sowohl der Besitzer als auch die Besitzergruppe fr alle Dateien im aktu-
ellen Verzeichnis jeweils auf root gesetzt:
archangel:/tools # chown root.root *
archangel:/tools # chown root:root *
Beachten Sie, dass sowohl ein Punkt als auch ein Doppelpunkt als Trennzeichen
eingesetzt werden kann. Wenn nur der Besitzer fr ein Verzeichnis gendert wer-
den soll, dieser dafr aber rekursiv, geben Sie z.B. folgendes Kommando ein:
archangel:/ # chown hans /home/hans -R
Auerdem knnen Sie mit chmod auch nur die Besitzergruppe ndern. Hierzu ste-
hen wieder zwei Varianten mit unterschiedlichen Trennzeichen zur Verfgung:
archangel:/ # chown :users /home -R
archangel:/ # chown .users /home -R
192
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Fr die Praxis sind Sie mit diesem Kommando in Bezug auf die Dateieigentmer-
schaft bestens ausgerstet. Fr die Prfung mssen Sie zustzlich das Programm
chgrp kennen.
chgrp
Mit chgrp (change group) ndern Sie die Besitzergruppe fr Dateien und Ver-
zeichnisse. Sie knnen diese Ttigkeit auch wie bereits beschrieben mit chown
durchfhren. Im folgenden Beispiel wird die Besitzergruppe fr die Datei file1
auf users gesetzt:
archangel:/testfiles # chgrp users file1
Genau wie chown kann chgrp auch rekursiv eingesetzt werden. Die folgende
Befehlszeile setzt die Besitzergruppe fr das Verzeichnis /home und alle darin ent-
haltenen Verzeichnisse und Dateien auf users:
archangel:/ # chgrp -R users /home
Verwendung von umask
Die umask legt fest, welche Berechtigungen fr eine neu erstellte Datei oder ein
Verzeichnis per Voreinstellung vergeben werden. blicherweise wird der Wert
fr umask in der Datei /etc/profile festgelegt. Soll fr einen einzelnen Benutzer
ein anderer Wert gelten, konfigurieren Sie diesen in der Datei .bash_profile im
Heimatverzeichnis des betreffenden Benutzers. Sie knnen diese Einstellung aber
jederzeit mit dem Kommando umask berprfen bzw. ndern. Die Berechnung
der zu vergebenden Berechtigungen ist fr Dateien und Verzeichnisse verschie-
den. Beim Erstellen einer neuen Datei wird die umask von 0666 subtrahiert,
whrend beim Erstellen neuer Verzeichnisse die umask von 0777 abgezogen
wird. Bei den meisten Systemen ist der Wert fr umask 0022. Sie knnen dies
durch einfache Eingabe des Kommandos umask ohne Optionen berprfen:
[root@fedora16 ~]# umask
0022
Eine neu erstellte Datei wrde somit die Berechtigung 0666 0022, also 0644
erhalten. Das bedeutet, dass der Besitzer der Datei Lese- und Schreibrechte
bekommt. Alle anderen erhalten lediglich Leserecht. Es folgt die Aufstellung in
Oktal-, Binr- und Symbolschreibweise:
Prfungstipp
Fr die Prfung sollten Sie mit der Verwendung von chown und chgrp vertraut sein. Ins-
besondere die Verwendung von chown zur nderung von Besitzergruppen ist in diesem
Zusammenhang wichtig.
193
Dateizugriffsrechte und -eigentmerschaft verwalten 104.5
0644 => 000 110 100 100
=> rw- r-- r--
Wenn ein Verzeichnis neu erstellt wird, ergibt sich 0777 0022, also 0755. In
Bezug auf ein Verzeichnis bedeutet Ausfhren, dass in dieses Verzeichnis
gewechselt werden darf. Der Besitzer darf also lesen, schreiben und in das Ver-
zeichnis wechseln. Alle anderen drfen nur lesen und in das Verzeichnis wech-
seln. Oktal, binr oder in Symbolschreibweise wrde das folgendermaen ausge-
drckt werden:
0755 => 000 111 101 101
=> rwx r-x r-x
Manche Administratoren sichern ihr System ab, indem sie den Wert fr umask
auf 0027 setzen. Damit wird bewirkt, dass sowohl bei der Erstellung von Dateien
als auch von Verzeichnissen keine Berechtigungen fr others erteilt werden.
Selbst Leserechte mssen dann fr others bewusst und ausdrcklich vergeben
werden. Sie ndern umask einfach durch Eingabe des Kommandos, gefolgt von
dem gewnschten Wert. Fhrende Nullen knnen weggelassen werden. Die fol-
genden Kommandos haben demzufolge denselben Effekt:
[root@fedora16 ~]# umask 0027
[root@fedora16 ~]# umask 27
Sie knnen die umask auch in Symbolschreibweise verwenden. Die folgende
Zeile zeigt, dass auch diese Schreibweise genau denselben Effekt bewirkt:
[root@fedora16 ~]# umask u=rwx,g=rx,o=
Dateiattribute der ext2-, ext3- und ext4-Dateisysteme
Fr ext2-, ext3- und ext4-Dateisysteme gibt es noch einen Satz Attribute, den Sie
verwenden knnen. Sie knnen diese Attribute mit dem Kommando lsattr
anzeigen und mit chattr ndern. Das Programm chattr kann mit drei verschie-
denen Operatoren verwendet werden:
+ fgt Attribute hinzu.
- entfernt Attribute.
= weist Attribute zu. Bestehende andere Attribute werden entfernt.
Sie knnen mit den Operatoren folgende Attribute zuweisen:
Prfungstipp
Merken Sie sich fr die Prfung, wie die aus der umask resultierenden Berechtigungen
fr Dateien und Verzeichnisse aussehen.
194
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
append only (a) die Datei kann nur noch anhngend erweitert werden.
compressed (c) die Datei wird durch den Kernel komprimiert.
no dump (d) die Datei wird durch dump nicht gesichert.
immutable (i) die Datei kann nicht modifiziert, umbenannt oder gelscht
werden.
data journalling (j) die Daten werden in das ext3-Journal geschrieben,
bevor die eigentliche Datei ins Dateisystem geschrieben wird.
secure deletion (s) wenn diese Datei gelscht wird, wird der Datenbereich
mit Nullen berschrieben.
no tail-merging (t) wird noch nicht untersttzt.
undeletable (u) die Datei kann zwar gelscht, im Zweifelsfall aber auch pro-
blemlos wiederhergestellt werden.
no atime updates (A) die Zugriffszeit wird nicht aktualisiert. Das soll die
Anzahl unntiger Schreibzugriffe (insbesondere fr Notebooks) auf das Datei-
system minimieren.
synchronous directory updates (D) Verzeichnisnderungen werden syn-
chron auf die Festplatte geschrieben.
synchronous updates (S) Dateinderungen werden synchron auf die Fest-
platte geschrieben.
top of directory hierarchy (T) ein Verzeichnis mit diesem Attribut wird als
Top der Verzeichnishierarchie erachtet.
Beispiel: Die Dateien adressen, kunden und hndler sollen nicht modifizierbar,
sondern lediglich erweiterbar sein. Um Schreibzugriffe auf die Festplatte zu mini-
mieren, sollten Zugriffe nicht in der atime dokumentiert werden. Aus Sicher-
heitsgrnden sollten genderte Daten sofort (synchron) auf die Festplatte
geschrieben werden. Die gewnschten nderungen werden anschlieend mit
lsattr angezeigt:
[root@fedora16 files]# chattr =aAS adressen hndler kunden
[root@fedora16 files]# lsattr
--S--a-A------ ./hndler
--S--a-A------ ./kunden
--S--a-A------ ./adressen
Den Dateien sollte nachtrglich das Attribut u hinzugefgt werden. Das Ergebnis
wird whrend der Programmausfhrung mit -V geprft:
[root@fedora16 files]# chattr -V +u adressen hndler kunden
chattr 1.40.2 (12-Jul-2007)
Flags von adressen wie folgt gesetzt: -uS--a-A------
195
Harte und symbolische Links anlegen und ndern 104.6
Flags von hndler wie folgt gesetzt: -uS--a-A------
Flags von kunden wie folgt gesetzt: -uS--a-A------
Das Kommando chattr kann, wie viele andere Programme auch, mit -R rekursiv
aufgerufen werden. Prfungsfragen zu diesem Thema sind bisher eher selten
gestellt worden.
104.6 Harte und symbolische Links anlegen und ndern
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, harte und symbolische Links
auf eine Datei anzulegen und zu verwalten.
Wichtigste Wissensgebiete:
Links anlegen
harte und/oder symbolische Links identifizieren
Dateien kopieren vs. verlinken
Links verwenden, um Systemadministrationsaufgaben zu untersttzen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
ln
Allgemeines
Wenn es ermglicht werden soll, auf eine Datei von verschiedenen Verzeichnis-
sen aus zuzugreifen, knnen Sie auf diese Datei einen Link legen, anstatt die
Datei in die verschiedenen Verzeichnisse zu kopieren. Das hat im Wesentlichen
zwei Vorteile: Einerseits sparen Links Platz auf dem Datentrger; weil eine Datei
nicht mehrfach vorhanden sein muss, soll diese ber mehr als einen Pfad bereit-
gestellt werden knnen. Andererseits wird die Administration vereinfacht, weil
man nicht mehrere Versionen einer Datei pflegen muss. Wenn eine Datei ber
einen beliebigen Link modifiziert wird, gelten die nderungen fr alle Instanzen
dieser Datei.
Softlinks
Softlinks werden auch als symbolische Links bezeichnet. Ein Softlink ist im Prin-
zip ein Zeiger, der auf eine Datei zeigt. Er belegt nur wenig Speicherplatz auf dem
Datentrger, auf dem er angelegt wurde. Die Besonderheiten eines Softlinks sind:
196
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Er kann sowohl auf Dateien als auch auf Verzeichnisse verweisen.
Er kann auf Dateien und Verzeichnisse einer anderen oder derselben Partition
angewendet werden, auf der er sich selbst befindet.
Er verwendet die Dateiberechtigungen der Zieldatei und ist deshalb immer
mit Lese-, Schreib- und Ausfhrungsrechten versehen.
Ein Softlink bleibt bestehen, wenn die Zieldatei gelscht wird. Man bezeich-
net einen solchen verwaisten Link auch als gebrochenen Link.
Die folgenden kommentierten Kommandos demonstrieren das Verhalten von
Softlinks. Das erste Kommando ln -s erzeugt einen Softlink mit der Bezeichnung
softlink, der auf die existierende Datei file1 verweist. Mit dem zweiten Kom-
mando wird das Ergebnis der Aktion berprft:
archangel:/testfiles # ln -s file1 softlink
archangel:/testfiles # ls -l
total 44
drwxr-xr-x 2 root root 4096 Jan 2 18:00 .
drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
-rw-r--r-- 1 root root 35184 Jan 2 17:55 file1
lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
Die erste Spalte der letzten Zeile des Kommandos ls -l zeigt an, dass es sich um
einen Link handelt. Beachten Sie bitte auch, dass in der Zugriffssteuerungsliste
alle Rechte gesetzt sind. Wenn Sie nun den Modus dieses Links verndern, ndert
sich stattdessen der Modus der Zieldatei:
archangel:/testfiles # chmod a+w softlink
archangel:/testfiles # ls -l
total 44
drwxr-xr-x 2 root root 4096 Jan 2 18:00 .
drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
-rw-rw-rw- 1 root root 35184 Jan 2 17:55 file1
lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
Das erste Kommando fgt zu softlink Schreibrechte fr alle hinzu. Diese Rechte
werden aber stattdessen der Datei file1 hinzugefgt, wie Sie sehen. Es gibt meh-
rere Methoden, sich die Auswirkungen von Links anzusehen. Mit dem Kom-
mando ls -li kann z.B. nachgewiesen werden, dass die Zieldatei und der Soft-
link zwei verschiedene Inodes verwenden:
archangel:/testfiles # ls -li
total 44
1896834 drwxr-xr-x 2 root root 4096 Jan 2 18:00 .
2 drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
197
Harte und symbolische Links anlegen und ndern 104.6
1896921 -rw-rw-rw- 1 root root 35184 Jan 2 17:55 file1
1896920 lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
Die Datei file1 verwendet den Inode 1896921, whrend der Softlink softlink den
Inode 1896920 belegt. Mit dem Kommando stat kann hnliches nachgewiesen
werden:
archangel:/testfiles # stat softlink
File: `softlink' -> `file1'
Size: 5 Blocks: 0 IO Block: 4096 symbolic link
Device: 302h/770d Inode: 1896920 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2008-01-02 18:26:45.000000000 +0100
Modify: 2008-01-02 18:00:07.000000000 +0100
Change: 2008-01-02 18:00:07.000000000 +0100
In der zweiten Zeile der Kommandoausgabe wird angezeigt, dass es sich um
einen symbolischen Link handelt. Die Zugriffsrechte sind auch noch einmal deut-
lich dargestellt. Wenden Sie dasselbe Kommando auf die Zieldatei des Links an,
ergibt sich folgendes Bild:
archangel:/testfiles # stat file1
File: `file1'
Size: 35184 Blocks: 72 IO Block: 4096 regular file
Device: 302h/770d Inode: 1896921 Links: 1
Access: (0666/-rw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2008-01-02 17:55:38.000000000 +0100
Modify: 2008-01-02 17:55:38.000000000 +0100
Change: 2008-01-02 18:01:03.000000000 +0100
Die zweite Zeile besagt, dass es sich um eine gewhnliche Datei handelt. Auch
hier sieht man deutlich, dass die Zieldatei und der Softlink zwei verschiedene
Inodes verwenden.
Mit den nchsten Kommandos wird demonstriert, was geschieht, wenn Sie die
Zieldatei eines symbolischen Links lschen, den Link selbst aber nicht:
archangel:/testfiles # rm file1
Die Zieldatei ist nun gelscht:
archangel:/testfiles # ls -l
total 8
drwxr-xr-x 2 root root 4096 Jan 2 18:40 .
drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
198
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
Der Softlink ist bestehen geblieben, wie Sie sehen. Wenn Sie nun versuchen,
ber diesen Link auf die nicht mehr existierende Datei zuzugreifen, erhalten Sie
jedoch eine Fehlermeldung:
archangel:/testfiles # cat softlink
cat: softlink: No such file or directory
Ein typisches Beispiel fr die praktische Verwendung von Softlinks sind die Ver-
linkungen der init-Skripte, die beim Systemstart abgearbeitet werden. Die
genaue Funktionsweise dieser Links wurde bereits im Abschnitt 101.2, Das Sys-
tem starten, behandelt. Sie sehen hier einen Teil der Links, die zum Runlevel 3
eines Systems gehren:
archangel:/etc/rc.d/rc3.d # ls -l
total 8
drwxr-xr-x 2 root root 4096 Oct 19 21:53 ./
drwxr-xr-x 11 root root 4096 Dec 19 11:04 ../
lrwxrwxrwx 1 root root 7 Jul 20 2005 K03cron -> ../cron*
lrwxrwxrwx 1 root root 8 Jul 20 2005 K03smbfs -> ../smbfs*
lrwxrwxrwx 1 root root 6 Jul 20 2005 K05smb -> ../smb*
lrwxrwxrwx 1 root root 8 Jul 20 2005 K05squid -> ../squid*
... weitere Zeilen wurden entfernt ...
Hardlinks
Bei einem Hardlink handelt es sich eigentlich nur um einen weiteren Verzeich-
niseintrag fr eine existierende Datei. Demzufolge belegt er auch keinen eigenen
Inode und fast gar keinen Speicherplatz im Dateisystem. Daraus ergeben sich vl-
lig andere Eigenschaften im Vergleich zu einem symbolischen Link:
Hardlinks knnen nicht auf Verzeichnisse angewendet werden, sondern nur
auf Dateien.
Hardlinks knnen nicht partitionsbergreifend eingesetzt werden.
Es gibt keine verwaisten bzw. gebrochenen Hardlinks. Eine Datei wird
gelscht, wenn der letzte Hardlink zu dieser Datei gelscht wird.
Die Zieldatei und der Hardlink verwenden eine gemeinsame Zugriffssteue-
rungsliste (ACL).
Ein Hardlink ist im Nachhinein nicht mehr von seiner Zieldatei zu unterschei-
den.
Wenn Sie das Kommando ln ohne Optionen verwenden, wird ein Hardlink
erstellt. Die folgenden Kommandos demonstrieren die Eigenarten von Hardlinks.
199
Harte und symbolische Links anlegen und ndern 104.6
Zunchst werden zwei Hardlinks zu einer bestehenden Datei erstellt. Das Kom-
mando ls -l zeigt das Ergebnis der Aktion:
archangel:/testfiles # ln file1 hardlink1
archangel:/testfiles # ln file1 hardlink2
archangel:/testfiles # ls -l
total 80
drwxr-xr-x 2 root root 4096 Jan 2 19:21 .
drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
-rw-r--r-- 3 root root 22271 Jan 2 19:21 file1
-rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink1
-rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink2
Die drei Dateien sind offensichtlich gleich gro und verfgen auch sonst ber
dieselben Eigenschaften. Mit ls -li soll festgestellt werden, welche Inodes die
Dateien jeweils belegen:
archangel:/testfiles # ls -li
total 80
1896834 drwxr-xr-x 2 root root 4096 Jan 2 19:21 .
2 drwxr-xr-x 24 root root 4096 Jan 2 17:55 ..
1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 file1
1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink1
1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink2
Alle drei Dateien verwenden ein und denselben Inode. Wenn Sie das Kommando
stat auf eine der drei Dateien anwenden, sehen Sie zwei interessante Details.
Erstens werden die Hardlinks als regulre Dateien erkannt, und zweitens erkennt
das Programm drei Links. Es wird also auch die ursprngliche Datei als Link dar-
gestellt:
archangel:/testfiles # stat hardlink1
File: `hardlink1'
Size: 22271 Blocks: 48 IO Block: 4096 regular file
Device: 302h/770d Inode: 1896921 Links: 3
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2008-01-02 19:21:30.000000000 +0100
Modify: 2008-01-02 19:21:30.000000000 +0100
Change: 2008-01-02 19:21:46.000000000 +0100
Prfungstipp
Sie mssen in der Prfung die Verwendungszwecke und Eigenschaften von Hardlinks
und Softlinks kennen. Das Kommando stat war hier zwar nur ein Mittel zum Zweck,
sollte aber ebenfalls fr die Prfung bekannt sein.
200
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
104.7 Systemdateien finden und Dateien am richtigen
Ort platzieren
Wichtung: 2
Beschreibung: Kandidaten sollten mit dem Filesystem Hierarchy Standard (FHS)
vertraut sein und typische Dateiorte und Verzeichnisklassifizierungen kennen.
Wichtigste Wissensgebiete:
die korrekten Orte von Dateien unter dem FHS kennen
Dateien und Kommandos auf einem Linux-System finden
den Ort und den Zweck wichtiger Dateien und Verzeichnisse gem dem FHS
kennen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
find
locate
updatedb
whereis
which
type
/etc/updatedb.conf
Allgemeines
Um den Umgang mit Unix-Betriebssystemen zu vereinfachen, wird der Aufbau
der Verzeichnisstruktur durch den FHS (Filesystem Hierarchy Standard) verein-
heitlicht. Hierbei handelt es sich lediglich um eine Referenz, die aber von vielen
Unix-Herstellern und auch Linux-Distributoren verwendet wird. hnliches gilt
fr die wichtigsten Werkzeuge, die zum Auffinden von Dateien auf einem System
eingesetzt werden knnen. Sie sind praktisch auf jedem Unix- oder Linux-Com-
puter zu finden. Deshalb ist es einem versierten Linux-Administrator jederzeit
mglich, sich schnell in ein fremdes Unix- oder Linux-System einzuarbeiten.
FHS Filesystem Hierarchy Standard
Der FHS definiert eine Mindestvoraussetzung, welche Verzeichnisse und auch
welche Dateien auf einem System vorhanden sein mssen. Fr Linux gibt es
innerhalb dieses Standards eine zustzliche Sektion, die Verzeichnisse enthlt, die
auf gewhnlichen Unix-Systemen nicht zu finden sind.
201
Systemdateien finden und Dateien am richtigen Ort platzieren 104.7
Der Filesystem Hierarchy Standard wird bentigt, damit Unix-Programme leichter
zwischen unterschiedlichen Unix-Versionen portierbar sind. Ein Programm findet
durch diese Standardisierung immer bestimmte Verzeichnisse, Librarys und auch
einige Tools in denselben Pfaden wieder. Auch fr den Anwender ist es angenehm,
immer in einer gewohnten Umgebung von Verzeichnissen zu arbeiten.
Um eine erste Einteilung zu erreichen, werden Daten nach gegenstzlichen Kate-
gorien eingestuft:
shareable sind Verzeichnisse, die von mehreren Systemen gemeinsam genutzt
werden knnen. Das wren z.B. die Verzeichnisse /usr und /opt.
unshareable sind Verzeichnisse, die keinesfalls gemeinsam genutzt werden
knnen (z.B. /etc und /boot).
variable sind Verzeichnisse, deren Datenbestand sich stndig ndert (z.B.
/home und /var/mail).
static sind Verzeichnisse, wie /boot, /opt und /usr, deren Dateien sich eher sel-
ten ndern.
Diese Unterteilung ist vor allem bei der Partitionierung hilfreich. Wenn Daten,
die eher statischer Natur sind, auf einer gemeinsamen Partition abgelegt werden,
dann brauchen Sie diese Partition nicht so oft zu sichern wie Partitionen, die eher
variable Daten enthalten. Dateien, die von mehreren Computern gemeinsam
genutzt werden knnen, sollten der bersichtlicheren Exportierbarkeit halber in
denselben Unterverzeichnissen untergebracht sein. Nach FHS, Version 2.3, ms-
sen zumindest die folgenden Verzeichnisse auf einem Unix-Rechner unterhalb
von / untergebracht sein (Stand: 28. Januar 2004):
/bin enthlt grundlegende Programme, die sowohl fr Anwender als auch fr
den Root verfgbar sind.
/boot enthlt den statischen Teil des Kernels und den Bootloader.
/dev enthlt die Gertedateien.
/etc enthlt host-spezifische Konfigurationsdateien.
/lib enthlt grundlegende Shared Librarys und Kernel-Module.
/media enthlt Mountpoints fr Wechselmedien.
/mnt ist der Mountpoint fr temporr eingehngte Dateisysteme.
/opt enthlt Zusatzanwendungen und Softwarepakete.
/sbin enthlt grundlegende Systemprogramme.
/srv enthlt Daten, die von Diensten dieses Systems angeboten werden (z.B.
www-root, ftp-root).
202
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
/tmp enthlt temporre Dateien.
/usr enthlt die sekundre Hierarchie.
/var enthlt variable Daten.
Fr Linux sind zustzlich folgende Pfade definiert:
/dev/null Daten, die auf diesem Gert ausgegeben werden, werden verwor-
fen.
/dev/zero wenn von diesem Gert gelesen wird, werden beliebig viele 0 Bit
generiert.
/dev/tty dieses Gert reprsentiert das Terminal, auf dem ein Prozess luft.
/proc das ist das Verzeichnis fr Kernel- und Prozessinformationen.
/sbin gibt es auch unter Unix, soll aber bei einem Linux-System zustzlich Pro-
gramme zur Verwaltung von ext2 enthalten (e2fsck, mke2fs, tune2fs usw.).
/var/spool/cron enthlt die variablen Daten fr cron.
Auch wenn Ihnen diese Verzeichnisse besonders vertraut und wichtig erscheinen
mgen: Sowohl /home als auch /root sind optionale Verzeichnisse.
Der FHS enthlt auch Richtlinien darber, welche Dateien explizit in den jeweili-
gen Verzeichnissen vorhanden sein mssen. Fr die Prfung mssen Sie den FHS
allerdings nur insoweit kennen, wie er hier beschrieben wurde.
Programme zum Auffinden von Dateien
Damit Sie sich auf einem Linux-System orientieren und Dateien schnell auffinden
knnen, stehen Ihnen verschiedene Programme zur Verfgung. Die wichtigsten
dieser Programme werden auf den folgenden Seiten beschrieben.
whereis
Das Kommando whereis (wo ist?) knnen Sie verwenden, wenn Sie Informatio-
nen ber die Speicherorte eines Programms erfahren wollen. Das Programm zeigt
Ihnen
Prfungstipp
In den Prfungen werden hufig Fragen gestellt, die Sie vor die Entscheidung stellen
werden, welche Dateisysteme Sie vorzugsweise sichern sollten und welche nicht. Es ist
empfehlenswert, sich dazu ein paar Gedanken zu machen, whrend Sie die oben
genannten Verzeichnisse und deren Verwendungszweck untersuchen. (Es macht bei-
spielsweise wenig Sinn, /proc zu sichern, whrend die Sicherung von /home als sehr
wichtig einzustufen ist.)
203
Systemdateien finden und Dateien am richtigen Ort platzieren 104.7
den Pfad zu den ausfhrbaren Dateien,
den Pfad zu den Konfigurationsdateien des Programms (falls vorhanden),
den Pfad zu den Manpages des Programms,
den Pfad zu den Quellen des Programms (falls vorhanden).
Beispiel:
[root@fedora16 ~]# whereis samba
samba: /etc/samba /usr/lib/samba /usr/share/samba
Auch das Kommando whereis versteht mehrere Optionen. Diese brauchen Sie
zum Bestehen der Prfung aber nicht zu kennen.
which
Wie Sie wissen, werden Programme, die sich in einem in der PATH-Variablen ent-
haltenen Verzeichnis befinden, ohne Angabe des Pfades gestartet. Problematisch
wird das Ganze, wenn mehrere Programme mit dem gleichen Dateinamen auf
einem System existieren. Es stellt sich dann die Frage, welches (which) der Pro-
gramme berhaupt ausgefhrt wird, wenn man nicht den kompletten Pfad dazu
angibt. Hierzu ein Beispiel:
Auf einem der Referenzsysteme befindet sich ein doppelt vorhandenes Skript.
Die kompletten Pfade sind jeweils /usr/local/sbin/script1 und /sbin/script1. Beide
Pfade sind in der PATH-Variablen des Systems enthalten:
root@ubuntu-server:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Das Skript /usr/local/sbin/script1 wrde in diesem Fall bevorzugt ausgefhrt wer-
den, weil der entsprechende Pfad ganz vorn in der PATH-Variablen steht. Damit
Sie auch in dieser Situation herausbekommen knnen, welches Programm stan-
dardmig ohne Pfadangabe ausgefhrt wrde, knnen Sie das Programm which
verwenden. Dieses zeigt nmlich den Pfad zur ersten gefundenen, ausfhrbaren
Datei eines angegebenen Kommandos an:
root@ubuntu-server:~# which script1
/usr/local/sbin/script1
Damit alle ber die PATH-Variable erreichbaren Programme gleichen Namens
angezeigt werden, knnen Sie die Option -a verwenden:
root@ubuntu-server:~# which -a script1
/usr/local/sbin/script1
/sbin/script1
204
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
whatis, apropos
Die Kommandos whatis und apropos sind eigentlich kein Bestandteil der Pr-
fung, werden aber gern als falsche Antwortalternativen mit eingestreut.
whatis zeigt das Beschreibungsfeld einer Manpage an.
apropos durchsucht die Namen und Beschreibungsfelder der Manpages nach
einem angegebenen Suchwort.
find
Das Programm find sucht, wie der Name schon vermuten lsst, nach Dateien und
Verzeichnissen in einer Verzeichnishierarchie. Zur Suche knnen unterschiedli-
che Kriterien angesetzt werden. In den meisten Fllen wird aber wahrscheinlich
nach einem Dateinamen gesucht. Hierbei knnen auch Wildcards verwendet
werden. Ein * ersetzt z.B. beliebig viele Zeichen. Verwechseln Sie diesen Sachver-
halt in der Prfung bitte nicht mit den regulren Ausdrcken.
Beispiel: Um eine Datei mit einer Auflistung aller OpenOffice.org-Textdateien zu
erhalten, die Ihre Benutzer in Ihren Heimatverzeichnissen erstellt haben, geben
Sie folgendes Kommando ein:
root@ubuntu-server:~# find /home -name '*.sxw' > Dokumentenliste
Es wird dann unterhalb des Verzeichnisses /home nach Dateien mit beliebigen
Namen und der Dateierweiterung sxw gesucht. Das Ergebnis wird in der Datei
mit der Bezeichnung Dokumentenliste gespeichert.
Sie knnen mit find aber auch nach vllig anderen Kriterien suchen:
-name sucht nach Dateinamen (wie gehabt).
-amin n sucht nach Dateien, auf die vor n Minuten zugegriffen wurde.
-mmin n sucht nach Dateien, die vor n Minuten modifiziert wurden.
-cmin n sucht nach Dateien, die vor n Minuten gendert wurden (z.B. Datei-
name, Zugriffsrechte).
-atime n sucht nach Dateien, auf die zuletzt vor n mal 24 Stunden zugegriffen
wurde.
-mtime n sucht nach Dateien, die vor n mal 24 Stunden modifiziert wurden.
-ctime n sucht nach Dateien, die vor n mal 24 Stunden gendert wurden (z.B.
Dateiname, Zugriffsrechte).
-user sucht nach Dateien des angegebenen Benutzers.
-group sucht nach Dateien der angegebenen Gruppe.
205
Systemdateien finden und Dateien am richtigen Ort platzieren 104.7
-perm findet Dateien mit den angegebenen Berechtigungen.
-size findet Dateien mit einer angegebenen Gre.
Wenn Sie nach Dateien suchen wollen, die zu einer bestimmten Zeit gendert,
modifiziert oder verwendet wurden, dann werden Sie natrlich im Normalfall
die genaue Zeit nicht kennen. Deshalb erhlt das n fr gewhnlich ein Vorzei-
chen, um festzulegen, ob z.B. eine nderung vor mehr oder weniger als n mal 24
Stunden stattgefunden hat. Das folgende Kommando sucht z.B. nach Dateien, die
vor weniger als 48 Stunden gendert wurden:
root@archangel:/# find / -ctime -2
Das nchste Kommando erstellt eine Datei mit einer Aufstellung aller Dateien
und Verzeichnisse des Benutzers Dominik unterhalb des Hauptverzeichnisses:
root@ubuntu-server:~# find / -user dominik >dominiks_dateiliste
Beliebt ist auch das Auffinden und Dokumentieren von Programmen mit gesetz-
ten SUID-Bits. Diese Aufgabe kann z.B. durch die folgende Befehlszeile gelst
werden:
root@ubuntu-server:~# find / -perm +4000 >suid-programme
Sie knnen auch eine Aufstellung aller Dateien erhalten, die besonders gro sind.
In Zeiten zunehmender Internetbandbreiten befinden sich hufig an verschie-
densten Stellen Linux-ISO-Dateien, die in Vergessenheit geraten sind. Das fol-
gende Kommando findet alle Dateien, die grer als 500 MB sind:
archangel:/ # find / -size +500M | xargs ls -l >grosse-dateien
locate
Mit dem Kommando locate knnen Dateien erheblich schneller als mit find
gefunden werden. Das liegt daran, dass locate sich auf eine Datenbank sttzt und
nicht einfach das gesamte Dateisystem durchsucht. Ein Nachteil ist allerdings,
dass locate nur nach Suchmustern sucht und nicht nach anderen Eigenschaften
einer Datei. Genau wie find versteht auch locate den Umgang mit Wildcards.
Deshalb wird auch das folgende Kommando alle Textdokumente, die mit Open-
Office.org erstellt wurden, ausfindig machen:
root@ubuntu-server:/ # locate *.sxw
Das Programm verwendet bei der Suche die Datenbank /var/lib/locatedb. Diese
Datenbank wird durch das Programm updatedb erzeugt bzw. aktualisiert.
206
Gerte, Linux-Dateisysteme, Filesystem Hierarchy Standard 104
updatedb und /etc/updatedb.conf
Die Konfiguration des Programms updatedb erfolgt im Normalfall in der Datei
/etc/updatedb.conf. Wie bei den meisten anderen Programmen ist das eine Text-
datei, die Sie mit einem beliebigen Editor bearbeiten knnen. Sie sehen im Fol-
genden eine typische updatedb.conf-Datei:
FINDOPTIONS='-ignore_readdir_race'
export FINDOPTIONS
PRUNEFS="afs binfmt_
misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs
sysfs cifs lustre_lite tmpfs usbfs udf"
export PRUNEFS
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /var/spool /mnt /media
/dev /proc"
export PRUNEPATHS
NETPATHS="/daten"
export NETPATHS
LOCALUSER="nobody"
export LOCALUSER
NICE=10
export NICE
Fr die Prfung mssen Sie nicht jede einzelne Zeile dieser Datei kennen. Typi-
scherweise wird hufig nach PRUNEPATHS gefragt. Diese Variable enthlt die Ver-
zeichnisse, die updatedb beim Erstellen der Datenbank nicht durchsuchen soll.
Interessant ist auch die Variable NETPATHS, weil Sie hierber Verzeichnisse inde-
xieren lassen knnen, die auf einem anderen System liegen (in diesem Fall ein
NFS-Verzeichnis).
PRUNEFS gibt an, welche Dateisystemtypen von der Durchsuchung ausgeschlossen
werden sollen. Wenn Sie NETPATHS verwenden, drfen Sie nicht vergessen, hier
nfs oder gegebenenfalls smbfs von der Liste zu nehmen.
Die Option NICE sorgt dafr, dass updatedb das System whrend der Indexierung
nicht lahmlegt.
Wenn Sie updatedb von Hand starten, knnen Sie alle genannten Optionen auch
auf der Befehlszeile bergeben. Da das Indexieren der Datenbank bei groen
Dateisystemen relativ lange dauern kann, ist es nicht unblich, updatedb mit
einem Et-Zeichen in den Hintergrund zu stellen:
root@ubuntu-server:/ # updatedb &
Bei den meisten Distributionen fhrt cron schon per Voreinstellung tglich ein-
mal updatedb aus.
207
bungsfragen zu LPI 117-101
Die folgenden Fragen sollen Ihnen helfen, sich an die Art der Fragestellung in
der wirklichen Prfung zu gewhnen. Es macht keinen Sinn, die Fragen einfach
auswendig zu lernen, denn es sind keine Prfungsfragen. Sie sollten stattdessen
versuchen, die Antworten zu jeder einzelnen Frage zu verstehen. Deshalb wer-
den sowohl die richtigen als auch die falschen Antworten im Lsungsteil des
Buches detailliert besprochen. Das ben mit diesen Fragen soll Ihnen auch die
Herangehensweise an eventuell Ihnen unbekannte Themen nahe bringen. Ein
unbekanntes Kommando in einer Frage ist nmlich noch lngst kein Grund, eine
Frage einfach nicht zu beantworten. Oft fhrt ein wenig Logik oder das Aus-
schlussverfahren dennoch zum Ziel.
Fragen
Frage 1:
Sie versuchen, mit dem Kommando netstat -an herauszubekommen, welche
Ports ein Computer abhrt. Leider bekommen Sie als Ergebnis eine lange unber-
sichtliche Auflistung. Welches der folgenden Kommandos wird die gewnschten
Informationen bersichtlich darstellen?
A: netstat -an && grep LISTEN
B: netstat -an | grep LISTEN
C: netstat -an = grep LISTEN
D: grep LISTEN |netstat -an
E: grep netstat -l
208
bungsfragen zu LPI 117-101
Frage 2:
Sie mssen herausfinden, welche Verzeichnisse und Dateien eines Webservers
besonders oft besucht werden. Zu diesem Zweck wollen Sie zunchst die Logda-
tei des Webservers so filtern, dass Sie eine entsprechende Dateiliste erhalten, die
nur noch die Verzeichnis- und Dateinamen enthlt. Welches der folgenden Kom-
mandos lst diese Aufgabe?
A: cut -f 7 /var/log/apache2/access.log > dateiliste
B: cut -d " " /var/log/apache2/access.log > dateiliste
C: cut -d " " -f 7 /var/log/apache2/access.log > dateiliste
D: tail /var/log/apache2/access.log
E: cat /var/log/apache2/access.log
Frage 3:
Sie mssen die Version des laufenden Kernels ermitteln. Mit welchem Kom-
mando erhalten Sie ausschlielich diese Information?
A: uname -a
B: uname -r
C: ver -l
D: version -k
Frage 4:
Nach der Integration eines neuen Moduls in den laufenden Kernel wollen Sie
berprfen, ob der Kernel das Modul auch geladen hat. Welche der folgenden
Kommandos knnen Sie dafr verwenden? (Whlen Sie zwei Antworten!)
A: cat /proc/modules
B: insmod
C: rmmod
D: lsmod
209
Fragen
Frage 5:
Sie wollen dem Autor des Kernelmoduls 8139too eine E-Mail senden. Welches
Kommando ist geeignet, um Informationen ber den zustndigen Programmierer
zu erlangen?
A: modinfo -a 8139too
B: insmod 8139
C: lsmod
D: modprobe
Frage 6:
Welches Programm ist geeignet, Module des laufenden Kernels zu entladen?
Geben Sie nur das Programm ohne Optionen an!
Frage 7:
Sie beabsichtigen, ein Modul in den laufenden Kernel zu installieren. Leider wis-
sen Sie nicht, ob das zu installierende Modul von anderen Modulen abhngt.
Welches Kommando lst bei der Installation von Modulen die Abhngigkeiten
automatisch auf?
A: insmod auto
B: autoinsmod
C: depmod
D: modprobe
Frage 8:
Sie beabsichtigen, ein Modul aus dem laufenden Kernel zu entfernen. Mit wel-
chen Programmen knnen Sie diese Aufgabe durchfhren? (Whlen Sie zwei Ant-
worten aus!)
A: rpm
B: insmod
C: modprobe
D: rmmod
210
bungsfragen zu LPI 117-101
Frage 9:
Sie mssen dafr sorgen, dass der Kernel einem speziellen Hardwaregert einen
bestimmten IRQ und einen DMA-Kanal zuordnet. Welche Konfigurationsdateien
kommen hierfr in Frage? (Whlen Sie zwei Antworten!)
A: /proc/irq
B: modules.conf
C: modprobe.conf
D: modules.dep
Frage 10:
Sie mssen die Datei modules.dep neu erzeugen. Mit welchem Kommando kn-
nen Sie diese Aufgabe durchfhren?
Frage 11:
Sie erwgen die Erstellung einer neuen modules.dep unter Verwendung von
depmod. Vorher mchten Sie aber wissen, wie depmod die Datei modules.dep kon-
figurieren wrde. Welches Kommando werden Sie ausfhren?
A: depmod -n
B: depmod -A
C: depmod -b
D: modprobe-n
Frage 12:
Sie mchten in das Verzeichnis wechseln, in dem sich die Quellen des laufenden
Kernels befinden. Wo werden Sie am wahrscheinlichsten fndig?
A: /boot
B: /etc/kernelsources
C: /usr/src/linux
D: /lib/modules
E: /proc/modules
211
Fragen
Frage 13:
Sie beabsichtigen, auf einer IDE-Festplatte, die als Master am sekundren IDE-
Kanal eines Computers angeschlossen ist, eine zweite primre Partition anzule-
gen. Welche Gertedatei wird diese Partition wohl hinterher verwenden?
A: /dev/sdb2
B: /dev/hdd2
C: /dev/hda1
D: /dev/hdc2
E: /dev/sda3
Frage 14:
Geben Sie die erste logische Partition einer SCSI-Festplatte unter der Annahme
an, dass die zu verwendende erweiterte Partition /dev/sde2 ist.
Frage 15:
Sie mssen ermitteln, welche Interrupts (IRQ) in einem System durch welche
Gerte belegt sind. Welche Kommandos knnen Sie ausfhren, um die bentig-
ten Informationen zu erhalten? (Whlen Sie zwei Antworten aus!)
A: less /proc/irq
B: cat /lib/modules/
C: cat /proc/modules
D: procinfo
E: cat /proc/interrupts
212
bungsfragen zu LPI 117-101
Frage 16:
Sie bentigen eine Liste der SCSI-Gerte, die an einem Computer angeschlossen
sind. Leider steht auf dem System das Kommando scsiinfo nicht zur Verfgung,
und Sie haben aufgrund einer Internetstrung auch keine Mglichkeit, es kurz-
fristig zu installieren. Mit welchem Kommando erhalten Sie dennoch die ben-
tigte Aufstellung?
A: cat /lib/modules/
B: cat /etc/fstab
C: cat /etc/mtab
D: fdisk -l
E: cat /proc/scsi/scsi
Frage 17:
Sie bentigen eine mglichst genaue Aufstellung ber die in einem Computer
verwendeten PCI-Gerte. Welches ist das beste Kommando fr eine exakte Aus-
gabe?
A: lspci
B: pciinfo
C: ps
D: rpm
E: lspci -vvv
Frage 18:
Sie bentigen eine Auflistung der in einem Gert verwendeten USB-Busse und
aller angeschlossenen USB-Gerte. Welches Kommando knnen Sie verwenden,
um die bentigten Informationen zu erhalten?
A: lsusb -v
B: lspci
C: ps aux
D: top
213
Fragen
Frage 19:
Welcher der folgenden Treiber (Kernelmodule) untersttzt die Verwendung von
USB 2.0 Gerten?
A: usb-uhci.o
B: usb-ohci.o
C: usb-ehci.o
D: usb_storage.o
Frage 20:
Einer Ihrer Benutzer beschwert sich, dass er zwar USB Memory Sticks, aber keine
USB-Maus und USB-Tastatur an seinem System verwenden kann. Welches Modul
werden Sie dem Kernel des Computers hinzufgen mssen?
A: usb-uhci.o
B: usb-ohci.o
C: usb-ehci.o
D: hid.o
E: usb_storage.o
Frage 21:
Welche der folgenden sind Daemonen, die fr die automatische Konfiguration
von USB-Gerten verwendet werden? (Whlen Sie zwei Antworten aus!)
A: usbmgr
B: bind
C: hotplug
D: ehci.o
E: uhci.o
214
bungsfragen zu LPI 117-101
Frage 22:
Welches der folgenden Verzeichnisse enthlt die Gertedateien eines Linux Sys-
tems?
A: /etc
B: /proc
C: /home
D: /usr
E: /dev
Frage 23:
Welche Komponente ist bei neueren Linux-Versionen fr die Verwaltung des
Gerteverzeichnisses /dev zustndig?
A: hald
B: udev
C: dbus
D: sshd
E: init
Frage 24:
Sie mchten sich ansehen, welche USB-Gerte mit einem Computer verbunden
sind. Welches Kommando werden Sie verwenden? (Nennen Sie nur das Kom-
mando ohne Optionen!)
Frage 25:
Wo befindet sich auf einer Festplatte die Partitionstabelle?
A: am Anfang des Bootsektors
B: am Ende des MBR
C: im BIOS
D: in den ersten 512 Byte des Bootloaders
E: im letzten Sektor der Festplatte
215
Fragen
Frage 26:
Bei welchen der folgenden Komponenten handelt es sich um einen Bootloader?
A: MBR
B: grub
C: mkfs
D: lilo
E: fdisk
Frage 27:
Eine an ein System angeschlossene USB-Festplatte weist hufig Lesefehler auf.
Das Ergebnis sind lange Wartezeiten beim Zugriff auf Dateien. Sie mssen her-
ausfinden, ob es kernelbezogene Meldungen zu diesem Problem gibt. Welche
Mglichkeiten stehen Ihnen zur Verfgung? (Whlen Sie zwei Antworten!)
A: Geben Sie dmesg ein, und suchen Sie nach Fehlern bezglich USB und
Dateisystem.
B: Sichern Sie die Festplatte, und fhren Sie eine Neuformatierung durch.
Stellen Sie die Daten anschlieend wieder her.
C: Durchsuchen Sie /proc/sys/kernel nach Fehlermeldungen.
D: Durchsuchen Sie /var/log/kernel nach Fehlermeldungen.
E: Suchen Sie nach kernel in der Datei /var/log/messages.
Frage 28:
Sie mssen verhindern, dass irgendein Benutzer eine Verbindung zu einem Sys-
tem aufbaut, whrend Sie Wartungsarbeiten durchfhren. Mit welchem Kom-
mando knnen Sie die Verbindungen blockieren?
A: iptables -t filter -L
B: ifconfig eth1 down
C: logout
D: init 1
E: init 6
216
bungsfragen zu LPI 117-101
Frage 29:
Wie heit der Vater aller Prozesse, und welche PID (Process ID) verwendet er?
A: init mit PID 100
B: initd mit PID 100
C: init mit PID 1
D: initd mit PID 0
Frage 30
Sie haben nderungen an der Konfigurationsdatei /etc/inittab eines Cent OS-
Computers vorgenommen. Sie stellen fest, dass sich diese nderungen nicht wie
gewnscht auswirken. Welches Kommando werden Sie eingeben, damit die
nderungen auch ohne einen Neustart des Systems greifen?
A: telinit q
B: init q
C: logout anschlieend neu anmelden
D: init 6
E: shutdown -r now
Frage 31:
Whlen Sie aus den folgenden Verzeichnissen zwei aus, in denen sich blicher-
weise init-Skripte befinden!
A: /etc/inittab
B: /etc/init.d
C: /proc
D: /lib
E: /etc/rc.d
217
Fragen
Frage 32:
Welches der folgenden Kommandos fhrt ohne Benachrichtigung der angemel-
deten Benutzer zu einem Neustart des Systems?
A: shutdown -r now
B: init 0
C: halt
D: poweroff
E: init 6
Frage 33:
Sie mssen einen Server nach der Installation eines neuen Kernels neu starten.
Damit der Neustart nicht unntig die Erreichbarkeit des Servers verzgert, ms-
sen Sie verhindern, dass whrend des Neustarts eine Routineprfung der Datei-
systeme stattfindet. Welches Kommando werden Sie fr den Neustart verwen-
den?
A: shutdown -rk now
B: shutdown -rF now
C: init 0
D: init 6
E: shutdown -rf now
Frage 34:
Sie haben Kernelmeldungen bezglich des Dateisystems erhalten, die auf einen
Fehler schlieen lassen. Da es sich hierbei um die Systemfestplatte handelt, ist
eine berprfung mittels fsck im laufenden Betrieb nicht mglich. Sie wollen
das System sofort neu starten und eine Dateisystemberprfung whrend des
Systemstarts erzwingen. Geben Sie ein geeignetes Kommando ein!
218
bungsfragen zu LPI 117-101
Frage 35:
Sie haben auf einem System ein neues Programm installiert. Das Programm lag
als tar-Ball vor. Weil das neue Programm Bibliotheken verwendet, die vorher auf
Ihrem System nicht vorhanden waren, mssen diese nun registriert werden. Wel-
ches Kommando knnen Sie hierfr verwenden?
A: ldconfig
B: ldd
C: ld.so.conf
D: /lib/modules
E: tar -xvzf
Frage 36:
Sie wollen herausbekommen, von welchen Bibliotheken (Librarys) die Shell bash
abhngt. Welches Kommando wird Ihnen hier helfen?
A: ldconfig /bin/bash
B: ldd /var/bash
C: cat ld.so.conf
D: ldd /bin/bash
E: cat ld.so.cache
Frage 37:
Sie beabsichtigen, ein Debian-Paket zu deinstallieren. Die zum Programm geh-
renden Konfigurationsdateien sollen ebenfalls entfernt werden. Wie beginnen
Sie das Kommando zur Deinstallation?
A: dpkg -r
B: dpkg --purge
C: dpkg -e
D: rpm -e
E: apt-get install
219
Fragen
Frage 38:
Sie beabsichtigen, auf einem Debian-basierten System ber die Kommandozeile
ein Programmpaket aus dem Internet herunterzuladen und zu installieren. Wel-
ches Programm knnen Sie verwenden?
A: dpkg
B: alien
C: apt-get
D: yum
E: Synaptik-Paketverwaltung
Frage 39:
Vor der Installation eines neuen Programms auf einem Debian-System wollen Sie
die Liste der verfgbaren Programme aktualisieren. Welches Kommando werden
Sie verwenden?
A: apt-get update
B: apt-get upgrade
C: yum upgrade
D: yum update
E: apt-get reconfigure
Frage 40:
Sie beabsichtigen, auf einem System, das auf Debian basiert, alle installierten Pro-
gramme zu aktualisieren. Der Vorgang sollte mglichst automatisiert ablaufen
und bentigte Dateien automatisch aus dem Internet heruntergeladen werden.
Welches Kommando knnen Sie verwenden?
A: apt-get update
B: apt-get upgrade
C: yum upgrade
D: yum update
E: apt-get reconfigure
220
bungsfragen zu LPI 117-101
Frage 41:
Sie mssen das nicht mehr bentigte Paket dhcp3-server von einem Computer
deinstallieren. Die Konfigurationsdateien des DHCP-Servers drfen nicht entfernt
werden. Welche der folgenden Kommandos fhren hier zum Ziel? (Whlen Sie
zwei Antworten!)
A: apt-get remove dhcp3-server
B: aptitude remove dhcp3-server
C: dpkg purge dhcp3-server
D: rpm -ihv dhcp3-server
E: rpm -Uhv dhcp3-server
Frage 42:
Sie planen die Installation mehrerer Programme auf einem Debian-System. Auf
das System haben Sie lediglich Fernzugriff ber SSH ohne X11-Tunnel, wollen
aber dennoch eine mengefhrte Installation durchfhren. Welche Programme
knnen Sie hierfr verwenden? (Whlen Sie zwei Mglichkeiten aus!)
A: apt-get
B: dpkg -i
C: aptitude
D: synaptic
E: dselect
Frage 43:
Sie planen die Installation eines Programms, das lediglich als rpm-Paket vorliegt,
auf einem Ubuntu-System. Welches Hilfsmittel knnen Sie verwenden, um das
rpm-Paket in ein dpkg-Paket zu konvertieren?
A: rpm
B: dpkg
C: aptitude
D: apt-cache
E: alien
221
Fragen
Frage 44:
Sie wollen ein Programm auf einem Fedora-System installieren. Sie vermuten auf-
grund der Gre des Pakets, dass die Installation lange dauern kann. Deshalb
wollen Sie whrend der Installation ber den Fortschritt informiert werden. Wel-
ches Kommando werden Sie dem Paketnamen voranstellen?
A: yum search
B: rpm -U
C: rpm -ihv
D: dpkg -i
E: apt-get install
Frage 45:
Sie beabsichtigen, auf einem Red Hat-basierten System eine Liste aller ber das
Paketmanagement installierten Pakete zu erstellen. Welches Kommando knnte
hier ntzlich sein?
A: rpm -qR
B: rpm -ql
C: rpm -V
D: rpm -qa
E: rpm -Uhv
Frage 46:
In welchem Verzeichnis befinden sich blicherweise die Dateien mit Verweisen
auf Quellen fr rpm-Pakete, die yum verwendet?
A: /etc/yum.conf
B: /etc/apt/sources.list
C: /var/cache/yum
D: /etc/apt/apt.conf
E: /etc/yum.repos.d
222
bungsfragen zu LPI 117-101
Frage 47:
Sie konfigurieren ein Gert, auf dem sich eine angepasste Linux-Version befindet.
Der Prompt des Gertes zeigt Ihnen den aktuellen Pfad nicht an. Sie mssen den
aktuellen Pfad ermitteln. Welches Kommando werden Sie eingeben?
Frage 48:
Sie wollen ermitteln, welche Umgebungsvariablen in Ihrer aktuellen Sitzung
gerade gltig sind. Mit welchem Kommando knnen Sie diese Information abfra-
gen?
A: ls /var
B: echo $var
C: env
D: set
E: cat /proc/var
Frage 49:
Sie wollen ermitteln, welche Shellvariablen in Ihrer aktuellen Shell gerade gltig
sind. Mit welchem Kommando knnen Sie diese Information abfragen?
A: ls /var
B: echo $var
C: env
D: set
E: cat /proc/var
223
Fragen
Frage 50:
Sie mssen einem Server eine Shellvariable hinzufgen. Diese Variable soll fr
alle Benutzer in jeder neu geffneten Shell gltig sein, darf aber keine Neuanmel-
dung der Benutzer erfordern. In welcher der folgenden Konfigurationsdateien
knnen Sie die neue Variable eintragen?
A: bashrc
B: .profile
C: .bashrc
D: .bash_logout
E: .bash_profile
Frage 51:
Ein Benutzer htte gerne einen Systemprompt, der sich von dem der anderen
Benutzer unterscheidet. Er wrde die Konfiguration auch selbst vornehmen,
wei aber nicht, welche Konfigurationsdatei er bearbeiten muss. Welche Konfi-
gurationsdatei soll der Benutzer ndern?
A: /etc/bashrc
B: ~/.bashrc
C: ~/.bash_logout
D: /etc/profile
E: ~/.bash_history
Frage 52:
Sie wollen der Variablen meaning_of_life den Wert 42 zuordnen. Diese Zuord-
nung darf nur in der aktuellen Shell und nicht in Subshells definiert sein. Welche
Kommandos knnen Sie verwenden? (Whlen Sie zwei Antworten aus!)
A: export meaning_of_life
B: meaning_of_life=42
C: set meaning_of_life=42
D: let meaning_of_life=42
E: export meaning_of_life=42
224
bungsfragen zu LPI 117-101
Frage 53:
Sie wollen den Errorlevel des zuletzt ausgefhrten Programms ermitteln. Welches
der folgenden Kommandos gibt Ihnen den Errorlevel aus?
A: echo $PS1
B: cat $?
C: pwd
D: echo $?
E: echo $!
Frage 54:
Mit welchem Kommando knnen Sie eine gesetzte Variable mit der Bezeichnung
A wieder lschen?
A: reset A
B: A = 0
C: unset A
D: let A =
E: export A
Frage 55:
Fr eine Programminstallation muss die Variable http_proxy eines Systems auf
den Wert http://192.168.0.1:3128 gesetzt werden. Geben Sie das Kommando
ein, das die Variable setzt und gleich fr Subshells verfgbar macht!
Frage 56:
Sie haben auf einem Terminal mehrere Kommandos eingegeben. Sie mssen die
Eingabe der Kommandos noch einmal prfen. Welchen Befehl knnen Sie einge-
ben, um eine Liste der zuletzt verwendeten Kommandos zu bekommen?
225
Fragen
Frage 57:
Um zu berprfen, wie viele Benutzer, die sich in einem bestimmten Netzwerk-
segment befinden, auf einen speziellen Serverdienst zugreifen, haben Sie folgen-
des Kommando verwendet:
netstat -an|grep "192.168.55"|grep ":3128"|wc -l
Nach etwa einer halben Stunde mssen Sie dieselbe Prfung noch einmal durch-
fhren. Sie wollen aber nicht das komplette Kommando noch einmal eingeben.
Welche Mglichkeiten stehen Ihnen zur Verfgung? (Whlen Sie drei Antworten
aus!)
A: Cursor nach oben + Eingabetaste
B: !?
C: !!
D: !net
E: history
Frage 58:
Sie haben mehrere Versionen desselben Programms auf einem Computer instal-
liert. Sie mssen nun ermitteln, welches dieser Programme startet, wenn Sie den
entsprechenden Befehl ohne die Angabe eines Pfades eingeben. Welches Kom-
mando wird Ihnen ausschlielich diese Information liefern?
A: which
B: whereis
C: whois
D: whatis
E: apropos
226
bungsfragen zu LPI 117-101
Frage 59:
Sie wollen sich ber den Aufbau der Datei /etc/crontab informieren. Wenn Sie
allerdings das Kommando man crontab eingeben, erhalten Sie nur Informationen
ber das Programm crontab und nicht ber die Datei. Wie mssen Sie das Kom-
mando anpassen?
A: man 1 crontab
B: whatis crontab
C: which crontab
D: man 8 crontab
E: man 5 crontab
Frage 60:
Sie wollen wissen, in welchen Verzeichnissen eines Computers sich die Man-
pages befinden. Mit welchem Kommando knnen Sie diese Information am ein-
fachsten bekommen?
A: echo $MANPATH
B: manpath
C: manpath -c
D: man man
E: whereis man
Frage 61:
Sie beabsichtigen, zwei Textdateien, die jeweils Listen enthalten, in einer dritten
Datei zusammenzufassen. Die Namen der Dateien sind liste1 und liste2. Mit wel-
chem Kommando knnen Sie die beiden Dateien in liste3 berfhren, ohne in
liste3 bereits vorhandene Daten zu berschreiben? Die beiden ursprnglichen
Listen sollen in der Zieldatei untereinander erscheinen!
A: paste liste1 liste2 >> liste3
B: join liste1 liste2 > liste3
C: cat liste1 liste2 >liste3
D: cat liste1 liste2 | liste3
E: cat liste1 liste2 >> liste3
227
Fragen
Frage 62:
Um zu berprfen, von welchen IP-Adressen aus auf einen Webserver zugegrif-
fen wird, wollen Sie zunchst aus der Datei access.log die erste Spalte (da befin-
den sich die Quelladressen) in eine neue Datei berfhren. Die neue Datei soll
die Bezeichnung ip.txt tragen. Welches Kommando knnen Sie verwenden?
A: head -n 20 access.log
B: cut -d " " -f1 access.log > ip.txt
C: tail access.log > ip.txt
D: od access.log >> ip.txt
E: fmt access.log >> ip.txt
Frage 63:
Sie mssen alle Tabstopps einer Datei in eine entsprechende Anzahl Leerzeichen
(spaces) umwandeln. Welches Programm knnen Sie fr die Umwandlung ver-
wenden?
A: expand
B: unexpand
C: head
D: pr
E: cat
Frage 64:
Sie wollen die Shebangzeilen mehrerer Skripte nacheinander betrachten, um sich
einen schnellen berblick zu verschaffen, in welcher Umgebung diese Skripte
ausgefhrt werden mssen. Welche Kommandos wrden bei bergabe des
jeweiligen Dateinamens nur die erste Zeile einer Datei anzeigen? (Whlen Sie
zwei Antworten!)
A: head
B: tail -1
C: head -n1
D: head -1
E: tail -n1
228
bungsfragen zu LPI 117-101
Frage 65:
Es liegt Ihnen eine Logdatei eines Programms vor. Um die Analyse zu vereinfa-
chen, wollen Sie die Datei umsortieren, so dass die neuesten Eintrge, die
momentan am Ende der Logdatei zu finden sind, anschlieend oben in der Log-
datei stehen. Welches Programm wrden Sie fr diese Aufgabe verwenden?
A: expand
B: tail
C: cat
D: tac
E: head
Frage 66:
Sie beabsichtigen, die Zeilen einer Textdatei zu nummerieren. Welches Pro-
gramm knnen Sie hierfr verwenden?
A: ln
B: pr
C: nl
D: fmt
E: wc
Frage 67:
Sie wollen die letzten 40 Zeilen der Datei syslog ansehen. Sie haben bereits in das
Verzeichnis /var/log gewechselt. Welches Kommando werden Sie verwenden, um
ausschlielich die letzten 40 Zeilen auf dem Bildschirm auszugeben?
229
Fragen
Frage 68:
Sie mssen alle Leerzeichen (spaces) einer Datei in eine entsprechende Anzahl
Tabstopps umwandeln. Welches Programm knnen Sie fr die Umwandlung ver-
wenden?
A: expand
B: unexpand
C: head
D: pr
E: cat
Frage 69:
Sie mssen eine Datei mit einer Gre von ca. 110 MB per E-Mail versenden. Der
Provider des Empfngers akzeptiert keine Nachrichten, die mehr als 10 Millionen
Zeichen beinhalten. Sie mssen die Datei teilen. Welches Programm knnen Sie
fr die Aufteilung verwenden? (Geben Sie nur das Programm ohne Optionen und
Parameter an!)
Frage 70:
Nachdem Sie die Zeilen einer Logdatei mittels sort sortiert haben, fllt Ihnen auf,
dass viele Eintrge in der Logdatei mehrfach vorhanden sind. Einige Eintrge
sind mehr als 50-mal vorhanden, was das Lesen der Logdatei erheblich
erschwert. Welches Kommando (ohne Optionen und Parameter) knnen Sie ver-
wenden, um die Duplikate zu entfernen?
230
bungsfragen zu LPI 117-101
Frage 71:
Sie lassen sich in Ihrem Benutzerverzeichnis eine Dateiliste anzeigen, indem Sie
das Kommando ls -l verwenden. Da einige Dateien sehr gro sind, ist die Aus-
gabe unbersichtlich. Die Dateigren werden ohne Tausendertrennzeichen in
Byte angezeigt. Wie knnen Sie die Ausgabe in eine fr Menschen gut lesbare
Form bringen?
A: ls -li
B: ls -la
C: ls -lh
D: ls -lc
E: ls -lS
Frage 72:
Mit welchen beiden der folgenden Kommandos knnen Sie von einer beliebigen
Stelle des Verzeichnisbaums in Ihr Heimatverzeichnis wechseln?
A: cd ~
B: cd ..
C: cd /
D: cd
E: cd /home
Frage 73:
Sie mssen eine grere Menge Dateien kopieren, die unterschiedlichen Benut-
zern gehren. Es muss sichergestellt werden, dass die kopierten Dateien diesel-
ben Berechtigungen erhalten wie die ursprnglichen Dateien. Welche Option
sollten Sie fr den cp Befehl verwenden?
A: -f
B: -i
C: -R
D: -p
E: -u
231
Fragen
Frage 74:
Sie mssen das Verzeichnis /daten/archiv/1980/bilder erstellen. Bisher ist nicht
einmal das Verzeichnis /daten vorhanden. Sie wollen das Verzeichnis mit einem
einzigen Befehl erstellen.
Frage 75:
Sie wollen alle pdf-Dateien, die ein Benutzer namens willi in seinem Heimatver-
zeichnis abgespeichert hat, finden. Es sollen keine Dokumente anderer Benutzer
angezeigt werden. Welches Kommando knnen Sie verwenden?
A: find /home/willi -name *.pdf
B: find /home/willi *.pdf
C: locate *.pdf
D: search /home/willi *.pdf
E: find /home/willi -name ?.pdf
Frage 76:
Ein Kollege hat Ihnen eine Datei mit dem Namen programm.tar.gz per E-Mail
geschickt. Sie mssen die Datei auspacken, um das enthaltene Programm ausfh-
ren zu knnen. Welches Kommando werden Sie nutzen?
A: tar -xvfz programm.tar.gz
B: tar -t programm.tar.gz
C: tar --list programm.tar.gz
D: rmp -ihv programm.tar.gz
E: tar -xvzf programm.tar.gz
232
bungsfragen zu LPI 117-101
Frage 77:
Sie wollen eine bestimmte Datei aus einem Backup wiederherstellen. Weil Sie
nicht wissen, in welchem Archiv sich die fragliche Datei befindet, wollen Sie
zunchst nur den Inhalt der Archive einsehen. Welche beiden Kommandos kn-
nen Sie hier verwenden?
A: tar -xvfz
B: tar -t
C: tar -r
D: tar -c
E: tar --list
Frage 78:
Sie mssen eine Datei mit der Bezeichnung files.gz dekomprimieren. Welche bei-
den Kommandos knnen Sie verwenden?
A: gzip -d files.gz
B: gzip -t files.gz
C: gzip -u files.gz
D: gzip files.gz
E: gunzip files.gz
Frage 79:
Sie mssen eine Datei mit der Bezeichnung files.bz2 dekomprimieren. Geben Sie
ein geeignetes Programm (ohne Optionen oder Parameter) an, das diese Aufgabe
erfllt.
233
Fragen
Frage 80:
Sie mssen auf einem System alle pdf-Dokumente finden, die sich in Benutzer-
verzeichnissen befinden, und diese in einer Verzeichnisstruktur unterhalb von
/pdfbackup sichern. Welches der folgenden Kommandos wird diese Aufgabe
erfllen?
A: tar -cf /pdfbackup/pdfs.tar /home/*
B: find /home -name *.pdf | cpio -pd /pdfbackup
C: find /home -name *.pdf | cpio -o /pdfbackup
D: find /home -file *.pdf | cpio -pd /pdfbackup
E: cp /home/*.pdf /pdfbackup
Frage 81:
Sie mssen den kompletten Inhalt einer Festplatte inklusive MBR auf eine andere
Festplatte sichern. Die Quellfestplatte ist am primren IDE-Controller als Master
angeschlossen. Die Zielfestplatte ist am sekundren IDE-Controller als Slave des
CD-ROMs angeschlossen. Welches Kommando werden Sie eingeben? (Verwen-
den Sie keine Optionen, die nicht unbedingt erforderlich sind!)
Frage 82:
Sie mssen den Master Boot Record (MBR) einer Festplatte sichern. Die Fest-
platte ist als Master am primren IDE-Kanal eines Computers angeschlossen. Wel-
ches der folgenden Kommandos knnen Sie verwenden, wenn die Sicherungs-
datei mbr.backup sein soll?
A: dd if=/dev/hda of=mbr.backup ibs=512 count=1
B: dd of=/dev/hda if=mbr.backup ibs=512 count=1
C: dd if=/dev/hda of=mbr.backup
D: dump /dev/hda
E: dd if=/dev/hdb of=mbr.backup ibs=512 count=1
234
bungsfragen zu LPI 117-101
Frage 83:
Sie finden auf Ihrem System eine Datei mit dem Namen doku.ods. Sie erinnern
sich leider nicht mehr, mit welchem Programm Sie diese Datei erstellt haben. Sie
wollen herausfinden, um welchen Dateitypen es sich hier handelt. Welches Kom-
mando knnen Sie hierfr verwenden?
A: touch doku.ods
B: stat doku.ods
C: file doku.ods
D: rm doku.ods
E: stat -f doku.ods
Frage 84:
Sie haben die Ausgabe des Kommandos netsat -an in eine Datei mit dem Namen
ports.txt umgeleitet. Sie wollen diesen Vorgang nun wiederholen und die neuerli-
che Ausgabe an die bereits vorhandene Textdatei anhngen. Wie muss das Kom-
mando ausgefhrt werden, damit die alte Aufzeichnung nicht berschrieben wird?
A: netstat -an > ports.txt
B: netstat -an | ports.txt
C: netstat -an > ports2.txt
D: netstat -an ||ports.txt
E: netstat -an >> ports.txt
Frage 85:
Sie mssen die Ausgabe eines Programms in eine Textdatei umleiten. Hierbei sollen
sowohl die normalen Meldungen als auch Fehlermeldungen erfasst werden. Wel-
che Optionen werden Sie an die Ausfhrung des Programms anhngen, wenn es
die bentigte Textdatei noch nicht gibt? Whlen Sie die krzestmgliche Option!
A: >> textdatei 2>&1
B: > textdatei 1>&2
C: >> textdatei 1>&2
D: > textdatei 2>&1
E: > textdatei 2>/1
235
Fragen
Frage 86:
Sie wollen den Inhalt einer Datei per E-Mail an die Adresse exp@example.net ver-
senden. Mit welchen Kommandos knnen Sie diese Aufgabe vom Terminal aus
lsen? (Whlen Sie zwei Antworten!)
A: cat datei > mail -s "eine Datei" exp@example.net
B: cat datei | mail -s "eine Datei" exp@example.net
C: mail -s "eine Datei" exp@example.net < datei
D: mail -s "eine Datei" exp@example.net > datei
E: sendmail -s "eine Datei" exp@example.net < datei
Frage 87:
Sie durchsuchen die Datei /var/log/messages nach dhcp-Meldungen, indem Sie
das Kommando grep dhcp /var/log/messages verwenden. Sie wollen das Kom-
mando wiederholen, aber diesmal soll die Ausgabe des Kommandos sowohl auf
dem Bildschirm erscheinen als auch in einer Textdatei abgespeichert werden.
Wie werden Sie den Befehl vervollstndigen?
A: grep dhcp /var/log/messages | tee dhcpmessages
B: grep dhcp /var/log/messages > tee dhcpmessages
C: grep dhcp /var/log/messages < tee dhcpmessages
D: tee grep dhcp /var/log/messages
E: tee | grep dhcp /var/log/messages
Frage 88:
Sie fhren mithilfe eines Skripts eine Abfrage aus. Das Ergebnis der Abfrage
umfasst mehrere Zeilen. Sie mssen jede einzelne Zeile der Antwort an ein ande-
res Programm zur Auswertung bergeben. Leider kann dieses Programm immer
nur eine Zeile gleichzeitig verarbeiten. Sie mssen ein Tool zwischenschalten, das
die Antwortzeilen des Skriptes einzeln an das Programm bergibt. Welches
Werkzeug knnen Sie hier einsetzen?
236
bungsfragen zu LPI 117-101
Frage 89:
Sie mssen einen Prozess beenden, der nicht mehr reagiert. Sie wollen das Kom-
mando kill einsetzen, kennen aber nicht die Prozess-ID des zu beendenden Pro-
zesses. Welche der folgenden Programme knnen Sie verwenden, um die PID zu
ermitteln? (Whlen Sie zwei Antworten!)
A: ps
B: free
C: top
D: df
E: jobs
Frage 90:
Sie bentigen eine grafische Darstellung der Prozesse eines laufenden Systems. In
dieser Darstellung sollten zustzlich auch die PIDs angezeigt werden. Welches
Kommando werden Sie verwenden?
A: pstree -a
B: ps -aux
C: top
D: uptime
E: pstree -p
Frage 91:
Welche der folgenden Programme knnen Sie verwenden, wenn Sie einen lau-
fenden Prozess beenden wollen? (Whlen Sie drei Antworten!)
A: jobs
B: kill
C: bg
D: killall
E: top
237
Fragen
Frage 92:
Sie haben versucht, die Anwendung mc durch Eingabe des Kommandos killall
mc zu beenden. Die Anwendung reagiert jedoch nicht auf diesen Befehl. Durch
Eingabe des Kommandos ps aux haben Sie ermittelt, dass der Prozess die PID
18456 verwendet. Welche Befehle sind geeignet, den nicht mehr reagierenden
Prozess zu beenden? (Whlen Sie drei Antworten!)
A: killall -9 mc
B: kill -s 9 18456
C: kill -SIGHUP 18456
D: kill -sigterm 18456
E: kill -SIGKILL 18456
Frage 93:
Sie sind via SSH mit einem Server verbunden und beabsichtigen die Ausfhrung
eines Programms, dessen Ablauf mehrere Stunden in Anspruch nehmen kann.
Das Programm soll deshalb weiterlaufen, auch wenn Sie die SSH-Verbindung
trennen. Welchen Befehl knnen Sie der Ausfhrung des Programms voranstel-
len, um diese Aufgabe zu lsen?
A: bg
B: nohup
C: jobs
D: fg
E: tee
Frage 94:
Sie mssen ermitteln, wann das System, an dem Sie gerade arbeiten, zuletzt neu
gestartet wurde. Welches Programm zeigt Ihnen an, wie lange das System bereits
luft, ohne zustzliche, nicht bentigte Informationen auszugeben?
238
bungsfragen zu LPI 117-101
Frage 95:
Sie mssen ermitteln, wie viel Arbeitsspeicher in einem System noch verfgbar
und wie viel belegt ist. Welches Kommando knnen Sie verwenden, um eine ent-
sprechende Information in Megabyte zu erhalten?
A: free -h
B: df -h
C: free -m
D: df -m
E: mem
Frage 96:
Sie wollen in einer SSH-Sitzung ein Programm, dessen Ausfhrung viel Zeit kos-
tet, in den Hintergrund schicken, damit Sie die Konsole anderweitig verwenden
knnen. Das Programm soll seine Arbeit im Hintergrund fortsetzen. Was tun Sie?
A: (Strg) + (C)
B: (Strg) + (Z) anschlieend jobs
C: (Strg) + (Z) anschlieend fg
D: (Strg) + (Z) anschlieend bg
E: (Strg) + (Z)
Frage 97:
Sie verwenden das Kommando jobs und erhalten folgende Ausgabe:
harald@archangel:~$ jobs
[1]- Angehalten lynx
[2] Angehalten dd if=/dev/hda of=/dev/hdb
[3]+ Angehalten wget http://www.kernel.org
Welches Kommando knnen Sie verwenden, damit die Duplizierung der Fest-
platte im Hintergrund fortgesetzt wird?
A: fg 2
B: jobs
C: bg 3
D: bg 2
E: fg
239
Fragen
Frage 98:
Sie planen apt-get upgrade auszufhren, um Ihr System auf den neuesten Stand
zu bringen. Da dieses Kommando erfahrungsgem eine hohe Systemlast verur-
sacht, wollen Sie ihm eine geringere Prozessprioritt zuweisen. Welchen Befehl
werden Sie apt-get voranstellen, damit andere Prozesse durch die Aktualisierung
nicht negativ beeinflusst werden? (Whlen Sie zwei Antwortmglichkeiten!)
A: nice -14
B: nice -n 14
C: renice -n 14
D: nice -n -14
E: nice --14
Frage 99:
Sie stellen fest, dass das System, an dem Sie arbeiten, sehr trge reagiert. Eine
berprfung ergibt, dass ein Backupskript einen groen Teil der Systemressour-
cen verbraucht. Die zugehrige Prozess-ID ist 8490. Welches Kommando knnen
Sie verwenden, um die Ausfhrungsprioritt der Datensicherung im laufenden
Betrieb zu senken?
A: nice --12 8490
B: bg
C: renice -n 15 8490
D: renice -15 8490
E: nice -n 12 8490
Frage 100:
Welche der folgenden Programme knnen Einfluss auf die Ausfhrungsprioritt
eines Prozesses nehmen? (Whlen Sie drei Programme aus!)
A: bg
B: nice
C: renice
D: fg
E: top
240
bungsfragen zu LPI 117-101
Frage 101:
Sie mssen aus einer Protokolldatei alle Leerzeilen entfernen und das Ergebnis in
einer neuen Textdatei abspeichern. Welche beiden der folgenden Kommandos
erfllen diesen Zweck?
A: grep ^$ logdatei > textdatei.txt
B: cat logdatei |grep ^$ > textdatei.txt
C: grep -v ^[#] logdatei > textdatei.txt
D: grep -v ^$ logdatei > textdatei.txt
E: cat logdatei |grep -v ^$ > textdatei.txt
Frage 102:
Sie analysieren die Katalogdatei eines Backups. In dieser Datei mssen Sie alle
Eintrge finden, die den Pfad /home/meier/Dokumente enthalten. Wie beginnen
Sie das Suchkommando? (Whlen Sie zwei Antworten!)
A: grep "/home/meier/Dokumente"
B: find \/home\/meier\/Dokumente
C: grep //home//meier//Dokumente
D: grep /home/meier/Dokumente
E: grep \/home\/meier\/Dokumente
Frage 103:
Sie mssen in einem Textfile alle Zeilen auffinden, in denen die Zeichenkette
Galileocomputing vorkommt. Es sollen auch die Zeilen gefunden werden, in
denen die Zeichenkette mit einem kleinen g beginnt. Wie beginnen Sie das Kom-
mando?
A: grep -v [g]alileocomputing
B: grep ?alileocomputing
C: grep *alileocomputing
D: grep -v [Gg]alileocomputing
E: grep [Gg]alileocomputing
241
Fragen
Frage 104:
Sie bearbeiten eine Konfigurationsdatei mit dem Editor vi. Da Sie alle gewnsch-
ten nderungen vorgenommen haben, wollen Sie die Datei nun speichern und
schlieen. Sie haben bereits durch Bettigen der (Esc)-Taste in den Kommando-
modus gewechselt. Welche Tastaturkommandos schlieen den Editor und spei-
chern die nderungen in der Datei? (Whlen Sie drei Antworten!)
A: :x
B: :q!
C: :wq
D: :w
E: ZZ
Frage 105:
Sie mssen in einer Konfigurationsdatei einige Zeilen lschen. Damit es schnell
geht, wollen Sie nicht jedes Mal sicherstellen, dass sich der Cursor am Anfang der
Zeile befindet. Welches Tastaturkommando lscht eine komplette Textzeile,
unabhngig von der Cursorposition, wenn Sie den vi als Editor verwenden?
A: p
B: P
C: dd
D: D
E: yy
Frage 106:
Sie mssen eine Datei mit dem Editor vi bearbeiten. Damit Sie die Textposition
nicht erst suchen mssen, wollen Sie eine Befehlszeilenoption verwenden, so
dass der Cursor direkt in Zeile 87 steht, wenn Sie den Editor gestartet haben.
Welches Kommando geben Sie ein?
A: vi +87 datei
B: vi 87 datei
C: vi -87 datei
D: Eine solche Option gibt es nicht.
E: vi +/87 datei
242
bungsfragen zu LPI 117-101
Frage 107:
Sie beabsichtigen, das Dateisystem des Datentrgers /dev/sdb1 von ext2 nach ext3
zu aktualisieren. Die Daten wurden bereits gesichert, aber Sie wollen dennoch
eine Konvertierung ohne Datenverlust durchfhren. Welches Kommando kn-
nen Sie verwenden?
A: mkfs -t ext3 /dev/sdb1
B: tune2fs -j /dev/sdb1
C: mkfs -t ext2 -j /dev/sdb1
D: mkfs.ext3 /dev/sdb1
E: fdisk /dev/sdb1
Frage 108:
Sie mssen zu Wartungszwecken alle vorhandenen Swap-Partitionen eines Sys-
tems deaktivieren. Welches Kommando (gegebenenfalls mit Optionen) werden
Sie am Terminal eingeben?
Frage 109:
Sie stellen fest, dass die Festplatte eines Systems, an dem unterschiedliche Benut-
zer arbeiten, annhernd voll ist. Sie wollen ermitteln, welcher Benutzer beson-
ders groe Datenmengen in seinem Heimatverzeichnis vorhlt. Welches Kom-
mando knnen Sie hierfr verwenden?
A: df
B: du
C: free
D: ps
E: ls
Frage 110:
Sie wollen, dass alle momentan nicht gemounteten Dateisysteme, die in der Datei
/etc/fstab gelistet sind, automatisch eingehngt werden. Welches Kommando
(ggf. mit Optionen) werden Sie verwenden?
243
Fragen
Frage 111:
Sie haben ein System von einem Kollegen bernommen und wollen sich nun
ansehen, welche Dateisysteme aktuell eingehngt sind. Wo knnen Sie das nach-
sehen? (Whlen Sie drei Antworten!)
A: /etc/mtab
B: /proc/mounts
C: /etc/fstab
D: durch Eingabe von mount
E: durch Eingabe von du
Frage 112:
Sie mssen das Dateisystem /dev/sdd2 aushngen. Der Mountpoint ist Ihnen
nicht bekannt. Mit welchem Kommando knnen Sie das Dateisystem aushngen,
ohne den Mountpoint vorher zu ermitteln? (Geben Sie das Kommando mit Para-
metern ein!)
Frage 113:
Sie haben Quotas auf den Festplatten eines Systems eingerichtet. Ein Benutzer
fragt Sie, wie er herausbekommen kann, wie viel Speicherplatz fr ihn auf der
Festplatte zur Verfgung steht. Welches Programm werden Sie dem Benutzer
empfehlen?
A: edquota
B: repquota
C: quota
D: df
E: quotaon
244
bungsfragen zu LPI 117-101
Frage 114:
Nachdem Sie Quotas auf einem System eingerichtet haben, beschwert sich ein
Benutzer, dass er keine Dateien mehr abspeichern kann. Sie stellen fest, dass der
Benutzer fr Videoschnitt zustndig ist und deshalb einen erhhten Bedarf an
Speicherkapazitt hat. Mit welchem Programm knnen Sie die Einstellungen fr
den Benutzer ndern?
A: edquota
B: repquota
C: quota
D: useradd
E: free
Frage 115:
Sie mssen die Besitzrechte einiger Dateien an einen anderen Benutzer bertra-
gen. Die Besitzergruppe soll durch Ihren Eingriff nicht beeintrchtigt werden.
Welches Programm werden Sie verwenden?
A: chmod
B: chgrp
C: newgrp
D: chown
E: umask
Frage 116:
Sie mssen auf einem Dateiserver die Berechtigungen aller Dateien und Unter-
verzeichnisse unterhalb von /Dokumente so ndern, dass nur die Besitzer und
Besitzergruppen die Rechte zum Lesen, Schreiben und Ausfhren erhalten. Allen
anderen Benutzern soll der Zugriff auf diese Dateien verweigert werden. Welche
Kommandos knnen Sie hier verwenden? (Whlen Sie zwei Antworten!)
A: chmod 660 /Dokumente -R
B: chmod 770 /Dokumente
C: chmod u=rwx,g=rwx /Dokumente -R
D: chmod u=rwx,g=rwx /Dokumente
E: chmod 770 /Dokumente -R
245
Fragen
Frage 117:
Ein Programm bentigt zur Ausfhrung erhhte Rechte. Sie mssen dafr sorgen,
dass das Programm mit Root-Rechten ausgefhrt wird, auch wenn es durch einen
normalen Benutzer ausgefhrt wird. Der Besitzer des Programms und auch die
Besitzergruppe sind jeweils Root. Welches Kommando werden Sie verwenden?
A: chmod 755 Programm
B: chown Programm
C: chown root:root Programm
D: chmod 1755 Programm
E: chmod 4755 Programm
Frage 118:
Sie mssen Dokumente, die sich im Verzeichnis /Dokumente befinden, fr alle
Benutzer in ihren jeweiligen Heimatverzeichnissen bereitstellen. Um die Daten-
menge durch Kopieren nicht unntig zu vergrern, entscheiden Sie sich, mit
Links zu arbeiten. Welches Kommando wird den bentigten Link fr den Benut-
zer franz anlegen?
A: ln /Dokumente /home/franz/Doku
B: ln -s /Dokumente /home/franz/Doku
C: ln -s /home/franz/Doku /Dokumente
D: ln /home/franz/Doku /Dokumente
E: cp /Dokumente/* /home/franz/Doku -R
Frage 119:
Sie konfigurieren einen neuen Webserver, der einen relativ statischen Inhalt
bereitstellen wird. Damit das Root-Dateisystem nicht durch jahrelang unbeach-
tete Protokollierung vollluft, wollen Sie eine sinnvolle Partitionierung der Fest-
platte des Systems vornehmen. Welches Verzeichnis sollte im vorliegenden Fall
eine eigene Partition erhalten?
A: /etc
B: /usr
C: /var
D: /bin
E: /home
246
bungsfragen zu LPI 117-101
Frage 120:
Sie planen die Partitionierung eines neuen Systems. Damit Sie zur Datensiche-
rung das Programm dump einsetzen knnen, wollen Sie den Verzeichnissen, die
besonders oft gesichert werden mssen, eine eigene Partition zuteilen. Welchen
beiden der folgenden Verzeichnisse sollte unter diesen Gesichtspunkten mg-
lichst eine eigene Partition zugewiesen werden?
A: /etc
B: /home
C: /var
D: /boot
E: /proc
247
Antworten und Erklrungen zu den Prfungsfragen
Antworten und Erklrungen zu den Prfungsfragen
Hier finden Sie die Erluterungen zu allen Fragen des ersten Teils. Sie sollten
unbedingt auch die Kommentare zu den falschen Antworten lesen. Einige Fakten
werden hier nicht zufllig mehrfach erwhnt, sondern weil wesentliche Prfungs-
inhalte auf diese Weise besser in Ihrem Gedchtnis haften bleiben.
Frage 1:
B: netstat -an | grep LISTEN liefert das gewnschte Ergebnis. Die sogenannte
Pipe (der senkrechte Strich) sorgt dafr, dass die Ausgabe des Kommandos
netstat an grep bergeben wird. Das Programm grep sucht dann im Ergebnis
nach der Zeichenkette LISTEN.
Die anderen Antworten sind frei erfunden und ergeben keinen Sinn.
Frage 2:
C: cut -d " " -f 7 /var/log/apache2/access.log > dateiliste
Mit diesem Kommando wird die siebte Spalte aus der Logdatei ausgeschnitten
und in die Datei dateiliste geschrieben. Der Delimiter ist in dieser Logdatei das
Leerzeichen zwischen den Double Quotes.
zu A: cut -f 7 /var/log/apache2/access.log > dateiliste ohne die Angabe
eines Delimiters wird cut die ganze Datei ausgeben.
zu B: cut -d " " /var/log/apache2/access.log > dateiliste wenn kein Feld
angegeben wird, gibt cut lediglich eine Fehlermeldung aus.
zu D: tail /var/log/apache2/access.log gibt die letzten 10 Zeilen der Datei aus.
zu E: cat /var/log/apache2/access.log gibt die komplette Datei ungefiltert aus.
Frage 3:
B: uname -r zeigt genau die gewnschte Information an.
zu A: uname -a wrde zustzliche, nicht bentigte Informationen ausgeben.
Die Kommandos der Antworten C und D gibt es nicht. Sie sind frei erfunden.
Frage 4:
A: cat /proc/modules gibt Informationen ber geladene Module direkt aus dem
Procdevice aus.
D: lsmod ist das Kommando zum Auflisten der geladenen Kernelmodule.
248
bungsfragen zu LPI 117-101
zu B: insmod fgt dem laufenden Kernel Module hinzu.
zu C: rmmod entfernt Module aus dem laufenden Kernel.
Frage 5:
A: modinfo -a 8139too zeigt den Autor des Moduls inkl. der E-Mail-Adresse an.
zu B: insmod 8139 mit insmod werden Module in den laufenden Kernel einge-
fgt.
zu C: lsmod listet die Module des laufenden Kernels auf.
zu D: modprobe ist ein Programm zum Laden bzw. Entladen von Modulen.
Frage 6:
rmmod und modprobe sind beide geeignet, diese Aufgabe durchzufhren.
Frage 7:
D: modprobe ist geeignet, Module in den laufenden Kernel zu laden und hierbei
gegebenenfalls Abhngigkeiten aufzulsen.
zu A: insmod ist der Vorlufer von modprobe und kann Abhngigkeiten nicht auto-
matisch auflsen.
zu B: autoinsmod gibt es nicht.
zu C: depmod generiert die Datei modules.dep.
Frage 8:
C: modprobe und D: rmmod sind beide fr diesen Vorgang geeignet.
zu A: rpm ist ein Programm zur Paketverwaltung, also praktisch vllig am Thema
vorbei.
zu B: insmod fgt ein Kernelmodul ein. Das ist aber das Gegenteil von dem, was
gefordert wurde.
Frage 9:
B: modules.conf und C: modprobe.conf sind die richtigen Konfigurationsdateien fr
diese Aufgabe, wobei die moduls.conf schon sehr alt ist und auf modernen Syste-
men nicht mehr vorkommt. Neuere Systeme verwenden auch ausgegliederte
Dateien im Verzeichnis /etc/modprobe.d.
zu A: /proc/irq kann nicht zur Konfiguration verwendet werden.
249
Antworten und Erklrungen zu den Prfungsfragen
zu D: modules.dep enthlt Informationen ber die Abhngigkeiten der Module
untereinander. Die Datei wird von modprobe erzeugt.
Frage 10:
depmod generiert die Datei modules.dep und die dazugehrigen Mapfiles. Diese
werden von der Hotplug-Infrastruktur genutzt.
Frage 11:
A: depmod -n macht einen sogenannten dry-run und zeigt das Ergebnis am Bild-
schirm an.
zu B: depmod -A ist eine beschleunigte Version von depmod, weil nur neuere
Module hinzugefgt werden. Der Befehl schreibt aber aktiv in die modules.dep.
zu C: depmod -b wird verwendet, wenn sich die Librarys nicht im standardmi-
gen Verzeichnis befinden, also normalerweise gar nicht.
zu D: modprobe-n macht ebenfalls einen dry-run allerdings zur Simulation beim
Laden von Modulen und nicht bei der Erstellung der modules.dep.
Frage 12:
C: /usr/src/linux ist normalerweise ein Softlink auf die Quellen des laufenden
Kernels. Die Quellen selbst befinden sich im Normalfall ebenfalls in einem eige-
nen Unterverzeichnis von /usr/src.
zu A: /boot enthlt in der Hauptsache den statischen Teil des Kernels und den
Bootloader GRUB.
zu B: /etc/kernelsources gibt es nicht.
zu D: /lib/modules enthlt die modularen Teile des Kernels.
zu E: /proc/modules ist eine Datei des Procdevice, die Informationen ber die lau-
fenden Module des Kernels enthlt.
Frage 13:
D: /dev/hdc2 ist richtig. Das kleine c verweist auf den sekundren Master und
die 2 auf die zweite Partition. Sollte Ihnen dieses Thema nicht leicht fallen,
dann lesen Sie bitte noch einmal unter Topic 101 die Abschnitte ber Gerte-
dateien nach.
250
bungsfragen zu LPI 117-101
Frage 14:
/dev/sde5 ist die einzig richtige Antwort. Die erste logische Partition einer Fest-
platte bekommt immer die Ordnungszahl zugewiesen egal wie die erweiterte
Partition nummeriert wurde.
Frage 15:
D: procinfo ist ein Programm, das automatisch die wesentlichen Informationen
aus dem Procdevice ausliest und darstellt. Informationen ber verwendete Inter-
rupts sind hier auch enthalten.
E: cat /proc/interrupts zeigt die Liste der verwendeten Interrupts direkt aus der
zustndigen Datei des Procdevice an.
zu A: less /proc/irq die Datei /proc/irq gibt es nicht.
zu B: cat /lib/modules/ erzeugt eine Fehlermeldung, weil /lib/modules ein Ver-
zeichnis und keine Datei ist.
zu C: cat /proc/modules zeigt eine Liste der geladenen Kernelmodule des laufen-
den Kernels an.
Frage 16:
E: cat /proc/scsi/scsi listet die angeschlossenen SCSI-Gerte auf. Es werden
allerdings auch SATA und USB-Gerte mit angezeigt.
zu A: cat /lib/modules/ hier befinden sich die Unterverzeichnisse mit Kernel-
modulen.
zu B: cat /etc/fstab hier gibt es lediglich Zuordnungen von Dateisystemen
und Verzeichnissen zu potentiellen Mountpoints.
zu C: cat /etc/mtab enthlt eine Liste mit den aktuell eingehngten Dateisyste-
men.
zu D: fdisk -l zeigt eine Liste der Partitionen auf Laufwerken, die das System zur
Zeit benutzt.
Prfungstipp
Fragen, in denen selten verwendete Kommandos vorkommen (hier procinfo), sind
immer etwas problematisch. Lassen Sie sich aber hierdurch nicht irritieren. Bei dieser
Frage konnte man mit etwas Sachkenntnis die Antworten A, B und C sauber ausschlie-
en. Das Verzeichnis /proc/interrupts aus Antwort E war Ihnen vermutlich bekannt.
Man musste hier also ohnehin Antwort D auswhlen, weil zwei Antworten gefordert
waren.
251
Antworten und Erklrungen zu den Prfungsfragen
Frage 17:
Die Frage verlangt eine mglichst genaue Aufstellung, und deshalb kommt auch
nur E: lspci -vvv in Frage. Dreifach verbose ist wirklich schon sehr genau.
zu A: lspci ist zwar auch nicht falsch, aber nur Antwort E erfllt die Anforderung
der Genauigkeit.
zu B: pciinfo ist kein Programm, das auf einem Linux-Computer normalerweise
vorkommt.
zu C: ps zeigt ohne Optionen lediglich die aktuellen Prozesse eines Benutzers in
der aktuellen Shell an.
zu D: rpm hier handelt es sich um den RPM Package Manager.
Frage 18:
A: lsusb -v zeigt eine Auflistung der in einem Gert verwendeten USB-Busse und
aller angeschlossenen USB-Gerte an.
zu B: lspci ist ein quivalentes Programm fr PCI-Gerte.
zu C: ps aux gibt eine Liste der laufenden Prozesse aus.
zu D: top gibt dynamisch Informationen zu laufenden Prozessen aus.
Frage 19:
C: usb-ehci.o ist das Kernelmodul, das zur Verwendung von USB 2.0 geladen wer-
den muss.
zu A: usb-uhci.o und B: usb-ohci.o diese beiden Module untersttzen lediglich
USB 1.1-gerte.
zu D: usb_storage.o ist, wie der Name des Moduls schon vermuten lsst, zum
Betrieb von USB-Speichergerten (Festplatten, Speichersticks usw.) notwendig.
Er steht aber nicht direkt mit dem verwendeten Standard in Zusammenhang.
Frage 20:
D: hid.o ist das Modul fr Human Interface Devices, worunter Eingabegerte wie
Muse und Tastaturen fallen.
zu A, B und C: usb-uhci.o, usb-ohci.o und usb-ehci.o knnen (immer auf die
jeweilige Spezifikation bezogen) nicht das Problem sein, weil der Benutzer ohne
Probleme einen USB Memory Stick verwenden kann.
zu E: usb_storage.o ist ausschlielich fr Massenspeicher zustndig und wird von
Musen und Tastaturen nicht bentigt.
252
bungsfragen zu LPI 117-101
Frage 21:
A: usbmgr ist ein Daemon, der ausschlielich fr die automatische Konfiguration
von USB-Gerten verwendet werden kann.
C: hotplug ist ein Daemon, der USB-Gerte und auch andere Plug'n Play-Gerte
(Firewire, PCMCIA usw.) automatisch konfigurieren kann.
zu B: bind ist der Berkeley Internet Name Daemon. Er hat mit USB-Gerten nicht
das Geringste zu tun.
zu D: ehci.o und E: uhci.o das sind lediglich Kernel-Module fr USB-Controller.
Frage 22:
E: /dev enthlt Gertedateien, wie z.B. /dev/sda1 oder /dev/tty0.
zu A: /etc ist der zentrale Speicherort fr Konfigurationsdateien.
zu B: /proc ist ein Verzeichnis des laufenden Kernels.
zu C: /home enthlt die Benutzerverzeichnisse.
zu D: /usr ist fr die Speicherung von ausfhrbaren Programmen reserviert.
Frage 23:
B: udev ist fr die Verwaltung des Gerteverzeichnisses /dev zustndig.
zu A: hald ist fr Hardwareabstraktion und C: dbus fr das automatische Einhn-
gen von Wechsellaufwerken zustndig.
zu D: sshd ist der Daemon der Secure Shell.
zu E: init ist der Vater aller Prozesse und zustndig fr die Verwaltung aller ande-
ren Prozesse.
Frage 24:
lsusb ist die richtige Antwort.
Frage 25:
B: am Ende des MBR
Prfungstipp
Achten Sie bei den Fill in the Blanks-Aufgaben auf den genauen Fragentext. Es kann
Sie Punkte kosten, wenn Sie Optionen oder Parameter angeben, wenn keine gefordert
sind und umgekehrt.
253
Antworten und Erklrungen zu den Prfungsfragen
Die anderen Antworten sind falsch und bedrfen meiner Meinung nach auch kei-
ner Erklrung.
Frage 26:
B: grub und D: lilo sind jeweils Bootloader.
zu A: MBR ist der Master Boot Record einer Festplatte. Er ist zwar auch in den
Systemstart involviert, aber es handelt sich nicht um einen Bootloader.
zu C: mkfs ist ein Programm zur Formatierung von Dateisystemen.
zu E: fdisk ist ein Programm zur Partitionierung von Laufwerken.
Frage 27:
A: Geben Sie dmesg ein, und suchen Sie nach Fehlern bezglich USB und Datei-
system.
E: Suchen Sie nach kernel in der Datei /var/log/messages.
Das sind beides gngige Methoden, um nach kernelbezogenen Fehlern zu
suchen.
zu B: Sichern Sie die Festplatte, und fhren Sie eine Neuformatierung durch. Stel-
len Sie die Daten anschlieend wieder her.
Das kann man zwar machen, und mglicherweise luft die Festplatte danach
auch stabil, allerdings war hier lediglich eine Analyse gefordert und kein Repara-
turvorschlag.
zu C: und D: Die Dateien der Antworten C und D sind frei erfunden.
Frage 28:
D: init 1 versetzt den Computer in den Single User Mode. In diesem Runlevel
sind das Netzwerk und die Multiuserfhigkeit deaktiviert.
zu A: iptables -t filter -L listet lediglich die konfigurierten Filter der Firewall
auf. Ein Blockieren der Netzwerkverbindung wird nicht bewirkt.
zu B: ifconfig eth1 down deaktiviert die Netzwerkschnittstelle eth1. Eine eventu-
ell vorhandene Schnittstelle eth0 wre weiterhin zugreifbar.
zu C: logout meldet Sie lediglich von der Login-Shell ab.
zu E: init 6 bewirkt einen Neustart des Systems.
254
bungsfragen zu LPI 117-101
Frage 29:
C: init mit PID 1 ist die richtige Lsung.
Frage 30
A: telinit q ist genau fr diesen Fall vorgesehen. Das Kommando sorgt dafr,
dass die Datei /etc/inittab neu eingelesen und ausgewertet wird.
zu B: init q gibt es nicht.
zu C: logout anschlieend neu anmelden. Hierdurch wrde die Datei /etc/init-
tab nicht neu eingelesen werden. Es wre stattdessen ein Neustart erforderlich.
zu D: init 6 und zu E: shutdown -r now diese Kommandos bewirken einen Neu-
start des ganzen Systems, was aber ausdrcklich nicht erwnscht war.
Frage 31:
B: /etc/init.d und E: /etc/rc.d sind die Verzeichnisse, in denen sich jeweils in
Abhngigkeit von der verwendeten Distribution die init-Skripte eines Systems
befinden.
zu A: /etc/inittab ist eine Datei, die ebenfalls in den Startvorgang involviert ist.
zu C: /proc ist das Verzeichnis fr das Procdateisystem.
zu D: /lib enthlt Bibliotheken, u.a. fr Kernel-Module.
Frage 32:
E: init 6 startet das System ohne Vorwarnung der angemeldeten Benutzer neu.
zu A: shutdown -r now startet das System ebenfalls neu. Es wird jedoch eine Nach-
richt an alle Benutzer ausgegeben.
zu B, C und D: init 0, halt und poweroff fahren das System jeweils ohne Benach-
richtigung der Benutzer herunter. In der Frage ist aber ein Neustart gefordert.
Frage 33:
E: shutdown -rf now ist die richtige Auswahl. Die Option r sorgt fr den Reboot,
und das kleine f bewirkt, dass whrend des Neustarts keine Routineprfung der
Dateisysteme stattfindet.
Prfungstipp
Bei den meisten Daemonen wurde dem Namen ein kleines d angehngt. Bei init ist
das aber nicht der Fall. Solche Details muss man in der Prfung kennen.
255
Antworten und Erklrungen zu den Prfungsfragen
zu A: shutdown -rk now zeigt lediglich die Konsolenmeldung des Kommandos an.
Der Neustart findet jedoch nicht statt.
zu B: shutdown -rF now erzwingt eine Dateisystemberprfung nach dem Neu-
start. Das ist genau das Gegenteil von dem, was gefordert war.
zu C: init 0 fhrt das System ohne Warnung herunter.
zu D: init 6 startet das System ohne Vorwarnung neu. Eine Dateisystemprfung
wird allerdings nicht verhindert.
Frage 34:
shutdown -rF now ist eine gltige Antwort. Alternativ wre auch noch shutdown -r
-F now akzeptabel.
Frage 35:
A: ldconfig registriert neue Bibliotheken beim Linker. Hierbei wird die Datei
ld.so.conf ausgewertet.
zu B: ldd berprft, von welchen Librarys ein Programm abhngt.
zu C: ld.so.conf ist lediglich die Konfigurationsdatei zur Steuerung von ldconfig.
zu D: /lib/modules ist ein Verzeichnis, das Bibliotheken enthlt.
zu E: tar -xvzf packt einen komprimierten tar-Ball aus. Das ist aber schon pas-
siert.
Frage 36:
D: ldd /bin/bash zeigt Ihnen an, von welchen Bibliotheken die Shell bash
abhngt.
zu B: ldd /var/bash ist falsch. Eine Shell liegt garantiert nie im Verzeichnis /var.
zu A: ldconfig /bin/bash und zu C: cat ld.so.conf und zu E: cat ld.so.cache: Man
kann zusammenfassend sagen, dass das Programm ldconfig die Datei /etc/
ld.so.conf einliest und dann die fr den Linker bentigte Datei /etc/ld.so.cache
generiert.
Frage 37:
B: dpkg purge deinstalliert ein Debian-Paket inklusive aller dazugehrenden
Konfigurationsdateien.
zu A: dpkg -r deinstalliert das Paket, belsst aber die Konfiguration.
256
bungsfragen zu LPI 117-101
zu C: dpkg -e extrahiert lediglich die Steuerinformationen aus einem angegebe-
nen Paket.
zu D: rpm -e ist die Erase-Funktion von rpm.
zu E: apt-get install installiert ein Paket mittels aptitude.
Frage 38:
C: apt-get ist fr diese Aufgabe das richtige Programm.
zu A: dpkg kann ein Programm zwar installieren, aber nicht aus dem Internet her-
unterladen.
zu B: alien ist zur Konvertierung und Installation fremder Paketformate gedacht.
zu D: yum wrde diese Aufgabe erledigen allerdings nur fr rpm-Pakete.
zu E: Die Synaptik-Paketverwaltung wrde diese Aufgabe erfllen allerdings
nicht auf der Kommandozeile, sondern grafisch.
Frage 39:
A: apt-get update erledigt genau diese Aufgabe.
zu B: apt-get upgrade fhrt eine Aktualisierung aller installierten Pakete auf
einem Debian-System durch.
zu C: yum upgrade entspricht Antwort B, allerdings auf einem rpm-basierten Sys-
tem.
zu D: yum update aktualisiert die Paketlisten auf einem rpm-basierten System.
zu E: apt-get reconfigure fhrt eine Neukonfiguration von dpkg-Paketen durch.
Frage 40:
B: apt-get upgrade ist in diesem Falle die richtige Antwort. Die Erluterungen zu
den falschen Antworten finden Sie diesmal bei der vorangegangenen Frage 39.
Frage 41:
A: apt-get remove dhcp3-server und B: aptitude remove dhcp3-server entfernen
jeweils das angegebene Paket unter Beibehaltung der Konfigurationsdateien.
zu C: dpkg purge dhcp3-server entfernt zwar das angegebene Paket, allerdings
auch die Konfigurationsdateien.
257
Antworten und Erklrungen zu den Prfungsfragen
zu D: rpm -ihv dhcp3-server wrde das angegebene Paket aus einem auf dem
System vorhandenen rpm-Paket installieren.
zu E: rpm -Uhv dhcp3-server wrde das angegebene Programm aus einem auf
dem System vorhandenen rpm-Paket aktualisieren. Das U steht hier also fr
update und nicht fr uninstall, wie man meinen knnte.
Frage 42:
C: aptitude und E: dselect sind jeweils mengefhrte Installationsprogramme,
die kein X11 bentigen, sondern auf der Konsole ausgefhrt werden knnen.
zu A und B: apt-get und dpkg -i sind jeweils nicht mengefhrt.
zu D: synaptic bentigt X11 und ist deshalb nicht in einem Terminal lauffhig.
Frage 43:
E: alien ist hier das Mittel der Wahl. Dieses Programm untersttzt die Konvertie-
rung unterschiedlichster Pakettypen.
zu A: rpm ist der RPM Package Manager.
zu B: dpkg und zu C: aptitude diese Programme installieren ausschlielich
dpkg-Pakete und keine Fremdpakete aus anderen Distributionen.
zu D: apt-cache ist ein Programm, mit dem man den Cache des apt-Systems ver-
walten kann, wie der Name schon impliziert.
Frage 44:
C: rpm -ihv installiert rpm-Pakete, was zu einem Fedora-System gut passt. Das h
sorgt fr eine Fortschrittsanzeige und das v fr einen Verbose-Mode, was bei
umfangreichen Programminstallationen immer von Vorteil ist.
zu A: yum search sucht (vor allem auch online) nach dem angegebenen Pro-
gramm. Das Programm liegt aber bereits als Paket vor.
zu B: rpm -U wird zur Aktualisierung bestehender Programme verwendet. Die
Option -U wird zwar bei noch nicht installierten Programmen auch zur Erstinstal-
lation fhren, es fehlt hier aber auch die Fortschrittsanzeige.
zu D: dpkg -i fhrt eine normale Installation von dpkg-Paketen durch. Diese sind
auf Fedora-Systemen nicht blich. Es fehlt auch hier zustzlich die Fortschritts-
anzeige.
zu E: apt-get install ist ebenfalls auf Fedora-Systemen unblich. Auerdem
liegt das zu installierende Programm bereits als Paket vor.
258
bungsfragen zu LPI 117-101
Frage 45:
D: rpm -qa erstellt eine Abfrage (query) bezglich aller (all) auf einem System
installierten Pakete und stellt diese dann als Liste bereit.
zu A: rpm -qR fragt ab, welche anderen Pakete von einem Paket vorausgesetzt
(required) werden.
zu B: rpm -ql listet die in einem Paket enthaltenen Dateien auf.
zu C: rpm -V berprft (verify) bereits installierte Pakete.
zu E: rpm -Uhv fhrt ein Update (oder ggf. eine normale Installation) eines Pakets
aus. Zustzlich zeigen Rauten (hashes) den Fortschritt der Installation an, und die
Installation luft im Verbose-Mode.
Frage 46:
E: /etc/yum.repos.d ist das Verzeichnis, in dem sich blicherweise die Dateien mit
Verweisen auf Quellen fr rpm-Pakete befinden. Diese Dateien haben die Erwei-
terung repo.
zu A: /etc/yum.conf ist die Hauptkonfigurationsdatei des yum-Systems.
zu B: /etc/apt/sources.list enthlt ebenfalls Verweise auf Quellen, allerdings fr
das apt-System und nicht fr yum.
zu C: /var/cache/yum ist das Cache-Verzeichnis fr das yum-System.
zu D: /etc/apt/apt.conf ist eine Konfigurationsdatei, die fr die apt-Tools bentigt
wird.
Frage 47:
pwd ist hier das richtige Kommando. Auf exotischen Umgebungen, wie z.B. uNS-
LUng, ist es nicht blich, den aktuellen Pfad im Prompt anzuzeigen. Sie sollten
dieses Kommando also nicht nur fr die Prfung unbedingt kennen.
Frage 48:
C: env listet die aktuellen Umgebungsvariablen auf. Diese Variablen werden
hauptschlich gesetzt, wenn sich ein Benutzer anmeldet. Sie sind dann in jeder
verwendeten Subshell identisch.
zu A: ls /var listet lediglich den Inhalt des Verzeichnis /var auf.
zu B: echo $var zeigt den Inhalt der Variablen var an, falls diese gesetzt sein sollte.
zu D: set zeigt die gesetzten Shellvariablen an.
zu E: cat /proc/var gibt es nicht.
259
Antworten und Erklrungen zu den Prfungsfragen
Frage 49:
D: set zeigt die Shellvariablen an. Diese Variablen sind nur in der aktuellen Shell
gltig.
zu A, B, C und E lesen Sie bitte die Erluterungen zu Frage 48.
Frage 50:
A: bashrc ist hierfr die richtige Datei. Sie ist die einzige Datei, die berhaupt fr
alle Benutzer Gltigkeit hat.
Frage 51:
B: ~/.bashrc ist fr diese Anforderung die optimale Datei.
zu A: /etc/bashrc und D: /etc/profile diese beiden Dateien darf ein normaler
Benutzer nicht bearbeiten. Es wrde sich dann auerdem der Prompt fr alle
Benutzer ndern.
C: ~/.bash_logout ist ein Skript, das (falls berhaupt vorhanden) bei der Abmel-
dung des Benutzers ausgefhrt wird.
E: ~/.bash_history enthlt die Historie der Befehle, die der Benutzer in der Shell
verwendet hat.
Frage 52:
B: meaning_of_life=42 und D: let meaning_of_life=42 weisen jeweils der Vari-
ablen meaning_of_life den Wert 42 zu. Es findet in beiden Fllen kein Export in
eine Subshell statt.
zu A: export meaning_of_life exportiert die Variable samt Inhalt, wenn Sie
bereits deklariert war.
zu C: set meaning_of_life=42 bewirkt nichts. Man kann mit set keine Variablen
setzen, auch wenn sich das Kommando so anhrt.
Prfungstipp
zu B: .profile, zu C: .bashrc, zu D: .bash_logout und zu E: .bash_profile
Merken Sie sich unbedingt, dass Dateien, denen ein Punkt vorangestellt ist, versteckte
Dateien sind. Diese findet man nur in den jeweiligen Heimatverzeichnissen der Benut-
zer. Deshalb sind diese auch nicht systemweit gltig. Es gibt viele Konfigurationsda-
teien, in denen Variablen deklariert werden. Sie sollten diese Dateien zumindest zur
Prfung gut kennen. Lesen Sie gegebenenfalls noch einmal unter Umgebungsvariablen
und Shellvariablen nach.
260
bungsfragen zu LPI 117-101
zu E: export meaning_of_life=42 wrde die Variable setzen und gleichzeitig fr
Subshells exportieren. Letzteres ist aber ausdrcklich nicht erwnscht.
Frage 53:
D: echo $? gibt den letzten gesetzten Errorlevel aus.
zu A: echo $PS1 gibt die Variablen aus, die das Aussehen des aktuellen Prompt
bestimmen.
zu B: cat $? versucht, den Inhalt der Datei auszugeben. Diese existiert wahr-
scheinlich nicht.
zu C: pwd zeigt das aktuelle Verzeichnis an.
zu E: echo $! versucht, den Inhalt der Variablen ! auszugeben. Diese Variable gibt
es aber nicht.
Frage 54:
C: unset A setzt die Variable A zurck.
zu A: reset A versucht, das Terminal A zurckzusetzen. Es gibt also eine Fehler-
meldung.
zu B: A = 0 setzt die Variable A auf den Wert 0. Das ist aber nicht gefordert. Die
Variable soll schlielich ganz zurckgesetzt werden.
zu D: let A = gibt eine Fehlermeldung, weil let einen Parameter zum Setzen der
Variablen erwartet.
zu E: export A exportiert die Variable A zur Verwendung in Subshells.
Frage 55:
export http_proxy=http://192.168.0.1:3128
Das Kommando muss exakt so aussehen. Rechts und links des Gleichheitszei-
chens sind Leerzeichen erlaubt, aber nicht erforderlich.
Frage 56:
history ist das richtige Kommando, um eine nummerierte Liste der zuletzt ein-
gegebenen Kommandos zu erhalten.
Frage 57:
A: Cursor nach oben + Eingabetaste fhrt den zuletzt verwendeten Befehl aus.
261
Antworten und Erklrungen zu den Prfungsfragen
C: !! fhrt ebenfalls den zuletzt verwendeten Befehl aus.
D: !net fhrt den letzten Befehl aus, der mit der Zeichenkette net beginnt.
zu B: !? erwartet einen Parameter und wrde den letzten Befehl ausfhren, der
die bergebene Zeichenkette enthielte.
zu E: history zeigt die Befehlshistorie an.
Frage 58:
A: which zeigt Pfadnamen zu Programmen oder auch Links an.
zu B: whereis zeigt den Pfad, Konfigurationsdateien und den Pfad zu den Manpa-
ges eines Programms an. Es sollte aber ausschlielich der Programmpfad ange-
zeigt werden.
zu C: whois sucht im Internet nach zustndigen Personen zu Domnen oder IP-
Adressen.
zu D: whatis zeigt eine kurze Beschreibung eines Programms an. Hierfr werden
unter anderem die Indexdateien der Manpages verwendet.
zu E: apropos sucht nach einem eingegebenen Suchwort in der Indexdatenbank
der Manpages. Das Kommando apropos copy wrde also z.B. viele Themen fin-
den, die mit Kopiervorgngen in Zusammenhang stehen.
Frage 59:
E: man 5 crontab liefert das gewnschte Ergebnis. Die Sektion 5 ist fr Dateifor-
mate und Konventionen zustndig. Sollten ber ein Thema in mehreren Sektio-
nen der Manpages Eintrge vorhanden sein, dann muss die gewnschte Sektion
angegeben werden.
zu A: man 1 crontab bringt wieder Informationen ber das ausfhrbare Programm
crontab. Die Sektion 1 enthlt Informationen ber Programme fr Benutzer.
zu B: whatis crontab zeigt kurze Beschreibungen zu crontab aus beiden Sektio-
nen 1 und 5.
zu C: which crontab zeigt den Programmpfad zur Binrdatei crontab an.
zu D: man 8 crontab ergibt eine Fehlermeldung. Die Sektion 8 der Manpages ist
fr Programme gedacht, die nur der Root ausfhren darf. Das ist bei crontab aber
nicht der Fall.
262
bungsfragen zu LPI 117-101
Frage 60:
B: manpath zeigt den Pfad (die Pfade) zu den Manpages an.
zu A: echo $MANPATH fhrt nicht auf jedem System zum Ziel. In der Prfung wrde
ich aber das Programm manpath vorziehen, weil es speziell auf diese Aufgabe aus-
gerichtet ist.
zu C: manpath -c zeigt die Verzeichnisse, die den Cache fr extrahierte Manpages
enthalten.
zu D: man man zeigt die Manpage zu man an.
zu E: whereis man zeigt die Pfade zu den zum Programm man gehrigen Dateien
an.
Frage 61:
E: cat liste1 liste2 >> liste3 fhrt die Dateien liste1 und liste2 in liste3 zusam-
men, so dass die enthaltenen Daten untereinander angeordnet werden. Der dop-
pelte Redirector bewirkt, dass bereits vorhandene Daten in liste3 nicht ber-
schrieben werden.
zu A: paste liste1 liste2 >> liste3 wrde die beiden ursprnglichen Dateien
nebeneinander in liste3 zusammenfhren. Das ist aber nicht erwnscht.
zu B: join liste1 liste2 > liste3 ist hier ungeeignet, weil die Sortierung eben-
falls nebeneinander erfolgen wrde. Auerdem bentigt join zustzliche Para-
meter.
zu C: cat liste1 liste2 >liste3 fhrt die Dateien zusammen wie gewnscht.
Allerdings wrden in liste3 bereits vorhandene Daten nicht beibehalten werden.
zu D: cat liste1 liste2 | liste3 bewirkt eine Fehlermeldung, weil die Pipe (|)
versuchen wrde, die Ausgabe des Kommandos cat liste1 liste2 an das Pro-
gramm oder Skript liste3 zu bergeben. Dies gibt es aber nicht.
Frage 62:
B: cut -d " " -f1 access.log > ip.txt lst diese Aufgabe. Die Option -d " " sagt
dem Programm, dass die Tabellenspalten durch Leerzeichen getrennt (delimit)
sind. Mit der Option -f1 wird das erste Feld (field) ausgeschnitten.
zu A: head -n 20 access.log zeigt die ersten 20 Zeilen der Datei access.log an.
zu C: tail access.log > ip.txt schreibt die letzten zehn Zeilen der Datei
access.log in die Datei ip.txt.
263
Antworten und Erklrungen zu den Prfungsfragen
zu D: od access.log >> ip.txt wandelt die Datei access.log in ein Oktalformat um
und hngt das Ergebnis der Datei ip.txt an.
zu E: fmt access.log >> ip.txt ergibt keinen Sinn, weil fmt zur Formatierung
von Textdateien gedacht ist. Eine Anwendung auf Logfiles ist nicht sinnvoll.
Frage 63:
A: expand wandelt Tabstopps in Leerzeichen um. Das ist genau das, was gefordert
wurde.
zu B: unexpand macht genau das Gegenteil von dem, was erwartet wird. Es ersetzt
aufeinander folgende Leerzeichen durch Tabstopps.
zu C: head zeigt die ersten zehn Zeilen einer Datei an.
zu D: pr ist ein altes Programm zur Vorbereitung von Textdateien auf den Druck.
zu E: cat zeigt Dateien an oder fhrt Dateien zusammen (concatenate).
Frage 64:
C: head -n1 und D: head -1 zeigen jeweils die erste Zeile einer Datei an. Die She-
bangzeile ist immer die erste Zeile eines Skripts.
zu A: head zeigt ohne Optionen die ersten zehn Zeilen einer Datei an. Es ist aber
nur eine gewnscht.
zu B: tail -1 und E: tail -n1 zeigen jeweils immer die letzte Zeile einer Datei an.
Frage 65:
D: tac kehrt Dateien um und zeigt sie dann an. Es handelt sich um eine Umkeh-
rung von cat.
zu A: expand wandelt Tabstopps einer Datei in Leerzeichen um.
zu B: tail zeigt die letzten (zehn) Zeilen einer Datei an.
zu C: cat wrde keine Umkehrung der Datei bewirken.
E: head zeigt die ersten (zehn) Zeilen einer Datei an.
Prfungstipp
Wenn Tabstopps in Leerzeichen umgewandelt werden, dann enthlt diese Datei hinter-
her mehr Zeichen. Sie wurde also expandiert. Beim Umwandeln mehrerer Leerzeichen
in Tabstopps enthlt die Datei nachher weniger Zeichen. Sie wurde also unexpandiert.
264
bungsfragen zu LPI 117-101
Frage 66:
C: nl steht fr number line. Das ist der richtige Filter fr diese Aufgabe.
zu A: ln erstellt Links zu Dateien und Verzeichnissen.
zu B: pr bereitet Textdateien fr den Druck vor.
zu D: fmt nimmt einfache Formatierungsaufgaben an Textdateien vor.
zu E: wc zhlt Wrter, (word count) Zeilen und Bytes einer Datei.
Frage 67:
Hier kommen folgende Lsungen in Betracht:
tail -n 40 syslog
tail -n40 syslog
tail -40 syslog
Im Prinzip mssten auch Antworten akzeptiert werden, in denen der vollstndige
Pfad zur Datei angegeben wird. Wie das Prfungsprogramm solche Antworten
bewertet, ist allerdings nicht offiziell bekannt.
Frage 68:
B: unexpand ersetzt aufeinander folgende Leerzeichen durch Tabstopps. Das ist
genau das, was gefordert wurde.
zu A: expand wandelt Tabstopps in mehrere Leerzeichen um. Das ist aber das
Gegenteil von dem, was gefordert wurde.
zu C: head zeigt die ersten zehn Zeilen einer Datei an.
zu D: pr ist ein lteres Programm zur Vorbereitung von Textdateien auf den
Druck.
zu E: cat zeigt Dateien an oder fhrt Dateien zusammen (concatenate).
Prfungstipp
Die hnlichkeit der beiden Kommandos nl und ln kann in der Prfung schnell zur Falle
werden. Sie sollten darauf achten, hnlich lautende Kommandos sicher voneinander
unterscheiden zu knnen. In der Prfung stehen Ihnen keine Manpages zur Verfgung!
265
Antworten und Erklrungen zu den Prfungsfragen
Frage 69:
split ist hier das Mittel der Wahl. Der Empfnger kann die Fragmente dann wie-
der mit cat zusammensetzen.
Frage 70:
uniq entfernt nur aufeinander folgende Dubletten aus Dateien. Eine vorherige
Sortierung ist also tatschlich sinnvoll.
Frage 71:
C: ls -lh zeigt die Dateiliste mit Grenangaben in KB, MB, GB und so weiter.
Das -h steht fr human readable.
zu A: ls -li zeigt eine Dateiliste mit Inodes.
zu B: ls -la sorgt dafr, dass auch Dateien angezeigt werden, deren Namen mit
einem Punkt beginnen (versteckte Dateien).
zu D: ls -lc zeigt den letzten nderungszeitpunkt der Dateien mit an.
zu E: ls -lS sortiert die Dateien nach Gre.
Frage 72:
A: cd ~ und D: cd bringen Sie jeweils direkt nach Hause.
zu B: cd .. bringt Sie eine Verzeichnisebene hher.
zu C: cd / wechselt ins Hauptverzeichnis.
zu E: cd /home wechselt in das Verzeichnis /home. Das ist aber nicht Ihr Heimat-
verzeichnis.
Frage 73:
D: -p oder auch --preserve sorgen dafr, dass Attribute und Eigentmerschaften
an Dateien und Verzeichnissen beibehalten werden.
zu A: -f erzwingt (force) den Kopiervorgang auch ohne Rckfrage, wenn eine
Datei gleichen Namens im Zielverzeichnis schon vorhanden ist.
zu B: -i sorgt dafr, dass in jedem Falle nachgefragt wird, bevor eine Datei im
Zielverzeichnis berschrieben wird (interactive).
Prfungstipp
Achten Sie immer darauf, ob nur ein Programm oder das komplette Kommando samt
Optionen und Parameter verlangt ist. In dieser Frage htte zu viel Flei Punkte gekostet.
266
bungsfragen zu LPI 117-101
zu C: -R fhrt zu einem rekursiven Kopiervorgang. Es werden alle Dateien und
Unterverzeichnisse kopiert.
zu E: -u aktualisiert (update) im Ziel nur Dateien, wenn die Quelldateien neuer
sind. Diese Option eignet sich besonders gut fr Skripte, die Datensicherungen
durchfhren.
Frage 74:
Richtige Antworten sind:
mkdir -p /daten/archiv/1980/bilder
mkdir --parents /daten/archiv/1980/bilder
mkdir /daten/archiv/1980/bilder -p
mkdir /daten/archiv/1980/bilder --parents
Alle diese Kommandos erstellen die komplette Verzeichnisstruktur.
Frage 75:
A: find /home/willi -name *.pdf lst die Aufgabe.
zu B: find /home/willi *.pdf ist kein vollstndiges Kommando, weil das Suchkri-
terium fehlt.
C: locate *.pdf findet systemweit alle pdf-Dateien. Es sollen aber keine Doku-
mente anderer Benutzer angezeigt werden.
D: search /home/willi *.pdf ergibt eine Fehlermeldung. Es gibt kein Kommando
namens search, das Dateien sucht.
E: find /home/willi -name ?.pdf findet nur pdf-Dateien, deren Dateinamen aus
nur einem Zeichen bestehen, weil das Fragezeichen nur als Platzhalter fr ein ein-
zelnes Zeichen verwendet wird.
Frage 76:
E: tar -xvzf programm.tar.gz entpackt (x) im Verbose-Mode (v) ein gezipptes (z)
tar-file (f).
zu A: tar -xvfz programm.tar.gz schlgt fehl, weil die letzte Option das f sein
muss. Denn nach dem f muss sofort der Dateiname (file) folgen.
zu B: tar -t programm.tar.gz listet den Inhalt des tar-Files auf.
zu C: tar --list programm.tar.gz listet ebenfalls den Inhalt des tar-Files auf.
267
Antworten und Erklrungen zu den Prfungsfragen
zu D: rmp -ihv programm.tar.gz ist nur fr rpm-Pakete geeignet und deshalb das
falsche Werkzeug.
Frage 77:
B: tar -t und E: tar --list geben jeweils eine Tabelle bzw. eine Liste der Dateien
aus, die in einem tar-Archiv enthalten sind.
zu A: tar -xvfz packt ein komprimiertes tar-Archiv aus. Das ist zu viel Aufwand,
wenn man nur den Inhalt auflisten will.
zu C: tar -r fgt einem vorhandenen tar-Archiv Dateien hinzu.
zu D: tar -c erstellt ein neues tar-Archiv.
Frage 78:
A: gzip -d files.gz und E: gunzip files.gz wrden beide eine Dekompression
von files.gz bewirken.
zu B: gzip -t files.gz testet die Integritt der Datei files.gz.
zu C: gzip -u files.gz ergibt eine Fehlermeldung, weil es die Option -u nicht
gibt.
zu D: gzip files.gz ist falsch. Wenn keine Optionen angegeben sind, kompri-
miert gzip die angegebene Datei und lscht anschlieend die Originaldatei.
Frage 79:
Richtige Antworten sind:
bzip2 (in der Praxis mit der Option -d)
bunzip2
bzcat
Sollten Sie bei der Antwort Optionen und/oder Parameter angegeben haben,
muss die Antwort als falsch gewertet werden.
Frage 80:
B: find /home -name *.pdf | cpio -pd /pdfbackup lst die Aufgabe. Der find-
Befehl sucht die Pfade zu allen Dateien mit der Erweiterung pdf und bergibt
diese Pfade an cpio. Das Programm cpio wird im pass-through-Modus ausge-
fhrt, um an /pdfbackup durchzureichen. Die Option d erstellt die ntigen Ver-
zeichnisse (directorys), damit die Verzeichnisstruktur der Quellen abgebildet wer-
den kann.
268
bungsfragen zu LPI 117-101
zu A: tar -cf /pdfbackup/pdfs.tar /home/* erstellt ein tar-Archiv aus dem kom-
pletten /home-Verzeichnis. Das ist aber nicht die Aufgabe.
zu C: find /home -name *.pdf | cpio -o /pdfbackup fhrt cpio im create-Mode
aus. Es fehlen aber die dafr bentigten Argumente.
zu D: find /home -file *.pdf | cpio -pd /pdfbackup enthlt eine falsche Option
fr find. Die Option -file gibt es bei diesem Kommando nicht.
zu E: cp /home/*.pdf /pdfbackup kopiert einfach alle pdf-Dateien, die sich
direkt im Verzeichnis /home befinden (also wahrscheinlich keine), in das Ver-
zeichnis /pdfbackup.
Frage 81:
dd if=/dev/hda of=/dev/hdd kopiert den Inhalt der kompletten Festplatte /dev/
hda auf die Festplatte /dev/hdd. Zur Beantwortung solcher Fragen muss man die
Gertedateien und deren Zuordnung zu physikalischen Festplatten natrlich ken-
nen.
Frage 82:
A: dd if=/dev/hda of=mbr.backup ibs=512 count=1 liest Blcke mit einer Gre
von 512 Bytes von /dev/hda und schreibt diese in die Datei mbr.backup. Die
Option count sorgt dafr, dass nur ein Block gelesen wird. Da sich der MBR im
ersten Block einer Festplatte befindet, wird genau dieser gesichert.
zu B: dd of=/dev/hda if=mbr.backup ibs=512 count=1 schreibt den Inhalt der
Datei mbr.backup auf die Festplatte /dev/hda. Dieses Kommando kme also fr die
Wiederherstellung des MBR in Frage.
zu C: dd if=/dev/hda of=mbr.backup schreibt den kompletten Inhalt der Fest-
platte /dev/hda in die Datei mbr.backup.
zu D: dump /dev/hda ist ungeeignet, weil dump ein Programm zur Sicherung ganzer
Dateisysteme ist.
zu E: dd if=/dev/hdb of=mbr.backup ibs=512 count=1 sichert den MBR der Slave-
Festplatte am primren IDE-Controller. Es sollte aber der MBR der Master-Fest-
platte sein.
Frage 83:
C: file doku.ods zeigt an, um welchen Dokumententypen es sich bei einer Datei
handelt. Beispiel:
269
Antworten und Erklrungen zu den Prfungsfragen
harald@archangel:~/Dokumente$ file doku.ods
doku.ods: OpenDocument Spreadsheet
zu A: touch doku.ods ndert die Timestamps einer Datei oder erstellt eine leere
Datei mit dem angegebenen Namen.
zu B: stat doku.ods zeigt Informationen ber die Gre und Timestamps einer
Datei an.
zu D: rm doku.ods lscht die angegebene Datei.
zu E: stat -f doku.ods zeigt Informationen ber das Dateisystem, auf der sich die
angegebene Datei befindet.
Frage 84:
E: netstat -an >> ports.txt hngt die neue Ausgabe von netstat an die beste-
hende Textdatei an.
zu A: netstat -an > ports.txt lscht den Inhalt der Textdatei, bevor die neue
Ausgabe von netstat gespeichert wird.
zu B: netstat -an | ports.txt versucht, die Ausgabe von netstat an das Pro-
gramm ports.txt weiterzugeben. Das wird auf eine Fehlermeldung hinauslaufen.
zu C: netstat -an > ports2.txt speichert die Ausgabe von netstat in einer neuen
Datei ab. Die Ausgabe sollte aber an die ursprngliche Datei angehngt werden.
zu D: netstat -an ||ports.txt wird versuchen, das Programm ports.txt auszu-
fhren, in dem Falle, dass netstat fehlschlgt. Wenn netstat vorhanden ist, wird
es also einfach ausgefhrt und gibt seine Ausgabe auf dem Monitor aus.
Frage 85:
D: > textdatei 2>&1 erfllt die Aufgabe genau. Die Ausgabe wird in die Textdatei
umgeleitet. 2>&1 sorgt dafr, dass zustzlich der Fehlerkanal (stderr) an den Stan-
dardausgabekanal (stdout) umgeleitet wird.
zu A: >> textdatei 2>&1 erfllt denselben Zweck. Sollte die Datei schon existie-
ren, dann wrde deren bestehender Inhalt nicht berschrieben. Die Aufgabe
besagt aber, dass die Datei noch nicht existiert und dass eine mglichst kurze
Option angegeben werden soll.
zu B: > textdatei 1>&2 und C: >> textdatei 1>&2 enthalten eine fehlerhafte
Umleitung fr den Fehlerkanal (stdout).
zu E: > textdatei 2>/1 enthlt ebenfalls eine fehlerhafte Umleitung fr den Feh-
lerkanal (stdout).
270
bungsfragen zu LPI 117-101
Frage 86:
B: cat datei | mail -s "eine Datei" exp@example.net und
C: mail -s "eine Datei" exp@example.net < datei
versenden beide den Inhalt der Datei mit dem Namen datei an den Mail-Empfn-
ger exp@example.net. In Antwort B wird die Ausgabe des cat-Befehls an das Pro-
gramm mail weitergeleitet. Es wird der Betreff (subject) angegeben und die Mail
versendet. In Antwort C wird die Datei durch den Redirektor zur Standard-
eingabedatei.
zu A: cat datei > mail -s "eine Datei" exp@example.net enthlt einen Redirek-
tor, wo eine Pipe erforderlich gewesen wre.
zu D: mail -s "eine Datei" exp@example.net > datei enthlt einen Redirektor,
der in die falsche Richtung zeigt.
zu E: sendmail -s "eine Datei" exp@example.net < datei enthlt flschlicher-
weise das Kommando sendmail. Hierbei handelt es sich aber nicht um einen
geeigneten Mailclient, sondern einen SMTP-Server.
Frage 87:
A: grep dhcp /var/log/messages | tee dhcpmessages ist die Lsung. Die Pipe
bergibt die Ausgabe des grep-Kommandos an tee. Dieses Programm bewirkt
eine Verzweigung wie bei einer T-Kreuzung nach stdout (normalerweise der Bild-
schirm) und zu der Datei dhcpmessages.
zu B: grep dhcp /var/log/messages > tee dhcpmessages und
zu C: grep dhcp /var/log/messages < tee dhcpmessages
Die Redirektoren sind hier falsch. Redirektoren knnen keine Ausgaben von Pro-
grammen an andere Programme bewirken.
zu D: tee grep dhcp /var/log/messages hier ist die Reihenfolge der Komman-
dos falsch, und die Pipe fehlt.
zu E: tee | grep dhcp /var/log/messages hier ist die Reihenfolge falsch. Es soll
nicht die Ausgabe von tee an grep weitergeleitet werden, sondern umgekehrt.
Frage 88:
xargs lst genau diese Aufgabe.
271
Antworten und Erklrungen zu den Prfungsfragen
Frage 89:
A: ps und C: top zeigen jeweils unter anderem die Prozess-ID laufender Prozesse
an.
zu B: free zeigt die Belegung des Arbeitsspeichers an.
zu D: df zeigt die Dateisystem bzw. Festplattenbelegung an.
zu E: jobs zeigt Jobs an, die im Hintergrund laufen. Die hierbei angezeigten Job-
nummern sind allerdings nicht mit Prozess-IDs zu vergleichen und eignen sich
deshalb auch nicht zum Beenden von Prozessen.
Frage 90:
E: pstree -p zeigt einen Prozessbaum an. In Klammern werden auch die jeweili-
gen PIDs der Prozesse angezeigt.
zu A: pstree -a zeigt auch einen Prozessbaum, aber es werden nicht die zugeh-
rigen PIDs, sondern bergebene Argumente angezeigt.
zu B: ps -aux zeigt keinen Prozessbaum, sondern eine Liste.
zu C: top zeigt laufende Prozesse dynamisch an, allerdings nicht grafisch.
zu D: uptime zeigt an, wie lange das System bereits luft.
Frage 91:
B: kill beendet den Prozess mit der angegebenen PID.
D: killall beendet den Prozess mit dem angegebenen Namen.
E: top zeigt dynamisch laufende Prozesse an. Durch Bettigen von k knnen aber
auch Prozesse beendet werden.
zu A: jobs zeigt Prozesse an, die im Hintergrund als Job abgearbeitet werden.
zu C: bg sorgt dafr, dass ein Job, der angehalten wurde, im Hintergrund fortge-
setzt wird.
Frage 92:
A: killall -9 mc, B: kill -s 9 18456 und E: kill -SIGKILL 18456 beenden den
Prozess jeweils mit Gewalt.
zu C: kill -SIGHUP 18456 fordert den Prozess lediglich auf, die Konfiguration neu
einzulesen.
272
bungsfragen zu LPI 117-101
zu D: kill -sigterm 18456 sendet dem Prozess eine Aufforderung, sich ordnungs-
gem zu beenden. Diese Aufforderung ist aber schon bei der Verwendung von
killall ignoriert worden und wird wahrscheinlich auch diesmal nicht zum Ziel
fhren.
Frage 93:
B: nohup sorgt dafr, dass ein Programm unabhngig vom Terminal weiter laufen
kann.
zu A: bg setzt ein Programm fort, das im Hintergrund angehalten wurde. Der Job
bleibt aber weiterhin im Hintergrund.
zu C: jobs zeigt im Hintergrund befindliche Programme, also Jobs an.
zu D: fg holt ein im Hintergrund befindliches Programm in den Vordergrund und
setzt dieses fort.
zu E: tee sorgt fr eine Verzweigung der Ausgabe eines Kommandos, normaler-
weise auf den Bildschirm und in eine Datei.
Frage 94:
uptime zeigt Ihnen genau diese Information an. Es wre zwar auch mglich, das
w-Kommando zu verwenden, aber hier wrden zustzlich nicht bentigte Infor-
mationen ber angemeldete Benutzer und deren Anmeldestatus angezeigt.
Frage 95:
C: free -m zeigt eine Speicherbelegung in Megabyte an.
zu A: free -h zeigt die Hilfe des Befehls free an. Das war eine Falle, wie Sie der
Erluterung zu Antwort B entnehmen knnen.
zu B: df -h zeigt die Festplattenbelegung in einer fr Menschen angenehm lesba-
ren Form (human-readable) an.
zu D: df -m zeigt die Festplattenbelegung in Megabyte an.
zu E: mem ist kein Linux-Kommando. Es zeigt die Speicherbelegung von MS DOS-
Systemen an.
Prfungstipp
Achten Sie auf Stolperfallen, wo gleich lautende Optionen in unterschiedlichen Pro-
grammen verschiedene Bedeutungen haben knnen.
273
Antworten und Erklrungen zu den Prfungsfragen
Frage 96:
D: (Strg) + (Z) anschlieend bg ist die richtige Antwort. (Strg) + (Z) schickt das
Programm in den Hintergrund, und das Kommando bg sorgt dafr, dass das Pro-
gramm im Hintergrund (background) fortgesetzt wird.
zu A: (Strg) + (C) verursacht einen Abbruch des Programms.
zu B: (Strg) + (Z) anschlieend jobs schickt das Programm in den Hintergrund
und zeigt anschlieend eine Liste der laufenden Jobs.
zu C: (Strg) + (Z) anschlieend fg schickt das Programm in den Hintergrund und
holt es mit fg (foreground) sofort wieder nach vorne.
zu E: (Strg) + (Z) schickt das Programm in den Hintergrund. Es wird dort aber im
Status angehalten bleiben.
Frage 97:
D: bg 2 sorgt fr eine Fortsetzung des Jobs mit der Jobnummer 2 im Hintergrund
(background).
zu A: fg 2 setzt den Job mit der Nummer 2 im Vordergrund (foreground) fort.
zu B: jobs zeigt lediglich die Jobliste an. Diese liegt aber bereits vor.
zu C: bg 3 setzt den Download im Hintergrund fort.
zu E: fg holt den Browser lynx wieder in den Vordergrund.
Frage 98:
A: nice -14 und B: nice -n 14 ordnen jeweils einen positiven nice-Wert von 14
zu. Das Programm wird anschlieend mit einer entsprechend niedrigeren Priori-
tt ausgefhrt.
zu C: renice -n 14 kann nur bei Programmen angewendet werden, die bereits
laufen. Die Prozessprioritt wrde hier ebenfalls abgesenkt werden.
zu D: nice -n -14 und E: nice --14 ordnen jeweils einen negativen nice-Wert zu.
Die Prozessprioritt wrde hierdurch sogar noch erhht werden.
Frage 99:
D: renice -15 8490 senkt die Ausfhrungsprioritt des Prozesses mit der PID
8490.
274
bungsfragen zu LPI 117-101
zu A: nice --12 8490 und E: nice -n 12 8490 knnen nicht verwendet werden,
weil nice die Prozessprioritt nur beim Start eines Programms beeinflussen kann.
Das Backup luft aber bereits.
zu B: bg sorgt fr die Fortsetzung von Jobs im Hintergrund, die im Status ange-
halten stehen.
zu C: renice -n 15 8490 legt den Wert fr die Prioritt des Prozesses mit 15 fest.
Frage 100:
B: nice, C: renice und E: top knnen jeweils in unterschiedlichen Situationen
Einfluss auf die Ausfhrungsprioritt eines Prozesses nehmen.
zu A: bg und D: fg dienen jeweils der Steuerung von Jobs, die im Hintergrund
laufen oder den Status angehalten aufweisen.
Frage 101:
D: grep -v ^$ logdatei > textdatei.txt und
E: cat logdatei |grep -v ^$ > textdatei.txt
sind die richtigen Kommandos fr diese Aufgabe. Das ^ ist das Zeichen fr einen
Zeilenanfang, und das $ steht fr ein Zeilenende. Wenn diese beiden Zeichen auf-
einander folgen, handelt es sich also um eine Leerzeile. Um die Ausgabe von grep
zu invertieren, wird die Option -v verwendet.
zu A: grep ^$ logdatei > textdatei.txt und
zu B: cat logdatei |grep ^$ > textdatei.txt
fehlt jeweils das invertierende -v. Deshalb wrden hier alle Leerzeilen gefunden
und in die Datei textdatei.txt geschrieben.
zu C: grep -v ^[#] logdatei > textdatei.txt sucht alle Zeilen einer Datei, die
keine Raute am Zeilenanfang aufweisen. Das ist eine sehr ntzliche Funktion zur
Analyse von Konfigurationsdateien, aber hier leider nicht die Aufgabe.
Frage 102:
A: grep "/home/meier/Dokumente" und
E: grep \/home\/meier\/Dokumente
lsen beide die Aufgabe. Das Zeichen Slash (/) muss in jedem Fall geschtzt wer-
den, damit es nicht von der Shell als Einleitung fr eine Option verstanden wird.
Die einfachste Lsung ist in Antwort A realisiert. Die komplette Zeichenkette in
275
Antworten und Erklrungen zu den Prfungsfragen
Doublequotes schtzt den kompletten Ausdruck. Die in Antwort B verwendete
Variante ist eleganter. Der Backslash (\) schtzt ein einzelnes Zeichen vor der
Interpretation durch die Shell. Es muss also in diesem Kommando dreimal mas-
kiert werden.
zu B: find \/home\/meier\/Dokumente ist vllig falsch, weil find nach Dateien
sucht und nicht nach regulren Ausdrcken.
zu C: grep //home//meier//Dokumente funktioniert nicht, weil zur Maskierung
ein Backslash (\) bentigt wrde und kein Slash (/).
zu D: grep /home/meier/Dokumente fehlt die Maskierung.
Frage 103:
E: grep [Gg]alileocomputing ist die richtige Lsung. Mit [Gg] wird genau eins
der beiden Zeichen im Suchausdruck erwartet.
zu A: grep -v [g]alileocomputing sucht nur nach dem Suchwort mit kleinem
g. Obendrein wird das Suchergebnis durch das -v invertiert.
zu B: grep ?alileocomputing ist vllig falsch. Das Fragezeichen bezeichnet das
null oder einmalige Vorkommen des vorangegangenen Zeichens. Es wrden hier
wahrscheinlich gar keine Treffer erzielt.
zu C: grep *alileocomputing ist ebenfalls falsch. Der Stern sorgt sowohl bei sed
als auch bei grep dafr, dass das vorangegangene Zeichen null mal oder beliebig
oft erwartet wird. Auch hier wrden wahrscheinlich gar keine Treffer erzielt.
zu D: grep -v [Gg]alileocomputing macht genau das Gegenteil von dem, was
erwartet wird, weil das -v das Ergebnis invertiert.
Frage 104:
A: :x, C: :wq und E: ZZ speichern jeweils die geffnete Datei und schlieen den
Editor.
Prfungstipp
Achten Sie auf die Wirkungsweise von Jokern. Die Programme grep und sed interpre-
tieren diese nmlich vllig anders als die Shell. Wenn Sie in den Antworten B und C
grep durch egrep ersetzen, kommen Sie nmlich noch einmal zu einem vllig anderen
Ergebnis. Das Beste wird sein, Sie experimentieren ein wenig mit den Wildcards in der
Shell (find, ls usw.) und vergleichen das Verhalten mit grep. Nur so bekommen Sie ein
Gefhl fr den richtigen Umgang mit Jokern.
276
bungsfragen zu LPI 117-101
zu B: :q! erzwingt die Beendigung des vi, ohne die geffnete Datei zu speichern.
Das ist eine gute Variante, wenn man eine Konfigurationsdatei in einen un-
brauchbaren Zustand versetzt hat.
zu D: :w speichert die Datei, beendet aber nicht den Editor.
Frage 105:
C: dd lscht die aktuelle Zeile, unabhngig von der Cursorposition.
zu A: p fgt den Inhalt der Zwischenablage unterhalb des Cursors ein.
zu B: P fgt den Inhalt der Zwischenablage oberhalb des Cursors ein.
zu D: D lscht den Text zwischen Cursor und Zeilenende.
zu E: yy fgt die aktuelle Zeile, unabhngig von der genauen Cursorposition, in
die Zwischenablage ein.
Frage 106:
A: vi +87 datei stellt den Cursor in Zeile 87, sobald die Datei geffnet ist.
zu B: vi 87 datei ffnet die Dateien 87 und datei.
zu C: vi -87 datei ergibt eine Fehlermeldung, weil der Bindestrich eine Option
einleitet und es keine Option 87 gibt.
zu E: vi +/87 datei stellt den Cursor in die erste Zeile, in der die Zahl 87 vor-
kommt, falls vorhanden.
Frage 107:
B: tune2fs -j /dev/sdb1 fgt einem ext2-Dateisystem ein Journal hinzu. Danach
ist die Konvertierung verlustfrei durchgefhrt.
zu A: mkfs -t ext3 /dev/sdb1 erzeugt ein neues ext3-Dateisystem. Die bestehen-
den Daten auf dem Datentrger wren nicht mehr zugreifbar.
zu C: mkfs -t ext2 -j /dev/sdb1 erzeugt ebenfalls ein neues ext3-Dateisystem.
zu D: mkfs.ext3 /dev/sdb1 erzeugt ebenfalls ein neues ext3-Dateisystem.
zu E: fdisk /dev/sdb1 startet das Partitionierungsprogramm.
Prfungstipp
Sie sollten in der Prfung auch mit solch ungewhnlichen Befehlszeilenoptionen fr den
vi vertraut sein. Selbst wenn man den vi schon jahrelang praktisch nutzt, kann man in
der Prfung bei solchen Fragen Probleme bekommen.
277
Antworten und Erklrungen zu den Prfungsfragen
Frage 108:
swapoff -a deaktiviert alle Gerte und Dateien, die fr Swapping verwendet wer-
den.
Frage 109:
B: du ist hierfr geeignet. Mit du -sh /home/* ermitteln Sie schnell den Daten-
sammler.
zu A: df zeigt die Belegung eingehngter Dateisysteme an. Sie knnen aber nicht
sehen, welche Verzeichnisse besonders viele Daten enthalten.
zu C: free zeigt die Belegung des Arbeitsspeichers an.
zu D: ps zeigt eine Momentaufnahme der laufenden Prozesse.
zu E: ls hilft hier nicht weiter. Man msste die angezeigten Dateigren (nach
ls -l) erst mhselig addieren. Das wrde viel Zeit beanspruchen.
Frage 110:
mount -a hngt alle Dateisysteme, die in der Datei /etc/fstab gelistet sind, ein.
Eine Ausnahme stellen die Dateisysteme dar, die mit dem noauto Schlsselwort
versehen sind.
Frage 111:
A: /etc/mtab, B: /proc/mounts und D: durch Eingabe von mount sind alle geeig-
net, die momentan eingehngten Dateisysteme aufzulisten.
zu C: /etc/fstab enthlt statische Informationen zu Dateisystemen, damit diese im
Bedarfsfalle leichter eingehngt werden knnen. Diese Datei ndert sich aber im
normalem Betrieb nicht selbst und kann deshalb keine Informationen ber aktu-
ell gemountete Gerte enthalten.
zu E: durch Eingabe von du wird man die bentigte Information nicht bekom-
men, weil lediglich eine Belegung der Dateisysteme angezeigt wird.
Frage 112:
umount /dev/sdd2 hngt den Datentrger aus. Es ist nicht ntig, den Mountpoint
vorher zu ermitteln, weil umount sowohl die Gertedatei als auch den Mount-
point als Parameter akzeptiert.
278
bungsfragen zu LPI 117-101
Frage 113:
C: quota zeigt einem Benutzer an, wie Quotas fr ihn konfiguriert sind und wie
weit er sein Kontingent bereits ausgeschpft hat.
zu A: edquota dient zum Bearbeiten der Quota-Einstellungen.
zu B: repquota erstellt einen Bericht ber die Quotas eines Dateisystems.
zu D: df zeigt die Belegung eingehngter Dateisysteme.
zu E: quotaon dient zur Aktivierung konfigurierter Quotas.
Frage 114:
A: edquota ist die richtige Antwort. Das Programm dient dem Editieren der User-
quotas.
zu B: repquota erstellt lediglich Berichte ber Quotas.
zu C: quota kann ein User verwenden, um seine eigenen Quota-Einstellungen zu
berprfen.
zu D: useradd fgt dem System einen neuen Benutzer hinzu.
zu E: free zeigt die Belegung des Arbeitsspeichers an.
Frage 115:
D: chown ndert den Besitzer von Dateien und Verzeichnissen.
zu A: chmod ndert die Zugriffsberechtigungen auf Dateien und Verzeichnisse fr
den Benutzer, die Gruppe und andere.
zu B: chgrp ndert die Besitzergruppe von Dateien und Verzeichnissen.
zu C: newgrp kann ein Benutzer verwenden, wenn er selbst in eine andere
Gruppe wechseln muss.
zu E: umask setzt die Maske fr die Erstellung neuer Dateien und Verzeichnisse.
Frage 116:
C: chmod u=rwx,g=rwx /Dokumente -R und E: chmod 770 /Dokumente -R ermglichen
jeweils die gewnschten Einstellungen. Die Option -R sorgt fr eine rekursive
Ausfhrung des Kommandos, so dass die Einstellungen auch fr alle Unterver-
zeichnisse und darin enthaltene Dateien gelten.
zu A: chmod 660 /Dokumente -R vergibt nur die Berechtigungen zum Lesen und
Schreiben in Dateien und Verzeichnissen. Es fehlen die Berechtigungen zum Aus-
fhren der Dateien und zum Wechseln in die Verzeichnisse.
279
Antworten und Erklrungen zu den Prfungsfragen
zu B: chmod 770 /Dokumente und
zu D: chmod u=rwx,g=rwx /Dokumente
In den Antworten B und D fehlen jeweils die rekursiven Ausfhrungen der
Befehle durch die Option -R. Die Kommandos wrden sich deshalb nur auf das
Verzeichnis /Dokumente selbst auswirken, nicht aber auf die Unterverzeichnisse
und die darin enthaltenen Dateien.
Frage 117:
E: chmod 4755 Programm setzt zustzlich zu den bentigten Berechtigungen das
SUID-Bit. Hierdurch wird das Programm immer im Sicherheitskontext seines
Besitzers ausgefhrt, auch wenn es von einem normalen Benutzer ausgefhrt
wird.
zu A: chmod 755 Programm setzt lediglich die normalen Berechtigungen fr das Pro-
gramm. Fr eine Ausfhrung mit Root-Rechten wird hier nicht gesorgt.
zu B: chown Programm ist das falsche Programm fr diese Aufgabe. Es fehlt auer-
dem der Operand.
zu C: chown root:root Programm legt den Besitzer und die Besitzergruppe fest.
Diese sind aber bereits korrekt festgelegt.
zu D: chmod 1755 Programm setzt zustzlich zu den Berechtigungen das Sticky Bit.
Diese Bit hat unter Linux nur Auswirkungen auf Verzeichnisse, nicht aber auf
Dateien.
Frage 118:
B: ln -s /Dokumente /home/franz/Doku erstellt einen Softlink mit dem Namen
Doku im Heimatverzeichnis des Benutzers.
zu A: ln /Dokumente /home/franz/Doku ergibt eine Fehlermeldung. Ohne die
Option -s wrde das System versuchen, einen Hardlink zu erstellen. Es knnen
aber nur Dateien hart verlinkt werden. Mit Verzeichnissen ist das nicht mglich.
zu C und D: ln -s /home/franz/Doku /Dokumente und ln /home/franz/Doku /
Dokumente sind beide falsch. Es muss zuerst das Verzeichnis und dann der Link
angegeben werden. Zustzlich fehlt bei der Antwort D die Option -s.
zu E: cp /Dokumente/* /home/franz/Doku -R wrde eine komplette Kopie des Ver-
zeichnisses bewirken. Das sollte aber vermieden werden.
280
bungsfragen zu LPI 117-101
Frage 119:
C: /var enthlt u.a. das Unterverzeichnis log, in dem sich die Protokolldateien
befinden. Da die Protokolldateien unkontrolliert anwachsen knnten, bekommt
/var in diesem Szenario eine eigene Partition zugewiesen.
zu A, B und C: /etc, /usr und /bin sind Verzeichnisse, in denen sich normalerweise
nicht besonders viel ndert. Sie bentigen daher auch keine eigene Partition.
zu E: /home ist blicherweise ein Kandidat fr eine eigene Partition, weil die
Datenmengen, die Benutzer abspeichern, absolut unberechenbar sind. Im vorlie-
genden Falle handelt es sich aber um einen Webserver. Es werden also wahr-
scheinlich keine Benutzer auf diesem System arbeiten, die /home fllen knnten.
Frage 120:
B: /home enthlt die Daten der Benutzer und sollte deshalb selbstverstndlich
regelmig gesichert werden.
C: /var ist auch regelmig zu sichern. Hier liegen zum Beispiel die Warteschlan-
gen des Mailsystems und bei vielen Distributionen das Hauptverzeichnis des
Webservers.
zu A: /etc enthlt die Konfigurationsdateien. Diese sollte man zwar auch sichern,
allerdings lediglich nach Konfigurationsnderungen. Das sollte bei einem Pro-
duktionsrechner eher selten der Fall sein.
zu D: /boot enthlt hauptschlich Kernel und den GRUB. Auch hier ndert sich
selten etwas, weshalb eine regelmige Sicherung nicht ntig ist.
zu E: /proc ist kein Dateisystem auf der Festplatte. Man kann hier also auch keine
eigene Partition zur Verfgung stellen.
LPI 102
283
Was eine Shell ist und wie man sie benutzt, wissen Sie ja bereits. Jetzt wer-
den Sie lernen, an der Shell einige individuelle Anpassungen vorzunehmen
und Skripte zu schreiben, welche die alltgliche Arbeit erleichtern. Opti-
mieren Sie Ihre Arbeitsumgebung!
Topic 105: Shells, Skripte und
Datenverwaltung
105.1 Die Shell-Umgebung anpassen und verwenden
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, Shell-Umgebungen an die
Anforderungen der Benutzer anzupassen. Sie sollten ebenfalls in der Lage sein,
globale und nutzerindividuelle Voreinstellungen zu ndern.
Wichtigste Wissensgebiete:
Umgebungsvariable (etwa PATH) beim Anmelden oder Erzeugen einer neuen
Shell setzen
Bash-Funktionen fr hufig gebrauchte Kommandofolgen erstellen
Skelettverzeichnisse fr neue Benutzerkonten pflegen
den Kommando-Suchpfad mit den richtigen Verzeichnissen setzen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/profile
env
export
set
unset
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
284
Shells, Skripte und Datenverwaltung 105
~/.bash_logout
function
alias
Allgemeines
Linux ist wohl das anpassungsfhigste Betriebssystem, das es gibt. Das trifft auch
auf die verschiedenen Linux-Shells zu, die Sie sehr leicht auf Ihre eigenen Bedrf-
nisse anpassen knnen. Alles, was Sie dazu brauchen, sind ein paar Befehle, Vari-
ablen und Konfigurationsdateien. Aber was ist berhaupt eine Shell?
Verwendung von Shells
Eine Shell ist zunchst einmal ein textbasiertes Programm. Sie hat mehrere Auf-
gaben. Die wichtigste Aufgabe einer Shell ist es, als Schnittstelle zwischen Benut-
zer und Computer zu fungieren. Der Benutzer kann durch die Shell auch mit dem
Kernel kommunizieren. Wenn man jetzt noch bedenkt, dass der englische Begriff
Kernel zu Deutsch Kern heit und dass eine Shell eine Schale ist, wird wohl sehr
schnell klar, wie diese beiden Fachbegriffe entstanden sind und wo eine solche
Shell im Linux-Gefge angesiedelt ist.
Eine weitere Aufgabe von Shells ist es, als Umgebung fr die Ausfhrung von
Skripten und Programmen zu dienen. Auerdem verstehen Shells unterschied-
liche Befehle, so dass man sie auch noch als Programmiersprache betrachten
kann. Es haben sich im Laufe der Jahre unterschiedlichste Shells hervorgetan:
bash ist die Bourne Again Shell. Hierbei handelt es sich um ein Wortspiel: Zum
einen handelt es sich, phonetisch betrachtet, um eine wiedergeborene Shell
(born again shell), zum anderen ist sie schon wieder (again) eine Bourne-Shell.
Sie ist nmlich vollstndig abwrtskompatibel zu sh, die Stephen Bourne
bereits 1977 programmierte.
sh ist demzufolge der Vorfahre der heute weit verbreiteten Bash. Sie wird
noch recht hufig eingesetzt, insbesondere bei der Ausfhrung von Skripten.
ksh steht fr Korn-Shell und ist ein gelungener Versuch, eine Bourne-Shell mit
einer C-Shell zu kombinieren.
csh ist der Syntax nach an die Programmiersprache C angelehnt.
zsh hnelt der ksh, bietet aber einen erheblich hheren Funktionsumfang.
Es gibt noch weitere Shells, aber diese kleine Auflistung soll reichen, um Ihnen
einen ersten Einblick zu geben. Im weiteren Verlauf des Buches soll jedoch fast
ausschlielich die Bash thematisiert werden. Einerseits ist das die heutzutage
285
Die Shell-Umgebung anpassen und verwenden 105.1
bedeutendste Shell, und andererseits befassen sich die Prfungsfragen aus-
schlielich mit der Konfiguration der Bash.
Umgebungsvariablen und Shellvariablen
In diesem und den folgenden Abschnitten soll es um die Umgebung gehen, die
Ihnen eine Shell bietet, und darum, wie Sie diese Umgebung konfigurieren.
Zuerst einmal wren hier die Variablen zu nennen. Die Inhalte von Variablen sor-
gen dafr, dass laufende Programme und Skripte sich selbst mit kleinen Informa-
tionen versorgen knnen, ohne dass der Benutzer diese jedes Mal explizit ange-
ben muss. Hierbei wird unterschieden zwischen Umgebungsvariablen und
Shellvariablen. Die Unterschiede zwischen diesen beiden Variablentypen liegen
einerseits darin, durch welche Konfigurationsdateien sie deklariert werden, und
demzufolge, wann sie durch welches Programm ausgewertet werden, und ande-
rerseits in ihrem Wirkungsbereich:
Umgebungsvariablen gelten fr alle Shells, die ein Benutzer verwendet. Die
Inhalte dieser Variablen werden auerdem vererbt. Das bedeutet, dass beim
Aufruf einer Subshell (egal, ob durch ein Skript oder den Benutzer) ein auto-
matischer Export der Variablen in diese Subshell stattfindet. Bei Umgebungs-
variablen werden normalerweise Grobuchstaben verwendet. Das hat keinen
technischen Hintergrund, sondern dient lediglich der bersichtlichkeit und
Auffindbarkeit fr den Benutzer.
Shellvariablen mssen in jeder Shell, die durch den Benutzer oder ein Skript
gestartet wird, neu deklariert werden. Es findet standardmig keine Verer-
bung statt. Gem Konvention werden Shellvariablen klein geschrieben.
Beachten Sie, dass die Bash zwischen Gro- und Kleinschreibweise unterscheidet.
Die Konventionen bezglich der Schreibweisen bei Umgebungs- oder Shellvari-
ablen werden von einigen Distributionen nicht eingehalten. Die Deklaration und
Abfrage einer Shellvariablen erfolgt recht einfach:
archangel:~ # a=5
archangel:~ # b=6
archangel:~ # let c=$a+$b
archangel:~ # echo $c=$a+$b
11=5+6
In diesem Beispiel werden also zunchst die Variablen A und B mit den Werten 5
und 6 gefllt. Die dritte Zeile sorgt dafr, dass der Variablen C das Ergebnis der
Summe aus $A und $B bergeben wird. Die letzte Zeile gibt die komplette Ope-
ration aus.
286
Shells, Skripte und Datenverwaltung 105
Die Inhalte einer Variablen bleiben innerhalb einer Shell erhalten. Sie knnen
also die Variable wiederholt abrufen oder verwenden:
archangel:~ # echo $c
11
Wird eine Subshell aufgerufen, so steht diese Variable nicht mehr zur Verfgung,
weil es sich nicht um eine Umgebungsvariable handelt. Es ist aber mglich, eine
Variable fr eine Subshell verfgbar zu machen, indem man diese exportiert.
Merken Sie sich fr die Prfung unbedingt, dass ein solcher Export nur an unter-
geordnete, jedoch nie an bergeordnete Shells erfolgen kann. Ein Export bewirkt
nmlich nicht, wie oftmals flschlich behauptet, dass aus einer Shellvariablen
eine Umgebungsvariable wird. Der Exportbefehl kann auf zwei Arten durchge-
fhrt werden:
archangel:~ # export c
archangel:~ # sh
sh-3.00# echo $c
11
In der gerade dargestellten ersten Variante wurde die Variable C aus dem voran-
gegangenen Beispiel exportiert. Anschlieend wurde mit sh eine neue Subshell
geffnet und dann mit echo $C die Variable auf dem Bildschirm ausgegeben. Die
zweite Methode sieht folgendermaen aus:
archangel:~ # export Z=1000
archangel:~ # sh
sh-3.00# echo $Z
1000
sh-3.00#
Diesmal ist die Deklaration der Variablen und der Export mit nur einem einzigen
Befehl durchgefhrt worden. Mit echo $Z wird wieder demonstriert, dass der
Inhalt der Variablen in der Ziel-Shell angekommen ist.
Mit dem Befehl set knnen Sie ohne Angabe von Parametern nachsehen, welche
Umgebungs- und Shellvariablen Ihre aktuelle Shell gerade verwendet. Am besten
geben Sie die Ausgabe an less weiter, damit Sie den Inhalt in Ruhe untersuchen
knnen. Eine gekrzte Ausgabe knnte Folgendes enthalten:
archangel:~ # set | less
A=5
B=6
BASH=/bin/bash
C=11
HISTSIZE=1000
287
Die Shell-Umgebung anpassen und verwenden 105.1
HOME=/root
HOSTNAME=archangel
MANPATH=/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/gnome/
share/man
PAGER=less
PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/
bin:/usr/X11R
Sie finden hier also eine Menge alter Bekannter wieder, die zum Teil auch fr die
Prfung bekannt sein mssen. Besonders die Verwendung von PATH ist ein
beliebter Kandidat fr Prfungsfragen.
Es ist natrlich auch mglich, die Umgebungsvariablen einzusehen. Das
geschieht mit dem Kommando env. Auch hier ist es ratsam, die Ausgabe mit less
zu betrachten. Sie werden feststellen, dass es eine groe Schnittmenge zwischen
Shell- und Umgebungsvariablen gibt.
Schlielich sollten Sie noch wissen, wie man Variablen wieder lscht. Das
geschieht mit dem Befehl unset. Um die Variablen aus den Beispielen weiter
oben zu entfernen, geben Sie Folgendes ein:
archangel:~ # unset A
archangel:~ # unset B
archangel:~ # unset C
Zur berprfung:
archangel:~ # set | less
BASH=/bin/bash
HISTSIZE=1000
...
Die Variablen A, B und C wurden gelscht. Alternativ wre auch eine Neuanmel-
dung mglich gewesen, denn es handelt sich um Shellvariablen, die bei einer
Abmeldung nicht erhalten bleiben.
Aliase und Funktionen
Aliase
Wenn Sie Befehle in Kombination mit bestimmten Parametern immer wieder
verwenden, ist es empfehlenswert, einen Alias zu definieren. Das ist auch hilf-
reich, wenn ein Befehl in sich sehr lang ist. Ein Beispiel: Wenn man oft Tar-Balls
aus dem Internet herunterladen und entpacken muss, bentigt man immer wie-
der das Kommando tar xvzf <archivname.tgz>. Es wre doch viel einfacher,
nur ein einziges oder zumindest wenige Zeichen hierfr zu verwenden. Es lohnt
sich also, einen Alias anzulegen:
288
Shells, Skripte und Datenverwaltung 105
archangel:~ # alias tx="tar -xvzf"
Jetzt kann ein Tar-Ball einfach mit dem Kommando tx <archivname.tgz> extra-
hiert und ausgepackt werden.
Es ist auch mglich, mehrere Kommandos in einem einzigen Alias zu kombinie-
ren. In einem solchen Fall mssen diese Kommandos durch Semikolons vonein-
ander getrennt werden. Hier ein Beispiel:
archangel:~ # alias frei="free; df"
archangel:~ # frei
total used free shared buffers cached
Mem: 13268 471568 41700 0 109120 202360
-/+ buffers/cache: 160088 353180
Swap: 755044 0 755044
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 18928028 7795076 10171464 44 % /
tmpfs 256632 0 256632 0 % /dev/shm
/dev/hda1 54416 7541 44066 15 % /boot
/dev/hda4 58105324 24807836 33297488 43 % /storage
Auf diese Art wird mit einem einzigen Befehl die Festplatten- und Speicherbele-
gung berprft.
Besonders weit verbreitet und in manchen Distributionen schon von Hause aus
integriert, sind die folgenden Aliase:
alias ..='cd ..'
alias ...='cd ../..'
alias dir='ls -l'
alias la='ls -la'
alias ll='ls -l'
alias md='mkdir -p'
alias o='less'
alias rd='rmdir'
alias unmount='echo "Error: Try the command: umount" 1>&2; false'
alias which='type -p'
Aus diesen Beispielen kann man lernen, wie man sich das Leben leicht macht.
Die beiden Verzeichniswechsel sind nette Abkrzungen. Fr alte DOS-Benutzer
sind die wichtigsten DOS-Befehle (dir, md, rd) mit Aliasen in Linux berfhrt
worden. Der viel verwendete ls-Befehl bekommt hier auch einige Abkrzungen
mit auf den Weg. Das Kommando unmount gibt es nicht, ist aber ein beliebter
Tippfehler. Deshalb gibt ein Alias hier eine Fehlermeldung aus. Mit einem einfa-
chen o wird der wichtigste Pager gestartet. Zu guter Letzt sehen Sie, dass Sie
schon unbewusst in einem vorangegangenen Kapitel mit dem Alias fr type p
289
Die Shell-Umgebung anpassen und verwenden 105.1
gearbeitet haben: Das Kommando which ist ein Alias. Wenn Sie nun wissen wol-
len, welche Aliase Ihr System zurzeit verwendet, geben Sie einfach den Befehl
alias ohne Parameter ein. Es folgt dann eine Auflistung. Die Definition der Ali-
ase geht bei einer Neuanmeldung am System verloren. Wie Aliase dauerhaft ein-
gerichtet werden, wird im Kapitel weiter unten beschrieben.
Funktionen
Eine der unangenehmsten Einschrnkungen, die ein Alias mit sich bringt, ist die
Tatsache, dass bergabewerte ($1, $2 usw.) nur einmal ausgewertet werden kn-
nen. Bei einer Funktion gibt es diese Einschrnkung nicht. Man knnte eine
Funktion durchaus mit einem kleinen Skript vergleichen. Der Begriff Funktion
entstammt der Programmierung, und eigentlich handelt es sich um ein Unterpro-
gramm, das man fr wiederkehrende Aufgaben verwenden kann. Eine Funktion
in einer Shell kann sowohl von einem Benutzer als auch von einem Skript aufge-
rufen werden. Der Aufbau einer Funktion sieht immer so aus:
function Funktionsname()
{
Befehl 1
Befehl 2
...
Befehl n
}
Der Befehl function selbst kann auch einfach weggelassen werden, weil die Bash
an den beiden Klammern erkennt, dass es sich um eine Funktion handelt. Wenn
Sie den Befehl function dennoch verwenden, knnen Sie alternativ die Klam-
mern direkt hinter dem Namen der Funktion weglassen. Es soll hier aber im Fol-
genden die korrekte Syntax angewendet werden. Das Beispiel demonstriert, dass
es mit einer Funktion sogar mglich ist, Rechenoperationen auszufhren:
archangel:/ # function addiere ()
> {
> let summe=$1+$2
> echo -e "Die Summe ist $summe"
> }
archangel:/ # addiere 3 4
Die Summe ist 7
Es wurde eine Funktion mit dem Namen addiere erstellt. Die geschweiften Klam-
mern sorgen dafr, dass diese mehrzeilige Anweisung berhaupt als ein einziger
Befehl interpretiert wird. Die Zeile let summe=$1+$2 sorgt dafr, dass der Variab-
len summe die Summe aus den beiden bergabevariablen $1 und $2 bergeben
290
Shells, Skripte und Datenverwaltung 105
wird. In der nchsten Zeile erfolgt dann die Ausgabe. Es ist auch mglich, eine
Funktion in einer einzigen Zeile zu erstellen:
archangel:/
# function addiere { let summe=$1+$2; echo "Die Summe ist
$summe"; }
Diese Methode wird jedoch von den meisten Benutzern als unbersichtlich emp-
funden.
Bei der Vergabe einer Bezeichnung fr Ihre Funktionen sollten Sie sicherheitshal-
ber feststellen, ob es nicht schon ein Kommando mit dieser Bezeichnung gibt. Im
Extremfall knnen Sie sogar eine Funktion genauso benennen wie ein in der
Funktion selbst vorkommendes Bash-Kommando. Das lsen Sie folgendermaen:
function ls ()
{
builtin ls lisa
}
Damit die Funktion sich nicht versehentlich selbst aufruft, wird bei der bergabe
des Kommandos mit builtin klargestellt, dass es sich hier um ein bash-internes
Kommando handelt. Es wrde sonst zu einer Endlosschleife kommen, die bei
jedem Aufruf an sich selbst Arbeitsspeicher anfordert. Das kann sogar zum
Absturz des gesamten Systems fhren.
Konfigurationsdateien der Bash
Fr die Bash gibt es gleich eine ganze Reihe von Konfigurationsdateien, deren
Verwendungszweck Sie fr die Prfung kennen mssen. Es folgt nun eine Auflis-
tung der fr die Prfung wesentlichen Dateien in Reihenfolge ihrer Ausfhrung.
Denken Sie daran, dass es in unterschiedlichen Linux-Distributionen auch zu
unterschiedlichen Konstrukten der Konfigurationsdateien kommen kann. Es
lohnt sich also, nach hnlich lautenden Dateien Ausschau zu halten und in der
Dokumentation zur jeweiligen Distribution nachzusehen, wie diese die Konfigu-
rationsdateien nutzt. Eine erste grobe Unterscheidung sollten Sie sich dringend
fr die Prfung merken: Konfigurationsdateien, die fr alle Anwender Gltigkeit
haben, befinden sich im Verzeichnis /etc und beginnen niemals mit einem Punkt.
Die individuellen Konfigurationsdateien fr den jeweiligen User befinden sich
im entsprechenden Heimatverzeichnis und beginnen immer mit einem Punkt.
Allein durch diese Unterscheidung knnen Sie bei der Prfung oft schon etliche
falsche Antworten ausschlieen. Eine Datei /etc/.bashrc kommt als Konfigurati-
onsdatei genauso wenig infrage wie eine Datei mit der Bezeichnung /home/udo/
profiles.
291
Die Shell-Umgebung anpassen und verwenden 105.1
Systemweite Konfigurationsdateien
Die systemweiten Konfigurationsdateien sind fr jeden Benutzer gltig, der sich
am System anmeldet. Die beiden gngigsten sind:
/etc/profile ist die erste Konfigurationsdatei, die bei der Anmeldung (fr die
Login-Shell) eines Benutzers eingelesen wird. Sie enthlt erste Umgebungsva-
riablen und (fr die Prfung besonders wichtig!) die erste PATH-Anweisung.
nderungen in dieser Datei erfordern eine neue Anmeldung des Benutzers.
/etc/bashrc kann von der .bashrc eines Benutzers geladen werden. Sie enthlt
systemweite Einstellungen, Aliase und Funktionen. Diese Datei wird beim
Start jeder Shell neu eingelesen und erfordert deshalb nach nderung keine
Neuanmeldung des Benutzers.
Manche Distributionen verwenden auch noch andere Konfigurationsdateien.
SuSE und Debian verwenden z.B. eine bash.bashrc, die nicht bearbeitet werden
sollte, weil diese ohnehin von Konfigurationsfrontends modifiziert wird. Statt-
dessen soll die Datei bash.bashrc.local bearbeitet werden. Fr die Prfungen sind
solche Sonderflle nicht von Bedeutung.
Konfigurationsdateien fr den Benutzer
Die folgenden Dateien befinden sich im Heimatverzeichnis eines jeden Benutzers
und drfen auch durch seinen Besitzer modifiziert werden. Damit weniger ver-
sierte Benutzer nicht durch diese Dateien irritiert werden, sind diese mit einem
Punkt vor einer Auflistung mit Dateibrowsern geschtzt worden. Die folgende
Auflistung entspricht auch der Ausfhrungsreihenfolge (vorausgesetzt, die
Dateien sind in der jeweiligen Distribution berhaupt vorhanden).
~/.bash_profile wird (falls vorhanden) nur bei einer Neuanmeldung eingelesen
und sofort nach /etc/profile ausgefhrt. Sie beinhaltet zustzliche Pfadanwei-
sungen (z.B. das Heimatverzeichnis), den zu verwendenden Standardeditor
und benutzerspezifische Umgebungsvariablen.
~/.bash_login ist eine Alternative zu .bash_profile und wird auch nur dann
abgearbeitet, wenn die Datei .bash_profile nicht existiert. Auch diese Datei
wird nur whrend der Anmeldung verwendet. Der Inhalt und Verwendungs-
zweck entspricht der .bash_profile.
~/.profile ist die ursprngliche Konfigurationsdatei der Bash. Sie wird nur
whrend der Anmeldung (fr die Login-Shell) eingelesen, und das auch nur
dann, wenn weder eine .bash_profile- noch eine .bash_login-Datei im Ver-
zeichnis des Benutzers existieren. Inhalt und Verwendungszweck entsprechen
der .bash_profile und .bash_login.
292
Shells, Skripte und Datenverwaltung 105
~/.bashrc ist die andere, ursprngliche Konfigurationsdatei der Bash. Sie wird
in jedem Fall eingelesen, und zwar auch beim Aufruf einer neuen Shell. Nach
nderungen in dieser Datei ist entsprechend keine Neuanmeldung des Benut-
zers erforderlich. Sie beinhaltet im Wesentlichen Aliase und Funktionen.
~/.bash_logout ist eine optionale Datei, die ausgefhrt wird, wenn der Benut-
zer sich abmeldet. Sie knnte zum Beispiel den Monitor lschen.
~/.inputrc enthlt Definitionen, die die Tastatur betreffen, z.B. der Verwen-
dungszweck von Funktionstasten u.. Es ist auch mglich, in dieser Datei
Hotkeys fr hufig verwendete Befehle zu definieren. Zum Beispiel knnte
man mit (Strg) + (H) ins Heimatverzeichnis wechseln wollen. Das erreichen
Sie durch den Eintrag Control-h: "cd ~"
Beachten Sie bitte, dass es hier wiederum erhebliche distributionsspezifische
Unterschiede gibt. Eine systemweite /etc/inputrc ist heutzutage nahezu Standard
bei fast allen Systemen.
Das Skeleton Verzeichnis /etc/skel
Ein Skeleton ist, wie Sie wahrscheinlich schon vermutet haben, ein Knochenge-
rst. Man kann das Skeleton-Verzeichnis als eine Vorlage fr das Heimatver-
zeichnis eines neuen Benutzers betrachten. Beim Erstellen eines neuen Benut-
zerkontos mit useradd -m willi wird, die richtigen Standardeinstellungen
vorausgesetzt, ein Verzeichnis namens /home/willi erstellt. Der Inhalt des Skele-
ton-Verzeichnisses wird dann in das Verzeichnis /home/willi kopiert, und
abschlieend werden die Berechtigungen fr das Verzeichnis und dessen Inhalt
auf den neuen Benutzer abgestimmt. Der Speicherort fr Skeleton ist normaler-
weise /etc/skel. Auch hier kann es in Abhngigkeit von der verwendeten Distri-
bution zu Unterschieden kommen.
105.2 Einfache Skripte anpassen oder schreiben
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, existierende Skripte anzupas-
sen oder einfache neue Bash-Skripte zu schreiben.
Wichtigste Wissensgebiete:
Standard-sh-Syntax verwenden (Schleifen, Fallunterscheidungen)
Kommandosubstitution verwenden
293
Einfache Skripte anpassen oder schreiben 105.2
Rckgabewerte auf Erfolg, Misserfolg oder andere von einem Programm gelie-
ferte Informationen prfen
situationsabhngig Mail an den Superuser senden
den richtigen Skript-Interpreter ber die Shebangzeile (#!) whlen
den Ort, die Eigentmerschaft, die Ausfhrungs- und SUID-Rechte von Skrip-
ten verwalten
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
for
while
test
if
read
seq
Allgemeines
Bisher haben Sie schon gesehen, dass Sie durch die Verwendung von Variablen, Ali-
asen und Funktionen eine Menge Zeit sparen knnen. Aber die Shell bietet noch
viel mehr Mglichkeiten. Wenn Sie in der Lage sind, Skripte zu erstellen, knnen
Sie nicht nur die Beschrnkungen berwinden, denen Aliase oder Funktionen
unterliegen, sondern Sie knnen auch alltgliche Aufgaben vollautomatisieren.
Eigentlich ist das Schreiben eigener Skripte relativ einfach. Sie knnen alle Kom-
mandos, die Sie bisher in diesem Buch gelernt haben und noch lernen werden, dazu
verwenden. Das bedeutet, dass Sie schon eine Menge Befehle kennen, die Sie fr
die Programmierung bentigen. Es sind nur noch ein paar kleine Kenntnisse ber
Programmverzweigungen und Schleifen notwendig, und schon knnen Sie pro-
grammieren. Ich empfehle Ihnen die Verwendung von vi, damit Sie gleichzeitig
ein wenig Praxis in der Benutzung dieses weit verbreiteten Editors bekommen.
Ausfhren eines Skripts
Bevor es losgehen kann, sollten Sie erst einmal wissen, wie man ein Skript aus-
fhrt. Schlielich ist ein Skript eigentlich nur eine Textdatei und sollte wohl kaum
ausfhrbar sein. Es gibt mindestens drei grundlegend verschiedene Methoden,
die am folgenden Beispielskript demonstriert werden sollen:
# Addiert zwei Werte
let summe=$1+$2
echo "Die Summe aus $1 und $2 ist $summe"
294
Shells, Skripte und Datenverwaltung 105
Es handelt sich hier um drei Textzeilen, die in einer Datei mit der Bezeichnung
add stehen. Der Verwendungszweck hnelt einem vorangegangenen Beispiel mit
Aliasen. Sie sollten sich brigens von vorneherein angewhnen, am Anfang eines
Skripts dessen Verwendungszweck zu kommentieren. Als Kommentarzeichen
dient bei der Bash, wie bei vielen anderen auch, das Hash-Zeichen #. Um diese
Datei ausfhren zu knnen, knnen Sie sie mitsamt den bentigten Parametern
an die Bash bergeben:
archangel:~ # /bin/bash /storage/scriptdemo/add 5 6
Die Summe aus 5 und 6 ist 11
Eine zweite Mglichkeit ist die Ausfhrung mit dem Kommando source. Hierbei
handelt es sich um ein bash-internes Kommando.
archangel:~ # source /storage/scriptdemo/add 5 6
Die Summe aus 5 und 6 ist 11
Das Ergebnis ist dasselbe. Die eleganteste Lsung ist jedoch, aus der Textdatei ein
ausfhrbares Shell-Skript zu machen. Dazu sind zwei Arbeitsschritte ntig, die
gerne in der LPI-Prfung thematisiert werden. Zunchst muss die Datei ausfhr-
bar gemacht werden.
archangel:/storage/scriptdemo # ls -l
...
-rw-r--r-- 1 root root 92 Aug 24 16:52 add
...
rw-r-r sind die Standardberechtigungen fr eine neue Datei. Also muss mit
chmod das Attribut fr die Ausfhrbarkeit hinzugefgt werden.
archangel:/storage/scriptdemo # chmod a+x add
archangel:/storage/scriptdemo # ls -l
...
-rwxr-xr-x 1 root root 92 Aug 24 16:52 add
...
Grozgig ist hier die Ausfhrungsberechtigung gleich fr alle vergeben worden.
Das Ergebnis zeigt die erneute Ausgabe von ls. Der nchste Schritt ist das Einf-
gen der Shebangzeile. Diese teilt der Shell mit, dass es sich um ein ausfhrbares
Programm handelt und welche Umgebung fr das Skript bentigt wird. Das fer-
tige Skript sieht so aus:
#!/bin/bash
# Addiert zwei Werte
let summe=$1+$2
echo "Die Summe aus $1 und $2 ist $summe"
295
Einfache Skripte anpassen oder schreiben 105.2
Das Skript kann jetzt durch einfaches Aufrufen ausgefhrt werden wie jedes
andere Programm auch. Der Hash ist diesmal ausnahmsweise kein Kommentar-
zeichen. Die Kombination #! zeigt der Bash die Ausfhrbarkeit der Datei an. Dar-
auf folgt die Angabe des Interpreters /bin/bash. In dieser Zeile knnen auch
andere Interpreter stehen. Wenn Sie Dateien mit der Erweiterung pl auf Ihrem
Computer finden, dann handelt es sich wahrscheinlich um Perl-Skripte. Diese tra-
gen dann die Shebangzeile #!/usr/bin/perl. Ein falsch ausgewhlter Interpreter
fhrt zu einer falschen Interpretation des Skripts und somit zu unerwnschten
Ergebnissen.
Ausfhrungsberechtigung
chmod 700
Sowohl fr die Praxis als auch fr die Prfung ist es wichtig, festzulegen, wer ein
Programm berhaupt ausfhren darf. Im vorangegangenen Beispiel ist grozgig
dafr gesorgt worden, dass das Beispielskript von jedem beliebigen Anwender
ausgefhrt werden kann. Das ist bei einem Programm, das lediglich zwei Zahlen
addieren kann, auch nicht als sonderlich riskant einzustufen. Die Methoden der
Vergabe von Dateisystemberechtigungen sind Ihnen schon aus dem ersten Teil
des Buches bekannt und sollen hier auch nicht unntigerweise wiederholt wer-
den. Es sei nur darauf hingewiesen, dass ein Skript, das administrative Aufgaben
durchfhrt, grundstzlich mit chmod 700 <scriptname> aktiviert wird. So kann es
ein normaler Benutzer weder lesen noch ausfhren.
SUID-Bit
Auch dieses Thema stellt lediglich eine kurze Erinnerung an bereits behandelte
Methoden dar. In der Prfung wird im Zusammenhang mit ausfhrbaren Pro-
grammen gerne nach dem SUID-Bit gefragt. Es bewirkt, wie Sie vielleicht noch
wissen, dass ein Programm im Sicherheitskontext des Besitzers dieses Programms
ausgefhrt wird und nicht, wie sonst blich, im Sicherheitskontext dessen, der es
aufruft. Das SUID-Bit setzen Sie folgendermaen:
archangel:/storage/progdemo # chmod 4700 xy-prog
archangel:/storage/progdemo # ls -l
...
-rws------ 1 root root 92 Aug 24 17:30 xy-prog
...
Das kleine s in der Spalte rws------ zeigt, dass das SUID-Bit gesetzt ist. Diese
Methode kann verwendet werden, wenn ein normaler Benutzer regelmig eine
Aufgabe ausfhren muss, fr die Root-Rechte erforderlich sind. Denken Sie auch
in der Praxis daran, dass diese Vorgehensweise als gefhrlich einzustufen ist.
296
Shells, Skripte und Datenverwaltung 105
Position eines Skripts
Position im Dateisystem
Wo ein Skript auf der Festplatte abgelegt werden sollte, hngt von verschiedenen
Faktoren ab. Wenn das Skript sehr oft benutzt werden soll, macht es Sinn, ein
Verzeichnis auszuwhlen, auf das die PATH-Variable zeigt. Am besten sehen Sie
einfach noch einmal mit echo $PATH nach. Der Pfad /usr/bin ist normalerweise
eine gute Wahl besonders, wenn das Skript systemweit fr jeden zugnglich
sein soll. Sollte es sich um ein Skript handeln, das administrative Eingriffe durch-
fhrt oder aus anderen Grnden nicht fr normale Benutzer anwendbar sein
sollte, ist /usr/sbin ein gutes Verzeichnis.
Position im Prozessbaum
Wenn Sie ein Skript ausfhren, dann sorgt die Shebangzeile (#!) dafr, dass eine
neue Shell aufgerufen wird. Das zu bercksichtigen ist wichtig, weil Shellvariab-
len, die nicht vorher exportiert wurden, in einer Subshell auch nicht zur Verfgung
stehen. Umgekehrt gestaltet sich das Ganze noch schwieriger, weil nach Beendi-
gung des Skripts die Variablen, die im Skriptverlauf gesetzt wurden, nicht mehr
existieren. Ein Export ist auch nicht mglich, weil die Exportfunktion nur auf
Subshells wirkt und nicht auf bergeordnete Shells. Das ist eine Tatsache, die Sie
sich auch fr die Prfung unbedingt merken sollten. Wenn die Variablen eines
Skripts also auch nach dessen Beendigung noch von Belang sein sollten, mssen
diese in eine Datei geschrieben werden. Hier bietet sich /tmp als Zwischenlager an.
bergabevariablen und Rckgabewerte
Wenn man ein Skript schreibt, so wird man diesem, je nach Art der Aufgabenstel-
lung, eventuell beim Start Werte bergeben. Dafr gibt es festgelegte Variablen,
die in den vorangegangenen Beispielen bereits verwendet wurden. Das folgende
Skript wird die Wirkung der Variablen demonstrieren.
#!/bin/sh
#Gibt Variablen aus
echo Das script wurde mit $0 gestartet.
echo Sie haben $# Parameter bergeben.
echo Der erste bergabewert war $1.
echo Der zweite bergabewert war $2.
Murks
echo Der aktuelle Errorlevel ist $?.
exit 0
Dieses Skript enthlt die Variablen $0, $1, $2 und $?, deren Bedeutung gleich
nach Ausfhrung des Skripts mit zwei Zahlen als bergabeparametern geklrt
werden soll.
297
Einfache Skripte anpassen oder schreiben 105.2
archangel:/storage/scriptdemo # ./vartest 47 11
Das script wurde mit ./vartest gestartet.
Sie haben 2 Parameter bergeben.
Der erste bergabewert war 47.
Der zweite bergabewert war 11.
./vartest: line 7: Murks: command not found
Der aktuelle Errorlevel ist 127.
Die Variable $0 enthlt den Namen des aufrufenden Programms mitsamt dem
beim Start angegebenen Pfad. $1 und $2 enthalten die bergabewerte. Weitere
Werte wrden entsprechend fortlaufend nummeriert. Die Variable $# enthlt die
Anzahl der bergebenen Parameter. Mit dem Kommando Murks wird ein Fehler
provoziert, der dann auch mit einem command not found quittiert wird. Dieser
Fehler setzt den Errorlevel in der Variablen $? auf 127. Errorlevels sind eine sehr
oft genutzte Information, um Programmabzweigungen festzulegen. Wenn kein
Fehler auftaucht, ist der Errorlevel normalerweise 0. Die Errorlevels, die in Feh-
lerfllen auftauchen, sind unterschiedlich und knnen in der Regel in den Man-
pages des jeweiligen Kommandos nachgelesen werden. Umgehen knnen Sie
diese Problematik, indem Sie Abzweigungen definieren, die sinngem sagen:
Wenn der Errorlevel nicht 0 ist ... Im Zweifelsfall lsst sich ein Errorlevel aber
auch feststellen, indem man einfach einen Fehler provoziert und den Errorlevel
dann mit echo $? nachschaut.
archangel:/ # locate Marmeladenbrot
archangel:/ # echo $?
1
Das Kommando locate gibt also offensichtlich im Fehlerfall einen Errorlevel von
1 aus. Das ist ein weit verbreitetes Verhalten.
Schleifen und Bedingungen
while, test, do, done, shift, let
Im nchsten Beispiel werden zwei weitere Techniken angewendet, die in der Pro-
grammierung von Shell-Skripten hufig in genau dieser Kombination Verwen-
dung finden.
#!/bin/sh
#Addiert beliebig viele Zahlen
summe=0
while test $# -gt 0
do
let summe=summe+$1
shift
298
Shells, Skripte und Datenverwaltung 105
done
echo Die Summe Ihrer Eingaben ist $summe
unset summe
exit 0
Dieses kleine Skript arbeitet auf folgende Weise: Zuerst wird sicherheitshalber
dafr gesorgt, dass die Variable summe den Wert 0 enthlt. Wahrscheinlich exis-
tiert diese Variable gar nicht, aber diese Sicherheitsmanahme ist Standard. Im
nchsten Schritt wird die Abbruchbedingung fr eine Schleife aufgestellt. Des-
halb muss zunchst geklrt werden, was in der Schleife geschieht. Besagte
Schleife beginnt mit einem do und endet auf done. Die erste Anweisung in der
Schleife let summe=summe+$1 bewirkt, dass zur leeren Variablen summe der erste
(hoffentlich numerische) bergabewert addiert wird. Das Kommando shift
bewirkt, dass anschlieend die Werte der bergabeparameter innerhalb Ihrer
Variablen verschoben werden. Das heit, aus $2 wird $1, aus $3 wird $2, aus $4
wird $3 und so weiter. Sollte die Abbruchbedingung noch nicht erfllt sein, wird
die Schleife weiter durchlaufen. let summe=summe+$1 addiert wieder den Inhalt
der Variablen $1 zu summe. Das ist der Wert, der vorher in $2 gestanden hat. Jetzt
muss nur noch geklrt werden, wann die Schleife beendet wird. Die Abbruchbe-
dingung while test $# -gt 0 prft nmlich, ob noch weitere bergabeparameter
vorhanden sind. Das knnte in etwa so bersetzt werden: Solange (while) die
Anzahl der verbleibenden bergabeparameter ($#) greater than 0 ist, tue (do) !
Wenn diese Bedingung nicht mehr zutrifft, wird die Schleife verlassen und hinter
dem done fortgesetzt. Es erfolgt die Ausgabe des Ergebnisses, aber diese Anwei-
sung ist fr Sie inzwischen selbsterklrend. Die Ausfhrung des Beispielskripts
sieht so aus:
archangel:/storage/scriptdemo # ./add 47 11 0 8 15
Die Summe Ihrer Eingaben ist 81
Es ist brigens auch mglich, die Syntax fr test etwas anders auszufhren. Im
vorherigen Beispiel htte das so ausgesehen: while [ $# -gt 0 ]. Das Kommando
test wurde durch eine rechteckige Klammer ersetzt. Hier ist Vorsicht geboten!
Die Leerzeichen nach der geffneten und vor der geschlossenen rechteckigen
Klammer drfen nicht fehlen. Wenn man bedenkt, wie dieses Prinzip funktio-
niert, ist das aber auch verstndlich. Die geffnete rechteckige Klammer ist ein
Programm mit der Bezeichnung [. Es muss also ein Leerzeichen folgen, damit die
Shell wei, dass alles, was nun folgt, Parameter fr dieses Programm sind. Die
schlieende Klammer ] ist ein Parameter, der von dem Programm [ erwartet
wird. Hier ist also auch ein Leerzeichen erforderlich, damit sich die schlieende
Klammer von den vorangegangenen Parametern abgrenzen kann. Fr die Pr-
fung ist das Testen von Bedingungen ein beliebtes Thema. Auffallend ist, dass die
299
Einfache Skripte anpassen oder schreiben 105.2
berprfung von Dateien hinsichtlich bestimmter Eigenschaften hufig themati-
siert wird. Es wird nun deshalb eine Liste mit den fr die Prfung wichtigsten
Parametern folgen. Die Bezeichnungen in den Klammern sollen dabei helfen, die
Schalter leichter auswendig lernen zu knnen. Machen Sie sich bitte zustzlich
mit der Manpage von test vertraut.
-r <Filename> die Datei existiert und ist lesbar (readable).
-w <Filename> die Datei existiert und ist beschreibbar (writeable).
-x <Filename> die Datei existiert und ist ausfhrbar (executable).
-d <Filename> die Datei existiert und ist ein Verzeichnis (directory).
-b <Filename> die Datei existiert und ist ein blockorientiertes Gert.
-c <Filename> die Datei existiert und ist ein zeichenorientiertes Gert.
-g <Filename> die Datei existiert, und das SGID-Bit ist gesetzt.
-k <Filename> die Datei existiert, und das Sticky Bit ist gesetzt.
-u <Filename> die Datei existiert, und das SUID-Bit ist gesetzt.
Anmerkung: Das SUID-Bit wird im Allgemeinen als unsicher betrachtet und des-
halb zu Recht vom LPI gern zum Gegenstand von Prfungsfragen gemacht.
-e <Filename> die Datei existiert (exists).
-f <Filename> die Datei existiert und ist eine regulre Datei (file).
-L <Filename> die Datei existiert und ist ein symbolischer Link (link).
<File1> -nt <File2> File1 ist neuer als File2 (newer than).
<File1> -ot <File2> File1 ist lter als File2 (older than).
Abgesehen von Dateien knnen auch Werte und Variablen miteinander vergli-
chen werden. Das ist im vorangegangenen Beispielskript auch schon durchge-
fhrt worden, um festzustellen, ob noch weitere bergabeparameter vorhanden
sind. Die Vergleiche sehen folgendermaen aus:
WertA -eq WertB trifft zu, wenn Wert A gleich Wert B ist (equal).
WertA -ne WertB trifft zu, wenn Wert A ungleich Wert B ist (not equal).
WertA -gt WertB trifft zu, wenn Wert A grer als Wert B ist (greater than).
WertA -ge WertB trifft zu, wenn Wert A grer oder gleich Wert B ist (greater
or equal).
WertA -lt WertB trifft zu, wenn Wert A kleiner als Wert B ist (less than).
WertA -le WertB trifft zu, wenn Wert A kleiner oder gleich Wert B ist (less or
equal).
300
Shells, Skripte und Datenverwaltung 105
Schleifen mit for, Befehlssubstitutionen, echo, mail und find
Befehlssubstitution bedeutet, dass die Ausgaben eines Befehls an einen anderen
Befehl oder an eine Variable bergeben werden. Dies kann auf zwei Arten
geschehen, die beide die gleiche Auswirkung haben.
#!/bin/bash
# Sucht nach Sicherungskopien der user
for z in `find /home -name *.old`
do
echo e "\n$z kann vermutlich geloescht werden!"
done
unset z
exit 0
Dieses Skript basiert u.a. auf der Befehlssubstitution. In diesem Fall werden fr
die Substitution sogenannte Backquotes verwendet. Das find-Kommando in der
ersten Zeile find /home -name *.old sucht in allen Benutzerverzeichnissen nach
Dateien, deren Dateinamenerweiterung auf .old endet. Die beiden kleinen Stri-
che vor und hinter diesem Befehl sind die besagten Backquotes. Sie werden
gesetzt wie die franzsischen Akzente in oder . Weil Sie erst erscheinen, wenn
man weiter schreibt, sind dies Backquotes vielen Programmierern unangenehm.
Zum Glck gibt es aber eine andere Mglichkeit, dasselbe Ziel zu erreichen. Die
beiden folgenden Zeilen fhren mit unterschiedlicher Syntax zum selben Ergeb-
nis:
for z in $(find /home -name *.old)
for z in `find /home -name *.old`
Die Ausgaben des find-Befehls werden also jetzt einzeln an die Variable z berge-
ben. Nach jeder einzelnen bergabe wird dann einmal die for-Schleife durchlau-
fen. Diese beginnt genau wie eine while-Schleife mit einem do und endet mit
done. Wenn find keine weiteren Dateien findet, ist die Abbruchbedingung fr
die Schleife erfllt. Innerhalb der Schleife geschieht die Ausgabe des Skripts. Der
echo-Befehl gibt jede gefundene Datei auf dem Bildschirm aus. Der Parameter e
aktiviert fr echo die Escape-Sequenzen. Das gibt hier die Mglichkeit, mit \n vor
der Ausgabe jeder Zeile eine zustzliche Leerzeile zu generieren, um mehr ber-
sicht zu schaffen. Weitere Escape-Zeichen sind:
\\ Wenn ein Backslash angezeigt werden soll, muss dieser nun selbst wie
man so sagt escaped werden, weil der erste Backslash interpretiert und nicht
ausgegeben wird.
\a alert (piept einmal)
\b backspace
301
Einfache Skripte anpassen oder schreiben 105.2
\c unterdrckt die Ausgabe des Newline-Zeichens
\f form feed (Leerseite)
\n new line
\r carriage return
\t horizontal tabulator (8 Leerzeichen breit)
\v vertical tabulator (entspricht 8 Leerzeilen)
Die Ausgabe eines Skripts kann statt auf dem Monitor auch in einer Mail erfol-
gen. Das ist unter Linux besonders einfach, weil auf jedem Linux-System ein
kompletter Mailserver implementiert ist. Sie knnen Text von der Konsole oder
aus einer beliebigen Datei direkt in das Programm mail pipen, und schon werden
die Informationen zugestellt.
archangel:/ # echo "was testen" | mail -s Test root
Sie knnen dieses Verfahren einfach auf der Shell testen. Die Zeile oben sendet
eine Mail mit dem Text was testen und der Betreffzeile Test (-s steht fr Subject)
an den Benutzer Root. Wenn Ihr Mailsystem an das Internet angebunden ist,
kann natrlich auch eine externe Mailadresse voll qualifiziert angegeben werden.
Die Benutzung von mail in eigenen Skripten ist eine angenehme Sache, weil Sie
sich immer darber informieren lassen knnen, wenn bei der Ausfhrung von
Routineaufgaben (beispielsweise durch cron) etwas schief luft. Erfolgsmeldun-
gen via Mail werden brigens schnell lstig, weshalb ich davon abrate, so etwas
zu programmieren.
Die Anweisungen if, fi elif, else, case, esac, read, clear und einfaches Rechnen
mit der Shell
Das nchste Skript ist etwas lnger, demonstriert aber auch mehrere Komman-
dos. Auerdem werden die vier Grundrechenarten durchgefhrt. Der Einfachheit
halber stehen die Kommentare diesmal mitten im Skript jeweils unter dem Pro-
grammtext.
#!/bin/bash
#Die vier Grundrechenarten
clear; echo -e "Welche Operation mchten Sie ausfhren?\
nBitte den ersten Buchstaben eingeben und mit Eingabe besttigen!\n"
echo -e " [a]ddieren
[s]ubtrahieren
[m]ultiplizieren
[d]ividieren "
read operator
302
Shells, Skripte und Datenverwaltung 105
Zunchst wird der Bildschirm aus kosmetischen Grnden mit clear gesubert.
Anschlieend wird dem Benutzer ein Auswahlmen angezeigt, die Eingabe des
Benutzers wird mit der read-Anweisung gelesen und in die Variable operator
bernommen. So wird dem Skript spter mitgeteilt, welche Rechenart ausgefhrt
werden soll.
clear; echo -e "\nGeben Sie jetzt den ersten Wert ein "
read a
clear; echo -e "\nGeben Sie jetzt den zweiten Wert ein "
read b
Den Variablen a und b werden die zu verarbeitenden Werte bergeben.
if [ $operator = a ]; then
let c=a+b
clear; echo $a + $b = $c
Jetzt beginnen die bedingten Programmausfhrungen. Wenn (if) der Operator
ein a wie addieren enthlt, werden die Werte in a und in b in c addiert. Anschlie-
end wird das Ergebnis ausgegeben.
elif [ $operator = s ]; then
let c=a-b
clear; echo $a $b = $c
Das Wort elif ist ein Kunstwort. Es handelt sich um eine Abkrzung aus else
und if. Sinngem knnte man elif vielleicht mit ansonsten wenn bersetzen.
Wenn der Operator ein s ist, wird jetzt also eine Subtraktion durchgefhrt.
elif [ $operator = m ]; then
let c=a*b
clear; echo $a "*" $b = $c
Entsprechend wird hier multipliziert.
elif [ $operator = d ]; then
let c=a/b
clear; echo $a / $b = $c
Und hier wird dividiert.
else clear; echo -e "\nSie haben einen ungltigen Operator
angegeben.!"
Exit 1
Ansonsten (else) wird eine Fehlermeldung ausgegeben, weil auer den vier oben
angegebenen Operatoren kein weiterer zulssig ist. Der Errorlevel wird auf 1
gesetzt.
303
Einfache Skripte anpassen oder schreiben 105.2
fi
Das Gegenteil von if ist fi. fi beendet die bedingte Verarbeitung:
exit 0
Das nchste Skript soll genau dieselbe Aufgabe ausfhren, diesmal allerdings
unter Verwendung von case-Anweisungen. In den meisten Fllen ist es wohl
Geschmacksache, welche Form der bedingten Ausfhrung benutzt wird. Bei den
hier verwendeten Beispielen hat die Version mit den if-Anweisungen einige Zei-
len weniger, dafr aber auch ein paar Byte mehr als das Skript, das auf case
basiert. Dies sieht folgendermaen aus:
#!/bin/bash
#Die vier Grundrechenarten
clear; echo -e "Welche Operation mchten Sie ausfhren?\nBitte den
ersten Buchstaben eingeben und mit Eingabe besttigen!\n"
echo -e " [a]ddieren
[s]ubtrahieren
[m]ultiplizieren
[d]ividieren "
read operator
clear; echo -e "\nGeben Sie jetzt den ersten Wert ein "
read a
clear; echo -e "\nGeben Sie jetzt den zweiten Wert ein "
read b
Bis hierher ist alles mit dem vorherigen Beispiel identisch.
case "$operator" in
a)
let c=a+b
clear; echo $a + $b = $c;;
Das ist der erste Teil der case-Anweisung. Die Variable operator bestimmt die
Auswahl. Die Zeile mit a)definiert den Fall der Addition, und es werden anschlie-
end die entsprechenden Kommandos ausgefhrt.
s)
let c=a-b
clear; echo $a $b = $c;;
Hier wird entsprechend dem s) subtrahiert.
m)
let c=a*b
clear; echo $a "*" $b = $c;;
304
Shells, Skripte und Datenverwaltung 105
Mit m) wird multipliziert.
d)
let c=a/b
clear; echo $a / $b = $c;;
Die Division wird mit d) ausgefhrt.
*)
clear; echo -e "\nSie haben einen ungltigen Operator
angegeben!"
exit 1;;
Als Entsprechung zum else-Kommando gibt es bei einer case-Auflistung ein *).
Hiermit werden alle Flle abgedeckt, die in den vorangegangenen Auswahlen
nicht enthalten sind. In diesem Fall sind es also unerwnschte Benutzereingaben.
esac
Die Umkehrung von case ist esac. Dieses Kommando schliet die bedingte Aus-
fhrung ab.
exit 0
Wie Sie schon gemerkt haben, habe ich diesmal keine Ausgaben der Programme
mit in den Text aufgenommen. Ich wollte damit ein unntiges Auffllen des Tex-
tes mit zu vielen Bildschirmausgaben vermeiden. Es ist sicherlich fr ungebte
Programmierer ratsam, die Skripte abzuschreiben und auszuprobieren.
In der Praxis ist es auch wichtig, in bestehenden Skripten kleine nderungen vor-
nehmen zu knnen. Dazu ist es nicht erforderlich, ein Skript wie einen Roman
lesen zu knnen. Sehen Sie sich doch einfach einmal die Skripte in /etc/init.d an,
und versuchen Sie, zu verstehen, was diese Skripte bewirken.
105.3 SQL-Datenverwaltung
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, mit einfachen SQL-Komman-
dos Datenbanken abzufragen und Daten zu manipulieren. Dieses Lernziel
umfasst auch Anfragen, die zwei Tabellen verbinden bzw. Subselects verwenden.
Prfungstipp
Fragen zum Thema Skripte sind in dieser Prfung eher die Ausnahme. Sie sollten dieses
Thema aber trotzdem fr Ihre tgliche Arbeit zumindest ansatzweise beherrschen.
305
SQL-Datenverwaltung 105.3
Wichtigste Wissensgebiete:
Gebrauch einfacher SQL-Kommandos
einfache Datenmanipulation
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
insert
update
select
delete
from
where
group by
order by
join
Allgemeines
SQL ist eine Sprache zur Definition, Abfrage und Bearbeitung von Datenbanken.
Die Abkrzung steht fr Structured Query Language. SQL ist von der ISO und der
ANSI standardisiert und wird von den meisten Datenbanksystemen untersttzt.
Im Linux-Umfeld werden Sie normalerweise MySQL-Datenbanken verwenden.
Da Datenbanken immer hufiger mit Webbrowsern abgefragt werden, finden Sie
unter Linux sehr oft die Kombination aus Apache-Webserver, MySQL und PHP
vor. Die Sprache PHP ist gut geeignet, um Webseiten zu untersttzen, die an eine
Datenbank angebunden sind. Sehr bekannt ist auch die Administrations-Web-
seite phpMyAdmin, mit der wohl die meisten Web-Administratoren ihre MySQL-
Datenbanken verwalten. In der anstehenden Prfung geht es allerdings aus-
schlielich um die Administration auf der Konsole.
Sie werden in diesem Buch keine umfangreiche Einfhrung in die Thematik der
Datenbanken im Allgemeinen finden. Hauptschlich werden Sie hier wieder auf
die Prfungsfragen vorbereitet. Die Beispiele in den praktischen Teilen des Kapi-
tels werden Sie dennoch gut auf Ihrem Computer nachvollziehen knnen.
SQL Die Befehle
SQL-Befehle werden in vier Bereiche eingeteilt. Diese Bereiche sagen etwas ber
den Verwendungszweck der jeweiligen Kommandogruppe aus.
306
Shells, Skripte und Datenverwaltung 105
DQL (Data Query Language) wird verwendet, um die Datenbank abzufragen.
Daten knnen ausgewhlt, sortiert oder zusammengefhrt werden. Typische
Vertreter dieser Sprache sind SELECT, ORDER BY, und DISTINCT.
DML (Data Manipulation Language) wird verwendet, um Daten innerhalb von
Tabellen zu erstellen, zu lschen oder zu modifizieren. Typisch hierbei sind
INSERT, UPDATE, COMMIT und ROOLBACK.
DDL (Data Definition Language) dient der Verwaltung der Datenbank selbst.
Es werden z.B. Tabellen erstellt, Spalten zu Tabellen hinzugefgt oder entfernt
und so weiter. Vertreter dieser Sprache sind CREATE TABLE, ALTER TABLE,
DROP TABLE und so weiter.
DCL (Data Control Language) wird bentigt, um den Zugriff auf bestimmte
Bereiche der Datenbank zu steuern. Hier kommen GRANT und REVOKE zum
Einsatz, um Rechte zu erteilen oder zu entziehen.
Die ersten Schritte
Damit Sie gleich praktisch an die ganze Thematik herangehen knnen, empfehle
ich Ihnen als Minimalausstattung einen MySQL-Server und einen MySQL-Client
zu installieren. Am einfachsten erledigen Sie das mit apt-get oder yum, je nach-
dem, welche Distribution Sie verwenden:
[root@centos01 ~]# yum install mysql-server mysql-client
oder:
root@archangel:~# apt-get install mysql-server mysql-client
Und schon verfgen Sie ber alles, was Sie fr dieses Thema bentigen.
Damit Sie mit Ihrem MySQL-Server arbeiten knnen, mssen Sie sich zunchst
anmelden. Die verschiedenen Methoden knnen Sie in der Manpage zu mysql
nachlesen. Ein Verfahren sieht so aus:
root@archangel:~# mysql --user=root -h localhost
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Hinweis
Die in diesem Kapitel verwendeten Beispiele bauen aufeinander auf. Sie sollten daher
von Anfang bis Ende alle Kommandos lckenlos ausfhren.
307
SQL-Datenverwaltung 105.3
Die Angabe von -h localhost ist normalerweise optional, wenn Sie den Client auf
derselben Maschine ausfhren wie den Server. Wenn Sie das angegebene Benut-
zerkonto zur Verwendung eines Kennwortes konfiguriert haben, mssen Sie
zustzlich den Schalter --password anhngen. Sie werden daraufhin zur Eingabe
eines Passwortes aufgefordert. Wenn Sie von einem entfernten Computer aus auf
den Server zugreifen, mssen Sie natrlich anstelle von localhost das Zielsystem
angeben. Die Verwendung von localhost kommt in diesem Zusammenhang recht
hufig vor, weil eine eventuelle Webanwendung, die auf MySQL zugreift, norma-
lerweise auf ein und derselben Maschine installiert ist.
Sie knnen nun mit der Arbeit beginnen. Das abschlieende mysql> ist nmlich
die Eingabeaufforderung.
Status berprfen
Einen ersten berblick ber den Status des Servers erhalten Sie mit dem Kom-
mando status. Alternativ kann das Kurzkommando \s verwendet werden.
mysql> status;
--------------
mysql Ver 14.12 Distrib 5.0.51a, for debian-linux-gnu (i486) using
readline 5.2
Connection id: 20
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /var/run/mysqld/mysqld.sock
Uptime: 1 day 4 hours 30 min 32 sec
Threads: 1 Questions: 136 Slow queries: 0 Opens: 25 Flush tables:
1 Open tables: 18 Queries per second avg: 0.001
--------------
Wichtig
Ein SQL-Kommando muss immer mit einem Semikolon abgeschlossen werden, weil der
Server ansonsten einen mehrzeiligen Befehl erwartet.
308
Shells, Skripte und Datenverwaltung 105
Die Connection id ist eine eindeutige Kennung, ber die die Sitzung identifiziert
wird. Mit Current database wird angezeigt, welche Datenbank gerade verwendet
wird (in diesem Fall noch keine). Current user ist natrlich der Benutzer, der die
Sitzung initiiert hat. Ansonsten finden Sie noch Informationen ber die verwen-
dete Server-Version und ber die Zeichenstze. Am Ende gibt es einen statisti-
schen berblick ber die Laufzeit des Servers, die Anzahl der aktuell verbunde-
nen Clients und Abfragen durch Clients.
Hilfe erhalten
Wenn Sie eine Zusammenstellung ber die mglichen Servergrundbefehle und
deren Kurzformen bentigen, dann knnen Sie das Kommando help oder kurz \h
verwenden. Eine Aufstellung der detaillierten Hilfe ber bestimmte Bereiche
erhalten Sie mit dem Kommando help contents:
mysql> help contents;
You asked for help about help category: "Contents"
For more information, type 'help <item>', where <item> is one of the
following
categories:
Account Management
Administration
Data Definition
Data Manipulation
Data Types
Functions
Functions and Modifiers for Use with GROUP BY
Geographic Features
Language Structure
Storage Engines
Stored Routines
Table Maintenance
Transactions
Triggers
Die Hilfe lsst immer weitere Verfeinerungen der Themengebiete zu. So gibt das
Kommando help data types eine Liste der verwendbaren Datentypen aus:
mysql> help data types;
You asked for help about help category: "Data Types"
For more information, type 'help <item>', where <item> is one of the
following
topics:
AUTO_INCREMENT
BIGINT
309
SQL-Datenverwaltung 105.3
BINARY
BIT
BLOB
CHAR BYTE
... hier wurden aus Platzgrnden einige Zeilen entfernt ...
TINYINT
TINYTEXT
VARBINARY
VARCHAR
YEAR DATA TYPE
Aus dieser Liste geht noch nicht hervor, welche Datentypen mit welchen Inhalten
gefllt werden knnen. Um zu erfahren, wie z.B. VARCHAR eingesetzt werden
kann, geben Sie help VARCHAR ein. Sie erhalten damit eine sehr ausfhrliche
Beschreibung des Datentyps.
Eine erste Datenbank
Wenn Sie berprfen wollen, ob auf einem Server bereits Datenbanken existie-
ren, auf die Sie Zugriff haben, geben Sie folgendes Kommando ein:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
Es existieren nur die beiden Datenbanken information_schema und mysql. Beide
enthalten keinen Nutzdaten, sondern gehren sozusagen zum Lieferumfang von
MySQL. Es soll nun eine erste Datenbank zu bungszwecken erstellt werden:
mysql> CREATE DATABASE kontakte;
Query OK, 1 row affected (0.00 sec)
MySQL ist brigens eigentlich nicht case sensitive, weshalb Sie auch alle Kom-
mandos durchgehend klein schreiben knnen. Gro- und Kleinschreibung kann
aber die bersichtlichkeit erhhen. Im vorangegangenen Befehl knnen Sie so
leicht erkennen, dass die Datenbank kontakte erstellt wurde.
Um mit dieser Datenbank arbeiten zu knnen, wird mindestens eine Tabelle
bentigt. Zu diesem Zweck muss MySQL aber zuerst durch das Kommando use
mitgeteilt werden, welche Datenbank jetzt zu verwenden ist. Bei der Erstellung
310
Shells, Skripte und Datenverwaltung 105
der Tabelle selbst werden Sie ein mehrzeiliges Kommando nicht vermeiden, weil
die Bezeichnungen der Spalten und die Variablentypen der Spalten gleich mit
bergeben werden.
mysql> USE kontakte;
Database changed
Die Datenbank ist ausgewhlt, und Sie knnen nun mit der Erstellung der Tabelle
beginnen:
mysql> CREATE TABLE rufnummern (
-> id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> vorname VARCHAR(128),
-> nachname VARCHAR(128),
-> vorwahl VARCHAR(32),
-> rufnummer VARCHAR(32)
-> );
Query OK, 0 rows affected (0.01 sec)
Wenn ein Kommando wie in diesem Fall mehrzeilig eingegeben wird, ist es
blich, die geffnete Klammer fr eine Aufzhlung in die erste Zeile des Kom-
mandos und die schlieende Klammer in die letzte Zeile des Kommandos zu set-
zen. Das ist allerdings nicht durch die Syntax vorgeschrieben, sondern soll ledig-
lich die Lesbarkeit des Kommandos erhhen. Es folgt, wie immer, ein Semikolon.
Wie Sie sehen, werden die einzelnen Deklarationen fr die Spalten mit Kommata
getrennt. Die letzte Definition darf aber nicht mehr mit einem Komma abge-
schlossen werden. Das ist ein beliebter Eingabefehler!
Die erste Spalte der soeben erstellten Tabelle rufnummern enthlt den primren
Schlssel, der beim Verknpfen mehrerer Tabellen bentigt wird. Es hat sich ein-
gebrgert, diesen Wert mit id zu bezeichnen, was aber nicht Voraussetzung ist.
Sie sollten nur sicherstellen, dass der Primrschlssel eindeutig ist. Die Spalte
nachname wre also ein denkbar schlechter Primrschlssel. Sollten Sie keine
separate Spalte fr den Primrschlssel verwenden wollen, ist eine Kundennum-
mer fr Personen oder die Artikelnummer fr Waren eine gute Wahl. Wenn der
Wert id bei der Eingabe neuer Datenstze nicht mitangegeben wird, vergibt
MySQL automatisch den ersten noch freien Wert (AUTO_INCREMENT). Die
Anweisung NOT NULL besagt, dass dieser Wert nicht leer bleiben darf. Es handelt
sich nicht um den numerischen Wert 0! Die verwendeten Datentypen sollen an
dieser Stelle mangels Prfungsrelevanz nicht nher erlutert werden. Lesen Sie
diese bitte bei Interesse in der Hilfe von MySQL nach.
Jetzt knnen Sie die ersten Datenstze in die Tabelle eintragen. Verwenden Sie
hierfr das Kommando INSERT:
311
SQL-Datenverwaltung 105.3
mysql> INSERT INTO
-> rufnummern (id,vorname,nachname,vorwahl,rufnummer)
-> VALUES
-> (1,
-> 'Hans',
-> 'Panz',
-> '030',
-> '1234588'
-> );
Es gibt mehrere Methoden, SQL-Kommandos zu bergeben. Im vorangegange-
nen Beispiel wurde die Eingabe ber mehrere Zeilen verteilt, was die bersicht-
lichkeit bei der Eingabe erheblich erhht. Eine weitere Mglichkeit ist es, das
ganze Kommando hintereinander weg zu schreiben. Auf diese Weise wird nun
der zweite Datensatz angelegt:
mysql> INSERT INTO rufnummern (id, vorname, nachname, vorwahl,
rufnummer) VALUES (2, 'Willi', 'Wichtig', '030', '4711999');
Query OK, 1 row affected (0.00 sec)
Sie knnen aber auch alle Kommandos einer Sitzung zunchst in eine Textdatei
schreiben und diese Textdatei dann als Eingabedatei fr das mysql-Programm ver-
wenden. Hierbei haben Sie sogar die Mglichkeit des Editierens. blicherweise
verwendet man hierbei die Dateierweiterung sql. Sie knnen in einer solchen
Datei beliebige Kommandos unterbringen. Sie bergeben diese Textdatei an
MySQL, indem Sie das Kommando source verwenden. Beispiel:
mysql> source /home/harald/rufnummerntabelle.sql
Sollten Sie einen Windows-Client verwenden, mssen Sie den Pfad, wie in Unix
blich, mit Slashes und nicht mit Backslashes angeben:
mysql> source e:/daten/harald/rufnummerntabelle.sql
Es werden alle in der Datei enthaltenen Kommandos nacheinander ausgefhrt.
Abfragen mit SELECT und WHERE
Um einfach den gesamten Inhalt einer Tabelle auszugeben, verwenden Sie
SELECT mit einem * als Joker:
mysql> SELECT * FROM rufnummern;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 1 | Hans | Panz | 030 | 1234588 |
312
Shells, Skripte und Datenverwaltung 105
| 2 | Willi | Wichtig | 030 | 4711999 |
+----+---------+----------+---------+-----------+
rows in set (0.00 sec)
Wenn nur ausgewhlte Spalten einer Tabelle ausgegeben werden sollen, mssen
diese, durch Kommata voneinander getrennt, angegeben werden. Um eine reine
Namensliste zu erhalten, knnen Sie also so vorgehen:
mysql> SELECT vorname,nachname FROM rufnummern;
+---------+----------+
| vorname | nachname |
+---------+----------+
| Hans | Panz |
| Willi | Wichtig |
+---------+----------+
2 rows in set (0.01 sec)
Es knnen aber auch einzelne Datenstze anhand von Angaben einzelner Feld-
inhalte gesucht und ausgegeben werden. Wenn z.B. die Rufnummer von Willi
bentigt wird und Sie genau wissen, dass es nur einen einzigen Willi in der
Datenbank gibt, knnen Sie folgendes Kommando verwenden:
mysql> SELECT vorwahl,rufnummer FROM rufnummern WHERE
vorname='Willi';
+---------+-----------+
| vorwahl | rufnummer |
+---------+-----------+
| 030 | 4711999 |
+---------+-----------+
1 row in set (0.00 sec)
Erfreulich an der SQL-Syntax ist, dass Sie die Anweisungen fast wie einen norma-
len Satz lesen knnen. Obiges Beispiel ist also mit etwas logischem Denken
selbsterklrend. Im brigen ist es wohl eher unwahrscheinlich, dass jemand auf
eine solch umstndliche Art und Weise versucht, an eine Rufnummer heranzu-
kommen. Bedenken Sie aber immer, dass SQL-Kommandos in den meisten Fllen
von Anwendungsprogrammen unter der Motorhaube ausgefhrt werden. Typi-
sche Programmiersprachen fr solche Anwendungen sind PHP, Perl und C#.
Als Demonstration fr die automatische Vergabe der ID-Nummer (die ja mit
AUTO_INCREMENT konfiguriert wurde) und damit die Abfragen etwas interes-
santer gestaltet werden knnen, sollten Sie die Tabelle jetzt um ein paar Daten-
stze erweitern. Im nchsten Beispiel wird ein Datensatz ohne ID angelegt.
Beachten Sie die automatische Vergabe:
313
SQL-Datenverwaltung 105.3
mysql> INSERT INTO rufnummern (vorname,nachname,vorwahl,rufnummer)
VALUES ('Susi', 'Paschke', '030', '770815');
Query OK, 1 row affected (0.00 sec)
Die Eingabe wurde auch ohne die Vergabe der ID-Nummer akzeptiert. Mit einer
Abfrage wird berprft, ob dennoch eine ID-Nummer vergeben wurde:
mysql> SELECT * FROM rufnummern WHERE vorname='Susi';
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 3 | Susi | Paschke | 030 | 770815 |
+----+---------+----------+---------+-----------+
1 row in set (0.00 sec)
Ein weiterer Test wird zeigen, was geschieht, wenn bei der Erstellung eines
Datensatzes die Vorwahl vergessen wird:
mysql> INSERT INTO rufnummern (vorname,nachname,rufnummer) VALUES
('Dieter','Durstig','99912357');
Query OK, 1 row affected (0.00 sec)
Zumindest wird die Eingabe akzeptiert. Nun folgt die berprfung:
mysql> SELECT * FROM rufnummern WHERE vorname='Dieter';
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 4 | Dieter | Durstig | NULL | 99912357 |
+----+---------+----------+---------+-----------+
1 row in set (0.00 sec)
Als Inhalt wird in der Tabelle NULL angezeigt, was, wie bereits erwhnt, nichts
mit dem numerischen Wert zu tun hat. Sie knnen dies beim Erstellen der Tabelle
von vornherein abfangen, indem Sie einen voreingestellten Wert (default) verge-
ben. Bei der Planung und Erstellung von Tabellen gibt es noch viele Faktoren zu
bercksichtigen, die aber nicht Bestandteil der Prfung sind.
Sie knnen die Ausgabe von SELECT auch noch auf eine andere Weise begrenzen.
Bisher ist die Tabelle recht kurz, so dass mache Anweisungen nicht wirklich Sinn
machen, aber Sie sehen wenigstens, wie sie funktionieren. Betrachten Sie also das
folgende Kommando:
mysql> SELECT * FROM rufnummern WHERE id > 1 AND id < 4;
Durch die Angaben hinter WHERE werden nur Datenstze ausgegeben, deren ID-
Nummer grer ist als 1, aber kleiner als 4:
314
Shells, Skripte und Datenverwaltung 105
mysql> SELECT * FROM rufnummern WHERE id > 1 AND id < 4;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 2 | Willi | Wichtig | 030 | 4711999 |
| 3 | Susi | Paschke | 030 | 770815 |
+----+---------+----------+---------+-----------+
2 rows in set (0.00 sec)
Aktualisieren von Datenstzen
Natrlich mssen die Werte einer Datenbank vernderbar sein. Zu diesem Zweck
gibt es das Kommando UPDATE. Sie knnen UPDATE gleich verwenden, um die
Vorwahl von Dieter Durstig zu aktualisieren:
mysql> UPDATE rufnummern SET vorwahl = '02131' WHERE vorname =
'Dieter';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Die nderung wurde von MySQL akzeptiert und durchgefhrt. Der Schnheits-
makel in der Tabelle ist damit behoben. Sie knnen den Datensatz ber eine
beliebige Spalte der Tabelle identifizieren lassen. Die Angabe muss nur eindeutig
sein, damit nicht die falschen Datenstze verndert werden. Im obigen Beispiel
wurde der Vorname verwendet. Damit die folgenden bungen besser funktio-
nieren, sollte Willi nach Kln umziehen, damit er eine andere Vorwahl bekommt.
Damit dieses Update nicht mit dem vorangegangenen Kommando identisch ist,
wird diesmal die ID-Nummer zur Identifikation verwendet:
mysql> UPDATE rufnummern SET vorwahl = '0221' WHERE id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Sortieren und Gruppieren
Wenn Sie eine Abfrage mit SELECT durchfhren, knnen Sie das Ergebnis sortie-
ren lassen. Damit dies funktioniert, mssen Sie MySQL sagen, welche Spalte fr
die Sortierung verwendet werden soll. Normalerweise wird einfach die erste
Tabellenspalte herangezogen, aber Sie knnen in unserer Beispieltabelle auch
nach Vornamen, Nachnamen, Vorwahlen oder Rufnummern sortieren. Folgendes
Kommando sortiert nach Nachnamen:
315
SQL-Datenverwaltung 105.3
mysql> SELECT * FROM rufnummern ORDER BY nachname;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 4 | Dieter | Durstig | 02131 | 99912357 |
| 1 | Hans | Panz | 030 | 1234588 |
| 3 | Susi | Paschke | 030 | 770815 |
| 2 | Willi | Wichtig | 0221 | 4711999 |
+----+---------+----------+---------+-----------+
4 rows in set (0.00 sec)
Die Sortierung hat funktioniert. Sie knnen das Ganze zustzlich mit einer Filte-
rung kombinieren und die auszugebenden Spalten auswhlen. Auerdem ist es
mglich, die Anzahl der auszugebenden Datenstze zu limitieren (LIMIT):
mysql> SELECT vorname,nachname FROM rufnummern ORDER BY vorwahl
LIMIT 2;
+---------+----------+
| vorname | nachname |
+---------+----------+
| Dieter | Durstig |
| Willi | Wichtig |
+---------+----------+
2 rows in set (0.00 sec)
Mit dem Kommando GROUP kann eine andere Form der Filterung vorgenommen
werden. Zunchst einmal wird auch GROUP eine alphabetische bzw. eine nume-
rische Sortierung nach der angegebenen Spalte durchfhren. Auerdem whlt
GROUP nur einen Reprsentanten pro gefundenem Datensatz aus. Sie sehen das
am besten in einem Beispiel, in dem GROUP nach Vorwahlen gruppiert:
mysql> SELECT * FROM rufnummern GROUP BY vorwahl;
+----+---------+----------+---------+-----------+
| id | vorname | nachname | vorwahl | rufnummer |
+----+---------+----------+---------+-----------+
| 4 | Dieter | Durstig | 02131 | 99912357 |
| 2 | Willi | Wichtig | 0221 | 4711999 |
| 1 | Hans | Panz | 030 | 1234588 |
+----+---------+----------+---------+-----------+
3 rows in set (0.00 sec)
Natrlich ergibt dies in Bezug auf diese Tabelle keinen Sinn, aber Sie sehen, was
GROUP grundstzlich macht. Die Tabelle wurde zunchst nach Vorwahl sortiert.
Da Berlin (030) zweimal vorkommt, wird nur der erste gefundene Treffer ausge-
geben.
316
Shells, Skripte und Datenverwaltung 105
Erweitern von Datenbanken
Um die folgenden Operationen durchfhren zu knnen, bentigen Sie eine
zweite Tabelle. Damit die Erstellung nicht zu mhselig wird und Sie gleichzeitig
lernen knnen, wie man SQL-Kommandos aus einer Datei bergibt, tippen Sie
bitte das folgende kurze Listing ab, und speichern Sie es unter dem Namen kate-
gorien.sql:
USE kontakte;
CREATE TABLE kategorien (
id INT(2) NOT NULL AUTO_INCREMENT PRIMARY KEY,
kategorie VARCHAR(32)
);
INSERT INTO kategorien (kategorie) VALUES ('Freunde');
INSERT INTO kategorien (kategorie) VALUES ('Kollegen');
INSERT INTO kategorien (kategorie) VALUES ('Bekannte');
Die Kommandos in diesem Listing sind Ihnen alle bekannt, weshalb Erluterun-
gen an dieser Stelle berflssig sind. Um die Tabelle zu erstellen, starten Sie Ihren
MySQL-Client, und geben Sie folgendes Kommando am Prompt ein:
mysql> source /home/harald/kategorien.sql;
Den Pfad ersetzen Sie durch den, den Sie bei der Speicherung der Anweisungsda-
tei angegeben haben. Die Ausgabe des Befehls sollte dann (abgesehen von den
Verarbeitungszeiten) so aussehen:
Database changed
Query OK, 0 rows affected (0.01 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Query OK, 1 row affected (0.00 sec)
Es wurden alle Kommandos innerhalb der Datei positiv quittiert. Sollte etwas
falsch gelaufen sein, lschen Sie die Tabelle mit folgendem Kommando:
mysql> drop table kategorien;
berprfen Sie anschlieend noch einmal das Listing, und wiederholen Sie die
Operation. Wenn Sie der Meinung sind, dass jetzt alles in Ordnung ist, berpr-
fen Sie das Ergebnis:
mysql> show tables
-> ;
+--------------------+
| Tables_in_kontakte |
+--------------------+
317
SQL-Datenverwaltung 105.3
| kategorien |
| rufnummern |
+--------------------+
2 rows in set (0.00 sec)
Sie verfgen jetzt ber eine zweite Tabelle in derselben Datenbank. berprfen
Sie den Inhalt der zweiten Tabelle:
mysql> select * from kategorien;
+----+-----------+
| id | kategorie |
+----+-----------+
| 1 | Freunde |
| 2 | Kollegen |
| 3 | Bekannte |
+----+-----------+
3 rows in set (0.00 sec)
Damit die beiden Tabellen miteinander kombiniert werden knnen, muss die
erste Tabelle erweitert werden. Das ist brigens kein Bestandteil der Prfung,
sondern hier ein Mittel zum Zweck:
mysql> ALTER TABLE rufnummern ADD (kategorie_id INT(5));
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0
Es gibt keine Fehlermeldung. berprfen Sie aber dennoch, ob die erste Tabelle
wunschgem erweitert wurde:
mysql> SELECT * FROM rufnummern;
+----+---------+----------+---------+-----------+--------------+
| id | vorname | nachname | vorwahl | rufnummer | kategorie_id |
+----+---------+----------+---------+-----------+--------------+
| 1 | Hans | Panz | 030 | 1234588 | NULL |
| 2 | Willi | Wichtig | 0221 | 4711999 | NULL |
| 3 | Susi | Paschke | 030 | 770815 | NULL |
| 4 | Dieter | Durstig | 02131 | 99912357 | NULL |
+----+---------+----------+---------+-----------+--------------+
4 rows in set (0.00 sec)
Die neu angelegte Spalte enthlt zwar noch keine Werte, aber sie wurde dennoch
angelegt. Damit Sie die Kategorien fr Abfragen verwenden knnen, mssen jetzt
nur noch die entsprechenden IDs aus der Tabelle kategorien eingetragen werden.
Das geschieht mit dem Befehl UPDATE. Hier noch einmal ein Beispiel:
mysql> UPDATE rufnummern SET kategorie_id='1'
-> WHERE vorname='Willi';
318
Shells, Skripte und Datenverwaltung 105
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Verfahren Sie mit den anderen drei Datenstzen genauso, wobei Sie die Katego-
rien unterschiedlich whlen. Wenn Sie alles richtig gemacht haben, sollten Sie
sinngem ein solches Ergebnis erhalten:
mysql> SELECT * FROM rufnummern;
+----+---------+----------+---------+-----------+--------------+
| id | vorname | nachname | vorwahl | rufnummer | kategorie_id |
+----+---------+----------+---------+-----------+--------------+
| 1 | Hans | Panz | 030 | 1234588 | 1 |
| 2 | Willi | Wichtig | 0221 | 4711999 | 1 |
| 3 | Susi | Paschke | 030 | 770815 | 3 |
| 4 | Dieter | Durstig | 02131 | 99912357 | 2 |
+----+---------+----------+---------+-----------+--------------+
4 rows in set (0.00 sec)
Die Tabelle wurde erfolgreich erweitert und kann nun mit der neuen Spalte ver-
wendet werden. Wenn Sie so etwas in einer Produktivdatenbank durchfhren
mssen, sollten Sie vorher eine Datensicherung machen und die Tabelle auf even-
tuelle Fehler hin untersuchen. Die berprfung der Tabelle muss dann vor und
nach der Erweiterung durchgefhrt werden. Bei den gerade erstellten bungsta-
bellen sind zwar keine Fehler zu erwarten, aber eine berprfung sollten Sie
schon allein zu bungszwecken durchfhren:
mysql> CHECK TABLE rufnummern EXTENDED;
+---------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------------------+-------+----------+----------+
| kontakte.rufnummern | check | status | OK |
+---------------------+-------+----------+----------+
1 row in set (0.00 sec)
Wie nicht anders zu erwarten war, ist alles in Ordnung. Eine berprfung mit
der Option EXTENDED kann brigens bei groen Datenbanken sehr lange dau-
ern.
Arbeiten mit mehreren Tabellen
Die Aufteilung von Datenstzen ber mehrere Tabellen hat erhebliche Vorteile.
Ein Vorteil ist der geringere Speicherverbrauch. In unserem Beispiel mssen jetzt
nicht mehr die kompletten Worte Freunde, Bekannte oder Kollegen pro Datensatz
in der Tabelle rufnummern abgespeichert werden, sondern nur noch ein numeri-
scher Wert. Dadurch, dass in der Tabelle keine redundanten Werte abgelegt wer-
319
SQL-Datenverwaltung 105.3
den, ist es unwahrscheinlicher, dass Inkonsistenzen in der Datenbank auftreten.
In unserem Beispiel knnte man zustzlich, wenn man eines Tages in Rente geht,
alle Kollegen sehr einfach in Ex-Kollegen umwandeln mit nur einem einzigen
UPDATE-Kommando! Das Beispiel ist zwar etwas albern, aber es gibt auch Berei-
che bei echten Datenbanken, wo diese Vorteile zum Tragen kommen.
Wenn mit mehreren Tabellen gearbeitet wird, dann mssen Sie bei Abfragen und
anderen Operationen sogenannte Subselects verwenden. Stellen Sie sich vor, Sie
mssen die Rufnummern aller Freunde mit den dazu passenden Vornamen her-
ausfinden. Dann knnten Sie natrlich die Tabelle rufnummern nach der
kategorie_id 1 durchsuchen. Es ist aber nicht realistisch, dass man solche Zuord-
nungen kennt (sonst bruchte man schlielich keine Datenbank). Deshalb muss
ein geeigneter Abfragemechanismus gewhlt werden.
Subselect
Ein Subselect ist eigentlich nichts anderes als eine verschachtelte Abfrage:
mysql> SELECT vorname, vorwahl, rufnummer FROM rufnummern
-> WHERE kategorie_id IN
-> (SELECT id FROM kategorien
-> WHERE kategorie='Freunde'
-> );
+---------+---------+-----------+
| vorname | vorwahl | rufnummer |
+---------+---------+-----------+
| Hans | 030 | 1234588 |
| Willi | 0221 | 4711999 |
+---------+---------+-----------+
2 rows in set (0.00 sec)
Die kategorie_id der ersten Abfrage wird durch das Ergebnis der zweiten Abfrage
(in den Klammern) ersetzt. Das Ergebnis der zweiten Abfrage, nach der ID der
Kategorie Freunde, lautet 1.
Sie knnen exakt dasselbe Ergebnis erreichen, wenn Sie mit der folgenden, gen-
derten Syntax in der ersten SELECT-Anweisung arbeiten:
mysql> SELECT rufnummern.vorname, rufnummern.vorwahl,
rufnummern.rufnummer FROM rufnummern
-> WHERE kategorie_id IN
-> (SELECT id FROM kategorien
-> WHERE kategorie='Freunde'
-> );
+---------+---------+-----------+
320
Shells, Skripte und Datenverwaltung 105
| vorname | vorwahl | rufnummer |
+---------+---------+-----------+
| Hans | 030 | 1234588 |
| Willi | 0221 | 4711999 |
+---------+---------+-----------+
2 rows in set (0.01 sec)
Es wurde hierbei dem Spaltennamen jeweils der Name der Tabelle vorangestellt.
Dadurch ist es mglich, in der Ausgabe auf Felder von mehreren Tabellen gleich-
zeitig zuzugreifen. Diese Methode bentigen Sie auch bei der Verwendung des
Kommandos JOIN.
JOIN
Eine wesentlich elegantere Methode, Tabellen miteinander zu verknpfen, bietet
das Kommando JOIN. Damit die Tabellennamen nicht immer ausgeschrieben wer-
den mssen, knnen Sie hier auch Aliase verwenden. Die Definition der Aliase
geschieht ganz einfach whrend der Befehlsausfhrung. Wenn Sie anstatt FROM
rufnummern die Zeile FROM rufnummern r verwenden, dann kann der Alias r fr
die Tabelle rufnummern eingesetzt werden. Das gilt sogar rckwirkend fr die
SELECT-Anweisung innerhalb desselben Befehls. Die ausgeschriebenen Tabellen-
namen knnen innerhalb desselben Befehls brigens nicht mehr verwendet wer-
den! Das folgende Kommando gibt alle Nutzdaten beider Tabellen auf einmal aus:
mysql> SELECT r.vorname, r.nachname, r.vorwahl,
-> r.rufnummer, k.kategorie
-> FROM rufnummern r
-> LEFT JOIN kategorien k ON r.kategorie_id = k.id;
+---------+----------+---------+-----------+-----------+
| vorname | nachname | vorwahl | rufnummer | kategorie |
+---------+----------+---------+-----------+-----------+
| Hans | Panz | 030 | 1234588 | Freunde |
| Willi | Wichtig | 0221 | 4711999 | Freunde |
| Susi | Paschke | 030 | 770815 | Bekannte |
| Dieter | Durstig | 02131 | 99912357 | Kollegen |
+---------+----------+---------+-----------+-----------+
4 rows in set (0.00 sec)
Aus diesem Beispiel knnen Sie viel Neues lernen. Erst in der dritten Zeile wurde
der Alias r fr rufnummern definiert, aber er wurde schon in der SELECT-Anwei-
sung vorab verwendet. Der Alias fr die Tabelle kategorien wurde erst in der
JOIN-Anweisung festgelegt, weil er vorher nicht bentigt wurde.
Bezglich der LEFT JOIN-Anweisung kann man festhalten, dass die Quelltabelle
(hier rufnummern) links von dieser Anweisung steht und die Verknpfungstabelle
321
SQL-Datenverwaltung 105.3
(hier kategorien) rechts. Das sehen Sie am besten, wenn Sie das Kommando auf
einer einzelnen Zeile eingeben, was normalerweise aus Grnden der bersicht-
lichkeit nicht gemacht wird:
... FROM rufnummern r LEFT JOIN kategorien k ON r.kate ...
Die Reihenfolge der Angaben hinter dem ON ist unerheblich. Es liegt nahe, dass
es auch ein RIGHT JOIN geben muss. Das folgende Kommando wurde so gewhlt,
dass dieselben Spalten aus den Tabellen ausgegeben werden wie im vorangegan-
genen Beispiel. So wird der Zusammenhang bzw. der Unterschied zwischen den
beiden JOIN-Formen leichter ersichtlich.
mysql> SELECT r.vorname, r.nachname, r.vorwahl,
-> r.rufnummer, k.kategorie
-> FROM kategorien k
-> RIGHT JOIN rufnummern r ON r.kategorie_id = k.id;
+---------+----------+---------+-----------+-----------+
| vorname | nachname | vorwahl | rufnummer | kategorie |
+---------+----------+---------+-----------+-----------+
| Hans | Panz | 030 | 1234588 | Freunde |
| Willi | Wichtig | 0221 | 4711999 | Freunde |
| Susi | Paschke | 030 | 770815 | Bekannte |
| Dieter | Durstig | 02131 | 99912357 | Kollegen |
+---------+----------+---------+-----------+-----------+
4 rows in set (0.00 sec)
In diesem Fall steht die Quelltabelle (rufnummern) rechts von JOIN, wie im fol-
genden Befehlsausschnitt wieder deutlich zu sehen ist:
... FROM kategorien k RIGHT JOIN rufnummern r ON r.kat ...;
Die Reihenfolge der Angaben hinter ON wurde absichtlich genauso gewhlt wie
im Beispiel fr LEFT JOIN, um zu demonstrieren, dass diese Reihenfolge nichts
mit der Verwendung des Kommandos selbst zu tun hat.
Bei den beiden vorangegangenen Methoden spricht man von Outer Joins. Diese
haben die Eigenschaft, auch dann ein Ergebnis zu liefern, wenn ein berprftes
Feld leer ist. Es hngt von den Daten selbst ab, ob dieses Verhalten erwnscht ist
oder eben nicht. In den vorherigen Beispielen spielte dies berhaupt keine Rolle,
weil es in der Tabelle rufnummern in jedem Datensatz auch eine Angabe zur
kategorie_id gibt. Problematisch wird es nur bei leeren Feldern. Wenn es leere
Felder in einer Tabelle gibt und die Ausgabe der entsprechenden Abfragen mit
Outer Joins nicht akzeptabel ist, knnen Sie auf Inner Joins ausweichen. Um das
zu berprfen, setzen Sie zunchst einen Datensatz aus der Tabelle rufnummern
auf eine kategorie_id, die es in der Zieltabelle gar nicht gibt. Dazu verwenden Sie
einen UPDATE-Befehl:
322
Shells, Skripte und Datenverwaltung 105
mysql> UPATE rufnummern SET kategorie_id='42' WHERE vorname='Dieter';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
berprfen Sie die Tabelle anschlieend, indem Sie diese komplett ausgeben.
Verwenden Sie hierzu die entsprechende SELECT-Anweisung.
mysql> SELECT * FROM rufnummern;
+----+---------+----------+---------+-----------+--------------+
| id | vorname | nachname | vorwahl | rufnummer | kategorie_id |
+----+---------+----------+---------+-----------+--------------+
| 1 | Hans | Panz | 030 | 1234588 | 1 |
| 2 | Willi | Wichtig | 0221 | 4711999 | 1 |
| 3 | Susi | Paschke | 030 | 770815 | 3 |
| 4 | Dieter | Durstig | 02131 | 99912357 | 42 |
+----+---------+----------+---------+-----------+--------------+
4 rows in set (0.01 sec)
Bevor INNER JOIN zum Einsatz kommt, soll erst noch berprft werden, was ein
Outer Join aus dieser Situation macht. Ein JOIN RIGHT soll hier gengen:
mysql> SELECT r.vorname, r.nachname, r.vorwahl,
-> r.rufnummer, k.kategorie
-> FROM kategorien k
-> RIGHT JOIN rufnummern r ON r.kategorie_id = k.id;
+---------+----------+---------+-----------+-----------+
| vorname | nachname | vorwahl | rufnummer | kategorie |
+---------+----------+---------+-----------+-----------+
| Hans | Panz | 030 | 1234588 | Freunde |
| Willi | Wichtig | 0221 | 4711999 | Freunde |
| Susi | Paschke | 030 | 770815 | Bekannte |
| Dieter | Durstig | 02131 | 99912357 | NULL |
+---------+----------+---------+-----------+-----------+
4 rows in set (0.00 sec)
Wie Sie sehen, ergibt der Vergleich r.kategorie_id = k.id kein Ergebnis fr Dieter
Durstig, was mit NULL quittiert wird. Diese unschne Ausgabe kommt bei einem
INNER JOIN nicht vor. Die Syntax entspricht ansonsten der von JOIN RIGHT:
mysql> SELECT r.vorname, r.nachname, r.vorwahl,
-> r.rufnummer, k.kategorie
-> FROM rufnummern r
-> INNER JOIN kategorien k ON r.kategorie_id = k.id;
+---------+----------+---------+-----------+-----------+
| vorname | nachname | vorwahl | rufnummer | kategorie |
+---------+----------+---------+-----------+-----------+
323
SQL-Datenverwaltung 105.3
| Hans | Panz | 030 | 1234588 | Freunde |
| Willi | Wichtig | 0221 | 4711999 | Freunde |
| Susi | Paschke | 030 | 770815 | Bekannte |
+---------+----------+---------+-----------+-----------+
3 rows in set (0.00 sec)
Wie Sie sehen, wird der Datensatz von Dieter Durstig nicht ausgegeben.
Destruktive Kommandos
Abschlieend mssen Sie noch lernen, wie Datenstze, Tabellen und Datenban-
ken gelscht werden. Dieses Thema wird zum Schluss behandelt, um Ihnen
unntige Tipparbeit zu ersparen. Sie knnen mit den Beispielen dieses Unterka-
pitels Ihren Computer praktisch wieder in den ursprnglichen Zustand zurck-
versetzen.
Sie knnen mit SQL keine einzelnen Felder eines Datensatzes lschen. Wenn Sie
das vorhaben, mssen Sie stattdessen das Kommando UPDATE verwenden und
das entsprechende Feld mit nichts (zwei aufeinander folgende Hochkommata)
fllen. Die kleinste Verwaltungseinheit, die Sie lschen knnen, ist eine ganze
Zeile, also ein Datensatz. Verwenden Sie dazu das Kommando DELETE. Im fol-
genden Beispiel wird der Datensatz, der den Kontakt Dieter Durstig enthlt,
gelscht:
mysql> DELETE FROM rufnummern
-> WHERE vorname='Dieter'
-> AND nachname='Durstig';
Query OK, 1 row affected (0.00 sec)
So haben Sie noch ganz nebenbei die Verwendung des Operators AND erlernt. Im
vorliegenden Fall htte natrlich die Angabe des Vornamens ausgereicht, weil die
Tabelle nur einen Dieter enthielt.
Wenn Sie alle Datenstze einer Tabelle lschen wollen, verwenden Sie das fol-
gende Kommando:
mysql> DELETE FROM rufnummern;
Query OK, 3 rows affected (0.00 sec)
Das Beispiel illustriert, wie gefhrlich diese Anweisung ist, wenn Sie schnell tip-
pen und zwischendurch versehentlich die Eingabetaste erwischen. Die Tabelle
rufnummern ist jetzt nmlich leer! Um eine ganze Tabelle zu lschen, verwenden
Sie das Kommando DROP. Hierbei spielt es keine Rolle, ob die Tabelle Datenstze
enthlt oder nicht. Die folgenden beiden Kommandos lschen die selbst erstell-
ten Tabellen:
324
Shells, Skripte und Datenverwaltung 105
mysql> DROP TABLE rufnummern;
Query OK, 0 rows affected (0.00 sec)
Die Tabelle wurde ohne Vorwarnung oder Sicherheitsabfrage unwiderruflich
gelscht.
mysql> DROP TABLE kategorien;
Query OK, 0 rows affected (0.00 sec)
Auch die Tabelle kategorien, die noch Datenstze enthielt, wurde wie fast immer
in weniger als einer hundertstel Sekunde gelscht. berprfen Sie das Ergebnis:
mysql> SHOW TABLES;
Empty set (0.00 sec)
Die Datenbank enthlt jetzt keine Tabellen mehr. Sie knnen die Datenbank jetzt
auch noch lschen. Dazu wird ebenfalls das Kommando DROP verwendet:
mysql> DROP DATABASE kontakte;
Query OK, 0 rows affected (0.00 sec)
Jetzt ist Ihr MySQL wieder im gleichen Zustand wie kurz nach der Installation.
berprfen Sie dies durch die Ausgabe der vorhandenen Datenbanken:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.00 sec)
Die Datenbanken information_schema und mysql gehren zum ursprnglichen
Zustand dazu.
325
In diesem Kapitel lernen Sie die prfungsgerechte Konfiguration von X11,
von Displaymanagern und Windowmanagern. Es wird also zur Abwechs-
lung ausnahmsweise einmal grafisch.
Topic 106: Oberflchen und Desktops
106.1 X11 installieren und konfigurieren
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, X und einen X-Fontserver zu
installieren und zu konfigurieren.
Wichtigste Wissensgebiete:
sicherstellen, dass die Videokarte und der Monitor von einem X-Server unter-
sttzt werden
einen X-Fontserver installieren und konfigurieren
die X-Window-Konfigurationsdatei prinzipiell verstehen und kennen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/X11/xorg.conf
xhost
DISPLAY
xwininfo
xdpyinfo
X
Allgemeines
X-Window ist ein modular aufgebautes, grafisches System, das u.a. von Linux
verwendet wird. Ursprnglich wurde X-Window von MIT (Massachusetts Insti-
tute of Technology), DEC (Digital Equipment Corporation) und IBM (International
Business Machines Corporation) in Zusammenarbeit entwickelt, lange Zeit bevor
es berhaupt Linux gab. Die erste Version erschien schon 1984. Bereits 1987 lag
326
Oberflchen und Desktops 106
X-Window in der Version 11 vor. Diese Versionsnummer ist bis heute aktuell
(X11). Lediglich Revisionsnummern, die durch ein groes R gekennzeichnet sind,
dokumentieren den Fortschritt in der Entwicklung von X.
Nach vier Jahren, also seit 1988, wurde das Projekt vom X Consortium weiter
betreut. Dieses Consortium bestand aus zwlf namhaften Computerherstellern.
Die letzte Version von X, die unter dieser Organisation entwickelt wurde, war
X11R6. Auch diese Bezeichnung hat bis heute in der Verzeichnisstruktur vieler
Unix- und Linux-Systeme ihre Spuren hinterlassen.
Im Jahre 1992 wurde X11R6 von dem frisch gegrndeten XFree86-Team erstmals
in einer freien Version auf den PC portiert. Die Mindestvoraussetzung war ein
i80386-kompatibler Prozessor.
Nachdem 2003 aufgrund von Streitigkeiten innerhalb des Entwicklerteams von
XFree86 keine konstruktive Zusammenarbeit mehr mglich war, bernahm die
X.Org Foundation die Weiterentwicklung des freien Projektes. Bereits im April
2004 hatte die X.Org eine Version X11R6.7.0 vorzuweisen. Am 20. Dezember
2010 erschien die (momentan aktuelle) Version X11R7.6.
Der Aufbau von X
Bei X-Window handelt es sich um eine Client-Server-Applikation. Auch wenn in
den meisten Fllen sowohl die Serverkomponente als auch die Client-Komponen-
ten auf derselben Maschine ausgefhrt werden, durchluft die Kommunikation
zwischen dem X-Server und den X-Clients immer die Netzwerkschicht. Es ist mit-
hilfe des X-Protokolls mglich, die Ausgabe eines Programms (X-Client) auf einem
entfernten Rechner (X-Server) ausgeben zu lassen. Wie dies funktioniert, erfah-
ren Sie etwas spter in diesem Buch. Nun sollen zunchst die wichtigsten Kom-
ponenten von X-Window voneinander unterschieden werden.
X-Server
Der X-Server ist die Komponente, die ber den Kernel und seine Module mit der
Hardware kommuniziert. Er nimmt Eingaben von der Tastatur entgegen und ist
fr die Kommunikation mit der Grafikhardware zustndig. Der X-Server hat kei-
nen Einfluss auf das Aussehen der Anwendungsprogramme, sondern ist nur fr
die Ausgabe zustndig. Zu diesem Zweck kommuniziert er mit den X-Clients.
Zudem kann er auch auf einer entfernten Maschine im Netzwerk laufen.
X-Clients
Ein X-Client ist ein Programm, das mit dem X-Server kommuniziert. Genauer
gesagt: Es handelt sich bei einem X-Client normalerweise einfach um ein Anwen-
327
X11 installieren und konfigurieren 106.1
dungsprogramm. Dieses Programm (z.B. Textverarbeitung, Mail-Client, Browser)
bernimmt die eigentliche Verarbeitung der Daten. Das Ergebnis wird dann an
den X-Server geschickt, der die Ausgabe auf dem Bildschirm durchfhrt.
Windowmanager
Ein Windowmanager ist selbst ein X-Client. Er fungiert als Schnittstelle zu allen
anderen X-Clients. Auerdem ist er fr das Aussehen der Fenster und Schaltfl-
chen innerhalb von X-Window verantwortlich. Es gibt fr Linux viele verschie-
dene Windowmanager. Einige Beispiele sind: KWin, Metacity, Windowmaker,
FVWM95, twm, Sawfish und viele andere mehr. Die Auswahl und Reihenfolge
dieser Aufzhlung soll keine Aussage ber die Qualitt der jeweiligen Window-
manager beinhalten.
Displaymanager
Ein Displaymanager ist hauptschlich fr die Authentifikation von Benutzern
zustndig. Zu diesem Zweck zeigt er einen grafischen Anmeldebildschirm an. Es gibt
mehrere verschiedene Displaymanager, von denen die wichtigsten ausfhrlich in
Abschnitt 106.2, Einen Displaymanager einrichten, beschrieben werden sollen.
Desktop Environment
Ein Desktop Environment ist eine Desktop-Umgebung. Hierbei handelt es sich
um eine vorkonfigurierte Ansammlung von Programmen, einen Windowmana-
ger und einen passenden Displaymanager. Die beiden bekanntesten Desktop-
Umgebungen sind KDE und GNOME. KDE verwendet als Windowmanager
KWin und als Displaymanager den kdm. Neuere Versionen von GNOME arbeiten
mit dem Windowmanager Metacity, whrend ltere den Sawfish verwendet
haben. Als Displaymanager kommt bei GNOME gdm zum Einsatz.
Zusammenfassung des Aufbaus
Zusammenfassend gilt, dass ein Benutzer ber den X-Server mit der Anwendung
(dem X-Client) kommuniziert. Diese Vorstellung mag gewhnungsbedrftig sein,
weil bei der Ausgabe eines Programms auf einem entfernten Rechner der Benutzer
am X-Server sitzt, whrend die Applikation (X-Client) auf einer leistungsfhigeren
Maschine im Keller abgearbeitet wird. Lassen Sie sich hierdurch nicht verwirren.
Sie knnen feststellen, ob und wie Ihre Grafikkarte durch X-Window untersttzt
wird, indem Sie sich auf den Webseiten der Hersteller des jeweiligen X-Servers
kundig machen. Besuchen Sie zu diesem Zweck folgende Seiten:
http://www.x.org/wiki/
http://www.xfree86.org/current/manindex4.html
328
Oberflchen und Desktops 106
Im Normalfall werden heutzutage alle auf dem freien Markt erhltlichen Grafik-
karten untersttzt.
Der Startvorgang von X
Der Startvorgang von X-Window ist im Lauf seiner Entwicklung zu einer ziemlich
komplexen Angelegenheit angewachsen. Die hier beschriebenen Vorgnge sind
etwas vereinfacht dargestellt und enthalten vor allem die fr die Prfung relevan-
ten Informationen. Wenn kein Displaymanager (xdm, gdm oder kdm) verwendet
wird, gibt man zum Starten der grafischen Umgebung das Kommando startx auf
der Kommandozeile ein.
startx
Bei startx handelt es sich um ein Frontend fr das eigentliche Startskript xinit.
Das Skript startx sucht zustzlich Konfigurationsskripte und bezieht deren Inhalt
in den Start der X-Window-Umgebung mit ein. Es gibt distributionsspezifisch
gesehen kleine Unterschiede bei der Ausfhrung von startx. Es sollten aber bli-
cherweise zumindest die folgenden Dateien miteinbezogen werden:
xinitrc Startskript fr xinit
xserverrc Startskript fr den X-Server
.xinitrc benutzerspezifisches Startskript fr xinit
.xserverrc benutzerspezifisches Startskript fr den X-Server
.Xresources bzw. .Xdefaults enthlt benutzerspezifische Einstellungen
Die Dateien mit dem vorangestellten Punkt sind wie immer Konfigurationen,
die sich auf bestimmte Benutzer beziehen. Deshalb befinden sich diese Dateien
in den jeweiligen Benutzerverzeichnissen. Benutzerspezifische Einstellungen
werden gegenber systemweiten Konfigurationen bevorzugt.
xinit
Das Skript xinit ist fr die eigentliche Initialisierung von X-Window zustndig.
Es startet den X-Server und auch die ersten Client-Programme. Wenn xinit kein
Client-Programm ber die Kommandozeile bergeben wurde (das drfte der
Normalfall sein), liest das Skript die Datei .xinitrc im Heimatverzeichnis des
Benutzers ein. Wenn diese nicht existiert, verwendet xinit die systemweite
Datei xinitrc, die sich meist in /etc/X11/xinit befindet.
xinitrc
Die Datei xinitrc (oder ~/.xinitrc) enthlt u.a. Anweisungen darber, welche X-
Clients gestartet werden sollen und welcher Windowmanager zu verwenden ist.
Wenn aus dieser Datei heraus Programme gestartet werden, sollten Sie daran
329
X11 installieren und konfigurieren 106.1
denken, diese in den Hintergrund zu schicken (wie gehabt mit einem Et-Zeichen),
weil sie eventuell andere Programme an ihrer Ausfhrung hindern knnten. Der
Windowmanager (der eigentlich selbst lediglich einen X-Client darstellt) sollte
jedoch immer im Vordergrund laufen.
X-Terminals
Wenn Sie X-Window verwenden, haben Sie weiterhin die Mglichkeit, konsolen-
basierte Programme auszufhren. Damit dies funktioniert, stehen Ihnen diverse
grafische Terminal-Emulationsprogramme zur Verfgung. Das bekannteste ist
xterm. Wenn Sie von einer normalen Konsole aus einfach das Kommando xinit
ausfhren, ohne Optionen oder Argumente zu bergeben, dann startet xinit den
X-Server und als einzigen Client xterm. Der Terminal-Emulator verwendet zu sei-
ner Konfiguration folgende Datei:
/usr/lib/X11/app-defaults/XTerm
In dieser Datei knnen Schriftarten, Farben, Mens und andere Einstellungen
festgelegt werden. Normalerweise knnen Sie mit xterm alle ntigen Aufgaben
durchfhren. Es stehen Ihnen fr den Fall, dass Sie etwas Abwechslung haben
mchten, aber auch andere Terminal-Emulationsprogramme (aterm, eterm, rxvt
usw.) zur Verfgung.
X-Librarys
Grafische Programme verwenden auf die gleiche Art und Weise wie andere Pro-
gramme dynamisch eingebundene Bibliotheken. Dementsprechend mssen
diese Librarys auch genauso im System eingebunden werden. Die Konfiguration
von Librarys wurde bereits ausfhrlich im Abschnitt 102.3, Shared Librarys ver-
walten, besprochen.
Wenn als Desktop-Umgebung GNOME eingesetzt wird, kommen viele Bibliothe-
ken aus dem GTK (GIMP Toolkit) zum Einsatz. Bei der Verwendung der KDE wer-
den bevorzugt QT Librarys verwendet.
Wenn neue Programme installiert werden, mssen bentigte Bibliotheken in der
richtigen Version vorliegen. Achten Sie auf Fehlermeldungen, die bei der Instal-
lation von Binrdateien oder auch beim Kompilieren neuer Programme ausgege-
ben werden. Fehlende oder veraltete Bibliotheken sind der wahrscheinlich hu-
figste Grund dafr, dass sich ein Programm nicht implementieren lsst.
Konfigurationsdateien
Die Hauptkonfigurationsdatei von X ist entweder die Datei xorg.conf oder die
Datei XF86Config, je nach Alter der verwendeten Distribution. Beide Dateien
330
Oberflchen und Desktops 106
befinden sich jeweils im Verzeichnis /etc/X11. Damit ltere Programme nicht ver-
wirrt werden, gibt es bei modernen Distributionen normalerweise einen Link
von XF86Config auf xorg.conf. Vom Aufbau her sind beide Dateien allerdings
absolut identisch. Im weiteren Verlauf wird deshalb nur noch von xorg.conf die
Rede sein. Die Datei ist in unterschiedliche Sektionen unterteilt. Alle Sektionen
haben den gleichen Aufbau:
Section "Sektionsname"
Sektionseintrag
Sektionseintrag
Sektionseintrag
EndSection
Sie mssen die einzelnen Verwendungszwecke der wichtigsten Sektionen fr die
Prfung unterscheiden knnen.
Section Files
Diese Sektion definiert ein paar Pfade, die der Server fr den Betrieb bentigt. In
dieser Sektion gibt es Eintrge des Typs Fontpath. Diese zeigen auf Verzeichnisse,
in denen sich Fonts befinden:
Section "Files"
FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/local"
FontPath "/usr/X11R6/lib/X11/fonts/Type1"
FontPath "/usr/X11R6/lib/X11/fonts/URW"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
FontPath "/usr/X11R6/lib/X11/fonts/PEX"
... weitere Zeilen wurden entfernt ...
EndSection
Fonts knnen auch zentral auf einem X-Fontserver gepflegt werden. Wie ein sol-
cher Server konfiguriert wird, lesen Sie auf den nchsten Seiten. Wenn ein X-Font-
server zum Einsatz kommt, muss die Sektion Files eines Clients so aussehen:
Section "Files"
Fontpath "Unix/:7100"
EndSection
Ein weiterer Eintragstyp in der Sektion Files ist RgbPath. In dieser Datei werden
Farbbezeichnungen zu RGB-Werten bersetzt. Ein solcher Eintrag hat diese Form:
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb.txt"
EndSection
331
X11 installieren und konfigurieren 106.1
Ein kleiner Auszug aus der Datei rgb.txt zeigt, wie die Farbwerte zugeordnet wer-
den. Die erste Spalte gibt den Rotanteil an. Die zweite Spalte zeigt den Grnwert
und die dritte den Blauanteil:
0 250 154 MediumSpringGreen
255 106 106 IndianRed1
255 174 185 LightPink1
255 250 240 FloralWhite
Die Originaldatei auf dem Referenzsystem beinhaltet brigens 752 benannte Far-
ben. Grundstzlich sind alle Eintrge in der Sektion Files optional.
Section Server-Flags
In dieser Sektion werden globale Einstellungen fr den Server festgelegt. Hierbei
handelt es sich z.B. um das Verhalten des Power Managements, Hotkeys u..
Diese Sektion ist ebenfalls optional und wenig prfungsrelevant.
Section Input Device
Diese Sektion enthlt Angaben ber die verwendete Tastatur und die Maus (oder
andere serielle Zeigereinheiten). Zur Erhhung der bersichtlichkeit ist ein
mehrfaches Vorkommen dieser Sektion blich, um die Inhalte sauberer vonein-
ander getrennt zu erhalten:
Section "InputDevice"
Driver "kbd"
Identifier "Keyboard[0]"
Option "Protocol" "Standard"
Option "XkbLayout" "de"
Option "XkbModel" "pc105"
Option "XkbRules" "xfree86"
Option "XkbVariant" "nodeadkeys"
EndSection
Section "InputDevice"
Driver "mouse"
Identifier "Mouse[1]"
Option "Buttons" "5"
Option "Device" "/dev/input/mice"
Option "Name" "ImPS/2 Generic Wheel Mouse"
Option "Protocol" "explorerps/2"
Option "Vendor" "Sysp"
Option "ZAxisMapping" "4 5"
EndSection
332
Oberflchen und Desktops 106
Der Aufbau der Eintrge in diese Sektion ist immer in dieser Abfolge organisiert:
Section "InputDevice"
Driver "Treiber"
Identifier "Name des Gertes"
Option
Option
... weitere Optionen mglich ...
EndSection
Section Monitor und Modes
In der Sektion Monitor sind die technischen Daten eines oder mehrerer Moni-
tore spezifiziert. Anschlieend werden in der Sektion Modes die mglichen ver-
wendbaren Videomodi fr das Gert aufgelistet:
Section "Monitor"
DisplaySize 300 230
HorizSync 30-61
Identifier "Monitor[0]"
ModelName "NEC LCD1500M"
Option "DPMS"
VendorName "NEC"
VertRefresh 43-77
UseModes "Modes[0]"
EndSection
Section "Modes"
Identifier "Modes[0]"
Modeline "1024x768" 81.80 1024 1096 1208 1344 768 769 772 802
Modeline "800x600" 42.11 800 840 920 1040 600 601 604 623
Modeline "800x600" 48.91 800 840 920 1040 600 601 604 627
Modeline "640x480" 25.95 640 656 720 800 480 481 484 499
Modeline "640x480" 30.72 640 664 728 816 480 481 484 502
EndSection
Sie knnen den aktuell eingestellten Modus fr ein Gert ermitteln, indem Sie
das Kommando xvidtune -show verwenden. Das funktioniert aber nur in einer
Shell, die von X-Window aus gestartet wurde. Die Sektion Modes ist optional,
weil die verwendbaren Modi fr einen Monitor auch direkt in der Sektion Moni-
tor eingetragen werden knnen.
Section Device
Die Sektion Device enthlt Angaben ber die verwendete Grafikkarte bzw. meh-
rere Grafikkarten. Der Aufbau dieser Sektion gestaltet sich so:
333
X11 installieren und konfigurieren 106.1
Section "Device"
BoardName "GeForce4 MX 440 with AGP8X"
BusID "1:0:0"
Driver "nv"
Identifier "Device[0]"
VendorName "NVidia"
EndSection
Section Screen
Die Sektion Screen fhrt sozusagen Grafikkarte(n) und Monitor(e) zusammen. Zu
diesem Zweck gibt es sowohl fr den Monitor als auch fr die Grafikkarte
(Device) einen eindeutigen Bezeichner (Identifier). Diese Zusammenfhrung zu
einem Screen geschieht am Ende der Sektion, nachdem unterschiedliche mgli-
che Videomodi aufgelistet werden:
Section "Screen"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "1024x768" "800x600" "640x480"
EndSubSection
... einige Subsektionen wurden aus Platzgrnden entfernt ...
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
X-Fontserver
Ein X-Fontserver (xfs) dient der zentralen Verwaltung von Fonts. Wenn Sie fr
eine grere Menge Arbeitsstationen hufig Schriftarten bereitstellen mssen, ist
die Verwendung eines solchen Servers ideal. Die Konfiguration eines X-Fontser-
vers ist normalerweise kein Problem. Bei den meisten Distributionen ist er sogar
schon vorkonfiguriert, und Sie brauchen den Server nur noch zu starten. Die ein-
Prfungstipp
Stellen Sie fr die Prfung sicher, dass Sie die Sektionen Monitor und Screen nicht mit-
einander verwechseln! Es gibt noch weitere Sektionen innerhalb der xorg.conf- bzw. der
XF86Conf-Datei. Diese sind allerdings fr die Prfung weniger relevant.
334
Oberflchen und Desktops 106
zige Konfigurationsdatei des Servers ist die Datei /etc/X11/fs/config. Diese be-
inhaltet u.a. einen Katalog mit den Pfaden zu den installierten Schriftarten. Die
Konfigurationsdatei enthlt folgende Eintrge:
port = 7100
Hiermit wird der zu verwendende TCP-Port auf 7.100 festgelegt.
client-limit = 10
Mit dem client-limit wird festgelegt, dass maximal zehn Clients gleichzeitig
durch eine Instanz von xfs bedient werden sollen.
clone-self = on
Sollte das client-limit berschritten werden, erstellt der Server Klone von sich
selbst, um weitere Clients zu untersttzen.
use-syslog = on
Eine Protokollierung auf dem Syslog ist aktiviert.
catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
/usr/X11R6/lib/X11/fonts/75dpi:unscaled,
/usr/X11R6/lib/X11/fonts/100dpi:unscaled,
/usr/X11R6/lib/X11/fonts/japanese:unscaled,
/usr/X11R6/lib/X11/fonts/baekmuk:unscaled,
/usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/URW,
/usr/X11R6/lib/X11/fonts/Speedo,
/usr/X11R6/lib/X11/fonts/hellas/Type1
... weitere Zeilen wurden abgeschnitten ...
Die Katalogeintrge verweisen auf die Verzeichnisse mit den verfgbaren Schrift-
arten.
# in decipoints
default-point-size = 120
default-resolutions = 75,75,100,100
Wenn Sie mit der Konfiguration zufrieden sind, starten Sie den Server:
archangel:~ # /etc/rc.d/xfs start
Anschlieend sollten Sie den Server testen. Wenn Sie den Server einfach in die
Datei xorg.conf eines Clients eintragen und der Server funktioniert nicht, wird
X-Window wahrscheinlich nicht starten. Einen Test knnen Sie mit dem Tool
fslsfonts durchfhren:
335
X11 installieren und konfigurieren 106.1
archangel:/etc/X11/fs # fslsfonts -server Unix/:7100
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso10646-1
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-1
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-10
-adobe-courier-bold-o-normal--10-100-75-75-m-60-iso8859-13
... alle weiteren Zeilen wurden abgeschnitten ...
Wenn der Test erfolgreich ist, gibt das Programm alle verfgbaren Schriftarten
des Servers aus. Das knnen sehr viele sein. Wenn Sie zufrieden mit der Konfigu-
ration sind, knnen Sie die Konfiguration der Clients vornehmen, indem Sie fol-
genden Eintrag in der Datei xorg.conf hinzufgen:
Section "Files"
Fontpath "Unix/:7100"
EndSection
Anschlieend starten Sie X-Window auf den Client-Rechnern wie gewohnt.
X-Display exportieren
Sie knnen die Ausgabe eines X-Clients auf einem entfernten X-Server durchfh-
ren. Die Positionierung des Benutzers ist hierbei etwas ungewohnt, weil dieser
sich an der Tastatur und dem Monitor des X-Servers befindet. Das eigentliche
Anwendungsprogramm ist der X-Client, der wahrscheinlich auf einem leistungs-
fhigen Computer im Keller ausgefhrt wird. Denken Sie immer daran, dass ein
Server ein Programm ist und nicht, wie der Volksmund impliziert, ein besonders
leistungsfhiger Computer in einem High-Tower-Gehuse.
Serverseitige Manahmen
Der Computer, an dem sich der Benutzer befindet (X-Server), muss den Zugriff
auf sein Display durch den entfernten Rechner (X-Client) erlauben. Verwenden
Sie dazu das Programm xhost. Um den Zugriff von beliebigen Computern aus zu
erlauben, verwenden Sie folgendes Kommando:
root@ubuntu-desktop:~# xhost +
access control disabled, clients can connect from any host
Um den Zugriff pauschal zu verbieten, verwenden Sie dieses Kommando:
root@ubuntu-desktop:~# xhost -
access control enabled, only authorized clients can connect
Sie knnen mit dem Pluszeichen auch einzelnen Hosts den Zugriff auf das Dis-
play gestatten. Folgendes Kommando erlaubt nur dem Host archangel den Zugriff
auf das Display:
336
Oberflchen und Desktops 106
root@ubuntu-desktop:~# xhost +archangel
archangel being added to access control list
Um einem einzelnen Host den Zugriff auf das Display zu verbieten, verwenden
Sie das Minus-Zeichen:
root@ubuntu-desktop:~# xhost fedora10
fedora10 being removed from access control list
Client-seitige Manahmen
Auf dem Computer, der das Client-Programm ausfhren soll, muss die Variable
DISPLAY so gendert werden, dass die Ausgabe der Anwendung zum X-Server
umgeleitet wird. Wenn Sie z.B. OpenOffice.org auf dem entfernten Rechner
anzeigen lassen wollen, geben Sie folgende Kommandos ein:
archangel:/ # export DISPLAY=ubuntu-desktop:0.0
archangel:/ # ooffice
Die Anwendung OpenOffice.org wird dann auf dem Host archangel ausgefhrt;
die Ein- und Ausgaben erfolgen aber auf dem Computer ubuntu-desktop.
Sollte der Ziel-Host ber mehrere Displays verfgen, muss das Kommando zum
Export der DISPLAY-Variablen entsprechend anders lauten.
xwininfo
Mit dem Programm xwininfo knnen Sie Informationen ber ein einzelnes Fens-
ter erhalten. In Abhngigkeit von den gewhlten Optionen werden unterschied-
liche Parameter ausgegeben. Geben Sie xwininfo einfach in ein Terminal inner-
halb von X ein. Wenn Sie keine Optionen verwenden, zeigt das Programm Ihnen
alle Parameter an, die es erkennt. Sie werden dann dazu aufgefordert, das zu ana-
lysierende Fenster anzuklicken:
root@arch-nb:/# xwininfo
xwininfo: Please select the window about which you
would like information by clicking the
mouse in that window.
xwininfo: Window id: 0x3400003 "Taschenrechner"
Absolute upper-left X: 708
Absolute upper-left Y: 73
Relative upper-left X: 5
Relative upper-left Y: 24
Width: 311
Height: 329
Depth: 24
Visual Class: TrueColor
337
X11 installieren und konfigurieren 106.1
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: NorthWestGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +708+73 5+73 5-366 +708-366
-geometry 311x329-0+49
Sie erhalten also die eindeutige ID des Fensters, Angaben ber die genaue Posi-
tion, die Gre und vieles andere mehr.
xdpyinfo
Mit dem Kommando xdpyinfo erhalten Sie umfangreiche Informationen ber den
installierten X-Server. Es wird verwendet, um die verschiedenen Fhigkeiten
eines X-Servers sowie die Parameter, die zur Kommunikation mit den X-Clients
verwendet werden, zu untersuchen. So knnen Sie auch feststellen, welche
Screens von einem X-Server untersttzt werden.
root@arch-nb:/# xdpyinfo
name of display: :0.0
version number: 11.0
vendor string: The X.Org Foundation
vendor release number: 10502000
X.Org version: 1.5.2
maximum request size: 16777212 bytes
motion buffer size: 256
bitmap unit, bit order, padding: 32, LSBFirst, 32
image byte order: LSBFirst
number of supported pixmap formats: 7
supported pixmap formats:
depth 1, bits_per_pixel 1, scanline_pad 32
depth 4, bits_per_pixel 8, scanline_pad 32
depth 8, bits_per_pixel 8, scanline_pad 32
depth 15, bits_per_pixel 16, scanline_pad 32
depth 16, bits_per_pixel 16, scanline_pad 32
depth 24, bits_per_pixel 32, scanline_pad 32
depth 32, bits_per_pixel 32, scanline_pad 32
keycode range: minimum 8, maximum 255
focus: window 0x2e0000b, revert to Parent
number of extensions: 31
BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER
338
Oberflchen und Desktops 106
DPMS Extended-Visual-Information GLX
MIT-SCREEN-SAVER MIT-SHM MIT-SUNDRY-NONSTANDARD
RANDR RECORD RENDER SECURITY SGI-GLX
SHAPE SYNC TOG-CUP X-Resource XC-APPGROUP
XC-MISC XFIXES XFree86-DGA XFree86-DRI
XFree86-Misc XFree86-VidModeExtension XINERAMA
XInputExtension XKEYBOARD XTEST XVideo
default screen number: 0
number of screens: 1
screen #0:
dimensions: 1024x768 pixels (270x203 millimeters)
resolution: 96x96 dots per inch
depths (7): 24, 1, 4, 8, 15, 16, 32
root window id: 0x78
depth of root window: 24 planes
number of colormaps: minimum 1, maximum 1
default colormap: 0x20
default number of colormap cells: 256
preallocated pixels: black 0, white 16777215
options: backing-store NO, save-unders NO
largest cursor: 64x64
current input event mask: 0xfa8033
KeyPressMask KeyReleaseMask EnterWindowMask
LeaveWindowMask ExposureMask StructureNotifyMask
SubstructureNotifyMask SubstructureRedirectMask FocusChangeMask
PropertyChangeMask ColormapChangeMask
number of visuals: 3
default visual id: 0x21
visual:
visual id: 0x22
class: DirectColor
depth: 24 planes
available colormap entries: 256 per subfield
red, green, blue masks: 0xff0000, 0xff00, 0xff
significant bits in color specification: 8 bits
visual:
visual id: 0x52
class: TrueColor
depth: 32 planes
available colormap entries: 256 per subfield
red, green, blue masks: 0xff0000, 0xff00, 0xff
significant bits in color specification: 8 bits
Die Ausgabe des Programms wurde aus Platzgrnden etwas reduziert. Am besten
wird es sein, wenn Sie Ihren eigenen Computer einer Untersuchung mit xdpyinfo
339
Einen Displaymanager einrichten 106.2
unterziehen. Das Programm kann allerdings nur auf einem laufenden X-Server
ausgefhrt werden.
106.2 Einen Displaymanager einrichten
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, einen Displaymanager zu
installieren und anzupassen. Dieses Prfungsziel umfasst die Displaymanager
xdm (X Display Manager), gdm (Gnome Display Manager) und kdm (KDE Display
Manager).
Wichtigste Wissensgebiete:
den Displaymanager ein- und ausschalten
die Begrung des Displaymanagers ndern
die Standard-Farbtiefe des Displaymanagers ndern
Displaymanager fr den Gebrauch durch X-Terminals konfigurieren
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/inittab
Konfigurationsdateien von xdm
Konfigurationsdateien von kdm
Konfigurationsdateien von gdm
Allgemeines
Wenn Sie einen grafischen Anmeldebildschirm verwenden mchten, bentigen
Sie einen Displaymanager. Heutzutage ist in der Regel bei jeder Linux-Distribu-
tion ein Displaymanager per Voreinstellung nach der Installation vorhanden. Es
gibt verschiedene Displaymanager. Der Standard-Displaymanager ist xdm. Er
gehrt ursprnglich zum XFree86-Projekt. Die Desktop-Umgebungen GNOME
und KDE haben jeweils einen eigenen Displaymanager im Marschgepck. KDE
verwendet kdm, und GNOME verwendet gdm.
Starten und Beenden eines Displaymanagers
Sie knnen einen Displaymanager einfach durch das Ausfhren der entsprechen-
den Binrdatei starten. Fhren Sie dazu einfach das Kommando xdm zum Starten
des xdm-Displaymanagers aus. Entsprechend starten Sie alternativ kdm oder gdm.
340
Oberflchen und Desktops 106
Normalerweise wird eine grafische Anmeldung gestartet, indem das System in
den Runlevel wechselt, der jeweils den grafischen Login bereitstellt. Das ist in
den meisten Fllen der Runlevel 5. Debian und Ubuntu starten allerdings den
grafischen Login bereits in Runlevel 2. Um manuell in den Runlevel 5 zu wech-
seln, geben Sie folgendes Kommando ein:
archangel:~ # init 5
Wenn Sie wollen, dass das System nach einem Neustart automatisch in den Run-
level 5 hochfhrt, dann mssen Sie diesen Runlevel in der Datei /etc/inittab als
Default festlegen. Modifizieren Sie dazu folgenden Eintrag:
# The default runlevel is defined here
id:3:initdefault:
ndern Sie einfach die 3 in eine 5, und beim nchsten Neustart steht der Display-
manager zur Verfgung.
Konfigurationsdateien der Displaymanager
Normalerweise gibt es kaum einen Grund, die Einstellungen fr einen Display-
manager zu verndern. Sie mssen aber fr die Prfung zumindest die wichtigs-
ten Konfigurationsdateien kennen:
xdm /etc/X11/xdm-config, /etc/X11/Xresources und /etc/X11/xdm/Xsetup fr
Hintergrundbild und Farben
kdm /etc/X11/kdm/kdmrc
gdm /etc/X11/gdm/init/Default und /etc/opt/gnome/gdm/gdm.conf
Diese Verzeichnisse stimmen nicht immer mit der Wirklichkeit berein. Insbe-
sondere kdm und gdm platzieren ihre Konfigurationsdateien gerne in anderen
Verzeichnissen.
Die Konfiguration von xdm und kdm ist grundstzlich sehr hnlich, weil diese bei-
den Displaymanager eine gewisse Verwandtschaft aufweisen. Vllig different
dazu ist gdm. Sie sollten gdm normalerweise mit dem Frontend gdmconfig konfi-
gurieren.
106.3 Hilfen fr Behinderte
Wichtung: 1
Beschreibung: Sie sollten die Existenz von Hilfen fr Behinderte kennen.
341
Hilfen fr Behinderte 106.3
Wichtigste Wissensgebiete:
Tastatureinstellungen fr Behinderte (AccessX)
visuelle Einstellungen und Themen
assistive Techniken
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
Klebrige und Wiederholungstasten
Langsame-, Bounce- und Umschalt-Tasten
Maustasten
Desktop-Themen mit hohem Kontrast oder groer Schrift
Screenreader
Braille-Anzeige
Bildschirmvergrerung
Tastatur auf dem Bildschirm
Gesten
Orca
GOK
emacspeak
Allgemeines
Es gibt fr Linux etliche freie Softwareprodukte, die es behinderten Menschen
ermglichen, trotz schwerster Handicaps mit einem Computer zu arbeiten. Die
Untersttzungen, die solche Produkte bereitstellen, werden als assistive Techniken
bezeichnet. Im Normalfall werden durch diese Hilfsmittel Ein- und Ausgabegerte
der Behinderung entsprechend transformiert. Es gibt auch quivalente Produkte
aus der Windows-Welt. In den heutigen Windows-Versionen sind allerdings bei-
spielsweise keine Screenreader integriert. Diese mssen gegebenenfalls zugekauft
werden. Leider finanzieren die Krankenkassen aus Kostengrnden nur preiswerte
Lsungen, die meist stranfllig sind und keine gute Integration bieten.
Sehbehinderte und Blinde
Zur Untersttzung sehbehinderter oder gar blinder Menschen sind zwei assistive
Techniken von besonderer Bedeutung. Zum einen sind dies die Screenreader. Wie
die Bezeichnung vielleicht schon vermuten lsst, liest ein Screenreader den Inhalt
des Bildschirms. Hierbei kann es sich um normalen Text wie zum Beispiel eine Mail
oder eine Webseite handeln. Ein Screenreader liest aber auch Menleisten von
342
Oberflchen und Desktops 106
Anwendungsprogrammen und deren Menpunkte. Die Ausgabe erfolgt dann ent-
weder akustisch durch einen Vorleser und/oder ber eine sogenannte Braillezeile.
Eine Braillezeile als zweite assistive Technik ist ein Gert, dass Schriftzeichen in
Brailleschrift bersetzen kann. Bei der Brailleschrift handelt es sich um die wohl
gngigste Blindenschriftart, bei der ein ertastbares Punktmuster von der sehbe-
hinderten oder blinden Person gelesen wird. Es gibt hier auch noch Varianten:
Normalschrift ein Braillezeichen entspricht genau einem Buchstaben.
Basisschrift Gro-/Kleinschreibung entfllt.
Vollschrift enthlt zustzliche Zeichen fr ei, au, sch und hnliche.
Kurzschrift ist im Prinzip eine Art Stenografie.
Sie brauchen diese Varianten nicht genau zu kennen. Es gibt aber Screenreader-
Programme (z.B. Orca), wo zumindest die Kurzschrift konfigurierbar ist.
Ein Brailledisplay als solches ist ein Gert, das in der Regel unter der Tastatur oder
unter dem Notebook platziert wird. Damit ist nur noch die eigentliche Braille-
zeile sichtbar bzw. ertastbar. Aus dieser Zeile ragen Stifte hervor, die durch ein
piezoelektrisches Prinzip angetrieben werden. Die Stifte stellen die Braillezeichen
dar. Es sind Braillezeilen mit 20, 40 oder 80 Zeichen auf dem Markt erhltlich.
Leider steigt hierbei der Preis in etwa proportional mit der Anzahl der darstellba-
ren Zeichen.
Barrierefreiheit
Die in Linux-Systemen integrierten Hilfstechnologien werden unter dem Schlag-
wort Barrierefreiheit zusammengefasst. Sie knnen die entsprechenden Einstel-
lungen mit grafischen Frontends zentral konfigurieren. Die auf den folgenden
Seiten dargestellten Abbildungen wurden unter GNOME erstellt. Es gibt aber
auch entsprechende Produkte fr KDE.
ber den Menpfad System Einstellungen Hilfstechnologien gelangen Sie
zur zentralen Einstellungsseite fr Barrierefreiheit (siehe Abbildung 1). Von hier
aus gelangen Sie zur Konfiguration der Tastatursteuerung, der Maussteuerung
oder zu den Einstellungen fr barrierefreies Anmelden. Die Schaltflche Bevor-
zugte Anwendungen versetzt Sie in die Lage, gleich bei der Anmeldung zustz-
liche Hilfsprogramme zu starten. Beachten Sie, dass von dieser Stelle aus die
Hilfstechnologien auch pauschal ein- bzw. ausgeschaltet werden knnen.
Menschen, die motorisch eingeschrnkt sind, haben besondere Ansprche, was
die Abfrage und Interpretation der Tastatur durch den Computer anbelangt
(siehe Abbildung 2). So knnen klebrige Tasten verwendet werden, wenn jemand
nicht in der Lage ist, zwei Tasten gleichzeitig zu bettigen (z. B. (Strg) + (C),
343
Hilfen fr Behinderte 106.3
(Strg) + (V) usw.). Wenn Tasten oft durch versehentliche, kurze Berhrungen
flschlicherweise bettigt werden, kann eine Tastenverzgerung Abhilfe schaf-
fen. Es werden dann nur noch die Tastenanschlge interpretiert, die ber eine
einstellbare Mindestzeit vorgelegen haben. Fr stark zitternde Personen gibt es
die Mglichkeit, mehrfach angeschlagene Tasten ignorieren zu lassen, wenn
diese innerhalb einer zu kurzen, einstellbaren Zeit erfolgt sind.
Abbildung 1 Die Hauptseite der Einstellungen fr Barrierefreiheit bietet
zentralen Zugriff auf assistive Techniken.
Abbildung 2 Barrierefreie Tastatureinstellungen helfen vor allem motorisch
eingeschrnkten Personen.
344
Oberflchen und Desktops 106
Sie knnen auch den Mauszeiger ber die Tastatur ansteuern. Das ist einerseits inte-
ressant fr Anwender, die vielleicht aufgrund ihrer Armlnge nicht zwischen meh-
reren Eingabegerten wechseln mchten. Andererseits knnen diese sogenannten
Maustasten auch in Kombination mit einem Screenreader die Navigation fr blinde
Menschen erheblich erleichtern. Wenn der Mauszeiger etwa in einer geraden Linie
von oben nach unten bewegt werden muss, kann das mit der Nach-unten-Taste des
Editierblocks erheblich genauer erledigt werden als mit der Maus oder einem ande-
ren Zeigegert. Das gilt ganz besonders dann, wenn man den Mauszeiger nicht
sehen kann. Die Konfiguration der Maustasten sehen Sie in Abbildung 3.
Abbildung 3 Die Steuerung des Mauszeigers mit den Cursortasten kann fr blinde
Menschen in Kombination mit einem Screenreader sehr hilfreich sein. Blinde Menschen
verwenden brigens normalerweise keine Maus.
Damit sehbehinderte Menschen die Farben und Schriftarten des Begrer-Dis-
plays fr die Anmeldung ndern drfen, brauchen sie erhhte Rechte. Das liegt
daran, dass sich diese nderungen nicht auf einen einzelnen Benutzer beschrn-
ken lassen. Schlielich kann das System nicht wissen, wer sich gleich anmelden
wird, weshalb diese Konfiguration systemweite Auswirkungen hat. Zur leichte-
ren Orientierung knnen Systemklnge zugewiesen werden. Diese signalisieren
die Bereitschaft des Anmeldebildschirms, die erfolgreiche Anmeldung oder eine
fehlgeschlagene Anmeldung. Die mglichen Einstellungen fr diesen Bereich
zeigt Abbildung 4.
Gerade hinsichtlich Interpretation der Maus gibt es eine Menge Mglichkeiten.
Das ist besonders bei Einschrnkungen der Beweglichkeit hilfreich. Es kann auch
sein, dass die Maus durch ein anderes Zeigegert ersetzt wird, das nicht so przise
zu handhaben ist wie eine gewhnliche PC-Maus. Beispiele hierfr wren Eye-
tracker oder auch Headtracker, bei denen die Bewegungen von Augen bzw. Kopf
an den Computer bertragen werden. Insbesondere Mausklicks knnen auf viele
345
Hilfen fr Behinderte 106.3
verschieden Arten von Bewegungen (Gesten) vorkonfiguriert werden, wie Sie in
Abbildung 5 sehen knnen.
Abbildung 4 Menschen mit Sehbehinderung werden schon bei der Anmeldung am System
untersttzt.
Abbildung 5 Behindertengerechte Mausuntersttzung wird durch Beobachtung
der Hand-, Kopf- oder Augenbewegungen (Gesten) gewhrleistet.
346
Oberflchen und Desktops 106
Im Bereich Bevorzugte Anwendungen knnen Sie festlegen, welche gngigen
Anwendungen bei der Anmeldung des Benutzers gestartet werden sollen (siehe
Abbildung 6). Auf die abgebildeten Anwendungen wird im Verlauf des Kapitels
noch nher eingegangen.
Abbildung 6 Assistive Techniken knnen auch automatisch bei der Anmeldung
gestartet werden.
Wenn Sie den Computer zur Nutzung von Barrierefreiheit konfiguriert haben,
knnen Sie ber das Rollstuhlsymbol (siehe Abbildung 7) im Infobereich schnell
auf die allgemeinen Einstellungen fr assistive Techniken (siehe Abbildung 8)
zugreifen. Hier ist die Konfiguration von hufig verwendeten Optionen der Bar-
rierefreiheit mglich.
Abbildung 7 Schneller Zugriff auf die allgemeinen Einstellungen
zur Barrierefreiheit wird ber den Infobereich angeboten.
Damit Menschen mit eingeschrnkter Sehfhigkeit leichter mit dem Desktop
interagieren knnen, bietet sich die Verwendung einer kontrastreichen Optik an.
Diese Konfiguration nehmen Sie einfach in den normalen Erscheinungsbild-Ein-
stellungen vor (siehe Abbildung 9).
347
Hilfen fr Behinderte 106.3
Abbildung 8 Das sind die allgemeinen Einstellungen, die ber den Infobereich schnell
zugnglich sind.
Abbildung 9 Kontrastreiche Einstellungen werden ganz normal ber das Erscheinungsbild
konfiguriert.
Orca
Orca ist in der Hauptsache ein Screenreader fr blinde oder stark sehbehinderte
Menschen. Das Programm enthlt zwar auch eine Bildschirmlupe fr stark Sehge-
schdigte, aber die eigentliche Strke von Orca liegt im Vorlesen und in der
348
Oberflchen und Desktops 106
Untersttzung von Brailledisplays. Beachten Sie, dass hierfr der Daemon BRLTTY
installiert und geladen sein muss.
Es sollten natrlich zuerst die Grundeinstellungen von Orca so vorgenommen
werden, dass diese mit den Gegebenheiten und den Ansprchen des Benutzers
bereinstimmen. Nachdem Orca gestartet wurde, erscheint ein Fenster mit
lediglich drei Schaltflchen, nmlich: Einstellungen, Beenden und Hilfe. Orca
ist in dieser Phase schon aktiv und kann auch einem sehbehinderten Menschen
ermglichen, die Konfiguration von Orca selbst durchzufhren. Wenn Sie die
Schaltflche Einstellungen bettigen, gelangen Sie zu den allgemeinen Einstel-
lungen des Programms (siehe Abbildung 10). Hier kann beispielsweise festge-
legt werden, ob es sich bei dem verwendeten Computer um ein Notebook oder
um einen Desktopcomputer handelt. Sie sollten gleich festlegen, ob Orca bei
der Anmeldung automatisch starten soll oder ob Texte unterhalb des Mauszei-
gers immer vorgelesen werden sollen. Handelt es sich bei dem Anwender nicht
um einen versierten Linux-Nutzer, sollten Sie an dieser Stelle auch den Zugriff
durch gksu blockieren, damit nicht versehentlich administrative Eingriffe vorge-
nommen werden.
Abbildung 10 Hier werden die Grundeinstellungen fr Orca vorgenommen.
Auf der zweiten Registerkarte Sprache sind etliche Einstellungen durchfhrbar
(siehe Abbildung 11). Das Sprachsystem und der Synthesizer werden normaler-
349
Hilfen fr Behinderte 106.3
weise nicht modifizierbar sein, weil ein Standardsystem dafr keine Auswahl
anbietet.
Das Pulldown-Men Stimmeinstellungen ist keine Auswahl fr das Programm
selbst, sondern eine Vorgabe fr die als nchstes folgenden Menpunkte. Wenn
Sie hier Vorgabe whlen, bestimmen Sie als nchstes, wie z.B. mit normalem
Text bezglich der Tonhhe, Sprechgeschwindigkeit und Lautstrke zu verfahren
ist. Whlen Sie Grobuchstaben, um festzulegen, wie Text vorgelesen wird, der
in Blockbuchstaben geschrieben wurde.
Die wichtigste Einstellung auf dieser Seite finden Sie im Pulldown-Men Person.
Hier wird die Landessprache der Ausgabe festgelegt. Wenn Sie hier nicht die rich-
tige Auswahl treffen, werden Texte mit auslndischem Akzent vorgelesen. Ein
Voicesynthesizer mit Akzent ist brigens praktisch nicht zu verstehen.
Der Parameter Grad bestimmt die Geschwindigkeit der Sprachausgabe. Die bri-
gen Optionen sind selbsterklrend.
Abbildung 11 Die Sprachausgabe erlaubt ein sehr fein abgestimmtes Setup.
Orca untersttzt auch die Ausgabe von Text ber eine Braillezeile. Die Aktivie-
rung fhren Sie auf der Registerkarte Braille aus, wie in Abbildung 12 zu sehen
350
Oberflchen und Desktops 106
ist. Wenn Sie die Option Braille-Monitor aktivieren auswhlen, wird der
Inhalt, der auf der Braillezeile ausgegeben wird, zustzlich auf dem normalen
Monitor angezeigt. Sie sehen das auf den Abbildungen 14 und 15 jeweils am obe-
ren Bildrand. Es ist so fr sehende Administratoren leichter nachzuvollziehen,
was die Braillezeile gerade darstellt.
Abbildung 12 Orca bietet auch eine Untersttzung fr Braillezeilen.
Mit Vorsicht ist die Registerkarte Tastaturecho zu genieen (siehe Abbildung
13). Wenn Sie hier zu viele Optionen auf einmal auswhlen, wird der Vorleser Sie
mit Informationen berfluten. Grundstzlich ist das Tastaturecho dazu da, gerade
ber die Tastatur eingegebene Zeichen zu wiederholen, damit der Blinde Kon-
trolle ber seine Eingabe erlangt. Sie sollten diese Funktion also unbedingt nut-
zen. Experimentieren Sie mit der Auswahl etwas herum, um ein Gefhl dafr zu
bekommen. Ein wortweises Echo liest ein Wort vor, sobald ein Leerzeichen regis-
triert wurde. Das satzweise Echo wird am Ende eines Satzes durchgefhrt. Akti-
onstasten werden brigens bei uns in englischer Sprache mit deutschem Akzent
vorgelesen, wodurch es zu Wortkreationen wie Backschpaake fr Backspace
kommt. Auch Reh turn! statt Return klingt etwas gewhnungsbedrftig.
351
Hilfen fr Behinderte 106.3
Abbildung 13 Es kann sehr genau festgelegt werden, welche Informationen ber die Sprach-
ausgabe weitergegeben werden sollen.
Abbildung 14 Orca liest auch Texte vor und gibt diese auf Wunsch zustzlich ber die
Braillezeile aus.
352
Oberflchen und Desktops 106
Die beiden Abbildungen 14 und 15 zeigen Orca in Aktion. Es ist also fr Sehbe-
hinderte mit etwas bung kein Problem, im Internet zu surfen oder ein Doku-
ment mit OpenOffice.org zu erstellen.
Abbildung 15 Orca untersttzt alle wichtigen Anwendungsprogramme akustisch und ber die
Braillezeile.
GOK
Bei GOK handelt es sich um eine ausgeklgelte Form der Bildschirmtastatur. Die
Eingabe erfolgt ber ein serielles Gert wie eine Maus, einen Headtracker oder
Eyetracker. Da ein solches Onscreen-Keyboard nicht mit der Tastatur bedient
wird und somit auch kein Zehn-Finger-System zum Einsatz kommt, sind die Tas-
ten auch nicht wie gewohnt angeordnet.
Um die Eingabe von Text weiter zu vereinfachen, versucht GOK anhand eines
Wrterbuches, die Vervollstndigung eines Wortes zu prognostizieren und zeigt
entsprechende Vorschlge. In Abbildung 16 sehen Sie, dass das gewnschte Wort
helpful schon nach Eingabe der ersten drei Zeichen zur Verfgung steht.
353
Hilfen fr Behinderte 106.3
Abbildung 16 hnlich wie ein Wrterbuch fr SMS schlgt GOK automatisch Vervollstndi-
gungen fr Wrter vor.
emacspeak
Der Editor emacs verfgt ber einen eigenen Screenreader. Dieser Screenreader
heit emacspeak. Da er sich optisch nicht von dem normalen emacs-Editor unter-
scheidet, soll auf Abbildungen an dieser Stelle verzichtet werden.
Prfungstipp
Der Editor emacs ist eine Art Kultobjekt; Sie sollten in der Prfung also wissen, dass emacs
ber ein Vorlesemodul verfgt. Es gibt noch einige andere Programme, die unter Assistive
Techniken gefhrt werden. Zu nennen wren hier zumindest noch die Produkte Gnoper-
nicus (ein Vorlufer von Orca) und dasher (ein Texteingabeprogramm fr auergewhn-
liche Eingabegerte). Diese sind allerdings nicht Bestandteil der Prfungen.
355
Nun geht es um eine der wichtigsten Ttigkeiten eines Administrators: das
Verwalten von Benutzerkonten, Gruppenkonten und das Schaffen einer
anfnglichen Umgebung, in der die Benutzer arbeiten knnen.
Topic 107: Administrative Aufgaben
107.1 Benutzer- und Gruppenkonten und
dazugehrige Systemdateien verwalten
Wichtung: 5
Beschreibung: Kandidaten sollten in der Lage sein, Benutzerkonten hinzuzuf-
gen, zu entfernen, vorbergehend zu deaktivieren und zu verndern.
Wichtigste Wissensgebiete:
Benutzer und Gruppen hinzufgen, ndern und entfernen
Benutzer- und Gruppeninformationen in password/group-Datenbanken verwalten
spezielle und beschrnkte Konten anlegen und verwalten
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/passwd
/etc/shadow
/etc/group
/etc/skel
chage
groupadd
groupdel
groupmod
passwd
useradd
userdel
usermod
356
Administrative Aufgaben 107
Allgemeines
Die Benutzer- und Gruppenverwaltung unter Linux unterscheidet sich stark von
den Konzepten, die unter Windows oder unter Novell eingesetzt werden. Das
liegt u.a. daran, dass auch die Art der Vergabe von Rechten auf einem vllig ande-
ren Prinzip basiert. Nach der Anmeldung am System sind Benutzer sowohl unter
Windows als auch unter Novell sofort Mitglieder mehrerer Sicherheitsgruppen
und knnen aufgrund dieser Gruppenmitgliedschaften auf verschiedenste Res-
sourcen zugreifen. Ein Linux-Benutzer muss bei Bedarf selbst in die entsprechen-
den Benutzergruppen wechseln, wenn er auf Ressourcen zugreifen mchte, fr
die er sonst keine Berechtigungen htte.
Die Konzepte der Zugriffssteuerung unterscheiden sich also von Betriebssystem
zu Betriebssystem. Die Steuerung ber ACLs (Access Control List) ist fr die LPI-
Prfungen nicht von Bedeutung und soll deshalb hier auch nur der Vollstndig-
keit halber erwhnt werden. ACLs sind Zugriffssteuerungslisten, die mehrere
Benutzer und Sicherheitsgruppen beinhalten knnen, um so diesen Benutzern
und Gruppen jeweils einen Satz von Berechtigungen fr die jeweilige Ressource
zu erteilen.
Die Steuerung der Berechtigungen fr den Zugriff auf Verzeichnisse und Dateien
funktioniert ursprnglich wie folgt:
Eine Ressource (Datei oder Verzeichnis) kann lediglich einen Besitzer im Sinne
von einem Benutzer und eine Besitzergruppe haben. Aufgrund dieser beiden
Zuordnungen knnen Berechtigungen vergeben werden, die sich aber lediglich
auf Lesen, Schreiben und Ausfhren beziehen. Eine weitere Rechtevergabe kann
natrlich noch fr others, also alle anderen, angewendet werden. Weil das alles so
ist, macht es unter Linux keinen Sinn, gleichzeitig Mitglied mehrerer Sicherheits-
gruppen zu sein. Ein Benutzer ist nach erfolgreicher Anmeldung Mitglied einer
einzigen Gruppe, die auch als die initiale Gruppe bezeichnet wird. Mchte dieser
Benutzer auf Dateien zugreifen, die er aufgrund seiner Mitgliedschaft in einer
anderen Gruppe verwenden darf, so muss er im laufenden Betrieb in diese
Gruppe wechseln. Beim Wechsel in eine andere Gruppe startet Linux eine neue
Shell, die sich als Subshell der Login-Shell des Benutzers versteht. Bentigte Vari-
ablen und Aliase mssen gegebenenfalls exportiert werden. Um wieder in die
ursprngliche Gruppe zurckzuwechseln, verlsst der Benutzer die Subshell ein-
fach wieder durch Eingabe von exit.
Auf den folgenden Seiten geht es um die Administration von Benutzern und
Gruppen. Sie sollten fr die Prfung lernen, die fr diese Aufgaben bentigten
Befehle und Dateien zu verwenden.
357
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
passwd, shadow, group, gshadow
/etc/passwd
Die wichtigste Datei, die mit der Verwaltung von Benutzerkonten in Zusammen-
hang steht, ist die Datei /etc/passwd. Fr die Prfung sind genaue Kenntnisse die-
ser Datei dringend erforderlich. Beispiel:
root:x:0:0:root:/root:/bin/bash
harald:x:1000:100:Harald Maaen:/home/harald:/bin/bash
michaela:x:1001:100:Michaela Maaen:/home/michaela:/bin/bash
dominik:x:1002:100:Dominik Maaen:/home/dominik:/bin/bash
willi:x:1003:100:Willi 0173-1234567:/home/willi:/bin/bash
Bei dieser Datei handelt es sich um eine durch Doppelpunkte separierte Textda-
tei, die die Benutzerinformationen enthlt. Die einzelnen Felder sollen hier am
Beispiel von Benutzer Willi erlutert werden:
Das erste Feld willi ist der Anmeldename des Benutzers. Er wird beim Login
verwendet.
Das zweite Feld, hier ein x, enthlt das Passwort. Dieses Passwort befindet sich
in diesem Fall in der shadow-Datei. Zu diesem Thema kommen wir spter
noch. Wrde die shadow-Datei nicht verwendet werden, dann she das Pass-
wort fr Willi so aus:
:$2a$10$c97VgTb9Jm.HB.PS09AwtOO/E0ra/MeAtXoYDxeKcg2poenShfuau:
Wenn Sie ein Benutzerkonto neu erstellen mchten, knnen Sie hier auch vor-
bergehend ein * einsetzen, um eine Sperrung des Kontos zu bewirken, bis
dieses tatschlich verwendet wird. Achten Sie immer auf leere Kennworte,
weil diese natrlich eine Sicherheitsbedrohung des ganzen Systems und auch
Ihrer Daten bedeuten knnen.
Die dritte Position 1003 ist die User-ID. Das ist ein eindeutiger Bezeichner fr
jeden Benutzer, der unter der Motorhaube dazu verwendet wird, die Rechte
an einer Datei oder einem Verzeichnis zu definieren. Daraus resultiert auch
die Problematik, die entsteht, wenn man ein Linux-System neu installiert,
aber den alten Datenbestand beibehalten hat. Es wird dann hchstwahr-
scheinlich passieren, dass die Berechtigungen auf Dateien und Verzeichnisse
vllig durcheinander geraten. Abhilfe: Sorgen Sie dafr, dass die Benutzer
nach der Neuinstallation dieselben Benutzer-IDs bekommen, die sie vor der
Neuinstallation hatten. Der Benutzer Root bekommt immer die ID 0. Der
Benutzer mit dieser ID darf auf alle Dateien und Verzeichnisse zugreifen. Die
ersten hundert UIDs sind eigentlich fr administrative Benutzer und Pro-
gramme gedacht. Dies ist allerdings nicht zwingend vorgeschrieben, sondern
lediglich eine Konvention.
358
Administrative Aufgaben 107
Das vierte Feld, hier die 100, enthlt die Group-ID. Das ist die initiale Gruppe
des Benutzers, die in diesem Fall in der Datei /etc/group auf die Gruppe users
zeigt. Es muss beim Erstellen neuer Benutzer immer auf die Eindeutigkeit die-
ser Kennung geachtet werden, weil es sonst zu unerwnschten Zugriffsbe-
rechtigungen auf Dateien kommen kann. Das liegt daran, dass sich das Datei-
system eigentlich fr die Erteilung der Zugriffsberechtigungen nicht den
Namen des Benutzers, sondern lediglich dessen UID merkt. Aus eben diesem
Grund verwendet Red Hat die Gruppe users nicht, sondern legt fr jeden
neuen Benutzer auch eine neue Gruppe an.
Die fnfte Spalte Willi 0173-1234567 ist das sogenannte GECOS-Feld. Es kann
Informationen ber den Benutzer enthalten, die z.B. mit dem Programm
finger abgefragt werden knnen. In der Regel stehen in diesem Feld Vorname
und Nachname des Benutzers. Ursprnglich war das GECOS-Feld so gedacht,
dass es Informationen in folgender Reihenfolge enthalten sollte:
vollstndiger Name
Bronummer und Gebude
Nebenstellenanschluss im Bro
private Telefonnummer
Ein Benutzer kann das GECOS-Feld auch selbst ndern, indem er das Kom-
mando chfn (change fullname) benutzt. Ein Beispiel fr die Ausgabe der
Befehle chfn und finger folgt nach dieser Auflistung.
Das sechste Feld /home/willi enthlt den Pfad zum Heimatverzeichnis des
Benutzers.
Als Letztes wird in Feld sieben /bin/bash der Pfad zur LoginShell des Benut-
zers angegeben. Wenn hier keine ausfhrbare Datei angegeben wird, kann
sich der Benutzer nicht anmelden. Wenn das gar erwnscht sein sollte, ist es
auch mglich, hier /bin/false anzugeben. Das ist z.B. interessant, wenn ein
Benutzer nur Mails abholen darf.
Das Beispiel fr chfn, gefolgt von finger:
willi@archangel:/> chfn
ndere Finger-Informationen fr willi.
Password:
Geben Sie den neuen Wert ein, oder drcken Sie ENTER fr den Alten
Voller Name: Willi Wichtig
Bro Nummer []: 1
Bro Telefon []: 01
Private Rufnummer []: 030 12345
Weitere Informationen:
359
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
Finger-Informationen gendert.
willi@archangel:/>
Und nun das Ergebnis durch die Abfrage mit finger:
archangel:~ # finger willi
Login: willi Name: Willi Wichtig
Directory: /home/willi Shell: /bin/bash
Office: 1, 01 Home Phone: 030 12345
On since Tue Sep 4 18:31 (CEST) on pts/
2, idle 0:02, from connor.homelinux.net
No Mail.
No Plan.
/etc/shadow
Die Datei /etc/shadow enthlt in der Hauptsache die Passwrter der Benutzer. Der
Vorteil, der sich daraus ergibt, ist der, dass die shadow-Datei nicht fr alle lesbar
gespeichert werden muss, wodurch sich die Sicherheit der Passwrter erhht. In
der Datei /etc/passwdwerden Kennwrter zwar ohnehin auch verschlsselt abge-
legt, aber diese Datei ist fr jeden lesbar. Wenn kein Shadow-System auf dem
Computer installiert ist, befindet sich das Passwort, wie bereits besprochen, in
der zweiten Spalte der Datei /etc/passwd. Die Felder der Datei /etc/shadow glie-
dern sich in dieser Reihenfolge:
Das erste Feld enthlt den Anmeldenamen. Dieser stimmt mit dem ersten Feld
der /etc/passwd-Datei berein.
Das zweite Feld enthlt das verschlsselte Passwort. Die Verschlsselung
geschieht, je nach Distribution, mittels DES oder MD5. Die Verschlsselung
mit MD5 ist nicht sicherer als die mit DES, erlaubt jedoch die Verwendung
lngerer Passwrter. Bei der Verwendung von DES ist die Kennwortlnge auf
acht Zeichen begrenzt. Lngere Passwrter werden praktisch abgeschnitten.
Zeitpunkt der letzten Kennwortnderung. Dieser Wert wird in ganzen Tagen
ab dem 1. Januar 1970 angegeben.
Mindestanzahl von Tagen zwischen Kennwortnderungen
maximale Anzahl von Tagen zwischen Kennwortnderungen
Der Benutzer wird vor dem Ablauf seines Kennwortes gewarnt. Dieser Wert
zeigt an, wie viele Tage vor dem Ablauf des Kennwortes der Benutzer zur Pass-
wortnderung aufgefordert wird.
Wenn das Kennwort abgelaufen ist, wird das Konto deaktiviert. Dieses Feld
enthlt die Anzahl der Tage bis zur Deaktivierung des Accounts nach Ablauf
des Kennwortes.
360
Administrative Aufgaben 107
Ablaufdatum des Benutzerkontos (falls ablaufend)
reserviert fr zuknftige Zwecke
Ein Beispiel:
dominik: $2a$10$7oAMWZUt...OwK8kMhuAk:13760:1:21:1:3:::
Der Benutzer heit dominik und verfgt ber ein Passwort. Die Ausgabe des Pass-
wortes wurde der bersichtlichkeit halber gekrzt. Das Passwort wurde zuletzt
am 04.09.2007 gendert (01.01.1970 + 13760 Tage). Der Benutzer darf sein Kenn-
wort hchstens 1-mal tglich ndern, muss es jedoch mindestens alle 21 Tage
ndern. 1 Tag vor Ablauf des Kennwortes wird er vom System gewarnt. Nach
Ablauf des Kennwortes kann er sich noch 3 weitere Tage anmelden. Sein Konto
luft nie ab.
/etc/group
hnlich wie bei den Benutzerkonten, gibt es fr die Benutzergruppen auch eine
Hauptkonfigurationsdatei, die /etc/group, und eine vom Shadow-System erstellte
Datei mit der Bezeichnung /etc/gshadow. Eine group-Datei knnte in etwa folgen-
dermaen aussehen:
root:x:0:
bin:x:1:daemon
daemon:x:2:
users:x:100:
sales:x:133:michaela,dominik,willi
Die verwendeten Felder beinhalten in dieser Reihenfolge:
Name der Gruppe
verschlsseltes Passwort oder den Verweis in die /etc/gshadow-Datei
Gruppen-ID (kurz GID)
Liste der Gruppenmitglieder, die durch ein Komma voneinander getrennt sind
Die Benutzer, die in einer solchen Gruppe aufgelistet sind, haben das Recht, in
die jeweilige Gruppe zu wechseln. Erst dann bekommen sie das Recht, auf die
Daten, die mit Berechtigungen ber die GID konfiguriert sind, zuzugreifen. Des-
halb kann hier fr eine Gruppe auch ein Kennwort vergeben werden. Es muss bei
der Erstellung von neuen Gruppen auch auf die Eindeutigkeit von GIDs geachtet
werden. Auch die Wiederverwendung von GIDs, die vorher bereits gelschten
Gruppen zugeordnet waren, kann fr Probleme sorgen. Wenn z.B. willi, der ein
Mitglied der Gruppe sales ist, eine Datei
-rw-r--r-- 1 willi sales 4096 Sep 17 17:10 Verkaufsbericht
361
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
erstellt und die Gruppe sales anschlieend gelscht wird, dann geschieht mit die-
ser Datei Folgendes:
-rw-r--r-- 1 willi 133 4096 Sep 17 17:10 Verkaufsbericht
Es bleibt also der Benutzer erhalten, aber die Gruppe sales wird mit ihrer
ursprnglichen GID (133) angezeigt. Das liegt daran, dass sich das Dateisystem
lediglich UIDs und GIDs merkt und diese erst fr den Benutzer wieder in Namen
auflst, wenn dieser auf die Dateien zugreift. Sollten Sie nun eine neue Gruppe
erstellen und versehentlich die alte GID wieder verwenden, knnen Mitglieder
dieser neuen Gruppe den Verkaufsbericht lesen.
In diese Beziehung stellt das Standardkonto users bei unvorsichtiger Vergabe von
Dateirechten eventuell auch ein Sicherheitsrisiko dar. Deshalb wird unter Red
Hat fr jeden neuen Benutzer auch eine gleichnamige neue Gruppe angelegt.
/etc/gshadow
Was die Datei /etc/gshadow macht, wissen Sie bereits. Bleibt nur noch zu klren,
was die einzelnen Felder der Datei bedeuten:
sales: $2a$10$....5nvMAwrW39u1:harald:michaela,dominik,willi
Hier erfolgt eine Auflistung der Inhalte in der entsprechenden Reihenfolge:
Name der Gruppe
Gruppenpasswort (hier gekrzt) Bei Standardgruppen wird auf ein Passwort
oftmals auch verzichtet. Es kann ohnehin nur ein Benutzer in diese Gruppe
wechseln, der sich am System angemeldet hat und in der Mitgliederliste ein-
getragen ist. Ein Missbrauch ist also unwahrscheinlich.
Gruppenverwalter Der Gruppenverwalter kann Mitglieder zur Gruppe hin-
zufgen oder entfernen. Weiterhin hat er als Einziger (auer dem Root natr-
lich) das Recht, das Passwort fr die Gruppe zu ndern.
Mitglieder der Gruppe Sie werden, wie gehabt, durch Kommata voneinan-
der getrennt.
Befehle zur Verwaltung von Benutzern
Machen Sie sich fr die Prfung besonders vertraut mit den genauen Namen der
Befehle. Es besteht hier eine groe hnlichkeit zwischen den Befehlsnamen und
sogar den Konfigurationsdateien. Es gibt Prfungsfragen, die genau auf dieser
hnlichkeit basieren und fr viel Verwirrung sorgen knnen. Lesen Sie zustzlich
die Manpages zu den folgenden Befehlen. Die in diesem Buch aufgefhrten Opti-
onen sind absolute Prfungskandidaten.
362
Administrative Aufgaben 107
useradd
Mit diesem Befehl wird ein neuer Benutzer erstellt. Als Grundlage fr die Vorein-
stellungen dient hierbei die Datei /etc/default/useradd. Diese Datei kann z.B. so
aussehen:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
GROUPS=video,dialout
Die Eintrge bedeuten von oben nach unten:
Die initiale Gruppe des Benutzers ist 100 (also in diesem Fall users).
Sein Heimatverzeichnis wird unterhalb von /home angelegt.
Das Konto ist nicht deaktiviert (INACTIVE=-1).
Das Konto luft nie ab (EXPIRE=).
Die voreingestellte Shell ist die Bash.
Das Heimatverzeichnis wird aus der Vorlage /etc/skel erstellt.
Der Benutzer gehrt, abgesehen von der initialen Gruppe, auch noch den
Gruppen video und dialout an.
Hufig mit useradd verwendete Optionen:
-c (comment) legt den Inhalt des Beschreibungsfeldes fest.
-d verzeichnis verwendet verzeichnis statt des Benutzernamens als Heimatver-
zeichnis (/home/verzeichnis).
-m steht alleine fr make und erstellt das Heimatverzeichnis mit den Stan-
dardeinstellungen aus /etc/default/useradd.
-s stellt eine alternative Shell ein (z.B. /bin/false fr nicht interaktive Benut-
zer).
-G legt die Mitgliedschaften in Gruppen fest, Trennung erfolgt durch Kommata
ohne Leerzeichen.
-g legt die initiale Gruppe (auch Hauptgruppe genannt) neuer Benutzer fest.
-p legt ein Passwort fr den Benutzer fest. Diese Option funktioniert bei einem
eingeschalteten Shadow-System nicht bei jeder Distribution. Erstellen Sie in
diesem Fall das Kennwort nachtrglich.
363
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
-k spezifiziert ein alternatives Skeletonverzeichnis, abweichend von dem in
/etc/default/useradd angegebenen.
-u legt die UID fr den neuen Benutzer fest.
Beispiel:
useradd m c "Dominik Merlin Maassen" s /bin/sh dominik
legt den Benutzer Dominik mit Heimatverzeichnis und vollem Namen an und
teilt ihm die Shell /bin/sh zu.
useradd willi
legt den Benutzer Willi an. Da die Option m nicht angegeben wurde, ist dieser
Benutzer ohne Heimatverzeichnis und erhlt bei jeder Anmeldung einen unsch-
nen Hinweis.
userdel
Mit diesem Kommando wird ein Benutzerkonto vom System entfernt. Es wird
einfach nur der Anmeldename bergeben.
Hufig verwendete Optionen sind:
-r (remove) lscht gleichzeitig das Heimatverzeichnis des Benutzers.
-f (force) lscht das Heimatverzeichnis des Benutzers auch dann, wenn dieses
Verzeichnis Dateien anderer Benutzer enthlt.
Beispiel:
userdel willi rf
lscht den Benutzer Willi inklusive seines Heimatverzeichnisses, auch wenn die-
ses Daten anderer Benutzer enthlt.
usermod
Der Befehl usermod dient dazu, ein existierendes Benutzerkonto zu ndern (modi-
fizieren). Die Syntax bzw. die Optionen zu usermod hneln grtenteils denen
von useradd. Ausnahmen bilden die Optionen, die bei der Erstellung von Benut-
zern keinen Sinn ergben.
Hufig verwendete Optionen sind:
-L (lock) zum Deaktivieren eines Kontos
-U (unlock) zum Aktivieren eines Accounts
364
Administrative Aufgaben 107
Beispiele:
archangel:~ # usermod -L dominik
sperrt das Benutzerkonto des Benutzers Dominik.
archangel:~ # usermod -G management michaela
fgt michaela der Gruppe management hinzu. Die initiale Gruppe (Hauptgruppe)
wrde mit g gendert.
archangel:~ # usermod -p p@sswort dominik
ndert das Kennwort von dominik auf p@sswort.
passwd
Das Kommando passwd wird hauptschlich dazu verwendet, das Kennwort eines
Benutzers zu ndern. Es knnen aber auch nderungen damit durchgefhrt wer-
den, die eigentlich usermod machen sollte. Der Grund hierfr wird klar, wenn Sie
die beiden Kommandos miteinander vergleichen:
-rwsr-xr-x 1 root shadow 66040 Oct 25 2005 passwd
-rwxr-xr-x 1 root root 92000 Oct 25 2005 usermod
Wie Sie sehen, ist bei passwd das SUID-Bit gesetzt und bei usermod nicht. Die
Folge ist, dass passwd auch dann schreibend auf /etc/passwd und /etc/shadow
zugreifen kann, wenn das Programm von einem nicht administrativen Benutzer-
konto ausgefhrt wird. Sonst knnte ein Benutzer nmlich sein Kennwort nicht
selbst ndern. Die nderung selbst wird interaktiv durchgefhrt. Das Kennwort
wird whrend der Eingabe nicht angezeigt. Sollte das Passwort zu kurz sein, wird
eine Warnmeldung ausgegeben.
Beispiele:
Als Root ndern Sie das Passwort eines Benutzers, indem Sie den Benutzernamen
dem passwd-Kommando bergeben:
archangel:~ # passwd dominik
Changing password for dominik.
New password:
Re-enter new password:
Password changed.
Ein Benutzer gibt einfach nur den Befehl passwd ohne Parameter an. Er wird dann
zuerst zur Eingabe seines alten Kennworts aufgefordert.
365
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
chage
Die Art, in der Linux Kennwortnderungen handhabt, kann fr jeden Benutzer
einzeln mit chage festgelegt werden. Die Standardwerte sind in der Konfigurati-
onsdatei /etc/default/useradd festgelegt. Des Weiteren ist es mglich, ein Ablauf-
datum fr ein Konto anzugeben. Das ist allerdings aufwendig, weil es sich um ein
Datum relativ zum 1. Januar 1970 handeln muss. Sie mssten also die Anzahl der
Tage berechnen, die von diesem Datum bis zum Erlschen des Kontos vergangen
sind. Es folgt ein Beispiel mit den wichtigsten Optionen:
archangel:~ # chage -m 2 dominik
Aging information changed.
Die Option m (Minimum) legt den frhesten Zeitpunkt in Tagen fest, nach denen
der Benutzer sein Kennwort ndern darf.
archangel:~ # chage -M 21 dominik
Aging information changed.
Das groe M (Maximum) legt fest, wie lange der Benutzer maximal dasselbe
Kennwort verwenden darf. Ein Benutzer kann nicht zweimal hintereinander das-
selbe Kennwort angeben. Mit der oben durchgefhrten Kombination wird ver-
hindert, dass ein Benutzer zweimal hintereinander sein Kennwort ndert, um
sein ursprngliches Passwort weiterhin verwenden zu knnen.
archangel:~ # chage -l dominik
Minimum: 2
Maximum: 21
Warning: 7
Inactive: 1
Last Change: Sep 20, 2007
Password Expires: Oct 11, 2007
Password Inactive: Never
Account Expires: Never
Abschlieend werden die vorgenommenen nderungen mit chage l (list) ber-
prft. Sie sehen die erwarteten Modifikationen und zustzliche Informationen,
die alle selbsterklrend sein drften.
Befehle zur Verwaltung von Gruppen
groupadd
Mit dem Kommando groupadd werden neue Benutzergruppen erstellt. Es kann
whrend der Erstellung eine GID und auch ein Gruppenpasswort festgelegt wer-
366
Administrative Aufgaben 107
den. Die Gruppe wird dann in /etc/group erstellt. Merken Sie sich fr die Prfung,
dass dieses Verzeichnis nicht auf s endet. Die Datei /etc/groups gibt es nicht!
Hufig verwendete Optionen:
-g, --gid legt die GID fr die neue Gruppe fest.
-o, --non-unique erlaubt die Verwendung von nicht eindeutigen GIDs.
-p, --password gibt das Passwort an, das zum Wechsel in diese Gruppe notwen-
dig ist. Die Verwendung von Gruppenpasswrtern ist allerdings eher unb-
lich.
Beispiel:
archangel:~ # groupadd produktion -g 4711 -p prodp@ssword
erstellt die Gruppe produktion mit der GID 4711 und dem Gruppenkennwort
prodp@ssword.
groupdel
Mit dem Kommando groupdel werden nicht mehr bentigte Benutzergruppen
gelscht. Die bergabe von Parametern ist nicht erforderlich.
Beispiel:
archangel:~ # groupdel produktion
entfernt die Gruppe produktion. Das System gibt keine Besttigung ber den
Lschvorgang aus.
groupmod
Mit groupmod werden bestehende Benutzergruppen modifiziert. Die Syntax dieses
Kommandos ist stark an die des Kommandos groupadd angelehnt. Eine Besonder-
heit ist allerdings die Mglichkeit, eine Gruppe mittels groupmod umzubenennen.
Die verwendete GID und daraus resultierende Berechtigungen im Dateisystem
bleiben hierbei erhalten.
Hufig verwendete Optionen:
-A, --add-user fgt Benutzer zur Gruppe hinzu.
-R, --remove-user entfernt Benutzer aus der angegebenen Gruppe.
-n, --new-name ndert den Namen der Gruppe unter Beibehaltung der GID
und der in der Gruppe enthaltenen Benutzer.
367
Benutzer- und Gruppenkonten und dazugehrige Systemdateien verwalten 107.1
Beispiel:
archangel:~ # groupmod mktg -n marketing
nennt die Benutzergruppe mktg in marketing um. Mitglieder in dieser Gruppe
und auch die GID bleiben erhalten.
gpasswd
Mit diesem Kommando ndern Sie das Kennwort einer Gruppe. Diese Operation
ist ausschlielich dem Root vorbehalten. Mit der Option r wird ein Gruppen-
passwort entfernt.
Beispiel:
archangel:~ # gpasswd -r sales
Password removed.
Die Ausgabe des Kommandos ist selbsterklrend.
newgrp
Dieses Kommando wird nicht zur Administration verwendet. Ein Benutzer fhrt
newgrp aus, um damit seine Gruppenzugehrigkeit zu ndern. Es ist hierbei zu
beachten, dass beim Wechsel in eine andere Linux-Gruppe eine neue Shell gestar-
tet wird. Das hat zur Folge, dass eventuell in der ersten Shell gesetzte Variablen
zunchst exportiert werden mssen. Die Variablen, die in der mit newgrp erzeug-
ten Shell deklariert werden, knnen nicht auf die bergeordnete Shell bertragen
werden. Sie mssen solche Variablen gegebenenfalls zunchst in eine Datei
schreiben. Sie verlassen eine Gruppe durch die einfache Eingabe des Kommandos
exit.
Beispiel:
michaela@archangel:~> newgrp sales
Passwort:
michaela@archangel:~>pstree
...
login bash bash pstree
...
Der relevante Ausschnitt der Ausgabe des pstree-Kommandos zeigt, dass tatsch-
lich eine Subshell erzeugt wurde. Normalerweise luft nur eine Instanz der Bash,
wenn sich ein Benutzer am System anmeldet. Die Anzahl der Instanzen von sshd
hat nichts mit dem Gruppenwechsel zu tun. Drei hierarchisch verschachtelte
Instanzen sind bei einem Remote-Zugriff der Normalfall.
368
Administrative Aufgaben 107
Befehle zur Verwaltung des Shadow-Systems
pwconv
Das Programm erstellt und aktualisiert die Datei /etc/shadow. pwconv sucht in der
Datei /etc/passwd nach Passwrtern und verschiebt diese, falls vorhanden, in die
Datei /etc/shadow. Sollte im Passwortfeld eines Benutzers ein x stehen, erkennt
pwconv daran, dass das Kennwort dieses Benutzers bereits in der /etc/shadow ent-
halten sein muss. Eine Angabe von Optionen ist bei diesem Programm nur dann
notwendig, wenn die Dateien /etc/passwd oder /etc/shadow nicht an ihren b-
lichen Positionen im Dateisystem zu finden sind.
pwunconv
Dieses Programm ist die Umkehrung zu pwconv. Es verschiebt die verschlsselten
Kennwrter der Benutzer nach /etc/passwd und lscht im Anschluss daran die
Datei /etc/shadow.
pwck
Mit pwck knnen Sie auf einfache Art und Weise eine Konsistenzprfung der
Dateien /etc/passwd oder /etc/shadow durchfhren. Die bergabe von Optionen
ist normalerweise nicht ntig. Hier ein Beispiel:
archangel:~ # pwck
Checking `/etc/passwd'
User `hans': directory `/home/hans' does not exist.
Checking `/etc/shadow'.
archangel:~ #
Die berprfung ergab hier, dass das fr den Benutzer Hans angegebene Heimat-
verzeichnis nicht existiert. Das wird dazu fhren, dass der Benutzer bei einer
Anmeldung mit dem Hauptverzeichnis des Systems verbunden wird.
Die Datei /etc/shadow hat bei der berprfung keine Fehler ergeben.
grpconv
Dieses Kommando ist quivalent zu pwconv, nur dass es stattdessen die Gruppen-
dateien /etc/group und /etc/gshadow verwendet. Optionen sind auch hier in der
Regel nicht ntig.
grpunconv
Dieses Kommando ist quivalent zu pwunconv, nur dass es stattdessen die Grup-
pendateien /etc/gshadow und /etc/group verwendet. Optionen sind auch hier in
der Regel nicht ntig.
369
Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren 107.2
grpck
Mit grpck knnen Sie eine Konsistenzprfung der Dateien /etc/gshadow und /etc/
group durchfhren, hnlich wie pwck die beiden Dateien /etc/passwd und /etc/
shadow berprft.
107.2 Systemadministrationsaufgaben durch Einplanen
von Jobs automatisieren
Wichtung: 4
Beschreibung: Kandidaten sollten in der Lage sein, cron oder anacron zu verwen-
den, um Jobs in regelmigen Abstnden auszufhren. Sie sollten at beherr-
schen, um Jobs zu einem bestimmten Zeitpunkt auszufhren.
Wichtigste Wissensgebiete:
Cron- und at-Jobs verwalten
Zugriffsrechte auf die Dienste cron und at konfigurieren
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/cron.{d,daily,hourly,monthly,weekly}
/etc/at.deny
/etc/at.allow
/etc/crontab
/etc/cron.allow
/etc/cron.deny
/var/spool/cron/*
crontab
at
atq
atrm
Allgemeines
Manchmal ist es ntig, Prozesse in Abwesenheit des Benutzers auszufhren. So
werden schon nach der Grundinstallation eines Linux-Systems etliche Wartungs-
arbeiten automatisch ausgefhrt, die man sonst wohl ohnehin einrichten msste.
Ein Beispiel wre die tgliche Ausfhrung von logrotate. Fr die Ausfhrung
370
Administrative Aufgaben 107
dieser Jobs sind drei verschiedene Werkzeuge verfgbar. Zur einmaligen Ausfh-
rung eines Programms oder Skripts verwendet man at. Diese Einrichtung basiert
auf dem Daemon atd. Sollen Programme oder Skripte regelmig ausgefhrt
werden, benutzen Sie cron oder anacron. Der Hauptunterschied zwischen
anacron und dem althergebrachten cron ist der, dass anacron einkalkuliert, dass
ein Computer zur geplanten Laufzeit der Jobs heruntergefahren sein knnte. Des-
halb ist anacron, theoretisch jedenfalls, fr Arbeitsstationen interessanter. In der
Praxis bieten die meisten Distributionen aber auch in Kombination mit cron die
Mglichkeit, versumte Aufgaben nachzuholen.
Die Verwendung von cron
Bei der Thematik cron sollten Sie in der Prfung sorgfltig die Fragen auf Feinhei-
ten prfen. Wenn nach einem Werkzeug gefragt wird, das automatisch Pro-
gramme ausfhren kann, dann ist von cron die Rede. Wird nach einem Daemon
gefragt, der Programme automatisch ausfhrt, dann sollten Sie mit crond antwor-
ten. Also: Das kleine d nicht vergessen! Der zweite mgliche Stolperstrick ist die
Frage nach dem Aufrufen von Manpages zu dieser Thematik. Schlielich heien
sowohl die Hauptkonfigurationsdatei als auch das Programm zum Hinzufgen
von Eintrgen zur Cron-Tabelle crontab. Informationen ber die Syntax der Datei
/etc/crontab erhalten Sie mit man 5 crontab, whrend das Kommando man 1
crontab ber den Befehl zum Hinzufgen von Jobs informiert.
Die Datei crontab
Der Aufbau der crontab-Datei sollte fr die Prfung genauestens bekannt sein,
weil zu diesem Thema erwartungsgem mehrere Fragen gestellt werden. Eine
sehr schne und vor allem prfungsnahe Cron-Tabelle finden Sie bei Fedora 10:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Der obere Teil der Datei legt lediglich ein paar Grundeinstellungen fest. Cron soll
bei seiner Ausfhrung die Shell /bin/bash verwenden. Sicherheitshalber wird die
Pfadvariable innerhalb dieser Subshell neu deklariert. Wenn es ein Problem gibt,
wird der Root per Mail benachrichtigt. Sollten Sie nur selten als Root angemeldet
371
Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren 107.2
sein, empfiehlt es sich hier, eine andere Mailadresse anzugeben. Cron verwendet
zur Laufzeit das Hauptverzeichnis als sein Heimatverzeichnis. Nach dem Kom-
mentar run-parts beginnt die eigentliche Tabelle. Die ersten fnf Abschnitte
bestimmen, wann ein Programm ausgefhrt werden soll. Das sechste Feld legt
den Benutzerkontext fest, in dem dieses Programm ausgefhrt werden soll. Das
letzte Feld schlielich definiert das auszufhrende Programm selbst. Fr die Pr-
fung sind die Felder zur Festlegung der Ausfhrungszeitpunkte besonders wich-
tig. Hier also deren Bedeutungen in der Reihenfolge von links nach rechts:
Minute(n) mgliche Werte sind 0 59
Stunde(n) mgliche Werte sind 0 23
Tag(e) des Monats mgliche Werte sind 1 31
Monat(e) mgliche Werte sind 0 12
Tag(e) der Woche mgliche Werte 0 7 (Sonntag ist sowohl 0 als auch 7)
Wenn Werte mehrfach belegt werden mssen, dann wird entweder eine durch
Kommata getrennte Aufzhlung angegeben oder ein (-) Strich als bis verwendet.
Die Sternchen (asterisk) bedeuten, wie in vielen anderen Zusammenhngen auch,
jede(r).
Beispiele:
01 * * * * root run-parts /etc/cron.hourly
bedeutet also immer um eine Minute nach der vollen Stunde, zu jeder Stunde zu
jedem Tag im Monat, in jedem Monat und an beliebigen Wochentagen. Es wird
dann das Skript run-parts im Benutzerkontext des Root ausgefhrt, das im Ver-
zeichnis /etc/cron.hourly nach Skripten sucht und diese dann ausfhrt.
22 4 * * 0 root run-parts /etc/cron.weekly
fhrt mittels run-parts die in /etc/cron.weekly befindlichen Skripte aus. Die Aus-
fhrung erfolgt jeden Sonntag (0) um 4 Uhr und 22 Minuten.
0 8,10,13,16 * * 1-5 root /etc/myscripts/virusscan
Diese Zeile fhrt von Montag bis Freitag (1 5) immer um 8.00, 10.00, 13.00
und 16.00 Uhr einen Virenscanner aus.
0/30 8-16 * * 1-5 root /etc/myscripts/virusscan
In diesem letzten Beispiel kommt noch der Schrgstrich ins Spiel. Der Virenscan-
ner wrde jetzt an Wochentagen zwischen 8:00 Uhr und 16:30 Uhr alle 30 Minu-
ten ausgefhrt werden.
372
Administrative Aufgaben 107
In der Praxis kann es angenehmer sein, mit Nicknames zu arbeiten. Mit diesen
knnen Sie die fnf Zeitfelder ersetzen. Diese Nicknames sind:
@yearly einmal im Jahr, entspricht 0 0 1 1 *
@annually einmal im Jahr, entspricht 0 0 1 1 *
@monthly jeweils am 1. eines Monats, entspricht 0 0 1 * *
@weekly jeden Sonntag um Mitternacht, entspricht 0 0 * * 0
@daily tglich um Mitternacht, entspricht 0 0 * * *
@hourly zu jeder vollen Stunde, entspricht 0 * * * *
@reboot einmal nach dem Systemstart
Das Kommando crontab
Mit dem Kommando crontab knnen Eintrge zu einer Cron-Tabelle hinzugefgt
werden. Grundstzlich kann crontab auch von gewhnlichen Benutzern verwen-
det werden, es gibt aber auch die Mglichkeit, die Verwendung auf bestimmte
Benutzer zu beschrnken. Doch dazu spter mehr.
Die Cron-Tabelle /etc/crontab, die bereits oben besprochen wurde, wird mit dem
Programm crontab nicht modifiziert. Diese muss stattdessen mit einem Editor
bearbeitet werden. Wenn der Benutzer Root dieses Programm startet, wird fr
ihn eine crontab-Datei erstellt wie fr andere Benutzer auch. Diese benutzerspe-
zifischen crontab-Dateien werden zentral in /var/spool/cron abgelegt. Das Kom-
mando crontab versteht die folgenden Optionen:
-e editiert die crontab des angemeldeten Benutzers
-l listet den Inhalt einer crontab-Datei auf
-r lscht die crontab-Datei eines Benutzers (remove)
-u mit dieser Option kann der Root die crontab eines anderen Benutzers
bearbeiten oder einsehen
Beispiel:
archangel:/ # crontab -l -u michaela
# DO NOT EDIT THIS FILE edit the master and reinstall.
# (/tmp/crontab.XXYXwBgjc7 installed on Thu Sep 27 18:44:29 2007)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/
23 18:56:42 vixie Exp $)
0 0 * * 1-6 /home/michaela/backupscript
Prfungstipp
Kenntnisse ber die gerade genannten Crontab-Felder sind fr die Prfung besonders
wichtig.
373
Systemadministrationsaufgaben durch Einplanen von Jobs automatisieren 107.2
Die Ausgabe von crontab zeigt, dass die Benutzerin Michaela tglich auer sonn-
tags um Mitternacht ein Backup-Skript ausfhrt.
Die Verwendung von at
Im Gegensatz zu cron ist at darauf ausgelegt, Programme oder Skripte einmalig
zu einer vorher festgelegten Zeit auszufhren. Auch das at-Kommando kann von
normalen Anwendern ausgefhrt werden, solange es ihnen nicht verweigert
wird. Achten Sie auch hier bei der Prfung auf die Verwendung der richtigen
Begriffe: Der Daemon heit atd, whrend das Programm nur at heit. Bei vielen
Distributionen luft der atd standardmig nicht. Starten Sie ihn also zunchst:
debian40:~# /etc/init.d/atd start
Starting deferred execution scheduler: atd.
Jetzt ist der Daemon sofort bereit, Auftrge entgegenzunehmen. Es ist mglich,
diese Auftrge entweder in einem interaktiven Modus zu bergeben oder in
einer Textdatei, die dann mit einer Kommandozeile angegeben wird. Die Zeit-
angaben sind bei diesem Daemon sehr vielfltig.
Beispiele:
michaela@debian40:~$ at 17:00 tomorrow
at> /home/michaela/cleanupscript
at> /home/michaela/backupscript
at> <EOT>
job 3 at Fri Sep 28 17:00:00 2007
Hier wurde interaktiv fr morgen um 17:00 Uhr (also vermutlich zu einer Zeit, zu
der das System nicht stark belastet ist) die Verarbeitung von zwei Skripten
geplant. An der Position, wo das System <EOT> fr End Of Transmission anzeigt,
wurde vom Benutzer in Wirklichkeit (Strg) + (D) bettigt.
Soll eine ganze Reihe von Kommandos zeitgesteuert ausgefhrt werden, dann
knnen Sie diese zeilenweise in eine Textdatei schreiben und sie dann wie folgt
an at bertragen:
michaela@debian40:~$ at -f commandlist teatime tomorrow
warning: commands will be executed using /bin/sh
job 4 at Fri Sep 28 16:00:00 2007
Die Datei commandlist enthlt hier die auszufhrenden Kommandos. Die Zeit-
angabe teatime bezieht sich auf 16:00 Uhr. Lassen Sie sich in der Prfung nicht
durch anscheinend unrealistische Zeitplne irritieren!
374
Administrative Aufgaben 107
Mit atq kann der Inhalt der at-Warteschlange berprft werden (q = queue). Es
ist alternativ die Verwendung von at l mglich. Beide Varianten sind prfungs-
relevant:
michaela@debian40:~$ atq
4 Fri Sep 28 16:00:00 2007 a michaela
Das Entfernen eines mit at geplanten Jobs geschieht entweder mit dem Befehl
atrm <jobnummer> oder auch at d <jobnummer>, also in diesem Fall so:
michaela@debian40:~$ atrm 3
Grundlegendes zu anacron
Ein weiteres Programmpaket zur Automatisierung von Programmablufen ist
anacron. Im Gegensatz zu cron bercksichtigt anacron von sich aus, dass ein Sys-
tem neu gestartet worden sein knnte, und holt eventuell verpasste Jobs nach.
Ein weiterer Unterschied zu cron ist der, dass anacron nicht von normalen Benut-
zern verwendet werden kann, sondern ausschlielich vom Root. anacron bezieht
seine Konfiguration aus der Datei /etc/anacron. Diese ist vom Aufbau her nicht
mit der Datei /etc/crontab zu vergleichen. Der Daemon, der hierbei zum Einsatz
kommt, heit anacron. Beachten Sie wieder die Schreibweise, diesmal ohne d! In
der Prfung sind bisher keine Fragen zum Thema anacron aufgetaucht, weshalb
Sie sich auch eher auf cron und at konzentrieren sollten.
Zugriffssteuerung auf cron und at
Weil sowohl cron als auch at fr Benutzer zugnglich sind, kann es notwendig
werden, den Zugriff auf diese beiden Werkzeuge auf bestimmte Benutzer zu
beschrnken. Es gibt zu diesem Zweck fr jedes dieser beiden Programmpakete
jeweils zwei Konfigurationsdateien, deren Konfiguration sich leider jeweils
unterscheidet. Seien Sie hierbei auf kniffelige Prfungsfragen vorbereitet! Fr
anacron gibt es solche Dateien nicht, weil anacron ohnehin nicht von Benutzern
verwendet werden kann. Die Autorisierungsdateien fr cron und at befinden
sich direkt im Verzeichnis /etc und verhalten sich wie folgt:
cron.allow wenn diese Datei existiert, dann drfen nur die Benutzer cron
verwenden, die in dieser Datei gelistet sind.
cron.deny wenn diese Datei existiert, aber keine cron.allow-Datei, dann dr-
fen alle Benutzer cron verwenden, die nicht in cron.deny aufgefhrt sind.
at.allow wenn diese Datei existiert, dann drfen nur die Benutzer at verwen-
den, die in dieser Datei gelistet sind.
375
Lokalisierung und Internationalisierung 107.3
at.deny wenn diese Datei existiert, aber keine at.allow-Datei, dann drfen
alle Benutzer at verwenden, die nicht in at.deny aufgefhrt sind.
Bis hierher ist das Verhalten logisch nachvollziehbar und bei beiden Diensten
identisch. Aber:
Wenn es weder die Datei cron.allow noch cron.deny gibt, drfen alle Benutzer
cron verwenden.
Wenn es weder die Datei at.allow noch at.deny gibt, darf nur Root at verwen-
den. Eine leere at.deny-Datei ermglicht den Zugriff fr alle Benutzer.
107.3 Lokalisierung und Internationalisierung
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, ein System in einer anderen
Sprache als Englisch zu lokalisieren. Dazu gehrt auch ein Verstndnis dafr,
warum LANG=C in Shell-Skripten ntzlich ist.
Wichtigste Wissensgebiete:
Lokale Einstellungen
Zeitzonen-Einstellungen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/timezone
/etc/localtime
/usr/share/zoneinfo
Umgebungsvariablen:
LC_*
LC_ALL
LANG
/usr/bin/locale
tzselect
tzconfig
Prfungstipp
Der Unterschied bei der Konfiguration des Zugriffs auf diese beiden Dienste ist Gegen-
stand der Prfung.
376
Administrative Aufgaben 107
date
iconv
UTF-8
ISO-8859
ASCII
Unicode
Allgemeines
Damit es mglich ist, ein Betriebssystem in unterschiedlichen Lndern mit unter-
schiedlichen Sprachen zu verwenden, sind einige Parameter vernderlich. Es
muss eine Zeitzone konfigurierbar sein, damit die Hardware-Uhr weltweit iden-
tisch auf UTC eingestellt sein kann, das Betriebssystem aber trotzdem die Ortszeit
anzeigt.
Auerdem mssen landesspezifische Eigenschaften, wie Whrung, Papierfor-
mate, Datums- und Uhrzeitfomat, Telefonnummernformate und physikalische
Gren (metrisch oder nicht) definiert werden. Diese Parameter sind in Variablen
hinterlegt und knnen z.B. von Anwendungsprogrammen abgefragt werden.
Ein weiterer wichtiger Faktor sind Zeichenstze und Tastaturbelegungen. Hierbei
handelt es sich um ein problematisches Fachgebiet, weil durch die Verwendung
falscher Zeichenstze oftmals Zeichen falsch oder auch gar nicht dargestellt wer-
den. Fr uns in Deutschland wren die Umlaute als besonders kritische Patienten
zu benennen.
Zeitzoneneinstellung
Wenn Sie ein Betriebssystem installieren, werden Sie normalerweise vom Setup-
Assistenten gefragt, in welcher Zeitzone Sie sich befinden. Es kann aber auch vor-
kommen, dass Sie die eingestellte Zeitzone nachtrglich ndern mchten. Einen
schnellen berblick ber die verfgbaren Zeitzonen bekommen Sie mit dem
interaktiven Programm tzselect. Sie knnen das Programm einfach auf der Kom-
mandozeile aufrufen. Als Erstes werden Sie nach dem Kontinent gefragt, den Sie
auswhlen mchten.
root@archangel:~# tzselect
Please identify a location so that time zone rules can be set
correctly.
Please select a continent or ocean.
1) Africa
2) Americas
377
Lokalisierung und Internationalisierung 107.3
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none I want to specify the time zone using the Posix TZ format.
#? 8
In diesem Fall soll Europa der Kontinent der Wahl sein. Als Nchstes whlen Sie
das Land aus, das es zu betrachten gilt:
Please select a country.
1) Aaland Islands 18) Greece 35) Norway
2) Albania 19) Guernsey 36) Poland
3) Andorra 20) Hungary 37) Portugal
4) Austria 21) Ireland 38) Romania
5) Belarus 22) Isle of Man 39) Russia
6) Belgium 23) Italy 40) San Marino
7) Bosnia & Herzegovina 24) Jersey 41) Serbia
8) Britain (UK) 25) Latvia 42) Slovakia
9) Bulgaria 26) Liechtenstein 43) Slovenia
10) Croatia 27) Lithuania 44) Spain
11) Czech Republic 28) Luxembourg 45) Sweden
12) Denmark 29) Macedonia 46) Switzerland
13) Estonia 30) Malta 47) Turkey
14) Finland 31) Moldova 48) Ukraine
15) France 32) Monaco 49) Vatican City
16) Germany 33) Montenegro
17) Gibraltar 34) Netherlands
#? 16
Eine 16 whlt Deutschland aus, und es erscheint eine abschlieende Abfrage, ob
die angezeigten Informationen richtig sind:
The following information has been given:
Germany
Therefore TZ='Europe/Berlin' will be used.
Local time is now: Tue Apr 28 17:42:29 CEST 2009.
Universal Time is now: Tue Apr 28 15:42:29 UTC 2009.
Is the above information OK?
378
Administrative Aufgaben 107
1) Yes
2) No
#?
Wie Sie sehen, wird die Uhrzeit zum Abschluss in Ortszeit und in UTC angezeigt.
Hierdurch wird der Grund fr die Zeitzonenzuordnung noch einmal deutlich.
Eine Erluterung der UTC finden Sie etwas spter in diesem Buch unter dem
Topic 108.
Das Programm tzselect verwendet fr seine Anzeige die Dateien im Verzeichnis
/usr/share/zoneinfo. Sie finden hier einen Verzeichnisbaum, der den Auswahlen
des Programms tzselect entspricht. In der oberen Ebene finden Sie Verzeichnisse,
die den Kontinenten entsprechen. Wenn Sie in eines dieser Verzeichnisse wech-
seln, finden Sie Binrdateien, die mit den jeweiligen Stdten korrespondieren.
Wenn Sie die Zeitzone eines Computers ndern wollen, dann erstellen Sie einen
symbolischen Link mit der jeweiligen Stadt-Datei zu /etc/localtime, oder kopieren
Sie die Datei selbst auf /etc/localtime. Sie sollten aus Kompatibilittsgrnden zu
hwclock letztere Methode bevorzugen.
In der Konfigurationsdatei /etc/timezone muss die Zeitzone ebenfalls festgelegt
werden. Die Syntax des Eintrags ist sehr einfach:
root@archangel:/# cat /etc/timezone
Europe/Berlin
Dies ist also im Prinzip lediglich der Verzeichnisname unterhalb von /usr/share/
zoneinfo, und hinter dem Slash folgt der Binrdateiname der entsprechenden
Stadt-Datei.
Wenn die Zeitzone nur vorbergehend oder nur fr einen bestimmten Benutzer
gelten soll, knnen Sie geschickt mit der Variablen TZ (Time Zone) arbeiten.
Wenn ein bestimmter Benutzer, der sich z.B. per SSH aus einem anderen Land
einloggt, eine ihm entsprechende Zeitzone bentigt, knnen Sie die Variable TZ
in der .profile-Datei in seinem Heimatverzeichnis anpassen. Fr einen Benutzer
von den Marshallinseln sieht der Eintrag z.B. so aus:
TZ='Pacific/Majuro'
Um eine temporre nderung der Zeitzone zu bewirken, knnen Sie die Variable
natrlich auch einfach auf der Konsole setzen und exportieren:
root@archangel:/# export TZ='Pacific/Majuro'
Eine berprfung mit date und sofort danach mit date -u ergibt dieses Ergebnis:
379
Lokalisierung und Internationalisierung 107.3
root@archangel:/# date
Mi 29. Apr 05:02:30 MHT 2009
root@archangel:/# date -u
Di 28. Apr 17:02:34 UTC 2009
Die Option u fordert die UTC an, so dass ein interessanter Vergleich mglich ist.
MHT ist brigens das Krzel fr die Zeitzone der Marshallinseln.
Zeitzonen-Frontends
Einige Distributionen verwenden zum Einstellen der Zeitzone das Frontend
tzconfig. Hier wird hnlich wie bei tzselect interaktiv nach dem zu konfigurieren-
den Land gefragt. In diesem Fall findet allerdings auch tatschlich eine Konfigu-
ration statt.
Unter Debian, Ubuntu und hnlichen Betriebssystemen knnen Sie brigens ein-
fach dpkg-reconfigure tzdata mengefhrt verwenden.
Umgebungsvariablen fr die Lokalisation
Einige Anwendungsprogramme bentigen Informationen ber regionale Gege-
benheiten. Dies sind z.B. Whrung, Papierformate, Datums- und Uhrzeitformat,
Telefonnummernformate und physikalische Gren. Diese Parameter sind in
Umgebungsvariablen hinterlegt, die von Programmen abgefragt werden knnen.
Einige Beispiele hierfr sind:
LC_CTYPE Zeichenklassifikationen
LC_COLLATE Sortierreihenfolge
LC_TIME Zeit- und Datumsformat
LC_NUMERIC numerische Formate auerhalb des Finanzsektors
LC_MONETARY numerische Formate des Finanzsektors
LC_MESSAGES Formate fr informative und diagnostische Benachrichti-
gungen
LC_PAPER Papierformate und Gren
LC_NAME Namenformate
LC_ADDRESS Adressformate
LC_TELEPHONE Formate der Telefonnummern
LC_MEASUREMENT Maeinheiten (metrisch oder andere)
LC_IDENTIFICATION Metadaten der Lokalisation
380
Administrative Aufgaben 107
Diese Umgebungsvariablen knnen sich, abhngig von der verwendeten Distri-
bution, in unterschiedlichen Verzeichnissen befinden. Typisch sind hier die
Unterverzeichnisse von /usr/lib/locale. Sie sehen am Inhalt dieses Verzeichnisses
sofort, welche Sprachen Ihr System momentan untersttzt. Wenn Sie erfahren
wollen, welche Sprachuntersttzung grundstzlich mglich ist, dann konsultie-
ren Sie die Datei /usr/share/i18n/SUPPORTED.
Um einen schnellen berblick zu erhalten, wie die Variablen eines Systems in
Bezug auf die Lokalisation gerade gesetzt sind, knnen Sie einfach das Kom-
mando locale verwenden. Ohne Optionen zeigt das Programm die aktuell ver-
wendete Sprachuntersttzung an:
root@archangel:/# locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
... der Rest wurde herausgeschnitten ...
LC_ALL=
Mit dem Schalter Kommando locale -a knnen Sie die verfgbaren Lokalisationen
anzeigen (gem /usr/lib/local).
root@archangel:/# locale -a
C
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
Wichtig
Die Variable LANG hat eine Sonderstellung. Wenn eine der anderen Variablen (auch LC_
ALL) fehlen sollte, gilt der hier stehende Eintrag. LANG hat also eine geringe Prioritt.
Genau andersherum verhlt es sich mit LC_LANG. Diese Variable ist normalerweise ber-
haupt nicht gesetzt. Wenn sie doch gesetzt wird, hat sie Prioritt vor allen anderen LC-
Variablen, auch vor LANG.
Wenn Sie die Variable LANG manuell setzen und exportieren (z.B. in einem Skript), wer-
den allerdings alle anderen LC-Variablen mit dem von Ihnen angegebenen Wert ber-
schrieben. Hierbei gibt es noch eine Besonderheit: Wenn Sie nmlich LANG=C setzen,
dann geben Programme, die auf Lokalisationen reagieren, ihre Daten roh aus. Die
Daten durchlaufen dann keine Zeichensatztabelle mehr, sondern werden einfach so aus-
gegeben, wie sie sind. Ein amerikanisches Finanzprogramm wrde dann auch auf einem
deutsch lokalisierten Linux ein Dollarzeichen anstatt des Eurozeichens ausgeben.
381
Lokalisierung und Internationalisierung 107.3
de_LI.utf8
de_LU.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
... der Rest wurde abgeschnitten ...
Um eine Liste der verfgbaren Zeichenstze anzuzeigen, knnen Sie locale mit
der Option -m (fr charmap) verwenden.
root@archangel:/# locale -m |head
ANSI_X3.110-1983
ANSI_X3.4-1968
ARMSCII-8
ASMO_449
BIG5
BIG5-HKSCS
BRF
BS_4730
BS_VIEWDATA
CP10007
... der Rest wurde abgeschnitten ...
Auf das Thema Zeichenstze wird auf den folgenden Seiten noch ausfhrlich ein-
gegangen.
Historische Zeichenstze
Wenn Zeichen von einem Ort zu einem anderen elektrisch bertragen werden
sollen, mssen diese zunchst in eine geeignete Form umgewandelt werden. Es
ist nicht mglich, ein A oder ein B einfach in elektrischen Strom zu verwandeln,
denn es gibt nur zwei Mglichkeiten: Entweder es fliet Strom, oder es fliet
kein Strom. Um diese Umwandlung hat sich Samuel Morse erstmals im Jahre
1836 gekmmert, indem er den ersten elektrischen Telegrafen erfand. Hierbei
wurde einfach eine elektrische Spannung ber einen Schalter an einen entfernten
Elektromagneten bertragen. Im Prinzip gab es dabei (durch entsprechende
Schalterbettigung) drei mgliche Signale, nmlich lang, kurz oder Pause. Der
Morse-Code ist demnach nicht als digital zu betrachten, weil es nicht nur zwei,
sondern drei verschiedene Signale gab.
Bereits im Jahre 1870 entwickelte Jean-Maurice-mile Baudot fr die Telegrafie
den Baudot-Code. Hierbei handelte es sich um synchron bertragene 5-Bit-Codes.
Mit 5 Bit konnte bereits das komplette Alphabet bertragen werden (denn
2
5
=32). Der Baudot-Code wird als ein frher Vorlufer von ASCII gehandelt. Die
382
Administrative Aufgaben 107
Maeinheit Baud fr die bertragungsgeschwindigkeit von Modems ging eben-
falls auf Jean-Maurice-mile Baudots Nachnamen zurck.
Donald Murray erfand 1901 den Murray-Code. Hierbei handelte es sich ebenfalls
um eine 5-Bit-Kodierung. Das Besondere an seiner Erfindung war die Hardware,
die hier zum Einsatz kam. Ein Gert, das einer Schreibmaschine hnelte, produ-
zierte Lochstreifen, die dann wiederum in einen Bandtransmitter eingefhrt wur-
den. Hieraus ergaben sich einige Vorteile. Das Problem mit Operatoren, die
rhythmisch nicht sauber morsten, entfiel. Auerdem konnte mit Murrays Gert
erheblich schneller geschrieben und bertragen werden. Es ergaben sich hier
schon bertragungsgeschwindigkeiten von bis zu 1.260 Buchstaben pro Minute.
Das waren immerhin schon 21 Baud!
ASCII American Standard Code for Information Interchange
ASCII ist eine 7-Bit-Zeichenkodierung, die bereits 1967 als Standard verffent-
licht wurde. Die letzte Aktualisierung von ASCII fand im Jahre 1987 statt. Die Zei-
chenkodierung ASCII umfasst 128 Zeichen (denn 2
7
=128), die sich in der ASCII-
Tabelle wiederfinden. Die Tabelle stellt die dezimale Schreibweise den entspre-
chenden Zeichen gegenber. 95 der Zeichen sind druckbar. Die brigen 33 Zei-
chen sind Steuerzeichen, von denen heutzutage die meisten nicht mehr verwen-
det werden. Die druckbaren Zeichen beginnen mit dem Space-Zeichen (Dez. 32)
und enden mit der Tilde ~ (126).
Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen
0 NUL 32 SP 64 @ 96 `
1 SOH 33 ! 65 A 97 a
2 STX 34 " 66 B 98 b
3 ETX 35 # 67 C 99 c
4 EOT 36 $ 68 D 100 d
5 ENQ 37 % 69 E 101 e
6 ACK 38 & 70 F 102 f
7 BEL 39 71 G 103 g
8 BS 40 ( 72 H 104 h
9 TAB 41 ) 73 I 105 i
10 LF 42 * 74 J 106 j
11 VT 43 + 75 K 107 k
12 FF 44 76 L 108 l
13 CR 45 - 77 M 109 m
Tabelle 1 7-Bit-ASCII-Tabelle
383
Lokalisierung und Internationalisierung 107.3
Beispiele fr die nicht druckbaren Steuerzeichen sind:
00 NUL
01 SOH Start Of Header
02 STX Start Of Text
03 EOT End Of Transmission
10 LF Line Feed
12 FF Form Feed
13 CR Carriage Return
27 ESC Escape
Vielleicht ist Ihnen aufgefallen, dass in dieser Tabelle keine Umlaute vorkommen.
berhaupt kommt man mit dieser Tabelle nicht mehr aus. Es fehlt das -Zeichen,
den Briten fehlt das , den Franzosen das , den Spaniern das und so weiter.
Damit Computer neben der englischen Sprache auch mit anderen Sprachen
zurechtkommen, sind also Erweiterungen der ASCII-Tabelle erforderlich. Eine
sehr gngige Erweiterung zeigt die folgende Tabelle:
14 SO 46 . 78 N 110 n
15 SI 47 / 79 O 111 o
16 DLE 48 0 80 P 112 p
17 DC1 49 1 81 Q 113 q
18 DC2 50 2 82 R 114 r
19 DC3 51 3 83 S 115 s
20 DC4 52 4 84 T 116 t
21 NAK 53 5 85 U 117 u
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 W 119 w
24 CAN 56 8 88 X 120 x
25 EM 57 9 89 Y 121 y
26 SUB 58 : 90 Z 122 z
27 Esc 59 ; 91 [ 123 {
28 FS 60 < 92 \ 124 |
29 GS 61 = 93 ] 125 }
30 RS 62 > 94 ^ 126 ~
31 US 63 ? 95 _ 127 DEL
Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen
Tabelle 1 7-Bit-ASCII-Tabelle (Forts.)
384
Administrative Aufgaben 107
Dez. Zeichen Dez. Zeichen Dez. Zeichen Dez. Zeichen
128
1
1 Die Zeichen 129, 141, 143, 144 und 157 sind bisher nicht definiert.
160
2
2 Zeichen 160 ist das Leerzeichen.
192 224
129 161 193 225
130 , 162 194 226
131 163 195 227
132 164 196 228
133 165 197 229
134 166 198 230
135 167 199 231
136 168 200 232
137 169 201 233
138 170 202 234
139 171 203 235
140 172 204 236
141 173
3
3 Zeichen 173 ist der bedingte Trennstrich.
205 237
142 174 206 238
143 175 207 239
144 176 208 240
145 177 209 241
146 178 210 242
147 179 211 243
148 180 212 244
149 181 213 245
150 182 214 246
151 183 215 247
152 184 216 248
153 185 217 249
154 186 218 250
155 187 219 251
156 188 220 252
157 189 221 253
158 190 222 254
159 191 223 255
Tabelle 2 Erweiterung der ASCII-Tabelle auf 8 Bit
385
Lokalisierung und Internationalisierung 107.3
Dieser auf 8 Bit erweiterte Zeichensatz ist nun schon fr viele Lnder, zumindest
bedingt, einsetzbar. Mit einem 8-Bit-Code knnen Sie 256 verschiedene Zeichen
darstellen (denn 2
8
=256). Wenn Sie aber Schriften wie Chinesisch, Japanisch,
Russisch, Griechisch oder Hebrisch einbeziehen, knnen Sie sich leicht vorstel-
len, dass man wohl noch ein paar zustzliche Tabellen und/oder eine sehr groe
Tabelle (und die gibt es auch!) bentigt.
ISO 8859
Bei der ISO 8859 handelt es sich um eine ganze Normenfamilie. Jede Teilnorm
der ISO 8859 ist ein 8-Bit-Zeichensatz. Die Gemeinsamkeit all dieser Normen
liegt in den ersten 128 Zeichen. Diese sind nmlich identisch mit dem 7-Bit-
ASCII-Code. In der folgenden Aufstellung werden die Teilnormen aufgefhrt:
1 Latin-1, Westeuropisch
2 Latin-2, Mitteleuropisch
3 Latin-3, Sdeuropisch
4 Latin-4, Baltisch
5 Kyrillisch
6 Arabisch
7 Griechisch
8 Hebrisch
9 Latin-5, Trkisch
10 Latin-6, Nordisch
11 Thai
12 nicht verwendet, abgelehnte Normvorschlge
13 Latin-7, Baltisch
14 Latin-8, Keltisch
15 Latin-9, Westeuropisch
16 Latin-10, Sdosteuropisch
Numerisch wrde z.B. der Zeichensatz Latin-1, Westeuropisch als ISO-8859-1
ausgedrckt werden. Sie finden beide Arten der Bezeichnung in vielen Anwen-
dungsprogrammen insbesondere in Mail-Clients und Internet-Browsern wie-
der. Wenn Sie eine Mail empfangen, die in einer anderen Kodierung verfasst
wurde, als Ihr Mail-Client es aufgrund seiner Konfiguration erwartet, dann
kommt es oft zu Fehldarstellungen. Dies sind z.B. fehlende oder falsch interpre-
tierte Umlaute und fehlerhafte Whrungszeichen. Die deutschen Umlaute sind
386
Administrative Aufgaben 107
brigens in allen zehn ISO-8859-Zeichenstzen enthalten, die jeweils mit Latin
bezeichnet sind. blicherweise werden bei Texten, die in deutscher Sprache ver-
fasst sind, allerdings ISO-8859-1 oder ISO-8859-15 verwendet.
Unicode und UTF-8
Unicode ist ein internationaler Standard, der irgendwann einmal alle bekannten
Schriftarten enthalten soll, die es gibt. Um eine Kompatibilitt zu bestehenden
Zeichenstzen zu gewhrleisten, entsprechen die ersten 128 Zeichen des Unicode
dem ASCII-Zeichensatz. Die ersten 256 Zeichen enthalten auerdem die ISO-
8859-1-Kodierung.
UTF-8 ist die am weitesten verbreitete Form von Unicode. Die 8 im Namen des
Zeichensatzes weist auf einen 8-Bit-Code hin. Da die ersten 256 Zeichen, wie
bereits erwhnt, mit ISO-8859-1-Zeichen gefllt sind, kann das natrlich noch
nicht alles sein. UTF-8-Zeichen knnen tatschlich aus bis zu 4 Byte bestehen. Die
Anzahl der mglichen Zeichen ist dadurch enorm. Wenn Sie Probleme bei der
Darstellung internationaler Webseiten oder Mails haben, ist eine Umstellung der
Client-Software auf UTF-8 immer ein guter Lsungsansatz. Dies gilt insbeson-
dere, weil die Untersttzung von UTF-8 sich weltweit zusehends ausbreitet.
Konvertierung von Zeichenstzen
Wenn Sie Dateien von einer Zeichenkodierung in eine andere berfhren ms-
sen, knnen Sie das Kommandozeilenprogramm iconv verwenden. Das Pro-
gramm liest in der Voreinstellung von der Standardeingabe (stdin) und schreibt
zur Standardausgabe (stdout). Sie knnen u.a. folgende Optionen verwenden:
--from-code, -f gibt die aktuelle Zeichenkodierung an.
--to-code, -t gibt die Zeichenkodierung fr die Ausgabe an.
Tipp
Wenn Sie sich noch nie mit den gngigen Zeichenkodierungen auseinandergesetzt
haben, knnen Sie leicht mit dem Browser etwas experimentieren. Sie finden z.B. beim
Firefox-Browser die entsprechenden Einstellungen unter Ansicht und dann Zeichenko-
dierung. Was passiert bei der Umstellung mit Umlauten und Whrungszeichen?
Oder besuchen Sie doch einmal eine dieser Webseiten:
http://www.ynet.co.il/
http://www.iba.org.il/
Erstere Seite untersttzt UTF-8. Die zweite Seite untersttzt UTF-8 nicht! Sie mssen
den Text brigens von rechts nach links lesen. Sonst ergibt der Inhalt keinen Sinn. Was
geschieht, wenn Sie jetzt einfach den Zeichensatz Ihres Browsers auf ISO-8859-1 umstel-
len?
387
Lokalisierung und Internationalisierung 107.3
--list, -l zeigt die dem Programm bekannten Kodierungen an. Sie knnen aller-
dings nicht aus jeder Kodierung in jede beliebige andere umwandeln. Sie wer-
den aber berrascht sein, wie viele Zeichenstze das Programm grundstzlich
untersttzt.
--output, -o gibt die Ausgabedatei an.
Ein Beispiel fr die Verwendung von iconv knnte etwa so aussehen:
# iconv -f UTF-8 -t ISO-8859-15 Quelldatei -o Zieldatei
Prfungstipp
Es gibt auch andere Programme, die Umkodierungen von Zeichenstzen durchfhren
knnen. Diese sind aber fr die Prfung nicht von Bedeutung.
389
Die Dienste eines Systems mssen kontrolliert und gepflegt werden. Um
sich die Arbeit so weit wie mglich zu erleichtern, knnen Sie hier einiges
automatisieren. Zur Vereinfachung der Kontrolle knnen Sie die Proto-
kollierung auf die eigenen Bedrfnisse zuschneiden.
Topic 108: Grundlegende Systemdienste
108.1 Die Systemzeit verwalten
Wichtung: 3
Beschreibung: Kandidaten sollten in der Lage sein, die Systemzeit korrekt zu hal-
ten und die Uhr mittels NTP zu synchronisieren.
Wichtigste Wissensgebiete:
Systemzeit und -datum setzen
die Hardware-Uhr auf die korrekte Zeit in UTC setzen
die korrekte Zeitzone einstellen
grundlegende NTP-Konfiguration
Wissen ber den Gebrauch von pool.ntp.org
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/usr/share/zoneinfo
/etc/timezone
/etc/localtime
/etc/ntp.conf
date
hwclock
ntpd
ntpdate
pool.ntp.org
390
Grundlegende Systemdienste 108
Allgemeines
Fr viele Ablufe auf einem Computer ist es wichtig, dass die Systemzeit korrekt
eingestellt ist. Vergleichsweise harmlos ist hier noch der Umstand, dass bei
abweichender Systemzeit Wartungsarbeiten, die durch cron oder anacron ausge-
fhrt werden, mglicherweise zu Zeiten mit Spitzenbelastung laufen und so die
Produktionsumgebung negativ beeinflussen. Unangenehm ist dann schon, dass
Protokollierungen mit einer falschen Uhrzeit oder gar mit einem falschen Datum
versehen werden. Verwirrend kann es auch werden, wenn Mails anscheinend
eintreffen, bevor Sie berhaupt geschrieben wurden. All diese Unannehmlichkei-
ten lassen sich durch eine richtig eingestellte Systemzeit vermeiden. Eine Auto-
matisierung der Zeitkorrektur macht bei Servern, die unbeaufsichtigt in einem
Keller ihre Arbeit verrichten, also absolut Sinn.
Manuelle Konfiguration der Systemzeit
Die manuelle Konfiguration der Systemzeit erfolgt ber das Kommando date.
Wenn Sie date ohne Parameter starten, werden das aktuelle Datum und die Uhr-
zeit ausgegeben.
[root@fedora10 ~]# date
Di 28. Apr 17:54:52 CEST 2009
Hierbei ist zu beachten, dass es sich tatschlich um die Systemzeit handelt. Diese
ist unter Umstnden nicht synchron mit der Hardware-Uhr (RTC bzw. Real-Time-
Clock). Wenn Sie die Uhrzeit mittels date ndern wollen, dann gehen Sie folgen-
dermaen vor:
archangel:~ # date -s 1755
Di 28. Apr 17:55:00 CEST 2009
Die Uhr wird auf 17.55 Uhr eingestellt. Es ist aber auch mglich, date zu verwen-
den, um recht elegante Uhrzeitausgaben zu generieren. Das kann etwa in eigenen
Skripten verwendet werden. Wenn date auf ein + trifft, wird die darauf folgende
Zeichenkette von date ausgegeben und die enthaltenen Variablen entsprechend
ergnzt. Das sieht z.B. so aus:
# date "+Heute ist der %d.%m.%Y. Das ist der %j. Tag des Jahres."
Heute ist der 28.04.2009. Das ist der 118. Tag des Jahres.
Das Programm untersttzt zahlreiche weitere Variablen. Diese knnen Sie sich
mit date help anzeigen lassen.
391
Die Systemzeit verwalten 108.1
Die RTC-Uhr einstellen
Mit dem Kommando hwclock knnen Sie die Systemzeit in die Hardware-Uhr
schreiben oder umgekehrt. Sie mssen beide Verfahren fr die Prfung kennen.
Das sollte aber nicht weiter problematisch sein, weil Sie die bentigten Optionen
leicht wiedererkennen knnen. Folgendes Kommando schreibt die Systemzeit in
die Echtzeituhr:
archangel:~ # hwclock -systohc
Umgekehrt holt folgender Befehl die Zeit bei der RTC ab und stellt danach die
Systemzeit ein:
archangel:~ # hwclock -hctosys
Interessant ist es auch, zu beobachten, wie die Uhrzeiten zwischen der Hardware-
Uhr und der Systemzeit driften. Die Differenz lsst sich mit hwclock ermitteln,
indem Sie folgendes Kommando verwenden:
archangel:~ # hwclock --show
Di 28 Apr 2009 17:58:13 CEST 0.020712 Sekunden
Die Genauigkeit, mit der die Abweichung ermittelt wird, ist eine Millionstel
Sekunde. Das sollte fr die meisten Anwendungsgebiete ausreichen.
Zeitzonen
Es gibt grundstzlich zwei Arten, wie eine Linux-Uhr eingestellt werden kann.
Entweder Sie stellen sie der Einfachheit halber auf die Zeit der Zone ein, in der
Sie sich befinden, oder Sie verwenden UTC. Heutzutage geben die meisten Admi-
nistratoren der zweiten Methode den Vorzug, was im Zuge internationaler Kom-
munikation auch nur vernnftig ist. Das Krzel UTC leitet sich ursprnglich von
Coordinated Universal Time ab. Im Lauf der Jahre ist der Buchstabe C aus irgend-
welchen Grnden, die heute niemand mehr kennt, an den Schluss gestellt wor-
den. Die UTC lst die MEZ inzwischen auch in Europa weitestgehend ab. UTC+1
entspricht der MEZ.
Damit der Computer dem Benutzer die lokale Zeit anzeigt, muss dem System
noch mitgeteilt werden, dass die BIOS-Uhr (RTC) auf UTC eingestellt ist. Das
kann ber folgende Konfigurationsdateien geschehen:
/usr/share/zoneinfo In diesem Verzeichnis befinden sich Binrdateien, die
mit allen existierenden Zeitzonen korrespondieren.
/etc/localtime Diese Datei ist die mit der aktuellen Zeitzone bereinstim-
mende Binrdatei aus /usr/share/zoneinfo. Es kann sich hier um eine Kopie
oder einen Softlink zur Originaldatei handeln.
392
Grundlegende Systemdienste 108
/etc/timezone ist eine textbasierte Konfigurationsdatei. Sie knnen die richtige
Zeitzone in dieser Datei einfach eintragen.
Um einen berblick ber die verfgbaren Zeitzonen zu bekommen, knnen Sie
tzselect verwenden, wie Sie ja bereits aus dem vorangegangenen Kapitel wis-
sen. Dieses ntzliche Werkzeug ist in den meisten aktuellen Distributionen ent-
halten.
Zeitsynchronisation ber das Netzwerk
Zeitsynchronisation ber das Netzwerk heit in den meisten Fllen natrlich
Synchronisation ber das Internet. Zu diesem Zweck kommt das Network Time
Protocol (NTP) zum Einsatz. Es handelt sich hier um ein relativ altes Protokoll,
das schon 1985 in RFC 958 definiert wurde. Wegen der geringen zu bertragen-
den Datenmengen nutzt NTP das UDP. Der verwendete UDP-Port ist 123. Viele
interessante Informationen und aktuelle NTP-Programmpakete erhalten Sie auf
http://www.ntp.org. Hier finden Sie auch Listen mit ffentlichen Servern, von
denen Sie synchronisieren knnen. Interessant ist in diesem Zusammenhang
auch ein Projekt, in dem ganze NTP-Pools mittels Round Robin zur Verfgung
gestellt werden. Es folgt ein Beispiel mit einem Zugriff auf eben diese Server:
root@archangel:~# ntpdate pool.ntp.org
28 Apr 18:03:14 ntpdate[30836]: adjust time server 131.234.137.24
offset 0.000341 sec
Wie Sie sehen, knnen Sie mit ntpdate einfach durch Angabe eines Zeitservers
die Uhrzeit des Systems aktualisieren. Es wird allerdings empfohlen, bei der Syn-
chronisation mehrere Server gleichzeitig zurate zu ziehen, damit die Richtigkeit
der bermittelten Uhrzeit gegengeprft werden kann.
Automatische Zeitsynchronisation
Wenn die Systemzeit automatisch synchronisiert werden soll, knnten Sie natr-
lich einfach ntpdate regelmig von cron ausfhren lassen. Das ist sogar in einigen
Prfungsfragen so vorgesehen. Komfortabler und genauer funktioniert dies aller-
dings mit dem Daemon ntpd. Die Verwendung von ntpd hat vor allem den Vorteil,
dass der Computer selbst als Zeitserver fungieren kann. Sie knnen ohne Schwie-
rigkeiten einen Windows XP-Computer von einem Linux-Host synchronisieren.
Dazu mssen Sie auf dem Windows XP-Computer lediglich einen Doppelklick mit
der seriellen Zeigereinheit (Maus o. .) auf die Uhr ausfhren. Auf der Register-
karte Internetzeit knnen Sie den Zeitserver festlegen. Diese Methode funktio-
niert nicht, wenn der Windows-Computer Mitglied einer Domne ist.
393
Die Systemzeit verwalten 108.1
Die Hauptkonfigurationsdatei fr den ntpd ist /etc/ntp.conf. Hier findet der Dae-
mon vor allem die Adressen mit den zur Aktualisierung vorgesehenen Servern
und einen Verweis auf den Driftfile. Dieser liegt, zumindest offiziell (und somit
fr die Prfung), unter /etc/ntp.drift. Der tatschliche Speicherort hngt von der
verwendeten Distribution ab. Die Mindestausstattung der ntp.conf knnte etwa
so aussehen:
server de.pool.ntp.org
server ptbtime1.ptb.de
driftfile /var/lib/ntp/drift/ntp.drift
Mit diesen Eintrgen ist der Server schon lauffhig. Starten Sie den Server wie
blich mit /etc/init.d/ntpd start. Er wird sofort eine erste Synchronisation
durchfhren. In Abhngigkeit von der verwendeten Distribution wurde ntpd
bereits durch xntpd ersetzt. Die Konfigurationsdateien sind jedoch identisch.
Die Driftdatei wird von ntpd verwendet, um Ungenauigkeiten der Systemuhr
festzuhalten. Die Abweichung von der tatschlichen Zeit wird auf eine Millions-
tel Sekunde ermittelt und in die Driftdatei geschrieben.
NTP Diagnose
Es gibt mehrere Bordwerkzeuge, um den ntpd oder auch xntpd zu untersuchen.
Die beiden wichtigsten sind wohl ntpq und ntpdc. Beide Programme unterstt-
zen einen interaktiven Modus, der nach Eingabe eines Fragezeichens Aufschluss
ber die Mglichkeiten der beiden Programme liefert. Das Beispiel zeigt eine
Abfrage nach sysinfo mit ntpdc im interaktiven Modus:
archangel:/ # ntpdc
ntpdc> sysinfo
system peer: ptbtime1.ptb.de
system peer mode: client
leap indicator: 00
stratum: 2
precision: 18
root distance: 0.02992 s
root dispersion: 0.02531 s
reference ID: [192.53.103.108]
reference time: cab10cf1.fd8090b4 Fri, Oct 5 2007 21:20:17.990
system flags: auth monitor ntp kernel stats
jitter: 0.004898 s
stability: 236.358 ppm
broadcastdelay: 0.003998 s
authdelay: 0.000000 s
ntpdc>
394
Grundlegende Systemdienste 108
Beide Diagnoseprogramme geben groe Informationsmengen aus, weshalb es
hier auch bei diesem einen Beispiel bleiben soll. Sehr interessant sind sicherlich
noch die Abfragen nach peers und monlist. Probieren Sie diese doch einfach ein-
mal aus.
pool.ntp.org
Eine beliebte Quelle zur Synchronisation ist pool.ntp.org. Hierbei handelt es sich
um einen sehr groen virtuellen Cluster, der ber die ganze Welt verteilt ist.
Europa ist hier brigens mit etwas ber 1.000 Nodes vertreten. Die Verteilung an
die Clients wird ber DNS mittels Round Robin abgewickelt. Das ist auch der
Grund, warum Sie in der Datei /etc/ntp.conf mehrere Zeitserver eintragen sollten.
Round Robin kmmert sich nmlich bei der Herausgabe einer IP-Adresse nicht
darum, ob der Zielserver auch wirklich erreichbar ist. Bei Windows-Clients (egal,
ob XP oder Vista) knnen Sie nur einen Zeitserver eintragen. Hier tragen Sie ein-
fach pool.ntp.org ein und hoffen, per Round Robin immer einen funktionstch-
tigen Server anzutreffen. Bei Linux-Clients schreibt man gerne in die /etc/ntp.conf:
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
So haben Sie trotz Round Robin eine realistische Chance auf einen Treffer.
108.2 Systemprotokollierung
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, den Syslog-Daemon zu konfi-
gurieren. Dieses Lernziel umfasst auch die Konfiguration des Syslog-Daemons fr
den Versand von Logmeldungen an einen zentralen Protokollserver oder das
Annehmen von Logmeldungen als zentraler Protokollserver.
Wichtigste Wissensgebiete:
Syslog-Konfigurationsdateien
syslog
Standard-Facilities, -Prioritten und -Aktionen
Prfungstipp
Das Thema pool.ntp.org ist in den LPI-Prfungen neu. Die Wahrscheinlichkeit ist also
recht hoch, dass zu diesem Thema Fragen kommen.
395
Systemprotokollierung 108.2
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
syslog.conf
syslogd
klogd
logger
Allgemeines
Viele Programme und natrlich auch Linux selbst protokollieren zur Laufzeit Ereig-
nisse, die sich in den jeweiligen Programmablufen ergeben. Diese Protokolle
kann sich ein Administrator zunutze machen, um Fehler zu diagnostizieren oder
Engpsse frhzeitig zu erkennen. Dazu ist es wichtig, die Speicherorte dieser Pro-
tokolldateien zu kennen und gegebenenfalls Anpassungen am Verhalten der fr
die Protokollierung zustndigen Konfigurationsdateien vornehmen zu knnen.
syslogd und syslog-ng
Damit berhaupt eine Protokollierung von Ereignissen stattfindet, brauchen Sie
zunchst einmal ein Programm, das diese Protokollierung durchfhrt. Auf Linux-
Systemen finden Sie momentan zwei verschiedene Produkte, die fr das Logging
zustndig sind. Das neuere Produkt ist der syslog-ng, den man inzwischen in vie-
len modernen Distributionen vorfindet. So verwenden Fedora 10 und Debian 4
immer noch den alten syslogd, whrend SuSE bereits ab Version 9.3 den syslog-
ng einsetzt. Solche Kriterien sollten allerdings niemals einen Qualittsvergleich der
Distributionen nach sich ziehen. Die meisten Distributionen haben unterschiedli-
che Vor- und Nachteile. Letztendlich ist es auch Ansichtssache, ob man auf solide,
altbewhrte Methoden setzen will oder ob man mit neuen, verbesserten Techno-
logien neue Kinderkrankheiten in Kauf nehmen mchte.
Die Konfigurationsdateien
Zunchst einmal muss festgelegt werden, was wohin von wem protokolliert wird.
Normalerweise sind die Voreinstellungen brauchbar und mssen nicht sofort
modifiziert werden. Da Protokolldateien ohne regelmige berprfung sehr
stark anwachsen knnen, muss auch noch ein Mechanismus verwendet werden,
der ein berlaufen der Festplatte verhindert.
Prfungstipp
Fr die Prfung sollten Sie sich unbedingt auf den alten syslog konzentrieren. Fragen
zu syslog-ng sind bis dato nicht aufgetaucht und vorlufig nicht zu erwarten. SuSE-
Benutzer sollten also den alten syslogd nachinstallieren. Das bentigte Paket ist auf der
SuSE-CD enthalten (/suse/i586/syslogd-1.4.1-537.i586.rpm).
396
Grundlegende Systemdienste 108
/etc/syslog.conf
Das Protokollierungsverhalten des syslogd wird mit der Datei /etc/syslog.conf
gesteuert. Achtung bei der Prfung: Es gibt keine /etc/syslogd.conf! Das kleine d
gibt es nur bei dem entsprechenden Daemon! Der Aufbau dieser Datei ist recht
einfach organisiert. Jede Zeile enthlt jeweils Felder, die immer folgendermaen
gegliedert sind: facility.level action
facility ist hierbei der Prozess, der den zu protokollierenden Eintrag erstellt.
Es kommen folgende Prozesse in Frage:
auth (ehemals security), authpriv, cron, daemon, kern, lpr, mail, mark, news,
syslog, user, uucp, local0 bis local7
Ein Stern (engl. asterisk) bezeichnet alle Facilities.
Wenn Sie fr eigene Programme den Syslog verwenden mchten, dann
knnen Sie hierfr auf die Facilities local0 bis local7 zurckgreifen, die
fr eben diesen Zweck bestimmt sind.
level legt den jeweiligen Protokollierungsgrad fest. Wenn Sie einen Fehler
genauer untersuchen wollen, kann es sinnvoll sein, den Protokollierungsgrad
recht hoch einzustellen. In einigen Fllen knnen aber auch die Erfolgsmel-
dungen einiger Facilities das Verzeichnis /var berschwemmen. Fr die Pr-
fung mssen Sie die Reihenfolge der Loglevel kennen:
debug extremer, in der Regel unntiger Protokollierungsgrad
info harmlose Informationen
notice ungefhrlicher Hinweis
warning, warn normalerweise harmlos, je nach Facility
err, error z.B. Authentifizierungsfehler, I/O Fehler
crit ein kritischer Fehler, sorgt immer fr Probleme
alert ein Alarm, weist immer auf schwerwiegende Probleme hin
emerg panic wird (wenn berhaupt noch) als letzter Eintrag vor dem Sys-
temcrash geschrieben. Das gilt natrlich nicht, wenn ein unwichtiges Pro-
gramm abstrzt, bei dem die Ansteuerung des Syslog vllig bertrieben
wurde.
Die Level error, warn und panic sind veraltet, und es sollten stattdessen jeweils
err, warning und emerg verwendet werden.
action ist von der Bezeichnung her irrefhrend. In diesem Feld wird das Ziel
spezifiziert, in die das Facility protokollieren soll. Hierbei wird es sich norma-
lerweise um eine Datei handeln. Die Benachrichtigung kann aber auch an
einen anderen Computer oder an eine kommagetrennte Liste von Benutzern
gesendet werden.
397
Systemprotokollierung 108.2
Es folgt ein Auszug aus einer typischen Debian-syslog.conf:
auth,authpriv.* /var/log/auth.log
cron.* /var/log/cron.log
kern.* -/var/log/kern.log
lpr.* -/var/log/lpr.log
mail.* -/var/log/mail.log
Wie Sie gleich sehen, verwendet Debian fr jedes Facility seine eigene Log-Datei.
Das ist eher auergewhnlich, kann aber bei der Fehlersuche angenehm sein,
wenn Sie kleinere Logfiles gezielt durchsuchen. Bei den meisten anderen Distri-
butionen knnen Sie davon ausgehen, dass der Lwenanteil der protokollierten
Informationen in der Datei /var/log/messages abgelegt werden.
/etc/logrotate.conf
Damit die Log-Dateien auf einem unbeobachteten System nicht unkontrolliert
anwachsen und das Dateisystem fluten, werden diese mit dem Programm
logrotate berwacht. Wie logrotate diese Dateien behandelt, hngt von den
Einstellungen in der Konfigurationsdatei /etc/logrotate.conf ab. Normalerweise
werden nach Ablauf einer voreingestellten Zeit die im Verzeichnis /var/log
befindlichen Dateien komprimiert und dann im leeren Zustand neu erstellt. Es ist
heute der bersichtlichkeit halber blich, die Konfiguration mit Include-Dateien
zu versehen. Deshalb sollten Sie auf Ihrem System auch nach einem Verzeichnis
mit der Bezeichnung /etc/logrotate.d Ausschau halten. Logrotate sollte tglich
von cron ausgefhrt werden.
Einsatz von Log-Dateien zur Fehlersuche
Wenn auf einem Linux-System ein unerklrlicher Fehler auftritt, ist es immer
eine gute Idee, das Verzeichnis /var/log zu konsultieren und die mit dem Problem
in Zusammenhang stehenden Log-Dateien zu untersuchen. Die einfachste
Methode ist wohl die Anzeige einer Log-Datei mit einem Pager:
archangel:/ # less /var/log/messages
Aug 17 09:07:42 archangel named[6801]: client 172.16.0.2#2509:
updating zone '0.16.172.in-addr.arpa/IN': adding an RR at
'2.0.16.172.in-addr.arpa' PTR
Aug 17 09:45:39 archangel sshd[31158]: Accepted password for root
from ::ffff:192.168.0.10 port 4345
Prfungstipp
Detaillierte Kenntnisse ber die Konfiguration der logrotate.conf sind fr die Prfung
nicht erforderlich. Sie sollten aber auf jeden Fall wissen, wozu logrotate eingesetzt wird.
398
Grundlegende Systemdienste 108
Aug 17 10:00:32 archangel syslog-ng[6389]: STATS: dropped 0
Aug 17 11:00:33 archangel syslog-ng[6389]: STATS: dropped 0
Scheinbar ist nichts Aufregendes passiert. Der DNS-Server hat einen Reverse-
Lookup-Eintrag aktualisiert, und der Root hat sich via SSH eingeloggt. Danach
geschah zwei Stunden lang nichts!
Eine vllig andere Methode, sich Log-Dateien zunutze zu machen, ist das Kom-
mando tail. Standardmig gibt tail die letzten zehn Zeilen einer Textdatei auf
dem Bildschirm aus. Wenn Sie aber die Option f bergeben, wird das Anzeigen
der betreffenden Log-Datei fortgesetzt. Das bedeutet, dass der Computer keinen
Eingabe-Prompt anzeigt, sondern die Datei samt nderungen im laufenden Betrieb
anzeigt und aktualisiert. Das ist besonders ntzlich, wenn Sie beabsichtigen, einen
Fehler zu provozieren und dessen Auswirkungen gleichzeitig auf einem anderen
Terminal zu beobachten. Die vollstndige Kommandozeile ist also folgende:
archangel:~ # tail /var/log/messages -f
Wenn Sie nach der Ausgabe eines bestimmten Programms in einer umfangrei-
chen Protokolldatei oder nach einem bestimmten Ereignistyp suchen, empfiehlt
es sich, die Anzeige der Log-Datei mit grep zu filtern. Bei umfangreicheren Ergeb-
nissen kann die Ausgabe natrlich nach less umgeleitet werden.
archangel:~ # grep sshd /var/log/messages | grep invalid | less
In diesem Beispiel sucht grep zunchst alle Eintrge, die der sshd protokolliert
hat. Die anschlieende Filterung nach invalid sucht fehlgeschlagene Anmel-
deereignisse. Zum Schluss wird die Ausgabe an less bergeben und auf dem
Bildschirm dargestellt:
Sep 17 13:04:47 archangel sshd[310]: Failed none for invalid user
rooot from ::ffff:87.187.104.63 port 64960 ssh2
Sep 25 16:58:55 archangel sshd[1774]: Failed none for invalid user
martin from ::ffff:192.168.0.53 port 55380 ssh2
Offensichtlich ist beim ersten Eintrag der Benutzername Root falsch geschrieben
worden. Der zweite Eintrag ist ein Anmeldeversuch von einem Benutzer, den es
auf diesem System gar nicht gibt.
Selbst Ereignisse loggen
Eine einfache Methode, ein Ereignis selbst zu generieren, bietet das Programm
logger. Dieses Tool kann natrlich auch in eigenen Skripten eingesetzt werden.
Wenn z.B. ein selbst geschriebenes Skript verwendet wird, das eigenstndig eine
Datensicherung durchfhrt, ist am Ende des Skripts folgende Zeile denkbar:
399
Grundlagen von Mail Transfer Agents (MTAs) 108.3
logger -t Backup "Datensicherung ausgefhrt"
Zu Testzwecken knnen Sie den Befehl auch einfach auf der Kommandozeile ein-
geben. Ein Blick in den Syslog zeigt das Ergebnis:
archangel:~ # tail 1 /var/log/messages
Sep 25 17:20:42 archangel Backup: Datensicherung ausgefhrt
So haben Sie in Zukunft jederzeit die Mglichkeit, zu berprfen, wann dieses
Skript ausgefhrt wurde.
Der Kernellog
Der Daemon mit dem Namen klogd fngt Meldungen des Kernels ab und proto-
kolliert diese. Normalerweise wird er vom init-Prozess gestartet und luft sinn-
vollerweise in jedem Runlevel, den ein System nutzt. Die Ausgabe erfolgt in der
Regel auf dem Syslog. Man kann (am besten im zugehrigen init-Skript) einige
Optionen an den klogd bergeben. Einige wichtige Optionen sind:
-c n setzt den Loglevel fr Konsolenmeldungen auf n.
-d aktiviert den Debugging Modus.
-f datei ndert die Ausgabe vom Syslog auf die angegebene datei.
Als Eingabedatei verwendet klogd /proc/kmsg. Auch das lsst sich mit einem
Schalter (nmlich -p path) ndern. Allerdings gibt es dazu normalerweise keine
Veranlassung.
108.3 Grundlagen von Mail Transfer Agents (MTAs)
Wichtung: 3
Beschreibung: Kandidaten sollten wissen, welche gebruchlichen MTA-Pro-
gramme existieren und einfache Weiterleitungs- und Alias-Konfigurationen auf
einem Client-Rechner einstellen knnen. Weitere Konfigurationsdateien werden
nicht abgedeckt.
Wichtigste Wissensgebiete:
Mail-Aliase anlegen
Mail-Weiterleitung konfigurieren
Wissen von allgemein verfgbaren MTA-Programmen (postfix, sendmail,
qmail, exim) (keine Konfiguration)
400
Grundlegende Systemdienste 108
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
~/.forward
Kommandos in der Sendmail-Emulationsschicht
newaliases
mail
mailq
postfix
sendmail
exim
qmail
Allgemeines
MUA, MDA und MTA
Die Verarbeitung und bermittlung von Mail-Nachrichten wird in der Hauptsa-
che von drei Softwarekomponenten durchgefhrt:
MUA Der Mail User Agent ist ein Mail-Clientprogramm, mit dem Mails
geschrieben, gelesen und versendet werden. (z.B. kmail, Evolution, Thunder-
bird, Outlook usw.)
MDA Der Mail Delivery Agent verarbeitet E-Mails auf einem Server. Er ent-
scheidet, wie mit den E-Mails weiter zu verfahren ist. Handelt es sich um
lokale Mail-Adressen, stellt er die E-Mail im entsprechenden Mail-Verzeichnis
des Adressaten zu. Ansonsten bergibt er die Nachricht an den MTA, der dann
fr die Weiterleitung sorgt. (MDAs sind z.B. procmail, maildrop, cyrus)
MTA Der Mail Transfer Agent nimmt die E-Mail vom Client entgegen. Er ist
fr die Zustellung einer Nachricht an den richtigen Zielserver verantwortlich.
Hierbei wird normalerweise das Protokoll SMTP verwendet. Auf dem Zielser-
ver bernimmt dann wieder der MDA die Nachrichten und verteilt sie in die
entsprechenden Mail-Verzeichnisse. (MTAs sind z.B. sendmail, postfix, qmail,
exim.)
Prfungstipp
Fr die anstehende Prfung mssen Sie mit den Grundfertigkeiten der Konfiguration
eines Mail Transfer Agents vertraut sein. Komplexere Administrationsaufgaben erwarten
Sie allerdings erst in der LPI-Prfung 117-201.
401
Grundlagen von Mail Transfer Agents (MTAs) 108.3
Fr die endgltige Auslieferung einer Mail-Nachricht an ein Clientprogramm
bentigen Sie letztendlich noch mindestens einen weiteren Serverdienst, wie
IMAP oder POP.
Das Starten und Stoppen eines Mail Transfer Agents funktioniert genau so, wie
bei den meisten anderen Netzwerkdiensten auch, wenn diese nicht gerade von
inetd oder xinetd gesteuert werden. Das bedeutet zum Beispiel fr postfix:
root@ubuntu-server:/# /etc/init.d/postfix start
* Starting Postfix Mail Transport Agent postfix [ OK ]
Mail Aliase
Die Datei /etc/aliases
In der Datei /etc/aliases knnen Sie Mail-Nachrichten umleiten. Hierbei sind vier
verschiedene Verfahren mglich. Das gngigste ist dieses:
willi: wilhelm
root: wilhelm
Mit dem ersten Eintrag werden Mails, die an willi adressiert sind, dem real exis-
tierenden Benutzerkonto wilhelm zugeordnet. Da Wilhelm ein Systemverwalter
ist, der sich uerst selten als Root anmeldet, werden Mails, die an den Root
adressiert sind, ebenfalls Wilhelms Benutzerkonto zugewiesen.
Eine andere Methode ist die Zuweisung eines Alias zu einer Datei. So knnte man
Ttigkeitsberichte, automatisch mit Datum und Uhrzeit versehen, per Mail-Pro-
gramm schreiben:
taetigkeiten: "/home/harald/taetigkeitsbericht"
Die Berichte mssen dann einfach an das Konto taetigkeiten gesendet werden,
und die Aufzeichnung geschieht automatisch in der angegebenen Datei. Fr die-
ses Konto muss ebenfalls kein reales Benutzerkonto auf dem Server existieren.
freunde: :include:/home/harald/meinefreunde
Der voranstehende Eintrag macht tatschlich das, wonach er aussieht: Wenn eine
Mail an Freunde gesendet wird, wird diese Nachricht an alle Mail-Adressen ver-
sendet, die in der Textdatei /home/harald/meinefreunde zeilensepariert aufgefhrt
sind.
Die letzte, nicht selten genutzte Mglichkeit ist die bergabe einer Nachricht an
ein Programm. Mit dieser Methode arbeitet etwa das Mailinglistenprogramm
Majordomo:
402
Grundlegende Systemdienste 108
majordomo: "|/usr/lib/majordomo/wrapper majordomo"
Der Unterschied zur Umleitung in eine Datei ist das fhrende Pipe-Zeichen.
newaliases
Nach dem Anlegen eines neuen Alias in der Datei /etc/aliases mssen Sie den
Befehl newaliases eingeben, damit Sendmail den neuen Alias auch verwendet.
Alternativ knnen Sie auch sendmail -bi ausfhren. Selbst die Antwort der bei-
den Kommandos ist identisch:
[root@fedora10 home]# sendmail -bi
/etc/aliases: 77 aliases, longest 10 bytes, 777 bytes total
Weiterleitung von Mail
Ein Benutzer kann fr sich selbst eine Mail-Weiterleitung einrichten. Das wird oft
mit einem Nachsendeauftrag bei der Post verglichen. Ein gern genannter Verwen-
dungszweck ist die Weiterleitung geschftlicher Mails an eine Urlaubsvertretung.
Dazu muss der Benutzer nichts weiter tun, als eine Datei mit dem Namen .for-
ward (der Punkt muss sein) in seinem Heimatverzeichnis zu erstellen, welche die
Weiterleitungsadresse in einer einzelnen Zeile enthlt. Die Weiterleitung greift
sofort. Es muss nichts weiter unternommen werden.
Wichtige Dateien und Verzeichnisse
/var/spool/mail in diesem Verzeichnis liegen Dateien mit den Namen der
Benutzerkonten, die auf diesem System Mails empfangen. Der MDA liefert
hier Nachrichten fr die lokalen Benutzer aus.
/var/spool/mqueue das ist die Mail-Queue oder auch Warteschlange. Hier holt
der MDA Nachrichten ab und entscheidet dann, ob sie lokal ausgeliefert wer-
den oder an den MTA zur weiteren Verarbeitung bergeben werden mssen.
/var/spool/postfix hier liegt die Datenverzeichnisstruktur von postfix.
/var/mail ist ein typischer Link auf /var/spool/mail.
/etc/postfix beherbergt die Konfigurationsdateien von postfix.
/etc/mail enthlt die meisten Konfigurationsdateien fr sendmail.
Prfungstipp
Fr die Prfung mssen Sie die Verzeichnisse, die von den gngigen MTAs (hauptsch-
lich postfix und sendmail) verwendet werden, kennen.
403
Grundlagen von Mail Transfer Agents (MTAs) 108.3
Um den Inhalt einer Mail-Queue im laufenden Betrieb sehen zu knnen, verwen-
den Sie das Programm mailq ohne Parameter:
archangel:/var/spool/mqueue # mailq
/var/spool/mqueue (2 requests)
--Q-ID---- --Size-- --Q-Time---- ----Sender/Recipient-
l9HH2A016576* 816 Wed Oct 17 19:02 <root@archangel.homelinux.net>
<dominik@archangel.homelinux.net>
l929jC016576* 931 Wed Oct 17 19:02 <root@archangel.homelinux.net>
<dominik@archangel.homelinux.net>
Total requests: 2
In der Regel ist hier aber nichts zu sehen, weil bei einem normal frequentierten
Server die Verarbeitung der Mails sehr schnell geschieht.
sendmail-Konfigurationsdateien
Die Hauptkonfigurationsdatei von sendmail ist die Datei sendmail.cf. Weitere
Konfigurationsdateien befinden sich normalerweise in /etc/mail. Die Datei send-
mail.cf selbst finden Sie z.B. bei SuSE direkt unter /etc, whrend sie bei Fedora 10
unter /etc/mail residiert. Das ist schon ein erster Hinweis darauf, dass die Konfi-
guration von sendmail stark variiert. Die Datei sendmail.cf knnte man durchaus
als kompliziertes Konstrukt bezeichnen. Deshalb wird sie auch normalerweise
nicht von Hand erstellt. Stattdessen schreibt man M4-Makros, die dann durch
einen M4-Prprozessor verarbeitet werden. Die LPI-Prfungen sind aber weit
davon entfernt, sich mit dieser Thematik auseinanderzusetzen.
postfix-Konfigurationsdateien
Der MTA postfix wird mit Konfigurationsdateien konfiguriert, die sich im Ver-
zeichnis /etc/postfix befinden. Die Datei main.cf ist die globale Konfigurationsda-
tei fr postfix. Hier werden wichtige Grundeinstellungen festgelegt. Um eventu-
elle Pfadangaben zu irgendwelchen Arbeitsverzeichnissen mssen Sie sich
normalerweise nicht kmmern, weil diese distributionsspezifisch schon immer
richtig eingestellt sind. Es sollte aber natrlich festgelegt werden, unter welchem
Namen der Computer aus der Sicht des Internets angesprochen wird und fr wel-
che Domnen er verantwortlich ist:
myhostname = echtername.meinedomain.com
myhostname = virtuellername.meinedomain.com
mydomain = meinedomain.com
Wie in dieser Datei die Smarthost-Einstellungen u.. konfiguriert werden, erfah-
ren Sie auf der nchsten Seite.
404
Grundlegende Systemdienste 108
Eine weitere Konfigurationsdatei, die postfix verwendet, heit master.cf. Hierbei
handelt es sich um die Konfiguration fr die postfix-internen Prozesse. In dieser
Datei mssen in den seltensten Fllen nderungen vorgenommen werden.
Smarthost und SMTP-Relay
Ein Smarthost ist ein Mailserver, der als SMTP-Relay fungiert. Normalerweise
werden Sie Ihre zu versendenden Mails nicht direkt zustellen, sondern durch den
SMTP-Server Ihres Internet Service Providers ausliefern lassen. Anderenfalls wr-
den viele Mailserver Ihre Mail nicht entgegennehmen, weil Ihr SMTP-Server im
Internet nicht bekannt ist. Daraus schlieen diese Zielserver, dass Ihr Server ein
mgliches Relay fr Spam ist, und verwerfen Ihre Mail.
Smarthost mit sendmail
Wenn Sie einen externen Smarthost fr sendmail angeben wollen, ist das eine der
wenigen Situationen, in denen Sie die sendmail.cf bearbeiten mssen. Suchen Sie
nach einem DS am Zeilenanfang (mglicherweise auskommentiert), und schrei-
ben Sie dahinter lckenlos den FQDN des Relayservers.
# "Smart" relay host (may be null)
DSmailrelay.myisp.org.
So sieht der Eintrag also aus, wenn der Server mailrelay.myisp.org heit.
Soll Ihr Server selbst als SMTP-Relay fungieren, dann mssen Sie die Dateien /etc/
mail/access und /etc/mail/relay-domains modifizieren und anschlieend in eben
diesem Verzeichnis einmal das Kommando make ausfhren, um die korrespon-
dierenden db-Files zu generieren.
Smarthost mit postfix
Sollten Sie postfix als MTA verwenden, dann muss der Smarthost entsprechend
in der Datei /etc/postfix/main.cf eingetragen werden. Dieser Eintrag sieht wie
folgt aus:
relayhost = mail.myisp.org
Um postfix selbst als Relay einzusetzen, gibt es verschiedene Mglichkeiten. Eine
sehr einfache (wenn auch umstrittene) Methode ist es, einfach mit der Angabe
der eigenen Netzwerke fr bestimmte Subnetze Relaying zuzulassen:
mynetworks = 127.0.0.0/8 192.168.50.0/24 172.16.0.0/28
Das setzt natrlich voraus, dass die Mitarbeiter, die sich in diesen Subnetzseg-
menten aufhalten, vertrauenswrdig sind und nicht auf die Idee kommen, die
Absender ihrer Mails zu flschen.
405
Drucker und Druckvorgnge verwalten 108.4
Wesentlich sicherer ist es natrlich, eine Authentifizierung des Benutzers zu ver-
langen. Als Mechanismus kommt hier am ehesten SASL (Simple Authentication
and Security Layer) infrage. Sollte ein authentifizierter Benutzer eine Mail mit
geflschtem Absender verschicken, ist dieser Vorgang zumindest in den Protokol-
len (/var/log/mail) nachvollziehbar.
exim und qmail
Weniger bekannt sind die MTAs exim und qmail. Exim ist weitgehend hnlich zu
konfigurieren wie sendmail, die Konfiguration ist aber etwas einfacher. Debian
verwendet exim sogar als Standard-MTA. Der MTA qmail wurde hauptschlich
entwickelt, um die Sicherheit gegenber sendmail zu erhhen. Auch qmail ist
erheblich leichter zu konfigurieren als sendmail.
108.4 Drucker und Druckvorgnge verwalten
Wichtung: 2
Beschreibung: Kandidaten sollten in der Lage sein, Druckerwarteschlangen und
Druckauftrge von Benutzern mit CUPS und der LPD-Kompatibilittsschnittstelle
zu verwalten.
Wichtigste Wissensgebiete:
grundlegende CUPS-Konfiguration (fr lokale und entfernte Drucker)
Benutzer-Druckerwarteschlangen verwalten
allgemeine Druckprobleme lsen
Druckauftrge zu eingerichteten Druckerwarteschlangen hinzufgen und dar-
aus lschen
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
CUPS-Konfigurationsdateien, -Werkzeuge und -Hilfsprogramme
/etc/cups
LPD-Kompatibilittsschnittstelle (lpr, lprm, lpq)
Allgemeines
Drucken funktioniert unter Linux praktisch genauso wie unter Unix. Das ist auch
nicht weiter verwunderlich, weil die beiden Drucksysteme, die unter Linux ver-
wendet werden, Portierungen aus der Unix-Welt sind. Die ltere der beiden Vari-
406
Grundlegende Systemdienste 108
anten ist an BSD-Unix angelehnt, das in Kalifornien an der Universitt in Berkeley
entwickelt wurde (BSD steht fr Berkeley Software Distribution). Das BSD-Druck-
system wurde allerdings spter fr Linux komplett neu geschrieben, weil es eine
Sicherheitslcke aufwies, die man unter Linux nicht akzeptieren wollte. Dieses
neu entwickelte System finden Sie heute unter der Bezeichnung LPRng in prak-
tisch allen Linux-Distributionen wieder.
Das zweite groe Drucksystem unter Linux heit CUPS (Common Unix Printing
Solution oder auch Common Unix Printing System). CUPS wurde ursprnglich ent-
wickelt, um das Internet Printing Protocol (IPP) zu untersttzen, lste aber auf vie-
len Systemen BSD und LPRng ab. Auch wenn CUPS intern vllig anders arbeitet
und zudem ein webbasiertes Konfigurationsfrontend anbietet, so ist bei seiner
Entwicklung an Abwrtskompatibilitt gedacht worden. CUPS untersttzt nicht
nur die Kommandos von BSD bzw. LPRng, sondern zustzlich auch die von Sys-
tem-V, einer verbreiteten Unix-Version.
Verwalten der Druckerwarteschlangen
Ein Druckauftrag durchluft bei den meisten Betriebssystemen, bevor er ausge-
druckt wird, eine sogenannte Warteschlange. In diesem Zusammenhang wird
auch hufig der Begriff Queue verwendet. Das Wort Queue kommt ursprnglich
aus der franzsischen Sprache und bedeutet Schlange. Billard wird also, wenn
man es auf gut Deutsch ausdrcken will, nicht mit einem Stock, sondern mit
einer (offensichtlich erstarrten) Schlange gespielt. Einen weiteren gngigen Fach-
begriff, nmlich Spooler, kann man beinahe phonetisch aus dem Englischen mit
Spule bersetzen. Druckauftrge reihen sich also in eine Schlange ein oder wer-
den aufgespult.
Die zu druckenden Auftrge werden unter Linux zunchst von einem Druck-Cli-
ent-Programm (z.B. lpr) in die entsprechende Warteschlange gestellt. Um das
genaue Verzeichnis zu ermitteln, in das der Druckauftrag hingespoolt werden
muss, wird die Konfigurationsdatei /etc/printcap ausgewertet. Normalerweise
befinden sich die Warteschlangen unterhalb von /var/spool. Ein Druckauftrag
besteht immer aus zwei Dateien, nmlich einem Control-File mit der Dateierwei-
terung cf und einem in der Regel erheblich greren Data-File mit der Extension
df. Der Spool-Vorgang ist nun abgeschlossen, und die beiden Dateien bleiben
jetzt so lange liegen, bis sie jemand bearbeitet. Diese Aufgabe bernimmt der
Line Printer Daemon (lpd) nun, vorausgesetzt, er wurde gestartet. lpd prft
zyklisch das Vorhandensein von Dateien in allen Druckerwarteschlangen. Wird
er fndig, so bergibt er die momentan noch in einem sehr rohen, RAW genann-
ten Format vorliegenden, Daten an einen Druckfilter. Dieser wandelt dann die
Daten in Abhngigkeit vom verwendeten Druckermodell in einen geeigneten
407
Drucker und Druckvorgnge verwalten 108.4
Datenstrom und sendet diesen an den Drucker. Wenn der Auftrag ausgedruckt
wurde, werden die Kontroll- und die Datendatei aus der Warteschlange gelscht.
Die Verarbeitung der Dateien ist bei der Verwendung von CUPS geringfgig
anders. So sind z.B. die Konventionen fr die Benennung der Dateien innerhalb
einer Warteschlange different, aber das Druckprinzip ist weitestgehend gleich.
Den Line Printer Daemon startet man mit dem Befehl:
/etc/init.d/lpd start
Alternativ startet man CUPS mit:
/etc/init.d/cups start
Man beachte die Besonderheit, dass der Daemon CUPS nicht, wie die meisten
anderen, auf d endet! Nach nderungen an den Konfigurationsdateien, insbeson-
dere /etc/printcap, muss der jeweilige Druckdaemon neu gestartet werden.
Befehle zur Kontrolle von Druckvorgngen
lp und lpr senden Druckauftrge an einen angegebenen Drucker. Das Kom-
mando lp entstammt dem System-V und versteht andere Optionen als lpr.
Machen Sie sich fr die LPI-Prfung mit den Optionen von lpr vertraut. Mit
P wird die zu verwendende Warteschlange angegeben.
archangel:~ # lpr -Plaserjet1300 /etc/printcap
druckt die Datei /etc/printcap auf dem Printer Laserjet1300 aus.
lpq zeigt den Inhalt von Warteschlangen an. Es kann auch hier mit der Option
P eine bestimmte Warteschlange angegeben werden:
archangel:~ # lpq -Plaserjet1300
laserjet1300 is ready and printing
Rank Owner Job File(s) Total Size
active root 450 printcap 1024 bytes
1st michaela 451 haushaltplan 9216 bytes
2nd michaela 452 haushaltplan 9216 bytes
3rd dominik 453 kinderprogramm.html 1024 bytes
lprm lscht Auftrge aus der Warteschlange. Bereits im Druck befindliche Auf-
trge knnen nicht mehr entfernt werden.
archangel:~ # lprm -Plaserjet1300 451
entfernt den versehentlich doppelt abgesendeten Druckauftrag aus dem Bei-
spiel fr lpq.
408
Grundlegende Systemdienste 108
Ein Benutzer ohne administrative Rechte kann ohne Weiteres selbst alle eige-
nen Auftrge lschen, indem er den Befehl lprm eingibt. Wenn derselbe
Befehl aber vom Benutzer Root ausgefhrt wird, dann werden smtliche
Druckauftrge aller Benutzer aus der Warteschlange entfernt.
lpc Line Printer Control
lpc ist ein Programm, das man als gewhnlichen Konsolenbefehl oder interaktiv
verwenden kann. Es bietet umfangreiche Funktionen, weshalb ihm auch ein eige-
ner Abschnitt zusteht. Der interaktive Modus bietet einen Eingabe-Prompt und
macht vor allem dann Sinn, wenn Sie beabsichtigen, dem Druckdaemon mehrere
Befehle hintereinander zu geben. Wenn lpc mit CUPS verwendet wird, sind nur
einige wenige Befehle innerhalb von lpc verfgbar. Genau genommen ist dann
lediglich eine Statusabfrage mglich.
lpc> status
laserjet1300:
printer is on device 'parallel' speed 1
queuing is enabled
printing is enabled
4 entries
daemon present
Unter BSD bzw. LPRng sind deutlich mehr Optionen verfgbar, wobei die
Befehlsstruktur bis auf die Ausnahmen topq und status immer die gleiche ist. In
den Beispielen wird davon ausgegangen, dass lpc im interaktiven Modus gestar-
tet wurde.
lpc> up laserjet1300
startet und aktiviert den Laserjet 1300, whrend
lpc> up all
alle Drucker gleichzeitig startet und aktiviert. Also werden immer lpc, gefolgt
vom lpc-Kommando (up) und von dem anzusteuernden Drucker (Laserjet1300
bzw. all) angegeben. Die lpc-Kommandos sind im Einzelnen:
start startet den Druckprozess als solchen, so dass jetzt Auftrge aus der War-
teschlange abgearbeitet und ausgedruckt werden knnen.
stop beendet den Druckprozess. Ein laufender Auftrag wird noch bis zum
Ende abgearbeitet. Die Druckerwarteschlange nimmt aber weiterhin Auftrge
entgegen.
enable aktiviert die Druckerwarteschlange.
409
Drucker und Druckvorgnge verwalten 108.4
disable deaktiviert die Druckerwarteschlange. Bereits in der Warteschlange
befindliche Auftrge werden noch fertig abgearbeitet. Neue Jobs werden
jedoch abgelehnt.
up kombiniert die Kommandos enable und start.
down kombiniert die Kommandos disable und stop.
abort beendet den Druckprozess sofort. Auch ein bereits in Arbeit befindli-
cher Druckauftrag wird sofort abgebrochen. Sollte der Drucker seine Ttigkeit
nicht sofort einstellen, ist dies auf Restdaten im Druckerspeicher zurckzufh-
ren.
topq stellt einen bereits gespoolten Druckauftrag an die erste Position in der
Warteschlange. Hier sieht die Befehlssyntax etwas anders aus als bei den ande-
ren Kommandos:
lpc> topq Laserjet1300 453 verschiebt den Druckjob mit der Nummer 453 an
die erste Position der Druckerwarteschlange. Ein bereits in Arbeit befindlicher
Druckauftrag wird hierdurch nicht abgebrochen.
quit beendet letztendlich den interaktiven Modus des lpc und kehrt zur nor-
malen Shell zurck.
Drucken mit CUPS
CUPS ist ein Drucksystem, das von Anfang an auf das Drucken im Netzwerk aus-
gelegt wurde. Deshalb modifiziert CUPS auch gleich nach seiner Installation die
altbekannte /etc/printcap, in der er sich selbst als Netzwerkdrucker deklariert:
# This file was automatically generated by cupsd(8) from the
# /etc/cups/printers.conf file. All changes to this file
# will be lost.
laserjet1300|laserjet1300:rm=archangel:rp=laserjet1300:
Abgesehen vom Namen des Druckers und seinem Alias, findet man hier also
noch einen remote printer an einer remote machine und das, obwohl der Drucker
lokal angeschlossen ist. Die Konfigurationsdateien fr CUPS befinden sich alle
unterhalb von /etc/cups. Aber selbst diese mssen Sie nur selten modifizieren,
weil die komplette Konfiguration ber Frontends durchgefhrt werden kann. Am
einfachsten ist die Konfiguration mit einem Webbrowser. CUPS horcht am TCP-
Port 631 und kann somit ber http://localhost:631 angesprochen werden. Auf
diesem Weg knnen nicht nur Wartungsaufgaben wie das Lschen von Druckauf-
trgen u.. durchgefhrt, sondern dem System auch neue Drucker hinzugefgt
werden. Der TCP-Port fr die Konfiguration lsst sich brigens in der Datei /etc/
cups/cupsd.conf ndern. CUPS kennt von sich aus sehr viele verschiedene Drucker
410
Grundlegende Systemdienste 108
und bringt die ntigen Filter alle mit. Die normalen Befehle zur Verwaltung von
Warteschlangen, wie lpr, lprm, lpq und lpc, stehen genauso zur Verfgung wie
unter BSD. Einzig der lpc ist in seiner Funktionsweise stark eingeschrnkt. Zur
konsolenbasierten Konfiguration dient das Tool lpadmin, was Sie sich auch unbe-
dingt fr die Prfung merken sollten. In der Praxis werden Sie nach kurzer Ein-
gewhnungszeit auf die angenehme HTML-Oberflche von CUPS nicht mehr ver-
zichten wollen.
411
TCP/IP ist das Netzwerkprotokoll, das sich im Laufe der Jahrzehnte
weltweit, sowohl im Internet, als auch in Intranets, absolut durchgesetzt
hat. Grund genug, hier ein paar Worte darber zu verlieren.
Topic 109: Netz-Grundlagen
109.1 Grundlagen von Internet-Protokollen
Wichtung: 4
Beschreibung: Kandidaten sollten ein angemessenes Verstndnis der Grundlagen
von TCP/IP-Netzen demonstrieren.
Wichtigste Wissensgebiete:
Verstndnis von Netzmasken demonstrieren
Wissen ber die Unterschiede zwischen privaten und ffentlichen dotted
quads IP-Adressen
eine Default-Route einstellen
Wissen ber gngige TCP- und UDP-Ports (20, 21, 22, 23, 25, 53, 80, 110, 119,
139, 143, 161, 443, 465, 993, 995)
Wissen ber die Unterschiede und wesentlichen Eigenschaften von UDP, TCP
und ICMP
Wissen ber die wesentlichen Unterschiede zwischen IPv4 und IPv6
Wissen ber die grundlegenden Eigenschaften von IPv6
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
/etc/services
ftp
telnet
host
ping
dig
traceroute
tracepath
412
Netz-Grundlagen 109
Allgemeines
Da es sich bei Linux um ein ausgesprochenes Netzwerkbetriebssystem handelt,
mssen Sie darauf vorbereitet sein, Fragen zum Thema Netzwerk, insbesondere
TCP/IP, beantworten zu knnen. Auch Fragen, die sich auf historische Hinter-
grnde beziehen, kommen vor, weshalb diese hier auch nher betrachtet wer-
den. Sie mssen natrlich nicht auswendig wissen, dass TCP/IP etwa Ende 1974
entwickelt wurde, aber Sie drfen auch nicht denken, das Protokoll wre von Bill
Gates persnlich erfunden worden.
TCP/IP-Geschichte kurz gefasst
Schon dem Namen dieses Protokolls (oder dieser Protokollfamilie) knnen Sie
entnehmen, wo es seine Wurzeln hat: IP das Internetprotokoll. Allerdings ist es
eigentlich eher so, dass sich der Name des Internets von diesem Protokoll ableitet
und nicht umgekehrt. Das Internet ist der direkte Nachfolger des alten ARPANET.
Man kann heute noch in den Konfigurationsdateien und auch Zonendaten eines
DNS-Servers sehen, wo dieser seine Ursprnge hat. Das dokumentiert der fol-
gende Ausschnitt einer /etc/named.conf-Datei:
zone "0.0.127.in-addr.arpa" in {
type master;
file "127.0.0.zone";
};
Sie sehen, dass selbst bei der Deklaration der Reverse-Lookup-Zone fr das Loop-
back-Netzwerk eine Syntax aus ARPANET-Zeiten verwendet wird. Aber woher
kommt nun eigentlich das ARPANET?
Am 04. Oktober 1957 sendete der russische Satellit Sputnik 1 seine ersten Funk-
signale zur Erde. Als Reaktion darauf wurde vom amerikanischen Verteidigungs-
ministerium DoD (Departement Of Defence) die Organisation ARPA (Advanced
Research Projects Agency) ins Leben gerufen, um neue, fr das Militr nutzbare
Technologien zu entwickeln. Die ARPA entwickelte diese Technologien jedoch
nicht selbst, sondern delegierte diese Forschungsarbeiten an verschiedene Uni-
versitten innerhalb der USA. Gegen Ende 1969 wurde von vier Universitten
das erste Netzwerk mit vier Knoten in Betrieb genommen. Dieses frhe ARPA-
NET verband folgende Forschungsorganisationen:
University of California Los Angeles (UCLA)
University of California Santa Barbara (UCSB)
Stanford Research Institute (SRI)
University of Utah
413
Grundlagen von Internet-Protokollen 109.1
Das ARPANET wuchs schnell heran, und schon bald konnten die alten Protokolle
die Netzlast nicht mehr verwalten. Ein neues Protokoll wurde erforderlich, und
gegen Ende 1974 wurde TCP/IP entwickelt. Die weitere Entwicklung und Inte-
gration von TCP/IP in UNIX-Systeme wurde u.a. durch die University of Califor-
nia in Berkeley betrieben. Hier wurde auch BIND entwickelt der Berkeley Inter-
net Name Daemon.
Das DoD-Modell
Das DoD-Modell wurde nach dem amerikanischen Departement of Defence
benannt und dient der modellhaften Beschreibung des TCP/IP-Protokollstapels.
Das ebenfalls bekannte OSI-Referenzmodell wurde erheblich spter entwickelt
und ermglicht aufgrund seiner hheren Komplexitt die modellhafte Umset-
zung fast aller bekannten Netzwerkprotokolle. Zum Verstndnis von TCP/IP ist
das DoD-Modell normalerweise ausreichend. Whrend das OSI-Modell in sieben
Schichten aufgeteilt ist, kommt das DoD-Modell mit vier Schichten aus. Diese
wren von oben nach unten:
Anwendungsschicht (Application Layer) In dieser Schicht liegen die Netzwerk-
anwendungen. Beispiele: HTTP, FTP, SMTP, DNS, Telnet usw.
Host zu Host (Host to Host) Hier befinden sich TCP und UDP. Diese Schicht
wird heutzutage als Transportlayer bezeichnet.
Internetschicht (Internetlayer) In dieser Schicht befindet sich IPv4, IPv6, RIP,
OSPF, ARP, IGMP, ICMP.
Netzwerk-Zugriff (Network Access) dies beinhaltet u.a. die Protokolle Ether-
net, HDLC, pppoe, Token Ring und FDDI. Die Protokolle dieser Schicht sind
fr Ihre Prfung nicht von Belang und sollen deshalb auch hier nicht weiter
behandelt werden. Die modernere Bezeichnung fr diese Schicht lautet Link-
Layer.
Sie werden feststellen, dass die Positionierung der Protokolle sich von Modell zu
Modell leicht unterscheidet. Das ist aber nicht besorgniserregend, weil es sich ja
nur um ein Modell handelt. Es ist wie mit allen Modellen: Man kann damit ein-
fach nicht alles lckenlos darstellen.
Die Protokolle der dritten Schicht
Die dritte Schicht ist die Host-zu-Host-Schicht. Die hier vertretenen Protokolle
haben die Aufgabe, die von den Anwendungen bereitgestellten Daten in Pakete
bzw. Datagramme zu verpacken und an die darunter gelegene Internetschicht
weiterzureichen. Umgekehrt nehmen sie auch Pakete und Datagramme aus der
414
Netz-Grundlagen 109
zweiten Schicht entgegen und ordnen diese dann den entsprechenden Anwen-
dungen zu.
TCP (Transmission Control Protocol) ist ein verbindungsorientiertes Protokoll.
Es stellt die Integritt der Verbindung sicher, indem es eventuell beschdigte
Datenpakete neu anfordert oder deren Reihenfolge reorganisiert. Deshalb
wird es von vielen Anwendungen verwendet, insbesondere wenn grere
Datenmengen ausgetauscht werden.
UDP (User Datagram Protocol) ist ein verbindungsloses Protokoll. Es reicht
vorwiegend die Datenpakete aus der Internetschicht an die entsprechend rich-
tige Anwendung hoch. UDP wird von Programmen verwendet, die geringen
Datenverkehr verursachen (z.B. DNS, NTP). Auch Anwendungen, die keine
Antworten erwarten (Broadcasts, Multicasts), verwenden UDP.
Damit die Zustellung der Datenpakete und Datagramme an die richtige Anwen-
dung erfolgen kann, verwenden Netzwerkanwendungen sogenannte Ports. Die
Kenntnis der gngigsten TCP- und UDP-Portnummern ist fr einen Administrator
Allgemeinbildung und fr die Prfung unverzichtbar. Sie sollten wenigstens die
folgenden Ports auswendig kennen:
ftp-data 20/tcp+udp
ftp 21/tcp
ssh 22/tcp+udp
telnet 23/tcp+udp
smtp 25/tcp+udp
dns 53/tcp+udp
http 80/tcp+udp
pop3 110/tcp+udp
nntp 119/tcp+udp
ntp 123/tcp+udp
netbios-ssn 139/tcp+udp
imap 143/tcp+udp
snmp 161/tcp+udp
https 443/tcp+udp
Es sind insgesamt 65.536 Ports verfgbar. Die ersten 1.024 Ports werden als Well
Known Ports bezeichnet. Das Betriebssystem wird ber die Konfigurationsdatei
/etc/services darber informiert, welche Dienste mit welchen Ports korrespondie-
ren. Sie knnen die Datei natrlich auch in Kombination mit grep als kleines
Nachschlagewerk verwenden. Wenn Sie etwa vergessen haben, welchen Port
blicherweise https verwendet, liefert Ihnen das folgende Kommando die rich-
tige Antwort:
415
Grundlagen von Internet-Protokollen 109.1
archangel:~ # grep ^https /etc/services
https 443/tcp # http protocol over TLS/SSL
https 443/udp # http protocol over TLS/SSL
Um andersherum fr einen bekannten Port den zugehrigen Dienst zu ermitteln,
kann folgendes Kommando eine sauber gefilterte Ausgabe liefern:
archangel:~ # grep " 389/" /etc/services
ldap 389/tcp # Lightweight Directory Access Protocol
ldap 389/udp # Lightweight Directory Access Protocol
Das fhrende Leerzeichen in der Abfrage mit grep und der Schrgstrich verhin-
dern unerwnschte Ausgaben, wie etwa solche:
itv-control 3899/udp # ITV Port
clariion-evr01 6389/tcp # clariion-evr01
Um festzustellen, an welchen Ports Ihr System aktuell lauscht, knnen Sie nmap
verwenden. Der Vorteil gegenber einer berprfung mittels netstat ist die
bersichtlichkeit der Ausgabe, wie das Beispiel zeigt:
archangel:~ # nmap localhost
Starting nmap 3.81 at 2007-10-06 23:10 CEST
Interesting ports on localhost (127.0.0.1):
(The 1646 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE
25/tcp open smtp
53/tcp open domain
80/tcp open http
139/tcp open netbios-ssn
143/tcp open imap
443/tcp open https
3128/tcp open squid-http
Die Protokolle der zweiten Schicht
IPv4 (Internet Protocol Version 4) fgt den Paketen oder Datagrammen zur
Adressierung einen IP-Header hinzu. Dieser Header enthlt u.a. die Informa-
tionen ber die Ziel- und die Quelladresse eines Datenpaketes, damit dieses
korrekt zugestellt werden kann. Das fertige Produkt wird als Frame bezeich-
net. Die von IPv4 verwendeten Adressen haben eine Lnge von 32 Bit.
IPv6 (Internet Protocol Version 6) entspricht vom Verwendungszweck her IPv4,
weist aber einen Adressraum von 128 Bit auf.
RIP (Routing Information Protocol) ist ein dynamisches Routing-Protokoll, das
dem Austausch von Informationen zwischen Routern dient.
416
Netz-Grundlagen 109
OSPF (Open Shortest Path First) ist ebenfalls ein dynamisches Routing-Proto-
koll. Es verwendet im Gegensatz zu RIP den Link State Algorithmus (LSA) und
ist deshalb auch fr groe Netzwerke geeignet.
ARP (Address Resolution Protocol) stellt den Zusammenhang zwischen der IP-
Adresse und der MAC-Adresse (Media Access Control) eines Netzwerkadapters
her.
ICMP (Internet Control Message Protocol) wird berwiegend von Routern ver-
wendet, um die Verfgbarkeit eines Gateways zu prfen bzw. zu propagieren.
Ausnahmen stellen Diagnoseprogramme wie ping oder traceroute dar. Diese
prfen die Verfgbarkeit von Routern bzw. Ziel-Hosts.
IGMP (Internet Group Management Protocol) wird verwendet, wenn Nachrich-
ten fr eine bestimmte Gruppe von Hosts bestimmt sind. Diese bentigen dann
auch eine IGMP-taugliche IP-Adresse. Typische Anwendungen sind Videokon-
ferenzen und Anwendungen, die fr Prsentationen eingesetzt werden.
Es gibt auch