157
Johannes Plötner, Steffen Wendzel Linux Das umfassende Handbuch

Linux - Cloud Object Storage · JohannesPlötner&SteffenWendzel,Linux-DasumfassendeHandbuch5.Auflage GalileoPress,ISBN:978-3-8362-1822-1 Layout:gp.cls,Version3.4.002(14thAugust2011),(C)Dr

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Johannes Plötner, Steffen Wendzel

LinuxDas umfassende Handbuch

Auf einen Blick

TEIL I Einstieg in Linux ................................................................ 43

TEIL II Grundlagen ....................................................................... 111

TEIL III Die Shell .......................................................................... 205

TEIL IV System- & Netzwerkadministration ................................ 375

TEIL V Die grafische Oberfläche .................................................. 685

TEIL VI Systeminterna .................................................................. 791

TEIL VII Programmierung und Sicherheit .................................... 925

TEIL VIII Anhang .......................................................................... 1167

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 5 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

Vorwort ........................................................................................................................... 31Über die Autoren .......................................................................................................... 35Über dieses Buch .......................................................................................................... 37

TEIL I: Einstieg in Linux

1 Einleitung .............................................................................................. 45

1.1 Warum Linux? ............................................................................................ 451.1.1 Man muss kein Informatiker sein ... ..................................... 451.1.2 ... aber es hilft ........................................................................... 46

1.2 Grundbegriffe: Kernel, Distributionen, Derivate ................................. 461.2.1 Bekannte Distributionen und Derivate ................................ 471.2.2 Arten von Distributionen ........................................................ 47

1.3 Die Entstehungsgeschichte von Linux ................................................... 491.3.1 Unix ............................................................................................ 491.3.2 BSD-Geschichte ........................................................................ 511.3.3 Stallman und das GNU-Projekt .............................................. 521.3.4 Die Geschichte von Linux ....................................................... 531.3.5 Geschichte der Distributionen ............................................... 56

1.4 Linux und BSD: Unterschiede und Gemeinsamkeiten ........................ 581.4.1 Freie Software ........................................................................... 581.4.2 Ports und Packages .................................................................. 591.4.3 Versionierung ............................................................................ 601.4.4 Maskottchen ............................................................................. 61

1.5 Informationsquellen .................................................................................. 621.6 Zusammenfassung ..................................................................................... 631.7 Aufgaben ..................................................................................................... 64

2 Die Installation .................................................................................... 65

2.1 Installationsvorbereitungen ..................................................................... 652.1.1 Unterstützte Hardware ............................................................ 652.1.2 Partitionierung .......................................................................... 672.1.3 Die Installation vorbereiten ................................................... 70

2.2 Installation von Ubuntu ........................................................................... 702.3 Installation von openSUSE (KDE-Live-CD) ........................................... 71

5

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 6 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

2.3.1 Erste Schritte ............................................................................. 712.3.2 Partitionierung .......................................................................... 712.3.3 Anlegen eines Benutzers ......................................................... 722.3.4 Systeminstallation .................................................................... 722.3.5 Fertigstellung ............................................................................ 73

2.4 Installation von Fedora (Live-Install) ..................................................... 732.4.1 Erste Schritte ............................................................................. 732.4.2 Installation durchführen .......................................................... 74

2.5 Installation von Slackware Linux ............................................................ 752.5.1 Nach dem CD-Booten ............................................................. 752.5.2 Setup .......................................................................................... 752.5.3 Konfiguration ............................................................................ 76

2.6 Installation von OpenBSD ....................................................................... 782.6.1 Booten ........................................................................................ 782.6.2 Grundkonfiguration ................................................................. 782.6.3 Partitionierung .......................................................................... 802.6.4 Kopiervorgang .......................................................................... 812.6.5 Installation abschließen .......................................................... 82

2.7 Linux bzw. BSD starten ............................................................................ 822.8 Zusammenfassung ..................................................................................... 82

3 Erste Schritte ........................................................................................ 83

3.1 Der Bootvorgang ....................................................................................... 833.2 Anmelden ................................................................................................... 843.3 Erste Schritte mit KDE .............................................................................. 853.4 Erste Schritte mit GNOME ...................................................................... 89

3.4.1 GNOME 2 .................................................................................. 893.4.2 GNOME 3 .................................................................................. 913.4.3 Der Dateimanager unter GNOME ........................................ 92

3.5 Zusammenfassung ..................................................................................... 923.6 Aufgaben ..................................................................................................... 92

4 Linux als Workstation für Einsteiger ............................................. 93

4.1 Mit Office arbeiten ................................................................................... 934.1.1 OpenOffice.org/LibreOffice .................................................... 934.1.2 KOffice und KDE PIM ............................................................. 101

4.2 Im Internet surfen: Browser .................................................................... 1034.3 E-Mails empfangen und senden ............................................................. 1064.4 Zusammenfassung ..................................................................................... 109

6

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 7 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

TEIL II: Grundlagen

5 Der Kernel ............................................................................................. 113

5.1 Grundlagen ................................................................................................. 1145.1.1 Prozessor .................................................................................... 1145.1.2 Speicher ..................................................................................... 1155.1.3 Fairness und Schutz ................................................................. 1195.1.4 Programmierung ....................................................................... 1205.1.5 Benutzung ................................................................................. 127

5.2 Aufgaben eines Betriebssystems ............................................................. 1285.2.1 Abstraktion ................................................................................ 1285.2.2 Virtualisierung ........................................................................... 1295.2.3 Ressourcenverwaltung ............................................................ 132

5.3 Prozesse, Tasks und Threads .................................................................... 1325.3.1 Definitionen .............................................................................. 1335.3.2 Lebenszyklen eines Prozesses ................................................ 1385.3.3 Implementierung ...................................................................... 145

5.4 Speichermanagement ............................................................................... 1495.4.1 Paging ......................................................................................... 1495.4.2 Hardware ................................................................................... 1515.4.3 Organisation des Adressraums ............................................... 153

5.5 Eingabe und Ausgabe ............................................................................... 1625.5.1 Hardware und Treiber .............................................................. 1635.5.2 Interaktion mit Geräten .......................................................... 1665.5.3 Ein-/Ausgabe für Benutzerprogramme ................................. 1715.5.4 Dateisysteme ............................................................................. 171

5.6 Zusammenfassung ..................................................................................... 1735.7 Aufgaben ..................................................................................................... 174

6 Grundlagen aus Anwendersicht ...................................................... 175

6.1 Die Unix-Philosophie ................................................................................ 1756.1.1 Kleine, spezialisierte Programme .......................................... 1766.1.2 Wenn du nichts zu sagen hast: Halt die Klappe ................. 1776.1.3 Die Shell ..................................................................................... 1786.1.4 Administration .......................................................................... 1786.1.5 Netzwerktransparenz ............................................................... 179

6.2 Der erste Kontakt mit dem System ........................................................ 1816.2.1 Booten ........................................................................................ 1816.2.2 Login ........................................................................................... 183

7

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 8 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

6.2.3 Arbeiten am System ................................................................. 1836.2.4 Herunterfahren ......................................................................... 1906.2.5 Wie Laufwerke bezeichnet werden ...................................... 191

6.3 Bewegen in der Shell ................................................................................ 1936.3.1 Das Prompt ............................................................................... 1936.3.2 Absolute und relative Pfade ................................................... 1946.3.3 pwd ............................................................................................. 1946.3.4 cd ................................................................................................ 194

6.4 Arbeiten mit Dateien ................................................................................ 1966.4.1 ls .................................................................................................. 1966.4.2 more, less und most ................................................................ 1976.4.3 Und Dateitypen? ...................................................................... 198

6.5 Der Systemstatus ....................................................................................... 1996.5.1 uname ........................................................................................ 1996.5.2 uptime ........................................................................................ 1996.5.3 date ............................................................................................. 199

6.6 Hilfe ............................................................................................................. 2006.6.1 Manpages .................................................................................. 2006.6.2 GNU info .................................................................................... 2036.6.3 Programmdokumentation ....................................................... 203

6.7 Zusammenfassung ..................................................................................... 2036.8 Aufgaben ..................................................................................................... 204

TEIL III: Die Shell

7 Die Shell ................................................................................................ 207

7.1 Was ist eine Shell? ..................................................................................... 2077.1.1 Eine Shell verlassen .................................................................. 2087.1.2 nologin ....................................................................................... 2097.1.3 /etc/shells .................................................................................. 2097.1.4 Die Login-Shell wechseln ....................................................... 210

7.2 Welche Shells gibt es? .............................................................................. 2107.3 Welche Shell für dieses Buch? ................................................................. 2127.4 Konsolen ..................................................................................................... 2137.5 screen .......................................................................................................... 2137.6 Die Shell anwenden .................................................................................. 2157.7 Grundlagen der Shellnutzung .................................................................. 217

7.7.1 Programme starten .................................................................. 2177.7.2 Kommandos aneinanderreihen .............................................. 217

8

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 9 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

7.7.3 Mehrzeilige Kommandos ........................................................ 2197.7.4 Alias, shell-intern oder -extern? ............................................ 2197.7.5 Shell-Aliase ................................................................................ 2217.7.6 Verzeichniswechsel .................................................................. 2227.7.7 echo ............................................................................................ 2247.7.8 Shellvariablen ............................................................................ 2257.7.9 Kommandosubstitution .......................................................... 232

7.8 Ein- und Ausgabeumlenkung .................................................................. 2347.8.1 Ausgabeumlenkung ................................................................. 2357.8.2 Fehlerumlenkung ..................................................................... 2357.8.3 Die Ausgabe an eine Umlenkung anhängen ....................... 2367.8.4 Eine Ausgabe in eine bestehende Datei umlenken ........... 2367.8.5 Eingabeumlenkung .................................................................. 237

7.9 Pipes ............................................................................................................ 2387.9.1 Duplizieren der Ausgabe mit tee ........................................... 2397.9.2 Named Pipes (FIFOs) ............................................................... 239

7.10 Subshells und Kommandogruppen ........................................................ 2417.11 Effektives Arbeiten mit der Bash ............................................................ 242

7.11.1 Die Kommando-History .......................................................... 2427.11.2 Automatische Vervollständigung von Dateinamen ............ 245

7.12 xargs ............................................................................................................. 2467.13 Zusammenfassung ..................................................................................... 2477.14 Aufgaben ..................................................................................................... 248

8 Reguläre Ausdrücke ............................................................................ 249

8.1 Der Aufbau regulärer Ausdrücke ............................................................ 2518.2 Der Stream-Editor sed .............................................................................. 253

8.2.1 Was bringt mir sed? ................................................................. 2548.2.2 Erste Schritte mit sed .............................................................. 2548.2.3 sed-Befehle ................................................................................ 2558.2.4 Nach Zeilen filtern ................................................................... 2598.2.5 Wiederholungen in regulären Ausdrücken .......................... 260

8.3 grep .............................................................................................................. 2618.3.1 grep -E und egrep .................................................................... 2628.3.2 Geschwindigkeitsvergleich ..................................................... 2628.3.3 Exkurs: PDF-Files mit grep durchsuchen ............................. 263

8.4 awk .............................................................................................................. 2648.4.1 Nutzen und Interpreter ........................................................... 2648.4.2 Der Aufruf des Interpreters awk ............................................ 2658.4.3 Erste Gehversuche .................................................................... 265

9

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 10 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

8.4.4 Der Anweisungsblock .............................................................. 2678.4.5 Variable ...................................................................................... 2718.4.6 Arrays ......................................................................................... 2798.4.7 Bedingte Anweisungen ........................................................... 2818.4.8 Schleifen .................................................................................... 2848.4.9 Funktionen in awk ................................................................... 2898.4.10 Ein paar Worte zum Schluss ................................................... 292

8.5 Zusammenfassung ..................................................................................... 2928.6 Aufgaben ..................................................................................................... 292

9 Konsolentools ...................................................................................... 293

9.1 head, tail und nl – Dateiinhalte zeigen ................................................. 2939.2 column – Ausgaben tabellenartig formatieren ..................................... 2949.3 colrm – Spalten entfernen ....................................................................... 2959.4 cut, paste, tac und tr – Dateiinhalte ändern ........................................ 2979.5 sort und uniq – sortiert und einzigartig ................................................. 2989.6 wc – Dateiinhalt vermessen ..................................................................... 2999.7 Dateien finden mit find ............................................................................ 300

9.7.1 Festlegung eines Auswahlkriteriums .................................... 3009.7.2 Festlegung einer Aktion .......................................................... 302

9.8 split – Dateien aufspalten ........................................................................ 3039.9 Midnight Commander (mc) ..................................................................... 304

9.9.1 Bedienung ................................................................................. 3059.9.2 Verschiedene Ansichten .......................................................... 305

9.10 Spezielle Tools ............................................................................................ 3069.10.1 bc – der Rechner für die Konsole .......................................... 3069.10.2 dd – blockweises Kopieren ..................................................... 3099.10.3 od und hexdump – Dateidumping ........................................ 3109.10.4 script – Terminal-Sessions aufzeichnen ................................ 310

9.11 Zusammenfassung ..................................................................................... 3119.12 Aufgaben ..................................................................................................... 311

10 Die Editoren .......................................................................................... 313

10.1 Anforderungen an Editoren ..................................................................... 31410.2 vi ................................................................................................................... 316

10.2.1 Den vi starten ........................................................................... 31610.2.2 Kommando- und Eingabemodus ........................................... 317

10

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 11 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

10.2.3 Dateien speichern .................................................................... 31710.2.4 Arbeiten mit dem Eingabemodus ......................................... 31710.2.5 Navigation ................................................................................. 31810.2.6 Löschen von Textstellen .......................................................... 31910.2.7 Textbereiche ersetzen .............................................................. 31910.2.8 Kopieren von Textbereichen .................................................. 32010.2.9 Shiften ........................................................................................ 32010.2.10 Die Suchfunktion ...................................................................... 32110.2.11 Konfiguration ............................................................................ 321

10.3 vim ............................................................................................................... 32210.4 Emacs ........................................................................................................... 323

10.4.1 Konzepte ................................................................................... 32410.4.2 Grundlegende Kommandos ................................................... 32610.4.3 Arbeiten mit Puffern und Fenstern ....................................... 32710.4.4 Arbeiten mit Mark und Region ............................................. 32710.4.5 Das Menü nutzen ..................................................................... 32710.4.6 Emacs konfigurieren ................................................................ 328

10.5 Der Editor »ed« .......................................................................................... 32810.5.1 Grundlagen ................................................................................ 32810.5.2 Eingeben und Anzeigen von Inhalten .................................. 32910.5.3 Inhalte kopieren und einfügen .............................................. 33110.5.4 Beenden erzwingen ................................................................. 33210.5.5 Weitere wichtige Befehle ........................................................ 332

10.6 Editoren in der Shell ................................................................................. 33410.7 Zusammenfassung ..................................................................................... 33410.8 Aufgaben ..................................................................................................... 334

11 Shellskriptprogrammierung mit der bash ..................................... 335

11.1 Das erste Shellskript ................................................................................. 33611.2 Kommentare ............................................................................................... 33711.3 Rechnen in der Shell ................................................................................. 337

11.3.1 Integer-Variablen ...................................................................... 33711.3.2 expr ............................................................................................. 33911.3.3 Den bc nutzen .......................................................................... 339

11.4 Arrays ........................................................................................................... 33911.5 Bedingte Anweisungen ............................................................................ 341

11.5.1 if .................................................................................................. 34111.5.2 case ............................................................................................. 344

11

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 12 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

11.6 Schleifen ...................................................................................................... 34611.6.1 while ........................................................................................... 34611.6.2 until ............................................................................................ 34811.6.3 for ................................................................................................ 34811.6.4 seq – Schleifen mit Aufzählungen ......................................... 350

11.7 Menüs mit select ....................................................................................... 35111.8 break ............................................................................................................ 35211.9 Funktionen ................................................................................................. 353

11.9.1 Eine simple Funktion ............................................................... 35411.9.2 Funktionsparameter ................................................................. 35511.9.3 Rückgabewerte ......................................................................... 356

11.10 Temporäre Dateien ................................................................................... 35711.11 Syslog-Meldungen via Shell .................................................................... 35911.12 Pausen in Shellskripte einbauen ............................................................. 35911.13 Zusammenfassung ..................................................................................... 35911.14 Aufgaben ..................................................................................................... 360

12 Die C-Shell ............................................................................................ 361

12.1 Einleitende Anmerkungen ....................................................................... 36112.2 Die C-Shell starten .................................................................................... 36212.3 Kommentare in der C-Shell ..................................................................... 36212.4 Ausgabe- und Eingabeumlenkung ......................................................... 36312.5 Pipes ............................................................................................................ 36312.6 Variablen ..................................................................................................... 364

12.6.1 Arrays ......................................................................................... 36412.6.2 Variablen löschen ..................................................................... 36512.6.3 Auflisten existierender Variablen .......................................... 36512.6.4 Rechnen mit Variablen ............................................................ 366

12.7 Funktionen gibt es nicht .......................................................................... 36612.8 Bedingte Anweisungen und Schleifen ................................................... 367

12.8.1 if .................................................................................................. 36712.8.2 Bedingungen formulieren ....................................................... 36812.8.3 while-Schleifen ......................................................................... 36912.8.4 foreach-Schleifen ...................................................................... 37012.8.5 switch ......................................................................................... 371

12.9 Benutzereingaben ...................................................................................... 37212.10 Zusammenfassung ..................................................................................... 37312.11 Aufgaben ..................................................................................................... 373

12

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 13 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

TEIL IV: System- & Netzwerkadministration

13 Benutzerverwaltung ........................................................................... 377

13.1 Benutzer in Unix ........................................................................................ 37713.1.1 UID und GID ............................................................................. 37713.1.2 /etc/passwd ............................................................................... 37913.1.3 Die Shadow Suite ..................................................................... 380

13.2 Benutzer anlegen, ändern und löschen ................................................. 38213.2.1 Benutzer anlegen ..................................................................... 38213.2.2 Benutzer ändern ....................................................................... 38713.2.3 Benutzer löschen ...................................................................... 389

13.3 Benutzer und Gruppen ............................................................................. 39113.3.1 Gruppen anlegen ...................................................................... 39213.3.2 Benutzer zu Gruppen hinzufügen .......................................... 39313.3.3 Gruppenpasswörter und /etc/gshadow ................................ 39313.3.4 Gruppenadministratoren ......................................................... 39613.3.5 Gruppen löschen ...................................................................... 397

13.4 Als ein anderer Benutzer arbeiten .......................................................... 39713.4.1 Der Systemadministrator als User ......................................... 39713.4.2 su ................................................................................................. 39713.4.3 sudo ............................................................................................ 39813.4.4 setuid/setgid ............................................................................. 400

13.5 NIS/NIS+ ..................................................................................................... 40013.5.1 Funktionsweise ......................................................................... 40013.5.2 Konfiguration der NIS-Clients ................................................ 40213.5.3 Konfiguration des NIS-Servers ............................................... 40313.5.4 Testen der Konfiguration ........................................................ 40313.5.5 Sicherheit ................................................................................... 403

13.6 LDAP ............................................................................................................ 40313.6.1 So funktioniert es ..................................................................... 40513.6.2 Einen LDAP-Server konfigurieren .......................................... 40513.6.3 Einträge hinzufügen, verändern und löschen ...................... 40713.6.4 Die Benutzerverwaltung mit LDAP ....................................... 410

13.7 Zusammenfassung ..................................................................................... 41313.8 Aufgaben ..................................................................................................... 413

14 Grundlegende Verwaltungsaufgaben ............................................. 415

14.1 Rechteverwaltung ..................................................................................... 41514.1.1 chmod ........................................................................................ 416

13

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 14 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

14.1.2 chown ......................................................................................... 41814.1.3 Erweiterte Rechte .................................................................... 42014.1.4 umask ......................................................................................... 42214.1.5 Access Control Lists ................................................................. 423

14.2 Softwareinstallation .................................................................................. 42514.2.1 Paketverwaltung und Ports .................................................... 42714.2.2 APT – Advanced Packaging Tool ........................................... 42814.2.3 Pakete in Handarbeit: dpkg und rpm ................................... 43614.2.4 Das Slackware-Paketsystem ................................................... 44114.2.5 Gentoo Portage ........................................................................ 44614.2.6 BSD-Ports .................................................................................. 44614.2.7 Softwareinstallation ohne Pakete .......................................... 451

14.3 Tätigkeiten automatisieren ...................................................................... 45414.3.1 Skripte & Co. ............................................................................. 45414.3.2 Cronjobs ..................................................................................... 45414.3.3 Punktgenau mit »at« ................................................................ 458

14.4 Logging ........................................................................................................ 46114.4.1 Logdateien ................................................................................. 46114.4.2 syslogd ....................................................................................... 46414.4.3 logrotate .................................................................................... 47114.4.4 logcheck ..................................................................................... 472

14.5 Dateisystemverwaltung ............................................................................ 47314.5.1 /etc/fstab ................................................................................... 47314.5.2 mount ......................................................................................... 47714.5.3 Platz beschränken: Quotas ..................................................... 47814.5.4 du und df ................................................................................... 48114.5.5 SoftRAID und LVM .................................................................. 48214.5.6 Backups, Archive & Co. ........................................................... 487

14.6 Kernel kompilieren .................................................................................... 49214.6.1 Kernel-Quellen besorgen ........................................................ 49214.6.2 Konfiguration ............................................................................ 49314.6.3 Den Kernel übersetzen ............................................................ 49414.6.4 Den Bootloader anpassen ....................................................... 49414.6.5 BSD-Kernel kompilieren ......................................................... 495

14.7 Kernelmodule verwalten .......................................................................... 49814.7.1 modprobe .................................................................................. 49914.7.2 lsmod .......................................................................................... 50014.7.3 insmod und rmmod ................................................................. 50114.7.4 /etc/modules und Co. ............................................................. 50114.7.5 modconf ..................................................................................... 503

14

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 15 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

14.8 Magic SysRq ............................................................................................... 50414.8.1 Aktivierung von SysRq ............................................................ 50414.8.2 Tastenkombinationen .............................................................. 505

14.9 Lokalisierung .............................................................................................. 50614.9.1 Tastaturbelegung ...................................................................... 50614.9.2 Deutsche Sprache .................................................................... 50814.9.3 Einstellen der Uhr .................................................................... 50914.9.4 Texte von anderen Plattformen ............................................. 510

14.10 Zusammenfassung ..................................................................................... 51114.11 Aufgaben ..................................................................................................... 512

15 Netzwerkgrundlagen .......................................................................... 513

15.1 Grundlegendes zu TCP/IP ........................................................................ 51315.1.1 Network Access Layer ............................................................. 51515.1.2 Internet Layer ........................................................................... 51515.1.3 Transport Layer ......................................................................... 51515.1.4 Application Layer ..................................................................... 516

15.2 Grundlegendes Netzwerk-Setup ............................................................. 51715.2.1 Hostname setzen ...................................................................... 51715.2.2 Netzwerkadressen für alle ...................................................... 51815.2.3 Wireless LAN ............................................................................ 52215.2.4 DHCP .......................................................................................... 52315.2.5 /etc/hosts ................................................................................... 52415.2.6 /etc/networks ............................................................................ 52515.2.7 /etc/resolv.conf ......................................................................... 52615.2.8 Nun gibt es aber ein Problem ... ........................................... 52715.2.9 Windows und Namensauflösung .......................................... 528

15.3 Grundlagen des Routings ......................................................................... 52915.3.1 Routing-Administration: route .............................................. 53215.3.2 Router aufsetzen ...................................................................... 534

15.4 Netzwerkverbindungen ............................................................................ 53515.4.1 Datenaufkommen von Schnittstellen ................................... 53515.4.2 Protokollstatistiken .................................................................. 53615.4.3 Aktive TCP-Verbindungen ...................................................... 53915.4.4 Listen-Ports ............................................................................... 54015.4.5 ARP-Cache ................................................................................. 54115.4.6 tcpdump .................................................................................... 542

15.5 Mit Linux ins Internet ............................................................................... 54515.5.1 Point-to-Point Protocol ........................................................... 54615.5.2 Einwahl mit einem Modem .................................................... 548

15

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 16 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

15.5.3 Einwahl über DSL ..................................................................... 55315.6 Zusammenfassung ..................................................................................... 55415.7 Aufgaben ..................................................................................................... 555

16 Anwendersoftware für das Netzwerk ............................................ 557

16.1 Telnet ........................................................................................................... 55716.1.1 Die erste Verbindung .............................................................. 55816.1.2 HTTP, SMTP, POP3 ................................................................... 558

16.2 Die R-Tools ................................................................................................. 56016.3 FTP ............................................................................................................... 56116.4 Browser für die Konsole ........................................................................... 56416.5 Mailprogramme ......................................................................................... 565

16.5.1 mail ............................................................................................. 56516.5.2 Mails löschen und weitere Aktionen .................................... 56816.5.3 Elm, Mutt und Co. ................................................................... 56816.5.4 Fetchmail ................................................................................... 56916.5.5 Procmail ..................................................................................... 571

16.6 Client-NTP-Konfiguration ........................................................................ 57216.7 IRC-Clients .................................................................................................. 57316.8 Usenet ......................................................................................................... 573

16.8.1 Das Protokoll ............................................................................ 57516.8.2 Clients ........................................................................................ 577

16.9 RSS ............................................................................................................... 57916.9.1 Snownews ................................................................................. 57916.9.2 Liferea ......................................................................................... 580

16.10 Zusammenfassung ..................................................................................... 58116.11 Aufgaben ..................................................................................................... 581

17 Netzwerkdienste ................................................................................. 583

17.1 inetd und xinetd ........................................................................................ 58317.1.1 inetd ........................................................................................... 58417.1.2 tcpd ............................................................................................ 58617.1.3 xinetd ......................................................................................... 587

17.2 Standarddienste ......................................................................................... 58817.2.1 Echo ............................................................................................ 58917.2.2 Discard ....................................................................................... 58917.2.3 Systat und Netstat .................................................................... 58917.2.4 Daytime und Time ................................................................... 58917.2.5 QotD .......................................................................................... 590

16

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 17 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

17.2.6 Chargen ...................................................................................... 59017.2.7 Finger ......................................................................................... 59017.2.8 Telnet und R-Dienste ............................................................... 590

17.3 DHCP ........................................................................................................... 59117.3.1 dhcpd ......................................................................................... 59117.3.2 Client-Konfiguration ................................................................ 593

17.4 NNTP-Server (WendzelNNTPd 2) ........................................................... 59417.4.1 Konfiguration ............................................................................ 59517.4.2 Server starten ............................................................................ 59617.4.3 Authentifizierung ..................................................................... 59717.4.4 Anonyme Message-IDs ........................................................... 598

17.5 Network File System ................................................................................. 59817.5.1 NFS-Server aufsetzen ............................................................... 59917.5.2 Clients konfigurieren ............................................................... 601

17.6 FTP ............................................................................................................... 60217.6.1 Konfigurationsdateien ............................................................. 602

17.7 Samba .......................................................................................................... 60517.7.1 Windows-Freigaben mounten ............................................... 60617.7.2 Dateien freigeben ..................................................................... 60617.7.3 smb.conf .................................................................................... 60617.7.4 Samba, LDAP & Co. ................................................................. 610

17.8 Zusammenfassung ..................................................................................... 61117.9 Aufgaben ..................................................................................................... 611

18 Mailserver unter Linux ....................................................................... 613

18.1 Mailserver in Theorie und Praxis ............................................................ 61318.1.1 Funktionsweise von Internet-Mail ........................................ 61318.1.2 Virenschutz ................................................................................ 61718.1.3 Spamschutz ............................................................................... 617

18.2 SMTP-Server mit Exim .............................................................................. 62018.2.1 Die Exim-Philosophie .............................................................. 62018.2.2 Exim installieren und konfigurieren ...................................... 62218.2.3 Die Arbeit mit Exim-Tools ....................................................... 625

18.3 POP3/IMAP-Server mit Courier .............................................................. 62818.4 Zusammenfassung ..................................................................................... 629

19 LAMP & Co. .......................................................................................... 631

19.1 Apache ........................................................................................................ 63119.1.1 Apache verwalten .................................................................... 638

17

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 18 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

19.2 MySQL ......................................................................................................... 64119.2.1 Administration .......................................................................... 64119.2.2 SQL ............................................................................................. 64219.2.3 APIs ............................................................................................. 645

19.3 PHP .............................................................................................................. 64519.3.1 (X)HTML .................................................................................... 64619.3.2 PHP-Support im Apache aktivieren ...................................... 64819.3.3 PHP lernen ................................................................................ 64819.3.4 PHP und MySQL ...................................................................... 651

19.4 Zusammenfassung ..................................................................................... 65519.5 Aufgaben ..................................................................................................... 655

20 DNS-Server ........................................................................................... 657

20.1 Die Serversoftware wählen ...................................................................... 65720.2 BIND aufsetzen .......................................................................................... 65720.3 djbdns .......................................................................................................... 66120.4 DNS-Tools ................................................................................................... 663

20.4.1 host ............................................................................................. 66320.4.2 nslookup .................................................................................... 66520.4.3 dig ............................................................................................... 66720.4.4 whois .......................................................................................... 667

20.5 Zusammenfassung ..................................................................................... 66920.6 Aufgaben ..................................................................................................... 669

21 Secure Shell .......................................................................................... 671

21.1 Das Protokoll .............................................................................................. 67221.1.1 SSH-Protokoll 1 ........................................................................ 67221.1.2 SSH-Protokoll 2 ........................................................................ 672

21.2 Konfiguration eines OpenSSH-Servers ................................................... 67321.3 SSH nutzen ................................................................................................. 676

21.3.1 Remote-Login ........................................................................... 67621.3.2 Secure Copy .............................................................................. 67721.3.3 Authentifizierung über Public-Key-Verfahren ..................... 67821.3.4 Secure File Transfer .................................................................. 68121.3.5 X11-Forwarding ....................................................................... 68121.3.6 SSH-Port-Forwarding ............................................................... 682

21.4 Zusammenfassung ..................................................................................... 68321.5 Aufgaben ..................................................................................................... 684

18

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 19 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

TEIL V: Die grafische Oberfläche

22 Die grafische Oberfläche ................................................................... 687

22.1 Geschichtliches .......................................................................................... 68722.2 Und so funktioniert’s ................................................................................ 688

22.2.1 Client, Server, Protokoll .......................................................... 68822.2.2 Toolkit und XLib ....................................................................... 68922.2.3 Wohin soll die Reise gehen? .................................................. 69022.2.4 Zugriffskontrolle ....................................................................... 69022.2.5 xhost ........................................................................................... 69022.2.6 Benutzer und xauth ................................................................. 69122.2.7 Terminals .................................................................................... 691

22.3 Weitere Standardtools für X11 ............................................................... 69322.4 Schnellstart ................................................................................................. 69422.5 /etc/X11/xorg.conf .................................................................................... 695

22.5.1 Sektion »Module« .................................................................... 69622.5.2 Sektion »Files« .......................................................................... 69722.5.3 Sektion »ServerFlags« .............................................................. 69722.5.4 Sektion »InputDevice« ............................................................ 69722.5.5 Section »Monitor« .................................................................... 69922.5.6 Section »Device« ...................................................................... 69922.5.7 Sektion »Screen« ...................................................................... 70022.5.8 Sektion »ServerLayout« ........................................................... 70122.5.9 Optionale Sektionen ................................................................ 701

22.6 Treiber für NVIDIA- und ATI-Karten ...................................................... 70222.6.1 NVIDIA-Grafikkarten ............................................................... 70222.6.2 ATI-Grafikkarten ....................................................................... 70222.6.3 Funktionstest ............................................................................ 703

22.7 Window-Manager und Desktops ........................................................... 70422.7.1 Aufgaben ................................................................................... 70522.7.2 Konzepte ................................................................................... 70522.7.3 Was steht zur Auswahl? .......................................................... 706

22.8 Grafischer Login ......................................................................................... 70622.9 Tuning .......................................................................................................... 707

22.9.1 Xinerama und Dual-Head ....................................................... 70722.9.2 X11 in einem Fenster .............................................................. 70922.9.3 Mehrere X-Sessions ................................................................. 710

22.10 Root werden ............................................................................................... 71022.11 Zusammenfassung ..................................................................................... 71122.12 Aufgabe ....................................................................................................... 711

19

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 20 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

23 Window-Manager und Desktops ................................................... 713

23.1 KDE .............................................................................................................. 71323.1.1 KDE starten und beenden ...................................................... 71523.1.2 Das K-Menü editieren ............................................................. 71623.1.3 KDE System Settings ............................................................... 71623.1.4 KDE-Tastenkürzel ..................................................................... 71623.1.5 Softwarekomponenten ............................................................ 717

23.2 GNOME ...................................................................................................... 71923.3 Unity ............................................................................................................ 72023.4 XFCE ............................................................................................................ 72123.5 LXDE ............................................................................................................ 72223.6 Window Maker .......................................................................................... 72323.7 Weitere Window-Manager ...................................................................... 724

23.7.1 FVWM, FVWM2, FVWM95 .................................................. 72423.7.2 Blackbox, Fluxbox und Co. ..................................................... 725

23.8 Zusammenfassung ..................................................................................... 72823.9 Aufgaben ..................................................................................................... 728

24 X11-Programme .................................................................................. 729

24.1 Textsatz mit LATEX ........................................................................................ 72924.1.1 Ein erstes Dokument ............................................................... 73024.1.2 Dokumente übersetzen ........................................................... 73224.1.3 Das erste richtige Dokument ................................................. 73324.1.4 Weitere Funktionalität ............................................................ 73424.1.5 Warum LATEX? ............................................................................. 740

24.2 Editoren ....................................................................................................... 74024.2.1 NEdit und gedit ........................................................................ 74124.2.2 Kate ............................................................................................ 741

24.3 Grafikprogramme ....................................................................................... 74224.3.1 The GIMP .................................................................................. 74324.3.2 Freemind .................................................................................... 74424.3.3 OpenOffice.org/LibreOffice Draw ......................................... 74524.3.4 Dia .............................................................................................. 745

24.4 Bild- und Dokumentbetrachter .............................................................. 74624.4.1 PDF- und PS-Dateien anzeigen ............................................. 74624.4.2 CHM-Dateien anzeigen ........................................................... 74724.4.3 Bilddateien anzeigen ............................................................... 747

24.5 Chatprogramme ......................................................................................... 74824.5.1 XChat – ein IRC-Client ............................................................ 748

20

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 21 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

24.5.2 Exkurs: Instant Messenger ...................................................... 74824.6 Weitere nützliche Programme ................................................................ 749

24.6.1 K3b – CDs/DVDs brennen ...................................................... 74924.6.2 Krusader – ein Dateimanager ................................................. 75024.6.3 yakuake – ein Quake-Terminal für KDE ................................ 75124.6.4 Wörterbuch mit dict und StarDict ........................................ 75124.6.5 KWordQuiz – der Vokabeltrainer .......................................... 75324.6.6 JabRef ......................................................................................... 754

24.7 Zusammenfassung ..................................................................................... 75424.8 Aufgaben ..................................................................................................... 754

25 Multimedia und Spiele ...................................................................... 757

25.1 Grundlagen zu »Multimedia« .................................................................. 75725.1.1 Integration ins System ............................................................. 75725.1.2 Die richtige Hardware kaufen ................................................ 758

25.2 Audio ........................................................................................................... 75825.2.1 Bis Kernel 2.6 – OSS ................................................................ 75925.2.2 Ab Kernel 2.6 – ALSA .............................................................. 761

25.3 Audiowiedergabe ...................................................................................... 76225.3.1 Ausgabemöglichkeiten ............................................................ 76225.3.2 MP3-Player und Co. ................................................................ 76325.3.3 Text-to-Speech .......................................................................... 766

25.4 Video ........................................................................................................... 76625.4.1 DVDs, DivX und Co. ................................................................ 76625.4.2 MPlayer ...................................................................................... 76825.4.3 xine ............................................................................................. 77025.4.4 VLC ............................................................................................. 770

25.5 Flash ............................................................................................................. 77125.5.1 SWF, Flash-Player und Co. ..................................................... 77125.5.2 Flash und freie Software ......................................................... 771

25.6 Installation einer TV-Karte ...................................................................... 77225.7 Webcams und Webcam-Software .......................................................... 773

25.7.1 Beispiel: IBM-USB-Cam einrichten ....................................... 77325.7.2 Webcam-Software .................................................................... 774

25.8 Drucken mit CUPS ..................................................................................... 77625.8.1 Das BSD-Printing-System ....................................................... 77625.8.2 Installation ................................................................................. 77725.8.3 Konfiguration ............................................................................ 778

25.9 Scannen mit SANE .................................................................................... 78025.9.1 Backends und Frontends ........................................................ 780

21

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 22 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

25.9.2 Scanning-Tools .......................................................................... 78025.10 Spiele ........................................................................................................... 781

25.10.1 Professionell spielen unter Linux ........................................... 78225.10.2 Klassische Unix/Linux-Spiele .................................................. 78325.10.3 Freie Spiele ................................................................................ 786

25.11 Zusammenfassung ..................................................................................... 78925.12 Aufgaben ..................................................................................................... 789

TEIL VI: Systeminterna

26 Prozesse und IPC ................................................................................. 793

26.1 Prozessarten ............................................................................................... 79426.1.1 Hintergrundprozesse ............................................................... 79426.1.2 Dämonprozesse ........................................................................ 794

26.2 Prozesse in der Shell ................................................................................. 79526.2.1 Wechseln zwischen Vorder- und Hintergrund .................... 79526.2.2 Jobs – behalten Sie sie im Auge ............................................ 79726.2.3 Hintergrundprozesse und Fehlermeldungen ....................... 79826.2.4 Wann ist es denn endlich vorbei? ......................................... 799

26.3 Prozesse und Signale ................................................................................ 79926.3.1 Das Syscall-Interface ................................................................ 79926.3.2 Signale von der Kommandozeile senden: kill ..................... 80026.3.3 Welche Signale gibt es? .......................................................... 80126.3.4 Rechte ........................................................................................ 80226.3.5 In der Praxis: Signale empfangen .......................................... 802

26.4 Prozesse finden und beeinflussen .......................................................... 80326.4.1 top und htop ............................................................................. 80426.4.2 ps und pstree ............................................................................ 80526.4.3 pgrep, pidof und pkill .............................................................. 810

26.5 Prozesse, Scheduling und Prioritäten .................................................... 81126.5.1 Das Scheduling ......................................................................... 81226.5.2 nice und renice ......................................................................... 81326.5.3 Echtzeit-Scheduling unter Linux ............................................ 813

26.6 IPC im Detail .............................................................................................. 81526.6.1 Pipes und FIFOs ....................................................................... 81526.6.2 Semaphore ................................................................................ 81726.6.3 Message Queues ...................................................................... 81926.6.4 Shared Memory ........................................................................ 82226.6.5 Unix-Domain-Sockets .............................................................. 824

22

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 23 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

26.7 Zusammenfassung ..................................................................................... 82526.8 Aufgaben ..................................................................................................... 826

27 Bootstrap und Shutdown .................................................................. 827

27.1 Was ist der Bootstrap-Vorgang? ............................................................. 82727.2 Hardware-Booten ...................................................................................... 82727.3 Bootcode ..................................................................................................... 828

27.3.1 Die Partitionstabelle ................................................................ 82927.3.2 Ein Beispiel ................................................................................ 830

27.4 Bootmanager .............................................................................................. 83027.4.1 GRUB (alte Version) ................................................................. 83127.4.2 GRUB Version 2 ........................................................................ 83327.4.3 LILO ............................................................................................ 835

27.5 Startphase des Kernels ............................................................................. 83727.6 init ................................................................................................................ 841

27.6.1 Linux und init ............................................................................ 84227.6.2 BSD und init .............................................................................. 849

27.7 Upstart ......................................................................................................... 85227.8 getty ............................................................................................................. 85527.9 login ............................................................................................................. 857

27.9.1 Shellstart .................................................................................... 85727.9.2 Beenden einer Terminal-Sitzung ............................................ 858

27.10 System-Shutdown ..................................................................................... 85827.10.1 halt, reboot und poweroff ...................................................... 85927.10.2 shutdown ................................................................................... 859

27.11 Zusammenfassung ..................................................................................... 86127.12 Aufgaben ..................................................................................................... 861

28 Dateisysteme ........................................................................................ 863

28.1 Aufbau von Speichermedien ................................................................... 86328.1.1 Physische Struktur .................................................................... 86328.1.2 Logische Struktur ..................................................................... 86428.1.3 Integration ins VFS ................................................................... 865

28.2 Dateisysteme .............................................................................................. 86628.2.1 ext2, ext3, ext4 und reiserfs ................................................... 86628.2.2 btrfs und ZFS ............................................................................. 86728.2.3 FUSE – Filesystem in Userspace ............................................. 86828.2.4 FFS und UFS/UFS2 ................................................................... 86928.2.5 ISO 9660 ................................................................................... 869

23

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 24 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

28.2.6 Loop-Device und Ramdisk ..................................................... 87028.2.7 Swap ........................................................................................... 87228.2.8 DevFS und udev ....................................................................... 87528.2.9 ProcFS ........................................................................................ 87528.2.10 NFS ............................................................................................. 87528.2.11 Ecryptfs ...................................................................................... 87628.2.12 Weitere Dateisysteme ............................................................. 877

28.3 Dateitypen .................................................................................................. 87728.3.1 Reguläre Dateien ...................................................................... 87828.3.2 Verzeichnisse ............................................................................. 87828.3.3 Links ........................................................................................... 87928.3.4 Sockets ....................................................................................... 88128.3.5 Named Pipes ............................................................................. 88128.3.6 Gerätedateien ........................................................................... 881

28.4 Inodes .......................................................................................................... 88228.4.1 Metadaten ................................................................................. 88228.4.2 Alternative Konzepte ............................................................... 884

28.5 Administration ........................................................................................... 88428.5.1 QtParted und GParted ............................................................. 88428.5.2 palimpsest ................................................................................. 88528.5.3 disklabel ..................................................................................... 88628.5.4 hdparm ....................................................................................... 88928.5.5 fdisk und cfdisk ......................................................................... 89028.5.6 cfdisk .......................................................................................... 89228.5.7 mkfs ............................................................................................ 89328.5.8 tune2fs ....................................................................................... 89428.5.9 fsck .............................................................................................. 895

28.6 Neue Festplatten integrieren .................................................................. 89528.6.1 Formatieren ............................................................................... 89628.6.2 Mountpoint festlegen ............................................................. 896

28.7 USB-Sticks und -Platten, Digitalkameras und Co. ............................... 89628.8 Zusammenfassung ..................................................................................... 89728.9 Aufgaben ..................................................................................................... 897

29 Virtualisierung und Emulatoren ...................................................... 899

29.1 Einführung .................................................................................................. 89929.1.1 Betriebssystem-Virtualisierung .............................................. 89929.1.2 Emulation .................................................................................. 901

29.2 Wine, Cedega und Crossover .................................................................. 90229.2.1 Cedega ....................................................................................... 902

24

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 25 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

29.2.2 CrossOver .................................................................................. 90429.2.3 Wine ........................................................................................... 904

29.3 ScummVM .................................................................................................. 90729.3.1 Klassiker und Open-Source-Spiele ........................................ 90829.3.2 Spiele installieren ..................................................................... 908

29.4 Oldie-Emulatoren und Nostalgie ............................................................ 90929.4.1 DOSBox ...................................................................................... 90929.4.2 UAE ............................................................................................. 91029.4.3 Weitere Emulatoren ................................................................. 911

29.5 Hardware-Virtualisierung mit Xen .......................................................... 91329.5.1 Die Xen-Architektur ................................................................ 91329.5.2 Administration via xm ............................................................. 917

29.6 Hardware-Virtualisierung mit KVM ....................................................... 91929.6.1 Die KVM-Architektur .............................................................. 91929.6.2 Administration via QEMU ...................................................... 92029.6.3 KVM vs. Xen ............................................................................. 92229.6.4 Weitere Lösungen .................................................................... 922

29.7 Zusammenfassung ..................................................................................... 92329.8 Aufgaben ..................................................................................................... 923

TEIL VII: Programmierung und Sicherheit

30 Softwareentwicklung ......................................................................... 927

30.1 Interpreter und Compiler ......................................................................... 92730.1.1 C und C++ .................................................................................. 92830.1.2 Perl .............................................................................................. 93030.1.3 Java ............................................................................................. 93130.1.4 Tcl ................................................................................................ 93230.1.5 Was es sonst noch gibt ........................................................... 934

30.2 Shared Libraries ......................................................................................... 93430.2.1 Vorteile der Shared Libraries .................................................. 93530.2.2 Statisches Linken ...................................................................... 93530.2.3 Dateien ...................................................................................... 935

30.3 Debugging .................................................................................................. 93630.3.1 Vorbereitung ............................................................................. 93630.3.2 Konsolenarbeit ......................................................................... 93730.3.3 DDD ........................................................................................... 940

30.4 Profiling ....................................................................................................... 94230.4.1 Compiler-Option ...................................................................... 942

25

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 26 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

30.4.2 gprof verwenden ...................................................................... 94230.4.3 Profiling-Daten lesen ............................................................... 943

30.5 Tracing ......................................................................................................... 94430.6 Hilfe beim Finden von Bugs .................................................................... 946

30.6.1 ProPolice .................................................................................... 94730.6.2 Flawfinder und RATS ............................................................... 94830.6.3 Electric Fence ............................................................................ 950

30.7 Integrierte Entwicklungsumgebungen ................................................... 95230.8 Make ............................................................................................................ 954

30.8.1 Makefile ..................................................................................... 95530.8.2 Makros ....................................................................................... 95830.8.3 Shellvariablen in Makefiles ..................................................... 95930.8.4 Einzelne Targets übersetzen ................................................... 95930.8.5 Spezielle Targets ....................................................................... 95930.8.6 Tipps im Umgang mit Make ................................................... 960

30.9 Die GNU Autotools ................................................................................... 96030.10 lex/flex und yacc/bison ............................................................................. 964

30.10.1 flex grundlegend anwenden ................................................... 96430.10.2 bison/yacc grundlegend anwenden ...................................... 967

30.11 Unix-Software veröffentlichen ................................................................ 96930.12 Manpages erstellen ................................................................................... 970

30.12.1 groff nutzen ............................................................................... 97130.12.2 Manpages installieren ............................................................. 972

30.13 Versionsmanagement ............................................................................... 97330.13.1 CVS ............................................................................................. 97430.13.2 Subversion ................................................................................. 97830.13.3 Git ............................................................................................... 980

30.14 Wichtige Bibliotheken .............................................................................. 98230.14.1 Entwicklung grafischer Oberflächen ..................................... 98230.14.2 Weitere Bibliotheken ............................................................... 985

30.15 Zusammenfassung ..................................................................................... 98630.16 Aufgaben ..................................................................................................... 987

31 Crashkurs in C und Perl ..................................................................... 989

31.1 Die Programmiersprache C – ein Crashkurs .......................................... 98931.1.1 Hello, World in C ..................................................................... 99131.1.2 Kommentare ............................................................................. 99331.1.3 Datentypen und Variablen ..................................................... 99431.1.4 Operatoren ................................................................................ 1001

26

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 27 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

31.1.5 Bedingte Anweisungen ........................................................... 101031.1.6 Schleifen .................................................................................... 101631.1.7 Funktionen ................................................................................ 102331.1.8 Präprozessor-Direktiven .......................................................... 102531.1.9 Zeiger-Grundlagen ................................................................... 103231.1.10 Array-Grundlagen ..................................................................... 103531.1.11 Strukturen .................................................................................. 103731.1.12 Arbeiten mit Zeichenketten (Strings) ................................... 103931.1.13 Einlesen von Daten .................................................................. 104131.1.14 FILE und das Arbeiten mit Dateien ...................................... 104331.1.15 Das war noch nicht alles! ........................................................1047

31.2 Die Skriptsprache Perl .............................................................................. 104731.2.1 Aufbau eines Skripts ................................................................ 104731.2.2 Variablen .................................................................................... 104931.2.3 Kontrollstrukturen ....................................................................105231.2.4 Subroutinen ...............................................................................105731.2.5 Reguläre Ausdrücke ................................................................. 105931.2.6 Arbeiten mit dem Dateisystem .............................................. 1062

31.3 Zusammenfassung ..................................................................................... 106531.4 Aufgaben .....................................................................................................1065

32 Einführung in Computersicherheit ..................................................1067

32.1 Sicherheitskonzepte .................................................................................. 106732.2 Unix und Sicherheit .................................................................................. 1067

32.2.1 Benutzer und Rechte ............................................................... 106832.2.2 Logging ...................................................................................... 106832.2.3 Netzwerkdienste ...................................................................... 1068

32.3 Grundlegende Absicherung ..................................................................... 106932.3.1 Nach der Installation ............................................................... 106932.3.2 Ein einfaches Sicherheitskonzept .......................................... 1070

32.4 Backups und Datensicherungen ............................................................. 107132.4.1 Backup-Strategien .................................................................... 107132.4.2 Software ..................................................................................... 1073

32.5 Updates ....................................................................................................... 107432.6 Firewalls ...................................................................................................... 1075

32.6.1 Grundlagen ................................................................................107632.6.2 Firewalling unter Linux: Netfilter/iptables ...........................107932.6.3 iptables im Detail ..................................................................... 1080

32.7 Proxyserver ................................................................................................. 108832.7.1 Funktion .....................................................................................1089

27

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 28 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

32.7.2 Einsatz ........................................................................................ 109032.7.3 Beispiel: Squid unter Linux .....................................................1091

32.8 Virtuelle private Netzwerke mit OpenVPN .......................................... 109532.8.1 Pre-shared Keys ........................................................................ 109632.8.2 Zertifikate mit OpenSSL .......................................................... 109832.8.3 OpenVPN als Server einrichten ............................................. 109932.8.4 OpenVPN als Client ................................................................. 1101

32.9 Verdeckte Kanäle und Anonymität ........................................................ 110132.10 Mails verschlüsseln: PGP und S/MIME ................................................. 1103

32.10.1 PGP/GPG ................................................................................... 110332.10.2 S/MIME ......................................................................................1110

32.11 Trojanische Pferde ..................................................................................... 111032.12 Logging ........................................................................................................111132.13 Partitionierungen .......................................................................................111232.14 Restricted Shells ........................................................................................ 111232.15 Loadable Kernel Modules ........................................................................ 111332.16 chroot .......................................................................................................... 111432.17 Kernel-Erweiterungen und ProPolice .................................................... 1114

32.17.1 ProPolice .................................................................................... 111432.17.2 SELinux/SEBSD und AppArmor ............................................. 111632.17.3 Openwall (OWL) ...................................................................... 111632.17.4 grsecurity ................................................................................... 111632.17.5 PaX .............................................................................................. 1117

32.18 Sichere Derivate und Distributionen ..................................................... 111732.18.1 Trusted Solaris (jetzt Teil von Solaris) ................................... 111832.18.2 OpenBSD ................................................................................... 111832.18.3 TrustedBSD ................................................................................ 111832.18.4 Hardened Gentoo .................................................................... 111932.18.5 Openwall ................................................................................... 111932.18.6 Fedora Core ............................................................................... 1119

32.19 Zusammenfassung ..................................................................................... 111932.20Aufgaben .....................................................................................................1120

33 Netzwerksicherheit überwachen .....................................................1121

33.1 Snort ............................................................................................................ 112233.1.1 Aufbau der Intrusion Detection ............................................ 112633.1.2 snort.conf .................................................................................. 1127

33.2 Netzwerkmonitoring mit Nagios ............................................................ 113533.2.1 Installation .................................................................................113733.2.2 Konfiguration ............................................................................ 1140

28

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 29 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

33.2.3 Plugins ........................................................................................114733.3 Nmap: Der wichtigste Portscanner ........................................................ 1149

33.3.1 Prinzip eines Portscanners ...................................................... 115033.3.2 Techniken des Scannens ......................................................... 115133.3.3 Weiterer Informationsgewinn ................................................ 115633.3.4 Nmap in der Praxis ...................................................................1158

33.4 Sniffer .......................................................................................................... 116233.4.1 tcpdump .................................................................................... 116233.4.2 Wireshark (ehemals Ethereal) ................................................ 116433.4.3 dsniff ........................................................................................... 1164

33.5 Zusammenfassung ..................................................................................... 1165

TEIL VIII: Anhang

Anhang ..........................................................................................................1169

A Lösungen zu den einzelnen Aufgaben .............................................................. 1171A.1 Lösungen zu Kapitel 1 .............................................................................. 1171A.2 Lösungen zu Kapitel 5 .............................................................................. 1171A.3 Lösungen zu Kapitel 6 .............................................................................. 1172A.4 Lösungen zu Kapitel 7 .............................................................................. 1173A.5 Lösungen zu Kapitel 8 .............................................................................. 1174A.6 Lösungen zu Kapitel 9 .............................................................................. 1175A.7 Lösungen zu Kapitel 11 ............................................................................1175A.8 Lösungen zu Kapitel 12 ............................................................................1177A.9 Lösungen zu Kapitel 13 ............................................................................1179A.10 Lösungen zu Kapitel 14 ............................................................................1180A.11 Lösungen zu Kapitel 15 ............................................................................1184A.12 Lösungen zu Kapitel 16 ............................................................................1185A.13 Lösungen zu Kapitel 17 ............................................................................1186A.14 Lösungen zu Kapitel 19 ............................................................................1187A.15 Lösungen zu Kapitel 20 ............................................................................1188A.16 Lösungen zu Kapitel 21 ............................................................................1190A.17 Lösungen zu Kapitel 24 ............................................................................1191A.18 Lösungen zu Kapitel 25 ............................................................................1193A.19 Lösungen zu Kapitel 26 ............................................................................1193A.20 Lösungen zu Kapitel 27 ............................................................................1194A.21 Lösungen zu Kapitel 28 ............................................................................1195A.22 Lösungen zu Kapitel 29 ............................................................................1196A.23 Lösungen zu Kapitel 30 ............................................................................1196

29

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 30 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: trennung.tex , Aktueller Job: buch

Inhalt

A.24 Lösungen zu Kapitel 31 ............................................................................1198A.25 Lösungen zu Kapitel 32 ............................................................................1200

B Kommandoreferenz ..............................................................................................1203C X11-InputDevices .................................................................................................1243D MBR ........................................................................................................................ 1245E Buch-DVDs ............................................................................................................ 1247

E.1 Was befindet sich auf welcher DVD? .................................................... 1247E.2 Benutzung der DVDs ................................................................................ 1248

F Glossar .................................................................................................................... 1249G Literatur ..................................................................................................................1253

Index ............................................................................................................................... 1257

30

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 37 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

Wer sollte das Buch lesen?

Jeder, der möchte, darf, soll oder muss. Ein solch umfangreiches Buch hat natürlichauch eine recht breit gestreute Zielgruppe – und trotzdem möchten wir den jeweilsindividuellen Ansprüchen unserer Leser gerecht werden.

Anfänger werden im gesamten Buch neue Informationen finden. Wir empfehlen, Anfänger,Fortgeschrittenegegebenenfalls zuerst die Installationsanleitungen im Anhang sowie das auf dieses

folgende Einleitungskapitel zu lesen. Fortgeschrittene hingegen können die Instal-lationsanleitungen sowie die Einführung zu Linux und BSD getrost überspringenund mit dem ersten, anspruchsvolleren Kapitel zum Kernel beginnen. Wahlweisekönnen Sie auch weitere Grundlagenkapitel, etwa zur Shell oder zu Desktops undWindow-Managern, überspringen.

Professionelle Anwender sollten in unseren technischen Kapiteln, in denen wir Profis

hauptsächlich Hintergrundinformationen vermitteln, auf ihre Kosten kommen. Da-zu zählen unter anderem die Kapitel zum Kernel, zur Administration des Systemsund des Netzwerks, zu Prozessen und zur Interprozess-Kommunikation, zu denDateisystemen, zur Programmierung, zum Bootstrap-Vorgang und zur Sicherheitvon Unix-Systemen.

Außerdem können Sie dieses Buch immer wieder als Nachschlagewerk nutzen. Referenz

Wir haben darauf geachtet, einen möglichst umfangreichen Index zu erstellen, deralle wichtigen Begriffe, die im Buch auftauchen, enthält. Des Weiteren sind alleKapitel so aufgebaut, dass sie der Reihe nach gelesen werden können, man aberauch einzelne Themen zum Nachschlagen herausgreifen kann. Das Ganze rundetschließlich eine Kommandoreferenz im Anhang ab, in der die wichtigsten Befehlesamt zugehöriger Optionen und den Referenzen zu den entsprechenden Stellen imBuch zu finden sind.

Außerdem gibt es noch diverse Aufgaben am Ende der einzelnen Kapitel, deren Aufgaben

Lösungen Sie im Anhang finden und die Ihnen dabei helfen sollen, das neue Wissenzu verinnerlichen.

Kapitelüberblick

Welche Kapitel gibt es im Einzelnen und welche Themen werden darin behandelt?

In der Einleitung soll es zunächst um die Entstehungsgeschichte von Unix, Linux Einleitung

und BSD gehen. Wir erörtern auch die wichtigsten Unterschiede und Gemein-samkeiten von BSD und Linux. Zu diesen Unterschieden gehören beispielsweisedie Verwendung bzw. Nichtverwendung von Ports und die unterschiedlichen Li-zenzen. Des weiteren setzen wir uns kurz mit einem recht interessanten Thema

37

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 38 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

soziologischer Natur auseinander und zeigen die wichtigsten Informationsquellenauf, die Ihnen helfen, wenn Sie mit Linux oder BSD einmal nicht weiter wissen.

Im zweiten Kapitel führen wir Sie an die Installation von Linux und BSD heran. Zu-Die Installation

nächst werden die Installationsvoraussetzungen und -vorbereitungen besprochen.Anschließend wird die Installation verschiedener Distributionen beispielhaft ge-zeigt.

Kapitel 3 führt Sie in die allerwichtigsten Begriffe der grafischen Oberflächen KDEErste Schritte

und GNOME ein, damit Sie grundlegende Tätigkeiten mit Linux verrichten können.

Da dies aber nicht genügt und wir Sie möglichst gleich zu Beginn mit Linux arbeitenLinux alsArbeitsplatzrechner lassen möchten, zeigen wir in Kapitel 4, wie Sie mit Office-Software arbeiten, im

Internet surfen und ein E-Mail-Programm konfigurieren können.

Im fünften Kapitel geht es um den Kern des Betriebssystems – den Kernel. EsDer Kernel

beginnt mit einer Erklärung der wichtigsten Bestandteile des Computers und derAufgaben des Betriebssystems. Dazu zählen zum Beispiel Abstraktion und Virtua-lisierung. Anschließend werfen wir einen ersten Blick auf die Definitionen vonProzessen, Tasks und Threads sowie auf das Speichermanagement und befassen unsmit Ein- und Ausgabe.

Nachdem Kapitel 5 die wichtigsten Grundlagen zum Verständnis des Unix-artigenGrundlagen

Betriebssystems vermittelt hat, geht es in Kapitel 6 um die Grundlagen aus Anwen-dersicht. Das Kapitel gibt einen Einblick in die Unix-Philosophie, den Startvorgangund den Login. Außerdem werden die wichtigsten Befehle vorgestellt, die man beider täglichen Arbeit verwendet oder mit denen man auf die Dokumentationen desBetriebssystems zugreift.

Der zweite Teil des Buches beschäftigt sich auf etwa 150 Seiten intensiv mit derShell

Shell, die in der Regel die primäre Arbeitsumgebung unter Unix-artigen Systemendarstellt. Kapitel 7 befasst sich mit der Definition und grundlegenden Anwendungder Shell. Dazu zählen der Start von Programmen, die Verwendung von Shell-Varia-blen sowie Ein- und Ausgabeumlenkung. Außerdem zeigen wir Ihnen bereits dort,wie Sie sogenannte Pipes einsetzen und möglichst effektiv mit der Shell arbeitenkönnen.

Das achte Kapitel befasst sich mit den sogenannten regulären Ausdrücken, einemReguläre Ausdrücke

besonders wichtigen Thema. Nach einer kurzen theoretischen Einführung in regulä-re Ausdrücke wird gezeigt, wie man diese mit dem Stream-Editor sed und dem Toolgrep anwendet. Außerdem lernen Sie die Programmierung mit der SkriptspracheAWK, die in der Shellskriptprogrammierung sehr häufig Verwendung findet.

Kapitel 9 stellt wichtige Tools vor, die Sie innerhalb der ShellskriptprogrammierungTools

benötigen, um mit Dateien zu arbeiten.

38

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 39 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

Bevor es dann endlich mit der richtigen Shellskriptprogrammierung losgeht, behan- Editoren

deln wir in Kapitel 10 noch Editoren. Editoren erleichtern die Shellskriptprogram-mierung in hohem Maße. Im Besonderen werden die beiden bekannten Editorenvi und emacs vorgestellt.

Kapitel 11, das letzte Kapitel des Shell-Teils, befasst sich mit der Programmierung Shellskript-programmierungder Bourne-Shell und der Bourne-Again-Shell (sh und bash). Wir zeigen, wie ein

Shellskript aufgebaut ist und wie man es ausführbar macht und anwendet. Außer-dem lernen Sie, wie Sie in der Shell Berechnungen durchführen, Arrays, bedingteAnweisungen, Schleifen und Menüs verwenden. Ebenfalls sehr wichtig ist das The-ma der Funktionen, das wir natürlich nicht vernachlässigen.

Kapitel 12 stellt als kleiner Exkurs die C-Shell vor. C-Shell

Der dritte Teil des Buches behandelt die System- und Netzwerkadministration – Benutzer-verwaltungein weiteres spannendes Thema. Kapitel 13 befasst sich zunächst mit der Benutzer-

verwaltung. Zunächst wird die lokale Benutzerverwaltung unter Unix besprochen.Dazu gehören zum Beispiel das Erstellen von neuen Benutzerkonten, das Wissen zuPasswortdateien und zur Shadow-Suite, aber auch die Administration von Benut-zergruppen. Zudem wird gezeigt, wie man »als jemand anderes« arbeiten kann. Fürdie fortgeschrittenen Benutzer behandeln wir zudem die Administration von NIS-und LDAP-Servern.

Kapitel 14 geht auf die Rechteverwaltung ein, auf die Installation von neuer Soft- Verwaltung

ware – wir behandeln natürlich auch die BSD-Ports – und auf die Automatisierungvon Tätigkeiten. Außerdem erläutern wir das Logging, die Dateisystemverwaltungund – ganz wichtig – das Kompilieren eines neuen Kernels, das Laden von Kernel-modulen sowie die Anpassung des Systems an die deutsche Sprache und Tastatur-belegung.

Ab Kapitel 15 geht es dann um die Netzwerkkonfiguration, der fünf Kapitel ge- Netzwerk

widmet sind, da dieses Thema besonders wichtig und auch für fortgeschrittenesowie professionelle Anwender hochinteressant ist. Kapitel 15 befasst sich zunächstmit den Grundlagen des TCP/IP-Netzwerks und klärt die wichtigsten Begriffe wieIP-Adresse, Port (TCP/IP) oder Layer. Danach wird die Netzwerkkonfiguration durch-geführt und das Routing aufgesetzt. Auch Netzwerkverbindungen werden betrach-tet. Dazu zählt auch, dass man aktive TCP-Verbindungen, das Datenaufkommen anSchnittstellen oder den ARP-Cache unter die Lupe nimmt. Wer sich nun fragt, wieer mit Linux ins Internet kommt, wird ebenfalls in diesem Kapitel fündig.

Die diversen Anwendungen für Netzwerk-Clients werden anschließend in Kapitel Client-Anwendungen16 besprochen. Dazu zählen zum Beispiel Telnet, die R-Tools, der FTP-Client, die

bekanntesten Mailprogramme sowie IRC-Clients. Außerdem besprechen wir Use-net-Clients und den RSS-Reader snownews.

39

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 40 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

Kapitel 17 tut den ersten Schritt in die Serverwelt und behandelt bekannte Stan-Netzwerk-Dienste

darddienste. Dazu gehören die »Superserver« inetd und xinetd; außerdem werdenverschiedenste Server aufgesetzt: DHCP-Server, NNTP-Server, Mailserver, ein Net-work-Filesystem-Server (NFSd), ein FTP-Server sowie Samba.

Wie ein Mailserver funktioniert, eingerichtet und grundlegend vor Spam gesichertMailserver

wird, erfahren Sie in Kapitel 18.

LAMP steht für Linux-Apache-MySQL-PHP. Apache ist der weltweit bekanntesteWebserver, LAMP

und populärste Webserver und gehört zum Standardumfang von Linux-Systemen.Als solcher wird er natürlich auch in unserem Buch besprochen (siehe Kapitel19). Darüber hinaus setzen wir noch die MySQL-Datenbank auf und gehen aufPHP-Programmierung ein.

Kapitel 20 behandelt eine ebenfalls sehr wichtige Thematik: das Domain NameDNS-Server

System. Aufbauend auf den Grundlagen aus Kapitel 17 wird hier das Setup derServer erläutert. Wir behandeln in diesem Buch den populären BIND-Server, derzum Standardumfang eigentlich aller Linux-Distributionen und BSD-Derivate zählt,sowie den Caching-Dienst des djbdns. Zudem befassen wir uns mit den wichtigstenTools zum Durchführen von DNS-Anfragen.

Wahrscheinlich haben Sie sich bereits gefragt, warum wir die Secure Shell (SSH)Secure Shell

nicht im Client-Kapitel besprechen. Der Grund ist der, dass wir der Secure Shellinklusive des Servers und des Clients ein eigenes Kapitel (21) widmen, da esleichter ist, beide Themen zusammen zu behandeln und zu verstehen.

Der vierte Teil des Buches behandelt die grafische Oberfläche, das X-Window-X11

System oder kurz X11. Kapitel 22 geht zunächst nur auf das Grundsystem, dessenFunktionsweise und Konfiguration sowie auf das Prinzip der Window-Manager undDesktops ein. Wir befassen uns außerdem mit dem grafischen Login und einigenzusätzlichen Features wie Xinerama und DualHead.

Window-Manager und Desktops werden in Kapitel 23 besprochen. Wir gehen aufWindow-Manager

drei besonders populäre Systeme ein, nämlich KDE, GNOME und den WindowMaker. Darüber hinaus geben wir noch einen kurzen Überblick über alternativeWindow-Manager und Desktops.

Unter X11 gibt es natürlich noch diverse Anwenderprogramme. Dazu zählen etwaX11-Tools

das Textsatz-System LaTeX und diverse Dokumentenbetrachter. Diese Programmesowie einzelne X11-Editoren und weitere populäre Software, etwa GIMP oder K3b,werden in Kapitel 24 vorgestellt.

In Kapitel 25 geht es zum einen darum, das System für Audio- und VideoausgabeMultimedia, Spiele

zu konfigurieren, zum anderen um die Verwendung von TV-Karten und Webcams.

40

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 41 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

Außerdem sprechen wir darüber, wie man Linux dazu bekommt, einen Druckeranzusteuern, und welche Spiele zur Verfügung stehen.

Wir haben uns dazu entschlossen, einen weiteren, etwas unüblichen Schritt zu Systeminterna

gehen, der darin besteht, recht anspruchsvolle Hintergrundinformationen zu ver-mitteln. Wir möchten Ihnen zeigen, wie Linux und BSD wirklich funktionieren.Deshalb geht es im sechsten Teil des Buches um die Systeminterna.

Kapitel 26 setzt sich zunächst mit Prozessen und ihrer Administration auseinander. Prozesse und IPC

Es erklärt, wie Signale funktionieren und Hintergrundprozesse gehandhabt werden.Wir gehen zudem auf Scheduling und Prozessprioritäten ein. Es folgt die Interpro-zess-Kommunikation (IPC, Inter Process Communication). Hier erläutern wir Pipes,FIFOs, Semaphore, Message Queues, Shared Memory sowie Unix Domain Socketsund stellen Ihnen die wichtigsten damit verbundenen Funktionen zur Systempro-grammierung vor.

Einen genauen Einblick in den Bootstrap- und Shutdown-Mechanismus von Linux Bootstrap undShutdownund BSD liefert Kapitel 27. Zunächst wird erklärt, wie es zum Start des Kernels

kommt und wie die Bootmanager (LILO und GRUB) administriert werden. Danacherklären wir init unter BSD und Linux, gehen auf getty und login ein und behan-deln den System-Shutdown.

In Kapitel 28 behandeln wir Dateisysteme und ihre Administration unter Linux Dateisysteme

und BSD. Es geht um ihren physischen und logischen Aufbau sowie um das virtu-elle Dateisystem. Wir besprechen die einzelnen Dateisysteme wie ext2, ext3, ext4,reiserfs, FFS, UFS/UFS2, ISO9660, das Loop-Device, die Ramdisk, Swap, DevFS,ProcFS und das Netzwerk-Dateisystem NFS. Anschließend erklären wir die ein-zelnen Dateitypen wie Verzeichnisse (die unter Unix eigentlich auch nur Dateiensind), Links, Sockets und Named Pipes. Schließlich kommen wir auf Inodes zu spre-chen. Im letzten Abschnitt geht es um die Administration des Dateisystems mitdisklabel, hdparam, fdisk, fsck, tune2fs und Co.

Emulatoren und Virtualisierungssoftware für die verschiedensten Systeme und Pro- Virtualisierung

grammformate lernen Sie in Kapitel 29 kennen.

Nachdem Sie durch die vorherigen sechs Teile dieses Werkes bereits sehr viel über Programmierungund SicherheitAnwendung, Administration und Interna von Linux und BSD gelernt haben und

sich auch mit der Shell und ihrer Programmierung auskennen, führt der siebteTeil des Buches in anspruchsvolle Softwareentwicklung und die Sicherheit vonUnix-artigen Betriebssystemen ein.

Mit Shellskriptprogrammierung und AWK soll es in diesem Buch nicht getan sein, Programmierung

daher behandelt Kapitel 30 die Softwareentwicklung. Es werden die wichtigstenunterstützten Interpreter und Compiler aufgeführt, Shared Libraries und der Um-gang mit dem Debugger erläutert. Außerdem behandeln wir – anders als fast alle

41

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 42 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: k_vorwort.tex , Aktueller Job: buch

Über dieses Buch

Linux-Bücher – Software-Profiling und Tracing. Es folgt ein Einblick in integrierteEntwicklungsumgebungen wie KDevelop. Danach werden sehr bekannte und mäch-tige Tools behandelt, die Sie zum Teil ebenfalls kaum in anderen Linux-Büchern fin-den: make, flex, yacc und bison. Zum Schluss geht es noch um die Veröffentlichungeigener Unix-Software, die Erstellung von Manpages, um Versionsmanagement undwichtige Bibliotheken.

Einen Crashkurs für C und Perl finden Sie in Kapitel 31. Dort können Sie auchC und Perl

nachlesen, warum wir uns für diese beiden Sprachen entschieden haben.

Der fünfte Teil des Buches schließt mit zwei Kapiteln zur Sicherheit von Linux-Sicherheit

und BSD-Systemen (Kapitel 32 und 33). Sie werden lernen, das System grundlegendabzusichern, Backups zu erstellen und unter Linux mit iptables eine Firewall zukonfigurieren.

Anhang

Mit den Aufgaben am Ende der einzelnen Kapitel lassen wir Sie nicht im RegenLösungen

stehen: Anhang A enthält die Lösungen.

Die Kommandoreferenz im Anhang B bietet nur eine Auswahl. Sie behandelt nichtKommando-referenz immer alle Parameter eines Programms, sondern geht nur auf die wichtigen ein.

Generell finden Sie zunächst eine kurze Erklärung zum Programm selbst sowieden Pfad der Binärdatei und anschließend eine Tabelle, die wichtige Parameterbeschreibt.

Die weiteren Teile des Anhangs enthalten Beispiele, Informationen zu denWeitere Teile desAnhangs Buch-DVDs sowie die obligatorischen Bestandteile: das Glossar, das Literaturver-

zeichnis sowie den Index.

42

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 175 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

»Was für eine Philosophie man wähle,hängt davon ab,was für ein Mensch man ist.«– Johann Gottlieb Fichte

6 Grundlagen aus Anwendersicht

Im letzten Kapitel haben wir uns ausführlich mit dem Kernel und den Aufgabeneines Betriebssystems wie Linux auseinandergesetzt. In diesem Kapitel wollen wiruns nun mit dem Userland1 und den Grundlagen aus Anwendersicht beschäftigen.

Wurden im ersten Kapitel also vorrangig interessante Hintergründe vermittelt undein grundlegendes Verständnis für das Betriebssystem als Ganzes geschaffen, somöchten wir uns im Folgenden so langsam der Praxis zuwenden. Dazu setzenwir eigentlich nur voraus, dass Sie ein Linux-System, egal welcher Distribution,zur Hand haben. Vielleicht haben Sie sich im vorhergehenden Teil des Buchesbereits ein System installiert, ansonsten können Sie fürs Erste natürlich auch dieLive-Version von openSUSE oder Fedora von der dem Buch beigefügten DVD-ROMbooten. Beide Systeme sind ohne Installation direkt von der DVD benutzbar undbieten Ihnen die grafischen Oberflächen KDE (openSUSE) und GNOME (Fedora).

Im Großen und Ganzen werden wir dabei unserer Philosophie treu bleiben und Linux pur!

Linux distributionsunabhängig beschreiben. Wir werden Ihnen nicht nur erklären,wie man etwas genau macht, sondern Ihnen vor allem das Warum und Wieso sowiedie Zusammenhänge insgesamt erläutern. Trotzdem wollen wir darauf achten, unsnicht in Belanglosigkeiten und praxisfernen Konzepten zu verlieren, sondern hierund da auch einmal ein konkretes und vor allem interessantes Beispiel zu bringen.Von Ihnen verlangen wir eigentlich nur die Bereitschaft, sich auf unseren zugegebenetwas eigenwilligen Stil einzulassen.

6.1 Die Unix-Philosophie

Um die Grundlagen aus Anwendersicht ordentlich verstehen zu können, brauchtman zuerst einmal ein Verständnis für die Philosophie hinter diesem Betriebssys-

1 Als Userland, auch Userspace, bezeichnet man die Systemumgebung aus Sicht eines Benut-zers.

175

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 176 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

tem. Außerdem muss man verstehen, dass Unix und Linux eng zusammenhängen –wer einen Linux-Rechner administrieren kann, braucht nur eine sehr kurze Einar-beitungszeit, um andere Unix-Systeme wie Solaris oder BSD zu verstehen. Alle dieseSysteme haben eine Gemeinsamkeit: Für Windows-Anwender wirken sie zunächst»anders« und »ungewohnt«, vielleicht sogar »umständlich«. Aber die Entwickler ha-ben sich etwas bei der Konstruktion dieses Systems gedacht, und wir wollen Ihnendiese Gedanken nun näherbringen.

Zuerst einmal wurde Unix von Programmierern für Programmierer2 entwickelt.VonProgrammierern für

ProgrammiererAuf einem System können mehrere Benutzer mehrere Programme gleichzeitig nutzen,zum Beispiel um Software zu entwickeln oder anderweitig zu arbeiten. Die Benutzersowie die einzelnen Programme können Daten gemeinsam nutzen sowie diese aufeine kontrollierte Art und Weise austauschen. Das Design von Unix setzt dabeieinigermaßen intelligente Benutzer voraus, die in der Regel wissen, was sie tun– sollte dies aber nicht der Fall sein oder sind böswillige Angreifer am Werk, istdas System durch die Implementierung von unterschiedlichen Benutzerkonten miteinem konsistenten Rechtesystem gut vor Manipulationen geschützt.

All diese Ziele unterscheiden sich nun gewaltig von denen eines Einbenutzerbe-triebssystems, das auch Anfängern ermöglichen will, eine Textverarbeitung zu be-nutzen. Dort möchte man die Benutzer führen und ein Stück weit auch bevormun-den, da das System meistens besser weiß, was gut für den Anwender ist, als dieserselber.

6.1.1 Kleine, spezialisierte Programme

Das genaue Gegenteil ist bei Programmierern oder anderweitig erfahrenen Anwen-dern der Fall: Sie erwarten von einem System, dass es die ihm gestellten Aufgabeneffizient löst. Das System muss sich nicht um seine Benutzer kümmern, denn diesewissen in der Regel selbst, was sie wollen und wie sie es erreichen können. DasSystem muss dazu flexibel und mächtig sein, was Unix auf dem folgenden Weg zuerreichen versucht:

Anstatt große und funktionsbeladene Applikationen anzubieten, werden kleine,spezialisierte Programme bereitgestellt. Jedes Programm sollte idealerweise nureine Aufgabe erfüllen, diese aber optimal. Durch vielfältige Kombinationen die-ser »Spezialisten« kann ein Anwender nun flexibel die ihm gestellten Aufgabenbewältigen.

2 Die Zielgruppe »Programmierer« kann jedoch insgesamt als »professionelle Benutzer« ver-standen werden. In den Anfangstagen der Informatik und damit in den Anfangstagen vonUnix war beides noch identisch.

176

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 177 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Die Unix-Philosophie 6.1

Außerdem unterstützen alle Programme eine konsistente und redundanzarme Be- Wenig Redundanz

dienung: Warum sollte man remove schreiben, wenn rm aussagekräftig genug undimmer noch eindeutig ist? Außerdem sollte sich der Befehl analog zu anderen Be-fehlen verhalten: Wenn ls -R * alle Inhalte in einem Verzeichnis rekursiv auflistet,sollte rm -R * alle diese Dateien rekursiv löschen – und nicht etwa eine Datei na-mens * und eine Datei, deren Name aus einem Minus, gefolgt von einem großen»R« besteht.

Überhaupt wird die textuelle Eingabe über die Shell der Bedienung des Systemsüber eine grafische Oberfläche in vielen Fällen vorgezogen. Bei knapp hundertAnschlägen pro Minute tippt sich so ein rm-Befehl viel schneller als man je

� zur Maus greifen,

� den Dateimanager durch Doppelklick starten,

� die Dateien heraussuchen,

� sie mit der Maus markieren,

� das Kontextmenü durch einen Rechtsklick öffnen,

� den Punkt Löschen auswählen

� und die ganze Aktion durch das Klicken auf Ja in der Dialogbox bestätigen kann.

Auch kann man in der Shell Befehle einfach kombinieren und häufige oder etwaskomplexere Befehle in ganze Skripts schreiben. Diese Skripts können auch zentralabgelegt und allen Benutzern eines Systems zur Verfügung gestellt werden. Alterna-tiv kann man diese Skripts zu bestimmten Zeitpunkten – beispielsweise jeden Tag,jede Woche, jeden ersten Sonntag im Monat um 3 Uhr oder in genau zwei Stunden– ausführen lassen.

6.1.2 Wenn du nichts zu sagen hast: Halt die Klappe

Ein weiterer wichtiger Punkt der Unix-Philosophie ist das Verhalten sowie indirektauch die Bedienung der Programme. Programme unter Unix/Linux verhalten sichnämlich so, wie ein erfahrener Benutzer es erwarten würde: Sie geben im Erfolgsfallkeine Meldung aus, sondern nur im Fehlerfall oder wenn es anderweitig Ergebnissezu präsentieren gibt. Ein »alles okay« am Ende ist schlicht unnötig und redundant.

Außerdem werden Programme zu einem großen Teil nur über Parameter mit Einga- Parameter stattNachfragenben gefüttert: Man startet zum Beispiel einen Texteditor mit der zu bearbeitenden

Datei als Argument, anstatt vom Editor nach dem Start nach der Datei gefragt zuwerden. Für Neulinge ist dies zum Teil recht frustrierend, da man oft Befehle tippt,die dann keine Ausgabe erzeugen – aber gerade dann ist ja alles in Ordnung.

177

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 178 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

Diese Prinzipien sind jedoch vor allem in der Shell anzutreffen. Unter grafischenOberflächen sind die eben genannten Prinzipien nur schwer zu realisieren und oftauch nicht sinnvoll.

6.1.3 Die Shell

Ja, die Shell – viel wird von Neulingen über diese »anachronistische« Eingabeauf-forderung geschimpft. Erfahrene Unix-Anwender möchten ihre Shell jedoch nichtmissen und empfinden in der Regel umgekehrt ein System, das sie zur Mausbenut-zung zwingt, als Zumutung.

Natürlich gibt es auch unter Unix und Linux eine komplette und funktionsreicheGrafik unterUnix/Linux grafische Oberfläche: das X-Window-System. Viele professionelle Unix-Anwender

nutzen diese Oberfläche nur, um viele grafische Terminals und damit viele Shellsgleichzeitig im Blick zu haben. Außerdem bietet zum Beispiel das populäre KDEals grafische Oberfläche eine nahezu komplette Bedienung über Tastenkürzel undShortcuts an. So muss man nicht einmal die Hand von der Tastatur nehmen, wennman zu einem anderen Bildschirm3 oder einer anderen grafischen Shell wechselnwill.

Aber natürlich gibt es auch Anwendungen, die sich in der Shell nur schlecht rea-lisieren lassen. Ein populäres Beispiel dafür ist das Surfen im Web – es gibt zwarWebbrowser für eine Textoberfläche, aber eine wirkliche Alternative zu den grafi-schen Varianten sind sie nicht.

6.1.4 Administration

Ein weiterer wichtiger Bestandteil der Unix-Philosophie ist die Administration desSystems. Von vielen wird genau dies als Nachteil gesehen: Man beklagt sich, dassman bei Linux »basteln« muss, um zu einer vernünftigen Lösung zu kommen. Manbeklagt den fehlenden Hardware-Support für die allerneueste Grafikkarte und diesesoder jenes nicht unterstützte exotische Feature bei einem neuen PC.

Diese Klagen beruhen auf einem Missverständnis. Ja, Unix (und damit auch Linux)Bastellösungen

lässt sich bis ins letzte Detail konfigurieren und personalisieren. Schließlich handeltes sich dabei um ein System für professionelle Anwender und weniger für absoluteComputerneulinge. Und Profis können und wollen sich – zumindest in einem gewis-sen Rahmen – mit ihrem System auseinandersetzen. Außerdem zieht das Argumentder Bastelei inzwischen nicht mehr wirklich, da heute eine frische Installation einer

3 X11 unterstützt das Konzept der virtuellen Bildschirme, auf denen man jeweils andere Fens-ter geöffnet und sogar unterschiedliche Hintergrundbilder aktiviert haben kann. Der Benut-zer kann nun leicht von einem Bildschirm zum anderen wechseln und so die Arbeit mit vie-len Fenstern besser meistern.

178

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 179 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Die Unix-Philosophie 6.1

gängigen Linux-Distribution weitaus weniger Nacharbeit per Hand erfordert alsein frisches Windows – schließlich ist alle wichtige Software schon installiert undsinnvoll konfiguriert.

Aber natürlich ist die Welt nicht perfekt. Alle gängigen Fertig-PCs werden mit Der Schein trügt

Windows ausgeliefert, da die meisten Hersteller und Händler besondere Verträgemit Microsoft geschlossen haben. Dass der Kunde dann für Windows bis zu mehrerehundert Euro bezahlt, auch wenn er diese Software nicht wünscht, sei einmaldahingestellt. Auf jeden Fall erfordert ein neuer PC mit Windows nicht allzu vielHandarbeit – das System ist schließlich schon installiert.

Ein neuer PC mit Linux dagegen muss (bis auf wenige Ausnahmen) erst einmalinstalliert werden. Ein weiteres Problem von Linux liegt in der mangelhaften Hard-wareunterstützung, die zugegeben an einigen wenigen Stellen immer noch Bastel-arbeit erfordert. Aber seien wir ehrlich: Wer ist für die Bereitstellung korrekter,funktionsfähiger Treiber zuständig? Freie, unbezahlte Programmierer, die Linux inihrer Freizeit weiterentwickeln, oder nicht doch die Hardwarehersteller selbst, dieim Übrigen auch die Windows-Treiber samt aller einfachen Installationsroutinenzur Verfügung stellen? An diesem Punkt bewegen wir uns leider argumentativ imKreis: Denn solange sich die mehrheitlich professionellen Linux/Unix-Anwendernoch mit halbfertigen Bastellösungen auch seitens der Hardwarehersteller zufrie-dengeben, wird sich an dieser Situation so schnell nichts ändern.

Fakt ist und bleibt jedoch die Eigenschaft von Linux, dass es sich sehr gut adminis-trieren und anpassen lässt. Im Moment versucht man hier einen dualen Ansatz: DerAnwender soll ein System möglichst benutzerfreundlich und einfach installierenund bedienen können, aber trotzdem weiterhin die gewohnten mächtigen Mög-lichkeiten zur Personalisierung haben. Dieses Ziel ist zwar vielleicht noch nicht invollem Umfang erreicht, aber man ist bereits auf einem guten Weg.

6.1.5 Netzwerktransparenz

Ein weiterer wichtiger Ansatz der Unix-Philosophie ist die Netzwerktransparenz. Beieinem durchdachten und konsistenten Mehrbenutzer- und Mehrprogrammkonzepthat man natürlich auch mit mehreren Rechnern keine Probleme. Die Netzwerktrans-parenz spiegelt sich schon in einem in Unix allgegenwärtigen Modell wider: demModell von Dienstnehmer (engl. client) und Dienstgeber (engl. server).

Bei diesem Prinzip der Systemarchitektur nutzt ein Client – meist ein direkt vom Be- Lokaler oder netz-werkbasierterDienst?

nutzer gesteuertes Programm – die Dienste eines Servers. Ob dieser Server nun einentfernter Rechner mit spezieller Software oder ein lokal im Hintergrund ablaufen-des Programm ist, kann transparent geändert werden. Einige interessante Beispielefür die Netzwerktransparenz von Unix/Linux wollen wir im Folgenden aufzählen:

179

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 180 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

� X11 – die grafische OberflächeDie grafische Oberfläche von Unix ist auch netzwerktransparent. Man unter-scheidet hier zwischen dem X-Server, der die Darstellung auf dem Client-PCdes Benutzers vornimmt, und den vom Benutzer gestarteten X-Clients, also Pro-grammen, die eine grafische Oberfläche benötigen. Auf welchem Rechner bezie-hungsweise Server diese Clients nun ausgeführt werden, ist von der Darstellungdurch den X-Server unabhängig – das X-Protokoll trennt die Ausführung und dieDarstellung von grafischen Anwendungen.

Ein sehr wichtiges, aber leider sehr oft vernachlässigtes Prinzip bei der Entwick-lung sauberer Systeme ist die Orthogonalität: Halte alle Dinge auseinander, dienicht in einem unmittelbaren Zusammenhang stehen.

In unserem Beispiel sind die beiden Aspekte der Ausführung und Darstellungeines grafischen Programms sauber durch die Trennung von X-Client und X-Ser-ver modelliert.

� Der Logging-DienstUnter Unix wird sehr viel protokolliert, wobei das Management der Proto-Der syslogd

koll- beziehungsweise Logdateien von einem bestimmten Dienst, dem syslogd,übernommen wird. Die Anwendungen können nun über bestimmte Aufrufemit diesem Dienst kommunizieren, der dann die Meldungen in die Dateienschreibt. Mit wenigen Änderungen an der Systemkonfiguration ist es möglich,die Anwendungen nicht mehr den lokal laufenden syslogd nutzen zu lassen,sondern einen auf einem fremden Rechner installierten syslogd.

Die Eigenschaft, mit steigenden Anforderungen mitwachsen zu können, nenntman Skalierbarkeit.

� NFSÜber das virtuelle Dateisystem (VFS) kann man unter Unix, unabhängig vomDateien im

Netzwerk darunterliegenden Dateisystem, auf Dateien und Verzeichnisse immer auf diegleiche Art und Weise zugreifen. Der Benutzer merkt nicht, ob er gerade aufeiner CD-ROM oder einer lokalen Festplatte arbeitet. Dieses Konzept lässt sichauch auf das Netzwerk ausdehnen, bei dem zum Beispiel der für Unix typi-sche NFS-Dienst ganze Verzeichnisbäume von einem Rechner exportieren undanderen Systemen im Netzwerk zur Verfügung stellen kann. Die exportiertenVerzeichnisse können von anderen Rechnern schließlich regulär gemountet undwie lokale Medien benutzt werden – für den Benutzer macht es keinen Un-terschied, dass die Dateien nicht lokal, sondern auf einem anderen Rechnergespeichert sind.

Diese Liste könnte man fast endlos fortsetzen. Um das Dienstgeber-Konzept zu un-terstützen, bietet Unix spezielle Prozesse an: die Hintergrundprozesse.

180

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 181 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

Ein Hintergrundprozess ist ein Prozess, der ohne Interaktion mit dem Benutzer seine Arbeitim Hintergrund verrichtet. Somit benötigt ein solcher Prozess keinen Zugang zur Tastaturoder direkt zum Bildschirm.

Ein weiteres Prinzip, das zur Netzwerktransparenz führen kann, ist das Spooling.4 Spooling unddas NetzwerkBeim Spooling verwaltet ein Dienst eine Ressource und stellt diese anderen Pro-

grammen über eine bestimmte Schnittstelle zur Verfügung. Ein typisches Beispielfür Spooling ist die Verwaltung des Druckers: Ein Dienst hat exklusiven Zugriffauf das Gerät, und druckende Programme greifen nicht direkt auf den Druckerzu, sondern legen die zu druckenden Dateien einfach in eine Warteschlange. Dashat den Vorteil, dass zwei gleichzeitig druckende Programme keine Mischung ihrerAusdrucke auf dem Papier erzeugen, sondern Druckaufträge nacheinander bearbei-tet werden. Auch die Verwaltung der Logdateien als bestimmte Systemressourcendurch den syslogd ist eine Art von Spooling. Schließlich können wir nun denKreis zur Netzwerktransparenz schließen und anmerken, dass ein solcher Dienst imPrinzip auf jedem System im Netzwerk ausgeführt werden kann.5

So viel also erst einmal zur Unix-Philosophie, der sich Linux ebenso wie BSD alsUnix-Derivate selbstverständlich anschließen. Vielleicht haben Ihnen diese Themenschon etwas Lust auf mehr gemacht; auf jeden Fall werden wir später im Buch allesnäher erläutern. Im Folgenden kommen wir nun endlich zum eigentlichen Themades Kapitels: zu einer kurzen Einführung in Linux und BSD.

6.2 Der erste Kontakt mit dem System

In diesem Abschnitt beschäftigen wir uns mit dem ersten Kontakt mit einem Li-nux-System. Dieser »erste Kontakt« kann natürlich nicht jeden Aspekt der Kontakt-aufnahme mit dem System umfassend behandeln, daher werden wir später nochausführlich auf einzelne Punkte eingehen. Der folgende kurze Einstieg schafft je-doch eine gute Basis für spätere Kapitel.

6.2.1 Booten

Beginnen wir mit dem Start des Systems. Egal, ob bei einer Installation auf Fest-platte oder beim Laden einer Live-Distribution wie Knoppix – das Geschehen isteigentlich immer gleich. Im BIOS wird festgelegt, auf welchen Medien in welcherReihenfolge nach einem zu bootenden Betriebssystem gesucht werden soll. Dabei

4 Ursprünglich wurde Spooling zum Vermeiden von Ressourcenkonflikten konzipiert.5 Und tatsächlich gibt es zum Beispiel mit CUPS einen sehr populären netzwerkbasierten

Druckdienst.

181

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 182 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

kann mittlerweile sogar von exotischen Geräten wie USB-Sticks gestartet werden,wobei die meisten Anwender doch lieber bei CD/DVD-Laufwerken und Festplattenbleiben.

Wird nun auf einem der im BIOS angegebenen Bootlaufwerke ein zu startendesDie ersten512 Byte Betriebssystem gefunden, wird dieses auch geladen. Auf allen bootfähigen Medien

wird nämlich nach einem gültigen MBR (Master Boot Record) gesucht. Dies ist zumBeispiel bei einer Festplatte immer der erste Sektor (= 512 Bytes) der Festplatte. Erenthält dabei folgende Informationen:

� BootloaderDer Bootloader besteht aus Code zum Laden eines Betriebssystems oder ausweiteren Bootloader-Codes. Damit von einem Medium gebootet werden kann,muss dieser Code gültig sein und ein Betriebssystem laden können.

� PartitionstabelleDie Partitionstabelle gibt an, welche Partitionen wo auf dem Medium vorhandensind. Die Partitionstabelle besteht aus vier Einträgen zu je 16 Byte und ist damitinsgesamt 64 Byte groß. Sie liegt relativ nah am Ende des Bootsektors bei Byte446.

� Magic NumberDie fehlenden 2 Byte6 bis zum Ende des Sektors werden nun mit einem WertBootfähige Medien

erkennen gefällt, anhand dessen das BIOS entscheiden kann, ob es sich um ein bootbaresMedium handelt oder nicht: Ist der Wert 0x55aa, so kann der Code am Anfangdes MBR geladen werden. Ändert man diesen Wert, wird das Medium nicht alsbootfähig erkannt.

Unter Linux können Sie sich den MBR mit folgenden Befehlen ansehen, wobei dasGerät /dev/sda7 die erste Festplatte im System bezeichnet,8 von dem in unseremBeispiel der MBR gezogen werden soll:

# dd if=/dev/sda of=mbr.img count=1 bs=512# od -x mbr.img

Listing 6.1 Extrahieren und Betrachten des MBR

Sehen wir uns den Bootvorgang weiter an: Hat man Linux auf seinem Systeminstalliert, so wird mit ziemlicher Sicherheit ein Bootloader wie GRUB geladen. Mit

6 Die Partitionstabelle beginnt bei Byte 446 und ist 64 Byte lang – das ergibt 510 von 512 imMBR zur Verfügung stehenden Bytes.

7 Entsprechend /dev/hda bei älteren Distributionen, die noch nicht die libata verwenden.8 Die Gerätenamen sind einer der zahlreichen kleinen Unterschiede zwischen den einzelnen

Unix-Derivaten wie Linux und BSD.

182

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 183 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

diesem kann man zwischen allen auf diesem Medium installierten Betriebssystemendas zu startende auswählen.

Als Nächstes wird der Kernel geladen, der das System schließlich allmählich initia- Der ersteProzess: initlisiert und mit init auch den ersten Prozess des Userlands explizit startet. Dieser

Prozess übernimmt das eigentliche Starten des Systems, indem dafür vorgesehe-ne Konfigurationsdateien ausgelesen und entsprechende Dienste im Hintergrundgestartet werden.

Dabei werden von init verschiedene Systemkonfigurationen, sogenannte Runlevel,unterschieden. Je nach Runlevel werden unterschiedliche Dienste gestartet. So gibtes zum Beispiel bei den meisten Systemen einen Runlevel mit grafischer Oberflächeund einen ohne. Auch gibt es bestimmte Runlevel zum Herunterfahren (Level 0)und Neustarten (Level 6) des Systems.

6.2.2 Login

Auch die Login-Dienste der Textoberfläche – realisiert durch das Programm(m)getty – werden von init gestartet. Je nach Runlevel kann aber auch eingrafischer Login-Dienst wie GDM oder KDM gestartet sein. In jedem Fall wird derNutzer aufgefordert, sich mit einem Usernamen und einem Passwort einzuloggen,damit er am System arbeiten kann.

Das Login ist dabei wieder ein typisches Beispiel für die Netzwerktransparenz: Netzwerk-transparenzNormalerweise wird bei der Anmeldung eines Benutzers überprüft, ob sein Be-

nutzername in der Datei /etc/passwd verzeichnet ist und mit seinem Passwort inder Datei /etc/shadow unter Linux beziehungsweise der Datei /etc/master.passwdunter BSD übereinstimmt. Setzt man im Netzwerk jedoch Dienste wie NIS/NIS+oder LDAP ein, kann man ein Unix-System überreden, die Benutzerinformationenvon einem solchen zentralen Server zu laden – der Anwender selbst merkt davonnichts. Verbindet man dieses Feature noch geschickt mit dem Einsatz von NFS, kanneinem Anwender so auf jedem System der Firma die gleiche Arbeitsumgebung zurVerfügung gestellt werden.

6.2.3 Arbeiten am System

Nach dem Einloggen kann man am System arbeiten. Je nach Aufgabenspektrum Das Home-Verzeichnisoder Präferenz kann dies in verschiedenen Umgebungen erfolgen. Auch die ver-

wendeten Programme werden stark variieren. Eines ist jedoch für alle Benutzergleich: Der Ort ihrer Arbeit und der Platz zum Speichern wichtiger Daten ist je-weils das Heimatverzeichnis (engl. home directory, im Deutschen oft auch Home-Ver-zeichnis genannt).

183

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 184 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

Unter Linux und BSD besitzt jeder Benutzer sein eigenes Verzeichnis in /home,wohingegen dieses Verzeichnis unter anderen Unix-Systemen zum Beispiel auchunterhalb von /usr liegen kann. Im Normalfall hat der Benutzer nur in seinemeigenen Verzeichnis das Recht, Dateien anzulegen, zu ändern und zu löschen.9

Dafür besitzt er dort dann auch Narren- und Gestaltungsfreiheit. Wie er die Datenorganisiert, steht jedem Benutzer absolut frei.

Alle Programme können Dateien im jeweiligen Verzeichnis des Benutzers ablegen.Dateien verstecken

Im Regelfall sind diese jedoch »versteckt«, werden also bei einem normalen Be-trachten des Verzeichnisses nicht angezeigt. Die Namen versteckter Dateien begin-nen alle mit einem Punkt; solche Dateien können natürlich unter Angabe speziellerOptionen dennoch angezeigt werden. In diesem Sinne sind sie also nicht versteckt,sondern werden im Normalfall schlicht ausgeblendet, um dem Benutzer einen bes-seren Überblick über die von ihm selbst angelegten und bearbeiteten Dateien zugeben.

Die Verzeichnisstruktur

Wie Sie bereits wissen, besitzt Linux ein virtuelles Dateisystem, das von physi-schen Speichermedien auf eine Verzeichnisstruktur abstrahiert. Doch auch dieseVerzeichnisstruktur selbst ist interessant, da sich das zugrunde liegende Konzeptvon anderen nicht Unix-artigen Betriebssystemen unterscheidet.

Im Folgenden wollen wir die wichtigsten Verzeichnisse und ihre Bedeutung kurzKlassifikation

erläutern. Dazu müssen vorher noch einige Begriffe geklärt werden, mit denen dieDaten später klassifiziert werden:

Dateien sind shareable, wenn sie auf einem Rechner im Netzwerk gespeichert sind und auchauf anderen Rechnern genutzt werden können. Ein gutes Beispiel dafür sind die Dateien inden Home-Verzeichnissen der User, wohingegen den Zugriff auf Systemressourcen auf demlokalen Rechner kontrollierende Lockfiles eben nicht shareable – also unshareable – ist.

Wie man sieht, spielt die Netzwerktransparenz also auch beim Dateisystem eineRolle. Doch auch die Frage, wann und wie Daten verändert werden, ist für dasDateisystemlayout wichtig:

Dateien sind statisch (engl. static), wenn sie nicht ohne die Intervention des Administratorsgeändert werden können. Im Gegensatz dazu stehen variable, also veränderbare Daten.

Typische Beispiele für statische, also im Normalfall nicht schreibbare Daten, sindProgramm-Binaries, Dokumentationen oder Systembibliotheken. Veränderbare Da-

9 Ja, von Spezialfällen wie dem Verzeichnis für temporäre Dateien /tmp einmal abgesehen.

184

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 185 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

teien sind zum Beispiel Logfiles, temporäre Dateien oder Datenbanken. Doch be-ginnen wir mit den wichtigsten Verzeichnissen und ihrer Bedeutung:

� /binDieses Verzeichnis beinhaltet essenzielle (Shell-)Programme. Diese sind statischund durchaus shareable.

� /bootDas /boot-Verzeichnis beinhaltet alle wichtigen Dateien zum Hochfahren des Der Kernel

Systems, wozu vor allem der Kernel gehört. Diese Dateien sind im Allgemei-nen statisch und nicht shareable, da sie durch verschiedene Treiber und dieKonfiguration sehr systemspezifisch sind.

� /devIn diesem Verzeichnis finden sich die Gerätedateien. Je nach Kernel-Version undeingesetzter Technik kann dieses Verzeichnis auch nur virtuell sein.10

� /etcJegliche Konfigurationsdateien eines Systems sollten in dessen /etc-Verzeichnisabgelegt sein. Da sich eine Konfiguration selten selbst ändert, sind auch dieseDaten statisch und aufgrund des personalisierenden Charakters einer Konfigura-tion eher als unshareable einzustufen.11

� /homeDas Home-Verzeichnis eines Users unter /home/username haben wir Ihnen be-reits vorgestellt. Hier werden die eingeloggten Benutzer in der Regel arbeiten.

� /libIn diesem Verzeichnis finden sich alle essenziellen Bibliotheken. In dem Ver-zeichnis /lib/modules/<kernelversion> finden sich somit auch die Module, die zurLaufzeit dynamisch in den Kernel geladen werden können.

� /mntIn /mnt sollten Wechseldatenträger wie CD-ROMs, DVDs oder USB-Sticks ge-mountet werden. Früher wurden dafür oft direkt Verzeichnisse unter / genutzt,was jedoch dem Konsens über die Verzeichnisstruktur widerspricht.

� /optDamit Softwarepakete auch von Drittanbietern ins System integriert werdenkönnen, gibt es das /opt-Verzeichnis. Dort sollten entsprechend dem Firmen-

10 Zum Beispiel beim mittlerweile obsoleten devfs.11 Natürlich hindert Sie niemand daran, das /etc-Verzeichnis im Netzwerk freizugeben. Inwie-

weit das sinnvoll ist, ist allerdings eine andere Frage – und nur darauf bezieht sich dieunshareable-Aussage.

185

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 186 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

oder Softwarenamen Unterverzeichnisse angelegt werden, in denen dann diejeweilige Software installiert werden kann.

� /proc (nur Linux)Im /proc-Verzeichnis findet sich ein gemountetes virtuelles Dateisystem, in demsich Informationen über alle Prozesse und über das System abrufen lassen.Dieses Verzeichnis finden Sie allerdings nicht auf jedem System.

� /rootDies ist das Home-Verzeichnis von root. Da man als root nicht direkt am Systemarbeiten sollte, wird dieses Verzeichnis recht selten genutzt werden.

� /sbinIn diesem Verzeichnis finden sich essenzielle System-Binaries.

� /tmpDies ist das Verzeichnis für temporäre Daten. Im Regelfall werden während desBootens alte, von der letzten Sitzung zurückgebliebene Dateien gelöscht.

� /usrDie /usr-Hierarchie ist die größte und wichtigste Ansammlung statischer, share-barer Daten. Die wichtigsten Unterverzeichnisse finden Sie hier:

� /usr/X11R6/Verzeichnis für die grafische Oberfläche X11

� /usr/bin/Benutzerprogramme (Binaries)

� /usr/include/Standardverzeichnis für Include-Dateien12

� /usr/lib/Bibliotheken für Benutzerprogramme

� /usr/local/Extra-Hierarchie für selbstkompilierte Software, in sich wieder genauso ge-gliedert wie /usr

� /usr/sbin/nicht-essenzielle Systemprogramme

� /usr/share/architekturunabhängige Daten13

12 Siehe auch das Kapitel 30, »Softwareentwicklung«.13 Diese Daten müssen wie alle Daten in /usr read-only, also statisch, sein.

186

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 187 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

� /usr/src/Verzeichnis für Quellcode (optional)

Aus den Charakteristika dieser Daten ergibt sich die Möglichkeit, das Verzeich-nis /usr auf eine eigene Partition zu legen, es read-only zu mounten14 und esschließlich im Netzwerk freizugeben und auf anderen Systemen zu mounten.

� /varDas /var-Verzeichnis umfasst ähnlich wie /usr eine ganze Hierarchie von Unter-verzeichnissen mit speziellen Aufgaben. Im Gegensatz zu diesem sind die Datenin /var jedoch variabel und im Allgemeinen nicht shareable.

� /var/cache/anwendungsspezifische Cache-Daten

� /var/lib/variable Statusinformationen

� /var/local/variable Daten für /usr/local

� /var/lock/Lockdateien15

� /var/log/Logdateien

� /var/opt/variable Daten für /opt

� /var/run/für laufende Prozesse relevante Daten16

� /var/spool/Spooling-Daten wie beispielsweise zu druckende Dateien oder noch nichtabgeholte Mails

� /var/tmp/temporäre Dateien, die nicht bei einem Reboot gelöscht werden sollten

14 Beim Aktualisieren des Systems muss dann natürlich ein Remount mit möglichem Schreib-zugriff erfolgen, da sonst zum Beispiel keine Binaries ersetzt werden können.

15 Diese Dateien stellen den exklusiven Zugriff auf bestimmte Ressourcen sicher: Ist eine be-stimmte Datei vorhanden, so ist die zugehörige Ressource belegt. Erst nach dem Löschender Datei kann wieder versucht werden, die Ressource anzufordern.

16 Soll zum Beispiel ein Programm wie ein bestimmter Serverdienst nur einmal gestartet wer-den können, kann in /var/run eine Datei mit der Prozess-ID abgelegt werden. Bei einemversuchten zweiten Start des Programms kann dieses anhand der Datei nun feststellen, dasses schon läuft, und daher den Start verweigern.

187

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 188 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

Auch bei /var kann sich die Speicherung der Daten auf einer eigenen Partitionoder Platte anbieten, um bei knapper werdendem Plattenplatz immer nochetwas Platz auf der Root-Partition freihalten und damit ein funktionierendesSystem gewährleisten zu können.

Mit Ausnahme des Home-Verzeichnisses wird man mit diesen Verzeichnissen inaller Regel jedoch nur als Administrator zu tun haben. Das liegt vor allem amRechtesystem: Bis auf die temporären Verzeichnisse darf ein normaler Benutzer nurin sein Homeverzeichnis schreiben.

Das Rechtesystem

Diese Regelung ist sinnvoll, da so kein normaler Benutzer das System manipulierenoder umkonfigurieren kann. Wir wollen im Zusammenhang mit dem Rechtesystemals Erstes natürlich die Rechte etwas näher betrachten, die einem Benutzer gewährtoder nicht gewährt werden können:

� Write (w)Das Schreibrecht: Hat ein Benutzer dieses Recht (man spricht auch von einemRechte-Flag oder Rechte-Bit) auf eine Datei, so kann er sie zum Schreiben öffnenoder sie auch löschen. Diese Berechtigung wird sinnvollerweise fast nur füreigene Dateien im Heimatverzeichnis des Benutzers benötigt und ist daher auchnur dort gesetzt. Auf Verzeichnissen bewirkt dieses Recht, dass ein Benutzerdort Dateien anlegen und löschen kann.

� Read (r)Das Leserecht: Dieses Recht erlaubt es einem Benutzer, lesend auf entsprechendeDateien zuzugreifen. Die Benutzer haben dieses Recht für die meisten System-dateien wie Programme oder Dokumentationen. Nur in Ausnahmefällen wiebei wichtigen Passwortdateien bekommen normale Benutzer dieses Recht nichtzugesprochen.

� Execute (x)Dateien mit diesem Rechte-Flag können ausgeführt werden. Entweder handeltes sich bei diesen Dateien um binäre Formate wie ELF oder um Skriptdateienbestimmter Sprachen wie Bash oder Perl. Bei letzteren muss jedoch in der erstenZeile des Skripts der Interpreter genannt werden, mit dem die Datei ausgeführtwerden kann. Dieses Rechte-Flag wird in erster Linie verwendet, um zwischenProgrammen und Daten zu differenzieren, und seltener, um festzulegen, werein bestimmtes Programm ausführen darf und wer nicht.

Bei Verzeichnissen hat dieses Flag eine etwas andere Semantik: Dort wird näm-lich durch das x-Flag der Zugriff auf ein Verzeichnis gesteuert. Wem dieses Rechtnicht gewährt wird, dem bleibt das Wechseln in den entsprechenden Ordnerverwehrt.

188

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 189 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

Werden Rechte auf Dateien beziehungsweise Verzeichnisse vergeben, so müssensich von einer bestimmten Rechtemaske auf einer Datei die Berechtigungen fürjeden möglichen Benutzer ableiten lassen. Jedem Benutzer ist im System dahereine Benutzer-ID (UID, User ID) und mindestens eine Gruppen-ID (GID, Group ID)zugeordnet. Eine Datei wird nun auch einem Benutzer – nämlich dem Eigentümerbeziehungsweise dem Ersteller der Datei – sowie einer Gruppe zugeordnet.

Für den Rechtekontext bedeutet dies, dass man eine Rechtemaske setzen kann, dieaus je einem Bit für Read, Write und Execute für den Eigentümer, die Gruppe undschließlich noch für den Rest der Welt besteht. Möchte ein Benutzer nun auf eineDatei zugreifen, so wird zuerst geprüft, ob er der Eigentümer dieser Datei ist. Istdies der Fall, so wird die entsprechende Rechtemaske zur Prüfung der Gültigkeitdes geforderten Zugriffs herangezogen. Ist der Benutzer nicht der Eigentümer, sowird geprüft, ob er in der Gruppe der Datei ist, um eventuell die Rechtemaskedieser Gruppe heranzuziehen. Ist auch dies nicht der Fall, werden automatisch dieRechte für den Rest der Welt gültig.

root

Eine Ausnahme in diesem Rechtekontext bildet der Benutzer root (UID 0), der Der Superuser

immer auf alle Dateien Zugriff hat. Er ist, vom Eigentümer einer Datei abgesehen,auch der Einzige, der die Rechte auf eine Datei ändern kann. Dieser Superuser istin der Regel der Administrator des Systems und verfügt sozusagen über absoluteMacht durch den unbeschränkten Zugriff auf alle Dateien. Und wie man spätestensseit Spider-Man weiß: Mit großer Macht kommt große Verantwortung.

Rechte und Hardware

Rechte werden nur auf Dateien oder Verzeichnisse vergeben. Da jedoch zum Bei-spiel Geräte und bestimmte Ressourcen als Dateien im System repräsentiert sindund Unix an sich generell sehr dateiorientiert ist, ergibt sich so wieder ein konsis-tentes Gesamtbild.

Auch sollte erwähnt werden, dass es problemlos möglich ist, mit mehreren Be-nutzern zur selben Zeit an einem System zu arbeiten. Natürlich ist ein PC in derRegel mit nur einem Bildschirm und nur einer Grafikkarte17 ausgestattet, jedochkann zum Beispiel über den SSH-Dienst das Remote-Arbeiten, also ausgehend vonanderen Rechnern im Netzwerk, ermöglicht werden.

17 Auch wenn man Linux durchaus so konfigurieren kann, dass zwei Grafikkarten und zwei Tas-taturen für insgesamt zwei Benutzer zur Verfügung stehen.

189

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 190 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

6.2.4 Herunterfahren

Ein weiterer wichtiger Schritt im ersten Kontakt mit dem System ist das Herun-terfahren. Wie heutzutage bei fast allen komplexeren Systemen üblich, kann manein System nicht einfach beliebig von seiner Stromquelle trennen. Damit man es ineinem konsistenten Zustand halten kann, müssen alle Programme

� ihre temporären Daten speichern,

� alle verwendeten Ressourcen freigegeben und

� das Dateisystem in einem konsistenten Zustand hinterlassen.

Vor allem die Problematik des Dateisystems ist offensichtlich, wenn man sich anPuffer undCaches leeren das letzte Kapitel und die Tatsache erinnert, dass viele Daten zwischengespeichert

und gepuffert werden, um die Performance des Systems zu erhöhen. Werden diesegepufferten Daten nicht zurückgeschrieben oder wird die Festplatte vielleicht sogarinmitten eines Schreibvorgangs unterbrochen, tritt ein Datenverlust auf oder eskommt zu inkonsistenten (Meta-)Daten auf der Festplatte.

Ein System herunterfahren und solche Probleme vermeiden können Sie mit demBefehl shutdown:

� shutdown -h nowMit diesem Befehl hält man das System an (engl. halt). Dazu wird das Systemin den Runlevel 0 überführt, wobei alle gestarteten Dienste beendet werden.Schließlich werden alle verbleibenden Prozesse über ein SIGTERM aufgefordert,sich zu beenden, um sie dann nach kurzer Zeit mit einem SIGKILL auf die »harteTour« durch den Kernel zu beenden.

Die Prozesse werden gesondert beendet, damit alle offenen Dateien noch ge-schlossen werden können. Ignorierte man diese im Prozesskontrollblock ver-merkten Daten, würden eventuell bisher nur gepufferte Schreibzugriffe nichtausgeführt und gingen somit verloren.

� shutdown -r nowMit diesem Befehl wird das System neu gestartet (engl. reboot) und dazu in denRunlevel 6 überführt. Alle übrigen Aktionen, vom Herunterfahren der beimSystemstart von init aktivierten Dienste bis zum Senden der Signale an alleProzesse, entsprechen dem Vorgehen beim Systemhalt.

Natürlich muss man diese Befehle nicht auf der Shell eingeben, sondern kannauch von einer grafischen Oberfläche wie KDE aus ein System herunterfahren.Allerdings hat man auf der Shell die Möglichkeit, anstelle von now einen genauenZeitpunkt anzugeben, zu dem das System heruntergefahren oder neu gestartet wird.

190

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 191 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der erste Kontakt mit dem System 6.2

Auch kann man hier eine Nachricht eingeben, die vor der shutdown-Aktion an alleeingeloggten Nutzer gesendet wird.

6.2.5 Wie Laufwerke bezeichnet werden

Wenn Sie ein Windows-Anwender sind, dann kennen Sie Laufwerksbezeichnungenals Buchstaben (etwa C: oder D:). Unter Linux ist das Prinzip ähnlich, Laufwerkewerden hier allerdings als Gerätedateien repräsentiert und heißen daher anders.Wie für Gerätedateien üblich, sind Dateien, die Laufwerksgeräte repräsentieren, imVerzeichnis /dev zu finden.

Laufwerke werden (im Falle von CD-, DVD-, ATA- und SCSI-Laufwerken) mit sdX sdX

bezeichnet, wobei anstelle des X ein Kleinbuchstabe eingesetzt wird. /dev/sda istetwa eine typische Festplattenbezeichnung, genauso wie /dev/sdb. Es kann sich beiden jeweiligen Geräten aber auch um CD-Laufwerke und Ähnliches handeln.

Sollten Sie noch über IDE-Festplatten verfügen, so werden diese unter Linux mit hdX

/dev/hda, /dev/hdb usw. bezeichnet.

Auch einzelne Partitionen sind unter Linux als Dateien vorhanden. So ist die erste Partitionen

Partition der Festplatte /dev/sda als /dev/sda1 ansprechbar, die zweite Partition als/dev/sda2 und so fort.

Die genannten Bezeichner für Festplatten sind für die Systemkonfiguration von UUIDs

großer Bedeutung. Sie werden etwa verwendet, um anzugeben, wo eine Platte imDateisystem eingehängt werden soll. Es kann allerdings sein, dass eine Festplat-te umkonfiguriert und dadurch ihr Bezeichner verändert wird, was wiederum dieSystemkonfiguration empfindlich treffen kann. Aus diesem Grund sind viele Distri-butionen dazu übergegangen, sogenannte UUIDs (Universally Unique Identifier) zuverwenden. Dabei handelt es sich um eindeutige Bezeichner für Laufwerke, die auchnach einer Umkonfiguration erhalten bleiben können. Sollten Sie also einmal eineFestplatte umstecken, so müssen Sie die Systemkonfiguration nicht ändern. EineUUID ist eine eindeutige und zudem recht lange Hex-Zahl. Über das Programmblkid können Sie sich die UUIDs Ihrer Partitionen anzeigen lassen.

$ blkid/dev/sda1: UUID="7b898fa6-391e-4b81-888c-48ef10d7a95f"SEC_TYPE="ext2" TYPE="ext3"/dev/sdb1: UUID="7b76eae9-1d58-43b2-856e-f4c6b7a914f9"SEC_TYPE="ext2" TYPE="ext3"/dev/sdb2: UUID="c646f84c-2c4c-446b-ac09-9d398099867e"TYPE="swap"

191

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 192 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

/dev/sdb3: UUID="018ad305-97b0-40a6-b8c0-54734cf6e6b3"SEC_TYPE="ext2" TYPE="ext3"

Listing 6.2 Das Programm blkid zeigt die UUIDs des Systems an.

Die erste Spalte enthält die Partitionsbezeichnung. Darauf folgt die eigentliche UUIDund zwei Dateisystemtyp-Angaben. Die Angabe TYPE steht für den eigentlichenDateisystemtyp (hier also »ext3«). Kann ein Dateisystem auch als ein anderes Datei-system gemountet werden (das Dateisystem ext3 kann auch als ext2-Dateisystemeingehängt werden, ist also rückwärtskompatibel), so gibt SEC_TYPE (secondaryfilesystem type) diesen alternativen Typen an.

Möchten Sie nur die UUID einer bestimmten Partition angezeigt bekommen, kön-nen Sie deren Dateinamen auch an blkid übergeben:

$ blkid /dev/sdb3/dev/sdb3: UUID="018ad305-97b0-40a6-b8c0-54734cf6e6b3"SEC_TYPE="ext2" TYPE="ext3"

Listing 6.3 Die UUID von /dev/sdb3 anzeigen

Die UUIDs sind als Links im Dateisystem präsent, können also auch durch dasls-Programm angezeigt werden.

$ ls -l /dev/disk/by-uuidinsgesamt 0lrwxrwxrwx 1 root root 10 2010-09-12 10:12

018ad305-97b0-40a6-b8c0-54734cf6e6b3 -> ../../sdb3lrwxrwxrwx 1 root root 10 2010-09-12 10:12

7b76eae9-1d58-43b2-856e-f4c6b7a914f9 -> ../../sdb1lrwxrwxrwx 1 root root 10 2010-09-12 10:12

7b898fa6-391e-4b81-888c-48ef10d7a95f -> ../../sda1lrwxrwxrwx 1 root root 10 2010-09-12 10:12

c646f84c-2c4c-446b-ac09-9d398099867e -> ../../sdb2

Listing 6.4 UUIDs mit ls anzeigen

Laufwerke unter BSD

Unter BSD werden Laufwerke anders bezeichnet als unter Linux. Auch sind dieStandarddateisysteme andere als unter Linux, doch dazu mehr in Kapitel 28.

Unter OpenBSD und NetBSD werden Serial-ATA- und IDE-Laufwerke mit wdN, alsowd0, wd1 und so fort bezeichnet. Beachten Sie hier, dass die erste Stelle hier bei0 beginnt, und nicht – wie bei Linux – bei a (also etwa sda). Dasselbe gilt fürSCSI-Festplatten, deren Bezeichnung mit sd0 beginnt, gefolgt von sd1.

192

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 193 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Bewegen in der Shell 6.3

Partitionen tragen hingegen Zahlenbezeichner, womit sich Partitionsbezeichner wiewd0a oder wd0c ergeben. Auch hier ist zu beachten, dass die Ziffern bei Linux dasLaufwerk an sich angeben, nicht die Partition. Details zu beiden Treibern erhaltenSie unter beiden Derivaten in den Manpages sd und wd.

Auch unter FreeBSD sind die Bezeichner für Laufwerke unterschiedlich. IDE-Fest-platten werden mit adN, also ad0, ad1 (und so fort) bezeichnet. SCSI- und USB-Platten werden hingegen mit daN, IDE-CD/DVD-Laufwerke mit acdN und SCSI-CD/DVD-Laufwerke mit cdN bezeichnet. Für die alten (maximal vier) verschiede-nen DOS-Partitionen verwendet FreeBSD den Ausdruck Slice, so bezeichnet ad0s1etwa die erste Slice einer IDE-Festplatte und ad0s1a die erste Partition im erstenSlice der ersten IDE-Festplatte. da1s3a bezeichnet hingegen die erste Partition derdritten Slice der zweiten Platte.

6.3 Bewegen in der Shell

Wir haben die Shell bereits als wichtigen Bestandteil der Unix-Philosophie vorge-stellt und sind auch in den Beispielen bisher auf Befehle eingegangen. Im Folgendenwollen wir, um den Anspruch dieses Kapitels zu erfüllen, kurz die Grundlagen desArbeitens in der Shell vorstellen.

6.3.1 Das Prompt

Die Eingabeaufforderung der Shell besteht nicht nur aus einem blinkenden Cursorfür die Eingabe, sondern auch noch aus dem Prompt. Dieses gibt meist den Kon-text der Arbeit durch die Anzeige des Rechner- und Benutzernamens sowie desArbeitsverzeichnisses wieder. Allerdings kann jeder Benutzer seinen Prompt auchpersonalisieren und sogar farbig gestalten.

$user@host$user@host:/home/user$

/root#

Listing 6.5 Mögliche Prompts

Dass Informationen wie der Rechner- und Benutzername angezeigt werden, hilftvor allem beim Arbeiten auf verschiedenen Rechnern im Netzwerk. Das Arbeitsver-zeichnis hilft dabei, den Ausgangspunkt relativer Pfade zu bestimmen.

193

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 194 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

6.3.2 Absolute und relative Pfade

Unix-Systeme kennen keine Laufwerke und sprechen alle Speichermedien über denVFS-Layer und einen Verzeichnisbaum an. So ergeben sich zwei verschiedene Arten,wie man Dateien und Verzeichnisse referenzieren kann.

Bei der Angabe eines absoluten Pfades wird der Name immer von der Wurzel / des Datei-systems aus angegeben.

Dies kann jedoch zu recht langen Eingaben und redundanten Angaben führen,UnnötigeRedundanz falls ein Benutzer hauptsächlich in einem bestimmten Verzeichnis arbeitet. Daher

besitzt jeder Prozess – und damit natürlich auch jede Shell – mit dem aktuellenArbeitsverzeichnis einen aktuellen Kontext. Von diesem Verzeichnis aus kann manVerzeichnis- oder Dateinamen auch relativ angeben.

Ein relativer Pfad beginnt nicht mit der Wurzel des Dateisystems, sondern wird relativ zumaktuellen Arbeitsverzeichnis des Prozesses interpretiert, indem das Arbeitsverzeichnis vorden relativen Pfad gesetzt und das Ergebnis schließlich als absoluter Pfad gelesen wird.

Erst so wird es möglich, dass man zum Beispiel einen Texteditor mit text.txt alsArgument aufrufen kann, anstatt sich über den Pfad /home/user/text.txt auf dieDatei zu beziehen.

6.3.3 pwd

Sollte der Prompt einer Shell einmal weniger aussagekräftig sein, so kann man sichdas Arbeitsverzeichnis auch mit dem pwd-Befehl anzeigen lassen. Die Abkürzungsteht für print working directory.

$ pwd/home/jploetner

Listing 6.6 Arbeitsverzeichnis mit pwd ausgeben

Ein neuer Prozess entsteht unter Unix stets als Kopie eines bereits bestehendenProzesses. Als Kopie erbt er alle Eigenschaften wie eben auch das Arbeitsverzeichnis.

6.3.4 cd

Natürlich kann das Arbeitsverzeichnis der Shell auch durch einen bestimmten Be-fehl gewechselt werden. Der cd-Befehl ist die Abkürzung für change directory underwartet eine Pfadangabe als Argument. Diese kann selbstverständlich wieder re-

194

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 195 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Bewegen in der Shell 6.3

lativ oder absolut gemacht werden, wobei man zwei Spezialfälle relativer Pfadeunterscheidet:

� ».«Jedes Verzeichnis enthält eine Referenz auf sich selbst, die der Kürze halber Referenz auf

sich selbstmit einem einfachen Punkt bezeichnet wird. Diesen Punkt benötigt man vorallem, wenn man eine ausführbare Datei starten möchte, die sich vielleicht imHomeverzeichnis des Benutzers befindet. Normalerweise sucht die Shell nur inbestimmten Ordnern – diese Ordner werden in einer speziellen Shell-Variable,dem PATH, gespeichert – nach ausführbaren Dateien, so dass man den Pfad zueinem an anderer Stelle gespeicherten Programm explizit angeben muss:

$ ./schach

Listing 6.7 Programm aus dem aktuellen Verzeichnis starten

Dieser Pfad referenziert nun eine Datei schach im aktuellen Verzeichnis. Für dencd-Befehl braucht man die Selbstreferenz jedoch selten, da man schließlich dasVerzeichnis wechseln möchte.

� »..«Mit den zwei Punkten bezeichnet man das nächsthöhere Verzeichnis. Zusammenmit den direkt referenzierbaren Unterverzeichnissen ergibt sich so die kompletteNavigation in der Shell:

$ pwd/home/jploetner$ cd ..$ pwd/home$ cd jploetner$ pwd/home/jploetner

Listing 6.8 Navigation in der Shell

Interessanterweise hat aus Konsistenzgründen auch das Wurzelverzeichnis /

einen solchen Backlink. Dieser zeigt jedoch wieder auf das Wurzelverzeichnisselbst.

Am Beispiel von cd kann man auch sehr gut sehen, dass Shellbefehle in der Regel Stumme Befehle

im Erfolgsfall keine Meldung ausgeben. Das Kommando erledigt nur seine Aufgabe,und wenn diese zur Zufriedenheit des Benutzers ausgeführt werden konnte, musses dies nicht extra kundtun. Etwas anderes gilt natürlich im Fehlerfall, also wennman mit cd in ein nicht existierendes Verzeichnis wechseln will:

195

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 196 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

$ cd swendzel-bash: cd: swendzel: No such file or directory$

Listing 6.9 Ein fehlgeschlagener cd-Aufruf

Was dieses -bash in der obigen Ausgabe zu suchen hat, erfahren Sie im nächstenKapitel, wo wir den Unterschied zwischen Programmen und Shell-Builtins erklären.

6.4 Arbeiten mit Dateien

Unser nächster Schwerpunkt soll das Arbeiten mit Dateien sein. Zuerst wollen wirdabei betrachten, wie man sich Dateien in der Shell anzeigen lassen kann.

6.4.1 ls

Für die Auflistung von Dateien in der Shell ist der ls-Befehl zuständig. OhneDateien einesVerzeichnisses

anzeigenArgument zeigt ls den Inhalt des Arbeitsverzeichnisses an, allerdings kann mansich die Dateien jedes beliebigen Verzeichnisses durch dessen Angabe als Argumentauflisten lassen:

$ pwd/usr/src/linux-2.6.10$ lsarch crypto fs ipc MAINTAINERS...CREDITS drivers init lib mmREPORTING-BUGS sound$ ls /homejploetner mploetner aploetner

Listing 6.10 Dateien auflisten mit ls

Im Normalfall – also wie hier im Listing ohne Angabe weiterer Optionen – zeigtVersteckte Dateienanzeigen ls nur Dateien und Verzeichnisse an. Mit einem Punkt beginnende und somit

»versteckte« Elemente eines Verzeichnisses werden ausgeblendet. Möchte man sichdiese Dateien dennoch alle anzeigen lassen, sollte man das -a-Flag benutzen:

$ lstest test.c$ ls -atest test.c .vimlog

Listing 6.11 Versteckte Dateien anzeigen

196

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 197 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Arbeiten mit Dateien 6.4

Natürlich kann ls auch viele mit einer Datei verknüpfte Metadaten wie Rechte oderEigentümer und Gruppe anzeigen. Man will mit anderen Worten ein langes Listing,das man mit dem -l-Flag erhält:

$ ls -l-rwxr-xr-x 1 jploetner users 28 05-03-13 22:03 test-rw-r--r-- 1 jploetner users 371 05-02-10 13:40 test.c

Listing 6.12 Lange und ausführliche Dateilistings

In diesem Beispiel können Sie das Rechtesystem auch in der Praxis sehen: BeideDateien haben den Eigentümer jploetner und gehören zur Gruppe users. Ganzam Anfang sieht man auch drei Dreiertupel, die in der Reihenfolge »Eigentümer«,»Gruppe« und »Sonstige« jeweils über die Berechtigungen r (read), w (write) und x

(execute) Auskunft geben. Wird der entsprechende Buchstabe in der Ausgabe von ls

angezeigt, so wird das Recht gewährt. Andernfalls signalisiert ein Minus das Fehlender entsprechenden Berechtigung. Was die weiteren von ls angezeigten Daten imEinzelnen bedeuten und was man mit ls sonst noch machen kann, erfahren Sie inTeil III, »Die Shell«, und in der Kommandoreferenz ab Seite 1220.

6.4.2 more, less und most

Möchte man sich textuelle Dateien (etwa Shellskripte, ein README oder Dateien Dateien anzeigen

aus /etc) ansehen, so kann man sich zum Beispiel zweier Programme bedienen: moreund less. Beide Tools sind sogenannte Pager und zeigen den Inhalt einer Datei alsText interpretiert an. Sie unterscheiden sich dabei nur in ihrer Bedienung, wobeiless etwas benutzerfreundlicher ist als more.

Bei more kann man nur mittels der Enter-Taste jeweils eine Zeile tiefer scrollen, lessdagegen erlaubt eine intuitivere und umfassendere Bedienung mittels Cursor- undden Bildlauftasten. Bei beiden Pagern kann man in der angezeigten Datei suchen,indem man den Slash (/), gefolgt vom Suchbegriff, eintippt. Über die Taste N kannman schließlich zur nächsten Fundstelle des Suchbegriffs springen.

Mit dem Programm most können Sie gegenüber less nochmals an Bedienkomfortgewinnen, denn most most kann farbige Ausgaben verschiedener Eingabe-Typen(etwa Manpages) erstellen.

Sowohl less, als auch most können mehrere Dateien gleichzeitig geöffnet haben(das nächste Fenster erhält man durch :n, bei less kann das vorherige zudem mit :perreicht werden). In most können auch Fenster aufgeteilt werden, sodass Sie meh-rere geöffnete Dateien gleichzeitig betrachten können (Strg + X und anschließend2 drücken).

Beenden können Sie alle drei Programme durch die Taste Q.

197

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 198 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

6.4.3 Und Dateitypen?

Einige Verwirrung bei der Arbeit mit Dateien entsteht hinsichtlich der Verwendungvon Dateiendungen. Endungen wie .jpg oder .txt sollten ja im Regelfall einen Rück-schluss auf den Dateiinhalt erlauben, also im Beispiel auf eine Bild- beziehungsweiseTextdatei hinweisen.

Unter Linux wie auch unter BSD und anderen Unix-Versionen ist der Punkt nunEine konsistenteLösung ein gültiger Bestandteil des Dateinamens. Mit Ausnahme eines Punkts als ersten

Buchstaben im Dateinamen – der bekanntlich eine Datei »versteckt« – kann manden Punkt so oft man will, oder eben auch gar nicht, verwenden. Der Kernel kannnur Programme starten, keine Bild- oder Textdateien. Auf Dateien wird unabhängigvom Dateityp über ein einheitliches Interface mittels open(), read() und auchwrite() zugegriffen. Für das System sind alle Dateien nur eine Folge von Bits undBytes. Die Anwendung allein ist dafür zuständig, diese Daten zu interpretieren.

Folglich sind Erweiterungen wie .jpg und .txt nur für Sie als Benutzer relevant. Siekönnen auf den ersten Blick erkennen, um welche Art Datei es sich handelt. WennSie nun aber unbedingt eine Musikdatei in einem Texteditor bearbeiten wollen,können Sie dies tun – dem System ist das egal.

Eine Einschränkung gilt jedoch für grafische Oberflächen wie KDE oder GNOME:Wenn Sie mit einem Klick auf eine Textdatei diese Datei in einen Editor laden undanschließend bearbeiten wollen, so muss eine gewisse Verknüpfung vom Dateitypzu der für diesen Typ bevorzugten Anwendung bestehen. Der Einfachheit halberbietet es sich dann natürlich an, diese Zuordnung aufgrund der Dateiendungenvorzunehmen.18

file

Eine weitere Möglichkeit ist der Versuch, den Inhalt aufgrund bestimmter charak-Analyse des Inhalts

teristischer Muster zu erkennen. Für die Kommandozeile ist hier das file-Tool dasProgramm der Wahl: Wird es mit einer zu untersuchenden Datei aufgerufen, gibtes den aufgrund einer Inhaltsanalyse vermuteten Dateityp aus:

$ file test.ctest.c: ASCII C program text$ file testtest:ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), forGNU/Linux 2.2.0, dynamically linked (uses shared libs), not stripped

Listing 6.13 In Aktion: file

18 Diese »Einfachheit« und die Wahlmöglichkeit gilt für die Programmierer der grafischenOberfläche, die Ihnen als Nutzer dann schließlich eine Möglichkeit zur Verknüpfung vonDateitypen zu Programmen anbieten.

198

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 199 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Der Systemstatus 6.5

Je nach Dateityp kann die Analyse dabei relativ kurz oder auch etwas ausführlicherausfallen.

6.5 Der Systemstatus

Selbstverständlich können Sie in einem gewissen Rahmen auch den Systemstatuskontrollieren. Diesem Thema ist ein eigenes Kapitel zur Administration gewidmet,jedoch wollen wir vorab einige grundlegende und einfache Programme vorstellen.

6.5.1 uname

Mit dem uname-Befehl können Sie unter Linux zum Beispiel feststellen, welche Informationenüber das SystemKernel-Version gebootet ist. Aber auch unter anderen Unix-Systemen kann man

Näheres über die eingesetzte Betriebssystemversion oder die Rechnerarchitekturerfahren. Alle verfügbaren Informationen können Sie sich mit dem -a-Parameteranzeigen lassen:

$ uname -aLinux athlon2000 2.6.8-2-k7 #1 Tue Mar 22 14:14:00 \EST 2005 i686 GNU/Linux

Listing 6.14 uname

Das Format der ausgegebenen Daten kann dabei von Unix-Version zu Unix-Versionvariieren, da nicht alle dieselbe Implementierung des Programms verwenden.

6.5.2 uptime

Ein weiterer interessanter Befehl ist uptime. Mit diesem Kommando kann man sich Laufzeit einesSystemsdarüber informieren, wie lange ein System nun schon ohne Neustart läuft – vor

allem bei Servern kann dies interessant, aber oft auch wichtig sein.

$ uptime3:21:38 up 4:03, 1 user, load average: 2.09,0.85,0.59

Listing 6.15 uptime

Aus der Ausgabe lesen Sie zunächst die aktuelle Systemzeit, gefolgt von der Uptimedes Rechners und einigen Daten zur Auslastung ab.

6.5.3 date

Mit dem Befehl date können Sie die Systemzeit sowie das Datum abfragen und Zeit anzeigenmit date

199

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 200 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

auch setzen. Ohne Optionen zeigt das Tool die Uhrzeit samt Datum an:

$ dateSo Apr 10 19:09:22 CEST 2005

Listing 6.16 Die Zeit auslesen

Das Setzen der Zeit geschieht nun über den Parameter -s, gefolgt von der neuenZeit neu setzen

Zeit. Damit die Benutzer mit einem solchen Befehl keine Spielchen treiben undvielleicht zeitkritische Anwendungen durcheinanderbringen, ist das Setzen der Sys-temzeit nur dem Administrator root erlaubt:

# date -s 20:36:40

So Apr 10 20:36:40 CEST 2005

Listing 6.17 Die Zeit setzen

Auch wenn es etwas ungewöhnlich ist, aber der Befehl date ist auch für die Uhrzeitzuständig. Es gibt zwar einen time-Befehl, doch hat dieser nichts mit der Uhrzeit,sondern vielmehr mit der Zeitmessung zu tun und wird von uns im Kapitel zurSoftwareentwicklung behandelt.

6.6 Hilfe

Zu guter Letzt fehlt uns für eine komplette Betrachtung des Einstiegs noch dieMöglichkeit, Hilfe zu erhalten. Schließlich sind die Optionen und Möglichkeitenvieler Programme so reichhaltig, dass man sie kaum komplett im Kopf behaltenkann. Vor allem in nicht ganz alltäglichen Situationen wird man gerne einmal aufBefehlsreferenzen zurückgreifen.

6.6.1 Manpages

Eine solche Befehlsreferenz finden Sie zum einen natürlich am Ende dieses Buches,zum anderen aber auch in den Manpages. Diese sind das traditionelle Hilfesystemfür Unix und somit (wie auch nicht anders zu erwarten) in erster Linie über dieShell erreichbar.

Zu fast allen Befehlen und Programmen gibt es eine Handbuchseite (engl. manualHandbuchseitenauf dem PC page), die aus der Shell heraus mit dem man-Kommando betrachtet werden kann.

Das Scrollen funktioniert dabei wie gewohnt, und das Suchen erfolgt wie bei lessoder auch beim vi über die /-Taste, gefolgt vom Suchausdruck und Betätigen derTaste N zum Aufrufen der nächsten Fundstelle.

200

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 201 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Hilfe 6.6

$ man ls

Listing 6.18 Aufrufen der Manpage für ls

Manpages enthalten dabei üblicherweise eine kurze Beschreibung des Programmssowie eine komplette Referenz der verfügbaren Kommandozeilenoptionen. Nurselten findet sich ein ausführlicheres Beispiel in einer Manpage. Und so passt dieseHilfe wieder zur Unix-Philosophie: Erfahrene Nutzer wollen nur kurz die Syntaxbestimmter Optionen nachschlagen und sich dafür nicht durch seitenlange Einfüh-rungen quälen müssen.

Sections

Für manche Stichwörter gibt es mehr als nur ein Hilfethema und somit auch mehr UnterschiedlicheThemenkomplexeals eine Manpage. Ein gutes Beispiel dafür ist das Programm man selbst: Es gibt zu

diesem Thema einmal eine Hilfeseite zur Bedienung des man-Programms und eineHilfeseite zur Erstellung von Manpages. Damit man Hilfeseiten zu unterschied-lichen Themenkomplexen unterscheiden kann, gibt es unterschiedliche Sections(Abschnitte), in die die Manpages eingeteilt werden:

1. ausführbare Programme oder Shell-Befehle

2. Systemaufrufe (Kernel-Funktionen)

3. Bibliotheksaufrufe (Funktionen in Systembibliotheken)

4. spezielle Dateien (gewöhnlich in /dev)

5. Dateiformate und Konventionen, z. B. /etc/passwd

6. Spiele

7. Makropakete und Konventionen, z. B. man(7), groff(7)

8. Systemadministrationsbefehle (in der Regel nur für root)

9. Kernel-Routinen (linux-spezifisch)

Die Sektionen sind im System als einfache Verzeichnisse realisiert, in denen dannjeweils die Manpages der entsprechenden Sektionen abgelegt sind. Die Manpagesselbst sind wiederum nur Dateien in bestimmter Formatierung.

Möchte man explizit auf eine Seite innerhalb einer Sektion zugreifen, so gibt manbeim Aufruf von man einfach die Sektionsnummer des eigentlichen Hilfethemas an:

$ man 1 write$ man 2 write

Listing 6.19 Unterschiedliche Man-Sektionen

201

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 202 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

In diesem Beispiel wird zuerst die Manpage für das ausführbare Programm write

aus der Sektion 1 und danach die Manpage zum Syscall write() aus der Sektion 2aufgerufen. Lässt man diese explizite Angabe der Sektionsnummer weg und tipptnur man write, so wird die Manpage aus der niedrigsten Sektion – also in unse-rem Fall die Manpage aus Sektion 1 zum Programm write – angezeigt. Um dieVerwirrung zu reduzieren, wird für den Bezug auf eine bestimmte Sektion diese inKlammern nach dem Befehl angegeben, also beispielsweise write(2).

whatis

Das kleine Programm whatis hilft uns nun, alle Sektionen zu einem bestimmtenThema herauszufinden. Das Tool ist dabei lediglich ein Frontend für den Aufruf vonman mit dem Parameter -f:

$ whatis writewrite (1) - send a message to another userwrite (2) - write to a file descriptor$ man -f writewrite (1) - send a message to another userwrite (2) - write to a file descriptor

Listing 6.20 whatis

Angezeigt werden also der Titel der Manpage, die Sektionsnummer sowie einekurze Beschreibung des Seiteninhalts.

apropos

Eine etwas weiter gefasste Suche ermöglicht das Tool apropos, das wiederum nurSuchbegriffangeben Frontend für man mit der Option -k ist:

$ apropos write...kwrite (1) - KDE text editorllseek (2) - reposition read/write file offsetlogin (3) - write utmp and wtmp entries...

Listing 6.21 apropos

Hier werden alle Manpages angezeigt, bei denen im Namen der Seite oder in derKurzbeschreibung auf das Suchwort Bezug genommen wird. Beide Tools – whatis

und apropos – ergänzen somit das Manpage-Hilfesystem von Unix.

202

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 203 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

Zusammenfassung 6.7

6.6.2 GNU info

Ähnlich wie man funktioniert das Programm info der GNU-Community. Die Bedie- GNU is Not Unix

nung ist etwas anders, aber eigentlich auch recht intuitiv. Der Grund für ein eigenesHilfesystem dieser Open-Source-Gruppe liegt in der Abkürzung GNU selbst: GNU isNot Unix. Mit info sollte ein eigenes Hilfesystem für ein komplett freies GNU-ba-siertes Betriebssystem geschaffen werden. Mittlerweile spricht man teilweise vonGNU/Linux, um auszudrücken, dass Linux zwar den Systemkern, aber GNU diewichtigsten grundlegenden Systemtools zur Verfügung stellt. Aber natürlich gibt esalle GNU-Infoseiten auch als Manpages.

6.6.3 Programmdokumentation

Solche Manual- oder Infoseiten sind natürlich meist ein zentraler Bestandteil derDokumentation von Softwarepaketen. Außerdem werden oft sogenannte READ-ME-Dateien nach /usr/doc oder /usr/share/doc installiert, die noch einmal im DetailAuskunft über spezielle Funktionen und Aspekte der Bedienung geben.

Eine Auflistung aller verfügbaren Optionen und damit eine ähnliche Ausgabe wiein den Manpages kann man oft durch die Angabe der Parameter --help oder -h aufder Kommandozeile erhalten. Ansonsten hilft meistens auch die Homepage weiter,die man bei Open-Source-Software eigentlich immer über eine der folgenden Seitenfindet:

� SourceForge: http://www.sourceforge.net

� Freshmeat: http://www.freshmeat.net

Alternativ gibt es für jede Distribution auch noch zahlreiche Foren auf den ent-sprechenden Internetseiten. Bei Linux-Fragen sind oft diverse Mailinglisten undNewsgroups recht hilfreich. Ansonsten hilft natürlich auch immer die Suchmaschi-ne Ihrer Wahl, gefüttert mit passenden Suchbegriffen.

6.7 Zusammenfassung

In diesem Kapitel haben Sie anhand der Unix-Philosophie die Grundlagen von Li-nux und allen verwandten Unix-Systemen kennengelernt – und hoffentlich auchverstanden. Dabei sind wir vor allem auf die Sicht- und weniger auf die Funktions-weise des Systems eingegangen.

Sicher sind Sie über einige interessante Anmerkungen zum Dateisystemlayout, zuden Rechten oder auch zu den Dateitypen gestolpert. Außerdem hatten Sie bereits

203

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 204 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap03_einstieg.tex , Aktueller Job: buch

6 Grundlagen aus Anwendersicht

Ihren ersten Kontakt mit der Shell, den wir in den nächsten Kapiteln19 intensivierenwerden. Im Anschluss an diese Shell-Grundlagen werden wir uns in Teil IV mit derAdministration und Verwaltung eines Linux-Systems befassen.

6.8 Aufgaben

Philosophisches

Ein Bekannter belästigt Sie wieder einmal mit unqualifizierten Aussagen über Linux.Unter anderem erwähnt er die unnötige und anachronistische Komplexität desSystems. Alles sei einfach zu umständlich realisiert. Was antworten Sie ihm?

Richtige Partitionierung

Sie müssen als Administrator eines großen Rechenzentrums einen neuen Linux-Ser-ver aufsetzen. Der Server soll verschiedene (Daten-)Verzeichnisse für die Benutzerfreigeben. Wie gestalten Sie vom Prinzip her die Partitionierung?

19 Ja, wir sprechen im Plural – dieses Buch erspart Ihnen ein weiteres Buch zur Shell. Und dasist gut so. ;-)

204

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 207 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

»Die Neugier steht immer an erster Stelle eines Problems,das gelöst werden will.«– Galileo Galilei

7 Die Shell

In diesem Kapitel werden wir uns mit einem Thema beschäftigen, das für dieArbeit mit allen Unix-artigen Systemen zentral ist. Dabei ist es fast egal, ob es sichum Linux, *BSD, Solaris, AIX, HP-UX, Mac OS X oder was auch immer handelt. DasThema dieses Kapitels ist die Shell. Doch ...

7.1 Was ist eine Shell?

Ganz kurz und verständlich: Die Shell ist das Programm, das nach dem Konso-len-Login gestartet wird und in dem Befehle (etwa zum Start weiterer Programme)eingegeben werden können.1 Die Shell ist somit das Arbeitsinstrument NummerEins der klassischen Unix-Umgebung.

OpenBSD/i386 (eygo.sun) (ttyC1)

login: swendzelPassword:

swendzel$

Listing 7.1 Ein Login mit Shell-Start

Dass Sie sich in einer Shell befinden, bemerken Sie oftmals durch den sogenanntenEingabe-Prompt, der Sie zur Eingabe eines Befehls auffordert. Dieser kann verschie-den aussehen – hier sind einige Beispiele für Shell-Prompts:

user$host##$

1 Natürlich werden nach dem Login oftmals noch diverse andere Programme, etwa mail oderfortune, gestartet, doch lassen wir diese hier zunächst noch außer Acht.

207

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 208 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

%bash2#

Listing 7.2 Typische Shell-Prompts

Sofern Sie sich in einer Shell befinden, sollte es kein Problem sein, einen Befehlauszuführen. Probieren Sie es am besten gleich einmal aus.2 Starten Sie einfach dieBourne-Shell, die unter den meisten Unix-Systemen die Standardshell ist.3 Dazugeben Sie den Befehl /bin/sh ein.

user$ /bin/shuser$

Listing 7.3 Start der Bourne-Shell

Sofern Sie sich bereits in der Bourne-Shell befanden (was durchaus der Fall seinkann), wird sich Ihnen kein interessantes Bild auf dem Bildschirm bieten – Sie er-halten nämlich genau den gleichen Eingabe-Prompt wie bisher. Allerdings arbeitenSie nun mit der neuen Shell. Würden Sie diese Shell nun verlassen, befänden Siesich wieder in der Login-Shell.

7.1.1 Eine Shell verlassen

Um eine Shell wieder zu verlassen, verwendet man das Kommando exit. Durchdiesen Befehl kann grundsätzlich jede Standard-Shell verlassen werden. Geben Siedieses Kommando einmal in der soeben gestarteten Bourne-Shell ein, danach wer-den Sie sich wieder in der Login-Shell befinden. Für eine Login-Shell gilt noch einebesondere Bedingung: Login-Shells können durch das Kommando logout verlassenwerden. Anschließend wird die Shell-Session des Benutzers beendet, und dieser wirdzum erneuten Login aufgefordert.

user$ exituser$ logout

OpenBSD/i386 (eygo.sun) (ttyC1)

login:

Listing 7.4 Subshell und Login-Shell verlassen

2 Und genießen Sie es – vielleicht spüren Sie ja schon die Faszination ...3 Unter Linux ist die Standardshell die bash und die vermeintliche Bourne-Shell nur ein Hard-

link auf die bash.

208

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 209 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Was ist eine Shell? 7.1

Weiterhin können Shells auch verlassen werden, in dem man ihnen ein EOF (»endof file«) über die Tastenkombination Strg+D sendet.

7.1.2 nologin

Je nach verwendetem Betriebssystem steht Ihnen unter Linux und BSD ein Pro-gramm zur Verfügung, das den Login eines Accounts unterbindet, was nicht miteiner kompletten Deaktivierung des Accounts gleichzusetzen ist. Das Ausführenvon Prozessen ist nämlich auch unter Accounts ohne gültige Login-Shell möglich.

Dieses Programm, oft handelt es sich um /sbin/nologin oder auch /bin/false,wird als Login-Shell des Benutzers in der Benutzerkonfiguration angegeben (nähereshierzu erfahren Sie im weiteren Verlauf des Buches).

Normalerweise wird beim erfolgreichen Login-Versuch, also bei der Eingabe deskorrekten Passworts eines solchen Benutzers, eine Meldung wie »This account iscurrently not available.« ausgegeben. Unter OpenBSD können Sie diese Meldungjedoch an Ihre Wünsche anpassen, indem Sie den auszugebenden Text selbst in dieDatei /etc/nologin.txt eintragen. Diese Datei muss normalerweise erst von Hand er-stellt werden. Weitere Informationen hierzu liefert Ihnen die Manpage nologin(8).

$ echo "Account gesperrt." > /etc/nologin.txt$ chmod 644 /etc/nologin.txt$ nologinAccount gesperrt.

Listing 7.5 Eine eigene Meldung via nologin ausgeben

7.1.3 /etc/shells

In der Datei /etc/shells stehen die Pfadnamen gültiger Login-Shells. Das bedeutet,dass all diese Shells in der Passwortdatei für einen Benutzer angegeben werdenkönnen. Außerdem können diese Shells beim Wechsel der Login-Shell durch dasProgramm chsh (das wir gleich besprechen werden) verwendet werden.

$ cat /etc/shells# /etc/shells: valid login shells/bin/ash/bin/csh/bin/sh/usr/bin/es/usr/bin/ksh/bin/ksh/usr/bin/rc/usr/bin/tcsh

209

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 210 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

/bin/tcsh/bin/sash/usr/bin/esh/bin/bash/bin/rbash/bin/dash/bin/zsh/usr/bin/zsh

Listing 7.6 Der typische Inhalt von /etc/shells

Möchten Sie selbst installierte Shells als Login-Shells verwenden, so müssen Sieeinen entsprechenden Eintrag für die neuen Shells in der /etc/shells eintragen. SofernSie eine Shell über ein Paketmanagementsystem installieren (was fast immer derFall sein dürfte), werden die Einträge der Datei /etc/shells meistens automatischangepasst.

7.1.4 Die Login-Shell wechseln

Beim Login in ein System wird die Shell aufgerufen, die Ihrem Account in der Da-tei /etc/passwd zugewiesen wurde. Diese Login-Shell lässt sich jedoch ganz einfachändern. Dazu wird das Programm chsh verwendet. Nachdem Sie Ihr Passwort dorteingegeben haben, geben Sie den Pfad zu der Shell ein, die in Zukunft verwendetwerden soll. Ein Blick in /bin verschafft Ihnen eine Übersicht über die installier-ten Shells.4 chsh modifiziert anschließend den Eintrag in der Passwort-Datei desSystems.

$ chshPassword:Ändere die Login-Shell für swendzelGeben Sie einen neuen Wert an oder ENTER für den Standardwert

Login-Shell [/bin/bash]: /bin/csh$

Listing 7.7 Die Login-Shell ändern

7.2 Welche Shells gibt es?

Ende der 70er-Jahre wurde mit der Unix-Version 7 von AT&T die erste Bourne-sh

Shell (kurz sh) ausgeliefert. Diese Shell wurde in der Programmiersprache C (je-doch unter Verwendung Algol-68-ähnlicher Makros) entwickelt und stellte bereits

4 Unter einigen Systemen (etwa OpenBSD) landen Shells, die als Ports installiert wurden, in/usr/local/bin.

210

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 211 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Welche Shells gibt es? 7.2

einige wichtige Funktionalität zur Verfügung, wie etwa Pipes, sowie Ein- und Aus-gabeumlenkung. Benannt wurde die Bourne-Shell nach ihrem Entwickler StephenBourne.

Die sogenannte Job Shell ist eine Weiterentwicklung der Bourne-Shell. Neu in dieser jsh

Shell waren die namensgebenden Jobs. Diese Jobs erlauben es (wie Sie später nochgenau erfahren werden), Programme im Hintergrund ablaufen zu lassen, anzuhaltenund später fortzusetzen.

Neben der Bourne-Shell wurde in den ersten Jahren der BSD-Geschichte die C-Shell csh

(csh) entwickelt. Ihr Begründer war Bill Joy, ein BSD-Mitentwickler und Gründervon Sun Microsystems. Joy war jedoch auch an diversen anderen wichtigen Pro-jekten, etwa an der Weiterentwicklung der TCP/IP-Protokollfamilie, beteiligt. DieC-Shell wurde zum ersten Mal mit 4.1BSD publiziert. Zu ihren populärsten Featu-res zählen die Funktionalität als Interpreter einer eigenen Skriptsprache (die, wieder Name C-Shell erahnen lässt, an die Syntax der Programmiersprache C angelehntist), die Kommando-History, die Job-Kontrolle und die interaktive Datei- und Be-nutzernamenerweiterung. Die C-Shell ist heute in ihrer Bedeutung nicht mehr derBourne-Shell gleichzusetzen. In einem umfassenden Handbuch wie diesem werfenwir allerdings dennoch in Kapitel 12 einen Blick auf die C-Shell.

Diese beiden Vertreter, also Bourne-Shell und C-Shell, stellen die beiden grundle-genden Shellvarianten unter Unix-Systemen dar. Die meisten populären Folgeent-wicklungen bauen entweder auf der C-Shell und ihrer Syntax oder auf der Bourne-Shell und deren Syntax auf. Es gibt zwar auch andere Shells, die ihre Syntax keinerder beiden Shells angepasst haben, etwa die Scheme-Shell (shsh), die an die Syntaxder Programmiersprache Scheme angelehnt ist, doch sind diese Shells in der Pra-xis weitgehend bedeutungslos. Einige Weiterentwicklungen kombinieren auch dieFeatures beider Shells (C-Shell und Bourne-Shell).

Die TENEX-C-Shell (tcsh) ist eine C-Shell-Weiterentwicklung von Christos Zoulas. tcsh

Diese Shell bietet gegenüber der eigentlichen C-Shell einige Verbesserungen inSachen Benutzerfreundlichkeit.

Die von David Korn entwickelte Korn-Shell (ksh) basiert auf den Eigenschaften ksh

und der Syntax der Bourne-Shell. Allerdings übernimmt die Korn-Shell auch einigeFeatures der C-Shell. Die Korn-Shell ist Bestandteil des POSIX-Standards und in derVersion ksh93 seit März 2000 als Quelltext zu haben.

Da die Korn-Shell jedoch nicht immer frei war, entwickelte man die Public-Domain- pdksh

Korn-Shell (pdksh). Diese Shell beinhaltet alle Funktionalität des ksh88-POSIX-Stan-dards und wird unter OpenBSD als Standardshell verwendet.

Die Almquist-Shell (ash) ist eine kleine, der Bourne-Shell ähnliche Shell und stellt ash

unter einigen BSD-Derivaten die Standardshell dar.

211

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 212 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Die Debian-Almquist-Shell (dash) basiert auf der NetBSD-Version der Shell ash. Un-dash

ter Debian wird die dash als Ersatz für die ash eingesetzt, und einige Distributionenverwenden die dash anstelle der langsameren bash für ihre Startskripts (etwa Ubun-tu). In der Entwicklung der Hardened-Linux-Distribution benutzten wir die dash

unter anderem als Skriptsprache für die automatische Generierung von Packages.Die dash ist wie die ash größtenteils kompatibel mit der Bourne-Shell.

Die Bourne-Again-Shell, kurz bash, ist wie die meisten aktuellen Shells ein Open-bash

Source-Projekt.5 Die bash ist POSIX-Standard-konform und baut auf der Syntax derBourne-Shell auf. Sie beherrscht sowohl Features der Bourne- und der Korn-Shellals auch solche der C-Shell. Die bash ist die Standardshell unter Linux-Systemen.

Ein wahrer Bolide unter den Unix-Shells ist die Z-Shell (zsh). Sie vereint die Featureszsh

der bash, csh und tcsh. Sie bietet diverse individuelle Features wie die Nutzungder Bourne- und der C-Shell-Syntax, die Möglichkeit, Themes zu verwenden undsogar Module wie etwa zftp6 zu laden. Näheres zu dieser Shell erfahren Sie in[Steph99A] und [Wendzel03A].

7.3 Welche Shell für dieses Buch?

Nun ist es leider so, dass nicht unter jedem System die gleichen Shells in derStandardinstallation enthalten sind. Es steht zwar überall die C-Shell zur Verfügung,diese verwendet heutzutage jedoch kaum noch jemand.

Für welche Shell entscheidet man sich in einem Buch, das sowohl Linux als auchBSD behandelt? Unter Linux steht generell immer die bash zur Verfügung, wasschon einmal sehr gut ist. Unter OpenBSD ist die pdksh, unter Net- und FreeBSDdie ash die Standard-Shell. Sie alle basieren auf der Syntax der Bourne-Shell, unddie Shellskripte für den Systemstart sind sowohl unter Linux als auch unter denBSD-Derivaten für diese Shells geschrieben.

In diesem Buch wird, wann immer es sinnvoll ist, die grundlegende Bourne-Shellverwendet, zu der alle anderen Vertreter der Bourne-Shell-Familie (ash, dash, ksh,pdksh, bash und zsh) abwärtskompatibel sind. Für die Konfiguration des Promptsund in der Einführung konzentrieren wir uns auf die bash.

Kurz gesagt: Wir haben einen Weg gefunden, Ihnen genau das beizubringen, wasSie eigentlich überall anwenden können, egal ob Sie BSD, Linux, Solaris, HP/UX,AIX, VxWorks, QNX oder was auch immer verwenden.

5 Die bash wird vom GNU-Projekt unter der GNU General Public License entwickelt.6 Hiermit ist es möglich, sich direkt in der Shell an einem FTP-Server anzumelden, Interpro-

zesskommunikation mit den Dateien eines FTP-Servers (über Pipes) durchzuführen u.v.m.

212

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 213 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Konsolen 7.4

Unter BSD muss die bash zunächst aus den Packages oder Ports installiert werden.Falls Sie nicht wissen, wie dies zu bewerkstelligen ist, bleiben Sie einfach bei derBourne-Shell. Kapitel 14 demonstriert am Beispiel von OpenBSD, wie man Portsund Packages installiert.

Damit die bash nach der Installation auch als Login-Shell fungieren kann, muss fürsie ein entsprechender Eintrag in der Datei /etc/shells hinterlegt werden. Unter BSD(vergessen Sie nicht, den Pfad anzupassen) kann dies durch den folgenden Befehlbewerkstelligt werden:

# echo "/bin/bash" >>/etc/shells

Listing 7.8 Die bash als Login-Shell zur Verfügung stellen

7.4 Konsolen

Unter Linux, BSD und ähnlichen Systemen steht Ihnen nicht nur eine einzige Kon-sole zur Verfügung. Sofern nicht die grafische Oberfläche läuft, landen Sie nachdem Systemstart normalerweise auf der ersten Konsole. Je nach Konfiguration gibtes meist zwischen fünf und acht, wobei nicht alle immer als eigentliche Shellkonso-le verwendet werden. Auf Konsole fünf oder sieben läuft in der Regel die grafischeOberfläche, und auf einer weiteren Konsole könnten Systemmeldungen angezeigtwerden.

Der Wechsel zwischen den Konsolen erfolgt über die Tastenkombination Strg + Alt Wie wechseln?

+ Funktionstaste, also etwa Strg + Alt + F2 für die zweite Konsole.

7.5 screen

Ein weiteres wichtiges Werkzeug innerhalb einer Shell ist screen. Wird es gestartet,so wird der ganze Bildschirm des Terminals für das Programm verwendet. OhneParameter startet screen einfach nur eine Shell. Was aber ist das Besondere andiesem Programm?

Im Folgenden werden die Begriffe Fenster und Terminal der Einfachheit halber synonymverwendet.

Ganz einfach: screen ermöglicht es Ihnen, parallel auf mehreren virtuellen Termi-nals zu arbeiten, obwohl Sie in Wirklichkeit nur eines verwenden. Nehmen wireinmal an, Sie loggen sich über ein Programm wie SSH oder Telnet auf einem ent-fernten Rechner ein. Dort möchten Sie ein Programm schreiben. Um dies möglichst

213

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 214 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

komfortabel zu erledigen, benötigen Sie zumindest ein Terminal, in dem ein Text-editor läuft, mit dem man den Quellcode editieren kann, und eines, mit dem mandas Programm kompilieren, ausführen und debuggen kann. Mit screen ist genaudas möglich, obwohl Sie sich nur ein einziges Mal einloggen müssen.

Das Programm wird durch einen Aufruf von screen (für eine Shell) oder screen

[programm] gestartet. Screen legt dafür ein erstes virtuelles Terminal an. Anschlie-ßend können Sie in der gestarteten Shell beziehungsweise mit dem gestartetenProgramm wie gewohnt arbeiten.

Nehmen wir das obige Beispiel nun zur Hand und erleichtern wir uns die Arbeit aneinem Programm. Dazu könnte man beispielsweise einen Editor (etwa vi) starten.7

Nun erstellen Sie durch die Tastenkombination Strg + A und anschließendesEin weiteresTerminal Drücken der Taste C (für create) ein neues virtuelles Terminal. Sodann wechselt

screen auch gleich die Ansicht auf das neu erstellte Terminal, das mit einer Shell aufEingaben wartet. Sie könnten darin nun den Compiler oder Ähnliches anwerfen.

Um zwischen den existierenden virtuellen Terminals zu wechseln, nutzen Sie dieTerminalwechsel

Tastenkombination Strg + A und drücken anschließend eine Taste zwischen 0 und9. Damit steht die Möglichkeit zur Verfügung, zwischen insgesamt zehn virtuellenTerminals zu wechseln (sofern Sie tatsächlich so viele erzeugen möchten).

Abbildung 7.1 screen mit Fensterliste

Eine weitere Möglichkeit ist der Weg über die Fensterliste (Window List). In dieFensterliste gelangen Sie über die Tastenkombination Strg + A und anschließendesDrücken der Anführungszeichen-Taste. Mit den Cursortasten wechseln Sie dortzwischen den einzelnen Fenstern (man sieht deren Nummer und Name).

Einzelnen Terminals kann man über die übliche Tastenkombination sowie anschlie-Namen fürTerminals ßendes Drücken der Taste A auch Namen verpassen. Diese erscheinen dann in der

7 Der vi wird in späteren Kapiteln noch genauer behandelt. Sie beenden ihn durch Esc (Wech-sel in den Kommandomodus) und den Befehl »:q«.

214

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 215 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Die Shell anwenden 7.6

Fensterliste. Nach Strg + A und anschließend W erscheint am unteren Fensterrandübrigens eine Namensliste der Terminals. Drückt man dann beispielsweise die 1, solandet man auf dem ersten davon.

Ein Fenster kann durch die Tastenkombination Strg + A und anschließendes Fenster schließen

Drücken von K (kill) beendet werden. Sie können die Fenster auch schließen,indem Sie die Shell und/oder das gestartete Programm (in dieser Shell) verlassen.8

Hat man das letzte Fenster zerstört, wird eine Meldung wie »screen is terminating«auf dem Terminal angezeigt und man befindet sich wieder in der Ausgangsshell.

7.6 Die Shell anwenden

Bei der Anwendung der Shell ist generell zwischen zwei verschiedenen Arten derVerwendung zu unterscheiden. Die erste Möglichkeit besteht darin, sie als Arbeit-sumgebung, also als Benutzerschnittstelle, zu verwenden. Man startet aus ihr herausProgramme, etwa einen Editor, mit denen man dann Arbeiten verrichtet.

Die zweite Verwendungsmöglichkeit besteht in der Programmierung von Shell-skripts. Jede Shell hat dafür ihre eigene Shellskript-Sprache. Wir unterscheidenhierbei primär die Syntax der Bourne-Shell- und der C-Shell-Familie.

Um Ihnen eine Vorstellung vom Unterschied der Syntax beider Varianten zu geben,ist im Folgenden jeweils ein Beispielskript zur Bourne- und zur C-Shell aufgeführt.Beide Shellskripts erledigen die gleiche Aufgabe, sehen aber doch recht unterschied-lich aus. Im Laufe dieses Kapitels werden wir uns mit der Syntax der Bourne-Shellbefassen, wonach Sie dann die meisten Shellskripte des Systems verstehen können.

#!/bin/sh

for file in dateiA dateiB dateiC; docp $file /backup/

done

if [ "$a" = "test" ]then

echo $afi

Listing 7.9 Bourne-Shell-Skript

8 Was natürlich davon abhängt, ob man das Programm direkt durch screen oder erst in einerShell innerhalb eines virtuellen Terminals gestartet hat.

215

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 216 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

#!/bin/csh

foreach file ( dateiA dateiB dateiC )cp $file backup/

end

if ($a == "test") thenecho $a

endif

Listing 7.10 C-Shell-Skript

Shellskripte dienen primär zur Automatisierung von administrativen Arbeitsschritten oderzur Initialisierung und zum Start wichtiger Programme beim Booten des Systems.

Dieses Kapitel wird sich zunächst mit den Grundlagen der Shell befassen. Anschlie-ßend werden wir uns in Kapitel 8 den regulären Ausdrücken und den Tools sed undawk widmen. Außerdem werden wir uns in Kapitel 10 mit Editoren und in Kapitel11 mit Bourne-Shell-Programmierung, also Shellskriptprogrammierung, befassen.

Doch bevor wir mit den Grundlagen beginnen, sei noch etwas zu den Vor- undNachteilen der Shellskriptprogrammierung gesagt.

Im Vergleich zu anderen interpretierten Programmiersprachen wie Perl sind Shell-skripts äußerst langsam. Dies liegt besonders daran, dass einzelne Programme erstaus dem Skript heraus – oft auch mehrmals hintereinander neu – gestartet werdenmüssen, was sehr viel Zeit kostet. Im Vergleich zu hochperformanten Sprachenwie C++, bei denen die Programme direkt als Binärdatei vorliegen und kein Skript-Interpreter vonnöten ist, ist die Shell natürlich noch viel langsamer.

Der Vorteil der Shell liegt allerdings in der Einfachheit und Flexibilität, mit derSkripts erstellt und gewartet werden können. Shellskriptprogrammierung ist einfachund effizient. Da Sie eigentlich nur auf bereits vorhandene Programme zugreifenmüssen, ist es nicht notwendig, komplexe Algorithmen zu implementieren, was inder Regel auch gar nicht möglich ist. Sie sollten in der Shell also keinen Binärbaumimplementieren wollen, dafür kann aber beispielsweise binnen kürzester Zeit undmit einem Bruchteil des Aufwandes, den Sie in Sprachen wie C oder Java benötigenwürden, ein Skript für das Systembackup erstellt werden.

Zudem sind Shellskripts unter Unix-Systemen sehr portabel, zumindest wenn mansich an gewisse Standards hält. Oftmals müssen Sie gar nichts anpassen und wenndoch, dann in der Regel nur Pfade oder Programmparameter. Die Wahrscheinlich-keit, dass ein bash-Skript, das unter Linux geschrieben wurde, auch unter Solarisoder OpenBSD läuft, ist groß.

216

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 217 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

7.7 Grundlagen der Shellnutzung

Der folgende Abschnitt zählt zu den wichtigsten des Buches, da hier die elementarenKenntnisse für die Handhabung der Shell vermittelt werden.

7.7.1 Programme starten

In der Shell werden Programme entweder durch Angabe des Programmnamensoder durch des genauen Pfades zum Programm gestartet.

Beim Programmstart über den Namen durchsucht die Shell ihre interne Liste von RelativePfadangabeVerzeichnissen, die sie in der angegebenen Reihenfolge nach dem jeweiligen Pro-

grammnamen durchsucht. Wird das Programm in einem dieser Verzeichnisse ge-funden, so wird es gestartet.

Diese Verzeichnisliste ist in der Variablen $PATH gespeichert. Sie lernen im weiterenVerlauf des Kapitels noch den Umgang mit solchen Variablen. Um jedoch schoneinmal einen Blick auf den Inhalt dieser Variablen zu werfen, können Sie denfolgenden Befehl ausführen:

$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Listing 7.11 Inhalt der PATH-Variablen ausgeben

7.7.2 Kommandos aneinanderreihen

Unter Unix ist es generell möglich, mehr als nur ein Kommando pro Befehl durch-zuführen. Ein Befehl endet erst, wenn er mit der Eingabetaste an die Shell geschicktwird. Ein Kommando kann von einem anderen einfach durch ein Semikolon (;)getrennt werden.

Stellen Sie sich einmal vor, Sie möchten fünf verschiedene Suchaktionen hinter-einander starten, die aber jeweils eine unbestimmt lange Zeit benötigen werden.Eventuell müssen Sie so stundenlang vor dem Computer sitzen und warten, biseine Suche nach der anderen durchgelaufen ist, um die jeweils folgende zu starten.

Viel einfacher wäre es da, wenn Sie alle Suchkommandos aneinanderreihen undeinfach in einer Stunde mal vorbeischauen könnten, ob der Rechner die Aufgabeninzwischen erledigt hat. So müssen Sie nicht nach jeder einzelnen Suche die nächstestarten.

217

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 218 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Der Operator ;

Bewerkstelligt wird eine solche Reihung von Kommandos im einfachsten Fall durchVerwendung des Trennungsoperators, des Semikolons. Ungeachtet dessen, ob esProbleme mit einem der Kommandos in der Liste gibt, die Sie der Shell überge-ben, laufen alle Kommandos hintereinander ab. Dies bedeutet allerdings auch, dassProbleme entstehen können, wenn ein Befehl auf dem anderen aufbaut.9

$ ls VerZeiCh ; uname ; find / -name Datei/bin/ls: VerZeiCh: No such file or directory // lsLinux // uname/usr/local/share/Datei // find/home/user/Datei

Listing 7.12 Der Trennungsoperator

Der Operator &&

Verwenden Sie hingegen den &&-Operator, so werden die dadurch aneinanderge-reihten Kommandos nur so lange ausgeführt, wie der Ablauf der in der Liste an-gegebenen Kommandos erfolgreich ist. Die Abarbeitung der Kommandoreihe wirdalso abgebrochen, sobald ein Fehler auftritt. Dies ist allerdings nicht ganz exaktformuliert, denn ein Abbruch gilt nur dann als Fehler, wenn ein Programm miteinem entsprechenden Fehlercode endet.

Unter Unix-Systemen gibt jedes Programm beim Beenden einen Wert an die Shellzurück. Dieser Wert ist entweder 0, wenn das Programm erfolgreich ausgeführtwurde, oder ungleich 0, wenn ein Problem auftrat. In der C-Programmierung wirdbeispielsweise durch das return-Schlüsselwort in der Funktion int main(...) einsolcher Wert zurückgegeben.

Wenn wir das obige Beispiel nun erneut aufrufen und dabei die Semikolon-Opera-toren durch &&-Verknüpfungen ersetzen, werden wir feststellen, dass die Komman-doreihe nicht weiter ausgeführt wird, nachdem das ls-Kommando fehlgeschlagenist.

$ ls VerZeiCh && uname && find / -name Datei/bin/ls: VerZeiCh: No such file or directory

Listing 7.13 Der Operator &&

9 Beispielsweise könnte das Kommando, das ein Backup erstellt, fehlschlagen und das Kom-mando, das dieses Backup auf einen Storage-Server übertragen soll, dann eine beschädigteDatei übertragen.

218

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 219 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

Der ||-Operator

Das Gegenstück zum &&-Operator ist der ||-Operator. Anders als bei && werdendie durch || aneinandergereihten Kommandos nur dann ausgeführt, wenn dasvorherige Kommando fehlschlägt. Man verwendet diesen Operator besonders gernezur Ausgabe von Fehlermeldungen und zum Ausführen von »Plan B«.

pgrep X >/dev/null || echo "use 'startx' to start X"

Listing 7.14 Beispielanwendung des ||-Operators

7.7.3 Mehrzeilige Kommandos

Oftmals ist es recht unübersichtlich und unangenehm, sehr lange Kommandolistenoder lange Einzelbefehle zu übergeben. Viel einfacher ist es hingegen, diese aufmehrere Zeilen zu verteilen. Diese mehrzeiligen Kommandos werden mit einemBackslash (\) realisiert.

Im Folgenden übergeben wir find das zweite und dritte Element des Argument-vektors in einer neuen Zeile:

$ find /usr/local/share/doc/usd \-name bc \/usr/share/doc/usd/06.bc/bc

Listing 7.15 Ein Kommando über mehrere Zeilen

7.7.4 Alias, shell-intern oder -extern?

Wie Sie bereits wissen, ist es in der Shell möglich, normale Programme zu starten.Weiterhin gibt es die Möglichkeit, shell-interne Kommandos auszuführen.

Je nach Shell sind verschiedene Kommandos in der Shell selber integriert. Die bash type

enthält beispielsweise ein eigenes kill-Kommando. Wird also in der bash kill

aufgerufen, so wird nicht das Programm aus dem Verzeichnis /bin, sondern dasgleichnamige Shell-Builtin gestartet. Da die Shell-Builtins von Shell zu Shell vari-ieren, können wir Ihnen leider nicht allgemein gültig sagen, welche Kommandosshell-intern sind. Zur Lösung des Problems gibt es jedoch das Kommando type (dasebenfalls ein Shell-Builtin der bash ist10). An type muss lediglich der Name einesKommandos oder Programms als Parameter übergeben werden. Daraufhin gibt ty-pe aus, ob es sich dabei um ein Shell-Builtin oder um ein Programm handelt, dessenabsoluter Pfad dann ausgegeben wird.

10 Auch andere Shells, etwa die Z-Shell, bieten diese Funktionalität.

219

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 220 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

$ type typetype is a shell builtin$ type bashbash is /bin/bash

Listing 7.16 Verwendung des Kommandos type

Es ist zu beachten, dass type – sofern für den übertragenen Parameter sowohl eineProgrammdatei als auch ein Shell-Builtin zur Verfügung stehen – nur ausgeben wird,dass ein Builtin vorhanden ist.

$ type killkill is a shell builtin$ ls /bin/kill/bin/kill

Listing 7.17 kill ist Programm und Builtin

In der Grundfunktionalität identisch, jedoch dank einer Option etwas informa-which

tiver ist das Programm which. Dieses Programm ist in einigen Shells als Builtinvorhanden, existiert aber auch als Programmdatei. which hat die Fähigkeit, überden Parameter -a alle gefundenen Einträge für einen übergebenen Namen auszuge-ben.11 Das bedeutet nichts anderes, als dass, wenn kill als Shell-Builtin vorhandenist, sowohl diese Information als auch der Pfad der Binärdatei in /bin ausgegebenwird. Zudem durchsucht which alle in der Variable $PATH angegebenen Verzeich-nisse nach der entsprechenden Datei. Ist beispielsweise which sowohl in /usr/binals auch in /bin vorhanden, findet es (sofern $PATH entsprechend gesetzt ist) beideDateien.

$ which -a whichwhich: shell built-in command/usr/bin/which

Listing 7.18 Das Programm which

In der Shell kann ein so genanntes Alias angelegt werden. Das ist ein Befehl,Alias?

der einen anderen ersetzt – dazu später mehr. type, which und whence (je nachverwendeter Shell) geben Ihnen auch darüber Auskunft, ob ein Kommando einsolches Alias ist.

$ type lsls is an alias for /bin/ls -aF$ which -a lsls: aliased to /bin/ls -aF

11 Einige type-Implementierungen unterstützen dieses Feature ebenfalls.

220

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 221 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

/bin/ls$ whence -va lsls is an alias for /bin/ls -aFls is /bin/ls

Listing 7.19 Alias-Überprüfung

7.7.5 Shell-Aliase

Shell-Aliase bieten eine Möglichkeit zur Kommandosubstitution. Sie erlauben es,einen neuen Befehlsnamen zu vergeben, der stellvertretend für ein Kommandooder eine Kommandoreihe steht. Ein Alias wird über das gleichnamige Kommandoalias erstellt und modifiziert. Eine Liste der bereits vorhandenen Alias-Einträgekönnen Sie ebenfalls ausgeben lassen.

$ aliascl="cd ..;ls"cll="cd ..;ll"ll="ls -alhoF"ls="/bin/ls -aF"

Listing 7.20 Aktuelle Alias-Liste anzeigen

Der Vorteil liegt auf der Hand: Wenn Sie beispielsweise ständig das Kommando ls

-laFh ausführen und sich dafür das Alias ll erstellen, sparen Sie Zeit und vertippensich dabei nicht. Zudem können einem Alias auch Parameter übergeben werden.Dem Alias ll können also auch ein Dateiname und weitere Parameter für dasls-Programm übergeben werden.

$ ll ../eil2/buch.ps-rw------- 1 sw sw 37.7M Feb 20 13:55 ../eil2/buch.ps

Listing 7.21 der Alias ll

Ein Alias erstellen und modifizieren

Ein Alias erstellt man, indem man den neuen Befehlsnamen sowie den Befehl, derhinter diesem verborgen sein soll, dem alias-Kommando übergibt. Erstellen wirbeispielsweise einmal ein Alias, um den SSH-Login auf einem Host zu automatisie-ren:

$ alias ssh_milk='export TERM=xterm;ssh [email protected]'

Listing 7.22 Alias verwenden

221

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 222 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Ein Alias kann modifiziert werden, indem ihm einfach erneut ein (anderer) Befehl zugewie-sen wird.

Ein Alias löschen

Manchmal möchte man eine erstelltes Alias auch wieder löschen. Dies wird ganzeinfach dadurch bewerkstelligt, dass man dem Kommando unalias den entspre-chenden Namen des Alias übergibt.

$ alias system="uname -sr"$ systemOpenBSD 3.6$ unalias system$ systemzsh: command not found: system

Listing 7.23 Das unalias-Kommando

7.7.6 Verzeichniswechsel

Im letzten Kapitel haben Sie bereits die wichtigsten Grundlagen kennengelernt,um sich frei durch den Verzeichnisbaum zu bewegen, sprich: Verzeichnisse zuwechseln (cd), das aktuelle Arbeitsverzeichnis auszugeben (pwd) und den Inhalt vonVerzeichnissen auszugeben (ls).

Im Folgenden wollen wir uns mit einigen teilweise konfigurationsspezifischen Mög-lichkeiten beschäftigen, die Ihnen, was den Verzeichniswechsel anbelangt, die tägli-che Tipperei erleichtern werden. Wahrscheinlich werden Sie auf diese Arbeitsweise,nachdem Sie sich erst einmal an selbige gewöhnt haben, nicht wieder verzichtenwollen.

Die ersten zwei Tipps (cd . und cd ..) kennen Sie bereits aus dem vorherigenKapitel – sie werden hier jedoch der Vollständigkeit halber ebenfalls erläutert.

Der Punkt (.) gibt das aktuelle Arbeitsverzeichnis an. Sie benötigen ihn entwe-» . «

der, wenn Sie in das Verzeichnis wechseln wollen, in dem Sie sich momentanbefinden12 (optional, wenn Sie auf eine Datei im aktuellen Verzeichnis zugreifenmöchten), aber vor allen Dingen dann, wenn Sie ein Skript oder Programm imArbeitsverzeichnis ausführen möchten.

12 Nun ... zumindest ist dies möglich – der Sinn solch einer Aktion soll an dieser Stelle nichtdiskutiert werden.

222

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 223 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

$ pwd/home/user$ cd .$ pwd/home/user$ ./script.sh...

Listing 7.24 Ein Skript im aktuellen Verzeichnis ausführen

Verwenden Sie hingegen zwei Punkte, so stehen diese stellvertretend für das nächst- » .. «

höhere Verzeichnis in der Hierarchie. Dies bedeutet, dass Sie, wenn Sie sich bei-spielsweise im Verzeichnis /usr/local/bin befinden, mittels cd .. in das Verzeichnis/usr/local wechseln können. Diese zwei Punkte können auch durch Slashes mehr-fach verkettet werden.

$ pwd/usr/local/bin$ cd ../../include$ pwd/usr/include

Listing 7.25 Verzeichnisebene wechseln mit »..«

Geben Sie die zwei Zeichen ˜- beim Verzeichniswechsel an, so wechselt die Shell » ˜- «

anschließend wieder in das Verzeichnis, in dem Sie sich vor dem letzten Verzeich-niswechsel befanden. Hier ein verdeutlichendes Beispiel, denn beim Zuschauenlernt man ja schließlich am besten:

$ pwd/usr/local/bin$ cd /etc$ pwd/etc$ cd ˜-$ pwd/usr/local/bin

Listing 7.26 Ins vorherige Verzeichnis zurückkehren

Geben Sie für den Verzeichniswechsel eine Tilde (˜) an, so wechseln Sie in Ihr Hei- » ˜ «

matverzeichnis. Verwendet man hingegen die Tilde in Verbindung mit einem Benut-zernamen, so wechselt die Shell in das Heimatverzeichnis des jeweiligen Benutzers,

223

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 224 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

was natürlich nur funktioniert, wenn man auch die entsprechenden Zugriffsrechtefür diese Aktion hat.13

Wechseln Sie mit der Variable $HOME das Verzeichnis, so kommen Sie – Sie werden$HOME und » «

es bereits ahnen – ebenfalls in das eigene Heimatverzeichnis. Die Verwendung der$HOME-Variable ist allerdings nur möglich, wenn diese auch (korrekt) gesetzt ist, wasbis auf einige Ausnahmesituationen immer der Fall sein sollte.

Derselbe Wechsel in das Heimatverzeichnis ist möglich, indem man dem Komman-do cd einfach gar keinen Parameter übergibt.

$ pwd/etc$ cd $HOME; pwd/home/user$ cd /etc; cd; pwd/home/user

Listing 7.27 Trautes Heim

7.7.7 echo

Beschäftigen wir uns nun mit einem grundlegenden Programm, das in den meis-ten Shells allerdings auch als Builtin vorhanden ist. Die Rede ist von echo. DiesesKommando gibt den ihm übergebenen Text auf der Konsole aus und ist besondersnützlich in der Shellskriptprogrammierung, etwa zum Einsehen von Variablenwer-ten.

Wir benötigen echo noch sehr oft im weiteren Verlauf des Kapitels, u. a. bei derKommandosubstitution und wie bereits erwähnt bei der Shellskriptprogrammie-rung. Die Verwendung des Kommandos ist denkbar einfach: Der auszugebendeText wird als Parameter übergeben und sodann von echo ausgegeben.

$ echo "Hallo, Welt\!"Hallo, Welt!

Listing 7.28 Das Kommando echo

Wie Ihnen vielleicht aufgefallen ist, gibt es hierbei doch etwas zu beachten: Ei-nige Sonderzeichen, wie im obigen Beispiel das Ausrufezeichen, müssen durchEscape-Sequenzen eingeleitet werden, da diese Zeichen ansonsten andere Aktioneneinleiten. Später werden Sie einige solcher Sonderzeichen kennenlernen, etwa dasDollarzeichen ($), das für Variablen Verwendung findet.

13 Dazu muss sowohl das Lese- als auch das Ausführrecht gegeben sein, also (mindestens) r-x.

224

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 225 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

Zunächst einmal werden wir solche Probleme durch Hochkommata umgehen. Alles,was Sie in Hochkommata stellen, wird von der Shell nicht weiter interpretiert, echogibt es dann einfach aus.

$ echo 'Hallo, Welt!'Hallo, Welt!

Listing 7.29 echo in Verwendung mit Hochkommas

7.7.8 Shellvariablen

Ein wichtiges Werkzeug im Umgang mit der Shell, insbesondere bei der Skriptpro-grammierung, sind Variablen. Einer Variablen können Sie einen Wert zuweisen, aufden Sie später wieder (und beliebig oft) zugreifen können. Solch ein zugewiesenerWert kann eine Zahl, die Ausgabe eines ganzen Programms oder ein String, alsoeine Zeichenkette wie »Hallo, Welt!«, sein.

Variablen werden über einen wählbaren Namen vergeben. Nehmen wir einmal an, Zuweisung vonWertender Name eines glorreichen Getiers, nämlich Felix, solle in einer Variable gespei-

chert werden. Es wäre beispielsweise sinnvoll, dieser Variable den Namen »KATZE«oder »KATZENNAME« zu geben. In der Regel schreibt man Shellvariablen übrigensin Großbuchstaben; dies ist jedoch nicht zwingend notwendig! Die Zuweisung er-folgt in der Familie der Bourne-Shell14 durch ein Gleichheitszeichen:

$ KATZE=Felix

Listing 7.30 Der Variable KATZE den Wert »Felix« zuweisen

Durch eine erneute Zuweisung eines Wertes wird der alte Variablenwert überschrieben.

Um den Wert einer Variablen einzusehen, kann unter anderem echo verwendet Abfrage von Werten

werden. Die Shell übergibt echo in diesem Fall den Inhalt der angegebenen Varia-blen, so dass echo nicht mitbekommt, dass es einen Variableninhalt ausgibt. Diebeiden folgenden Befehle bewirken folglich dasselbe:

$ echo FelixFelix$ echo $KATZEFelix

Listing 7.31 echo mit und ohne Variable

14 In der Familie der C-Shell muss hierzu das Shell-Builtin set verwendet werden.

225

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 226 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Beachten Sie, dass beim Zugriff auf eine Variable ein Dollarzeichen ($) vor denNamen der Variablen gesetzt werden muss, sonst interpretiert die Shell diesen alsString:

$ echo KATZEKATZE

Listing 7.32 Fehler: Dollarzeichen vergessen

Löschen von Variablen

Um eine Variable wieder zu löschen, muss deren Name nur dem unset-Kommandoübergeben werden.

$ echo $KATZEFelix$ unset KATZE$ echo $KATZE$

Listing 7.33 Das Kommando unset

Variablen in Text einbetten und ausgeben

Um eine Variable in den Text einer Ausgabe (oder in den Wert einer anderenVariablen) einzubauen, gibt es zwei Herangehensweisen.

Die erste Möglichkeit besteht darin, die Variable, wie bereits mit echo gezeigt, inder Form $NAME zu verwenden, was fast immer problemlos funktioniert.

$ echo "Herzlich willkommen, $KATZE\!"Herzlich willkommen, Felix!

Listing 7.34 Variable im Text

Gehen wir nun davon aus, dass wir neben der Variable KATZE noch eine zweiteVariable mit dem Namen KATZE2 benutzen. Für den Fall, dass Sie den Wert vonKATZE und direkt danach eine »2« ausgeben möchten, können Sie nun nicht mehrdie soeben besprochene Variante verwenden, sondern müssen den Variablennamenin geschweifte Klammern setzen. Das ist nötig, um dessen Anfang und Ende genauzu markieren.

$ KATZE2="Mauzi"$ echo "Herzlich willkommen, $KATZE2\!"Herzlich willkommen, Mauzi!$ echo "Herzlich willkommen, ${KATZE}2\!"Herzlich willkommen, Felix2!

Listing 7.35 Variable im Text

226

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 227 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

Mehr zur Einbettung von Variablenwerten in Text oder andere Variablenwerteerfahren Sie in Abschnitt 7.7.9, »Kommandosubstitution«.

Vorhandene Variablen anzeigen lassen

Alle aktuell vorhandenen Variablen sowie die Werte, die diesen zugewiesen wur-den, können Sie mittels des set-Kommandos einsehen. Dabei werden sowohl lokaleals auch globale Variablen angezeigt (mehr dazu im nächsten Absatz).15

$ set...XCURSOR_SIZE=""XCURSOR_THEME=""XYRIA=/home/swendzel/projekte/xyria_ZSH_NAME=zshZSH_VERSION=4.2.1_=setaliases...

Listing 7.36 set, ausgeführt in der Z-Shell

Variablen einlesen

Selbstverständlich kann man auch den Wert einer Variablen von der Tastatur einle-sen lassen. Dies wird über das Builtin read bewerkstelligt. Man übergibt read denNamen der gewünschten Variablen (ohne das Dollarzeichen davor). Die Eingabewird durch die Eingabetaste beendet.

$ read NameFelix$ echo $NameFelix

Listing 7.37 read verwenden

Einige Shells unterstützten weitere Parameter für read. So kann etwa mit dem Parameter -nANZAHL die Anzahl der einzulesenden Zeichen angegeben werden. Mit -s wird hingegendie Eingabe des Benutzers nicht angezeigt. Mit read -s -n 8 pw würde also ein maximalachtstelliger Wert in die Variable »pw« eingelesen und die eingegebenen Zeichen nichtangezeigt.

15 In einigen Shells gibt set noch zusätzliche Informationen, etwa Shellfunktionen, aus.

227

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 228 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Schreibgeschützte Variablen

Variablen können mit einem Schreibschutz versehen werden. Damit lässt sich si-cherstellen, dass ihr Wert nicht aus Versehen wieder verändert wird. Hierzu wirddem readonly-Kommando einfach der Name der jeweiligen Variablen übergeben.Übergeben Sie readonly keinen Parameter, so erhalten Sie eine Liste aller derzeitschreibgeschützten Variablen.

Globale und lokale Variablen

Eben sprachen wir bereits an, dass es sowohl lokale als auch globale Variablen gibt.Wir wollen Ihnen selbstverständlich nicht den Unterschied zwischen diesen beidenVariablenarten vorenthalten.

Eine globale Variable wird im Gegensatz zu einer lokalen an Unterprogrammeübergeben. Viele Programme nutzen dieses Feature, etwa das Programm BitchX,ein freier IRC-Client. Dieser greift für die Konfiguration der IRC-Verbindung aufglobale Variablen zurück:

IRCNAME="Steffen W"IRCNICK=cdp_xeIRCPORT=6667IRCSERVER=milk.sun

Listing 7.38 Globale Variablen für BitchX

Würden Sie nun das Programm bitchx aus einer Shell mit diesen globalen Variablenstarten, so würde es deren Werte verwenden.

Um sich eine Liste der globalen Variablen, die aktuell in der Shell geladen sind,export

anzeigen zu lassen, müssen Sie nur das Kommando export aufrufen.

Mittels export können Sie übrigens auch globale Variablen erstellen. Sie gehenGlobale Variablenerzeugen dabei wie bei der Erstellung von lokalen Variablen vor, nur dass Sie den Erzeu-

gungsbefehl dem Kommando export übergeben.

$ export KATZE=Felix$ export | grep KATZEKATZE=Felix

Listing 7.39 Erzeugen einer globalen Variablen

Auch globale Variablen können mit dem Kommando unset wieder gelöscht werden.

228

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 229 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

Die wichtigsten globalen Variablen

Es gibt einige globale Variable, die für die Nutzung des Unix-Betriebssystems äu-ßerst wichtig sind und daher bekannt sein sollten. Wir haben sie sowie ihre Be-deutung in einer kleinen Tabelle zusammengefasst. Einige spezielle Variable wie $?

werden wir im Verlauf des Kapitels (nämlich bei der Shellskriptprogrammierung)noch genauer besprechen.

Variable Bedeutung

$HOME Heimatverzeichnis des Benutzers

$LOGNAME und teilweiseauch $USER

Loginname des Benutzers

$PATH Liste von Verzeichnissen, die nach einer relativ angegebe-nen, ausführbaren Datei durchsucht werden sollen (siehe Seite217).

$PS1 bis $PS4 Kommandozeilen-Prompt (detailliert beschrieben im folgen-den Abschnitt)

$RPS1 Prompt am rechten Konsolenrand in der Z-Shell

$TERM verwendetes Terminal, z. B. »xterm-color«

$0 Name des aktuellen Prozesses

$$ aktuelle Prozess-ID

$n der einem Skript oder einer Skriptfunktion übergebene Para-meter Nummer »n«

$# Gesamtzahl der an eine Funktion oder ein Skript übergebenenParameter

$? Rückgabewert des zuletzt in dieser Shell beendeten Prozesses

$* und $@ alle dem Skript oder einer Funktion übergebenen Parameter

$! Prozess-ID des letzten Hintergrundprozesses

$_ letzter Parameter des zuletzt ausgeführten Befehls

Tabelle 7.1 Wichtige globale Variablen

Der Shell-Prompt

Eine Shell verfügt über einen Standardprompt und einige Nebenprompts. Doch wasist eigentlich solch ein Prompt? Im Prinzip ist ein Prompt eine Ausgabe von Textzei-chen, die Sie zur Eingabe eines Kommandos auffordert. Je nach verwendeter Shellund der persönlichen Konfiguration der entsprechenden Variablen kann solch einPrompt ganz unterschiedlich aussehen. Hier im Buch haben wir meistens user$ und$ als Benutzerprompt, sowie root# und # als Prompt des Superusers verwendet,was typisch für eine Unix-Shell ist.

229

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 230 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Jeder Prompt wird über eine bestimmte Variable festgelegt. Der primäre Promptnennt sich PS1, diesen sehen Sie standardmäßig. Versuchen Sie einmal, diesenPrompt zu löschen mit

$ unset PS1

Listing 7.40

Sie werden feststellen, dass nun jegliche Eingabeaufforderung fehlt. Sie könnenallerdings nach wie vor Befehle ausführen. Um das Prompt wiederherzustellen,können Sie die Variable PS1 wieder global setzen – eine passende Übung zur frischerlernten Variablenbenutzung.16 Mit dem Prompt lassen sich allerdings noch einigeandere Spielereien anstellen. Beispielsweise können Sie, um sich die Arbeit zuerleichtern, das aktuelle Arbeitsverzeichnis oder den Benutzernamen, mit dem Siederzeit arbeiten, anzeigen lassen.

Dazu müssen Sie sogenannte Escape-Sequenzen in die PS1-Variable einbauen. EineEscape-Sequenz ist einfach eine Buchstabenfolge (oder ein einzelner Buchstabe),die durch einen vorangestellten Backslash auf eine bestimmte Art von der Shellinterpretiert wird. Die Escape-Sequenzen für die Prompt-Konfiguration sind aller-dings von Shell zu Shell verschieden, weshalb wir uns im Folgenden auf die bash

konzentrieren.

Sequenz Wirkung

\a Ausgabe eines Tons im PC-Speaker (nervt)

\d Zeigt das Datum an.

\e Escape-Zeichen

\h der Hostname (z. B. ’rechner’)

\H FQDN-Hostname (z. B. ’rechner.netzwerk.edu’)

\j Anzahl der Hintergrundprozesse

\l Name des Terminals

\n neue Zeile (Prompts können tatsächlich über mehrere Zeilen ver-teilt werden)

\r Carriage-Return

\s Name der Shell

\t Zeit im 24-Stunden-Format

\T Zeit im 12-Stunden-Format

Tabelle 7.2 Escape-Sequenzen

16 Hier eine mögliche Lösung: export PS1="\$ "

230

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 231 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

Sequenz Wirkung

\@ Zeit im AM/PM-Format

\u Name des Benutzers

\v Version der bash

\V \v, jedoch mit Patch-Level

\w Gibt das Arbeitsverzeichnis an.

\W Gibt nur das aktuelle Arbeitsverzeichnis ohne höhere Ebenen derVerzeichnishierarchie an.

\# Anzahl der bereits aufgerufenen Kommandos während der Shell-Session des Terminals

\$ Ist man als normaler Benutzer eingeloggt, so erscheint ein Dol-larzeichen, root bekommt eine Raute (#) zu sehen.

\\ ein Backslash

Tabelle 7.2 Escape-Sequenzen (Forts.)

Es existieren noch weitere Escape-Sequenzen, beispielsweise zur Festsetzung der Für besondersInteressierte ...farblichen Hervorhebung. Diese werden im Rahmen dieses Buches jedoch nicht

behandelt, da sie nicht auf allen Terminals funktionieren.

Einige Distributionen und sehr viele Benutzer verwenden die Variante Benut-

zer@Host Verzeichnis$, die ein an dieser Stelle besonders gut passendes Beispielzur Nutzung von Escape-Sequenzen darstellt.

user$ PS1="\u@\h \w\$"swendzel@deb-sid /usr$ ls...

Listing 7.41 Setzung des bash-Prompts mit Escape-Sequenzen

Neben dem Standard-Prompt $PS1 gibt es noch weitere Prompts: Weitere Prompts

Zum einen sind dies die Eingabeaufforderungen zur Vervollständigung von Shellan- $PS2..4

weisungen (hiermit sind beispielsweise if-Anweisungen gemeint, die Sie in derShellskriptprogrammierung kennenlernen werden). Sie werden (je nach Shell) mit$PS2 ... $PS4 bezeichnet. Da diese Prompts fast nie verwendet werden, behalten diemeisten Benutzer ihre Standardkonfiguration bei.

Außerdem gibt es in der Z-Shell den $RPS1-Prompt. Dieser Prompt ist ein rechtssei- $RPS1

tiger Prompt, den man beispielsweise sehr gut nutzen kann, um sich Uhrzeit undDatum ausgeben zu lassen.

231

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 232 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

7.7.9 Kommandosubstitution

Die Kommandosubstitution bietet Ihnen – besonders in der Shellskriptprogrammie-rung – die Möglichkeit, durch etwas Einfaches etwas sehr Nützliches zu erreichen.Sie erlaubt es Ihnen nämlich, die Ausgaben eines Programms direkt in einer Variablezu speichern oder als Parameter für andere Programme zu verwenden.

Erst einmal ganz einfach ...

Für diese Kommandosubstitution werden spezifische Einbettungszeichen verwen-det, die sogenannten Backticks17. Alles, was Sie innerhalb dieser Zeichen schreiben,wird von der Shell als Befehl interpretiert. Dessen Ausgabe wird für alles Weitere,also etwa für die Zuweisung an eine Variable, verwendet.

Schauen wir uns die Anwendung der Backticks einmal an. Im folgenden Beispielweisen wir der Variablen $OUTPUT die Ausgabe des ls-Befehls zu.

user$ OUTPUT=`ls`user$ echo $OUTPUTCVSMakefileTODOZEITPLANanhg_komref.auxanhg_komref.texbuch.dvibuch.idxbuch.ilgbuch.ind...

Listing 7.42 Kommandosubstitution

Wie Sie sehen, kann die Variable sofort weiterverwendet werden, indem man siewie im Beispiel einem Programm wie echo übergibt. Vielleicht fragen Sie sichbereits, ob man eine Kommandosubstitution nicht auch direkt ohne Zwischenspei-cherung in einer Variable an einen anderen Befehl übergeben kann. Mit dieserVermutung haben Sie Recht, wie das folgende Listing zeigt.

Das ls-Programm (siehe Anhang B, »Kommandoreferenz«, auf Seite 1220) soll unsDetailinformationen zu den einzelnen Dateien des Verzeichnisses ausgeben. Dieseübergeben wir jedoch über eine Kommandosubstitution. Dies ist nicht sonderlich

17 Auf einer PC-Tastatur drückt man für diese Zeichen Shift und ‘ (Backtick, das ist die Tasteneben ?\)

232

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 233 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Grundlagen der Shellnutzung 7.7

sinnvoll, verdeutlicht aber sehr gut die Funktionsweise der direkten Kommando-substitution.

user$ ls -l `ls`-rw------- 1 cdp_xe cdp_xe 707 Mar 15 15:45 Makefile-rw------- 1 cdp_xe cdp_xe 289 Feb 20 14:10 TODO-rw------- 1 cdp_xe cdp_xe 1809 Mar 17 14:16 ZEITPLAN-rw------- 1 cdp_xe cdp_xe 2076 Mar 17 19:23 anhgkf.tex-rw------- 1 cdp_xe cdp_xe 227844 Mar 17 19:24 buch.dvi-rw------- 1 cdp_xe cdp_xe 2126 Mar 17 19:24 buch.idx-rw------- 1 cdp_xe cdp_xe 413 Mar 17 19:24 buch.ilg...

Listing 7.43 Direkte Kommandosubstitution

Dieser Aufruf ist nicht mit einem bloßen Aufruf von ls -l gleichzusetzen, da hierVerzeichnisdateien die Ausgabe eines gesamten Verzeichnisinhalts bewirken. Sol-che feinen Unterschiede sollten bei der Kommandosubstitution generell bedachtwerden. Da Sie jedoch schon einige Erfahrung mit Shells haben müssen, um über-haupt an solche Unterschiede zu denken, hilft nur eines: Spielen Sie mit der Shell!

Beachten Sie, dass die Kommandosubstitution nur die Standardausgabe eines Befehls liefert– Fehlermeldungen werden über die Standardfehlerausgabe geliefert und bleiben daherunentdeckt!

Diese Kommandosubstitution ist leider nicht immer ohne Weiteres möglich. Diesgilt auch für die Verwendung von Variablen. Es gibt hier feine, aber entscheiden-de Unterschiede. Es gibt nämlich verschiedene Arten, wie Text oder Anweisungeneingeschlossen werden können: in Hochkommata, Backticks oder Anführungszei-chen. Jede dieser drei Möglichkeiten hat andere Folgen. Nehmen wir im Folgendeneinmal an, der Variablen $VAR wurde der Text »hallo« zugewiesen.

In Anführungszeichen werden sowohl Variablenwerte als auch Kommandosubsti- Anführungs-zeichentutionen umgesetzt.

$ echo "$VAR `pwd`"hallo /home/cdp_xe/books/kompendium

Listing 7.44 Anführungszeichen

In Backticks werden Kommandosubstitutionen eingeschlossen. Variablenwerte wer- Backticks

den hierbei als Kommando interpretiert.

233

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 234 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

$ echo `$VAR` `pwd`zsh: command not found: hallo/home/cdp_xe/books/kompendium

Listing 7.45 Backticks

Als Alternative zu den Backticks kann auch die Notation $( Kommando ) genutztwerden.

In Hochkommata sind sowohl Variablenangaben als auch explizit in Backticks an-Hochkommata

gegebene Kommandosubstitutionen wirkungslos.

$ echo '$VAR `pwd`'$VAR `pwd`

Listing 7.46 Hochkommata

7.8 Ein- und Ausgabeumlenkung

Normalerweise funktioniert das Arbeiten mit einem Unix-Prozess folgendermaßen:Sie geben die gewünschten Befehle über die Tastatur ein, und der Prozess führt sieaus. Dabei gibt der Prozess die Ergebnisse der Arbeit auf dem Bildschirm aus. Mitder Ein- und Ausgabeumlenkung, einem mächtigen Werkzeug in der Shell, lässtsich dies ändern.

Jedem Prozess sind unter Unix standardmäßig drei Deskriptoren zugewiesen. Hier-über können Ein- und Ausgabe des Programms erfolgen. Ein Deskriptor stellt fürein Programm eine Möglichkeit dar, zu lesen und zu schreiben. Ob dabei in eineDatei oder auf den Bildschirm geschrieben wird, ist egal.18 Deskriptoren sind fürein Programm vollständig transparent.

Doch nun zurück zu den erwähnten drei Standarddeskriptoren. Dies sind:

� Standardeingabe (0, STDIN)

� Standardausgabe (1, STDOUT)

� Standardfehlerausgabe (2, STDERR)

Die Zahlenwerte in den Klammern sind die dem Deskriptor zugewiesenen Num-mern, mit denen Sie in der Shell arbeiten können. Tippen Sie also z. B. »1« für dieStandardausgabe, die mit STDOUT bezeichnet wird.

18 Eigentlich kann man nicht sagen, dass »ein Programm auf den Bildschirm schreibt«. DasProgramm schreibt die Daten über Deskriptoren, den Rest erledigt der Kernel (s. Kapitel 5).

234

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 235 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Ein- und Ausgabeumlenkung 7.8

7.8.1 Ausgabeumlenkung

Fast jedes Programm gibt Daten auf dem Monitor aus. Diese können, wie bereitserwähnt, umgeleitet werden. Doch wohin? Unter Unix-Systemen erfolgt die Um-leitung in Dateien.19 Dadurch kann beispielsweise die Ausgabe eines Programmsprotokolliert oder später mit einem Editor bearbeitet werden.

Nehmen wir einmal an, die Ausgabe des ls-Programms solle in die Datei list umge-leitet werden. Dazu muss lediglich folgender Befehl ausgeführt werden:

user$ ls 1> list

Listing 7.47 Eine Ausgabeumlenkung

Die »1« vor dem Größer-als-Zeichen dient dabei zur Angabe des Deskriptors, hieralso STDOUT. Das Größer-als-Zeichen selbst wird von der Shell als Befehl zur Um-lenkung der Ausgabe interpretiert. Mit cat list können Sie sich die Ausgabe desls-Programmes ansehen.

Eine Ausgabeumlenkung erfolgt durch ein Größer-als-Zeichen (>), wobei die Nummer desDeskriptors (entweder »1« für STDOUT oder »2« für STDERR) vorangestellt werden soll-te. Wird keine Nummer vorangestellt, wird automatisch die Standardausgabe (STDOUT)verwendet.

7.8.2 Fehlerumlenkung

Gäbe es im obigen Beispiel einen Fehler, etwa weil die Zugriffsberechtigung dasAnzeigen des Dateiinhalts eines bestimmten Verzeichnisses verböte, so erschieneauf dem Bildschirm eine Fehlermeldung. Doch auch diese kann umgelenkt werden.

user$ ls /rootls: root: Permission denieduser$ ls /root 2>log

user$ cat logls: root: Permission denied

Listing 7.48 Eine Umlenkung der Fehlerausgabe

Wie Sie sehen, ist auch die Umlenkung der Fehlerausgabe sehr einfach zu bewerk-stelligen. Ein spezieller Trick zur Unterdrückung von Fehlermeldungen bietet sich

19 Später werden Sie Pipes kennenlernen, die ähnliche Möglichkeiten wie die Ein- und Aus-gabeumlenkung bieten.

235

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 236 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

übrigens durch die Umlenkung der Fehlerausgabe auf den »Mülleimer« /dev/null.Diese Technik ist besonders dann hilfreich, wenn man als normaler Benutzer eineDateisuche mit find im ganzen Dateisystem startet – der Zugriff auf viele Ver-zeichnisse wird Ihnen dabei nicht gestattet, und der Bildschirm wird mit Fehler-meldungen übersät sein. Durch die Umlenkung der Fehlerausgabe nach /dev/nullkann Ihnen dies erspart bleiben. Parallel dazu können Sie – denn auch dies istmöglich – die Standardausgabe in eine Datei umlenken, um die Suchergebnisse zuprotokollieren:

user$ find / -name Dateiname >Ergebnisse 2>/dev/null

Listing 7.49 Unterdrückung von Fehlern

7.8.3 Die Ausgabe an eine Umlenkung anhängen

Manchmal möchte man sowohl die Standardausgabe als auch die Fehlerausgabeprotokollieren – und dies in der korrekten Reihenfolge. In diesem Fall bietet dieUnix-Shell noch ein weiteres Feature, nämlich das Anhängen einer Umlenkung aneine andere.

Dabei wird hinter die Anweisung zur Ausgabeumlenkung ein kaufmännisches Und(&) gesetzt, dem unmittelbar, also ohne Leerzeichen, die Nummer des Deskriptorsfolgen muss, an dessen Umlenkung die Ausgabe angehängt werden soll, etwa 2>&1.

user$ ls /home /root >log 2>&1user$ cat logls: root: Permission denied/home:Makefile

backupcdp_xe

/root:

Listing 7.50 Anhängen einer Umlenkung

7.8.4 Eine Ausgabe in eine bestehende Datei umlenken

Manchmal kommt es vor, dass eine Ausgabe in eine Datei umgelenkt werden soll, inder sich bereits ein Inhalt befindet, der jedoch nicht überschrieben werden soll. Umdieses Problem zu lösen, hängen Sie die Ausgabe an den bestehenden Dateiinhaltan. Dies wird mit zwei Größer-als-Zeichen realisiert:

236

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 237 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Ein- und Ausgabeumlenkung 7.8

$ uname -a >log$ who am i >>log$ cat logOpenBSD eygo.sun 3.6 EYGO#0 i386cdp_xe ttyp7 Mar 19 14:30

Listing 7.51 Text anhängen

7.8.5 Eingabeumlenkung

In den meisten Fällen gibt man Befehle und Eingaben für Prozesse über die Tastaturein – dies lässt sich ändern. Falls Sie sich fragen, was Ihnen dieses Feature überhauptbringen soll, sei gesagt, dass der richtige Nutzwert sich erst in der Programmierungvon Shellskripten zeigt. Aber auch im Alltag kann die Eingabeumlenkung hilfreichsein, hierzu ein kleines Beispiel:

Ein Programm soll jeden Tag zwanzigmal ausgeführt werden. Das Programm benö-tigt dabei verschiedene Eingaben, nämlich den Namen des Anwenders und dessenUser-ID. Da Sie diese Daten nicht jeden Tag zwanzigmal erneut eingeben möchten,können Sie sich durch eine Eingabeumlenkung und die somit vorgenommene Au-tomatisierung dieser Eingabe Arbeit ersparen. Zur Demonstration des Beispiels sollein kleines Shellskript dienen, das eben genau diese Eingaben, also den Benutzer-namen und die User-ID, abfragt (gute Programme bekommen dies natürlich alleinheraus).

$ ./tool.shBenutzername: Steffen WendzelUser-ID: 1000Danke für Ihre Anmeldung, Steffen Wendzel (1000).

Listing 7.52 Ein Aufruf von tool.sh

Nun lenken wir die benötigten Eingabedaten einfach in eine Datei um. Dabei solltenSie wissen, dass die Zeichensequenz \n dem Drücken der Eingabetaste entsprichtund in der Ausgabe eine neue Zeile einleitet. Durch den Parameter -e werden dieEscape-Sequenzen entsprechend interpretiert. Bei der Z-Shell kann dieser Parameteraber auch weggelassen werden.

$ echo -e "Steffen Wendzel\n1000\n" > Eingabe$ cat EingabeSteffen Wendzel1000

$

Listing 7.53 Erstellen einer Datei mit den typischen Eingaben

237

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 238 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Die Eingabeumlenkung funktioniert anders als die Ausgabeumlenkung mit einemKleiner-als-Zeichen (<). Wir lenken nun die Datei Eingabe in das tool.sh-Skript umund müssen so nie wieder selbst die Eingabe tätigen.

$ ./tool.sh <EingabeBenutzername: User-ID: Danke für Ihre Anmeldung,Steffen Wendzel (1000).

Listing 7.54 Eingabeumlenkung

7.9 Pipes

Eine ähnliche Möglichkeit wie die Ein- und Ausgabeumlenkung bieten sogenanntePipes. Pipes stellen eine Art der Interprozess-Kommunikation dar, für die es in die-sem Buch ein eigenes Kapitel (26, »Prozesse und IPC«) gibt. In diesem Abschnittbeschäftigen wir uns ausschließlich mit dem Nutzen und der Anwendung von Pipesin der Shell.

Eine Shell kann als eine Art Kombination aus Aus- und Eingabeumlenkung an-gesehen werden. Dabei werden die Ausgaben eines Programms an ein anderesweitergeleitet, das diese Ausgaben als Eingabe verwendet. Im Gegensatz zur Ausga-beumlenkung wird die Ausgabe eines Programms also nicht in eine reguläre Dateigeschrieben, sondern direkt an ein Programm weitergeleitet. Und im Gegensatz zurEingabeumlenkung kommt die Eingabe nicht von einer regulären Datei, sonderndirekt von einem anderen Programm.

Zur Verdeutlichung dieser Funktionalität soll ein Beispiel dienen, denn daran lerntman solcherlei Wissen am einfachsten. Um dieses Beispiel zu verstehen, müssen Siewissen, dass das Programm more eine Datei seitenweise auf dem Monitor ausgibt.

Wir möchten in diesem Beispiel erreichen, dass die Ausgaben des Programms ls

seitenweise auf dem Bildschirm erscheinen. Dazu sollen die Ausgaben von ls anmore weitergeleitet werden.

Diese Weiterleitung erfolgt mit einem Pipe-Operator (|). Dieser Strich wird zwi-schen die beiden Programme gesetzt, was dann folgendermaßen eingegeben wird:

user$ ls /usr/bin | moreMaila2paddftinfoaddr2lineafmtoditafslogapply

238

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 239 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Pipes 7.9

aproposar...

Listing 7.55 Pipe zwischen ls und more

Probieren Sie es einmal aus – eine Seite weiter »blättern« Sie durch Drücken derLeertaste.

Es ist übrigens auch möglich, mehrere Pipes in einem Befehl zu verwenden. Dies Mehrere Pipes

könnte dann beispielsweise so aussehen:

user$ ls -l | awk '{ print $5 }' | sort | uniq

Listing 7.56 Mehrere Pipes

Die Standardfehlerausgabe (STDERR) wird nicht über Pipes weitergeleitet. Dies kannman jedoch umgehen, indem man STDERR an STDOUT anhängt: ProgrammA 2>&1 |ProgrammB

7.9.1 Duplizieren der Ausgabe mit tee

Manchmal kommt es vor, dass man die Ausgabe eines Programms sowohl in eineDatei umleiten als auch gleichzeitig auf dem Bildschirm ausgeben möchte. Hierschafft das Programm tee Abhilfe. tee gibt die ihm eingegebene bzw. eingeleiteteAusgabe auf dem Bildschirm und in einer Datei aus.

user$ ls | tee log.txtCVSMakefileTODOZEITPLANanhg_komref.tex...

Listing 7.57 Pipes mit tee

7.9.2 Named Pipes (FIFOs)

Named Pipes (sogenannte FIFOs (First In First Out)) erweitern die Fähigkeiten einerPipe. Eine FIFO muss zunächst als Datei im Dateisystem erzeugt werden. Dies wirdmit dem Programm mkfifo bewerkstelligt. Der Vorteil gegenüber einer Pipe istdabei, dass mehrere Prozesse diese FIFO verwenden können.

239

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 240 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

FIFOs arbeiten nach dem First-In-First-Out-Prinzip. Das bedeutet: Die Daten, die zu-erst in eine FIFO geschrieben werden, werden auch als Erste wieder vom lesendenProzess empfangen.

Das folgende Listing demonstriert diese Möglichkeit anhand einer Endlosschleife.Zunächst wird mit dem Programm mkfifo eine FIFO angelegt. Das tee-Programmlassen wir in die FIFO hineinschreiben, aber gleichzeitig durch Eingabeumlenkungaus ihr lesen. Das bedeutet, dass das Gelesene sofort wieder hineingeschriebenwird. Sobald also Daten in die FIFO geschrieben werden, liest tee diese so langeaus und schreibt sie so lange wieder in die FIFO hinein, bis der Wärmetod desUniversums eintritt, der Strom ausfällt oder der Rechner abfackelt.

Doch um den Prozess anzustoßen, schreiben wir einen String, nämlich »Endlos-schleife« in die FIFO hinein. Es ist wichtig, dass auch dieser Prozess im Hintergrundgestartet wird, denn irgendwann soll diese Ausgabe ja dann doch gestoppt werden,um nicht das System abzuschießen.

Nachdem eine Sekunde durch sleep (siehe Seite 1231) gewartet wurde, wird dasProgramm tee durch den Aufruf des pkill-Programms beendet. pkill beendet alleProzesse, in deren Namen der angegebene Ausdruck vorkommt. Führen Sie diesenTest auf keinen Fall als Superuser auf einem Multiuser-System durch und bedenkenSie, dass alle anderen tee-Prozesse, für die der Benutzer die Beendigungsberechti-gung besitzt, ebenfalls beendet werden!

user$ mkfifo fifouser$ ls -l fifoprw------- 1 cdp_xe cdp_xe 0 Mar 22 19:44 fifouser$ tee fifo < fifo&[1] 2702user$ echo "Endlosschleife" > fifo & ; \> sleep 1; pkill tee[1] 18277EndlosschleifeEndlosschleifeEndlosschleifeEndlosschleife......EndlosschleifeEndlosschleife[1] + terminated tee fifo < fifo

Listing 7.58 Verwendung einer FIFO in der Shell

240

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 241 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Subshells und Kommandogruppen 7.10

Wie Ihnen vielleicht aufgefallen ist, wird eine Pipe beim »langen« Listing mit lsmit einem p gekennzeichnet. Dieses p steht für (Named) Pipe und zeigt Ihnen an,dass es sich um keine reguläre Datei handelt. Versuchen Sie einmal, sich mit demProgramm file den Typ der Datei anzeigen zu lassen.

7.10 Subshells und Kommandogruppen

In der Shell können nicht nur einfach Kommandos aneinandergereiht werden. Esgibt neben den bloßen (bedingten) Aneinanderreihungen von Kommandos nämlichnoch zwei weitere Möglichkeiten, dies zu organisieren.

Die erste Möglichkeit ist das Bilden einer Prozessgruppe. Diese umfasst dabei die Prozessgruppe

aneinandergereihten Prozesse. Dies bietet dem Anwender neue Möglichkeiten, et-wa die Ausgabeumlenkung für die gesamte Prozessgruppe. Eine Prozessgruppe wirddurch zwei geschweifte Klammern begrenzt. Innerhalb der Prozessgruppe könnendie in Abschnitt 7.7.2 besprochenen Bedingungen zur Ausführung (etwa das Semi-kolon zur unbedingten Ausführung) verwendet werden.

$ { ls; uname } | tee log.txtCVSMakefileTODOZEITPLANanhg_komref.tex...Linux

Listing 7.59 Prozessgruppe

Ohne Prozessgruppe müsste nun die Ausgabe jedes Prozesses explizit umgelenktwerden, aber mit Gruppe benötigen wir nur eine Ausgabeumlenkung, die wir indiesem Fall durch eine Pipe mit tee ersetzt haben.

Startet man hingegen durch Verwendung normaler Klammern eine komplette Sub- Subshell

shell (und damit einen neuen Prozess mit eigenen Bereichen im Stack) für eineProzessgruppe, so erhält diese Subshell auch ihre eigenen Variablen.

Wenn Sie also in der Subshell die Werte von Variablen verändern, so ändern sich die Wertenicht in der Parent-Shell.

user$ katze=Felixuser$ ( katze=Mauzi; echo $katze )Mauzi

241

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 242 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

user$ echo $katzeFelixuser$ { katze=Minka ; echo $katze }Minkauser$ echo $katzeMinka

Listing 7.60 Das unterschiedliche Verhalten mit Shellvariablen

Später werden wir uns noch mit der unterschiedlichen Nutzung von lokalen undglobalen Variablen in Shellskriptfunktionen beschäftigen.

Prozessgruppen können problemlos im Hintergrund gestartet werden. Möchten SieProzessgruppen imHintergrund beispielsweise eine länger dauernde Dateisuche im Hintergrund ablaufen lassen,

ist dies möglich, indem Sie die Anweisung, den Prozess im Hintergrund zu star-ten (&), hinter die schließende Prozessgruppenklammer stellen: { find / -name

Dateiname ; find / -name DateinameB }&

7.11 Effektives Arbeiten mit der Bash

Dieses Unterkapitel soll Ihnen zeigen, wie man sich die tägliche Arbeit mit der bash(Bourne-Again-Shell) erleichtern kann.

7.11.1 Die Kommando-History

Das einfachste Feature der bash, das Ihnen etwas Arbeit abnimmt, sollten Sie un-bedingt kennen: die Kommando-History. Sie speichert die zuletzt eingegebenen Be-fehle. Sie können diese abrufen und brauchen sie nicht erneut einzugeben, umsie wieder aufzurufen. Zudem bietet die bash die Möglichkeit, diese Befehle zueditieren.

Eine Übersicht über die in der History enthaltenen Befehle liefert Ihnen ein bloßerAufruf von history. Durch Angabe einer Nummer bekommen Sie die letzten n

Einträge angezeigt.

user$ history 322 cvs commit -m ''23 exit24 history 3

Listing 7.61 Das Kommando history

Unerwünschte Einträge in der History können Sie über history -d <Nummer> ausder History-Liste löschen.

242

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 243 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Effektives Arbeiten mit der Bash 7.11

Nehmen wir einmal an, es wurde der Befehl find /usr/local/bin -name "Da- Scrollen in derHistoryteiname" ausgeführt. Nun möchten Sie den gleichen Befehl mit einem anderen

Dateinamen ausführen. Um nicht alles noch einmal eintippen zu müssen, kön-nen Sie durch die Cursor-Taste Nach oben den zuletzt eingegebenen Befehl in dieKommandozeile laden.

Durch erneutes Betätigen der Nach-oben-Taste lädt die bash wiederum den Befehl,der vor dem letzten aufgerufen wurde, in die Kommandozeile und so weiter – soeinfach ist das. Mit der Nach-unten-Taste können Sie die History wieder vorwärtsdurchsuchen.

Um nun den alten find-Aufruf anzupassen, muss der neue Dateiname in die alte Editieren in derBefehlszeileKommandoeingabe eingefügt werden. Sie können sich mittels der Cursor-Tasten

Nach links und Nach rechts in der Kommandozeile bewegen und an allen Positio-nen Zeichen löschen und einfügen.

Das Ausrufezeichen hat eine ganz besondere Funktion in der bash. Es dient zum Ausrufezeichen

Aufruf von Befehlen aus der History.

Den zuletzt eingegebenen Befehl können Sie durch zwei Ausrufezeichen wiederholt Vorheriger Befehl

ausführen lassen:

user$ uname -aOpenBSD eygo.sun 3.6 EYGO#0 i386user$ !!OpenBSD eygo.sun 3.6 EYGO#0 i386

Listing 7.62 Erneutes Ausführen des letzten Befehls

Ebenso können Sie durch Angabe der Befehlsnummer in der Kommando-Historyeinen der darin gespeicherten Befehle wiederholen. Die History-Nummer einesBefehls erhalten Sie durch Aufruf des history-Befehls. Der Befehl wird dann durch!n (wobei n die Befehlsnummer ist) erneut ausgeführt.

user$ history 3392 make all view393 uname -a394 history 3

user$ !393OpenBSD eygo.sun 3.6 EYGO#0 i386

Listing 7.63 !n

Ein äußerst praktisches Feature der bash ist das Suchen nach Befehlen durch Angabe Suchen nachBefehlender ersten Zeichen eines Befehls. Nun werden Sie sich wohl fragen, was man sich

243

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 244 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

denn bitteschön darunter vorstellen kann? Man kann – wie so oft – auch dieseFunktionalität am besten durch ein Beispiel erläutern.

Ein Benutzer gibt zunächst den Befehl uname und anschließend den Befehl up-

time ein. Nun möchte er erst uptime, später uname erneut aufrufen, ohne dieseBefehle erneut einzugeben. Erst in der Kommando-History nachzusehen ist oftmalsumständlich. Daher verwendet der Benutzer die Befehlssuche.

Die simpelste Variante ist nun folgende: Der Benutzer gibt ein Ausrufezeichen unddarauf unmittelbar folgend den ersten Buchstaben des Befehls, also ein »u«, ein.Daraufhin ruft die Shell den letzten Befehl auf, der mit »u« began, also uptime.Möchte der Benutzer nun aber uname aufrufen, so reicht es nicht, ein »u« hinter dasAusrufezeichen zu stellen. Hierzu muss noch der zweite Buchstabe des Befehls, alsoein »n«, angegeben werden, worauf der letzte Befehl, der mit »un« begann, erneutausgeführt wird:

user$ !uuptime9:20PM up 7:30, 3 users, load averages: 0.22,0.21, 0.17user$ !ununameOpenBSD

Listing 7.64 Die Suche nach Befehlen

Den letzten Befehl, der einen bestimmten String enthielt, können Sie durch denAufruf von !?<String> erneut ausführen lassen.

Bedeutend komfortabler ist dies mit der Tastenkombination Strg + R zu bewerk-Aus der Trickkiste

stelligen. Bei diesem Verfahren wird Ihnen automatisch von der bash angezeigt,welcher Befehl ausgeführt werden würde, während Sie die Kommandozeile editie-ren:

(reverse-i-search)`un': uname

Listing 7.65 Strg + R

Erinnern Sie sich noch an den wiederholten Aufruf von find, den es zu editierenTeile alter Befehleersetzen galt, um nach einem neuen Dateinamen zu suchen? Dies kann in der bash nochmals

vereinfacht werden, sofern der Befehl find der zuletzt eingegebene war. DurchAngabe der zu ersetzenden Zeichenkette im letzten Befehl kann ein alter Befehlmodifiziert ausgeführt werden.

244

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 245 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Effektives Arbeiten mit der Bash 7.11

Der besagte find-Aufruf sah folgendermaßen aus: find /usr/local/bin -name

"Dateiname". Um nun nach dem Dateinamen zsh zu suchen und den gleichenBefehl zu verwenden, muss nach dem Muster

ˆAlter-StringˆNeuerStringˆ

eine Manipulation des alten Befehls erfolgen, also:

user$ find /usr/local/bin -name "Dateiname"...user$ ˆDateinameˆzshˆfind /usr/local/bin -name "zsh"/usr/local/bin/zsh

Listing 7.66 Das Kommando find mit neuem Dateinamen

7.11.2 Automatische Vervollständigung von Dateinamen

Ein ähnlich praktisches Feature wie die Kommando-History stellt die automatischeVervollständigung von Dateinamen dar. Sie wird in der bash durch die Tab-Tasteangesteuert. Da unter Unix auch Programme Dateien darstellen, funktioniert diesesFeature natürlich auch mit diesen.

Bei der Nutzung der Tab-Taste sind allerdings zwei Fälle zu unterscheiden:

� Es ist nur eine passende Datei vorhanden.

� Es sind mehrere passende Dateien vorhanden.

Für den ersten Fall erstellen wir ein Beispielverzeichnis, in dem wir eine Datei mit Nur ein Kandidat

dem Namen abc.txt unterbringen.

$ mkdir test$ touch test/abc.txt$ cd test

Listing 7.67 Beispielverzeichnis mit einer Datei erstellen

Verwenden wir nun ein Programm wie /bin/ls, dem wir diese Datei als Parameterübergeben, müssen wir, da es nur eine Datei im Verzeichnis gibt, bloß die Tab-Tastebetätigen, und die bash setzt uns den Dateinamen automatisch an die gewünschtePosition in der Eingabe.

Versuchen Sie es einmal selbst: Wechseln Sie in das neue Verzeichnis, geben Sie ls

und ein Leerzeichen ein, und drücken Sie die Tab-Taste. Die bash sollte nun denDateinamen abc.txt automatisch in die Befehlszeile schreiben.

245

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 246 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

Nun erstellen wir im Verzeichnis noch eine Datei mit dem Namen xyz.txt. Wenn SieMehrereKandidaten das letzte Beispiel unter den neuen Bedingungen wiederholen, wird es nicht ohne

weiteres funktionieren. Die bash weiß nicht von selbst, welche der beiden Dateiensie als Parameter übergeben soll. Der Trick funktioniert nun so, dass so viele Zeichendes Dateinamens eingegeben werden, bis es nur noch einen Dateinamen gibt, aufden die ersten Zeichen zutreffen – in diesem Fall genügt der erste Buchstabe derDatei (entweder ein »a« oder ein »x«), da kein Dateiname gleiche Zeichen enthält.Wird dann erneut die Tab-Taste gedrückt, vervollständigt die bash den Dateinamenwieder automatisch.

Doch die bash kann Ihnen noch ein Stück Arbeit abnehmen. Nehmen wir an, esGleicheAnfangsbuchstaben seien zwei Dateien abc und abd in einem Verzeichnis vorhanden. Sofern es sowieso

keine Wahl zwischen den Zeichen gibt, bringt eine Betätigung der Tab-Taste immerdiese Zeichen auf den Monitor. Drücken Sie also in solch einem Verzeichnis dieTab-Taste, so schreibt die bash Ihnen die beiden ersten Zeichen (da diese sowiesogleich sind und von Ihnen eingegeben werden müssten) auf den Bildschirm. Siemüssen anschließend nur noch ein »c« bzw. »d« eingeben.

Für den Fall, dass im Verzeichnis noch die Datei xyz vorhanden ist, müsste der ersteBuchstabe wieder eingegeben werden, da nun wieder zwei Fälle eintreten könnten.

Wenn mehrere Dateien vorhanden sind, können Sie die Tab-Taste auch zweimalDoppel-Tab

betätigen, um sich während der Befehlseingabe eine Übersicht über die Dateien imVerzeichnis zu verschaffen. Durch dieses doppelte Betätigen liefert Ihnen die bash

immer die nach Ihrer bisherigen Eingabe noch möglichen Dateiauswahlen.

Das bedeutet im Beispiel: Hätten Sie wieder die drei Dateien xyz, abc und abdim Verzeichnis, so würde Ihnen die bash zunächst alle drei auflisten. Wenn Siedann ein »a« eingeben und die Tab-Taste drücken, gibt Ihnen die bash das »b«(die einzig sinnvolle Möglichkeit) auf dem Bildschirm aus. Wenn Sie dann wiederdoppelt die Tab-Taste betätigen, gibt Ihnen die bash nun die beiden noch möglichenDateinamen abc und abd aus.

Weiterhin ist das Tab-Taste »intelligent«: Am Anfang einer Shelleingabe ist nur einausführbares Kommando sinnvoll – entsprechend werden auch nur ausführbareDateien bzw. Shellbuiltins vervollständigt.

7.12 xargs

Zum Abschluss des einleitenden Shellkapitels möchten wir noch ein Tool namensxargs vorstellen. Es leitet die Ausgabe des ersten Programms nicht als Eingabe (wiein einer Pipe), sondern als Parameter für ein zweites Programm weiter.

246

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 247 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

Zusammenfassung 7.13

Soll beispielsweise die Ausgabe von ls als Parameter für grep (ein Tool, das denDateiinhalt nach einem vorgegebenen Muster durchsucht) herhalten, würde mandies folgendermaßen realisieren:

$ ls *.tex | xargs grep gpKapitelanhg_komref.tex:\gpKapitel{Kommandoreferenz}...kap01_kernel.tex:\gpKapitel{Der Kernel}kap05_sysadmin.tex:\gpKapitel{Systemadministration}kapxx_software.tex:\gpKapitel{Softwareentwicklung}

Listing 7.68 ls und xargs mit grep

7.13 Zusammenfassung

In diesem Kapitel wurden die Grundlagen der Unix-Shells besprochen. Dabei gibtes zwei primäre Shellzweige: den der Bourne-Shell, zu dem die Bourne-Shell selbst,die ksh und die bash sowie einige weniger bekannte Shells gehören, und den Zweigder C-Shell, zu dem die C-Shell (csh) und die tcsh gehören. Des Weiteren gibt esnoch exotische Shells wie die Scheme-Shell.

Außerdem wurde mit den Aliasen eine Möglichkeit besprochen, (komplexe) Kom-mandos über einen kurzen Ersatzbefehl aufzurufen, sowie die Kommandosubstitu-tion, die es ermöglicht, eine Ausgabe eines Befehls als Eingabe oder Wert für andereBefehle und Variablen zu nutzen.

Als kleinen Ausblick auf die Shellskriptprogrammierung wurden Shellvariablen sehrintensiv behandelt.

Sie haben erste Formen der Interprozess-Kommunikation (IPC) kennengelernt: Pi-pes und FIFOs. Diese leiten die Ausgaben eines Programms an ein anderes weiter,wobei FIFOs als Dateien im Dateisystem vorliegen und mit dem Befehl mkfifo

erzeugt werden.

Angelehnt an die IPC wurde die Ein- und Ausgabeumlenkung vorgestellt – ein eben-falls elementares Shell-Feature, das es ermöglicht, die Ausgabe eines Programms ineine Datei umzuleiten oder einen Dateiinhalt als Programm-Input zu nutzen.

Einem weiteren Erkundungsgang durch die Shell mit dem nächsten Kapitel stehtnun also nichts mehr im Wege – besonders nicht, nachdem Sie sich die tägliche Ar-beit mit der Shell nun durch die Kommando-History sehr einfach machen können.

247

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 248 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap04_shell.tex , Aktueller Job: buch

7 Die Shell

7.14 Aufgaben

Alias-Wirrwarr

Was geben die folgenden Befehle aus?

$ alias q=ls$ alias q=`q;ls'$ q...

Listing 7.69

Für angehende Experten

Was passiert, nachdem die folgenden Befehle in der bash ausgeführt wurden?

$ uname | tee /tmp/mylogLinux$ !?na > x$ alias displayX=`cat x`$ displayX...

Listing 7.70

Wie geht das?

Wie können Programme wie chsh (zum Ändern der Login-Shell) oder passwd (zumÄndern des Passworts) die Passwortdateien modifizieren, obwohl sie von nichtpriviligierten Benutzern ausgeführt werden können?

248

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 631 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

»Wenn das Aug’ nicht sehen will,So helfen weder Licht noch Brill’.«– Sprichwort

19 LAMP & Co.

In diesem Kapitel wollen wir uns mit einer sehr populären Erscheinung ausein-andersetzen. Die ganze Welt spricht von LAMP – Linux mit Apache, MySQL undPHP1. Mit dieser Open-Source-Kombination kann man einen voll funktionsfähigenWeb-Applikationsserver aufsetzen. Die Webseiten können dabei aufgrund der je-weiligen Skriptsprache – in der Regel PHP – dynamisch gestaltet und mit einemDatenbankzugriff auf das MySQL-Backend ausgestattet werden.

Dieses Konzept ist nun in aller Munde, weil bei einem solchen Einsatz ein völ- Lizenzfreies Setup

lig lizenzkostenfreies System entsteht. Gleichzeitig hat man mit Apache, PHP undMySQL auf Marktführer beziehungsweise Quasistandards gesetzt. In diesem Kapitelzeigen wir Ihnen, wie Sie einen solchen LAMP-Webserver aufsetzen und im Prinzipmit ihm arbeiten.

Die Installation

Die Grundlage für ein solches Setup ist ein frisches, pures Linux-System ohne allzuviel Schnickschnack. Wie Sie verschiedene Linux-Distributionen installieren, erfah-ren Sie in Kapitel 2. Vermeiden sollten Sie dabei vor allem die grafische OberflächeX11 sowie andere Netzwerkdienste wie SMTP- oder POP3-Server.

Bei Serversystemen sollte man sich nämlich auf das Wesentliche beschränken. Wennman einen SMTP-Dienst auf einem Webserver nur laufen lässt, weil dieser zufälligbei jeder Installation der Lieblingsdistribution mit auf die Platte geschaufelt wird,so tut man höchstens einem Angreifer einen Gefallen – denn alle anderen brauchenden Dienst nicht, er hingegen hat eine weitere Angriffsmöglichkeit.

19.1 Apache

Nicht nur beim Basteln der eigenen Homepage kann ein Webserver hilfreich sein.In Zeiten von immer billiger werdenden Flatrates und virtuellen Servern (V-Servern)

1 Manchmal wird das »P« aus LAMP auch als Abkürzung für Perl oder Python interpretiert.

631

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 632 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

wird auch ein eigener Internetserver immer verbreiteter. Ein HTTP-Dienst gehörtbei einem solchen Setup eigentlich auch immer dazu.

Als Software empfehlen wir dabei das »A« aus LAMP: Apache – den im Internetam weitesten verbreiteten Webserver. Aufgrund seiner Verbreitung ist es ziemlichwahrscheinlich, dass Ihre Distribution bereits ein Apache-Paket enthält.

Etwas zur Geschichte

Der Grund für den Erfolg von Apache liegt sicherlich in seiner Geschichte. Unter derBezeichnung »NCSA HTTPd« wurde er als einer der ersten Webserver vom NationalCenter for Supercomputing Applications an der University of Illinois entwickelt.

Irgendwann wurde der Support für das Produkt allerdings eingestellt, und dieA patchy Server

Administratoren der zahlreichen NCSA-Installationen, die es bis dahin gab, warenauf sich allein gestellt. Schon bald kursierten viele Patches und Erweiterungen.Diese Bestrebungen wurden später im Apache-Projekt koordiniert, dessen Namesich aus dieser Geschichte erklärt: A PAtCHy sErver.

Viele Jahre lang wurde der Apache-Server in der Version 1.3.x eingesetzt, die auchwir noch in der ersten Auflage dieses Buches besprochen haben. Für Neuinstal-lationen wird allerdings praktisch kaum mehr auf Version 1.3.x zurückgegriffen,weshalb wir uns im Folgenden auf die Apache-Version 2.x konzentrieren werden.

Die Datei »apache2.conf«

Im Folgenden wollen wir den Apache konfigurieren.2 Dazu editieren wir die Da-Konfiguration

tei apache2.conf, die sich meistens in /etc/apache2 bzw. /etc/httpd befindet. DieDatei ist relativ groß – kein Wunder bei einer so wichtigen und umfangreichenSoftware. Falls die Datei bei Ihnen eher klein ist, dann wird es wahrscheinlich meh-rere Include-Anweisungen geben, die andere Konfigurationsdateien in diese Dateieinbinden (etwa ports.conf zur Konfiguration der Ports, auf denen der Apache Ver-bindungen entgegennimmt). Eine Übersicht über die Include-Anweisungen Ihrerapache2.conf-Datei liefert Ihnen ein grep-Aufruf:

$ grep Include /etc/apache2/apache2.conf# Include module configuration:Include /etc/apache2/mods-enabled/*.loadInclude /etc/apache2/mods-enabled/*.conf# Include all the user configurations:Include /etc/apache2/httpd.conf# Include ports listing

2 Die Installation haben Sie bestimmt schon ganz selbstständig über das PaketverwaltungstoolIhrer Distribution erledigt – vielleicht haben Sie sich sogar die Quellen von apache.org gezo-gen und selbst übersetzt. :-)

632

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 633 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

Apache 19.1

Include /etc/apache2/ports.conf# Include of directories ignores editors' and# dpkg's backup files,# Include generic snippets of statementsInclude /etc/apache2/conf.d/# Include the virtual host configurations:Include /etc/apache2/sites-enabled/

Listing 19.1 Welche Include-Befehle enthält die apache2.conf-Datei?

Wie Sie sehen, existieren für den Apache eine ganze Reihe an Include-Anweisungen,die teilweise sogar ganze Unterverzeichnisse wie mods-enabled einbinden. Aber kei-ne Sorge: Hauptsächlich werden wir in diesem Buch Konfigurationsparameter ausden Dateien apache2.conf, httpd.conf und ports.conf besprechen, schließlich handeltes sich nur um eine Einführung. In welcher Datei sich ein Konfigurationsparame-ter befindet, erfahren Sie jeweils durch grep -R [Parameter-Name] /etc/apache2.Um beispielsweise herauszufinden, in welcher Konfigurationsdatei der ParameterPidFile versteckt ist, ist folgendes Kommando nötig:

$ grep -R PidFile /etc/apache2//etc/apache2/apache2.conf:# PidFile: The file in which theserver should record its process/etc/apache2/apache2.conf:PidFile $APACHE_PID_FILE

Listing 19.2 Herausfinden, in welcher Datei ein Parameter verwendet wird

Doch lassen Sie uns nun die wichtigsten Konfigurationsparameter des Apache-2.xbeschreiben.

# Standalone-Server auf Port 80Listen 80PidFile /var/run/apache2.pid

Listing 19.3 Grundkonfiguration

Unser Apache läuft auf Port 80 (Listen 80). Sie können durch mehrere Listen- Listen, PidFile

Befehle auch erzwingen, dass der Apache-Server parallel auf mehreren unterschied-lichen Ports läuft. Um den Server an eine bestimmte IP-Adresse zu binden (hier-bei funktionieren auch IPv6-Adressen), genügt ein Listen-Befehl der Form Listen

Adresse:Port, also etwa Listen 192.168.2.99:8080. In die unter PidFile angege-bene Datei schreibt der Dienst nach dem Start seine Prozess-ID hinein.

Timeout 300

Listing 19.4 Timeout

633

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 634 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

Mit dem Timeout-Befehl geben Sie die Anzahl Sekunden an, nach denen eine Ver-Timeout

bindung durch ein Netzwerk-Timeout beim Senden oder Empfangen geschlossenwird.

User www-dataGroup www-data

Listing 19.5 Rechte

Mit den folgenden beiden Anweisungen legen Sie die Rechte fest, unter denenKein root

der Prozess laufen soll. Auf keinen Fall sollten hier administrative root-Rechtevergeben werden. Wichtig ist nur, dass der betreffende Benutzer Zugriff auf dasDocumentRoot-Verzeichnis mit allen Webseiten hat.

DefaultType text/plainHostnameLookups Off

Listing 19.6 Weitere Konfigurationsparameter

Mit der Option DefaultType geben Sie den im Normalfall zu verwendenden MIME-DefaultType

Typ für Dokumente an, bei denen der Server diesen nicht selbst feststellen kann.Diesen Wert müssen Sie im Normalfall nicht verändern.

Für die Option HostnameLookups können Sie die Werte On, Double oder Off ver-HostnameLookups

geben. Wenn Sie die Option mit On aktivieren, versucht der Apache-Server dieIP-Adressen von Clients über einen Nameserver in Hostnamen umzusetzen. In Ih-ren Logdateien finden Sie dann entsprechend den Hostname eines Clients anstelleseiner IP-Adresse. Sollten Sie nach einem DNS-Reverse-Lookup noch ein Forward-Lookup durchführen wollen, können Sie die Option Double verwenden. Laut Apa-che-Dokumentation ist die Option standardmäßig auf Off gestellt, um Netzwerk-traffic zu sparen und schneller die Anfragen von Clients beantworten zu können.

ErrorLog /var/log/apache2/error.logLogLevel warnCustomLog /var/log/apache2/others.log vhost_combined

Listing 19.7 Logdateien

Wichtige Konfigurationsparameter sind auch solche, die die Protokollierung (dasErrorLog, LogLevelund CustomLog Logging) betreffen. Dabei ist zu beachten, dass die in der apache2.conf enthalte-

nen Einstellungen nur für virtuelle Hosts gelten, wenn die Parameter bei derenKonfiguration nicht gesetzt wurden – aber dazu später mehr.

Über die durch ErrorLog angegebene Logdatei werden Fehlermeldungen protokol-liert. Der LogLevel kann den Wert debug, info, notice, warn, error, crit, alertoder emerg annehmen. Der Unterschied der einzelnen Werte liegt darin, wie detail-

634

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 635 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

Apache 19.1

liert die Protokollierung erfolgen soll. Während debug alles protokolliert (selbst dasÖffnen einer Datei!) und Ihnen die Festplatte mit solchen Meldungen praktisch zu-müllt, wodurch durchaus wichtige Meldungen untergehen können, gibt Ihnen dasandere Extrem emerg nur Notfall-Warnungen aus. Es ist sinnvoll, die Voreinstellung(warn) beizubehalten. Sollten Sie etwas ausführlichere Informationen benötigen,können Sie auch einmal notice oder (die Vorstufe zu debug) info ausprobieren.

CustomLog legt die eigentliche Logdatei, die Zugriffe enthält, fest. Beachten Sie, dassin dieser Datei HTTP-Requests protokolliert werden; Fehlermeldungen werden indie über ErrorLog angegebene Datei geschrieben.

ServerRoot "/etc/apache2"

Listing 19.8 ServerRoot

In diesem Verzeichnis sucht der Apache weiter nach verschiedenen Konfigurati-onsdateien. Dieses Verzeichnis kann je nach Distribution auch anders heißen undbraucht in der Regel nicht geändert zu werden.

$ ls -l /etc/apache2/mods-enabled/mime.load \/etc/apache2/mods-enabled/dir.load

lrwxrwxrwx 1 root root 26 Feb 15 2007/etc/apache2/mods-enabled/dir.load ->../mods-available/dir.load

lrwxrwxrwx 1 root root 27 Feb 15 2007/etc/apache2/mods-enabled/mime.load ->../mods-available/mime.load

Listing 19.9 Module aktivieren

Apache kennt zudem Module, die seine Funktionalität erweitern (es gibt beispiels- Module

weise ein PHP-Modul). Die verfügbaren installierten Module finden sich dabeimeist im Unterverzeichnis mods-available/ des ServerRoot-Verzeichnisses. Um einModul zu aktivieren, wird ein symbolischer Link im Verzeichnis mods-enabled aufdie entsprechende Datei im Verzeichnis mods-available/ erstellt. Eine Übersicht deraktivierten Module erhalten Sie daher ganz einfach über einen Blick in das Ver-zeichnis:

$ ls mods-enabled/alias.conf cgi.load php5.confalias.load dir.conf php5.loadauth_basic.load dir.load rewrite.loadauthn_file.load env.load ruby.loadauthz_default.load fastcgi.conf setenvif.confauthz_groupfile.load fastcgi.load setenvif.loadauthz_host.load mime.conf status.conf

635

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 636 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

authz_user.load mime.load status.loadautoindex.conf negotiation.confautoindex.load negotiation.load

Listing 19.10 Aktivierte Apache-Module

In diesem Fall wurde eine ganze Reihe an Modulen geladen, die unterschiedlichwichtig sind. Eines der wichtigsten Module ist mime; es bringt unserem Webserverbei, unterschiedliche Datentypen zu verstehen und vor allem, dies dem Browsermitzuteilen. Nur so kann dieser wissen, ob er gerade eine Webseite (also HTML-Code) oder ein JPEG-Bild (also Binärdaten) lädt.

Ein weiteres wichtiges Modul ist dir; es lässt den Webserver nach einem »Standard-index.html finden

dokument« suchen, wenn in der URL nichts weiter angegeben wurde. So gelangtman beim Aufruf von example.com auf die Seite example.com/index.html – oder,wenn sie im entsprechenden Verzeichnis vorhanden ist, auf die Seite /index.htm.

Virtuelle Hosts und DocumentRoot

Im Apache kann für jede Site, die auf dem Server läuft, ein eigenes Verzeichnis fürDocumentRoot

die angebotenen Webdateien festgelegt werden. Die Standardsite (default site) wirdüber die Datei sites-available/default konfiguriert. In diesem Abschnitt legt man nunfest, dass das Wurzelverzeichnis für Webdokumente /var/www ist. Lädt man alsohttp://www.example.com/index.html, so wird die lokale Datei /var/www/index.htmlan den Client gesendet.

DocumentRoot /var/www/<Directory />Options FollowSymLinksAllowOverride None

</Directory><Directory /var/www/>Options Indexes FollowSymLinks MultiViewsAllowOverride NoneOrder allow,denyallow from all# This directive allows us to have apache2's default start page# in /apache2-default/, but still have / go to the right placeRedirectMatch ^/$ /apache2-default/

</Directory>

Listing 19.11 Die Datei /etc/apache2/sites-available/default (Ausschnitt)

Im Zusammenhang mit Sites spricht man auch von virtuellen Hosts (engl. virtualVirtual Hosts

hosts). Liefert Ihr Webserver etwa bisher die Site meine-site.xyz und soll nun noch

636

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 637 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

Apache 19.1

eine weitere Site tolle-site.abc zur Verfügung stellen, können Sie für die neue Siteeinen neuen virtuellen Host anlegen.

Dazu muss zunächst im Verzeichnis sites-available eine Datei für die neue Site an-gelegt werden (kopieren Sie dazu einfach die default-Site): cp default tolle-si-

te.abc.

Die neue Datei bearbeiten Sie so, dass Sie ihr ein neues Verzeichnis verpassen (überDocumentRoot) und über ServerName die neue Domain konfigurieren, damit Apacheweiß, für welche Domain er das neue DocumentRoot verwenden soll. Weitere Alter-nativ-Domains (etwa mit www-Subdomain) können durch ServerAlias angegebenwerden. Insgesamt sieht Ihre neue Datei dann in etwa so aus:

<VirtualHost *>ServerAdmin [email protected] tolle-site.abcServerAlias www.tolle-site.abc

DocumentRoot /var/www/tolle-site<Directory />Options FollowSymLinksAllowOverride None</Directory>

ErrorLog /var/log/apache2/meine-tolle-site.error.log

# Possible values include: debug, info, notice, warn, error,# crit, alert, emerg.LogLevel info

CustomLog /var/log/apache2/meine-tolle-site.access.log combined</VirtualHost>

Listing 19.12 Virtual Host mit Apache

Sämtliche Anweisungen, die sich im VirtualHost-Block befinden (der mit </Virtu-alHost> abgeschlossen wird) beziehen sich dabei auf Ihren neuen virtuellen Host.Wichtig ist hierbei noch, dass über die ErrorLog-Anweisung und die AnweisungCustomLog zwei zusätzliche Logdateien konfiguriert wurden. Unterschiedliche Log-dateien für unterschiedliche virtuelle Hosts zu erstellen, können wir Ihnen nurempfehlen, da dadurch die Übersichtlichkeit der Logmeldungen erhalten bleibt.

Um den virtuellen Host zu aktivieren, müssen Sie nun einen symbolischen Link imVerzeichnis sites-enabled erstellen:

637

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 638 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

# cd /etc/apache2# ln -s sites-available/meine-tolle-site \sites-enabled/100-meine-tolle-site

Listing 19.13 Den neuen virtuellen Host aktivieren

Anschließend muss der Server neu gestartet werden, was wir im Folgenden be-schreiben.

19.1.1 Apache verwalten

Natürlich muss man einen Serverdienst wie den Apache auch zur Laufzeit verwaltenkönnen. Im Folgenden wollen wir kurz auf das Tool apache2ctl und die wichtigstenLogfiles eingehen.

apache2ctl

Mit dem Programm apache2ctl kann man Apache kontrollieren. Dazu gehört ne-ben den Möglichkeiten des Startens, Neustartens und Stoppens natürlich auch dieOption, die Konfigurationsdatei auf Korrektheit hin zu überprüfen. Hier eine Über-sicht über die Möglichkeiten des Tools:

# Die Konfiguration testen:# apache2ctl configtest

# Den Server starten:# apache2ctl start

# Den Server beenden:# apache2ctl stop

# Den Server neustarten:# apache2ctl restart

# Statusbericht anzeigen# apache2ctl status / fullstatus

Listing 19.14 apache2ctl

Ist die apache2.conf fehlerhaft, so wird bei apache2ctl configtest ein Fehler aus-Konfigurationsdateiprüfen gegeben. Mit dieser Hilfe kann das Problem dann oft recht einfach und schnell

behoben werden. Nach einer eventuellen Änderung an der apache2.conf kann Apa-che dann mit der restart-Option neu gestartet werden:

638

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 639 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

Apache 19.1

# apachectl restart/usr/sbin/apachectl restart: httpd restarted

Listing 19.15 Apache neu starten

Ebenfalls interessant ist die Möglichkeit, sich über den Status des Servers informie-ren zu lassen. Dafür kann man entweder den Parameter status oder – für nochmehr Informationen – den Parameter fullstatus verwenden:

$ apache2ctl fullstatusApache Server Status for localhost

Server Version: Apache/2.2.12 (Ubuntu) mod_fastcgi/2.4.6PHP/5.2.10-2ubuntu6.4 with Suhosin-Patchmod_ruby/1.2.6 Ruby/1.8.7(2009-06-12)

Server Built: Mar 9 2010 22:11:44_________________________________________

Current Time: Friday, 02-Apr-2010 15:52:48 CESTRestart Time: Friday, 02-Apr-2010 10:43:33 CESTParent Server Generation: 0Server uptime: 5 hours 9 minutes 14 seconds1 requests currently being processed, 4 idle workers

W____...........................................................................................................................................................................................................................................................

Scoreboard Key:"_" Waiting for Connection, "S" Starting up, "R" Reading

Request,"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,"C" Closing connection, "L" Logging, "G" Gracefully

finishing,"I" Idle cleanup of worker, "." Open slot with no current

process

Listing 19.16 apache2ctl zeigt den Status des Apache an

Eine vollständige Liste der von Ihrem apache2ctl-Programm unterstützten Funk-tionen und Befehle finden Sie in der zugehörigen Manpage.

639

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 640 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

Module

Diese wenigen Direktiven reichen nun bereits aus, um einen einfachen kleinenWebserver mit Apache zu betreiben. Natürlich gibt es noch viel mehr als die bisherhier vorgestellten Module. Teilweise bringen diese auch ihre eigenen Schlüsselwör-ter mit, über die entsprechende Funktionalität konfiguriert werden kann. Häufiggenutzte Module sind unter anderem:

� mod_cgi.soMit diesem Modul kann man CGI-Skripte nutzen. Das CGI (Common GatewayInterface) war historisch die erste Möglichkeit, interaktive Webinhalte zu gestal-ten.

� libphp5.soMit diesem Modul kann man in PHP erstellte Webseiten mit dem Apache dar-stellen. PHP selbst ist, wie viele andere Erweiterungen, nicht Teil der Standard-Apache-Distribution3 und muss separat installiert werden. Eine gute Adresse füralles rund um PHP ist www.php.net.

� mod_ssl.soMit diesem Modul kann man einen HTTPS-Server aufsetzen und damit überSicheres Surfen

den sogenannten Secure Sockets Layer eine verschlüsselte Verbindung zwischenClient und Server aufbauen.

Je nach Distribution gibt es nun spezielle Pakete, die den Apache mit der einenoder anderen Funktion nachrüsten, sowie Pakete, die einen zum Beispiel bereits fürSSL vorkonfigurierten Apache installieren.

Die Logdateien

Standardmäßig schreibt der Apache in zwei unterschiedliche Logdateien. Die Dateiaccess.log wird zur Protokollierung einzelner Zugriffe genutzt; in error.log werdennur Fehler geschrieben.

Beide Dateien befinden sich oft in einem Verzeichnis unterhalb von /var/log/ be-Kontrolle

ziehungsweise von /usr/local/(apache2/), falls Sie den Apache von Hand aus denQuellen kompiliert haben.

85.181.56.167 - - [05/Sep/2007:22:35:38 +0200] "GET/favicon.ico HTTP/1.1" 200 1406 "-" "Mozilla/5.0(Windows; U; Windows NT 5.1; de; rv:1.8.1.5)Gecko/20070713 Firefox/2.0.0.5"

Listing 19.17 Eine Zeile aus der access.log-Datei

3 Bei diesem umfangreichen Projekt spricht man auch von einer »Distribution«, beachten Siejedoch den Unterschied zu den Linux-Distributionen.

640

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 641 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

MySQL 19.2

Hier sehen Sie eine Zeile aus access.log. Wie Sie bemerken, schickt Ihr Browsersehr viele Informationen über sich und das entsprechende Betriebssystem mit.Außerdem können Sie noch ablesen, dass die Anfrage nach index.html vom Rechner172.20.2.1 kam.

[Sun Jul 01 08:52:23 2007] [error] [client 66.249.66.180]File does not exist: /var/www/robots.txt

[Sun Jul 01 09:15:00 2007] [error] [client 65.55.208.135]File does not exist: /var/www/robots.txt

Listing 19.18 Ausschnitt aus der Datei error.log

An dieser Stelle können Sie feststellen, wofür error.log außer für die Fehler-Eintra-gungen sonst noch genutzt wird: für Servernachrichten. Im Beispiel sehen Sie dieNachrichten, die der Apache bei unserem Restart hinterlassen hat.

19.2 MySQL

Das »M« in LAMP steht für die freie Datenbank MySQL. Egal ob Webshop, Blogoder Auktionsbörse: Ohne Datenbank geht in der Regel nichts. Eine sehr gute Open-Source-Lösung ist MySQL. Diese Datenbank ist recht einfach zu administrieren undreicht vom Funktionsumfang her auch für größere Projekte noch aus.

19.2.1 Administration

Nach der Installation der entsprechenden Pakete aus der Distribution Ihrer Wahlstehen Sie schließlich vor der Frage, was Sie nun mit diesem Datending machensollen. In der Regel ist die Datenbank nach ihrer Installation sofort einsatzbereit –es sei denn, die Distribution konfiguriert sie so, dass sie zum Beispiel nur für denlokalen Gebrauch nutzbar ist.

Eine solche Vorgehensweise wird zum Beispiel oft bei Debian oder Slackware an-gewandt, um dem unerfahrenen Benutzer keine potenziellen Gefahren frei Haus zuliefern. Wenn Ihre Datenbank also standardmäßig nur auf dem Loopback-Interfaceund damit nur lokal zu erreichen ist, wissen Sie zumindest, was Sache ist. Meistsind aber die entsprechenden Optionen in den zugehörigen Konfigurationsdateienausführlich kommentiert, so dass im Fall von MySQL ein kurzer Blick in die Dateimy.cnf das Problem lösen sollte.

mysql

In jedem Fall sollte das Tool mysql zur Administration lokal funktionieren. Alterna- Auf der Konsole!

tiv kann man mittels der Option -h auch auf eine entfernte Datenbank zugreifen.

641

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 642 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

In jedem Fall müssen Sie jedoch einen bestimmten Usernamen und ein Passwortfür den Zugriff auf die Datenbank angeben:

$ mysql -h host -u user -pEnter password: ********

Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1090639Server version: 5.0.51a-24+lenny5 (Debian)

Type 'help;' or '\h' for help. Type '\c'to clear the buffer.

mysql>

Listing 19.19 Einloggen

Anschließend öffnet sich ein Prompt, und Sie können mit der Datenbank kommu-nizieren. Mit einem einfachen quit können Sie diese Shell wieder verlassen.

Um keine Verwirrung aufkommen zu lassen, möchten wir noch erwähnen, dassEigene Benutzer

MySQL, wie viele andere komplexe Serverdienste auch, eine eigene Benutzerver-waltung besitzt. Die Usernamen und Passwörter sind also völlig getrennt von denender auf Ihrem System konfigurierten Unix-Accounts.

MySQL kann nicht nur mit unterschiedlichen Benutzern umgehen, sondern ihnenauch verschiedene Rechte gewähren. Der Datenbankadministrator heißt wie unterUnix üblich root. Wie bereits gesagt, hat er jedoch nichts mit dem Unix-root zutun, und demzufolge hat er meistens auch ein anderes Passwort, das entweder beider Paketinstallation gesetzt wurde oder aber »leer«, also nicht vorhanden, ist.4

19.2.2 SQL

Nachdem man sich mittels mysql mit der Datenbank verbunden hat, stellt sichdie Frage, wie man mit ihr kommuniziert. Zu diesem Zweck gibt es eine vonallen praxisrelevanten relationalen Datenbanken implementierte Sprache: SQL. Mitihr kann man auf Datenbanken arbeiten: Tabellen anlegen, Daten einfügen undlöschen sowie natürlich nach bestimmten Tupeln in der Datenbank suchen. Es istsogar möglich, bestimmte komplexe Konsistenzbedingungen zu überwachen.

4 Ein Grund mehr, den Datenbankzugriff direkt nach der Installation über das Netzwerk nichtzu erlauben.

642

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 643 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

MySQL 19.2

Erste Schritte

Um einen ersten Eindruck von SQL zu bekommen, kann man ein paar Standard-werte abfragen, die das Datenbanksystem auch ohne jede vordefinierte Tabelle be-reithält. Solche Werte sind zum Beispiel das aktuelle Datum sowie die eingesetzteVersion:

mysql> SELECT VERSION(), CURRENT_DATE;+--------------+--------------+| version() | CURRENT_DATE |+--------------+--------------+| 3.22.20a-log | 2005-12-04 |+--------------+--------------+1 row in set (0.01 sec)

Listing 19.20 Einige Werte abfragen

Datenbanken anlegen

MySQL kann natürlich mehr als nur eine Datenbank verwalten. Zu einer Datenbank MehrereAnwendungenunterstützen

gehören in der Regel eine oder mehrere Tabellen, die wiederum bestimmte Spaltenbesitzen. Damit unterschiedliche Applikationen, die alle denselben Datenbankser-ver benutzen, sich mit ihren Tabellen nicht in die Quere kommen, kann MySQL –wie eigentlich jedes andere Datenbanksystem auch – mehrere Datenbanken unter-scheiden. Eine neue Datenbank legt man dabei wie folgt an:

mysql> CREATE DATABASE test;

Listing 19.21 Datenbank anlegen

Diese Datenbank wollen wir nun im Folgenden auch benutzen, was wir mit folgen-der Direktive erreichen:

mysql> USE test;

Listing 19.22 Eine bestimmte Datenbank benutzen

Tabellen anlegen und füllen

Eine eigene Tabelle legt man wiederum mit dem Schlüsselwort CREATE an. BeimErstellen einer Tabelle muss man auch immer gleich die zugehörigen Spalten samtihres Typs und anderer Attributwerte angeben:

mysql> CREATE TABLE adressbuch (-> vorname VARCHAR(25),-> nachname VARCHAR(25),-> telefon VARCHAR(15));

Listing 19.23 Eine Tabelle anlegen

643

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 644 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

In diesem Beispiel wurde ein einfaches Telefonbuch erzeugt, bei dem jeder Ein-trag einen Vor- und Nachnamen sowie eine Telefonnummer besitzt. Alle Spaltenhaben im Beispiel denselben Datentyp: VARCHAR(25) bezeichnet Zeichenketten dy-namischer Länge mit maximal 25 Buchstaben. Das Beispiel ist nicht sonderlichdurchdacht, da es zu unschönen Effekten kommt, wenn zu einer Person beispiels-weise zwei Telefonnummern gespeichert werden sollen. Aber solche Fragen sindnicht Teil unseres Buches, daher wollen wir nicht näher darauf eingehen.

Stattdessen wollen wir lieber betrachten, wie man Daten in unsere neue Tabelleeinfügen könnte. Dazu muss natürlich der Tabellenname gegeben sein. Außerdemwerden die Werte in der richtigen Reihenfolge der Spaltennamen erwartet:

mysql> INSERT INTO adressbuch-> VALUES ('Johannes','Plötner','0123/456789');

Listing 19.24 Daten einfügen

Diese kurze Einführung soll als Überblick über die Datenbankerstellung genügen.Wie immer besteht die Welt aus mehr als diesem Buch, so dass wir uns Gott seiDank nicht jedem Detail widmen müssen.

Abfragen starten!

Interessant ist jedoch noch die Art und Weise, wie man auf Daten zugreifen kann.Um Daten abzufragen, wird das SELECT-Statement genutzt. Dazu müssen Sie einKriterium sowie die entsprechende Tabelle angeben. Um sich einfach alles ausgebenzu lassen, wird folgendes Statement benutzt:

mysql> SELECT * FROM adressbuch;+----------+----------+-------------+| vorname | nachname | telefon |+----------+----------+-------------+| Johannes | Plötner | 0123/456789 || Maria | Plötner | 123 || Steffen | Wendzel | 456 |+----------+----------+-------------+

Listing 19.25 Alle Daten einer Tabelle

Spannend wird das Ganze aber erst, wenn wir bestimmte Daten gezielt abfragen.Gezielt suchen

Dazu benutzen wir zusätzlich zu unserem SELECT-Statement eine WHERE-Klausel:

mysql> SELECT vorname, telefon FROM adressbuch-> WHERE nachname='Plötner';+----------+-------------+| vorname | telefon |

644

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 645 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

PHP 19.3

+----------+-------------+| Johannes | 0123/456789 || Maria | 123 |+----------+-------------+mysql> SELECT telefon FROM adressbuch-> WHERE vorname='Steffen';+---------+| telefon |+---------+| 456 |+---------+

Listing 19.26 Gezielte Abfragen

Unsere kleine Einführung in SQL endet hier fürs Erste. Sehen wir uns nun an, wiedies alles in der Praxis eingesetzt wird. Schließlich wird man dort kaum mit demmysql-Tool herumfingern, um an irgendwelche Daten heranzukommen.

19.2.3 APIs

In der Regel möchte man aus verschiedenen Programmen heraus auf die Funktio- ... und PHP?

nalität von MySQL zugreifen können, anstatt diese Features alle selbst und damiteine eigene Datenbank zu implementieren. Aus diesem Grund gibt es für jede min-destens halbwegs relevante Programmiersprache eine SQL-API, über die man auchmit MySQL sprechen kann.

Was uns interessiert, ist nun der Zusammenhang mit PHP. Mit diesem wollen wiruns im nächsten Abschnitt befassen.

19.3 PHP

Auch wenn viele »Informatiker« bei der Frage nach ihren Programmierkenntnissendie Sprache HTML angeben, so hat die Hypertext Markup Language rein gar nichtsmit Programmierung an sich zu tun. (X)HTML ist eine reine Seitenbeschreibungs-sprache.

Eine Seitenbeschreibungssprache wie HTML beschreibt nur das Aussehen und die Strukturvon Dokumenten, aber nicht ihr Verhalten.

Mit anderen Worten: Man kann mit HTML zwar sagen, dass ein fett gedruckterText neben einem Bild mit grüner Schrift auf blauem Untergrund erscheinen soll,

645

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 646 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

jedoch muss man diesen Text bereits bei der Erstellung des Dokuments von Handstatisch eintragen.

Möchte man den Text dynamisch erstellen und beispielsweise die beim AufrufDynamischer Inhalt

jeweils aktuelle Uhrzeit anzeigen, dann kommen Skriptsprachen wie PHP insSpiel. Dazu muss der Webserver selbstverständlich entsprechend konfiguriert sein,schließlich soll das nun dynamische Dokument zuerst durch einen Parser gejagtwerden, der die Skriptbefehle auswertet und am Ende pures (X)HTML ausspuckt.Diese Ausgabe wird bei jedem Aufruf neu erzeugt, bevor sie schließlich an denClient geschickt wird.

19.3.1 (X)HTML

Bevor wir uns also den eigentlichen Skriptsprachen widmen, möchten wir ein paarWorte über (X)HTML verlieren. An erster Stelle steht dabei die Frage, was das X beiXHTML bedeutet und wo der Unterschied zu HTML liegt.

Die Geschichte von HTML

Dazu müssen wir uns kurz die Geschichte von HTML in Erinnerung rufen. DieSprache wurde 1989 von Tim Berners-Lee und Robert Caillau entwickelt, um mitdem ebenfalls entwickelten HTTP-Protokoll ein verteiltes Informationssystem fürihre Arbeit am Kernforschungsinstitut CERN zu erleichtern. Damals wurde HTMLin erster Linie zur Strukturierung von Textdaten gebraucht; Elemente für die Visua-lisierung wurden erst später hinzugefügt.

Diese Erweiterungen führten zu bekannten Problemen: Da die Spezifikationen zurDarstellung anfangs recht ungenau und sogar unvollständig waren, gab es Spielräu-me bei der Interpretation von HTML-Seiten. Die daraus resultierenden Unterschiedein der Darstellung von Webseiten im Internet Explorer oder im Netscape Navigatorführten so manchen Webdesigner bis an den Rand des Suizids.

Später entwickelte man auf Basis des erfolgreichen HTML die Strukturierungsspra-XML

che XML. Diese Sprache wurde regelrecht hochgejubelt: man könne mit ihr »allesmachen«! Und das stimmt in gewissem Sinne auch: XML definiert nur, wie einDokument strukturiert sein muss. Es wurden ganze Bücher über dieses Themageschrieben, jedoch lässt sich das Wichtigste zu XML in wenigen Sätzen zusam-menfassen:

Mit XML strukturiert man seine Daten durch Tags und Attribute. Tags können Attributeenthalten und weitere Tags umschließen. Dazu muss jedem Start-Tag <Tag> ein schließendesTag </Tag> folgen.

646

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 647 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

PHP 19.3

XHTML ist nun nichts anderes als XML-konformes HTML. Da XML selbst keineAussage dazu macht, welche Tags beziehungsweise Attribute erlaubt sind, definiertman sogenannte Schemata. Und im passenden XHTML-Schema sind eben die fürXHTML vorgesehenen Werte definiert.

HTML »programmieren«

Wie »programmiert« man nun eigentlich HTML? Für einen Einführungskurs eignet Referenzen

sich am besten die Online-Referenz http://de.selfhtml.org sowie natürlich auch dieReferenz des World Wide Web Consortiums http://www.w3c.org.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>Text des Titels</title>

</head><body><h2>Überschrift</h2><p>Text im Absatz</p>

</body></html>

Listing 19.27 Beispiel für eine HTML-Datei

In diesem kleinen Beispiel ist zu erkennen, dass eine Webseite mit der Überschrift»Überschrift« und einem Absatz mit dem Text »Text im Absatz« erstellt wurde. DieTags <h2> und <p> sind dabei intuitiv nach der Strukturierung benannt: headingbedeutet »Überschrift«, und paragraph ist das englische Wort für »Absatz«.

Einige Designrichtlinien

Heutzutage rückt mit XML und dem künftigen Standard XHTML 2.0 die eigentlicheAufgabe von HTML wieder mehr in den Vordergrund: das Strukturieren des Inhalts.Die Visualisierung sollte dagegen über CSS-Stylesheets vorgenommen werden.

Für entsprechende Anpassungen eignen sich besonders die <div>-Tags, da diese Tabellen versus divs

kein festgeschriebenes Erscheinungsbild aufweisen und so frei konfiguriert werdensollen. Vor allem sollte man von einer Layout-Gestaltung mittels Tabellen Abstandnehmen und auf eben diese divs zurückgreifen. Mit einer solchen Umsetzung desLayouts hat man in der Regel auch in exotischen Browsern kaum Darstellungspro-bleme und trägt sogar zur Barrierefreiheit des Internets bei.

Einsteiger neigen des Weiteren auch dazu, auf einer »Homepage« alles unterbringenzu wollen, was sie können oder im Web finden. Bunte, blinkende, mit GIF-Grafikenüberladene Webseiten sind die Folge. Weniger ist da meistens mehr. Und Sie wollen

647

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 648 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

doch auch nicht, dass Ihre Webseite aussieht, als sei sie von einem unter Drogengesetzten Zehnjährigen entworfen worden.

Jedenfalls gibt es im Netz viele gute Seiten – allen voran natürlich die vom W3C(www.w3c.org) –, auf denen man viel über Webdesign und die typischen Fehlerlernen kann.

19.3.2 PHP-Support im Apache aktivieren

Bevor wir nun die ersten dynamischen Webseiten programmieren wollen, müssenModul laden

wir den PHP-Support im Apache aktivieren. Dazu wird ein spezielles Modul benö-tigt, das in der Konfigurationsdatei auch geladen werden will:

$ cat /etc/apache2/mods-enabled/php5.conf<IfModule mod_php5.c>AddType application/x-httpd-php .php .phtml .php3AddType application/x-httpd-php-source .phps

</IfModule>$ cat /etc/apache2/mods-enabled/php5.loadLoadModule php5_module /usr/lib/apache2/modules/libphp5.so$ grep php /etc/apache2/mods-enabled/dir.confDirectoryIndex index.html index.php index.xhtm

Listing 19.28 PHP-Support in Apache 2.x

Ebenfalls müssen die Dateiendungen den entsprechenden MIME-Typen zugeord-net sowie die Indexdateien definiert werden. Die meisten Distributionen bietendafür spezielle Pakete an, die den PHP-Support automatisch zu Ihrem Webbrowserhinzufügen. So reicht beispielsweise unter Debian folgender Befehl aus:

# aptitude install php5 apache2

Listing 19.29 PHP-Apache unter Debian

Anschließend muss der Apache-Server noch über apache2ctl neu gestartet werden.

19.3.3 PHP lernen

Natürlich können wir in diesem Buch keine komplette Einführung in die Program-miersprache PHP geben; der Verlag Galileo Press hat eigene Bücher zu diesemThema publiziert. Einige zum Verständnis notwendige Grundlagen möchten wirjedoch vermitteln.

648

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 649 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

PHP 19.3

PHP ist eine in HTML eingebettete Skriptsprache mit Ähnlichkeiten zu C, Java und Perl. MitPHP können dynamisch generierte Webseiten schnell entwickelt werden.

Wie kann man nun PHP nutzen? Betrachten wir dazu ein kleines Beispiel, das zumAusprobieren auf unserem PHP-fähigen Apache einfach nur als .php-Datei unterhalbvon DocumentRoot gespeichert werden muss.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html><head><title>PHP-Testseite</title></head><body><?php echo '<p>PHP-Text</p>'; ?>

</body></html>

Listing 19.30 Ein kleines Beispiel für PHP

Man kann gut erkennen, dass PHP wirklich in HTML eingebettet ist. Der echo-Befehlzur Ausgabe einer Zeichenkette – in unserem Fall ein <p>-Tag samt Text – muss dazuin eine spezielle Umgebung platziert werden. Bei der Anforderung der Webseitedurch einen Webbrowser wird darum der PHP-Parser den Text zwischen <?php und?> nehmen und als PHP-Code interpretieren. Anschließend wird er den HTML-Codegenerieren, der schließlich an den Browser geschickt wird.

Um nun etwas Dynamik in die Sache zu bringen, wollen wir kurz die Auswertungdes folgenden HTML-Formulars betrachten:

...<form action="auswertung.php" method="post"><p>Name: <input type="text" name="name"></p><p>Alter: <input type="text" name="age" /></p><p><input type="submit" value="Abschicken" /></p></form>...

Listing 19.31 Dynamik!

Dieses Formular muss nicht in einer PHP-Datei stehen. Wichtig ist nur, dass das Ziel Formulareauswertendieses Aufrufs ein PHP-Skript ist. Diesem Skript – wie hier der Datei auswertung.php

– werden die Eingaben des Benutzers geschickt, die wie folgt abgerufen werdenkönnten:

649

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 650 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

...<p>Hallo <?php echo $_POST['name']; ?>!Sie sind <?php echo $_POST['age']; ?> Jahre alt.

</p>...

Listing 19.32 Die Eingaben auslesen

Auf die entsprechenden Formulardaten kann über das Array _POST zugegriffen wer-den. Variablen werden in PHP durch ein vorangestelltes Dollarzeichen identifiziertund lassen sich mit echo ausgeben. Selbstverständlich gibt es bei PHP die Möglich-keit von Schleifen, Funktionen oder Abfragen von Bedingungen. Aber für einenersten Eindruck sollen diese Ausführungen genügen.

Für weitere Informationen sollten Sie die offizielle Webseite www.php.net aufsu-chen, auf der Tutorials, eine Referenz und viele praktische Beispiele zu finden sind.

Abbildung 19.1 PHPMyAdmin

650

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 651 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

PHP 19.3

19.3.4 PHP und MySQL

Natürlich ist PHP auch der Punkt, an dem es an die Nutzung der Datenbank gehenkann. PHP bietet dafür sogar verschiedene APIs an. Ausführliche Dokumentationenund Hilfen hierzu gibt es wie immer auf php.net.

Wir wollen uns zunächst einen Anwendungsfall für das Zusammenspiel von PHPund MySQL ansehen: phpMyAdmin, eine Oberfläche zur Administration einer My-SQL-Datenbank über das Web.

phpMyAdmin

Für viele Administrationen ist phpMyAdmin (phpmyadmin.net) das Tool der Wahl, MySQL-Web-administrationwenn es um die Administration einer MySQL-Datenbank geht. Ein übersichtliches

Webinterface und der große Funktionsumfang machen es möglich.

Aber vor allem ist dieses Projekt ein wunderschöner Anwendungsfall, da alle hieralle Aspekte von LAMP verbunden werden. Auch wenn man selbst keinen eigenenWebserver mit MySQL und PHP betreibt, kann man mit phpMyAdmin in Berührungkommen, da viele Webhoster die Software installieren, um ihren Kunden Zugriffauf deren Datenbanken anzubieten.

Datenbank-Zugriff programmieren

Zum Abschluss dieses Kapitels möchten wir Ihnen noch zeigen, wie Sie von PHP ausdirekt auf Ihre MySQL-Datenbank zugreifen können.5 Wir entwickeln zu diesemZweck eine HTML-Seite mit PHP-Code. Mit dieser Seite soll es möglich sein, überNamen von Linux-Befehlen nach deren Zweck zu suchen.

Dazu erstellen wir zunächst eine Datenbank samt Tabelle und loggen uns dazuzunächst mit dem Datenbank-Benutzer root in die Datenbank ein. Es kann sein,dass dieser Benutzer auf Ihrem System kein Passwort hat (drücken Sie dazu einfachbei der Passworteingabe die Enter-Taste), oder dass Sie keinen Benutzernamenangeben müssen (geben Sie in diesem Fall nur mysql ein).

$ mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 51Server version: 5.1.37-1ubuntu5.1 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clearthe current input statement.

5 Für weiteres Know-how zum Thema empfehlen wir Ihnen das ebenfalls bei Galileo Presserschienene Buch »Einstieg in PHP und MySQL« von Thomas Theis.

651

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 652 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

mysql> create database LinuxBefehle;Query OK, 1 row affected (0,05 sec)

mysql> use LinuxBefehle;Database changed

mysql> create table befehle (-> `name` VARCHAR(24) NOT NULL,-> `bedeutung` VARCHAR(128) NOT NULL );

Query OK, 0 rows affected (0,20 sec)

Listing 19.33 Datenbank und Befehlstabelle erstellen

Abbildung 19.2 Das ausgeführte PHP-Skript im Browser

Nun füllen wir die Tabelle mit einigen wenigen Beispielbefehlen:

mysql> insert into befehle (`name`,`bedeutung`) VALUES('ls', 'Listet Dateien in Verzeichnissen auf'),('echo', 'Gibt Text aus'),('uptime','Zeigt, wie lang ein System bereits laeuft'),('uname', 'Systeminformationen erfragen');Query OK, 4 rows affected (0,01 sec)Records: 4 Duplicates: 0 Warnings: 0

652

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 653 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

PHP 19.3

mysql> quitBye

Listing 19.34 Befehlstabelle mit Beispieldaten füllen

Danach erstellen wir ein neues PHP-Skript für die Verarbeitung der Suchanfrage(das Skript muss test.php heißen, damit das HTML-Formular seine Daten an dasrichtige Ziel richtet):

$ cat /var/www/test.php<html><head><title>Linux-Befehle</title>

</head><body>

<form method="POST" action="test.php">Befehl: <input type="text" name="befehl"

value="<?php echo $_POST["befehl"]; ?>"/><input type="submit" /></form>

<?php

if (!empty($_POST['befehl'])) {

/* Zur Datenbank verbinden */$sqluser = 'Benutzername'; /* anpassen*/$sqlpass = 'Passwort'; /* anpassen */if (!($mysql_link = mysql_connect('localhost',$sqluser, $sqlpass))) {

die('Could not connect');}

/* Datenbank auswählen */if (!($db_selected = mysql_select_db('LinuxBefehle',$mysql_link))) {

die('Could not find database');}

/* SQL-Befehl abschicken: Wichtig: Mit Punkten werden in* PHP Strings zusammengesetzt. */$sql_cmd = "SELECT * FROM befehle WHERE `name` LIKE '". $_POST['befehl']."if (!($res = mysql_query($sql_cmd))) {die('Invalid MySQL query');}

653

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 654 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

19 LAMP & Co.

/* Ergebnisse abholen und anzeigen */echo '<br><br><b>Ergebnisse:</b><br>';while ($dsatz = mysql_fetch_assoc($res)) {echo '<b>Befehl:</b> ' . $dsatz["name"] . "<br>";echo '<b>Bedeutung:</b> <i>' . $dsatz["bedeutung"]. "</i><br>";echo '<hr />';}

/* Verbindung zur Datenbank schließen */mysql_close($mysql_link);}?></body></html>

Listing 19.35 Das PHP-Skript

Im Weiteren erstellen wir eine typische HTML-Seite mit einem Formular, wie Siees bereits kennengelernt haben. Mit der PHP-Funktion empty() prüfen wir, ob einWert leer ist oder nicht. Letztlich überprüft die if-Bedingung (grob gesagt), ob derFormularwert befehl leer ist oder nicht.

Mit der Funktion mysql_connect() verbinden wir uns mit der lokalen Datenbankmit dem Benutzer $sqluser und dessen Passwort $sqlpass. Diese beiden Wertemüssen Sie in Ihrem Beispiel anpassen. Schlägt die Verbindung fehl, teilt uns diesdie die()-Funktion mit und beendet das Programm.

Um MySQL zu sagen, mit welcher Datenbank wir arbeiten möchten, wählen wirdiese anschließend mit mysql_select_db() aus, wozu wir ihren Namen und denVerbindungs-Link, den wir von mysql_connect() erhalten haben, übergeben.

Der folgende SQL-Befehl holt alle Datensätze aus der Tabelle »befehle«, bei denender Wert in der Tabellenspalte »name« mit dem Wert, der im Post enthalten ist,beginnt.

In der while-Schleife holen wir alle Datensätze, die zum Ergebnis des SQL-Befehlszählen, ab und speichern bei jedem Durchlauf ein Ergebnis im Array $dsatz. Überdieses (PHP hat assoziative Arrays) können wir einzelne Spalten-Werte des jewei-ligen Datensatzes (etwa den Wert der Spalte »bedeutung«) bequem und einfachabfragen.

Die Verbindung zum Datenbank-Server wird über die Funktion mysql_close()

geschlossen, der wir zu diesem Zweck die Verbindungsinformationen übergeben.

654

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 655 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: kap_lamp.tex , Aktueller Job: buch

Zusammenfassung 19.4

Bevor Sie Webanwendungen für die Öffentlichkeit entwickeln, sollten Sie sichmit dem Thema der Sicherheit solcher Webanwendungen befassen. Das gilt nichtnur für PHP-basierte Webseiten, sondern auch für solche, die in anderen dafürgeeigneten Programmiersprachen bzw. Technologien wie Java Server Pages, Python,Ruby on Rails, Perl, FastCGI/CGI usw. entwickelt werden. Beim Fachbuchhändlergibt es mittlerweile recht viele Bücher zu diesem Thema.

19.4 Zusammenfassung

Ein LAMP-Server bietet ein passendes Umfeld für professionelle dynamische Weblö-sungen. Linux stellt dabei mit seiner sehr flexiblen Konfiguration die Grundlage fürjedes System dar. Darauf aufbauend wird bei LAMP ein Apache-Webserver aufge-setzt, der PHP oder eine andere Skriptsprache unterstützt. Über diese Skriptsprachegreift man auf die ebenfalls lokale MySQL-Installation zu.

19.5 Aufgaben

Installation

Installieren und konfigurieren Sie unter Ihrer Lieblingsdistribution ein LAMP-Sys-tem. Installieren Sie dazu auch phpMyAdmin.

Webhoster

Stellen Sie sich jetzt vor, Sie hätten eine kleine Firma, die Kunden Webspace mitPHP- und MySQL-Support zur Verfügung stellt. Wie müssten Sie Ihr System konfi-gurieren, damit jeder Kunde z.B. per FTP Zugriff auf seinen Webspace hat und allesonline administrieren kann?

655

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1257 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

(()) 338*) 345-FSpot 748. 222.. 223./configure 451.bmp 744.class-Datei 932.exrc 322.fvwm2rc 724.gif 744.jpg 744.pcx 744.pdf 744.png 744.ps 744.rhosts 675.shosts 675.swf 101.tga 744.tiff 744.xcf 744.xinitrc 715, 724.xpm 744.xsession 707/bin/ 185/bin/bash 337/bin/csh 211/bin/echo 224/bin/false 209/bin/jsh 211/bin/sh 208, 210/boot/ 185/dev 129, 166, 185/dev/console 842/dev/dsp 759/dev/hda 191/dev/sda 191/etc/ 185/etc/adduser.conf 385/etc/aliases 627/etc/apt/sources.list 428/etc/cron.d 455/etc/cron.daily 455/etc/cron.monthly 455/etc/cron.weekly 455

/etc/crontab 455/etc/default 383/etc/dhcp.conf 591/etc/domainname 402/etc/exports 599/etc/fstab 172, 423, 473, 896/etc/group 391, 395/etc/gshadow 392, 393/etc/hosts 524/etc/hosts.allow 586/etc/hosts.deny 586/etc/inittab 843/etc/ldap/slapd.conf 405/etc/localtime 510/etc/logrotate.conf 471/etc/master.passwd 857/etc/modprobe.conf 501, 502/etc/modprobe.d 501, 502/etc/modules 501/etc/netstart 850/etc/networks 525/etc/nsswitch.conf 411, 527/etc/passwd 379, 382, 385, 857, 1180/etc/ppp/ 552/etc/ppp/options 549/etc/ppp/pap-secrets 552/etc/rc 849/etc/rc.conf 849/etc/resolv.conf 526/etc/samba/smb.conf 606/etc/securelevel 852/etc/services 673/etc/shadow 380, 387, 857/etc/shells 213/etc/skel 384/etc/ssh/sshd_config 673/etc/sudoers 398, 399/etc/syslog.conf 468/home/ 185/lib/ 185/mnt/ 185/opt 185/proc/ 186/proc/swaps 873/root/ 186/sbin/ 186

1257

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1258 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

/sbin/lilo 835, 837/sbin/nologin 209/tmp/ 186, 421/usr/ 186/var/ 187/var/adm 1111/var/log 1111/var/log/Xorg.log 464/var/log/messages 461, 469/var/log/wtmp 462, 846, 859/var/run/utmp 463, 846/var/spool/cron/crontabs/ 455; 218;; 345<= 343== 343=> 343?-Operator 1015[] 338#define 1026#error 1030#if 1027#include 1028#pragma 1030#undef 1027$ 229$* 229$0 229$? 229, 356$HOME 224, 229, 857$LOGNAME 229, 857$MAIL 857$ORIGIN 659$PATH 217, 229, 857$PS1 229$PWD 229$RPS1 229$SHELL 857$TERM 305$TTL 659$$ 229% (awk-Modulo) 273&= 337&& 218ˆ= 337\ 219<n 337>>n 337˜ 223˜- 223

˜/.ssh/authorized_keys 680˜/.ssh/config 682˜/.ssh/id_rsa 679˜/.ssh/id_rsa.pub 67910base2 52010baseT 5201BSD 512BSD 51

A

a.out 928AAAA 660AbiWord 720Abstraktion 128Abweichungen 426Account 1249acd0 193ACL 423

abfragen 425Arbeitsweise 424setzen 424

ad0 193addgroup 392adduser 383Adobe 771Adressen 1032Adressraum 133, 153

Betriebssystem 161Codesegment 154Heap 157

ADSL 553AfterStep 723agetty 855, 856AIX

Partition 829alias 221, 1203Alias (C-Shell) 366Alias-Check 220alien 440ALSA 761, 762Anführungszeichen 233Anjuta 953Anonymität 1102Anwahlskript 552Apache

access.log 640apache2.conf 632apache2ctl 638error.log 640

1258

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1259 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Geschichte 632Logdatei 640Module 640PHP 640PHP-Support 648usermdir 1187Virtual Host 636VirtualHost 1189

apache 631apache2ctl 638AppArmor 1116apple2 911Application Layer 516apropos 202, 1203APT 428apt-cache 431apt-get 428aptitude 433Arbeitsverzeichnis 194Archiv 487ARP 541, 1249arp 541ARP-Cache 541ARPANET 51Array 339, 1035, 1049

Elementanzahl 340Elemente löschen 341

Array (C-Shell) 364aRts 763as 934ash 211Assembler 120, 934Asymmetrische Verschlüsselung 672at 458AT&T 49, 50atari800 911Athena-Projekt 687ATI 702atq 460atrm 460ATTEMPT 587audacious 763Audio 758Ausgabeumlenkung 235Ausloggen 858authorized_keys 681Autoconf 960Automake 960Automatisierung 454

at 458

Cronjob 454Skripts 454

awk 264, 1204% 273Anweisung 267Anweisungsblock 267ARGC 275ARGV 276Array 279assoziatives Array 280atan2() 291bedingte Anweisung 281BEGIN 268break 286Builtin-Funktion 291continue 286CONVFMT 276cos() 291delete 281do-while 287else 284END 268ENVIRON 276exit 292exp() 291FILENAME 276FNR 276for 288FS 277Funktionen 289if 281in 280int() 291Interpreter 264Interpreter-Variable 275Kommentar 270log() 291Modulo 273next 292NF 277NR 277OFMT 278OFS 278ORS 278rand() 291return 290RLENGTH 278RS 279RSTART 279Schleifen 284

1259

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1260 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

sin() 291sqrt() 291srand() 291String-Funktion 291SUBSEP 279Variable 271Vergleichsoperator 282while 284Zeilenumbruch 270

B

Backticks 233Backup 487

Strategie 1071Base 101bash 212, 335

Autovervollständigung 245Programmierung 335Skripte 335

Basilisk II 911Batch-Job 460Bayes-Filter 618bc 306, 339, 1204

scale 307BCPL 49Bedingte Anweisung 341Bedingungen (C-Shell) 368Befehl

Suche 243Suche (besser) 244Teilersetzung 244vorheriger 243

Befehlsregister 115Befehlssatz 114Bell Labs 49, 50Benevolent Dictator for Life 55BeOS, Partition 830bg 796BibTex 754Bildbetrachter 747BIND

Caching 658forwarders 658Konfiguration 657Master Server 658named.conf 657Slave-Server 658Zones 658

BIOS 828

bison 964BitchX 573Bitweiser Operator 1005Blackbox 725Blacklist 618blkid 191Block 865Bochs 901boot 843Bootcode 828Bootdisk 56Bootflag 892Bootloader 68Bootmanager 830Bootskripte 847Bootstrap 127, 181, 827bootwait 843Boson 788Bourne-Again-Shell 212Bourne-Shell 208, 210BPMN 745Brüche (LATEX) 737Branch 1022break 352, 1014breaksw 371Browser 103, 558, 564

Bookmark 105Lesezeichen 105Tab 105Webseite durchsuchen 105Websuche 104

Brutal Chess 787BSD 46, 1249BSD-Lizenz 59BSDi, Dateisystem 830BSI 1070btrfs 867Bugfix 769Bugs 946bzcat 491bzip2 490

C

C 50, 928, 989, 1249C (Programmiersprache)

– 1003?-Operator 1015übersetzen 992#define 1026

1260

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1261 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

#error 1030#if 1027#ifdef 1027#include 1028#pragma 1030#undef 1027Adresse 1032Array 1035bedingte Anweisung 1010bitweiser Operator 1005break 1014case 1014char 998Datei 1041Datentyp 994Deklaration 994Dekrement 1003do-while 1019double 1000Einerkomplement 1007Endlosschleife 1021fclose() 1044Felder 1035FILE 1043float 1000fopen() 1043for 1020Formatstring 995fread() 1045fscanf() 1042Funktion 1023Funktionsparameter 1023fwrite() 1046goto 1022Hello, World 991Hexwerte 997if 1011Initialisierung 994Inkrement 1003int 996Klammern 1002Kommentar 993logisches ODER 1006logisches UND 1006long 999long double 1000Modulo 1003Nachkommastellen 1002Oktalwert 997Operator 1001

Operatortabelle 1009Pointer 1032Präprozessor 1025printf() 995Rückgabewert 1024Rechnung 1001scanf() 1041Schleife 1016Shift 1005short 999signed 996sizeof 1008strcpy() 1040String 1039strncpy() 1041struct 1037Struktur 1037switch 1014unsigned 996Variable 994Variablennamen 994Vergleichsoperatoren 1010Vorrang 1002while 1016XOR 1007Zeichenkette 1039Zeiger 1032

C++ 928, 1003C-Shell 211CA.sh 1098Cache 117

L1-Cache 117L2-Cache 118L3-Cache 118

cal 1204Calc 98Call by Reference 1034Call Graph 944case 344, 1014case (C-Shell) 371cat 336Catch-all 1077cd 194, 1205cd0 193cdrecord 749Cedega 902cfdisk 70, 890, 892CHAP 547char 998Chargen (Dienst) 590

1261

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1262 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

chat-Skript 550cheese 775chgrp 419CHM-Datei 747chmod 336, 416, 417, 421, 422chown 418chroot 1114chsh 210CIFS 877ClamAV 617CLI 1249Client 179, 557Clinton, Bill 50clisp 934Codec 767, 768coldfire 911colrm 295column 294Common Lisp 934comp 574Compiler 124, 927, 1249Completely Fair Scheduler 142compress 490, 1206configure 451CONSOLE (Variable) 846Container 900Copy-on-Write 140Coredump 937coreutils 425Covert Channel 1101Cox, Alan 55cp 1206CPAN 1048CPU 114, 1249create() 172cron 454Cronjob 454crontab 454, 455

HOME 458MAILTO 458PATH 458SHELL 458

CrossOver 904csh 211

Alias 366Array 364Ausgabeumlenkung 363Bedingungen 368Berechnungen 370breaksw 371

case 371echo 362Eingabeumlenkung 363endsw 371foreach 370if 367Kommentar 362Pipe 363Programmierung 361set 364, 365, 372Skript 361switch 371unset 365Variablen 364Werte einlesen 372while 369

ctrlaltdel 844CUPS 776

Konfiguration 778cut 297cvs 974

commit 975delete 976log 977up 976

CVS_RSH 974CVSROOT 974

D

Dämonprozess 794, 1249da0 193dash 211Datagramm 516, 585date 199, 509, 510, 1207Datei

spalten 303temporär 357

Dateigröße anzeigen 481Dateioperation 1041Dateisuche 300Dateisystem 474, 863

überprüfen 895erzeugen 870formatieren 893Parameter ändern 894

Dateityp 198, 877Datenbank 641Daytime (Dienst) 589dd 873

1262

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1263 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

DDD 936, 940DEB-Format 427Debian 56

stable 56testing 56unstable 56

Debugging 936Default Deny 1076Default Gateway 531Dekrement 1003delgroup 397deluser 390depmod 499Derivat 46Deskriptor 126, 234Desktop 704, 713DeSmuME 911devfs 166, 875Device 1249df 482dgen 912dgram 585dhclient 524, 594DHCP 523, 591

Client 593dhcp-client 523, 524, 594dhcpd 591

dhcpd.conf 591routers 592subnet-mask 592Vergabezeit 592

Dia 745dict 751dictd 751Dienst 583, 588

Chargen 590Daytime 589DHCP 591Discard 589Echo 589Finger 590Netstat 589QotD 590Standarddienst 588Systat 589Time 589

dig 667, 1208digiKam 748Digitalkamera 896dip 550

disabled 587Discard (Dienst) 589DISPLAY 690distfiles 447Distribution 46DivX 767djbdns 661DMA-Controller 116dmesg 1209DNAT 1078DNS 1102

AAAA 660Lookup 663MX 660NS 660PTR 660Query 663Server 657Tools 663TTL 659TXT 660

dnscache 661dnscache-conf 662do-while 1019Dock-Apps 723documentclass 730Dolphin 88, 717Dom0 914Domainname 402DomU 914DoS 587dos2unix 510DOSBox 909DOSbox 909DOSEmu 909double 1000dpkg 436Draw 100, 745DSL 553dsniff 1164du 481Dual-Head 707DVD Ländercode 767DVI-Datei 746

E

E-Mail 613Server 613

echo 224, 225, 336, 585

1263

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1264 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

echo (C-Shell) 362Echo (Dienst) 589Eclipse 953EcryptFS 876ed 328Editor 313

bildschirmorientiert 315Emacs 323gvim 322vi 316vim 322X11 740zeilenorientiert 315

edquota 480EGID 378egrep 262, 1210Einerkomplement 1007Eingabeumleitung 237Electric Fence 950ELF 125, 155, 928elif 341Elm 568else 341, 1012else if 1012Emacs 323, 1210

Fenster 325Kommando 326Konfiguration 328Mark 327Modi 326Puffer 325, 327Region 326

Emacs Lisp 934Embedded-Distribution 47emerge 446Emulator 901Endlosschleife 286, 347, 1021endsw 371EOG 747Epoch 509Erlang 934esac 344esd 763ESMTP 616Eterm 693eth0 519eth0:1 (virtuelle Schnittstelle) 521Ethereal 1164EUID 378EveryBuddy 748

Evince 746Ewing, Larry 61Exec Shield 1117exec*() 139exim 620

ACL 621aliases 627Mailname 622Queuerunner 626Routers 622Spooling 621Transports 622

exit 208, 858exit() 143explodepkg 445export 228expr 339ext2 866, 1249ext3 866, 1249ext4 867, 1249Extended SMTP 616Extreme Tux Racer 787

F

Facility 465false 209, 1210Fast Filesystem 869Fastboot 849FAT12 829FAT16 829, 877FAT32 877fbrun 727fceu 912fclose() 1044fdisk 829, 890Fedora 57, 1119Fehlerausgabe 234Fehlerumlenkung 235Felder 1035Festplatte 191, 863Fetchmail 569, 570FFS 51, 869fg 796fglrx 702fi 341FIFO 239, 881, 1249FILE 1043file 198File Transfer Protocol 561

1264

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1265 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

find 300invertierte Suche 302

finger 585Finger (Dienst) 590fingerd 1069Firefox 103

Bookmark 105Lesezeichen 105Tab 105Webseite durchsuchen 105Websuche 104Wikipedia 105

Firewall 1075, 1249fixed-address 593Flash 771Flash-Datei 101Flash-Player 771Flat Profile 944Flawfinder 948flex 964FlightGear 788float 1000Fluxbox 725Follow-up 574FooBillard 788fopen() 1043for 348, 1020, 1053foreach 1053

C-Shell 370fork() 138Formatieren 486Formatstring 995FORTRAN 49, 934fortune 784FQDN 527, 1249Fragmentierung 157, 865Frame 515fread() 1045FreeBSD

Partition 830Ports 449

Freeciv 786Freemind 744Freie Software 58Freigabe (Windows) 606fscanf() 1042fsck 895FSGID 378fstab 172, 423, 473, 896FSUID 378

FTP 561, 671, 1249Client 561

ftp (Tool) 561, 585FTP-Server 602

Konfiguration 602ftpd 602Funktion 353, 1023

Parameter 355, 1023Rückgabewert 356

FUSE 868fuser 1210FVWM 724FVWM2 724FVWM95 724fwrite() 1046

G

g77 934GAG 828gaim 748gas 934Gateway 531gcc 125

Bibliothek 930ProPolice 1114Verzeichnisse 929

gdb 937Breakpoint 938cont 939help 940kill 938list 938print 940run 938set 939step 939

GDM 707, 842, 843, 856gedit 720, 741General Electric 49Gentoo 57

Ebuild 446Hardened 1119Pakete (Portage) 446

Gerätedatei 163, 881getfacl 425getty 183, 855, 856gftp 563GID 147, 377, 380GIMP 743

1265

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1266 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Git 980GKsu 710Gleitkomma-Datentyp 1000gnbg 912GNOME 719, 764

Panel 89gnome-cd 765GNOME-Shell 91GNU 52, 58GNU Chess 785GNU/Hurd 53GNU/Mach 53Gnumeric 720GnuPG 1104goto 1022gpasswd 393, 396GPG 1103GPicView 723GPL 58, 1249gprof 942Gqcam 775Grace-Time 480Grafikprogramm 743grep 249, 261, 1212

Filternegierung 262Greylisting 619, 626groff 971groupadd 392groupdel 397groups 379, 394grsecurity 1116GRUB 494, 828, 1212GRUB Version 1 831grub-install 831GRUB2 833Gruppenadministrator 394, 396Gruppenpasswort 393Gtk 719GTK+ 983gunzip 1213gv 732, 746gvim 322Gwenview 747gzcat 1213gzip 491, 1213

H

Hacker 1149halt 842, 859

Hardened Gentoo 1119Hardlink 879Hardware

Festplatte 68Laptops 67RedHat HCL 67Unterstützung 65

Hardware-Booten 827Hardwareuhr 510Hash 1049hatari 912hdparam 889head 293, 1214Heap 157hercules 912Herunterfahren 827hexdump 310, 1214Hintergrundprozess 794, 795history 242Hochkomma 234Hochsprache 124Home-Verzeichnis 183Hop 529, 533host 663, 1215Hostname 517hostname 1216hosts.allow 586hosts.deny 586HPFS 829HTML 646

Design 647Geschichte 646

htop 804HTTP 646, 1102, 1249

Telnet 558Hurd 53hwclock 510Hypervisor 899, 913

I

i18n 506ibmcam 774ICMP 1102Iconify 705ICQ 748id 395IDE 952IDEA 672IDS 1121

1266

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1267 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

if 341, 1011, 1052if (C-Shell) 367ifconfig 518, 535

mehrere Adressen 520Image viewer

Bildbetrachter 747IMAP 617Impress 100inetd 557, 583, 584, 1069, 1110

internal 586RPC 584

info 203, 1217init 138, 140, 183, 827, 841, 842

BSD 849Runlevel 183

Init-Skript 841init.d 847INIT_VERSION (Variable) 846initdefault 844inittab 843Inkrement 1003INNd 594Inode 878, 882insmod 501Installation

cfdisk 892OpenBSD 78Slackware 75

installpkg 442Instant Messenger 748int 996Integer-Variablen 337Integral (LATEX) 737Internet Layer 515Internetzugang 545Interpreter 124, 927, 1249Interrupt 119, 124, 141, 161Intrusion Detection System 1121ioctl.save 842IPC 144, 147, 793, 1249IPC im Dateisystem 881IPP 779iptables

ACCEPT 1081DROP 1081filter 1083LOG 1082mangle 1083NAT 1086nat 1083

QUEUE 1081Referenz 1080REJECT 1082RETURN 1081

IPv6 1102IPv6-Support 584ipw2200 522IRC 573, 749

Client 573Irssi 755ISC 657ISDN 57ISO 9660 869, 1249IT-Grundschutz 1070iwconfig 523iwlist 522

J

JabRef 754jail 900Java 113, 125, 744, 754, 931javac 932JFS 867Job-ID 794Job-Shell 211jobs 797journal 866Journaling 866, 1250Joy, Bill 51jsh 211Jump 1022

K

K-Menü 86K3b 749KAME 584Karbon14 102Kate 741kbrequest 844KChart 103kchmviewer 747KCron 718kdbcontrol 508kdbmap 508KDE 85, 713, 764

beenden 715Konsole 693starten 715

1267

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1268 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

System Settings 716Tastenkürzel 716

KDE su 710KDevelop 718, 953KDM 707, 843, 856kdump 945Keep 718Kernel 113, 122, 127, 1250

Grundlagen 114Hardening 1114installieren (BSD) 498kompilieren 492, 494kompilieren (BSD) 495, 497konfigurieren 493Logging 466Modul 163, 1110, 1250Ringpuffer 1209Version 492

Kernel Virtual Machine 919Kernelspace 1250Kernelstack 161Kernighan, Brian 49Kexi 103Keyserver 1109KFormula 103kill 800, 1217killall 810, 811, 1218KitchenSync 103Kivio 101klogd 466KLT 136KMail 103, 568KMenuEdit 716KMix 764KNode 578Knode 103Knopper, Klaus 57Knoppix 57Knotenpunkt 529KNotes 719KOffice 101, 717Kommando-History 242Kommandogruppe 241Kommandosubstitution 232

Anführungszeichen 233Backticks 233Hochkomma 234

Kommentar 337Kommentar (C-Shell) 362Komprimierung 426, 489

Konqueror 717Kontact 103Kontextwechsel 158Kontrollblock (Thread) 148KOrganizer 103Korn-Shell 211KPDF 746KPhotoAlbum 748KPIM 101kpm 719kppp 545KPresenter 101Krita 102KsCD 765ksh 211KSpread 101KSquirrel 747KsystemLog 718ktrace 945Kugar 103KVM 919, 922

QEMU 920Kword 101KWordQuiz 753KWrite 719

L

l10n 506Label 1022LAMP 631LANG 508langdrill 753lastlog 462LATEX 729, 754

Abschnitte 734article 730Auflistungen 735author 734book 730chapter 734emph 734Fettschrift 734Inhaltsverzeichnis 734itemize 735Kapitel 734Kursivschrift 734letter 730Listing 735maketitle 734

1268

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1269 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Mathematik 736newpage 734Package 731report 730section 734textbf 734title 734verbatim 735

LATEXBilder 738Kommentar 739Literaturverzeichnis 738

latex2html 730Laufwerk 191Laufzeitumgebung 902LC_ALL 509ld 935LDAP 403

dc 405dn 405Objektklasse 405Schema 405

ldapadd 408ldapmodify 408, 409Leafpad 723less 197LessTif 982let 338lex 964Lexikalische Analyse 964libc 126, 985libefence 950libmpeg2 985libpcap 542libpng 985LibreOffice 93

Draw 745libstdc++ 985libtar 986Libtool 960LibUnicode 985libUSB 985libXML2 985Liferea 580LILO 828, 835

lilo (Programm) 835lilo.conf 835

lilo 1218Limes (LATEX) 737Link-Count 880

Link-Layer 515Linken 935Links (Dateisystem) 879Links (Web-Browser) 564Linux 46Lisp 934Listen-Ports 540LKM 1110, 1113, 1250ln 879, 1219lo 519Loadable Kernel Modules 1113loadkeys 506lockd 599log_on_failure 587log_on_success 587Logarithmus (LATEX) 737logcheck 472Logdateien 461logger 359, 1219Logging 461, 1068Login 183

grafisch 706login 857Login-Shell 209, 857Login-Versuch 462LoginGraceTime 674Logisches ODER 1006Logisches UND 1006Loglevel 465logout 208, 858logrotate 471Lokalisierung 506long 999long double 1000Long Time Support 57Loop-Device 870Loopback 641LP-Tools 776

lpq 777lpr 777lprm 777

lpq 777lpr 777lprm 777ls 196, 415, 1220lsmod 500lspci 66, 760LTS (Long Time Support) 57Lua 934LVM 482

1269

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1270 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

LXDE 722lynx 564

M

Mac OS XPartition 830

mac2unix 510Mach 53mail (Konsolenprogramm) 565mail (Tool) 565Mail-Exchanger 660Mailname 622Mailprogramme 565mailq 626Make 954make 452, 1221

Aufruf 959clean 959install 959

Makefile 955Makros 958Shellvariablen 959Suffixregeln 957Target 955

makepkg 445Makros 1026malloc() 130man 200, 1222Mandatory Access Control 1118Mandrake 57Mandriva 57Manpage 200, 1222

erstellen 970Mantisse 1000Maschinensprache 114Masquerading 1078Master Boot Record 828Math 100Mathematische Zeichen 736max-lease-time 592MBR 182, 828McDonald, Peter 56mdadm 485Mehrzeiliges Kommando 219Menü erstellen 351Mengensymbol (LATEX) 736menu.1st 832Message Queue 819Metadaten 427

Metrik 533Microkernel 53mingetty 855, 856Minix, Dateisystem 829misc 574mke2fs 896mkfifo 1222mkfs 893, 1195mkisofs 749mkreiserfs 896mkswap 873mktemp 357MLS 1101MMU 151Modems 548modinfo 500modprobe 499modules.dep 499Modulo 1003Monitoring 1121more 197, 238most 197Motif 982Motion 775mount 477, 486mountd 599Mounting 172Mozilla 568Mozilla Firefox 103MP3-Player 757, 763, 896mplayer 768mtree 1118Multiboot 68MULTICS 49Multilevel Undo/Redo 315Multiline Kommando 219Multimedia 757

Audio 758Video 766

Multiple Document Editing 315Multitasking 115, 129, 1250Multiuser 1250Multiuser-Modus 842Murdock, Ian 56Mutt 568mv 1223MX 660MX-Record 616MySQL 641

Administration 641

1270

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1271 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Datenbank anlegen 643my.cnf 641mysql 641Tabelle anlegen 643

N

Nagios 1135Hostgruppen 1143Hostobjekte 1142Installation 1137Kommandos 1146Konfiguration 1140Kontakte 1145Kontaktgruppen 1145Plugins 1138, 1147Serviceobjekte 1144

named 1224Start 660

Named Pipe 239, 881, 1193named.conf 657NASM 934NAT 1078ncurses 982NEdit 741nestra 912Net/1 51NETBIOS 528NetBSD 52

Partition 830Ports 447

netconfig 522nethack 783netpkg 441netstat 529, 535Netstat (Dienst) 589Network Access Layer 515Network File System 598Netzwerk

Setup 517Netzwerk-Scanner 1122Netzwerkverbindung 535newgrp 394news 574Newsfeed 579Newsgroup 573NeXTSTEP

Partition 830NFS 180, 598, 1250

async 600

Client 601Dateisystem 875dev 601exec 601exports 599Netzmaske 600nodev 601noexec 601nosuid 601nouser 601Server 599suid 601sync 600user 601Wildcard 600

nfsd 599nice 813NIS 400nl 293, 1224Nmap 1149

Praxis 1158nmbd 606NNTP 575, 1102, 1250

ARTICLE 576Client 577GROUP 576HELP 576LIST 576POST 576QUIT 576Server 594

nologin 209nowait 585NRPE 1149NRU 1102NS 660NSCA 1149nslookup 665nsswitch.conf 527NTFS 475, 829, 877NTP 572ntpdate 572Nullmodem 548Nullmodemkabel 547NVIDIA 702NWD 1101

1271

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1272 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

O

O(1)-Scheduler 141OASIS 93Oberfläche 687objdump 155Objektdatei 928od 310, 1225off (init) 844Offenes Relay 615Oktalzahl 416Okular 746once 843ondemand (init) 844only_from 587Open Source 1250open() 170, 172Open-Source 769Openbox 723OpenBSD 1118

Installation 78Partition 830Ports 448

OpenLDAP 405OpenMortal 786OpenMotif 982openntpd 572OpenOffice.org 93

Base 101Calc 98Draw 100, 745Impress 100Math 100

OpenPAM 1118OpenSSH 671

Konfiguration 673OpenSSL 1098openSUSE 71OpenVPN 1095

Client 1101Konfiguration 1099Roadwarrior-Setup 1099Server 1099

Openwall 1116, 1119Orange 722ordered 867Orthogonalität 180OSS (Open-Sound-System) 759, 762OWL 1116, 1119

P

p7zip 491Page Fault 152Pager 197Pagetable 150Paging 149Pakete 425

konvertieren 440Paketmanagement 59, 427

Metadaten 427palimpsest 885PAM 410, 411PAP 547Parameter 355Paravirtualisierung 900Partitionstabelle 829Partitionstyp(en) 829pase 297passwd 387, 420paste 297, 1225Patch 55PATH 437, 846

erweitern 335PaX 1117PCAP 542pcap 985pcsx 912PCT (Protocol Channel Tool) 1102PDF-Datei 746pdf2ps 1192pdflatex 732, 1192pdftohtml 263pdftops 263pdftotext 263pdksh 211PDP-11 50pearpc 912Peers 546Perfect Forward Secrecy 1096Perl 930, 1047

close 1064CPAN 1048Datei lesen 1063Datei schreiben 1063for 1053foreach 1053if 1052Kontrollstruktur 1052m 1060

1272

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1273 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Modul 1047open 1062regulärer Ausdruck 1059s 1060Subroutine 1057TIMTOWTDI 1055tr 1062Typisierung 1050unless 1055until 1055Variable 1049while 1054

perldoc 931Personal Firewall 1077PGP 1103pgrep 810PHCCT 1102PHP 645, 648

MySQL 651phpldapadmin 407π (LATEX) 738PID 137, 146Pidgin 748pidof 810, 1226Pine 568ping 541Ping Tunnel 1102Pipe 238

Ausgabe duplizieren 239Pipe (C-Shell) 363pipe() 815pkgsrc 447pkgtool 442pkill 810Pointer 1032Pool (btrfs) 867Pool (ZFS) 867POP3 617, 1102poppler-utils 263Port 59Port-Management 450

FreeBSD 449NetBSD 447OpenBSD 448

portmap 400, 1069Ports 426, 427, 446Ports Collection 449Portscan

Bannerscanning 1157Fingerprinting 1158

Fragmentierungsscan 1153Reverse Ident Scan 1153TCP Connect Scan 1151TCP Fin Scan 1152TCP Idle Scan 1153TCP Null Scan 1152TCP Syn Scan 1151UDP Scan 1156

Portscanner 1149Portstree 448Posting 574powerfail 844powerfailnow 844poweroff 859powerwait 844powerwaitok 844PPP 546

Anmeldung 546Anwahlskript 552CHAP 547chat 550DSL 553Einwahl 552Modem 548options 549PAP 547, 552pppd 547PPPoE 553Trennung 552

pppd 547chat-Skript 550Konfiguration 549pap-secrets 552

PPPoE 553pppoeconf 554PPRacer 787Präprozessor 992, 1025Pre-shared Key 1096printf() 464, 995printf() (C) 995ProcFS 875Procmail 570, 571Produktsymbol (LATEX) 737Profiling 942proftpd 602Programm 115PROM 827PROMISC-Flag 544Prompt 193, 207, 229ProPolice 947, 1114

1273

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1274 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Protokoll 513Protokollstatistik 536Proxy

Squid 1091transparent 1090

Proxyserver 1088, 1250Prozess 132, 145, 793, 1250

Ende 142Erstellung 138interaktiv 141jobs 797Priorität 141, 811rechenintensiv 141

Prozessart 794Prozessgruppe 241

Hintergrund 242Prozesshierarchie 140, 146Prozessor 114

Befehlssatz 114Register 115Ringe 120

Prozessstatus 808Prozesstabelle 145, 805ps 808PS-Datei 746ps2pdf 730pscan 948Pseudo-Dateisystem 875, 1250pstree 805PTR 660pulseaudio 763PULT 136PuTTY 676pwd 194, 1227Python 934

Q

QEMU 920QNX

Partition 829QotD (Dienst) 590Qt 983Quake 782Quanta+ 954Queuerunner 626quiz 753Quota 478, 1250

aktivieren 478edquota 480

Grace-Time 480setzen 479

quota (Tool) 480Quota-Support 478quotaoff 479quotaon 479qwertz 506

R

R-Dienst 590R-Tools 560, 671Rückgabewert 1024RAID 483

Level 0 483Level 1 483Level 5 483

RAM 1250Ramdisk 485, 872range 592rar-Archiv 491RATS 948rc.d 847rcp 560read 227, 1227read() 172readdir() 172readline 985readonly 228reboot 859reboot (Runlevel) 843rec 574Rechner

bc 306Rechtemaske 416Rechteverwaltung 188, 415

Eigentümer ändern 418Gruppe ändern 419Rechte ändern 416Sticky-Bit 421umask 422

recode 510RECORD 587Record

Siehe Struktur 1037Red Hat 57Redundanz 177regex 249, 1059Register 115Reguläre Datei 878

1274

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1275 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Regulärer Ausdruck 249, 265, 618, 1059(xyz) 260{xyz} 261Aufbau 251Geschwindigkeit 262Wiederholung 260

ReiserFS 867, 1250Relativer Pfad 217Relay (SMTP) 615Remote-Logging 470removepkg 443renice 813Repository 427Resident Set 158respawn 843Ressourcenverwaltung 132Restricted Shell 1112return (Funktionen) 356Reverse Proxy 1090rexec 560RGID 378Ringpuffer 1209Ristretto 722, 747Ritchie, Dennis 50rksh 1113rlogin 560rmmod 501ROM 1250root 189, 378, 387, 397, 674Rootdisk 56route 530, 532, 533Router 531Routers (Exim) 622Routing 529

Routing-Tabelle 529Routing-Tabelle 529RPC 401, 599rpc.lockd 599rpc.mountd 599rpc.statd 599rpcinfo 403RPM 57rpm 440RPM-Format 427RSA 672RSBAC 1119rsh 560RSS 579Ruby 934RUID 378

Rule Set Based Access Control 1119Runlevel 183, 841, 842, 845, 846

ondemand 844Skript 841

runlevel (Programm) 846RUNLEVEL (Variable) 846

S

S/MIME 1103, 1110Samba 528, 605, 877

LDAP 610SANE 780Sauerbraten 787scanf() 1041SCHED_OTHER 812Scheduler 140

CFS 142O(1)-Scheduler 141

Scheduling 119, 140, 811kooperativ 160

Scheme 934Schleife 346, 1016Schleifenabbruch 352sci 574scp 1228script 310, 1228scriptreplay 1229ScummVM 907sd0 192SDL 762SEBSD 1116Secondary Boot 828Secure Copy 677Secure Shell 671Securelevel 852security through obscurity 1078sed 253, 1230

(Ausdruck) 260{Ausdruck} 261Befehle 255Befehlsliste 256Holdspace 256Patternspace 256s-Befehl 258w-Befehl 257Wiederholung 260y-Befehl 258Zeilenfilter 259

Seitenbeschreibungssprache 645

1275

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1276 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

select 351SELinux 1116Semaphore 817Sender Policy Framework 616seq 1230Server 179, 583set 227setfacl 424SetGID-Flag 420setuid() 420SetUID-Flag 420SFTP 676SGID 378sh 210Shared Libraries 934Shared Memory 822Shell 178, 207, 585

Array 339bc in Pipe 339beenden 858Editor 313EDITOR (Variable) 334Funktion 353Integer-Variable 337Kommentar 337Menü erstellen 351Prompt 193, 207, 229rechnen 337Startvorgang 857Variable 225verlassen 858

Shellprozess 795Shellskript 336Shellskriptprogrammierung 335, 361Shiften 1005short 999Shotwell 748showmount 601shsh 211shutdown 845, 859, 1231Shutdown (Vorgang) 128, 858Sicherheit 1067

Benutzerrechte 1068Logging 1068Netzwerkdienste 1068

SIGALRM 801SIGCONT 801SIGHUP 801SIGKILL 144, 801Signal 144, 799

signed 996SIGSTOP 801SIGTERM 144, 801simh 912Single-User-Modus 842sizeof 1008Skalar 1049Skalierbarkeit 180Skript-Interpreter 337slackpkg 441Slackware 56

Installation 75Packages 441

slapt-get 441sleep 359, 1231Slice 193slrn 577SLS 56Smalltalk 934Smarthost 615SMB 877, 1250smb.conf 606smbd 606SMTP 613, 1102, 1250SMTP-Server 620SNAT 1078sndconfig 760Sniffer 1162Sniffing 542snort 1122

config 1128Installation 1122preprocessor 1130Sniffer 1123

Snownews 579SOA 659

Expire 660Refresh-Number 660Retry-Number 660Serial-Number 660TTL 660

soc 574SOCK_DGRAM 585SOCK_STREAM 585Sockets 824, 881Soft Landing System 56softgun 912Softlink 879SoftRAID 482

konfigurieren 484

1276

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1277 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

mdadm 485SoftUpdates 869Softwareinstallation 425Solaris 900

Partition 830Trusted Solaris 1118

sort 298, 1232Sound 762sox 766Spam 617SpamAssassin 617spectemu 912Speicher 115, 116

Hierarchie 117Wort 116

Speichermanagement 149Speicherzugriffsfehler 130, 152SPF 616Spiele 757, 781SPIM 912split 303, 1232Spooling 132, 181Spooling (exim) 621sprayd 585SQL 642

DATABASE 643INSERT 644SELECT 644TABLE 643

Squid 1091Konfiguration 1092

SSH 560, 671Port-Forwarding 682Protokoll 1 672Protokoll 2 672Public-Key-Login 678Remote-Login 676Root-Login 674scp 677, 680Secure Copy 677Secure File Transfer 681Serverkonfiguration 673sftp 676, 681ssh 676Tunnel 682X11 Forwarding 676, 681

ssh 1233SSL 640Stack 133, 134, 158Stack Smashing Protection 1117

Stallman, Richard 52Standalone 584Standardausgabe 234Standardeingabe 234StarDict 751startkde 715Startleiste 706statd 599State-Regel 1076STDERR 234STDIN 234STDOUT 234Steganografie 1101stella 912Sticky-Bit 421strace 945strcpy() 1040stream 585Strg + D 858Strings 1039

ausgeben 1040kopieren 1040vergleichen 344

strncpy() 1041struct 1037Struktur 1037su 397Subroutine (Perl) 1057Subshell 241, 1250Subversion 978Subvolumes (btrfs) 867Suchen (Datei) 300sudo 398

/etc/sudoers 399SUID 378sulogin 842Summenzeichen (LATEX) 736SuperTux 787SUSE 71SVR4

Geschichte 50init 841

Swap 872, 1250Verschlüsselung 874

Swap-Datei 873swapon 873Swapping 150SWF-Datei 771switch 1014switch (C-Shell) 371

1277

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1278 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Sylpheed 578sylpheed 568Symbolischer Link 879Symmetrische Verschlüsselung 672sync 600, 1234Syntax-Analyse 964Syntax-Highlighting 314Syscall 121, 122, 130, 1250

create() 172exec*() 139exit() 143fork() 138open() 170, 172read() 172readdir() 172setuid() 420syslog() 464unlink() 172write() 126, 172

Syscall-Interface 799sysctl 534sysfs 168sysinit 844Syslog 359syslog 587, 674syslog() 464syslog-ng 467syslogd 180, 464

Konfiguration 468logcheck 472logrotate 471Remote-Logging 470

SysRq 504Systat (Dienst) 589System Settings 716System V 50Systemarchitektur 113, 122

Abstraktion 128Fairness 119Performance 127Schutz 119Virtualisierung 129

systemsettingsSystem Settings 716

systrace 1118

T

tac 297, 298tail 293, 1234

Tanenbaum, Andrew 53, 54tar 451, 487, 1235Task 132, 137Taskleiste 706Taskwechsel 161Tastaturbelegung 506Tcl 932TCP 585, 1102

Verbindungen 539tcp (Schlüsselwort) 585TCP/IP 51, 513, 1251

Schichtenmodell 514TCP 516

tcp6 585tcpd 586tcpdump 542, 1162tcsh 211, 361tee 239telinit 846telnet 557, 585, 613, 671Telnet (Dienst) 590Temporäre Datei 357TENEX-C-Shell 211TERM 856Terminal 855test 343Text-to-Speech 766Thompson, Ken 49, 50Thrashing 157Thread 132, 136

Kontrollblock 148Thunar 722tiemu 911tiff 985Time (Dienst) 589TIMTOWTDI 1055Tk 932, 983TLB 153Token 967top 804tor 1102Torvalds, Linus 53, 55, 61totem 765touch 1237tr 297, 298, 1238Tracing (Programme) 944Translation Lookaside Buffer 153Transparenter Proxy 1090Transport Layer 515Transports (Exim) 622

1278

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1279 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Treiber 162, 498, 759blockorientiert 165Major-Nummer 166Minor-Nummer 166zeichenorientiert 164

Tremulous 788Trennungsoperator 218true 1238truss 945TrustedBSD 1118ts10 912tune2fs 894, 1196Tux 61TuxRacer 787TV-Karte 772twm 724type 219typescript 310typeset 337Typisierung (Perl) 1050

U

UAE 909, 910Ubuntu 57udev 875UDP 585, 1102udp6 585UFS 869UFS2 869UFS2-Attribute 1118UID 147, 377, 380umask 422UML 745UML (User-Mode-Linux) 900unalias 222uname 199, 222, 498, 1238uncompress 1213Unendlichkeit (LATEX) 737ungif (Library) 985uniq 298, 1239Unity 720Unix 49

BSD 50Geschichte 49Logging 1111Partitionierung 1112Philosophie 175Sicherheit 1067trojanisches Pferd 1110

Unix Domain Sockets 824Unix System III 50Unix-Zeit 509unix2dos 510unix2mac 510unless 1055unlink() 172unrar 491unset 226, 341unsigned 996until 348, 1055update-grub 831, 832upgradepkg 444Upstart 852

Job-Skript 852uptime 199, 1240URI 559usb-ohci 773USB-Platte 896USB-Stick 896usbcore 773usbfs 896Usenet 573User-Mode-Linux 900useradd 382userdel 390usermod 388Userspace 175, 1251USV 844utmp 846uucpd 585UUID 191

V

Variablen 225, 228Einbettung 226global 228löschen 226lokal 228schreibgeschützt 228Wert einlesen 227

Variablentyp (Perl) 1049VAX 50Vega Strike 786Vektor (LATEX) 738Verdeckter Kanal 1101Vergleichssymbol (LATEX) 736Versionsmanagement 973Versteckte Dateien 196

1279

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1280 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Verzeichnis 878Verzeichnisdienst 400, 403vfat 896VFS 172, 180, 865, 1251vi 316, 1240

ausschneiden 319autoindent 321Eingabemodus 317ersetzen 319Kommandomodus 317Konfiguration 321Navigation 318number 322shiften 320shiftwidth 322showmatch 322showmode 322speichern 317Statuszeile 316Suchfunktion 321tabstop 322Text kopieren 320

vice 912Video-Decoder 767videodev 773vim 322Virenscanner 617Virtual Desktop 706VirtualBox 922VirtualHost 1189Virtualisierung 129, 899Virtuelle Adresse 520Virtuelle Maschine 899Virtuelle Schnittstelle 521Virtueller Speicher 119, 130Visio 745VLC 770VM 899VMware 922voice of God 760VoIP 1102Vokabeltrainer 753Volkerding, Patrick 56Vordergrundprozess 795vt220 856

W

w 463, 1240Wörterbuch 751

WˆX 1117wait 585, 799, 843Warmux 786wc 299, 1241wd0 192Webcams 773Webserver 558WendzelNNTPd 594

Authentifizierung 597starten 596wendzelnntpd.conf 595

wendzelnntpdadm 596wget 565whatis 202, 1241whence 220which 220while 346, 1016, 1054while (C-Shell) 369while-true 347Whitelist 618who 463, 1241whoami 463, 1242whois 667wikipediafs 868Window Maker 723Window-Manager 704, 713Windows 68

Freigaben 605Wine 902, 904Wireless LAN 522Wireshark 1164wish 933WKS 588WLAN 522, 1251

konfigurieren 523Scanning 522

Working Set 157Workspace 706write() 172writeback 867wsconsctl 507, 508wtmp 846, 859Wurzelzeichen (LATEX) 737WYSIWYG 729

X

X-Sessions 709X.Org 688X10R4 687

1280

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1281 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

X11 178, 563, 687, 1251ATI 702Client 688Geschichte 687Konfiguration 694Mausrad 698NVIDIA 702Programme 729Protokoll 688Server 688Terminal 691Toolkit 689vmware 700Window-Manager 704Zugriffskontrolle 690

X11R1 688X11R5 688X11R6 688XArchiver 723xargs 246xauth 691XawTV 774XBoard 785xcalc 694XChat 573, 748xclock 694xconsole 694XDM 843xdm 706xdvi 732xedit 694xemacs 323Xen 913, 922

Dom0 914DomU 914Hypervisor 913xm 917

Xfburn 722XFCE 721

Thunar 722XFree86 688XFS 867xhost 690, 710xhosts 691xine 770Xinerama 707xinetd 583, 587, 1069

defaults 587instances 587Tageszeit 587

UNLIMITED 587xinetd.conf 587

xinetd.log 587xkill 694Xlib 689xload 694xm 917xmag 694xman 694Xnest 709XOR 1007xorg.conf 695

Device 699Files 697InputDevice 697Mausrad 698Module 696Monitor 699Screen 700ServerFlags 697ServerLayout 701vmware 700

Xpdf 746xpdf 732Xsecurity 691Xterm 692xterm 694xterm-color 856xtrs 913xv 747xwininfo 694Xxgdb 936

Y

yacc 964yes 1242yield() 160Yo Frankie 788Yorick 934ypbind 402, 403ypcat 401ypserv 403ypwhich 403

Z

Z-Shell 212Zahlen vergleichen 343zcat 491, 1213

1281

Johannes Plötner & Steffen Wendzel, Linux - Das umfassende Handbuch 5. Auflage Galileo Press, ISBN: 978-3-8362-1822-1Layout: gp.cls, Version 3.4.002 (14th August 2011), (C) Dr. Daniel Lauer, Bonn Mit TEX bearbeitet am 10. Januar 2012, 11:16 Uhr Umlaut-Check: äöüÄÖÜ.

S. 1282 Einstellungen: mit Marginalien – ohne Seitenrand – mit Taben – mit Kapitel-Intro – extra breit – Zoom auf 100.0%Aktuelle Quelldatei: buch.ind , Aktueller Job: buch

Index

Zeichenketten 1039Zeiger 1032Zertifikat 1098Zertifizierungsstelle 1098zfs 867zftp 212zlib 986

Zombie-Prozess 1251Zone 900zsh 212zsnes 913Zugangsschutzsystem 1075zxpdf 746

1282