magnum Linux
Unser Online-Tipp für noch mehr Wissen …
... aktuelles Fachwissen rund um die Uhr – zum Probelesen, Downloaden oder auch auf Papier.
www.InformIT.de
magnum
UTE HERTZOG
kompakt k o m p le t t kompetent
Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar.
Die Informationen in diesem Buch werden ohne Rücksicht auf einen eventuellen Patentschutz veröffentlicht. Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt. Bei der Zusammenstellung von Texten und Abbildungen wurde mit größter Sorgfalt vorgegangen. Trotzdem können Fehler nicht vollständig ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Für Verbesserungsvorschläge und Hinweise auf Fehler sind Verlag und Herausgeber dankbar. Alle Rechte vorbehalten, auch die der fotomechanischen Wiedergabe und der Speicherung in elektronischen Medien. Fast alle Hardware- und Softwarebezeichnungen und weitere Stichworte und sonstige Angaben, die in diesem Buch verwendet werden, sind als eingetragene Marken geschützt. Da es nicht möglich ist, in allen Fällen zeitnah zu ermitteln, ob ein Markenschutz besteht, wird das Symbol ® in diesem Buch nicht verwendet. Umwelthinweis: Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt.
10 9 8 7 6 5 4 3 2 1
08 07 06
ISBN-10: 3-8272-6810-9 ISBN-13: 978-3-8272-6810-5
© 2006 by Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH, Martin-Kollar-Straße 10–12, D-81829 München/Germany Alle Rechte vorbehalten Coverkonzept: independent Medien-Design, Widenmayerstraße 16, 80538 München Lektorat: Boris Karnikowski,
[email protected] Fachlektorat: Detlef Lannert & Michael Gutmann, Düsseldorf Korrektorat: Marita Böhm, München Herstellung: Philipp Burkart
[email protected] Satz: Michael und Silke Maier, Ingolstadt, www.magus-publishing.de Druck und Verarbeitung: Bercker, Kevelaer Printed in Germany
Quickview Teil 1: Grundlagen Im ersten Teil lernen Sie alle Möglichkeiten unter Linux kennen, die ein regulärer Benutzer hat. Für die meisten der in den später folgenden Kapiteln vorgestellten Arbeiten und Aufgaben benötigen Sie spezielle Systemrechte, eine Ausnahme bildet im Grundlagenteil nur die Installation und Deinstallation von Software. Sie erhalten zuerst Informationen darüber, was Linux ist, was es kann und welches die bekanntesten Linux-Distributionen sind. Mit Hilfe des zweiten Kapitels können Sie gleich mit Linux loslegen, denn es beschreibt Ihnen im Detail die Installation von SUSE Linux 10.0, Fedora Core Linux 4.0 und Debian GNU/Linux 3.1. Dasselbe Kapitel zeigt Ihnen auch, wie Sie mit Hilfe von Befehlen oder Tools der grafischen Oberfläche überflüssige Softwarepakete wieder deinstallieren bzw. zusätzlich benötigte Pakete nachträglich installieren können. Wenn Sie zum ersten Mal mit der Befehlszeile von Linux experimentieren möchten, ist Kapitel 3 das Richtige für Sie: dort erhalten Sie Tipps für den Umgang mit Befehlen und zum Thema Hilfe unter Linux. In Kapitel 4 können Sie dann mit Hilfe von vielen verschiedenen Linux-Befehlen Dateien und Verzeichnisse anlegen, löschen und bearbeiten oder für diese Aufgabe auch auf die grafische Oberfläche zurückgreifen. Wie Sie Ihre Dateien und Verzeichnisse unter Linux vor unbefugtem Zugriff schützen, erfahren Sie in Kapitel 5. Hier werden nicht nur die einfachen grundlegenden Zugriffsrechte beschrieben, sondern auch zusätzliche spezielle Rechte und die so genannten Access Control Lists. Wenn Sie nun Freude am Umgang mit der Befehlszeile gefunden haben (obwohl Sie alle bisher vorgestellten Aufgaben auch mit der grafischen Oberfläche durchführen können), können Sie Ihr Wissen über Linux-Shells und deren Möglichkeiten in Kapitel 6 vertiefen. Das letzte Kapitel des ersten Teils zeigt Ihnen schließlich, dass die Multimediawelt Ihnen auch unter Linux offen steht. Sie lernen, Video- und Audiodateien abzuspielen sowie Daten- und Audio-CDs individuell zusammenzustellen und zu brennen.
Teil 2: Systemverwaltung In diesem Teil müssen Sie über die speziellen Administrationsrechte des so genannten Superusers root verfügen. Aus Sicherheitsgründen ist es nur dem Systemadministrator erlaubt, Änderungen am System durchzuführen, zum Beispiel neue Benutzer und Gruppen anzulegen bzw. zu ändern oder zu löschen. Dies wird ausführlich in Kapitel 8 mit Befehlen und Tools der grafischen Oberfläche erläutert. Wie Sie Ihr Linux-System herunterfahren oder eine spezielle Bootkonfiguration einrichten, lernen Sie in Kapitel 9. Kapitel 10 zeigt Ihnen, wie Sie Geräte, wie zum Beispiel eine Festplatte, unter Linux aktivieren und in Ihr aktives Dateisystem einbinden können. Ein besonderes Kapitel der Geräteverwaltung ist die Druckeradministration, die in Kapitel 11 beschrieben wird. Welche Möglichkeiten Sie haben, um laufende Prozesse anzuzeigen und zu manipulieren, wird in Kapitel 12 gezeigt. Das darauf folgende Kapitel ist für Leser gedacht, die ihr System genau überwachen und eventuell mit dem Kernel experimentieren wollen. Wie Sie die wichtigste Aufgabe der Systemverwaltung bewälti-
5
Quickview
magnum
gen, die Datensicherung und -wiederherstellung, wird in Kapitel 14 ausführlich geschildert und in diesem Zusammenhang werden einige Überlegungen zu Datensicherheit und -strategien vorgestellt.
Teil 3: Netzwerk Häufig werden Sie Ihren Rechner nicht als Standalone-Rechner betreiben, sondern ihn in ein bestehendes Netzwerk einbinden bzw. ein Netzwerk einrichten. Das Konfigurieren der Netzwerkkarte und andere grundlegende Netzwerkaufgaben werden in Kapitel 15 beschrieben. Wie Sie ins Internet per Modem, ISDN oder DSL gelangen und welche Möglichkeiten das Internet Ihnen bietet, erfahren Sie in Kapitel 16. Außerdem wird ein Tool vorgestellt, mit dem Sie Ihre verschiedenen Messenger-Dienste problemlos gemeinsam verwalten können. Kapitel 17 ist für Sie interessant, wenn Sie Dateien und Verzeichnisse in einem reinen Linux-Netzwerk mit NFS oder in einem Netzwerk, das aus Microsoft Windows- und Linux-Rechnern besteht, mit Samba freigeben wollen. In Kapitel 18 erhalten Sie eine Einführung in Namensdienste und lernen, wie Sie DNS und NIS unter Linux konfigurieren. Das letzte Kapitel liefert Ihnen schließlich noch einige Überlegungen zum Thema Sicherheit, beschreibt den Umgang mit einem LinuxPaketfilter und informiert Sie über die Möglichkeiten einer Firewall und eines Intrusion-Detection-Systems unter Linux. Anhang A beschreibt den Inhalt der auf DVD beiliegenden openSUSE 10 OSS.
6
Inhaltsverzeichnis Quickview .......................................................................................... 5 Liebe Leserin, lieber Leser,................................................................ 21
Teil 1 Grundlagen............................................................... 25 1
2
Was ist Linux? .................................................................................. 27 1.1
Wie alles begann .................................................................. 27 1.1.1 Am Anfang war Unix ............................................... 27 1.1.2 Die »Unix-Kriege« .................................................... 28 1.1.3 Das GNU-Projekt ..................................................... 30 1.1.4 Freie Software und Open Source .............................. 32 1.1.5 Linux und das GNU-Projekt ..................................... 32
1.2
Linux-Distributionen ............................................................ 33 1.2.1 SUSE Linux .............................................................. 33 1.2.2 Debian GNU/Linux .................................................. 34 1.2.3 Fedora Core ............................................................. 36 1.2.4 Mandriva/Mandrake ................................................ 36 1.2.5 Knoppix ................................................................... 37 1.2.6 Slackware ................................................................. 38 1.2.7 Red Hat Linux ......................................................... 38
1.3
Distributionsquellen ............................................................. 39
1.4
Welche Eigenschaften hat Linux? ......................................... 40
1.5
Linux-Komponenten............................................................. 41 1.5.1 Der Kernel ................................................................ 41 1.5.2 Die Shell ................................................................... 42 1.5.3 Das X-Window-System ............................................ 43 1.5.4 System- und Anwendungsprogramme ....................... 43
Installation und Updates................................................................... 45 2.1
Installationsvoraussetzungen ................................................ 45 2.1.1 Hardwarevoraussetzungen für Linux ........................ 45 2.1.2 Linux als zweites Betriebssystem installieren ............ 45
7
Inhaltsverzeichnis
3
4
2.2
Installation ........................................................................... 46 2.2.1 Installation von SUSE Linux 10.0 ............................. 47 2.2.2 Installation von Fedora Core 4.0 .............................. 57 2.2.3 Installation von Debian GNU/Linux 3.1 ................... 65
2.3
Softwareupdates ................................................................... 72
2.4
Softwarepakete installieren und deinstallieren ...................... 72 2.4.1 RPM-Pakete installieren ........................................... 73 2.4.2 Grafische Paketverwaltung mit KDE ........................ 75 2.4.3 Grafische Paketverwaltung mit YaST ....................... 79 2.4.4 Grafische Paketverwaltung mit Fedora Linux ........... 82
2.5
Debians Paketverwaltung ..................................................... 83 2.5.1 Der Befehl aptitude .................................................. 83 2.5.2 Der Befehl apt-get ..................................................... 88
2.6
Quellcode kompilieren.......................................................... 89 2.6.1 Komprimierte Quellcodedateien entpacken .............. 90
Die Befehlszeile und Hilfe verwenden ............................................... 93 3.1
Aufbau von Linux-Befehlen .................................................. 93
3.2
Optionen und Argumente ..................................................... 94
3.3
Hilfe unter Linux.................................................................. 95 3.3.1 Hilfe-Befehle unter Linux ......................................... 95 3.3.2 Grafische Hilfe ....................................................... 100 3.3.3 Internet, Mailinglisten und Webforen ..................... 104
Mit Dateien und Verzeichnissen arbeiten ........................................ 107 4.1
8
magnum
Dateien und Verzeichnisse bearbeiten ................................. 107 4.1.1 Verzeichnisse erstellen ............................................ 107 4.1.2 Dateien erstellen und aktualisieren ......................... 108 4.1.3 Verzeichnisse wechseln ........................................... 109 4.1.4 Verzeichnisse anzeigen ............................................ 110 4.1.5 Dateien anzeigen .................................................... 115 4.1.6 Dateien und Verzeichnisse löschen ......................... 126 4.1.7 Dateien und Verzeichnisse kopieren ....................... 128 4.1.8 Dateien und Verzeichnisse verschieben und umbenennen .................................................... 130
Inhaltsverzeichnis
4.1.9 4.1.10 4.1.11 4.1.12
5
Dateien vergleichen ................................................ 131 Dateiausgabe formatieren ....................................... 136 Mit Dateien arbeiten .............................................. 150 Dateien und Verzeichnisse mit dem Konqueror verwalten.............................................. 158
4.2
Editoren und Werkzeuge .................................................... 164 4.2.1 Der Editor vi .......................................................... 164 4.2.2 Der Editor joe ......................................................... 168 4.2.3 Der Streameditor sed .............................................. 170 4.2.4 Der Befehl awk ....................................................... 174 4.2.5 Dateien mit Hilfe von Editoren in KDE erstellen .... 181
4.3
Links .................................................................................. 183 4.3.1 Hard Links ............................................................. 183 4.3.2 Symbolische Links .................................................. 184 4.3.3 Verknüpfungen in KDE erstellen ............................ 185
4.4
Dateien und Dateiinhalte suchen ........................................ 186 4.4.1 Der Befehl find ....................................................... 186 4.4.2 Der Befehl grep ....................................................... 192 4.4.3 Dateien oder Verzeichnisse mit Hilfe von KDE suchen..................................................... 196
Zugriffsschutz für Dateien und Verzeichnisse anwenden................. 199 5.1
Zugriffs- und Besitzrechte................................................... 199 5.1.1 Grundlagen der Zugriffsberechtigungen ................. 199 5.1.2 Arten von Zugriffsrechten und ihre Bedeutung ....... 201 5.1.3 Überprüfen der Berechtigungen .............................. 202 5.1.4 Setzen von Zugriffsrechten ..................................... 203
5.2
Spezielle Zugriffsrechte....................................................... 210 5.2.1 Das SetUID-Zugriffsrecht ....................................... 210 5.2.2 Das SetGID-Zugriffsrecht ....................................... 211 5.2.3 Das Zugriffsrecht für »Shared Directories« oder »Mandatory Locking-Bit« .............................. 212 5.2.4 Das Sticky Bit-Zugriffsrecht ................................... 213
9
Inhaltsverzeichnis
6
10
magnum
5.3
Datei- und Gruppenbesitz ändern ....................................... 215 5.3.1 Der Befehl chattr .................................................... 215 5.3.2 Der Befehl chfn ...................................................... 216 5.3.3 Der Befehl chown ................................................... 217 5.3.4 Der Befehl chgrp .................................................... 218 5.3.5 Der Befehl groups ................................................... 219 5.3.6 Der Befehl newgrp .................................................. 219
5.4
Access Control Lists ........................................................... 220 5.4.1 Der Befehl setfacl .................................................... 220 5.4.2 Der Befehl getfacl ................................................... 222 5.4.3 ACL-Einträge erzeugen, ändern und löschen .......... 223
5.5
Zugriffsrechte mit Hilfe von KDE einrichten ...................... 225
Grundlagen der Shells und Shellskriptprogrammierung .................. 229 6.1
Arten von Shells.................................................................. 230
6.2
Sonderzeichen der Shells ..................................................... 232 6.2.1 Metazeichen ........................................................... 232 6.2.2 Ein-/Ausgabeumlenkung ......................................... 239 6.2.3 Pipe-Mechanismus ................................................. 241 6.2.4 Gesamtüberblick über die Sonderzeichen ................ 242 6.2.5 Funktionen ............................................................. 244
6.3
Die verschiedenen Shells ..................................................... 245 6.3.1 Die Bourne-Again-Shell .......................................... 245 6.3.2 Die C- und TC-Shell ............................................... 255
6.4
Variable.............................................................................. 258 6.4.1 Shellvariable ........................................................... 259 6.4.2 Standardvariablen .................................................. 261 6.4.3 Shellvariablen der C- und TC-Shell ......................... 264
6.5
Grundlagen der Shellskriptprogrammierung ....................... 265 6.5.1 Variablen der Shellskriptprogrammierung .............. 265 6.5.2 Bedingungsabfragen ............................................... 266
Inhaltsverzeichnis
7
Multimedia ..................................................................................... 271 7.1
Audio unter Linux .............................................................. 271 7.1.1 Audiodateitypen ..................................................... 271
7.2
Soundkarte einrichten......................................................... 272 7.2.1 Der Befehl alsaconf ................................................. 273 7.2.2 Lautstärke bei der Soundkarte regeln? .................... 275 7.2.3 Soundkarte grafisch mit YaST konfigurieren .......... 277 7.2.4 Soundkarte grafisch mit Fedora Linux konfigurieren................................................ 279 7.2.5 Audio-CDs abspielen .............................................. 280 7.2.6 Audiodateien abspielen ........................................... 283 7.2.7 Videodateien abspielen ........................................... 286
7.3
CDs brennen....................................................................... 289 7.3.1 Dateisysteme für CDs und DVDs ........................... 289 7.3.2 CDs mit Linux-Befehlen erstellen ........................... 289 7.3.3 Das Programm K3b ................................................ 296 7.3.4 Encoder-Programme der KDE ................................ 306
Teil 2 Systemverwaltung................................................... 313 8
Benutzer und Gruppen verwalten ................................................... 315 8.1
Gruppen verwalten ............................................................. 315 8.1.1 Gruppen anlegen mit dem Befehl groupadd ............ 316 8.1.2 Gruppen ändern mit dem Befehl groupmod ............ 317 8.1.3 Gruppen löschen mit dem Befehl groupdel ............. 317 8.1.4 Die Datei /etc/group ............................................... 318 8.1.5 Die Datei /etc/gshadow ........................................... 319 8.1.6 Weitere Befehle der Gruppenverwaltung ................ 319
8.2
Benutzer verwalten ............................................................. 322 8.2.1 Defaultwerte zum Anlegen von Benutzern .............. 323 8.2.2 Benutzer anlegen mit dem Befehl useradd ............... 324 8.2.3 Passwortablauf mit dem Befehl passwd steuern ...... 325 8.2.4 Benutzer ändern mit dem Befehl usermod ............... 327 8.2.5 Benutzer löschen mit dem Befehl userdel ................ 328 8.2.6 Die Datei /etc/passwd ............................................. 329 8.2.7 Die Datei /etc/shadow ............................................. 330 8.2.8 Weitere Befehle der Benutzerverwaltung ................. 331
11
Inhaltsverzeichnis
9
12
magnum
8.3
Weitere Konfigurationsdateien der Benutzer- und Gruppenverwaltung ............................... 340 8.3.1 Die Datei /etc/login.defs .......................................... 340 8.3.2 Die Datei /etc/securetty ........................................... 342 8.3.3 Die Datei /etc/shells ................................................ 342
8.4
Initialisierungsdateien ......................................................... 343 8.4.1 Die Datei /etc/profile .............................................. 344 8.4.2 Die Datei ~/.profile ................................................. 345 8.4.3 Initialisierungsdateien einlesen ................................ 346
8.5
Grafische Benutzerverwaltung ............................................ 346 8.5.1 KDE-Benutzerverwaltung ....................................... 346 8.5.2 Gruppenverwaltung mit YaST ................................ 350 8.5.3 Benutzerverwaltung mit YaST ................................ 353 8.5.4 Sicherheitseinstellungen mit YaST .......................... 359 8.5.5 Fedora-Linux-Benutzerverwaltung ......................... 363
Linux booten und herunterfahren ................................................... 367 9.1
Der Bootprozess ................................................................. 367 9.1.1 Der Power-on-self-Test (POST) .............................. 367 9.1.2 Die BIOS-Phase ...................................................... 367 9.1.3 Die Kernel-Initialisierungsphase ............................. 368
9.2
Die Bootloader ................................................................... 368 9.2.1 Der Bootloader lilo ................................................. 369 9.2.2 LILO-Konfiguration über YaST ............................. 375 9.2.3 Der Bootloader GRUB ........................................... 377 9.2.4 GRUB-Konfiguration über YaST ............................ 384
9.3
Bootsektor sichern und wiederherstellen............................. 386
9.4
Die Runlevel von Linux ...................................................... 9.4.1 Überblick über die Runlevel von SUSE Linux 10.0 .................................................... 9.4.2 Überblick über die Runlevel von Debian GNU/Linux 3.1 .......................................... 9.4.3 Überblick über die Runlevel von Fedora Core Linux 4.0 ...........................................
387 388 389 390
Inhaltsverzeichnis
9.4.4 9.4.5 9.4.6 9.4.7 9.4.8 9.5
10
Die Datei /etc/inittab .............................................. 390 Die Run-Control-Skripte ........................................ 393 Run-Control-Skripte mit YaST bearbeiten .............. 400 Run-Control-Skripte mit KDE SysV-Init-Editor bearbeiten............................ 402 Run-Control-Skripte mit Fedora Linux grafisch bearbeiten ................................................. 404
Das System herunterfahren ................................................. 405 9.5.1 Der Befehl shutdown .............................................. 405 9.5.2 Der Befehl init ........................................................ 406 9.5.3 Der Befehl halt ....................................................... 407 9.5.4 Der Befehl poweroff ............................................... 407 9.5.5 Der Befehl reboot ................................................... 408 9.5.6 Der Befehl swsusp .................................................. 408
Geräteverwaltung ........................................................................... 409 10.1
Festplatten verwalten.......................................................... 409 10.1.1 Gerätedateien ......................................................... 410 10.1.2 Gerätenamen .......................................................... 410 10.1.3 Gerätedateien mit dem Befehl mknod erzeugen ...... 416 10.1.4 Gerätedateien mit dem Befehl MAKEDEV erzeugen ................................................................. 417 10.1.5 PCI-Geräte mit dem Befehl lspci anzeigen ............... 418 10.1.6 USB-Geräte mit dem Befehl lsusb anzeigen ............. 419 10.1.7 Festplattenanalyse mit den Smartmontools ............. 420 10.1.8 DMA-Modus von IDE-Festplatten ......................... 422 10.1.9 DMA-Modus von IDE-Festplatten mit YaST aktivieren................................................ 423
10.2
Der Verzeichnisbaum von Linux......................................... 424
10.3
Festplatten partitionieren.................................................... 426 10.3.1 Der Befehl fdisk ...................................................... 427 10.3.2 Der Befehl cfdisk .................................................... 430 10.3.3 Grafische Hardware-Informationen mit YaST ........ 432 10.3.4 Grafische Hardware-Informationen mit Fedora ...... 433 10.3.5 Grafische Festplattenpartitionierung mit YaST ....... 434
13
Inhaltsverzeichnis
14
magnum
10.4
Dateisystem verwalten ........................................................ 436 10.4.1 Lokale Dateisysteme ............................................... 436 10.4.2 Netzwerk- oder verteilte Dateisysteme .................... 437 10.4.3 Pseudodateisysteme ................................................ 438 10.4.4 Der Aufbau von ext2 .............................................. 438 10.4.5 Das Dateisystem ext3 ............................................. 443 10.4.6 Das Dateisystem reiserfs ......................................... 444 10.4.7 Die verschiedenen Dateitypen ................................. 444 10.4.8 Dateisysteme anlegen .............................................. 445 10.4.9 Dateisystemgröße verändern ................................... 453 10.4.10Dateisysteme einbinden .......................................... 455 10.4.11Dateisysteme überprüfen ........................................ 463 10.4.12Informationen zu Dateisystemen ausgeben ............. 474 10.4.13Grafische Systemverwaltung mit KDE .................... 476
10.5
Swapping unter Linux ........................................................ 476 10.5.1 Swapping und Paging ............................................. 476 10.5.2 Der Befehl mkswap ................................................ 477 10.5.3 Der Befehl swapon ................................................. 478 10.5.4 Der Befehl swapoff ................................................. 479 10.5.5 Der Befehl free ....................................................... 479 10.5.6 Swap-Konfiguration mit YaST ............................... 480
10.6
Mit Disketten arbeiten........................................................ 481 10.6.1 Der Befehl fdformat ................................................ 481 10.6.2 Der Befehl setfdprm ................................................ 481 10.6.3 Grafische Diskettenverwaltung mit KDE ................ 482 10.6.4 Die Mtools ............................................................. 483
10.7
Monitor und Grafikkarte einrichten ................................... 486 10.7.1 Der Befehl xf86config ............................................ 486 10.7.2 Die Datei /etc/X11/XF86Config ............................. 490 10.7.3 Der Befehl vidmode ................................................ 491 10.7.4 Monitor und Grafikkarte mit YaST und SaX2 einrichten ............................................... 492
Inhaltsverzeichnis
10.8
Terminal einstellen ............................................................. 504 10.8.1 Der Befehl tty ......................................................... 504 10.8.2 Der Befehl stty ........................................................ 504
10.9
Tastatur einrichten ............................................................. 505 10.9.1 Der Befehl kbd_mode ............................................. 505 10.9.2 Der Befehl kbdrate ................................................. 506 10.9.3 Maus und Tastatur mit YaST und SaX2 einrichten ............................................... 507
10.10 Systemkonfiguration mit SUSE Linux ................................. 512 10.11 Systemkonfiguration mit Debian GNU/Linux..................... 513 11
Drucker verwalten .......................................................................... 515 11.1
Drucksysteme unter Linux.................................................. 515
11.2
BSD-LPD- und LPRng-Druckerverwaltung......................... 517 11.2.1 Der Daemon lpd ..................................................... 517 11.2.2 Die Konfigurationsdatei /etc/printcap ..................... 517 11.2.3 Im Netzwerk drucken ............................................. 519 11.2.4 Druckertreiberfilter ............................................... 520 11.2.5 Druckerverwaltung mit lpc ..................................... 521
11.3
Das neue Drucksystem CUPS.............................................. 522 11.3.1 Das Verzeichnis /etc/cups ........................................ 523 11.3.2 MIME-Types .......................................................... 523 11.3.3 Die Datei /etc/cups/cupsd.conf ................................ 524 11.3.4 Der Daemon cupsd ................................................. 525 11.3.5 Druckerverwaltung über Webserver ....................... 526 11.3.6 KDE-Druckerverwaltung ........................................ 530 11.3.7 Grafische Druckerverwaltung mit YaST und CUPS ..................................................... 531 11.3.8 Grafische Druckerverwaltung bei Fedora ............... 539
11.4
Drucker auf der Befehlszeile einrichten ............................... 542 11.4.1 Bestimmung des Druckziels .................................... 548
11.5
Dateien drucken ................................................................. 548 11.5.1 System V-Druckbefehle .......................................... 548 11.5.2 BSD-Druckbefehle .................................................. 552
15
Inhaltsverzeichnis
12
13
16
magnum
Prozessverwaltung .......................................................................... 555 12.1
Prozesse verwalten.............................................................. 555 12.1.1 Signale .................................................................... 555 12.1.2 Befehle für die Prozessverwaltung ........................... 558 12.1.3 Daemons starten oder beenden ............................... 574 12.1.4 Jobkontrolle ........................................................... 575
12.2
Automatisches Starten von Prozessen ................................. 577 12.2.1 Prozesse einmalig einplanen .................................... 577 12.2.2 Prozesse wiederholt einplanen ................................ 579 12.2.3 Cron-Jobs mit KDE einplanen ................................ 583
12.3
Prozesse mit KDE überwachen ........................................... 585
Kernel-Verwaltung und Systemüberwachung.................................. 589 13.1
Den Kernel verwalten ......................................................... 589 13.1.1 Der Befehl lsmod .................................................... 591 13.1.2 Der Befehl insmod .................................................. 592 13.1.3 Der Befehl modprobe ............................................. 593 13.1.4 Der Befehl rmmod .................................................. 594 13.1.5 Der Befehl modinfo ................................................ 595 13.1.6 Der Befehl depmod ................................................. 595 13.1.7 Die Datei modules.dep ........................................... 597 13.1.8 Die Datei /etc/modules.conf .................................... 597 13.1.9 Die Datei /etc/modprobe.conf ................................. 598
13.2
Kernel konfigurieren........................................................... 599 13.2.1 Kernel übersetzen und installieren .......................... 600 13.2.2 Module übersetzen und installieren ........................ 601
13.3
Das System überwachen ..................................................... 601
13.4
Das System protokollieren .................................................. 611 13.4.1 Der Dienst syslogd ................................................. 611 13.4.2 Die Datei /etc/syslog.conf ....................................... 612 13.4.3 Befehle der Systemprotokollierung ......................... 615 13.4.4 Protokolldateien ..................................................... 620 13.4.5 Grafische Anzeige von Protokolldateien mit YAST..................................... 620 13.4.6 Grafische Anzeige von Protokolldateien mit KDE ...................................... 623
Inhaltsverzeichnis
14
Datensicherung und -wiederherstellung .......................................... 625 14.1
Sicherungsarten und -strategien .......................................... 626 14.1.1 Sicherungsarten ...................................................... 626 14.1.2 Sicherungsstrategien ............................................... 627
14.2
Medien für Datensicherungen............................................. 630
14.3
Tools zur Datensicherung ................................................... 631 14.3.1 Die Befehle dump und restore ................................. 631 14.3.2 Der Befehl mt ......................................................... 635 14.3.3 Dateien archivieren und komprimieren ................... 636
14.4
Datensicherung und -wiederherstellung mit YaST .............. 651
14.5
KDE-Tools zur Datensicherung .......................................... 657 14.5.1 Daten mit Ark archivieren ...................................... 657 14.5.2 Datensicherung mit KDar ....................................... 658
Teil 3 Netzwerk................................................................ 667 15
Netzwerkgrundlagen....................................................................... 669 15.1
Netzwerkgrundlagen .......................................................... 669 15.1.1 Netzwerkkarten ...................................................... 669 15.1.2 Netzwerkkomponenten .......................................... 670 15.1.3 Das OSI-Referenzmodell ........................................ 671 15.1.4 Aufbau von IP-Adressen und Subnetting ................ 672
15.2
Netzwerk einrichten ........................................................... 674 15.2.1 Netzwerkkonfiguration zur Bootzeit ...................... 674 15.2.2 Befehle zur Netzwerkkonfiguration ........................ 675 15.2.3 Netzwerk mit YaST einrichten ............................... 680 15.2.4 Netzwerk mit Fedora Linux grafisch einrichten ...... 688
15.3
Wireless LAN ..................................................................... 690 15.3.1 WLAN mit KWiFiManager einrichten .................... 690 15.3.2 WLAN mit YaST einrichten ................................... 693
15.4
Das Netzwerk überprüfen................................................... 694 15.4.1 Grafische Netzwerktools ........................................ 702 15.4.2 Im Netzwerk arbeiten ............................................. 706 15.4.3 FTP mit KBear durchführen ................................... 718
17
Inhaltsverzeichnis
16
17
15.5
Das Netzwerk verwalten..................................................... 721 15.5.1 Die Netzwerkkonfigurationsdateien ....................... 721 15.5.2 Konfiguration von inetd/xinetd mit YaST ............... 732 15.5.3 Netzwerk-Daemons ................................................ 735
15.6
Trusted Host-Umgebung .................................................... 737 15.6.1 Dateien der Trusted Host-Umgebung ..................... 737 15.6.2 Trusted Host-Umgebung mit Secure Shell ............... 738
15.7
Routing .............................................................................. 739 15.7.1 Routingprozesse ..................................................... 741 15.7.2 Routing mit YaST einrichten .................................. 744
Internetdienste einrichten................................................................ 745 16.1
Internet-Zugang einrichten ................................................. 745 16.1.1 Voraussetzungen für einen Internetanschluss .......... 746 16.1.2 Internet mit YaST einrichten .................................. 747 16.1.3 Internet mit Fedora Core Linux grafisch einrichten .................................................. 762 16.1.4 Den Internetzugang starten ..................................... 767 16.1.5 Webbrowser unter Linux ....................................... 768 16.1.6 Dateien/Grafiken aus dem Internet herunterladen ......................................................... 769 16.1.7 Im Internet suchen .................................................. 770
16.2
E-Mails schreiben und versenden........................................ 772 16.2.1 E-Mail-Dienst eines Providers nutzen ..................... 772 16.2.2 E-Mails empfangen ................................................. 777 16.2.3 Kostenloses E-Mail-Konto aktivieren ..................... 780
16.3
Im Internet chatten ............................................................. 781
16.4
Messenger-Dienste.............................................................. 787
Netzwerke mit NFS oder Samba verbinden..................................... 791 17.1
18
magnum
NFS einrichten.................................................................... 791 17.1.1 Überblick über NFS ................................................ 791 17.1.2 NFS-Prozesse .......................................................... 793 17.1.3 Einen NFS-Server konfigurieren ............................. 796 17.1.4 Konfiguration eines NFS-Clients ............................ 803 17.1.5 Weitere NFS-Befehle ............................................... 806 17.1.6 Überprüfen von NFS-Funktionen ........................... 808
Inhaltsverzeichnis
18
17.2
Der Automounter ............................................................... 808 17.2.1 Funktion und Zugriff des Automounters ................ 808 17.2.2 Das Dateisystem autofs .......................................... 810 17.2.3 Das Programm automount ..................................... 811 17.2.4 Die Konfigurationsdateien des Automounters ........ 812 17.2.5 Automounter starten und anwenden ...................... 814
17.3
Samba einrichten ................................................................ 816 17.3.1 Samba-Daemonen .................................................. 816 17.3.2 Die Konfigurationsdatei smb.conf .......................... 819 17.3.3 Passwortsicherheit unter Samba ............................. 826 17.3.4 Samba-Server starten und anhalten ......................... 830 17.3.5 Samba-Client und Samba-Server verbinden ............ 830 17.3.6 Grafische Konfiguration mit SWAT ....................... 835 17.3.7 Grafische Konfiguration mit YaSt .......................... 840 17.3.8 Grafische Konfiguration mit Fedora Core Linux ................................................. 845
Namensdienste................................................................................ 849 18.1
Einführung ......................................................................... 849 18.1.1 Arten von Namensdiensten ..................................... 850 18.1.2 Der Befehl getent .................................................... 850 18.1.3 Die Datei /etc/nsswitch.conf ................................... 851 18.1.4 Der Name Service Cache Daemon (nscd) ................ 853
18.2
Domain Name Service (DNS) ............................................. 856 18.2.1 DNS-Konfigurationsdateien ................................... 858 18.2.2 Einen DNS-Nameserver konfigurieren .................... 860 18.2.3 Einen DNS-Client konfigurieren ............................. 873 18.2.4 DNS-Befehle ........................................................... 873
18.3
Network Information Service (NIS) .................................... 877 18.3.1 Merkmale von NIS ................................................. 878 18.3.2 NIS-Dateien und NIS-Maps .................................... 878 18.3.3 NIS-Konfigurationsdateien ..................................... 880 18.3.4 NIS-Befehle ............................................................ 883 18.3.5 NIS-Daemonen ....................................................... 886 18.3.6 Konfiguration des NIS-Master-Servers ................... 888 18.3.7 Konfiguration eines NIS-Slave-Servers .................... 889 18.3.8 NIS-Client .............................................................. 890 18.3.9 NIS mit YaST einrichten ......................................... 891
19
Inhaltsverzeichnis
19
A
magnum
Sicherheit ........................................................................................ 897 19.1
Allgemeines ........................................................................ 897
19.2
Arten von Bedrohungen...................................................... 898 19.2.1 Physikalische Bedrohungen .................................... 898 19.2.2 Systembezogene Bedrohungen ................................ 898 19.2.3 Systembezogene Schutzmaßnahmen ....................... 902
19.3
Paketfilter ........................................................................... 906 19.3.1 Der Paketfilter iptables ........................................... 907
19.4
Die Firewall ........................................................................ 915 19.4.1 Bestandteile einer Firewall ...................................... 916 19.4.2 Eine Firewall mit YaST für SUSE Linux einrichten ...................................... 917 19.4.3 Eine Firewall für Fedora Core Linux einrichten................................. 920
19.5
Intrusion-Detection-Systeme (IDS)...................................... 922 19.5.1 Typen von IDS ....................................................... 922 19.5.2 Möglichkeiten eines IDS ......................................... 923 19.5.3 Aufbau eines IDS .................................................... 924 19.5.4 Fazit ....................................................................... 925
Inhalt der DVD-ROM .................................................................... 927 Stichwortverzeichnis ....................................................................... 929
20
Liebe Leserin, lieber Leser, Linux ist für viele ein neues Betriebssystem, an das sie sich nicht recht heranwagen, da hartnäckigen Gerüchten zufolge einerseits der Umgang mit komplizierten Befehlen notwendig ist, andererseits auch die Hardware oft Probleme bereitet und es kaum Anwendungsprogramme für dieses System gibt. Diese Vorurteile waren in der Vergangenheit zum Teil begründet, als es kaum Anwendungssoftware, keine grafischen Verwaltungstools und nur wenig Treiber der Hardwarehersteller für Linux gab. Dieses Bild hat sich aber in den letzten Jahren sehr gewandelt. Die Linux-Installationen haben sich zum Beispiel von komplizierten, umständlichen ASCII-Programmen meist zu einfach handhabbaren, leicht verständlichen Grafikinstallationsroutinen gewandelt. Die meisten Hardwarehersteller liefern inzwischen auch Linux-Treiber für ihre Geräte und sehr viele Systemadministrationsaufgaben lassen sich mit einfachen grafischen Tools durchführen. Was die Applikationen unter Linux betrifft, so hat der Anwender heute die Qual der Wahl: alleine bei den Office-Programmen (Textverarbeitung, Tabellenkalkulation, Präsentationssoftware usw.) stehen ihm die beiden großen kostenlosen Pakete OpenOffice und KOffice zur Auswahl und unzählig viele kleine andere Tools. Auch die großen Softwareanbieter, wie zum Beispiel SAP, folgen dem Trend und bieten ihre Produkte auch für das Betriebssystem Linux an. Auch der Umgang mit komplizierten Befehlen kann in der Regel durch die Verwendung von verschiedenen Administrationstools umgangen werden. Manche Distributionen bieten eigene grafische Verwaltungstools, die auch für Systemadministratoren, die bisher für grafische Betriebssysteme zuständig waren, kaum noch Wünsche offen lassen, wie zum Beispiel SUSE mit YaST. Andere Distributionen bieten die Möglichkeit, die Administrationswerkzeuge der jeweiligen grafischen Oberfläche einzusetzen. Trotzdem haben erfahrene Administratoren und Benutzer auch weiterhin die Möglichkeit, die von den grafischen Tools verwendeten Befehle auch direkt und damit schneller und effizienter einzusetzen. In diesem Buch werden zu jeder Aufgabe immer zuerst die entsprechenden Befehle und dann die Möglichkeiten der grafischen Oberfläche erläutert. Zu den Stärken von Linux gehört neben dieser Wahlmöglichkeit, die Administration grafisch oder über Befehle durchzuführen, natürlich auch die Stabilität des Systems und das Einsparen der Lizenzkosten, nicht nur beim Betriebssystem selbst, sondern oft auch bei der Anwendungssoftware.
Die verwendeten Distributionen Bei den Distributionen fällt dem Anwender die Wahl aufgrund der vielen Möglichkeiten oft schwer. Im ersten Kapitel werden einige Distributionen kurz vorgestellt, in diesem Buch fiel die Entscheidung für folgende drei Distributionen:
쮿
SUSE Linux 10.0 mit KDE 3.4.2
쮿
Fedora Core Linux 4.0 mit KDE 3.4.0-6 Redhat
쮿
Debian GNU/Linux 3.1 (sarge) mit KDE 3.3.2
Obwohl Debian GNU/Linux und Fedora Core Linux standardmäßig die grafische Oberfläche GNOME vorschlagen, ist es kein Problem, dort auch KDE zu installie-
21
magnum
Vorwort
ren (umgekehrt können Sie auch GNOME als Oberfläche für SUSE Linux verwenden). Aus diesem Grund wird in diesem Buch auf die Beschreibung der Möglichkeiten mit GNOME verzichtet und durchgängig KDE als grafische Oberfläche verwendet. Die zusätzlichen Möglichkeiten von GNOME zu beschreiben hätte den Umfang des Buchs gesprengt. Welche Distribution sollen Sie nun verwenden? Wenn Sie bis jetzt noch keine Distribution der anderen vorziehen, sollten Sie die Entscheidung aufgrund Ihrer bisherigen Linux- und Unix-Erfahrung fällen. Ein noch unerfahrener Anwender wird sich wohl mit der Debian-Distribution etwas schwer tun, da diese noch stark auf die Befehlswelt aufbaut. Zum Einstieg ist eher SUSE Linux oder auch Fedora Core Linux zu empfehlen. Einem erfahrenen Anwender oder sogar Systemadministratoren wird aber die stabile Debian-Welt mit Sicherheit ein Anreiz sein. Sie besitzen bereits eine dieser Linux-Distributionen, die aber älter ist? Da Linux im Kern immer dasselbe System bleibt, das nur ständig erweitert wird, können Sie trotzdem dieses Buch verwenden. Die einzelnen Linux-Distributionen bringen zum Teil in einem sehr raschen Tempo neue Versionen heraus, so dass es kaum jemandem möglich ist, ständig die neuste zu installieren. Das ist aber auch nicht notwendig, denn die meisten Tools stehen in der Regel auch bei älteren Versionen zur Verfügung. Viele Versionssprünge enthalten nur kleinere Änderungen, die nicht auf den ersten Blick ersichtlich sind oder auf den einzelnen Anwender keine unmittelbare Auswirkung haben. Eine Ausnahme dazu bildet allerdings der Versionssprung 3.0 auf 3.1 von Debian GNU/Linux, der eine wesentlich einfachere und übersichtlichere Installation und einen Wechsel von KDE 2.2.2 auf KDE 3.3.2 enthielt. Trotzdem können alle Systemaufgaben auch mit Debian GNU/Linux 3.0 genauso wie mit 3.1 durchgeführt werden, auch wenn nicht alle grafischen Tools gleichermaßen vorhanden sind. Sie besitzen eine ganz andere Linux-Distribution? Auch Sie können das Buch verwenden. In diesem Buch werden zu 90 % für fast alle Linux-Systeme gängige Befehle und Tools beschrieben. Distributionsspezifische Befehle oder Tools, wie zum Beispiel YaST von SUSE Linux, werden durchgängig in dem Buch mit einem entsprechenden Symbol gekennzeichnet, so dass Sie wissen, dass es nicht für die anderen Distributionen gültig ist.
Die Zielgruppe und das Buch Dieses Buch ist gleichermaßen für Linux-Einsteiger als auch erfahrene LinuxAnwender, die ihre Kenntnisse vertiefen wollen, und Umsteiger von anderen Betriebssystemen gedacht. Es lässt sich sowohl im privaten als auch im Unternehmensbereich einsetzen, da es sehr viele verschiedene Themen aufgreift. Der Grundlagenteil ist in erster Linie für Linux-Einsteiger und -Umsteiger gedacht. Für erfahrene Linux-Anwender kann er aber durchaus dazu dienen, die Optionen des einen oder anderen Befehls nochmals genauer nachzulesen. Der zweite Teil, Systemverwaltung, geht zum Teil über die Bedürfnisse eines einfachen Benutzers hinaus. Einsteiger und Fortgeschrittene finden aber hier die Informationen, wie das System in den verschiedensten Bereichen den eigenen Bedürfnissen angepasst werden kann, zum Beispiel beim Bootverhalten, Einbinden von neuen Geräten usw. Auch das Verwalten von Prozessen, das Konfigurieren des Kernels, die Systemüberwachung und die Datensicherung sind spezielle Themen für einen Systemadministratoren.
22
Vorwort
Im dritten Teil ist speziell das Kapitel 19, Internetzugang, wieder ein Thema für Einsteiger und Umsteiger, das nicht nur zeigt, wie Sie ins Internet gelangen, sondern auch, welche Möglichkeiten dieses bietet. Die anderen Kapitel behandeln außer den Netzwerkgrundlagen in Kapitel 18 recht spezielle Themen, unter anderem, wie NFS-, Samba-, DNS- und NIS-Server und -Clients eingerichtet werden. Wie bereits erwähnt, beschreibt das Buch einerseits Befehle für Fortgeschrittene oder interessierte Einsteiger, bietet aber andererseits auch fast immer eine Möglichkeit an, eine Aufgabe mit grafischen Tools der KDE bzw. bei SUSE mit YaST durchzuführen. Trotzdem konnte in diesem Buch aufgrund des Umfangs nur ein kleiner Teil aller vorhandenen grafischen Programme beschrieben werden, so werden zum Beispiel in Kapitel 10, Multimedia, nur zwei Tools zum Abspielen von Audiodateien vorgestellt, obwohl es wesentlich mehr für KDE und natürlich unzählige mehr für die anderen grafischen Oberflächen, wie zum Beispiel GNOME usw., gibt. In Kapitel 19, Internet, werden auch nur ein E-Mail-Programm (KMail) und nur ein Webbrowser (Mozilla Firefox) vorgestellt, obwohl Linux sehr viel mehr kennt. Das Buch beschreibt auch nur die Tools für die beschriebenen Verwaltungs- und Systemaufgaben. Alle anderen Tools, wie zum Beispiel Office-Programme, Spiele, Grafikprogramme, hätten seinen Umfang gesprengt. Zu den meisten Themen gibt es eigene Bücher, zum Beispiel zu OpenOffice oder dem Grafikprogramm Gimp. Ebenso verhält es sich mit speziellen Administrationsaufgaben, wie zum Beispiel der Konfiguration eines Webservers, eines LDAP-Servers oder eines Mailservers: über jedes dieser Themen gibt es ganze Bücher, die das jeweilige Thema ausführlich behandeln.
Symbole helfen bei der Orientierung In diesem Buch finden Sie verschiedene Symbole, die Ihnen die Arbeit mit dem Buch erleichtern sollen. Dieses Symbol kennzeichnet Tipps und Tricks, die Ihnen ein besseres Arbeiten ermöglichen. Das kann eine versteckte Funktion sein oder ein anderer wissenswerter Kniff, der etwas aus der Reihe tanzt. Bei diesem Symbol erhalten Sie zusätzliche Informationen und wichtige Hinweise auf weitere Informationen zum Thema. Hinweis und Tipp können sich teilweise überschneiden. Bei diesem Symbol ist Vorsicht geboten! Hier finden Sie Hinweise auf Stolperstellen und Problemquellen.
23
magnum
Vorwort
Außerdem gibt es in diesem Buch Symbole zur Kennzeichnung distributionsspezifischer Informationen: Dieses Icon bezeichnet Red Hat / Fedora Core-spezifische Informationen.
Dieses Icon bezeichnet SUSE-spezifische Informationen.
Und dieses Icon bezeichnet Debian GNU/Linux-spezifische Informationen.
Die Autorin Ute Hertzog studierte Wirtschaftsinformatik und war nach dem Studienabschluss unter anderem mehrere Jahre als Systemadministratorin für Unix, VMS und Microsoft Windows NT tätig. Seit 1998 ist sie freiberuflich tätig als Buchautorin, technische Übersetzerin und EDV-Trainerin und -Beraterin mit den Schwerpunkten Linux, Unix, Microsoft Windows, Office-Programme und Internet/Webdesign. Seit mehreren Jahren hält sie auch Vorlesungen zu den Fächern Wirtschaftsinformatik und Internetpräsenz an verschiedenen Fachhochschulen. Im Jahre 2004 beendete sie ihr Aufbaustudium »Business Information Management« als Master of Science.
Schreiben Sie uns! Autor und Verlag sind immer bemüht, Ihnen, unseren Kunden und Lesern, die optimale Information zum Thema zu bieten. Scheuen Sie sich deshalb nicht, uns über Fehler und andere Ärgernisse zu informieren. Nur so können wir laufend an der Verbesserung unserer Bücher arbeiten. Aber auch Lob, Erfolgserlebnisse und Ihre Ergebnisse interessieren uns. Schreiben Sie uns unter
[email protected] Ihre Mails werden sofort an die Autorin weitergeleitet! Ihr Markt+Technik-Buchlektorat Boris Karnikowski
[email protected] 24
magnum
Teil 1 Grundlagen
1 Was ist Linux? »Wie ich vor einem Monat erwähnte, arbeite ich an einer freien Version von etwas Minix-ähnlichem für AT-386-Rechner. Es hat jetzt endlich den Punkt erreicht, wo es sogar brauchbar ist (oder auch nicht, je nachdem, was man braucht), und ich bin bereit, die Quelltexte zur Weiterverbreitung herauszugeben. Es ist lediglich Version 0.02 ... aber ich habe darauf erfolgreich bash, gcc, gnu-make, gnu-sed, compress, usw. laufen lassen.« – Linus Torvalds, 1991 (Zitatquelle: de.wikiquote.org) Das Betriebssystem Linux hat eine interessante Vergangenheit: Ein finnischer Student, Linus Torvalds, schrieb 1991 auf seinem Personal Computer mit einem 80386-Prozessor einen Terminalemulator unter Minix, um sich das Remote-Einwählen an den Unix-Rechnern seiner Universität zu erleichtern. Das Projekt wuchs, als Linus Torvalds darüber hinaus noch einen Zugriff auf das Minix-Dateisystem und sein Diskettenlaufwerk entwickelte. Aus diesen Aktivitäten entstand allmählich die Idee, ein vollständiges Betriebssystem zu programmieren.
1.1 Wie alles begann ... Linux ist ein scheinbar junges Betriebssystem, das Anfang der neunziger Jahre von Linus Torvalds entwickelt wurde. Da er mit seinem Betriebssystem das alte Betriebssystem Unix nachprogrammierte, reichen die Wurzeln des Betriebssystems sogar bis zum Anfang der siebziger Jahre zurück.
1.1.1
Am Anfang war Unix
Das Betriebssystem Unix wurde ursprünglich als Rechnerumgebung für die Forschung und Entwicklung der Computerwissenschaft entworfen. Heute sind weder Unix noch Linux irgendwelche Grenzen mehr gesetzt, beide sind in allen möglichen Bereichen vorzufinden: für CAD-, Buchhaltungs-, medizintechnische und Internetanwendungen und vieles mehr. Eine große Stärke sind die Maschinenunabhängigkeit und die Stabilität von Unix und Linux, während die anfänglich etwas kryptisch wirkende Befehlssyntax oft als Schwäche betrachtet wird. Diese Syntax ist aber durch die Entstehungsgeschichte von Unix geprägt, die Ende der sechziger Jahre in den AT&T Bell Laboratories begann. Bells Labs besaß zu dieser Zeit ein Multiuser-fähiges, interaktives Betriebssystem Multics, aus dem Ken Thompson 1969 das Betriebssystem Unix entwickelte, das zur Unterstützung eines Programmierteams im Bereich Forschung und Entwicklung gedacht war, aber zunächst als Dokumentaufbereitungssystem für das Patentwesen bei Bells Labs eingesetzt wurde. 1973 schrieb Dennis Ritchie das Unix-System in die Programmiersprache C um, wodurch Unix zu einem plattformunabhängigen Betriebssystem wurde. Diese Portabilität bedeutete, dass Unix auf allen Arten von Rechnern lief und kein so genanntes proprietäres Betriebssystem mehr war, das heißt, an eine bestimmte Hardware eines bestimmten Herstellers gebunden.
27
magnum
Wie alles begann ...
Mitte der siebziger Jahre hatte Unix innerhalb von AT&T eine große Akzeptanz und der Quellcode des Unix-Systems wurde an interessierte Dritte, speziell an akademische Institutionen, gegen eine geringe Gebühr lizenziert. Diese Bildungseinrichtungen, wie zum Beispiel die University of California in Berkeley (UCB), verwendeten Unix nicht nur, sondern entwickelten es weiter. Unix verbreitete sich auf diese Weise an vielen Institutionen, allerdings wurde es lange Zeit von der kommerziellen EDV-Welt nicht nur ignoriert, sondern sogar als nicht ernst zu nehmendes Akademiker-Betriebssystem betrachtet. Später jedoch wurden auch kommerzielle Unternehmen, wie zum Beispiel IBM, Hewlett Packard und Sun Microsystems, auf das Produkt aufmerksam und entwickelten ihre eigenen Unix-Betriebssysteme, zum größten Teil aus dem Quellcode von AT&T-Unix. AT&T hat Unix selbst zu Beginn nicht kommerziell zu vermarkten bzw. als zentrale Stelle für die Weiterentwicklung des Systems zu wirken versucht. Daher entwickelten sich die einzelnen Unix-Varianten zunächst auseinander, so dass sie teilweise untereinander inkompatibel wurden.
1.1.2
Die »Unix-Kriege«
Diese Inkompatibilität förderte nicht gerade das Ansehen von Unix am EDVMarkt. Es entstand der Bedarf, Unix zu standardisieren. Dies begründete sich vor allem darin, dass die Organisation X/Open Unix 1985 als Basis für Offene Systeme wählte. Bei diesem Versuch wollten verständlicherweise alle Unix-Hersteller die Hauptrolle spielen, so dass es in den achtziger Jahren darüber zu richtiggehenden »Unix-Kriegen« kam. Das Konzept der Offenen Systeme wurde 1984 von EDV-Herstellern entwickelt und bezeichnet Systeme, die gemeinsame Standards oder Spezifikationen besitzen. Daraus bildete sich die X/Open Company Ltd., die eine umfassende Beschreibung der Offenen Systeme definieren sollte. Die Unix-Hersteller bildeten dabei zwei Hauptfronten: Die eine Seite nannte sich Unix International (gegründet von AT&T und Sun), die andere konterte mit der Open Software Foundation (OSF). Die Allianzen unterstützten unterschiedliche Unix-Versionen, wobei die Mitglieder der Allianzen auch zum Teil die Fronten wechselten. Die Open Software Foundation (OSF) wurde 1985 von HP, IBM und DEC gegründet und sollte neue Industriestandards für Unix unabhängig von AT&T Unix System V entwickeln. Das Konsortium befürchtete, dass der POSIX-Standard AT&T zu stark bevorzugt würde und dass die beiden ab 1987 kooperierenden Unternehmen AT&T und Sun Microsystems damit Marktbeherrscher würden. Ziel der OSF war es, ein gemeinsames Unix unter dem Namen OSF/1 herauszubringen, das aber bis in die neunziger Jahre noch nicht fertig gestellt war. Mit Unix International (UI) reagierten die Befürworter von AT&T Unix System V auf die OSF. Dazu gehörten außer den Firmen AT&T und Sun Microsystems auch Olivetti, Unisys und andere. Dieses Konsortium veröffentlichte ständig Verbesserungen am System, dazu gehörte aber auch die Übernahme aller bedeutenden Neuerungen aus den Unix-Systemen BSD und Xenix. Auf diese Weise gab es immer weniger Differenzen zum Programmcode von OSF, die Version System V Release 4 enthielt bereits die meisten Eigenschaften dieser Unix-Variante.
28
Kapitel 1 · Was ist Linux?
1983 wurde X/Open gegründet, ursprünglich unter dem Namen Bison von mehreren europäischen Unternehmen, wie zum Beispiel Bull, Siemens und Olivetti. Sie hatten die Absicht, besser für die europäischen Interessen an Unix gegen die von US-Unternehmen einzutreten. Als später aber auch US-Unternehmen zu diesem Konsortium stießen, wurde der Name in X/Open umbenannt. 1995 führte schließlich X/Open die Schutzmarke Unix95 für Computersysteme ein. Das dazugehörende Schutzmarkenprogramm Single Unix Specification stellt sicher, dass die Produkte der Unix-Hersteller bestimmte Kriterien erfüllen. Im Jahre 1996 wurde The Open Group als Fusion von X/Open und OSF mit dem Ziel gebildet, neue Industriestandards für Unix zu bilden, unabhängig vom System V von AT&T. Sie führte schließlich 1998 die Schutzmarke Unix98 ein, die das Basissystem, Server und Workstation umfasst. Die Open Group betreut unter anderem die Standards Motif, CDE, Lightweight Directory Access Protocol (LDAP) und Linux Standard Base (LSB), Letzteres gemeinsam mit der Free Standards Group. Die diversen Gruppierungen sollten durch eine einheitliche Unix-Schnittstelle verhindert werden: die POSIX-Standardisierung vom IEEE, die 1988 unter POSIX.1 veröffentlicht wurde. POSIX (Portable Operating System Interface for UniX) ist eine Schnittstelle zwischen dem Betriebssystem Unix und Anwendungen, die von der IEEE standardisiert wurden. Alle heutigen Unix-Derivate befolgen diese Standards, die nun eine globale Industrienorm nach DIN/EN/ISO/IEC 9945 bilden. Dazu wurde die Benutzer- und Softwareschnittstelle des Betriebssystems in folgenden vier Teilen definiert: 1. Die Basisdefinitionen, die aus einer Liste der im Standard verwendeten Konventionen und Definitionen einschließlich einer Liste der bereitzustellenden C-Headerfiles besteht 2. Die Shell und Hilfsprogramme 3. Die Systemschnittstelle in Form einer Liste von zu unterstützenden C-Systemaufrufen 4. Erläuterungen zum Standard Die Korn-Shell ist übrigens die Standard-POSIX-Shell und Hilfsprogramme wie zum Beispiel awk und echo gehören auch zum POSIX-Standard.
29
magnum
Wie alles begann ...
1.1.3
Das GNU-Projekt
Linux und die dazugehörigen Komponenten können prinzipiell kostenlos aus dem Internet heruntergeladen werden (nähere Informationen dazu finden Sie im nächsten Abschnitt), da das Betriebssystem zum GNU-Projekt gehört. Allerdings kann dies sehr mühsam sein und erfordert in der Regel auch einiges an Fachwissen. GNU bedeutet »GNU is not Unix«. Die Begründer des GNU-Projekts vertreten den Standpunkt, dass Software kostenlos und für jeden frei zugänglich sein sollte. GNU-Software wird zu den Bedingungen der GPL (GNU Public License Agreement) vertrieben, was bedeutet, dass jeder das Recht hat, den Code zu kopieren, ändern und weiter zu vertreiben, allerdings immer unter den Bedingungen der Lizenz. Dadurch werden die Programme auch stets mit ihrem Quellcode herausgegeben. Den Wortlaut der GPL finden Sie auf den Seiten der Begründer des GNU-Projekts, der Free Software Foundation (http://www.fsf.org oder http://www.gnu.org). Zum Teil kommen in diesem Zusammenhang auch noch ähnliche Lizenzen zur Anwendung, wie zum Beispiel Larry Walls Artistic License (http://www.perl.com). Der Ausdruck GNU spiegelt den etwas skurrilen Humor der Open-SourceGemeinschaft wider, denn er definiert den Ausdruck rekursiv. Ein weiteres Beispiel für diese Art von Humor ist der Befehl less (vergleiche Kapitel 7), der ähnlich wie der Befehl more Dateiinhalte auflistet, aber dabei wesentlich mehr Funktionen aufweist. Ein gängiger Spruch der Linux-Gemeinde lautet hier: »less is more«.
Bild 1.1: Website des GNU-Projekts
30
Kapitel 1 · Was ist Linux?
1983 begann Richard Stallman, der über die Kommerzialisierung von Unix verärgert war, mit der Arbeit an einem eigenen Unix-ähnlichen Betriebssystem namens GNU und rief mit der Veröffentlichung des GNU-Manifests (http://www.gnu.org/ gnu/manifesto.html) 1985 eine immer stärker werdende Bewegung für freie Software ins Leben. Es entstand eine große Anzahl von frei verfügbaren Utilities und Programmen unter den Bedingungen der GPL, aber das Betriebssystem Unix selbst war noch kostenpflichtig, GNU sollte Unix-kompatibel sein, da Richard Stallman befürchtete, dass viele Unternehmen ein völlig neues Betriebssystem nicht akzeptieren würden. Außerdem bot sich die Unix-Architektur für seine Ideen hervorragend an, da Unix aus vielen kleinen, in der Regel voneinander unabhängig entwickelten Programmen besteht und viele Bestandteile des Betriebssystems bereits frei erhältlich waren, wie zum Beispiel das X-Window-System. Die Free Software Foundation (FSF) wurde 1985 von Richard Stallman als gemeinnützige Organisation gegründet. Sie bildet die rechtliche und finanzielle Basis für das GNU-Projekt. Unter der GPL veröffentlichte Software wird als »freie Software« verstanden. Um eine Software als »freie Software« zu bezeichnen, muss sie folgende Definition gemäß GNU (Quelle: http://www.gnu.org/philosophy/free-sw.de.html) erfüllen: »Freie Software bedeutet die Freiheit des Benutzers, die Software zu benutzen, zu kopieren, sie zu vertreiben, zu studieren, zu verändern und zu verbessern. Genauer gesagt, bezieht sich der Begriff »Freie Software« auf vier Arten von Freiheit, die der Benutzer der Software hat: –
Die Freiheit, das Programm für jeden Zweck zu benutzen (Freiheit 0).
–
Die Freiheit, zu verstehen, wie das Programm funktioniert und wie man es für seine Ansprüche anpassen kann (Freiheit 1). Der Zugang zum Quellcode ist dafür Voraussetzung.
–
Die Freiheit, Kopien weiterzuverbreiten, so dass man seinem Nächsten weiterhelfen kann (Freiheit 2).
–
Die Freiheit, das Programm zu verbessern und die Verbesserungen der Öffentlichkeit zur Verfügung zu stellen, damit die ganze Gemeinschaft davon profitieren kann (Freiheit 3). Der Zugang zum Quellcode ist dafür Voraussetzung.«
Diese Freiheiten mussten durch eine Lizenz sichergestellt werden, die im Gegensatz zu den üblichen Softwarelizenzen aber nicht das Verändern und die Herausgabe der Software ausdrücklich verbietet, sondern es explizit zulässt. Trotzdem sollte es nicht möglich sein, dass freie Software in kommerzielle Softwareprodukte integriert und anschließend mit einer nicht freien Lizenz weiter vertrieben wird. Stattdessen sollten alle aus der freien Software entstehenden Arbeiten, wie zum Beispiel auch Dokumentationen, ebenfalls derselben Lizenz unterliegen. Da diese Art von Lizenzierung das Gegenteil des bekannten Copyrights darstellt, wird sie häufig auch als Copyleft bezeichnet. Zu der unter der GPL veröffentlichten Software gehören unter anderem die Shell Bash, der Texteditor emacs, das Grafikprogramm GIMP, die grafischen Oberflächen KDE und GNOME und viele mehr.
31
magnum
Wie alles begann ...
1.1.4
Freie Software und Open Source
Der Begriff »Open Source« wurde erst im Jahr 1998 geprägt, als sich die Firma Netscape entschied, den Quellcode des Netscape Navigators freizugeben. Netscape wollte damit wieder mehr Marktanteile für ihre Browsersoftware gewinnen, die in den vorangegangenen Jahren immer mehr der Firma Microsoft zugeflossen waren. Im selben Jahr wurde die Open Source Initiative (OSI) von dem Entwickler des E-Mail-Weiterleitungsprogramms fetchmail Eric Raymond, dem Computerwissenschaftler Bruce Perens und dem Computerbuch-Verlagsgründer Tim O'Reilly gegründet, um die Vorteile der Open-Source-Entwicklung mit speziellen OpenSource-Lizenzen, zum Beispiel der Mozilla Public License, in der Wirtschaft bekannter zu machen. Die Definition von Open Source der OSI unterscheidet sich in ihrer grundsätzlichen Bedeutung nicht von der Definition Freier Software der FSF. »Freie Software« wird allerdings in der Regel automatisch mit dem Begriff »kostenlos« verbunden, vor allem dadurch, dass sie häufig auch kostenlos zur Verfügung gestellt wird. Gemeint war aber eine Freiheit im Sinne von »free speech, not free beer«. Der Begriff »Open Source« sollte dieses Problem lösen. Er erzeugt aber seinerseits wiederum eine Assoziation über die Verfügbarkeit des Quellcodes, ohne gleichzeitig zu verdeutlichen, dass auch die Freiheit, diesen zu benutzen, zu verändern und weiterzugeben, damit verbunden ist. Richard Stallman als Gründer des GNU-Projekts sieht den Unterschied zwischen Freier Software und Open Source folgendermaßen: »Der Begriff ‚Open Source’ wird von manchen Personen so verwendet, als meinen sie mehr oder weniger dasselbe wie freie Software. Ihre Kriterien sind aber weniger streng; sie haben einige Lizenzbeschränkungen akzeptiert, die wir als inakzeptabel ablehnten. Wir bevorzugen den Begriff ‚freie Software’.» Zu den bekanntesten Open-Source-Programmen gehören unter anderem die Browserprogramme Mozilla und Firefox, das E-Mail-Programm Thunderbird, das Office-Paket OpenOffice.org, die Datenbank MySQL und der Webserver Apache.
1.1.5
Linux und das GNU-Projekt
1987 entwickelte der in Amsterdam lehrende amerikanische Informatiker Professor Andrew S. Tanenbaum ein Unix-ähnliches Betriebssystem namens Minix. Es entstand zu Lehrzwecken, um den Studenten die Grundlagen eines Betriebssystems zu verdeutlichen, da die zunehmend restriktiveren Unix-Lizenzen von AT&T immer hinderlicher wurden. Minix selbst hatte nie große Bedeutung, brachte aber Linus Torvalds auf die Idee, Linux zu entwickeln. Im August 1991 teilte Linux Torvalds seinen Plan, ein Betriebssystem zu entwickeln, in einem Beitrag der Newsgroup comp.os.minix mit und stellte im September 1991 die Linux Version 0.01 auf einen öffentlich zugänglichen FTP-Server zum Herunterladen bereit. Der Quellcode für die erste Version umfasste weniger als 300 Kbyte, obwohl er bereits die Bourne-Again-Shell und verschiedene Tools, wie zum Beispiel einen GNU C-Compiler, enthielt. Anfang der neunziger Jahre umfasste das GNU-Projekt fast alles, was ein komplettes System benötigte, wie zum Beispiel die GNU Compiler Collection für diverse Programmiersprachen, den Editor emacs und viele andere Tools, der Kernel selbst jedoch fehlte noch. Die Entwicklung des Mikrokernels GNU Hurd wurde begonnen, konnte aber nicht im geplanten Zeitraum abgeschlossen werden. Daher traf
32
Kapitel 1 · Was ist Linux?
das GNU-Projekt 1992 die Entscheidung, bis zur Beendigung des Kernels GNU Hurd an dessen Stelle den Linux-Kernel einzusetzen. Das neue Unix-Betriebssystem wurde mit der Version 0.73 dem GNU-Projekt hinzugefügt. Auf diese Weise entstand das Betriebssystem GNU/Linux. Der Linux-Kernel 1.0 wurde als erste fehlerfreie Version, in der auch bereits das X-Window-System integriert und TCP/IP implementiert waren, Anfang 1994 an der Universität von Helsinki präsentiert. Mitte 1996 wurde die Kernel-Version 2.0 herausgegeben.
1.2 Linux-Distributionen Linux wird von vielen verschiedenen Institutionen und Unternehmen als Paket vertrieben. Der Umfang einer so genannten Distribution enthält den Linux-Kernel und verschiedene Zusatztools. Der Umfang der Zusatzsoftware variiert von Distribution zu Distribution sehr stark. Kommerzielle Linux-Distributionen enthalten in der Regel auch eine Auswahl an grafischen Oberflächen und eine große Anzahl verschiedenster Programme. Es gibt eine große Anzahl von Linux-Distributionen, die entweder aus dem Internet oder im Handel bezogen werden können. In diesem Abschnitt werden nur die im Moment bekanntesten in Bezug auf ihre wichtigsten Unterschiede beschrieben. In diesem Buch werden die Distributionen SUSE Linux 10, Debian GNU/Linux 3.1 und Fedora Core Linux 4.0 verwendet. Außer den in diesem Abschnitt beschriebenen Distributionen gibt es noch viele mehr, wie zum Beispiel die muLinux-Distribution, die auf eine einzige Diskette passt, oder MkLinux oder LinuxPPC, die auf PCs der Firma Apple laufen, sowie Yoper, Skolelinux, Ubuntu/Kubuntu, kmLinux usw.
1.2.1
SUSE Linux
Eine zurzeit in Deutschland weit verbreitete Distribution ist SUSE Linux. Die aktuelle Versionsnummer lautet 10.0. Zur Distribution gehören mehrere CDROMs und eine DVD sowie ein ausführliches Handbuch, alles in deutscher Sprache. SUSE besitzt ein auch für Neueinsteiger recht einfaches Installations- und Systemverwaltungstool mit dem Namen YAST (Yet another Setup Tool), das aber auch erfahrenen Systemadministratoren alle Wünsche erfüllt. 2004 wurde YaST unter die GPL gestellt.
Bild 1.2: Distribution SUSE Linux 10.0
33
magnum
Linux-Distributionen
Das Unternehmen S.u.S.E. LINUX (Gesellschaft für Software und Systementwicklung mbH) wurde 1992 in Fürth gegründet und zog 1998 nach Nürnberg um. Gleichzeitig wurde der Firmenname in SUSE geändert. Ende 2003 wurde das Unternehmen von der Firma Novell übernommen, die sich davon wieder eine größere Teilnahme am Betriebssystem-Markt versprach. Seit der Version 7.0 gibt es von SUSE Linux für Privatanwender die beiden Varianten Personal und Professional Version, Letztere enthält ein größeres Softwareangebot. Bei der Version 9.1 gab es parallel zur Installations-CD-ROM eine Live-CDROM, mit der das System ohne Installation getestet werden konnte. Die Professional Version enthält außerdem eine zusätzliche DVD mit Software für 64-Bit-Systeme. Die Personal Version gibt es ab Version 9.2 nicht mehr, stattdessen bietet SUSE eine kostenlose Live-CD-Version an. Mit der Veröffentlichung von SUSE Linux 10.0 lautet der Distributionsname für Privatanwender von »SUSE Linux Professional« wieder wie ursprünglich einfach nur »SUSE Linux«. Parallel zum Erscheinen der Version 10 hat Novell das openSUSE-Projekt begründet – ähnlich wie bei Red Hat / Fedora Core wird hier der unter GPL stehende Teil der SUSEDistribution im Internet entwickelt und zum freien Download angeboten. Für kommerzielle Kunden bietet SUSE das Produkt SUSE LINUX Enterprise Server (SLES) in der momentanen Version 9 für bis zu zwei CPUs an.
1.2.2
Debian GNU/Linux
Hinter der Distribution Debian GNU/Linux verbirgt sich kein kommerzielles Unternehmen wie bei den bisher vorgestellten Distributionen. Es ist ein Projekt von Freiwilligen, die daran unbezahlt in ihrer Freizeit arbeiten. Die aktuelle Versionsnummer ist 3.1, die Version wird auch Sarge genannt. Es ist die am weitesten verbreitete nicht kommerzielle Linux-Distribution, die außerdem ausschließlich aus freier Software besteht. Anstelle eines Unternehmens mit dem Namen »Debian« bieten daher auch verschiedene Firmen diese Distribution auf CD-ROM an. Dem Projektteam ist die Betonung der GNU-Komponente sehr wichtig. Diese Distribution ist für Anwender, die tief ins System einsteigen möchten, sehr geeignet, aber nicht für Anfänger, und wird in der Regel ohne gedrucktes Handbuch ausgeliefert. Allerdings liegen umfangreiche Dokumentationen in Dateiform vor, die installiert und offline gelesen werden können. Das Debian-Projekt wurde 1993 von Ian Murdock gegründet. Die Bezeichnung ist aus den Vornamen von Ian Murdock und seiner Frau Debra zusammengestellt. Heute wird das Projekt von über tausend Freiwilligen nach strengen, selbstverfassten Regeln verwaltet, zusammengestellt und ständig erweitert. Diese Richtlinien spiegeln sich auch in einer gut funktionierenden Organisationsstruktur und dem Debian-Gesellschaftsvertrag wider, der unter anderem die offizielle Open-SourceDefinition in Form der Debian Free Software Guidelines (DFSG) enthält. Mit Hilfe des speziellen Paketmanagementsystems APT lassen sich alte Debian-Versionen relativ einfach mit neueren Versionen aktualisieren bzw. Softwarepakete installieren. Sicherheits- und Softwareprobleme von Debian werden öffentlich diskutiert und schnellstmöglich bereinigt. Einen wichtigen Aspekt des Systems stellen die sicherheitsrelevanten Tools für die Systemverwaltung dar, wie zum Beispiel Firewall-Programme, Software zur Integritätsprüfung, allgemeine Prüftools, Paketsignierungs- und -prüfmechanismen.
34
Kapitel 1 · Was ist Linux?
Bild 1.3: Die deutsche Website des Projektteams der Debian GNU/Linux-Distribution
Es gibt viele Linux-Distributionen, die auf Debian aufsetzen, wie zum Beispiel Ubuntu Linux, Kubuntu, Xandros, Kanotix, Knoppix usw. Debian bietet immer drei verschiedene Varianten gleichzeitig an:
쮿
eine »stable version«, das ist die zuletzt veröffentlichte »stabile«, also lauffähige Version, mit sorgfältig getesteten Softwarepaketen
쮿
eine »unstable version«, an der ständig weiterentwickelt wird und die daher noch Fehler enthält
쮿
eine »testing version«, die Pakete enthält und nach ca. 10 Tagen aus der »unstable version« entsteht, wenn bei diesen Paketen keine relevanten Fehler aufgetaucht sind
Die Releasenamen »stable« und »unstable« beziehen sich auf die Stabilität der Softwareeigenschaften und des Archivs, das heißt der Paketabhängigkeiten, wobei aber auch die Stabilität der Software während der Laufzeit zum Teil darin enthalten ist. In das Archiv »unstable« werden häufig neue Pakete von den Entwicklern eingestellt, die Softwareänderungen enthalten, wogegen im Release »stable« keine zusätzlichen Pakete mehr zu den bereits im Release enthaltenen hinzugefügt oder entfernt werden. Ein Paket wird nur in das Release »stable« aufgenommen, wenn es keine kritischen Fehler mehr enthält und monatelang getestet wurde. Ein Softwarepaket durchläuft bei Debian meist alle drei Archive in der Reihenfolge »testing«, »unstable« und »stable« und ist dadurch gründlich getestet, bevor es in das sichere letzte Release »stable« aufgenommen wird. Ein Benutzer, der ein sehr sicheres System benötigt, das in der Regel ohne Probleme läuft, sollte daher das Release »stable« verwenden, in dem sich aber nicht die neueste Software befindet. Benutzer, für die Stabilität weniger Bedeutung als Aktualität hat, können die Releases »testing« oder »unstable« verwenden. Das Release »stable« kann auch automatisch upgedatet werden, ohne dass die Stabilität des Systems darunter leidet.
35
magnum
Linux-Distributionen
1.2.3
Fedora Core
Die Distribution Fedora Core (aktuelle Versionsnummer 4.0) hat sich aus Red Hat Linux entwickelt, als 2003 Red Hat seine Linux-Distribution für Privatkunden einstellte, aber als Community-Projekt weiterführen wollte. Nur Software mit vollständig freien Lizenzen darf in diesem Projekt verwendet werden.
Bild 1.4: Die Website des Fedora-Projekts
Das Installationstool der Distribution ist Anaconda und ermöglicht eine grafische, einfache Installation. Die Systemadministrationsarbeiten können mit diversen Programmen durchgeführt werden, deren Name mit system-config beginnt und die in der Regel auch mit einer grafischen Oberfläche gestartet werden können. Als Paketmanager wird RPM von Red Hat verwendet, aber auch APT-Quellen können ausgelesen werden.
1.2.4
Mandriva/Mandrake
Das französische Softwareunternehmen Mandriva, das früher Mandrakesoft hieß, veröffentlicht Mandriva Linux (ehemals Mandrake Linux), momentan in der Version 10.2 bzw. nach dem neuen Versionsnummernsystem 2005. Die Distribution wurde aus Red Hat Linux entwickelt, bietet eine einfache Installation und enthält sehr viele gängige Softwarepakete, wie zum Beispiel KDE, Mozilla, OpenOffice.org usw. Mandriva Linux verwendet KDE als Standardoberfläche und bietet eigene grafische Tools, die so genannten Drak-Tools, für die Systemverwaltung an. Das Programm urpmi wird zur Verwaltung von RPM-Softwarepaketen eingesetzt.
36
Kapitel 1 · Was ist Linux?
Bild 1.5: Die Website der Firma Mandriva
1.2.5
Knoppix
Die von Klaus Knopper entwickelte freie Linux-Distribution Knoppix kann direkt von der CD-ROM gestartet werden. Knoppix erkennt beim Starten automatisch fast jede von Linux unterstützte Hardware und bietet für alle anderen Fälle beim Booten spezielle Optionen an. Die Distribution basiert auf Debian GNU/Linux und enthält eine große Anzahl von Softwareprogrammen, wie zum Beispiel OpenOffice.org, KDE, Mozilla usw. Die aktuelle Versionsnummer lautet 4.0.2. Knoppix ist zwischenzeitlich auch auf einer DVD erhältlich.
Bild 1.6: Die Website von Knoppix
37
magnum
Linux-Distributionen
Einige weitere Distributionen haben die Techniken von Knoppix übernommen, wie zum Beispiel Morphix, Kanotix, Gnoppix (mit GNOME-Oberfläche) usw.
1.2.6
Slackware
Slackware wird als Großvater der Linux-Distributionen bezeichnet. Die Distribution wurde von Patrick Volkerding 1993 zum ersten Mal herausgegeben. Sie hat inzwischen (aktuelle Versionsnummer 10.2) auch den Umfang von mehreren CDROMs und erfreut sich eines Rufs von höchster Sicherheit und Systemstabilität. Ein erfahrener Benutzer, der keine grafischen Konfigurationstools benötigt, kann sich die Distribution gut seinen eigenen Bedürfnissen anpassen. Für Neueinsteiger ist daher Slackware wiederum nicht geeignet, sondern mehr für Insider, die keinen Schnickschnack, sondern nur ein stabiles Betriebssystem wünschen, und für Enthusiasten, die das Eingemachte von Linux kennen lernen wollen.
Bild 1.7: Slackware-Distribution
1.2.7
Red Hat Linux
Red Hat Enterprise Linux 4 ist die aktuellste Version dieser Distribution, die weltweit stark verbreitet und in den Vereinigten Staaten Marktführer ist. Red Hat Inc. wurde 1993 von Mark Ewing gegründet, fusionierte 1995 mit dem Unternehmen ACC von Bob Young und beschäftigt in ca. 22 Niederlassungen weltweit über 700 Personen.
Bild 1.8: Red Hat Linux-Distribution
Das Unternehmen Red Hat orientiert seine Linux-Distribution sehr stark kommerziell, was es mit seinem Börsengang im Jahre 1999 unterstrichen hat. Es werden auch hier mehrere CD-ROMs und ausführliche Handbücher mitgeliefert, und die Distribution bietet auch bereits während der Installation schon deutschsprachige Unterstützung. Im Jahr 2003 publizierte Red Hat, sich zukünftig nur noch auf das Firmenkundengeschäft zu konzentrieren, da dieses bisher den größten Umsatzanteil erbracht habe. Daher wurde das offene Softwareprojekt Fedora Core gegründet, das die Weiterentwicklung von Red Hat Linux übernahm. Für das Projektteam wurden von Red Hat bezahlte Softwareentwickler abgestellt.
38
Kapitel 1 · Was ist Linux?
Red Hat konzentriert sich im Firmenkundengeschäft stark auf Lösungen im Bereich Netzwerk-Infrastrukturen und bietet eine große Palette von Embedded Systems bis hin zu Webservern an. Das System wird mit dem grafischen Installationstool Anaconda ausgeliefert und verwendet für die Paketverwaltung das selbst entwickelte Red Hat Package Manager-Paketformat (RPM), das auch viele andere Distributionen übernommen haben.
1.3 Distributionsquellen Linux-Distributionen können zum Teil über das Internet heruntergeladen werden. Sie sind aber in der Regel immer über den Handel erhältlich. Die gängigen kommerziellen Varianten finden Sie nicht nur in einschlägigen EDV-Fachgeschäften, sondern auch in größeren Buchhandlungen. Die CD-ROMs einer Linux-Distribution beinhalten oft Tausende verschiedener Programmpakete, die vorsortiert sind und mit Hilfe eines speziellen Verwaltungsprogramms ausgewählt und installiert werden. In den Anfangszeiten von Linux war es noch erforderlich, die Programmquellen aus dem Internet herunterzuladen und sie auf dem eigenen Rechner zu kompilieren. Dies ist zwar auch heute noch möglich, wird aber wegen des großen Aufwands nur selten gemacht. Die meisten Distributionen bestehen aus mehreren hundert Mbyte, was lange Downloadzeiten erforderlich macht. Dazu kommt, dass der bei einigen Distributionen manchmal noch zusätzlich notwendige Kompiliervorgang auch Zeit und Fachwissen erfordert. Daher lohnt es sich in der Regel, eine Distribution im Handel zu erwerben. In der Regel erhalten Sie damit dann auch gleichzeitig ein mehr oder weniger umfangreiches Handbuch. Sollten Sie es trotzdem bevorzugen, Ihre Distribution aus dem Internet herunterzuladen, so finden Sie hier die wichtigsten Adressen: Distribution Website
Downloadadresse
SUSE Linux
http://www.novell.com/de-de/ linux/suse
http://www.novell.com/de-de/ products/linuxprofessional/downloads
Debian GNU/Linux
http://www.debian.org http://www.debian.de
http://www.debian.org/distrib/ftplist
Fedora Core
http://fedora.redhat.com
http://www.fedora.redhat.com/download
Mandriva/ Mandrake
http://www.mandrivalinux.com/de-de http://www.mandrivalinux.com/ de/ftp.php3
Knoppix
http://www.knopper.net/knoppix/
http://www.knopper.net/knoppix-mirrors/
Slackware
http://www.slackware.org
http://www.slackware.org/getslack
Red Hat Linux
http://www.redhat.com http://www.redhat.de
http://www.redhat.com/apps/download
Tab. 1.1: Websites und Downloadadressen der bekanntesten Distributionen
39
Welche Eigenschaften hat Linux?
magnum
1.4 Welche Eigenschaften hat Linux? Linux verfügt über alle wichtigen Eigenschaften, die für ein Betriebssystem wichtig sind. Darüber hinaus ist es ein sehr stabiles System, das durch jahrzehntelange Entwicklung ausgereift ist. Zu den wichtigsten Merkmalen von Linux gehören: Die Portabilität, wodurch das Betriebssystem sehr leicht an verschiedene Computersysteme anzupassen ist, was der Tatsache zuzuschreiben ist, dass der Großteil des Quellcodes in der Programmiersprache C vorliegt. Oft müssen nur kleine Änderungen vorgenommen werden, wenn das System auf einer neuen Hardwareplattform kompiliert wird. Die Multiuser-Fähigkeit bewirkt, dass mehrere Benutzer unabhängig voneinander und zur gleichen Zeit dasselbe Rechnersystem verwenden können. Dazu muss das System das Timesharing-Verfahren beherrschen. Die Multitasking-Fähigkeit bedeutet, dass Linux mehrere Tasks gleichzeitig bearbeiten kann, es werden also mehrere Programme oder Jobs eines Benutzers gleichzeitig ausgeführt. Beim Timesharing wird die gesamte Verarbeitungszeit der CPU in so genannte Zeitscheiben oder Slices aufgeteilt und mehreren Benutzern zugeordnet, wobei die Reihenfolge und Prioritäten der Tasks berücksichtigt werden. Mit Hilfe der virtuellen Speicherverwaltung können Prozesse seitenweise ausgelagert werden, wenn der Hauptspeicher nicht mehr ausreichend Platz hat, um alle zum Prozess notwendigen Teile zu speichern. Der zur vorübergehenden Auslagerung von Prozessen verwendete Bereich auf der Festplatte wird als Swap-Partition bezeichnet. Um die gespeicherten Daten zu organisieren, verwendet Linux eine hierarchische Dateistruktur, die auch als Verzeichnisbaum bezeichnet wird. Linux arbeitet mit einer einheitlichen Hardwareverwaltung, das heißt, es existieren einheitliche Schnittstellen zu Dateien, Geräten und Nachbarprozessen, da diese wie normale Dateien angesprochen werden. Gerätetreiber werden also wie Dateien betrachtet, was zur Folge hat, dass unter Linux theoretisch beliebig viele Geräte versorgt werden können, da das System praktisch unbegrenzt viele Dateien unterstützen kann. Die Grundlage der Netzwerkfähigkeit von Linux bilden die Protokolle TCP/IP (Transmission Control Protocol/Internet Protocol). Das System besitzt viele Funktionen, die in einem Netzwerk notwendig sind, darüber hinaus sind sowohl die notwendigen Client- als auch die Serverprogramme in Form von verschiedenen Protokollen vorhanden, wie zum Beispiel das Telnet-Protokoll, FTP (File Transfer Protocol), das NFS-Protokoll sowie die Dienste Internet und E-Mail. Das verteilte Dateisystem (Distributed File System) ist ebenfalls eine interessante Eigenschaft von Linux. Damit ist es möglich, Teile des Dateibaums auf verschiedene Festplattenlaufwerke in einem Rechner oder sogar mit Hilfe von NFS (Network File System) auf Festplatten von anderen Rechnern im Netzwerk aufzubringen. Da diese Teile aber einfach in den Verzeichnisbaum eingehängt werden, sieht der Benutzer nur die logische Dateistruktur, den Verzeichnisbaum. Ihm erscheint es, als ob sich alle Daten auf demselben lokalen Laufwerk befinden.
40
Kapitel 1 · Was ist Linux?
Die Arbeit eines Anwenders unter Linux wird von der Shell oder dem so genannten Kommandointerpreter bestimmt. Die Shell liest und überprüft die vom Benutzer eingegebenen Befehle und Aufträge und interpretiert sie dann als Anfragen des Benutzers an das Betriebssystem. Wird mit einer grafischen Oberfläche unter Linux gearbeitet, setzt auch hier die Shell die grafisch aktivierten Befehle um, oder der Anwender kann ein so genanntes Terminalfenster öffnen, um eine Shell direkt zu aktivieren. Die Möglichkeit der Hintergrundverarbeitung bietet den Anwendern eine größtmögliche Effizienz und Wirkungsbreite bei der Benutzung des Systems, indem gleichzeitig mehrere Prozesse zur Bearbeitung in den Hintergrund gestellt werden können. Da die Prozesse voneinander gekapselt laufen, beeinflussen sie sich in der Regel nicht im Falle von Fehlfunktionen. Redirektion oder Datenumlenkung bedeutet, dass die Ausgabe jedes Programms so manipuliert werden kann, dass sie zum Beispiel auf einen Drucker oder in eine Datei statt auf den Bildschirm geleitet werden kann. Mit Hilfe des Pipe-Mechanismus können Befehle so miteinander verbunden werden, dass die Ausgabe des vorangehenden Befehls zur Eingabe des nachfolgenden Befehls wird. Auf diese Weise können in vielen Fällen für neue Aufgaben die existierenden Programme oder Dienstprogramme einfach mit Pipes kombiniert werden, was die Entwicklung neuer Programme überflüssig machen kann. Unter Linux stehen Hunderte von Dienstprogrammen und Routinen zur Verfügung und stellen eine wirkungsvolle Sammlung von Werkzeugen für die Erledigung vieler Aufgaben dar. Darüber hinaus gibt es viele verschiedene Texteditoren, Textverarbeitungs- und Softwareentwicklungstools.
1.5 Linux-Komponenten Linux besteht aus einem Kernel, der die Hardware und Prozesse steuert, und einem Kommandointerpreter, auch Shell genannt, sowie einer Anzahl von Systemhilfsprogrammen. Um richtig komfortabel mit Linux arbeiten zu können, ist noch eine grafische Arbeitsumgebung notwendig, das so genannte X-Window-System. Darauf wird dann eine Benutzeroberfläche aufgesetzt, wie zum Beispiel KDE oder GNOME, die in der Regel mit einer großen Anzahl von Programmen für alle erdenklichen Zwecke installiert werden kann. Dazu gehört das Installations- und Verwaltungsprogramm des Herstellers, das dafür sorgt, dass die Installation einfach und übersichtlich durchzuführen ist. Aus all diesen Komponenten und diesem Zubehör setzt sich dann eine so genannte Linux-Distribution zusammen, also ein komplettes Linux-Paket eines Herstellers.
1.5.1
Der Kernel
Die innerste Schicht des Betriebssystems bildet der Kernel, der sich direkt über der Hardware befindet. Er hat die Aufgabe, die Hardware zu betreiben und zu nutzen. Im Kernel sind mit Ausnahme der Benutzerschnittstelle und einiger Dienstprogramme im Prinzip alle Betriebssystemaufgaben realisiert:
쮿
Die Kommunikation mit den Hardwarekomponenten des Rechners
쮿
Er stellt den Programmen die erforderlichen Hardwareressourcen zur Verfügung, um deren geregelten Ablauf zu realisieren.
41
magnum
Linux-Komponenten
쮿
Er kontrolliert die Kommunikation mit der Hardware, mit den Benutzern und von Programmen untereinander.
쮿
Er verwaltet die Daten des Systems und legt fest, in welcher Form und an welcher Stelle diese abgelegt werden.
쮿
Er sorgt für den Zugriffsschutz der Daten in der durch den Anwender festgelegten Form.
쮿
Er steuert den Multitasking- und Multiuser-Betrieb.
Die Bestandteile des Kernels müssen auf die jeweilige Systemhardware zugeschnitten sein, da er direkt mit der Hardware in Verbindung steht. Er umfasst eine große Anzahl von Funktionen, die der Benutzer aber nicht direkt verwenden kann, sondern die in Systemprogrammen eingebettet zur Verfügung stehen.
1.5.2
Die Shell
Die Shell dient dem Benutzer als Eingabemöglichkeit, um Anweisungen an das Betriebssystem zu geben. Dazu steht ein so genannter Kommandointerpreter mit einer einfachen textbasierenden Oberfläche zur Verfügung. Die vom Anwender eingegebenen Befehle werden an das Betriebssystem weitergeleitet, das bei Bedarf wiederum Rückmeldungen (zum Beispiel Fehlermeldungen) ausgibt. Der Kommandointerpreter wird als Shell bezeichnet, weil er wie eine Schale den Kernel umgibt. Die Shell hat folgende Aufgaben:
쮿
Sie ist eine wichtige Benutzerschnittstelle des Linux-Systems, indem sie die vom Benutzer eingegebenen Befehle einliest und als Anfragen an das System interpretiert.
쮿
Über die Benutzeroberfläche der Shell kann ein Anwender die Hardwareressourcen und die Betriebssystemleistungen des Kernels nutzen, ohne dafür eigene Programme erstellen zu müssen.
쮿
Die Standard-Shell bash ist Bestandteil jedes Linux-Systems, wobei sie in der Regel individuellen Bedürfnissen angepasst oder durch eine andere Shell ersetzt werden kann.
Die unterschiedlichen Shells werden in Kapitel 9 ausführlich behandelt. Wenn ein Anwender einen Befehl in der entsprechenden Form eingibt, kann er die Interaktivität der Shell nutzen, das heißt, bei einer Eingabe erhält er nach Beendigung des Befehls eine Rückmeldung. Die Befehle der Shell sind sehr mächtig, flexibel und umfangreich. Sie können auch miteinander verkettet werden, was besonders für Verwaltungsaufgaben und zur Durchführung komplexer Abläufe von großer Bedeutung ist. Ein Linux-System kann auch ohne grafische Oberfläche – nur mit der Shell – betrieben werden. Es ist möglich, die grafische Oberfläche bei Bedarf zu deaktivieren, wobei das System trotzdem noch vollständig administriert werden kann. Das ist zum Beispiel eine nützliche Eigenschaft bei Datenbank- oder Webservern, die in der Regel nur für andere Computer zur Verfügung stehen und bei denen die grafische Oberfläche nicht unnötigerweise Ressourcen verbrauchen soll.
42
Kapitel 1 · Was ist Linux?
Die Shell ist wiederum selbst auch nur ein Programm, das aufgerufen wird, und kann daher natürlich unterschiedlich umfangreich sein. Es gibt unter Linux mehrere Shells, die im Laufe der Unix-Historie entstanden sind und gegenüber ihrem Vorgänger jeweils um irgendwelche Funktionen erweitert wurden.
1.5.3
Das X-Window-System
Das X-Window-System wird auch als X Version 11 oder X11 oder X bezeichnet und besteht aus verschiedenen Protokollen, Computerprogrammen und Standards, um grafische Bildschirme anzusteuern und bei Unix- und Linux-Systemen eine grafische Oberfläche anzuzeigen. Die freien Protokolle und Standards werden von verschiedenen Projekten umgesetzt, wie zum Beispiel XOrg und XFree86. Entwickelt wurde X Mitte der achtziger Jahre in einer gemeinsamen Arbeit des MIT, der Digital Equipment Corporation und IBM. 1988 wurde das X-Konsortium gegründet, um die weitere nichtkommerzielle Entwicklung durchzuführen. 1994 wurde die Version X11R6 herausgegeben und anschließend die Entwicklung The Open Group übergeben, während XOrg 2004 die Standardisierung übernahm. Ein- und Ausgabegeräte, wie zum Beispiel Maus, Tastatur, Bildschirm und Grafikkarte, werden vom X-Server gesteuert, der häufig mit dem Kernel zusammenarbeitet. Während X ein Minimalsystem ist, das nur grundlegende Funktionen zur Verfügung stellt, wird das tatsächliche Verhalten und Design eines Fenstersystems von einem so genannten Windowmanager bereitgestellt, der als Client des X-Servers wie eine reguläre Anwendung läuft. Das X-Window-System basiert auf dem Client-Server-Modell, wobei der X-Server (der die grafischen Dienste den X-Clients anbietet und die Treiber für Grafikkarte, Tastatur, Maus enthält) auf dem lokalen System läuft, während der X-Client entweder lokal oder auf einem Remote-System laufen kann. Der X-Client verwendet die Dienste des X-Servers für die grafische Darstellung und besteht aus einem entsprechenden Anwendungsprogramm.
1.5.4
System- und Anwendungsprogramme
Neben dem Kernel und der Shell gibt es noch eine große Anzahl von Systemprogrammen und Anwendungs- bzw. Dienstprogrammen. Sie werden häufig auch nur als Kommandos oder Befehle bezeichnet. Zu diesen gehören:
쮿
Programme zur Datei- und Verzeichnismanipulation, wie sie in der Regel immer im Gesamtumfang eines Betriebssystems enthalten sind, wie zum Beispiel Programme zum Kopieren, Löschen, Umbenennen von Dateien, Erzeugen und Löschen von Inhaltsverzeichnissen usw.
쮿
Programme zur Textbearbeitung, wie zum Beispiel: – Fullscreen- oder Bildschirmeditoren (vi, emacs) – Stream-Editoren (sed)
쮿
Programme zur elektronischen Kommunikation, wie zum Beispiel E-Mail-Programme
쮿
Software zur Unterstützung von Softwareentwicklern, wie zum Beispiel: – C-Compiler – C-Bibliotheken
쮿
eine Vielzahl von weiteren Utilities, die unter der grafischen Oberfläche von Linux genutzt werden können
43
2 Installation und Updates »Zu einem guten Ende gehört auch ein guter Beginn.« – Konfuzius In diesem Kapitel werden zuerst einige allgemeine Überlegungen zur Installation getroffen. Anschließend erfahren Sie, wie die Installationen von SUSE Linux 10, Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 ablaufen. Im zweiten Teil erfahren Sie, wie Sie zusätzliche Software für diese Distributionen installieren oder wieder entfernen.
2.1 Installationsvoraussetzungen Vor einigen Jahren warf genau diese Frage noch die meisten Probleme für LinuxEinsteiger auf. Inzwischen liefern die meisten Hardwarehersteller ihre Produkte mit Treibern für Linux aus, so dass die meisten neuen Geräte in der Regel problemlos unter Linux eingesetzt werden können. Auch die Linux-Distributionen selbst werden ständig verbessert, wodurch die Kompatibilität bedeutend größer und die Installation wesentlich einfacher geworden ist.
2.1.1
Hardwarevoraussetzungen für Linux
Linux stellt relativ geringe Grundanforderungen an die Hardware – das bezieht sich aber nur auf das ursprüngliche Linux ohne eine grafische Oberfläche. Das Betriebssystem Linux ohne grafische Oberfläche kann daher auch heute noch problemlos auf einem alten PC mit einem so genannten 80386er oder 80486er Prozessor betrieben werden, wobei aber wenigstens ein Disketten- und ein CD-ROMLaufwerk zur Verfügung stehen sollten. Mit dieser Grundausstattung könnten Sie ein wenig mit Linux auf einem alten ausgedienten Rechner ohne grafische Oberfläche herumexperimentieren. Falls Sie aber ein echtes Interesse daran haben, ab jetzt mit Linux richtig zu arbeiten, dann sollten Sie einen heute handelsüblichen Rechner verwenden, um einerseits Platz für alle angebotenen Programme zu haben, die Sie interessieren, und andererseits, um die grafische Oberfläche mit einer zufrieden stellenden Leistung verwenden zu können. Bevor Sie mit der Installation beginnen, sollten Sie noch einige grundsätzliche Überlegungen anstellen.
쮿
Soll Linux ab jetzt das einzige Betriebssystem auf Ihrem Rechner sein oder wollen Sie es zusätzlich zum vorhandenen Betriebssystem (zum Beispiel Microsoft Windows XP) installieren?
쮿
Im Falle, dass Sie Linux zusätzlich installieren möchten, sollten Sie feststellen, ob noch freie Partitionen oder ausreichend Festplattenplatz vorhanden ist oder nicht.
2.1.2
Linux als zweites Betriebssystem installieren
Wenn Sie bereits ein anderes Betriebssystem, wie zum Beispiel Microsoft Windows 2000 oder XP, auf dem PC laufen haben, kann Linux als zweites Betriebssystem problemlos zusätzlich installiert werden, vorausgesetzt, Ihre Festplatte ist groß genug. Dies dürfte aber bei den heutigen handelsüblichen PCs kein Problem sein, die in der Regel Festplatten mit mehr als 40 Gbyte haben.
45
magnum
Installation
Sollten Sie noch kein Betriebssystem installiert haben, aber später neben Linux ein Microsoft-Windows-Betriebssystem auf dem gleichen PC betreiben wollen, ist es sehr zu empfehlen, zuerst das Microsoft-Windows-System zu installieren. Wenn ein bereits installiertes Betriebssystem von Microsoft die ganze Festplatte einnimmt, ist das in der Regel auch kein Problem. Sie haben dann einmal die Möglichkeit, die Festplatte vor der Linux-Installation mit einem kommerziellen Programm wie zum Beispiel Partition Magic von der Firma Symantec/PowerQuest so zu partitionieren, dass es freien Festplattenplatz für Linux gibt. Alternativ können Sie das Partitionieren aber auch der Linux-Distribution während der Installation überlassen (vergleiche Abschnitt 2.2). In beiden Fällen sollten Sie aber sicherheitshalber die Ihnen wichtigen Daten der Microsoft-Windows-Partition sichern, falls ein Problem auftritt. Es gibt auch freie, nicht kommerzielle Tools, um die Festplatte zu partitionieren, wenn sich bereits ein Betriebssystem darauf befindet. Dazu gehört zum Beispiel fips (http://www.zdnet.de/downloads/prg/p/w/deP1PW-wc.html). Partitionen, die mit NTFS (dem Dateisystem von Microsoft Windows NT, 2000 und XP) formatiert sind, lassen sich mit freien Tools in der Regel nicht verkleinern.
2.2 Installation In den nächsten drei Abschnitten werden die Installationen zu den Distributionen SUSE Linux 10.0, Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 beschrieben. Bei jeder Betriebssysteminstallation werden Sie in der Regel gefragt, wie Sie Ihre Festplatte partitionieren möchten, das heißt, in welche Bereiche diese aufgeteilt werden soll. Einzelheiten zum Partitionieren finden Sie in Kapitel 13. Wie komplex Ihre Partitionstabelle (das Ergebnis Ihrer Festplattenpartitionierung) wird, hängt vom Einsatzbereich des zu installierenden Rechners ab. Eine einfache Partitionstabelle für einen PC, der im Privatbereich eingesetzt wird, könnte zum Beispiel wie folgt aussehen: Partition
Größe
Mountpoint
primär
10 %, maximal 3 Gbyte des Festplattenplatzes
/
logisch
Größe des Hauptspeichers, mindestens 100 Mbyte
Swap-Partition
logisch
restlicher Festplattenplatz
/home
Tab. 2.1: Eine einfache Partitionstabelle
Eine komplexere Partitionstabelle, zum Beispiel für einen Server, könnte so aussehen: Partition
Größe
Mountpoint
primär
100 Mbyte des Festplattenplatzes
/boot
primär
500 Mbyte, maximal 1 Gbyte
/
Tab. 2.2: Eine komplexere Partitionstabelle
46
Kapitel 2 · Installation und Updates
Partition
Größe
Mountpoint
logisch
Größe des Hauptspeichers, mindestens 100 Mbyte
Swap-Partition
logisch
5 - 10 % des Festplattenplatzes, maximal 2 Gbyte
/usr
logisch
5 - 10 % des Festplattenplatzes, maximal 1 Gbyte
/var
logisch
restlicher Festplattenplatz
/home
Tab. 2.2: Eine komplexere Partitionstabelle (Forts.)
2.2.1
Installation von SUSE Linux 10.0
Schalten Sie Ihren Rechner ein und legen Sie die erste Installations-CD-ROM bzw. die DVD, wenn Sie ein DVD-Laufwerk besitzen, von SUSE Linux ein. Eventuell müssen Sie noch im BIOS einstellen, dass zuerst von der CD-ROM oder DVD und dann erst von der Festplatte gebootet werden soll. Die Installation von SUSE 10.0 läuft normalerweise grafisch ab. 1. Wählen Sie nach dem Begrüßungsbildschirm die Option INSTALLATION.
Bild 2.1: Startbildschirm der Installation von SUSE Linux
2. Zuerst werden Sie gebeten, die Sprache auszuwählen. Wählen Sie DEUTSCH und klicken Sie dann auf die Schaltfläche WEITER.
Bild 2.2: Sprache auswählen
47
magnum
Installation
3. Wenn Sie anschließend die Lizenzvereinbarung akzeptieren, folgt die Systemanalyse, und dann können Sie festlegen, ob die Installation eine NEUINSTALLATION oder ein UPDATE sein soll. Bei einer Erstinstallation müssen Sie NEUINSTALLATION wählen. 4. Im nächsten Fenster wählen Sie die Zeitzone, zum Beispiel die Region EUROPA und die Zeitzone DEUTSCHLAND, und überprüfen und korrigieren gegebenenfalls die angezeigte Uhrzeit und das Datum. 5. Im letzten Schritt des ersten Konfigurationsteils wählen Sie nun den Desktop: entweder KDE oder GNOME oder einen anderen Desktop. 6. Dann zeigt Ihnen SUSE Linux eine Zusammenfassung der Informationen über die Installation zu folgenden Punkten an. Die Übersicht ist ausführlicher, wenn Sie in die Registerkarte EXPERTENMODUS wechseln: –
Modus (Neuinstallation)
–
Tastatur belegen
–
Maus
–
Partitionierung
–
Software
–
Systemstart (Einstellung von GRUB)
–
Zeitzone
–
Sprache
Bild 2.3: Installationseinstellungen von SUSE Linux
Sie können nun nach Belieben auf einen dieser Punkte klicken und die Standardeinstellungen ändern, zum Beispiel: 7. Wenn Sie nicht den ganzen Festplattenplatz, der noch zur Verfügung steht, für SUSE Linux verwenden möchten, oder der zu verwendende Festplattenplatz noch zuerst eingerichtet werden muss, dann wählen Sie den Punkt PARTITIONIERUNG.
48
Kapitel 2 · Installation und Updates
Bild 2.4: Partitionierungsvorschlag bei der Installation
8. Sie können dann wählen, ob Sie den Vorschlag der Partitionierung annehmen, abändern oder nach eigenen Vorstellungen eine Partitionierung durchführen möchten. In unserem Beispiel wählten Sie die dritte Möglichkeit.
Bild 2.5: Partitionen anzeigen und bearbeiten
49
Installation
magnum
9. Nun werden alle Partitionen dieser Festplatte angezeigt. Achten Sie darauf, dass Sie keine Partition auswählen, die für ein anderes Betriebssystem verwendet wird. Wenn noch Platz auf der Festplatte ist, können Sie für SUSE Linux eine neue Partition mit der Option ANLEGEN erstellen. Anschließend müssen Sie noch die Größe in Zylinder oder Gbyte, den Mountpoint und das zu formatierende Dateisystem, zum Beispiel REISERFS, auswählen. Bestätigen Sie wieder mit WEITER. Sollte kein freier Festplattenplatz oder keine freie Partition vorhanden sein, können Sie auch eine bestehende Microsoft-Windows-Partition verkleinern. Sichern Sie zuvor aber unbedingt alle wichtigen Daten auf dieser Partition. Klicken Sie auf die Windows-Partition und dann auf GRÖSSE ÄNDERN. Geben Sie dazu entweder die gewünschten Werte in die entsprechenden Felder mit der Mbyte-Größe ein oder ziehen Sie an dem Scrollbalken:
Bild 2.6: Windows-Partitionsgröße ändern
10. Legen Sie dann noch unbedingt mit derselben Option ANLEGEN eine Partition für den Swap-Bereich an. Formatieren Sie diese als SWAP, als Größe genügen in der Regel 100 bis 200 Mbyte, wenn Sie keine spezielle Verwendung für den Swap planen. Eine so genannte Swap-Partition ist ein Bereich auf der Festplatte, der verwendet wird, um Daten aus dem Hauptspeicher auszulagern, falls der Hauptspeicher überlastet ist. Falls Sie vorhaben, Crashdumps zukünftig aufzubewahren und gegebenenfalls auszuwerten, oder einen Laptop konfigurieren, der in den Hibernation-Modus gefahren werden soll, empfiehlt es sich, die Swap-Partition so groß wie den Hauptspeicher einzurichten.
50
Kapitel 2 · Installation und Updates
Wenn Sie keine weiteren Einstellungen vornehmen wollen, können Sie die Standardvorgaben übernehmen und mit Weiter bestätigen. 11. Nun werden Sie gefragt, ob Sie das System wirklich installieren möchten. Erst wenn Sie dies bestätigen, werden Daten auf die Festplatte geschrieben. Bei der Standardinstallation dauert dieser Vorgang ca. 30 Minuten bis eine Stunde, je nachdem, ob Sie die Installations-DVD oder die CD-ROMs verwenden. 12. Nach der Installation müssen Sie noch das Passwort für den Superuser root festlegen:
Bild 2.7: root-Passwort hinterlegen
13. Als Nächstes wird Ihnen eine standardmäßige Netzwerkkonfiguration mit DHCP angeboten. Mit dem Protokoll DHCP (Dynamic Host Configuration Protocol) und einem DHCP-Server können IP-Adressen und verschiedene Konfigurationsparameter für das Netzwerk einem Rechner dynamisch bei Bedarf zugewiesen werden, um diesen zum Beispiel in ein lokales Netzwerk oder das Internet einzubinden. Mit Internet Protocol (IP)-Adressen werden Rechner in einem Netzwerk eindeutig adressiert.
51
magnum
Installation
Bild 2.8: Netzwerkkonfiguration einrichten
Sie können die Netzwerkkonfiguration überspringen oder unter folgenden Optionen wählen, um die Konfiguration einzurichten: –
Netzwerkschnittstellen
–
DSL-Verbindung
–
ISDN-Adapter
–
Modems
–
Proxy
–
Remote-Verwaltung über VNC
14. Wenn Sie kein DHCP verwenden, sollten Sie die Option NETZWERKSCHNITTSTELLEN anklicken und im anschließend geöffneten Fenster den Hostnamen und die statische IP-Adresse sowie gegebenenfalls die IP-Adressen von Router und Gateway hinterlegen. Vergessen Sie in diesem Fall auch nicht, die standardmäßigen Einträge für DHCP zu entfernen.
52
Kapitel 2 · Installation und Updates
Bild 2.9: Netzwerk einrichten
Bild 2.10: IP-Adresse angeben
53
Installation
Bild 2.11: Hostnamen und Nameserver konfigurieren
Bild 2.12: Router konfigurieren
54
magnum
Kapitel 2 · Installation und Updates
Nachdem Sie Ihre Eingaben bestätigt haben, wird die Netzwerkkonfiguration gespeichert. 15. Anschließend kann die Internetverbindung ausgetestet werden. Wenn der Test nicht erfolgreich ist, können Sie über die Schaltfläche ZURÜCK nochmals in die Netzwerkkonfiguration und diese ändern. Bei funktionierender Internetanbindung können Sie auch gleich eine Online-Aktualisierung durchführen. 16. Im nächsten Abschnitt werden Sie aufgefordert, einen Benutzer anzulegen. Geben Sie dazu den Vornamen, den Namen, den Anmelde- oder LoginNamen sowie zweimal das Passwort des neuen Benutzers ein.
Bild 2.13: Neuen Benutzer anlegen
55
magnum
Installation
Dazu müssen Sie auch die Art des Netzwerkclients angeben:
Bild 2.14: Authentifikationsmethode auswählen
Sie haben die Auswahl zwischen LDAP, NIS und Samba bzw. die Möglichkeit, eine lokale Authentifizierung über die Datei /etc/passwd zu wählen. 17. Es erscheint anschließend ein Fenster mit Hinweisen zur Version, das Sie einfach mit WEITER bestätigen. 18. Danach wird die Hardwarekonfiguration für folgende Geräte durchgeführt:
56
–
Grafikkarte
–
Drucker
–
Sound
–
TV-Karte
–
Bluetooth
Kapitel 2 · Installation und Updates
Bild 2.15: Anzeige der Hardwarekonfiguration
Wenn Ihre Geräte korrekt erkannt wurden, klicken Sie auf WEITER, andernfalls verwenden Sie die Schaltfläche ÄNDERN und richten die Geräte ein. 19. Anschließend können Sie die Installation mit der Schaltfläche BEENDEN abschließen. Das System startet eine neue Sitzung, an der Sie sich anmelden können.
2.2.2
Installation von Fedora Core 4.0
Schalten Sie Ihren Rechner ein und legen Sie die erste Installations-CD-ROM von Fedora Core Linux ein. Eventuell müssen Sie noch im BIOS einstellen, dass zuerst von der CD-ROM und dann erst von der Festplatte gebootet werden soll. Die Installation von Fedora Core 4.0 läuft normalerweise grafisch ab, wenn Ihre Grafikkarte erkannt wird. Alternativ können Sie am Boot-Prompt mit dem Befehl linux text eine ASCII-Installation starten. Die heute handelsüblichen, kostengünstigen Grafikkarten werden leider nicht immer erkannt. Dann bleibt die Installation hängen, nachdem Anaconda gestartet wurde. Es wird nur noch ein leerer Bildschirm angezeigt. In diesem Fall müssen Sie den Rechner neu starten und die ASCII-Installation verwenden.
57
magnum
Installation
1. Drücken Sie nach dem Begrüßungsbildschirm auf die Taste (¢), um eine grafische Installation durchzuführen.
Bild 2.16: Installationsbildschirm von Fedora Core Linux
2. Nun wird gemeldet, dass eine CD gefunden wurde und es möglich ist, diese zu testen. Um einen Abbruch wegen einer fehlerhaften CD zu vermeiden, können Sie mit der (ÿ_)-Taste auf OK springen und auf die Taste (¢) drücken, um die CD zu testen. Alternativ klicken Sie auf SKIP.
Bild 2.17: Möglichkeit, CD zu testen
Wenn Sie den Testmodus gewählt haben, erscheint nun ein weiteres Fenster MEDIA CHECK, in dem der Test durchgeführt wird, wenn Sie nun TEST wählen. Wenn Sie die CD wechseln möchten, verwenden Sie die Option EJECT CD. Am Schluss erscheint eine Meldung, dass der Test erfolgreich (PASS) war oder ein negatives Ergebnis brachte (FAIL). 3. Dann startet Anaconda, der Fedora Core System Installer. Anschließend werden Sie gebeten, die Sprache auszuwählen. Wählen Sie gegebenenfalls DEUTSCH und klicken Sie dann auf die Schaltfläche NEXT.
58
Kapitel 2 · Installation und Updates
Bild 2.18: Sprachauswahl
4. Anschließend können Sie die Tastatur auswählen. Klicken Sie dann wieder auf WEITER.
Bild 2.19: Tastaturauswahl
59
magnum
Installation
5. Wenn Sie bereits eine Fedora-Version auf dem Rechner installiert haben, können Sie nun zwischen den Optionen NEUINSTALLATION oder UPGRADE wählen. Dieses Fenster erscheint nicht, wenn noch keine Fedora-Installation auf Ihrem Rechner vorhanden ist. 6. Es folgt die Auswahl des Installationstyps. Sie können zwischen PERSONAL DESKTOP (mit grafischer Oberfläche, Internet-, Office- und Multimediaprogrammen), WORKSTATION (mit zusätzlicher Software für die Systemadministration und -entwicklung), SERVER (mit zusätzlichen Netzwerkservern und weiteren Administrationstools) und CUSTOM (um eine eigene Softwareauswahl zu treffen) wählen. Wenn Sie CUSTOM wählen, werden zur Softwareauswahl einige zusätzliche Fenster angezeigt. In unserem Beispiel führen wir eine CUSTOM-Installation durch. Klicken Sie dann auf WEITER.
Bild 2.20: Installationstyp auswählen
7. Im nächsten Fenster gibt Ihnen Fedora Core Linux die Wahlmöglichkeit zwischen einer automatischen oder manuellen Partitionierung (DISK DRUID). Die automatische Partitionierung fragt Sie, ob alle Linux-Partitionen oder alle Partitionen auf dem System gelöscht werden sollen oder ob alle Partitionen beibehalten werden und nur der vorhandene freie Festplattenplatz verwendet wird. Wenn Sie die manuelle Methode wählen, erhalten Sie Informationen über die Aufteilung der Festplatte in Partitionen und den freien Platz.
60
Kapitel 2 · Installation und Updates
Bild 2.21: Partitionierungsart wählen
8. Wählen Sie die Option LÖSCHEN, um eine Partition zu löschen (bedenken Sie aber, dass dabei alle Daten der Partition verloren gehen!), oder NEU, um vom restlichen Festplattenplatz Fedora Linux eine Partition zuzuteilen. Wählen Sie als Mountpoint den Schrägstrich / für das root-Verzeichnis (vergleiche Kapitel 13) und ein Dateisystem, zum Beispiel ext3, und schließlich noch die Größe für die Partition aus. Wenn Sie das Betriebssystem über mehrere Partitionen verteilen wollen, legen Sie weitere Partitionen an.
Bild 2.22: Manuelle Partitionierung
61
Installation
magnum
9. Legen Sie dann noch unbedingt mit derselben Option Anlegen eine Partition für den Swap-Bereich an. Formatieren Sie diese als Swap, als Größe genügen in der Regel 100 bis 200 Mbyte, wenn Sie keine spezielle Verwendung für den Swap-Bereich planen. Eine so genannte Swap-Partition ist ein Bereich auf der Festplatte, der verwendet wird, um Daten aus dem Hauptspeicher auszulagern, falls der Hauptspeicher überlastet ist. Falls Sie vorhaben, Crashdumps zukünftig aufzubewahren und gegebenenfalls auszuwerten, oder einen Laptop konfigurieren, der in den Hibernation-Modus gefahren werden soll, empfiehlt es sich, die Swap-Partition so groß wie den Hauptspeicher einzurichten. 10. Danach können Sie den Bootloader GRUB oder keinen Bootloader auswählen, spezielle Optionen dafür festlegen, gegebenenfalls mit der Schaltfläche HINZUFÜGEN weitere Betriebssysteme auf Ihrer Festplatte in das GRUB-Menü aufnehmen, ein GRUB-Boot-Passwort hinterlegen und entscheiden, wo GRUB installiert werden soll: in den Master Boot Record oder in den ersten Sektor der Bootpartition. Wenn Sie ein Passwort verwenden, sollten Sie sich dieses gut merken, sonst können Sie zukünftig Ihr System nicht mehr booten. In der Regel bietet es sich an, den Bootloader in den Master Boot Record zu installieren, wenn Sie keinen bestimmten Grund dafür haben, ihn auf die Bootpartition zu installieren.
Bild 2.23: Bootloader-Konfiguration
62
Kapitel 2 · Installation und Updates
11. Nun können Sie das Netzwerk konfigurieren. Wenn Sie kein DHCP verwenden, sollten Sie dort die statische IP-Adresse und die Subnet-Maske sowie gegebenenfalls die IP-Adressen von Router und Gateway hinterlegen. Vergessen Sie in diesem Fall auch nicht, den standardmäßigen Eintrag für DHCP zu entfernen. Mit dem Protokoll DHCP (Dynamic Host Configuration Protocol) und einem DHCP-Server können IP-Adressen und verschiedene Konfigurationsparameter für das Netzwerk einem Rechner dynamisch bei Bedarf zugewiesen werden, um diesen zum Beispiel in ein lokales Netzwerk oder das Internet einzubinden. Mit Internet Protocol (IP)-Adressen werden Rechner in einem Netzwerk eindeutig adressiert.
Bild 2.24: Netzwerkkonfiguration
12. Im nächsten Fenster können Sie den Rechnernamen eingeben oder ihn wieder automatisch über DHCP zuweisen lassen. 13. Danach werden Sie gefragt, ob Sie eine Firewall aktivieren wollen oder nicht. Es sind auch einige benutzerspezifische Definitionen zu den zulässigen Diensten möglich, wie zum Beispiel ssh oder http. In diesem Fenster können Sie auch Security Enhanced Linux (SELinux) aktivieren, das weitere Sicherheitseinstellungen bietet.
63
Installation
magnum
Bild 2.25: Firewall-Konfiguration
14. Dann wird Ihnen die Auswahl der Zeitzone angeboten. Wählen Sie für Deutschland EUROPA/BERLIN. 15. Im nächsten Fenster müssen Sie noch das Passwort für den Superuser root festlegen. 16. Als Nächstes werden Sie gefragt, ob Sie die standardmäßige Installation durchführen oder die Pakete selbst auswählen möchten. Wenn Sie Letzteres wählen, wird Ihnen die standardmäßige Auswahl der zu installierenden Software angezeigt und Sie können Paketgruppen hinzufügen oder entfernen.
Bild 2.26: Paketgruppen auswählen
64
Kapitel 2 · Installation und Updates
17. Nun werden die Abhängigkeiten zwischen den ausgewählten Paketgruppen geprüft und dann beginnt die eigentliche Installation, das heißt, die Pakete werden auf die Festplatte geschrieben. Sie müssen noch kurz die Meldung bestätigen, dass die Informationen zur Installation dauerhaft in der Datei /root/install.log gespeichert werden. 18. Nach Beendigung der Installation erfolgt ein Neustart und Sie können sich am System anmelden. Es folgt dann noch die Systemkonfiguration zu folgenden Punkten: 1. 2. 3. 4. 5. 6.
Einverständniserklärung mit den Lizenzbedingungen Einstellungsmöglichkeit von Datum und Uhrzeit Einstellungsmöglichkeit von Anzeige (Monitor): Farbtiefe und Auflösung Anlegen eines Systembenutzers oder Auswahl der Option Netzwerkanmeldung Einstellungsmöglichkeit und Test der Soundkarte Möglichkeit, weitere Software zu installieren
Dann ist das Setup beendet und Sie können sich am System anmelden.
2.2.3
Installation von Debian GNU/Linux 3.1
Schalten Sie Ihren Rechner ein und legen Sie die erste Installations-CD-ROM von Debian/GNU Linux ein. Eventuell müssen Sie noch im BIOS einstellen, dass zuerst von der CD-ROM und dann erst von der Festplatte gebootet werden soll. Die Installation von Debian Linux läuft in einem Textmodus ab. Sie können sich mit den Pfeiltasten oder der (ÿ_)-Taste in den Menüpunkten bewegen und zum Bestätigen auf die (¢)-Taste drücken. Wenn der zu installierende PC über einen Internetanschluss verfügt, müssen Sie nur die erste CD-ROM brennen und verwenden. Die fehlenden Pakete werden direkt aus einem Debian-Archiv im Internet bezogen. 1. Zuerst erscheint der Begrüßungsbildschirm von Debian. Drücken Sie auf die (¢)-Taste, um die Installation zu beginnen.
Bild 2.27: Debian GNU/Linux 3.1 Installationsbildschirm
65
Installation
magnum
2. Wählen Sie dann die Sprache und anschließend den Sprachraum.
Bild 2.28: Sprache wählen
3. Wählen Sie anschließend das Tastaturlayout.
Bild 2.29: Tastaturlayout wählen
Die Hardwareerkennung startet.
66
Kapitel 2 · Installation und Updates
4. Anschließend können Sie einige Angaben zur Netzwerkeinrichtung machen. Im ersten Schritt legen Sie den Rechnernamen fest. Dann werden Sie nach dem Domainnamen gefragt.
Bild 2.30: Netzwerk einrichten
5. Die nächste Einstellung betrifft die Festplattenpartitionierung. Sie haben die Auswahl, den größten unverbrauchten Speicherplatz zu benutzen oder das gesamte Laufwerk zu löschen oder die Partitionstabelle von Hand anzulegen.
Bild 2.31: Festplatte partitionieren
67
Installation
magnum
6. In unserem Beispiel wird die Partitionstabelle manuell bearbeitet. Die bisherige Partitionierung wird angezeigt und wiederum werden verschiedene Optionen angeboten. Wählen Sie den freien Speicherplatz, indem Sie mit der Pfeiltaste dorthin navigieren und dann auf (¢) drücken.
Bild 2.32: Freien Festplattenplatz verwenden
7. Wählen Sie nun die Eigenschaften für die Partition aus. Zu jeder Eigenschaft können Sie sich eine Optionsliste anzeigen lassen, wenn Sie auf die (¢)-Taste drücken, zum Beispiel für die Auswahl des Dateisystems der neuen Partition.
Bild 2.33: Neue Partition anlegen
68
Kapitel 2 · Installation und Updates
8. Wählen Sie eines der folgenden Dateisysteme (vergleiche Kapitel 13):
Bild 2.34: Dateisystem wählen
9. Die neue Partition wird anschließend angezeigt. Richten Sie auf dieselbe Weise mindestens noch eine Swap-Partition ein. Bestätigen Sie dann, dass Sie die Partitionstabelle so auf die Festplatte schreiben möchten. Eine so genannte Swap-Partition ist ein Bereich auf der Festplatte, der verwendet wird, um Daten aus dem Hauptspeicher auszulagern, falls dieser überlastet ist.
Falls Sie vorhaben, Crashdumps zukünftig aufzubewahren und gegebenenfalls auszuwerten, oder einen Laptop konfigurieren, der in den Hibernation-Modus gefahren werden soll, empfiehlt es sich, die Swap-Partition so groß wie den Hauptspeicher einzurichten. Ansonsten können Sie dem Swap-Bereich auch nur 100 oder 200 Mbyte zuweisen.
69
Installation
magnum
Bild 2.35: Partitionierung auf die Festplatte schreiben
10. Im nächsten Schritt wird das Grundsystem installiert. Sie können den zu installierenden Kernel auswählen:
Bild 2.36: Kernel auswählen
70
Kapitel 2 · Installation und Updates
11. Im letzten Schritt wird der Bootloader GRUB installiert. Er erkennt bereits auf der Festplatte vorhandene Betriebssysteme und integriert diese in sein Bootmenü. Daher können Sie ihn problemlos in den Master Boot Record installieren, wenn Sie keine anderen Konfigurationspläne haben.
Bild 2.37: Bootloader GRUB installieren
Damit ist die Installation abgeschlossen. Entfernen Sie die CD-ROM aus dem Laufwerk und drücken Sie auf die (¢)-Taste, damit das System neu gebootet wird. GRUB startet anschließend standardmäßig das neu installierte Debian GNU/Linux und schlägt Ihnen vor, das neue System gleich zu konfigurieren. Sie können die Konfiguration sofort oder später durchführen. 12. Wenn Sie die Konfiguration sofort durchführen, müssen Sie als Nächstes die Zeitzone konfigurieren. 13. Anschließend muss das root-Passwort eingegeben werden. 14. Im nächsten Schritt wird ein neuer Benutzer angelegt. 15. Danach startet die APT-Konfiguration. Sie legen fest, ob Ihre Installationsquelle eine CD-ROM, ein FTP- oder HTTP-Server oder ein Dateisystem bzw. eine von Ihnen manuell hinterlegte Quelle ist. Wenn Sie CD-ROM wählen, müssen Sie noch die Gerätedatei (in der Regel /dev/cdrom) für Ihr CD-ROMLaufwerk angeben. 16. Es folgt die Auswahl des Installationsumfangs. Wenn Sie eine manuelle Paketauswahl wünschen, werden die einzelnen Pakete angezeigt und können mit der Taste (g) installiert werden. Wenn Ihr PC bereits über eine Internetverbindung verfügt, werden die Pakete in der Regel direkt aus einem Debian-Archiv im Internet heruntergeladen.
71
Softwareupdates
magnum
2.3 Softwareupdates Jede Linux-Installation kann problemlos ohne Neuinstallation aktualisiert werden, wenn es eine neue Version der installierten Distribution gibt oder wenn Pakete der Distribution ergänzt oder aktualisiert werden. Dies kann mit der Installations-CD-ROM oder -DVD der neuen Distributionsversion durchgeführt werden. Wenn Sie mit dieser den Rechner mit dem bestehenden System booten, erhalten Sie bei allen hier vorgestellten Distributionen die Option »Update« statt »Neuinstallation« angeboten. Alternativ können Sie die neuesten ISO-Images der Distributionen von deren Websites downloaden, auf CD-ROM brennen und mit damit ein Update auf dieselbe Weise wie mit kommerziell erworbenen CD-ROMs durchführen. Darüber hinaus können Sie auch nur einzelne Softwarepakete downloaden und nachinstallieren, wie in Abschnitt 2.4 beschrieben. Wenn Sie eine Internetverbindung für Ihre Linux-Installation eingerichtet haben, gibt es noch eine weitere Möglichkeit für ein einfaches Update. SUSE Linux bietet mit YaST im Menü SOFTWARE die Option ONLINE-UPDATE an und Debian GNU/Linux 3.1 enthält das Tool aptitude, um schnell und problemlos aktuelle Software aus dem Debian-Archiv im Internet zu beziehen (vergleiche Abschnitt 2.5.1).
2.4 Softwarepakete installieren und deinstallieren Die meisten Linux-Distributionen bieten heute ihre komplette Software, einschließlich des Betriebssystems, in Form von Paketen an. Die Ausgabe von Programmen in so genannten Paketen erleichtert die Installation und Verwaltung der Programme erheblich. Ein Paket enthält wie ein Archiv alle zu installierenden Dateien und einige zusätzliche Informationen:
쮿
Informationen über das Softwarepaket
쮿
Informationen über Abhängigkeiten zu anderen Paketen, die dann gegebenenfalls auch installiert werden müssen
쮿
Informationen über den Dateityp, wie zum Beispiel Binärdatei, Konfigurationsdatei, Dokumentation usw.
쮿
Installations- und Deinstallationsskripte
Pakete unter Linux basieren in der Regel auf anderen Paketen, zum Beispiel auf Bibliotheken, die unter anderem gemeinsam genutzte Programmteile enthalten. Ein Installations- oder Paketverwaltungsprogramm berücksichtigt automatisch diese Abhängigkeiten, damit alle Pakete installiert werden, die ein neu zu installierendes Paket benötigt, um lauffähig zu sein. Die Paketverwaltung steuert sämtliche Software, die über Pakete installiert wurde, so dass diese auch wieder problemlos vollständig deinstalliert werden kann. Wenn Sie allerdings als fortgeschrittener Linux-Anwender eine andere Installationsart verwenden, wie zum Beispiel das Einspielen von tar-Archiven, übergehen Sie die Paketverwaltung und können diese auch nicht für die Deinstallation nutzen.
72
Kapitel 2 · Installation und Updates
Unter Linux hat sich das von Red Hat entwickelte rpm-Format als standardmäßiges Paketformat bei den meisten Distributionen etabliert, das heißt, diese verwenden auch den Red Hat Package Manager mit dem Befehl rpm zur Paketverwaltung. Allerdings sind trotzdem die Pakete der verschiedenen Distributionen nicht einfach untereinander austauschbar, da sie für die entsprechende Distribution angepasst wurden. Wenn Sie also Pakete für SUSE Linux installieren, sollten diese auch aus einer Quelle für SUSE-Linux-Software stammen, und wenn die Pakete für Fedora Core bestimmt sind, sollten Sie diese ebenfalls aus einer passenden Quelle beziehen. Debian GNU/Linux verwendet einen eigenen Paketmanager, der mit dem Befehl apt-get gesteuert wird (vergleiche Abschnitt 2.5). Sie können bei Fedora Core Linux 4.0 immer noch die rpm-Befehle verwenden oder alternativ den neuen Software-Installationsbefehl yum.
2.4.1
RPM-Pakete installieren
RPM-Pakete enthalten in der Regel zum einen ein Binärpaket mit den kompilierten Binärdateien und die für die Installation notwendigen Informationen und Konfigurationsdateien und zum anderen ein Quellpaket mit dem Quellcode der für die Erstellung des Binärpakets benötigten Dateien. Schon der Dateiname eines Pakets bietet aussagekräftige Informationen. Das Paket acl-2.2.7-5.i386.rpm bezeichnet das Programm acl mit der Versionsnummer 2.2.7 und der Releasenummer 5. Die Releasenummer wird oft nicht angegeben, sondern erst dann hochgezählt, wenn Fehler im RPM-Paket behoben, Änderungen durchgeführt oder Dokumentationsdateien hinzugefügt wurden. Die Angabe i386 besagt, dass dieses Paket Binärdateien für Intel-Prozessoren enthält. Wenn an dieser Stelle die Angabe src gemacht wird, handelt es sich um ein Paket mit Quellcodedateien. Außer den Binärdateien enthält ein Paket auch Informationen über eine kurze Paketbeschreibung, über die Versionsnummer, über die Einordnung in die Gruppenhierarchie, in der alle Pakete verwaltet werden, und die Abhängigkeit von anderen Paketen. Vor allem die letzte Angabe ist von Bedeutung, wenn das Paket die vorherige Installation anderer Pakete voraussetzt.
Der Befehl rpm Dieser Befehl ist ein umfangreicher Paketverwalter für Befehls lautet:
rpm-Pakete.
Die Syntax des
# rpm [-option(en)]
Die wichtigsten Optionen des Befehls sind: Option
Beschreibung
-a oder --all
Zeigt gemeinsam mit -q alle installierten Pakete an
-c oder --configfiles
Zeigt gemeinsam mit -q alle Konfigurationsdateien an
Tab. 2.3: Die Optionen des Befehls rpm
73
Softwarepakete installieren und deinstallieren
magnum
Option
Beschreibung
-d oder --docfiles
Zeigt gemeinsam mit -q alle Dokumentationsdateien an
-e oder --erase
Löscht installierte Pakete
-f datei oder --file datei
Zeigt gemeinsam mit -q das Paket an, das die angegebene Datei enthält
--force
Erlaubt, dass bereits vorhandene Pakete und Dateien ersetzt werden
-h oder --hash
Zeigt den Fortschritt der Installation mit Hilfe von Hashzeichen an
-i oder --install
Installiert Pakete
-i paket oder --install paket
Zeigt gemeinsam mit -q Informationen zum angegebenen Paket an
-l paket oder --list paket
Zeigt gemeinsam mit -q die im Paket enthaltenen Dateien an
--nodeps
Es wird keine Abhängigkeitsprüfung durchgeführt.
-p datei oder --package datei
Zeigt gemeinsam mit -q Informationen über die angegebene Paketdatei an
-q oder --query
Zeigt Informationen über Pakete an
--quiet
Die Ausgabe wird auf Fehlermeldungen beschränkt.
-R oder --requires
Zeigt gemeinsam mit -q Abhängigkeiten an
--test
Es wird nur getestet und nicht wirklich installiert.
-U oder --upgrade
Aktualisiert das Paket
-v
Liefert ausführliche Informationen
-V oder --verify
Überprüft, ob die Dateien mit den Paketangaben übereinstimmen
-vv
Liefert sehr ausführliche Informationen
Tab. 2.3: Die Optionen des Befehls rpm (Forts.)
Im nachfolgenden Beispiel wird ein neues Paket installiert. Wenn es Abhängigkeiten zu anderen Paketen gibt, erhalten Sie eine entsprechende Fehlermeldung: # rpm -ivh acl-2.2.7-5.i386.rpm acl ##################################################
Im nächsten Beispiel wird ein Paket aktualisiert. Ist das zu aktualisierende Paket auf dem Rechner noch nicht vorhanden, wird es neu installiert: # rpm -U acl-2.2.7-5.i386.rpm
Nun wird ein bereits installiertes Paket wieder entfernt. Dies ist nur möglich, wenn kein anderes Paket von diesem abhängig ist: # rpm -ev acl-2.2.7-5.i386.rpm
74
Kapitel 2 · Installation und Updates
Sie können bereits installierte und nicht installierte Pakete mit dem Befehl rpm -q abfragen. Im ersten Beispiel werden ausführliche Informationen zu einem installierten Paket abgefragt: # rpm -qi tftp-0.34-61 Name : tftp Relocations: (not relocateable) Version : 0.34 Vendor: SUSE Linux AG, Nuernberg, Germany Release : 61 Build Date: Tue Sep 23 19:33:06 2003 Install date: Sat Jan 17 20:43:20 2004 Build Host: gregory.suse.de ...
Wenn Sie Informationen über eine rpm-Datei benötigen, gehen Sie wie folgt vor: # rpm -qpi Name Version Release
jdk-1.3.1.i386.rpm : jdk Relocations: (not relocateable) : 1.3.1 Vendor: Sun Microsystems : fcs Build Date: Son 06 Mai 2001 12:46:01 CEST
Im nächsten Beispiel werden alle im Paket enthaltenen Dateien angezeigt: # rpm -qlp jdk-1.3.1.i386.rpm | less
Es ist auch möglich, alle Dokumentations- oder Konfigurationsdateien anzuzeigen: # rpm -qd at /usr/share/doc/packages/at/ChangeLog /usr/share/doc/packages/at/Copyright /usr/share/doc/packages/at/Problems ...
Es ist auch möglich, abzufragen, aus welchem Paket eine Datei stammt: # rpm -qf /usr/bin/passwd shadow-4.0.3-182
Eventuell erhalten Sie hier die Meldung, dass eine Datei nicht aus einem bestimmten Paket stammt: # rpm -qf /etc/group file /etc/group is not owned by any package
Im letzten Beispiel werden alle installierten Pakete angezeigt: # rpm -qa | more filesystem-9.0-6 sash-3.6-105 man-pages-1.60-18 yast2-trans-es-2.8.2-5 yast2-trans-ru-2.7.5-95 ...
2.4.2
Grafische Paketverwaltung mit KDE
KDE bietet das grafische Tool KPACKAGE zur Paketverwaltung an. Sie können es über das Hauptmenü SYSTEM - KONFIGURATION - KPACKAGE starten. Das Paket zeigt alle installierten Pakete alphabetisch nach Kategorien sortiert an. Wenn Sie auf der rechten Fensterhälfte ein Paket anklicken, werden auf der linken Seite Informationen zum Paket angezeigt.
75
Softwarepakete installieren und deinstallieren
magnum
Dieses Tool steht unter Fedora Core Linux 4.0 standardmäßig nicht zur Verfügung. Bei Debian GNU/Linux KDE 2.2.2 finden Sie das Paket im KDE-Menü unter SYSTEM - PACKAGE MANAGER.
Bild 2.38: KPACKAGE - KDE-Paketmanager
Ein markiertes Paket kann deinstalliert werden, indem Sie auf die Schaltfläche DEINSTALLIEREN klicken. Es öffnet sich das Deinstallationsfenster, in dem Sie noch einmal auf DEINSTALLIEREN klicken:
Bild 2.39: Ein Paket deinstallieren
76
Kapitel 2 · Installation und Updates
Das Paket enthält anschließend keine Liste mit installierten Dateien mehr. Mit der Taste (F5) können Sie die Ansicht aktualisieren, so dass das Paket nicht mehr angezeigt wird.
Bild 2.40: Ein deinstalliertes Paket
Wenn Sie ein Paket installieren, müssen Sie eventuell probieren, auf welcher Installations-CD sich das gewünschte Paket befindet. Legen Sie die CD oder DVD ein und klicken Sie auf GERÄTE und anschließend auf das verwendete Gerät. In diesem Beispiel wird das Paket supertux wieder installiert, es befindet sich auf der zweiten Installations-CD von SUSE.
Bild 2.41: Ein Paket installieren
77
Softwarepakete installieren und deinstallieren
magnum
Nach Auswahl des Pakets öffnet sich das Installationsfenster. Klicken Sie hier auf INSTALLIEREN. Das Programm zeigt an, wenn die Installation fertig ist.
Bild 2.42: Installationsfenster von KPACKAGE
Das installierte Paket wird wieder angezeigt und auch die dazugehörige Dateiliste kann wieder eingesehen werden:
Bild 2.43: Die Dateiliste des installierten Pakets anzeigen
78
Kapitel 2 · Installation und Updates
2.4.3
Grafische Paketverwaltung mit YaST
Die Paketverwaltung unter SUSE kann über das Yast2-Modul SOFTWARE und die Option SOFTWARE INSTALLIEREN ODER LÖSCHEN durchgeführt werden. An dieser Stelle ist es nicht nur möglich, Software zu installieren oder zu deinstallieren, sondern auch, ein Online-Update, ein System-Update und ein Patch-Update durchzuführen. Klicken Sie auf die Option SOFTWARE INSTALLIEREN ODER LÖSCHEN. Schalten Sie im Paketverwaltungsfenster dann den Filter von SUCHEN auf PAKETGRUPPEN um.
Bild 2.44: Paketgruppen anzeigen
Den Filter SUCHEN können Sie verwenden, um nach einem bestimmten Paket zu suchen. Der Filter PAKETGRUPPEN zeigt alle Pakete an, die installiert sind oder installiert werden können. In unserem Beispiel wollen wir das Paket qt3-devel installieren, das wir für die grafische Anzeige der Kernelkonfiguration (vergleiche Kapitel 16) benötigen. Es ist ein Entwicklertool, das Sie finden, wenn Sie im linken Fensterbereich auf ENTWICKLUNG klicken und dann im rechten Fensterbereich alphabetisch suchen. Aktivieren Sie dann das Kontrollkästchen und klicken Sie auf ÜBERNEHMEN:
79
Softwarepakete installieren und deinstallieren
magnum
Bild 2.45: Neues Paket installieren
Es werden vom Paketmanager immer die Abhängigkeiten geprüft, das heißt, ob das Paket überhaupt lauffähig ist, wenn bestimmte andere Pakete nicht installiert sind. Sie erhalten in diesem Fall folgende Meldung:
Bild 2.46: Information über Abhängigkeiten
Sie können hier die Pakete deaktivieren, die Sie nicht installieren wollen. Allerdings funktioniert dann auch das von Ihnen ausgewählte Paket nicht, da es ja von den angezeigten abhängig ist. Klicken Sie daher einfach auf FORTFAHREN, damit die Installation ordnungsgemäß durchgeführt werden kann. Sie werden dann aufgefordert, die SUSE-CD einzulegen, die das Paket enthält, und auf OK zu klicken:
80
Kapitel 2 · Installation und Updates
Bild 2.47: Aufforderung, CD einzulegen
Der Fortschritt der Paketinstallation wird angezeigt und Sie erhalten eine Meldung, wenn sie abgeschlossen ist.
Bild 2.48: Fortschrittsanzeige der Paketinstallation
Wenn Sie ein Paket mit YaST deinstallieren, dann suchen Sie es ebenfalls einfach aus der Paketliste aus und entfernen den Prüferhaken vor dem Paketnamen. Anschließend klicken Sie wieder auf ÜBERNEHMEN und das deaktivierte Paket wird entfernt.
81
Softwarepakete installieren und deinstallieren
2.4.4
magnum
Grafische Paketverwaltung mit Fedora Linux
Die Paketverwaltung unter Fedora Core Linux kann über das KDE-Menü SYSTEMEINSTELLUNGEN - HINZUFÜGEN/ENTFERNEN VON SOFTWARE durchgeführt werden:
Bild 2.49: Paket-Manager von Fedora Core Linux
Klicken Sie auf DETAILS neben einer Paketgruppe, um weitere Pakete auswählen zu können, zum Beispiel zu Netzwerkserver. Klicken Sie dann auf die zusätzlich zu installierenden Pakete, so dass das Häkchen erscheint, und anschließend auf SCHLIESSEN.
Bild 2.50: Weitere Pakete zur Installation auswählen
82
Kapitel 2 · Installation und Updates
Klicken Sie nun auf die Schaltfläche AKTUALISIERUNG. Die zu installierenden Pakete werden in eine Installationswarteschlange gestellt, und wenn Sie auf WEITER klicken, wird die Installation durchgeführt.
Bild 2.51: Installationsinformationen
Nach der Installation wird eine Erfolgsmeldung angezeigt. Klicken Sie auf OK, um die Installation zu beenden.
Bild 2.52: Installation beenden
2.5 Debians Paketverwaltung Debians Paketverwaltung bestand bis Debian Version 3.0 aus dem Befehl Seit der Version 3.1 gibt es das komfortablere Tool aptitude.
2.5.1
apt-get.
Der Befehl aptitude
Debian Linux hat zu seinem eigenen Befehl apt-get für die Paketverwaltung eine Benutzerschnittstelle aptitude geschaffen, mit der Sie Pakete auswählen, installieren und deinstallieren können. Das Tool sorgt auch dafür, dass die Abhängigkeiten der installierten Pakete korrekt behandelt werden. Es kann entweder auf der grafischen Oberfläche im Hauptmenü unter DEBIAN - APPS - SYSTEM - APTITUDE gestartet oder in der Befehlszeile eines Terminalfensters aufgerufen werden: # aptitude &
83
Debians Paketverwaltung
magnum
Sie sollten bei Debian grundsätzlich mit Hilfe des Paketmanagers Software nachinstallieren, weil es in diesem Fall keine Probleme mit Paketabhängigkeiten gibt. Bei herkömmlichen Downloads von Paketen müssen oft Abhängigkeiten manuell aufgelöst werden, was häufig sehr kompliziert ist. Damit
aptitude auf verschiedene Debian-Archive zugreift, pflegen Sie die Datei /etc/sources.list entsprechend. Zum Beispiel sollte grundsätzlich der Eintrag deb http://ftp.de.debian.org/debian stable main contrib non-free
darin enthalten sein, um Pakete mit aptitude aus den Archiven stable, main, contrib und non-free downloaden und installieren zu können. Wenn Sie die Datei /etc/sources.list geändert haben, rufen Sie apitude auf und wählen den Menüpunkt ACTIONS und anschließend die OPTION UPDATE PACKAGE list. Das Programm zeigt in der oberen Fensterhälfte die vorhandenen Pakete sortiert nach Kategorie und Status und unten die zum Paket gehörenden Informationen an. Mit der linken Maustaste können die Optionen der Menüleiste aktiviert werden:
Bild 2.53: Debians Pakettool aptitude
Wenn neue Pakete ins Sicherheitsarchiv eingestellt werden und Ihr Rechner eine Internetverbindung hat, werden diese Sicherheitsupdates in einer eigenen Kategorie aufgeführt und automatisch für die Installation ausgewählt. Ebenfalls eine eigene Kategorie bilden neue Pakete, die in das Debian-Archiv aufgenommen wurden. Eine weitere zusätzliche Kategorie können die aktualisierten Pakete bilden, die eine neuere Version im Debian-Archiv haben. Diese drei Kategorien werden angezeigt, wenn Sie eine Internetverbindung eingerichtet haben und den Menüpunkt AKTIONEN - PAKETE AKTUALISIEREN wählen oder auf die Taste (u) drücken.
84
Kapitel 2 · Installation und Updates
Installierte Pakete und nicht installierte Pakete bilden standardmäßig jeweils einen eigenen Kategoriepunkt. Virtuelle Pakete sind – wie der Name sagt – keine wirklichen Pakete, sondern Pakete, die von einem Paketsatz angeboten werden und in mehreren Paketen enthalten sein können, um Abhängigkeiten aufzulösen. Die Schnellauswahl oder so genannten Tasks dagegen sind Paketsammlungen, in denen spezielle Applikationen zusammengefasst wurden. Mit der Maus können Sie auch in der oberen Fensterhälfte die gewünschte Kategorie anklicken (bzw. alternativ mit der Pfeiltaste nach unten navigieren) und anschließend auf die Taste (¢) oder (Enter) drücken, um die Kategorie zu öffnen bzw. zu schließen. Wenn Sie eine Kategorie durch die Taste (¢) aufklappen, erhalten Sie den Inhalt der Kategorie. Die Unterpunkte können wiederum mit Hilfe der Taste (¢) erweitert bzw. wieder geschlossen werden:
Bild 2.54: Die Menüs von Debians Pakettool aptitude
Folgende Paketstatus sind möglich: Status
Beschreibung
B
Beschädigtes Paket
c
Entferntes, aber nicht vollständig gelöschtes Paket, das heißt, es sind zum Beispiel noch Einstellungen in Konfigurationsdateien vorhanden
C
Halb konfiguriertes Paket
E
Interner Fehler
H
Halb installiertes Paket
i
Installiertes Paket
Tab. 2.4: Die Status des Tools aptitude
85
Debians Paketverwaltung
Status
Beschreibung
p
Vollständig gelöschtes Paket
u
Entpacktes Paket
v
Virtuelles Paket
magnum
Tab. 2.4: Die Status des Tools aptitude (Forts.)
Mit Hilfe des Menüpunkts PAKET oder der Tastatur können Sie die Paketauswahl bearbeiten. Dazu navigieren Sie zuerst zum gewünschten Paket und wählen dann die entsprechende Aktion aus: Taste
Beschreibung
+
Paket für die Installation auswählen
-
Paket zum Löschen auswählen
_
Paket für das vollständige Löschen auswählen
=
Paket markieren, dass es auf »hold« gesetzt wird, das heißt, nicht durch ein automatisches Update geändert werden kann
:
Paket markieren, dass es für die aktuelle Sitzungsdauer auf »hold« gesetzt wird, das heißt, nicht durch ein automatisches Update geändert werden kann
C
Datei changelog zu einem Paket downloaden und anzeigen
g
Gewünschte Änderungen in einem Vorschaufenster anzeigen
L
Paket nochmals installieren
l
Paket und seine Abhängigkeiten sofort installieren, während alle anderen installierten Pakete in der Zeit auf »hold« gesetzt werden
R
Paket nochmals konfigurieren
Tab. 2.5: Die Aktionen des Tools aptitude
Die Installation oder Deinstallation können Sie schließlich über den Menüpunkt AKTIONEN - INSTALLIEREN/ENTFERNEN VON PAKETEN auslösen. Wenn Sie eine bestehende Internetverbindung haben, wird die Aktualisierung direkt mit Hilfe des Debian-Archivs durchgeführt:
86
Kapitel 2 · Installation und Updates
Bild 2.55: Pakete installieren mit Debians Pakettool aptitude
Zuvor werden Ihnen noch die abhängigen Pakete angezeigt, die gleichzeitig mitinstalliert werden müssen, damit das Paket ordnungsgemäß funktioniert:
Bild 2.56: Paketabhängigkeiten mit Debians Pakettool aptitude anzeigen
87
magnum
Debians Paketverwaltung
2.5.2
Der Befehl apt-get
Debian Linux hat einen eigenen Befehl für die Paketverwaltung. Die Syntax des Befehls lautet: # apt-get [-option(en)] [anweisung [paket]]
Die wichtigsten Anweisungen des Befehls sind: Option
Beschreibung
autoclean
Entfernt Pakete aus dem lokalen Aufbewahrungsort von abgerufenen Paketdateien, die nicht mehr aus dem Internet heruntergeladen werden können
check
Ist ein Diagnosetool, das den Paket-Cache aktualisiert und prüft, ob Abhängigkeiten unterbrochen wurden
clean
Entfernt Pakete aus dem lokalen Aufbewahrungsort von abgerufenen Paketdateien
install paket
Installiert die angegebenen Pakete
remove paket
Entfernt die angegebenen Pakete
source
Es werden Source-Pakete geholt.
update
Resynchronisiert die Paketindexdateien mit ihren Quellen
upgrade
Wird verwendet, um die neueste Version aller zuletzt installierter Pakete zu installieren
Tab. 2.6: Die Optionen des Befehls apt-get
Es gibt außerdem noch den Befehl apt-cache, ein APT-Paketbearbeitungstool, um den Cache zu bearbeiten. Außerdem kann parallel zu apt-get auch das Paketverwaltungstool dpkg verwendet werden. Die Konfiguration der Quellen für die Installation oder Aktualisierung wird mit Hilfe des Befehls apt-setup in der Datei /etc/apt/sources.list durchgeführt. Im ersten Beispiel wird nach Paketen gesucht, in deren Namen oder Beschreibung die Zeichenkette apache steht: # apt-cache search apache
In der Ausgabe steht am Anfang jeder Zeile der Paketname. Im nächsten Beispiel werden weitere Informationen zu dem Paket ausgegeben: # apt-cache show apache
Im folgenden Beispiel wird das Paket schließlich installiert: # apt-get install apache
Mit diesem Aufruf werden gleichzeitig alle Abhängigkeiten aufgelöst, das heißt, alle für das Paket apache notwendigen Pakete automatisch mitinstalliert. Eine Übersicht über alle installierten Pakete erhalten Sie mit folgendem Befehl: # dpkg -l
88
Kapitel 2 · Installation und Updates
Die zu einem Paket gehörigen Dateien können wie folgt angezeigt werden: # dpkg -L apache
Ein Paket kann mit diesem Befehl entfernt werden: # apt-get remove apache
Beim Entfernen eines Pakets werden keine Konfigurationsdateien gelöscht, so dass diese nachträglich wie im folgenden Beispiel entfernt werden müssen: # dpkg --purge apache
Wenn mit dem Befehl apt-setup FTP- oder HTTP-Quellen konfiguriert wurden, sollten die Paketlisten aktualisiert werden, wie in diesem Beispiel: # apt-get update
Im nächsten Beispiel wird nach dem Aktualisieren der Paketlisten nach aktualisierten Paketen gesucht und diese werden installiert: # apt-get upgrade
Dabei werden temporär Pakete gespeichert. Diese können wie im folgenden Beispiel wieder gelöscht werden: # apt-get clean
2.6 Quellcode kompilieren Alle Open-Source-Programme liegen auch als Quellcode vor. Quellcode zu kompilieren und installieren hat den Vorteil, dass das Programm flexibler in bereits bestehende Verzeichnis- und Bibliotheksstrukturen aufgenommen wird. Binärdateien benötigen dagegen häufig bestimmte Systembedingungen. Die Installation von Quellcode ist aber in der Regel schwieriger, da jeder Programmierer hier individuelle Vorgaben haben kann. Dieser Abschnitt erläutert eine Vorgehensweise, nach der in vielen Fällen vorgegangen werden kann. Lesen Sie grundsätzlich die Informationen in den Dateien INSTALL und README, bevor Sie mit dem Kompilieren und Installieren von Quellcode beginnen. Die Verwendung eines Paketmanagers hat aber gegenüber der Installation von Programmen aus dem Quellcode viele Vorteile. Die Installation von Quellcode hat einige Nachteile:
쮿
die Schwierigkeit, den Überblick über die installierten Programme und Versionen zu behalten
쮿
die Unmöglichkeit, die Zugehörigkeit einer Datei zu einem Programmpaket herauszufinden
쮿
die Aufwändigkeit von Aktualisierungen, da bei einer Installation mit dem Befehl make (vergleiche Abschnitt 2.3) auch bereits vorhandene Konfigurationsdateien überschrieben werden
쮿
das Fehlen von Informationen, welche Pakete und Bibliotheken für die Ausführung des Programms benötigt werden. Das bedeutet, es ist möglich, ein Paket zu installieren, ohne dass ein dafür benötigtes Paket auch installiert wurde.
89
Quellcode kompilieren
2.6.1
magnum
Komprimierte Quellcodedateien entpacken
Häufig werden die Quellcodedateien für eine Installation zusammen mit einer Datei Makefile und der Dokumentation in einem Verzeichnisbaum zusammengefasst und dieser wird archiviert und komprimiert. Ein typischer Archivierungsbefehl ist tar und zur Komprimierung wird häufig gzip verwendet (vergleiche Kapitel 7). Zum Entpacken und Dearchivieren gibt es verschiedene Möglichkeiten: $ gzip -d quelldatei.tar.gz ; tar xvf quelldatei.tar
oder: $ gunzip quelldatei.tar.gz ; tar xvf quelldatei.tar
oder: $ gzip -cd quelldateie.tar.gz | tar xv
oder: $ tar zxvf quelldatei.tar.gz
Unter Linux werden Programme in der Regel in C oder C++ entwickelt. Haben diese Programme einen größeren Umfang, kann es vorkommen, dass der Quellcode sich in verschiedenen Dateien befindet. Dann muss jede Datei mit der Endung .c individuell kompiliert werden. Durch das Kompilieren werden Objektdateien mit der Endung .o erzeugt, die anschließend mit dem Programm make zum ausführbaren Programm zusammengebunden werden.
Der Befehl configure Häufig enthält ein Quellcodepaket ein Skript mit dem Namen configure. Dieses überprüft das Zielsystem dahingehend, ob die für die Kompilierung notwendigen Voraussetzungen vorhanden sind, und erstellt dann eine angepasste Datei Makefile für die Konfiguration der Installation. Wenn das Skript auf Fehler stößt, zum Beispiel dass Bibliotheken fehlen, so erhalten Sie entsprechende Meldungen. In diesem Fall müssen die fehlenden Systemkomponenten zuerst nachinstalliert werden.
Der Befehl make Der Befehl make erhält aus einer für jedes Programm individuellen Konfigurationsdatei Makefile für den jeweiligen Kompiliervorgang von Objektdateien des Quellcodes seine Anweisungen, zum Beispiel welche Dateien kompiliert und zu einem Programm gelinkt werden sollen. Unter anderem vergleicht der Befehl die Änderungszeiten der Objekt- mit denen der Quellcodedateien und kompiliert nur die Objektdateien, die älter als ihre Quellcodedateien sind. Das heißt, bei kleinen Änderungen sind keine vollständigen Neukompilierungen notwendig, was Zeitersparnis bedeutet. In der Regel wird für ein Quellcodeprogramm ein bestimmter Verzeichnispfad für die ausführbaren Dateien definiert, meistens das Verzeichnis /usr/local/bin. In manchen Dateien Makefile wird ein Ziel mit der Bezeichnung install aufgeführt, das den Installationsort enthält. In diesem Fall kopiert der Befehl make install die entstandenen Dateien und weist ihnen die notwendigen Rechte zu.
90
Kapitel 2 · Installation und Updates
Es kann vorkommen, dass ein im Makefile angegebenes Installationsverzeichnis nicht mit dem Verzeichnisbaum einer Linux-Distribution übereinstimmt, was zu Problemen führt. Das kann zum Beispiel auch durch einen Versionswechsel entstehen, bei dem der Pfad des Standardinstallationsverzeichnisses geändert wurde. Eine alternative und effizientere Lösung ist, anstelle des Befehls make install den Befehl checkinstall make install zu verwenden. Die komplette Installation wird nun vom Tool installwatch überwacht und aus den installierten Dateien wird ein RPM-, Slackware- oder Debian-Paket erstellt und nochmals installiert, so dass ein Eintrag in der Paketverwaltung verzeichnet wird. Am Ende des Befehls checkinstall wird das Verzeichnis und der Dateiname angezeigt, unter dem das erzeugte Paket abgelegt wurde. Dieses kann dann zum Beispiel auch mit dem Befehl rpm oder einem grafischen Paketverwaltungstool installiert werden.
91
3 Die Befehlszeile und Hilfe verwenden »Mancher ertrinkt lieber, als dass er um Hilfe ruft.« – Wilhelm Busch Wenn Sie beim Eingeben von Linux eine bestimmte Syntax beachten, haben Sie in der Regel weniger Probleme mit Fehlermeldungen. Zu den häufigsten Fehlern beim Eingeben von Befehlen gehören einmal das Weglassen von Leerzeichen, außerdem die fehlende Unterscheidung bei der Eingabe von Groß- und Kleinbuchstaben und schließlich die Verwechslung des Schrägstrichs (»Slash«) zur Trennung von Verzeichnisnamen mit dem rückwärtigen Schrägstrich (»Backslash«). Dieses Kapitel beschreibt den Aufbau von Linux-Befehlen, um den häufigsten Fehlern vorzubeugen, und die Möglichkeiten, unter Linux Hilfe zu erhalten.
3.1 Aufbau von Linux-Befehlen Ein Befehl unter Linux wird an der Eingabeaufforderung hinter dem Promptzeichen eingegeben und hat in der Regel den folgenden Aufbau: $ befehlsname [-option(en)] [argument(e)]
Nicht jeder Befehl kennt Optionen und Argumente und diese müssen bei den meisten Befehlen nicht unbedingt verwendet werden. Das Promptzeichen zeigt an, dass das Betriebssystem auf eine Eingabe wartet, und kann vom Benutzer seinen Anforderungen gemäß eingerichtet werden. Standardmäßig ist das Promptzeichen unter Linux in der Regel das der BourneAgain-Shell (vergleiche Kapitel 9), und häufig wird der Name der Shell und ihre Versionsnummer gefolgt von einem Dollarzeichen angegeben, zum Beispiel bash_2.03$. Bei SUSE 10 besteht das Promptzeichen standardmäßig aus dem Benutzernamen, dem Rechnernamen und dem aktuellen Pfad gefolgt von einem Größerzeichen, zum Beispiel her@pc7linux:/etc>. Bei Fedora Core 4.0 besteht das Promptzeichen ebenfalls standardmäßig aus dem Benutzernamen, dem Rechnernamen und dem letzten Unterverzeichnis des aktuellen Pfads gefolgt von einem Dollarzeichen, zum Beispiel [her@pc7linux etc]$. Bei Debian 3.1 besteht das Promptzeichen wie bei SUSE Linux aus dem Benutzernamen, dem Rechnernamen und dem vollständigen aktuellen Pfad, aber wie bei Fedora gefolgt von einem Dollarzeichen, zum Beispiel her@pc7linux:/etc$. Unabhängig von der Shell und der Linux-Distribution wird dem Benutzer root aber immer als Promptzeichen das Hashzeichen # zugeordnet. Achten Sie bei den Beispielen in diesem Buch darauf, ob vor einem Befehl das Promptzeichen # steht. Das weist darauf hin, dass nur root den Befehl ausführen darf.
93
Optionen und Argumente
magnum
Die einfachste Form eines Befehls besteht immer nur in der Eingabe des Befehlsnamens wie beispielsweise beim nachfolgenden Befehl, der den Inhalt des aktuellen Verzeichnisses auflistet: $ ls
3.2 Optionen und Argumente Eine Option steuert, wie ein Befehl arbeiten soll und regelt Details der Verarbeitung. Ein Argument ist eine Angabe, »was« der Befehl bearbeiten soll. Einem Befehl können mehrere Optionen, aber auch mehrere Argumente mitgegeben werden. Ein Befehl, der in der Regel nur ein Argument verwendet, ist der Befehl cd zum Wechseln des Verzeichnisses. Im folgenden Beispiel wird in das Verzeichnis /etc gewechselt: $ cd /etc
Das Argument ist in diesem Beispiel das Verzeichnis, in das gewechselt werden soll. Der Befehl ls wird häufig mit einer oder mehreren Optionen verwendet. Die Optionen beeinflussen die Ausgabe oder Verarbeitung des Befehls und können in der Regel aneinandergereiht eingegeben werden. Im nachfolgenden Beispiel wird der Inhalt eines Verzeichnisses ausführlich (-l = long) und einschließlich der versteckten Dateien (-a = all) aufgelistet: $ ls –al
Versteckte Dateien in Linux sind in der Regel Konfigurationsdateien. Sie beginnen immer mit einem Punkt und werden normalerweise nicht angezeigt, wenn der Inhalt eines Verzeichnisses aufgelistet wird. Der Befehl ls kann sowohl mit Optionen als auch mit Argumenten verwendet werden. Das nachfolgende Beispiel erzeugt ein ausführliches Listing aller Dateien in den Verzeichnissen /etc und /sbin: $ ls –al /etc /sbin
Bei der Erzeugung von Dateien und Verzeichnissen sollten Sie daran denken, dass Linux Groß- und Kleinschreibung unterscheidet. Aus diesem Grund werden zum Beispiel die Dateien /home/her/bericht, /home/her/BERICHT und /home/her/Bericht etc. als separate Dateien betrachtet. Damit der Befehl Optionen und Argumente auseinander halten kann, werden Optionen in der Regel mit einem vorangestellten Minuszeichen (–) geschrieben. Werden mehrere Optionen verwendet, können häufig alle Optionen hinter einem Minuszeichen zusammengefasst werden. Um Probleme mit anderen Betriebssystemen, die die Groß- und Kleinschreibung nicht unterscheiden, bzw. um Verwirrung zu vermeiden, verwenden Sie am besten einfach immer die Kleinschreibung.
94
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Ein Dateiname setzt sich unter Linux aus dem Pfadnamen und dem eigentlichen Dateinamen zusammen: /home/her/bericht
Der erste Schrägstrich steht für das Verzeichnis /, während die anderen Schrägstriche Trennzeichen zwischen den einzelnen Verzeichnissen sind. Der eigentliche Dateiname in diesem Beispiel wäre bericht, der Pfadanteil /home/her. Sonderzeichen haben unter Linux oft eine spezielle Bedeutung und sollten daher vermieden werden. Die folgenden Zeichen . , _
können problemlos verwendet werden. Einen Bindestrich (-) sollten Sie nie am Anfang eines Dateinamens verwenden, da eine Eingabe dieses Dateinamens sonst standardmäßig als Option interpretiert würde. Außerdem sollten Sie die deutschen Sonderzeichen, wie zum Beispiel die Umlaute ä, ö, ü und das Zeichen ß, sowie Leerzeichen in Dateinamen vermeiden, da sich daraus in einem Netzwerk mit unterschiedlichen Sprach- und Zeichensatzeinstellungen Probleme ergeben können. Optionen sind unter Linux standardmäßig ein einzelner Buchstabe. Da manche Befehle aber sehr viele Optionen kennen, hat sich diese Schreibweise manchmal als schwer nachvollziehbar erwiesen. Alternativ wurde daher die Möglichkeit eingeführt, Optionen als ausgeschriebene Worte zu verwenden. Diese werden mit doppelten Minuszeichen eingeleitet. $ ls --all
3.3 Hilfe unter Linux In diesem Abschnitt erfahren Sie, wie Sie sich selbst unter Linux weiterhelfen können, wenn es Fragen oder Probleme gibt. Der erste Teil des Abschnitts zeigt Ihnen, wie Sie Hilfe zu Befehlen erhalten. Die grafischen Tools der Linux-Distributionen geben nicht nur zu den Befehlen, sondern auch zu Betriebssystemfragen, zum Beispiel zur Installation, und zu allen Programmen der grafischen Oberfläche eine ausführliche Hilfe. Eine letzte Möglichkeit ist, dass Sie sich an Dritte wenden, in Form von Mailinglisten oder Foren.
3.3.1
Hilfe-Befehle unter Linux
Der Befehl man Die zuvor genannten Möglichkeiten setzen eine grafische Oberfläche und gegebenenfalls einen installierten Browser, eventuell noch eine Internetanbindung voraus. Die Online-Hilfe, die so genannten Manual Pages, die Sie mit dem Befehl man erhalten, steht Ihnen unabhängig davon zur Verfügung, also auch ohne grafische Oberfläche. Der Befehl man ist unter Unix der originäre Hilfebefehl und bei den meisten LinuxDistributionen mit einer etwas verkürzten Ausgabe noch vorhanden.
95
magnum
Hilfe unter Linux
Sie geben dazu an der Befehlszeile einfach den Befehl man und dann den Suchbegriff ein. In erster Linie wird der Befehl verwendet, um die Hilfeseiten zu einem bestimmten Befehl auszugeben, es ist aber auch möglich, Hilfe zu Konfigurationsdateien, zu Systemaufrufen, C-Bibliotheksroutinen, Gerätedateien usw. zu erhalten. Die Befehlssyntax sieht folgendermaßen aus: $ man [-option(en)] befehl
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a
Zeigt alle vorhandenen Manualseiten zum Suchbegriff an
-k suchbegriff
Sucht in der Kurzbeschreibung der Manual Pages nach dem angegebenen Stichwort
-r befehl
Durchsucht die vom angegebenen Befehl referenzierten Manual Pages und gibt die gefundenen Kurzbeschreibungen aus
Tab. 3.1: des Befehls man
Die Navigation in den Manual Pages erfolgt über bestimmte Tasten, entsprechend der Navigation des Befehls more, der in Kapitel 6 erläutert wird. Wenn Sie Hilfe zu dem Befehl uname suchen, geben Sie an der Befehlszeile man ein. Sie erhalten folgende Ausgabe:
uname
$ man uname Reformatting page. Please Wait... done User Commands uname(1) NAME uname - print name of current system SYNOPSIS uname [ -aimnprsvX ] uname [ -S system_name ] DESCRIPTION The uname utility prints information about the current system on the standard output. When options are specified, symbols representing one or more system characteristics will be written to the standard output. If no options are specified, uname prints the current operating system’s name. The options print selected information returned by uname(2), sysinfo(2), or both. ...
Wenn Sie sich in der Anzeige »bewegen« möchten, dann verwenden Sie folgende Tasten zur Navigation: Taste
Aktion
(Leertaste)
Auf die nächste Bildschirmseite der Online-Hilfe weiterblättern
(¢)-Taste
Zeilenweise durch die Online-Hilfe weiterblättern
Tab. 3.2: Navigationsmöglichkeiten in der Online-Hilfe
96
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Taste
Aktion
(b)
Eine Bildschirmseite zurückblättern (»backwards«)
(h)
Eine Hilfe zu allen Navigationsfunktionen anzeigen (»help«)
(/) suchmuster
Die Online-Hilfe vorwärts nach dem eingegebenen Suchmuster durchsuchen
(n)
Nach der nächsten Übereinstimmung mit dem Suchmuster suchen (»next«)
(q)
Den Befehl man beenden (»quit«)
Tab. 3.2: Navigationsmöglichkeiten in der Online-Hilfe (Forts.)
Die Ausgabe der Manual Pages erfolgt nach Name, Syntax, Beschreibung usw. gegliedert, so gibt es zum Beispiel am Anfang der Ausgabe einen Abschnitt NAME mit der Kurzbeschreibung, dann einen Abschnitt SYNOPSIS mit der Befehlssyntax, danach einen Abschnitt DESCRIPTION mit der ausführlichen Beschreibung usw. Wichtige Abschnitte sind der Abschnitt OPTIONS, der jede einzelne Option eines Befehls im Detail erklärt, und der Abschnitt SEE ALSO, der sich ganz unten in der Anzeige des Befehls man befindet und Querverweise zum gewählten Thema enthält. Hinter diesen Verweisen steht jeweils eine in Klammern geschriebene Nummer, die die Sektion der Online-Hilfe angibt, auf die Sie mit Hilfe der Option -s des Befehls man zugreifen können. Die Manual Pages sind in Sektionen aufgebaut, so enthält zum Beispiel bei SUSE Linux, Fedora Core Linux und Debian GNU/Linux die Sektion 1 Benutzerbefehle und die Sektion 5 verschiedene Dateiformate. Daher erhalten Sie mit dem Befehl $ man passwd
Informationen zum Befehl passwd und im Abschnitt SEE ALSO folgende Verweise: SEE ALSO finger(1), login(1), nispasswd(1), nistbladm(1), yppasswd(1), domainname(1M), eeprom(1M), id(1M), passmgmt(1M), pwconv(1M), su(1M), useradd(1M), userdel(1M), passwd(4) ...
Der Befehl $ man 5 passwd
dagegen gibt Informationen über die Datei /etc/passwd in Sektion 5 aus. Wenn Sie keine Sektionsnummer angeben, werden die Informationen der Sektion 1 ausgegeben. Bei anderen Unix- oder Linux-Systemen können die Sektionen der Manual Pages abweichend sein. Alle verwenden aber die Sektion 1 für Benutzerbefehle.
Die hier kurz erwähnten Befehle werden alle in den nachfolgenden Kapiteln noch ausführlich behandelt. Da der Name eines Befehls nicht immer bekannt ist, gibt es auch eine Möglichkeit, die Online-Hilfe nach Stichworten zu durchsuchen. Dazu geben Sie den Befehl man einfach mit der Option -k und dem Stichwort ein (vergleiche Befehl apropos), um eine Auflistung aller Befehle zu erhalten, die zum angegebenen Stichwort gefunden werden, zum Beispiel:
97
Hilfe unter Linux
magnum
$ man -k calendar iwidgets::calendar (n) [iwidgets_calendar] - Create and manipulate a monthly calendar iwidgets_calendar (n) - Create and manipulate a monthly calendar read-ical (1) - coverts information on your Palm handheld into an Icalformatted calendar. Note, this is not the same as the iCal calendar format. wmcalclock (1) - Dockable Calendar Clock $
Debian gibt eine Fehlermeldung mit dem Wortlaut »No manual entry for command« für Befehle aus, die eingebaute Shell-Befehle sind. In diesem Fall müssen Sie den Befehl man bash aufrufen und in den Manual Pages der Shell nach dem Befehl suchen. Fedora und SUSE geben dagegen bei einem man-Befehl für einen eingebauten Shell-Befehl automatisch die Man Pages der bash aus.
Der Befehl help Mit dem Befehl help erhalten Sie eine Online-Hilfe zu einem Befehl. Wenn es ein in die Shell fest eingebauter Befehl ist, ein so genannter Shell-Builtin, wie zum Beispiel cd, sieht die Syntax wie folgt aus: $ help [-s] befehl
Der Befehl help ist selbst ein eingebauter Befehl der Bourne-Again-Shell (vergleiche Kapitel 9). So kann zum Beispiel zum Befehl cd wie folgt Hilfe gesucht werden: $ help cd
Die Option -s verkürzt die Ausgabe. Wenn Sie Hilfe zu anderen Befehlen suchen, dann geben Sie zuerst den entsprechenden Befehl und anschließend --help ein. Die Befehlssyntax sieht folgendermaßen aus: $ befehl --help
Zum Beispiel Hilfe zum Befehl ls: $ ls --help
Der Befehl apropos Wenn Sie den Namen eines Befehls nicht kennen, durchsuchen Sie die Online-Hilfe nach Stichworten, zum Beispiel: $ apropos befehl
Die Namenszeilen aller Man Pages werden nach dem Stichwort durchsucht.
98
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-d oder --debug
Gibt Debug-Informationen aus
-r oder --regex
Interpretiert jedes Schlüsselwort als regulären Ausdruck (vergleiche Kapitel 7, Befehl grep)
-w oder --wildcard
Interpretiert jedes Schlüsselwort als Muster, das Wildcards enthält (vergleiche Kapitel 9)
-e oder --exact
Jedes Schlüsselwort muss exakt mit dem Seitennamen übereinstimmen.
-M pfad oder --manpath=pfad
Definiert einen alternativen Satz von durch Strichpunkt getrennten Manual-Page-Hierarchien, die durchsucht werden sollen. Standardmäßig wird zur Suche der Inhalt der Umgebungsvariablen MANPATH verwendet.
Tab. 3.3: Die Optionen des Befehls apropos
Der nachfolgende Befehl sucht zum Beispiel Befehle, die das Thema Editieren betreffen: $ apropos edit pdbedit (8) - manage the SAM database Tk::ColorEditor (3pm) - a general purpose Tk widget Color Editor rvim (1) - Vi IMproved, a programmers text editor audacity (1) - Graphical cross-platform audio editor tcsh (1) - C shell with file name completion and command line editing psed (1) - a stream editor ...
Bei einigen Linux-Varianten, zum Beispiel Fedora Linux, funktioniert der Befehl apropos erst, wenn Sie zuvor als root den Befehl makewhatis gestartet haben. Damit werden die für den Befehl notwendigen Indexdatenbanken erstellt.
Der Befehl whatis Wenn Sie nur eine Kurzhilfe möchten, dann verwenden Sie den Befehl whatis. Die Syntax des Befehls lautet: $ whatis befehl
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-d oder --debug
Gibt Debug-Informationen aus
-r oder --regex
Interpretiert jedes Schlüsselwort als regulären Ausdruck (vergleiche Kapitel 7, Befehl grep)
-w oder --wildcard
Interpretiert jedes Schlüsselwort als Muster, das Wildcards enthält (vergleiche Kapitel 9)
-M pfad oder --manpath=pfad
Definiert einen alternativen Satz von durch Strichpunkt getrennten Manual-Page-Hierarchien, die durchsucht werden sollen. Standardmäßig wird zur Suche der Inhalt der Umgebungsvariablen MANPATH verwendet.
Tab. 3.4: Die Optionen des Befehls whatis
99
magnum
Hilfe unter Linux
Der nachfolgende Befehl gibt zum Beispiel eine Kurzbeschreibung zum Befehl aus:
ls
$ whatis ls
ls (1)
- list directory contents
Bei einigen Linux-Varianten, zum Beispiel Red Hat Linux, funktioniert der Befehl whatis erst, wenn Sie zuvor als root den Befehl makewhatis gestartet haben. Damit werden die für den Befehl notwendigen Indexdatenbanken erstellt.
3.3.2
Grafische Hilfe
Die grafische Hilfe wird von den grafischen Oberflächen, wie zum Beispiel KDE und GNOME, angeboten. In diese grafischen Oberflächen ist dann häufig noch eine distributionsspezifische Hilfe integriert, in die KDE unter SUSE zum Beispiel die SUSE-Hilfe. Unter Debian GNU/Linux finden Sie als grafische Hilfe nur die der jeweils installierten und verwendeten grafischen Oberfläche, also zum Beispiel die Hilfe von GNOME oder KDE. Sie können im Feld ADRESSE des KDE Konquerors auch einfach man:befehlsname oder info:befehlsname eingeben, um Hilfe zu Linux-Befehlen zu bekommen, zum Beispiel man:ls oder info:pwd.
SUSE-Linux-Hilfe SUSE Linux bietet eine sehr umfangreiche deutschsprachige Hilfe im Hauptmenü mit der Option SUSE-HILFE an. Die Hilfe kann auch über ein entsprechendes Symbol in der Programmleiste gestartet werden. Die Hilfe untergliedert sich in die Hauptbereiche:
100
쮿
Release-Notes
쮿
SUSE Linux-Administrationshandbuch (Installation, System, Dienste etc.)
쮿
SUSE Linux-Benutzerhandbuch (Desktopumgebung, Büroprogramme etc.)
쮿
Anwendungshandbücher (KDE-Einführung, Erklärung Hilfsprogramme etc.)
쮿
Administration (Man Pages, Hardwareerläuterungen etc.)
쮿
Entwicklung
쮿
Online-Ressourcen
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Bild 3.1: Die SUSE-Online-Hilfe
Das Benutzerhandbuch erläutert die KDE-Desktopumgebung, Büroprogramme und vieles mehr:
Bild 3.2: SUSE-Linux-Benutzerhandbuch
101
Hilfe unter Linux
magnum
Die Anwendungshandbücher enthalten eine KDE-Einführung und Erläuterungen zu vielen Hilfsprogrammen, wie zum Beispiel zum Suchen von Dateien usw.:
Bild 3.3: Die Anwendungshandbücher der SUSE-Hilfe
Der Administrationsteil enthält die Linux-Dokumentation, das heißt die Info- und die Man Pages, Hardwareerläuterungen usw.:
Bild 3.4: Das Administrationshandbuch mit den Man Pages
102
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Fedora-Core-Linux-Hilfe Die grafische Hilfe von Fedora Core Linux ist unter KDE entsprechend der Hilfe zu SUSE Linux aufgebaut. Sie bietet auch eine sehr umfangreiche deutschsprachige Hilfe zu KDE im Hauptmenü mit der Option HILFE an.
Bild 3.5: KDE-Hilfe von Fedora Core Linux
Die Hilfe zu Unix-Befehlen u. Ä. ist nur in englischer Sprache vorhanden:
Bild 3.6: Grafische Hilfe zu Unix-Befehlen
103
magnum
Hilfe unter Linux
Debian-Linux-Hilfe Die grafische Hilfe von Debian GNU/Linux ist unter KDE ebenfalls entsprechend der Hilfe zu SUSE Linux aufgebaut. Auch sie bietet eine sehr umfangreiche deutschsprachige Hilfe zu KDE im Hauptmenü mit der Option HILFE an.
Bild 3.7: Grafische Hilfe unter Debian GNU/Linux 3.1
3.3.3
Internet, Mailinglisten und Webforen
Wenn Sie mit diesen Hilfsmitteln nicht weiterkommen, gibt es auch die Möglichkeit, online Hilfe zu suchen. Nutzen Sie zunächst die online verfügbaren Dokumentationen oder verwenden Sie Suchmaschinen, wie zum Beispiel Google, um eine Antwort zu finden. Schließlich können Sie sich noch an Gleichgesinnte in Foren und Mailinglisten wenden. Auf folgenden Websites finden Sie Online-Dokumentationen. Diese Liste erhebt keinen Anspruch auf Vollständigkeit: Quelle
Inhalt
http://www.tldp.org/
Das Linux-Dokumentationsprojekt
http://portal.suse.de/sdb/de/ index.html
SUSE-Linux-Supportdatenbank
http://fedora.redhat.com/docs/
Fedora-Linux-Dokumentation
http://www.debian.org/doc/
Debian-Dokumentation
Tab. 3.5: Online-Dokumentationen zu Linux
104
Kapitel 3 · Die Befehlszeile und Hilfe verwenden
Quelle
Inhalt
http://www.linux.de/
Informationen über Linux, über den Bereich User Groups erhalten Sie Zugang zu vielen Linux-Mailinglisten in Deutschland
http://wiki.debian.net/
Von Benutzern zusammengestellte Informationen zu Debian
http://www.pro-linux.de/
Artikel, Berichte, Tipps zu Linux
http://www.selflinux.org/
Umfangreiches Tutorial zu Linux
http://www.debiananwenderhandbuch.de Anwenderhandbuch zu Debian von Frank Ronneberg http://www.linuxhaven.de/dlhp
Deutsches Linux-HOWTO-Projekt
http://www.linuxfibel.de/
Verschiedene Dokumentationen zu Linux
http://www.linux-ag.de/linux/LHB/
Leitfaden für die Linux-Systemverwaltung
Tab. 3.5: Online-Dokumentationen zu Linux (Forts.)
Mailinglisten finden Sie unter folgenden Links: Distributionsunabhängige Listen in ganz Deutschland: http://www.linux.de - User Groups
SUSE-Linux-Mailinglisten: http://www.suse.de/de/private/support/online_help/mailinglists
Debian-Linux-Mailinglisten: http://www.debian.org/MailingLists/subscribe
Red-Hat-Linux-Mailinglisten: http://www.redhat.com/mailman/listinfo
Fedora-Linux-Mailingliste: http://www.redhat.com/mailman/listinfo/fedora-list
Beachten Sie bitte die Regeln, die zu den jeweiligen Mailinglisten gelten. Allgemein gilt, dass Sie das Problem genau schildern und auch alle Schritte, die Sie schon zur Problemlösung unternommen haben. Wahren Sie einen höflichen Umgangston und denken Sie immer daran, dass die Mitglieder der Listen Ihnen freiwillig die eigene Zeit opfern.
105
4 Mit Dateien und Verzeichnissen arbeiten »Die Basis einer gesunden Ordnung ist ein großer Papierkorb.« – Kurt Tucholsky Linux besitzt sehr mächtige Befehle und Tools, um mit Dateien und Verzeichnissen zu arbeiten. Häufig können diese Befehle miteinander kombiniert werden, um das gewünschte Ergebnis zu optimieren. So kann zum Beispiel der Suchbefehl find mit dem Löschbefehl rm gekoppelt werden, um alle dem Suchmuster entsprechenden Dateien auf einmal zu entfernen. In diesem Kapitel finden Sie zunächst alle Befehle, die zur Datei- und Verzeichnismanipulation verwendet werden können, und anschließend werden für die häufigsten Befehle dieselben Möglichkeiten mit Hilfe der grafischen Oberfläche KDE aufgezeigt.
4.1 Dateien und Verzeichnisse bearbeiten In diesem Abschnitt lernen Sie Befehle kennen, um Dateien und Verzeichnisse zu erstellen, zu kopieren, umzubenennen, zu löschen und deren Inhalte anzuzeigen. Anschließend werden einige Befehle erläutert, um mehrere Dateien miteinander zu vergleichen und um die Dateiausgabe zu formatieren.
4.1.1
Verzeichnisse erstellen
Der Befehl mkdir Mit diesem Befehl erzeugen Sie neue Verzeichnisse: $ mkdir [-option(en)] verzeichnis(se)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-p oder --parents
Rekursives Anlegen von Verzeichnissen
-m rechte oder --mode=rechte
Angabe der Zugriffsrechte für das anzulegende Verzeichnis
-v
Ausgabe von jedem angelegten Verzeichnis
Tab. 4.1: Optionen des Befehls mkdir
Der folgende Befehl erzeugt das Verzeichnis projekt05 unterhalb des Verzeichnisses /. $ mkdir /projekt05
Ein neu angelegtes Verzeichnis hat immer automatisch zwei Unterverzeichnisse: die Verzeichnisse . (das für das aktuelle Verzeichnis steht) und .. (das für das übergeordnete Verzeichnis steht). Die Option –p legt im folgenden Beispiel sowohl das Unterverzeichnis protokolle als auch das Verzeichnis berichte an:
107
Dateien und Verzeichnisse bearbeiten
magnum
$ mkdir –p /projekt05/protokolle/berichte
Mit Hilfe der Option –m können Sie dem neu angelegten Verzeichnis die gewünschten Zugriffsrechte zuweisen. $ mkdir –m 755 /projekt05-neu
Mit diesem Befehl erhält der Besitzer das Schreib-, Lese- und Ausführrecht und die Gruppe und die Anderen das Lese- und Ausführrecht. Zugriffsrechte steuern, wer welche Befehle mit einer Datei oder einem Verzeichnis durchführen darf. Sie werden in Kapitel 8 ausführlich behandelt.
4.1.2
Dateien erstellen und aktualisieren
Dateien können unter Linux mit einem Editor oder Programm angelegt werden (vergleiche Abschnitt 4.1.12).
Der Befehl touch Alternativ ist es möglich, leere Dateien mit dem Befehl touch zu erzeugen oder das letzte Änderungs- oder Zugriffsdatum von bestehenden Dateien zu ändern. $ touch [-option(en)] [datum] datei(en)
Eine neue Datei wird mit folgendem Befehl angelegt: $ touch datei1
Die Datei dat1 darf vorher nicht existiert haben, sonst würde nur ihr letztes Änderungsdatum aktualisiert. Unter Linux werden sowohl das Erstellungs- oder das letzte Änderungsdatum als auch das Zugriffsdatum mitprotokolliert. Das Erstellungs- bzw. letzte Änderungsdatum erhalten Sie mit dem Befehl ls -l angezeigt, während der Befehl ls -lu das letzte Zugriffsdatum ausgibt. Das Zugriffsdatum wird geändert, wenn auf eine Datei oder ein Verzeichnis zugegriffen wurde, ohne dass eine Änderung erfolgte. Das ist zum Beispiel der Fall, wenn eine Datei mit dem Befehl more angezeigt wird. Der Befehl kennt folgende Optionen: Option
Bedeutung
-a oder --time=atime oder --time=access oder
Änderung des Datums des letzten Zugriffs
--time=use -c oder --no-create
Änderung nur bei bereits vorhandenen Dateien; es werden keine neuen Dateien erzeugt
-d zeit oder --date zeit
Änderung des Datums der letzten Änderung. zeit kann in verschiedenen Formaten verwendet werden und Monatsnamen, am- und pmFormate und weitere Angaben enthalten.
Tab. 4.2: Optionen des Befehls touch
108
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Option
Bedeutung
-m oder --time=mtime oder --time=modify
Änderung des Datums der letzten Änderung
-r datei oder --reference datei
Änderung des Datums mit Hilfe einer Referenzdatei. Das Datum der Referenzdatei wird übertragen.
-t zeit [--time=modify oder --time=mtime
Angabe des Änderungs- bzw. des Zugriffszeitpunkts (Schlüsselwort atime, access oder use) im Format [[CC]YY]MMDDhhmm[.SS]
oder --time=atime oder --time=access oder --time=use]
– – – – – – –
C = Jahrhundert Y = Jahr M = Monat D = Tag h = Stunde m = Minute S = Sekunde
Tab. 4.2: Optionen des Befehls touch (Forts.)
Das nachfolgende Beispiel zeigt, wie das Änderungsdatum einer Datei manipuliert wird: $ touch –t 03030101 dat1 $ ls –l dat1 -rw-r--r-- 1 root other 65 Mar 3 01:01
dat1
Der Befehl touch leert keine Dateien, die bereits angelegt sind. Dies können Sie mit dem Befehl cat (vergleiche Abschnitt 4.1.5) und der Ein- und Ausgabeumlenkung (vergleiche Kapitel 9) durchführen: cat < /dev/null > datei.
4.1.3
Verzeichnisse wechseln
Der Befehl cd Mit diesem Befehl können Sie in ein anderes Verzeichnis wechseln: $ cd [verzeichnis]
Im nachfolgenden Beispiel wird in das Verzeichnis /etc gewechselt: $ cd /etc
Wenn Sie den Befehl ohne Argument verwenden, wechseln Sie in Ihr Homeverzeichnis. Wenn Sie als root angemeldet sind, wechseln Sie in das Verzeichnis /root. Mit dem Befehl $ cd ..
wechseln Sie in das darüber liegende Verzeichnis. Sie können als Argument des Befehls entweder einen relativen oder einen absoluten Pfadnamen verwenden. Der relative Pfadname geht von dem Verzeichnis aus, in dem Sie sich im Moment befinden. Im nachfolgenden Beispiel wechseln Sie mit einer relativen Pfadangabe vom Verzeichnis /home/her/berichte in das Verzeichnis /home/her/grafik: $ cd ../bilder
109
Dateien und Verzeichnisse bearbeiten
magnum
Alternativ können Sie auch mit der absoluten Pfadangabe in das Verzeichnis wechseln, wobei der absolute Pfad in diesem Beispiel mehr Schreibaufwand erfordert: $ cd /home/her/bilder
Der absolute Pfad beginnt immer ab dem Wurzelverzeichnis / und ist völlig unabhängig von der aktuellen Position im Verzeichnisbaum. Der Befehl kennt folgende Optionen: Option
Bedeutung
-L
Erzwingt, dass symbolischen Links gefolgt wird
-P
Die physikalische Verzeichnisstruktur wird verwendet, anstatt symbolischen Links zu folgen.
Tab. 4.3: Optionen des Befehls cd
4.1.4
Verzeichnisse anzeigen
Der Befehl pwd Dieser Befehl gibt den Namen des Verzeichnisses aus, in dem sich der Benutzer im Moment befindet: $ pwd /usr/bin
Der Befehl ls Dieser Befehl listet den Inhalt von Verzeichnissen auf: $ ls [-option(en)] datei(en) | verzeichnis(se)
Wenn Sie kein Argument verwenden, wird der Inhalt des aktuellen Verzeichnisses angezeigt: $ ls –l total 8 -rw-r----drwxr-xr-x
1 root other 146 Jul 8 11:28 bericht 2 root other 512 Jul 8 11:28 seminar
Die Option –l bewirkt ein ausführliches Auflisten des Verzeichnisinhalts mit folgenden Informationen:
쮿
Das erste Zeichen der ersten Spalte gibt den Dateityp aus: d l b c p s
110
bedeutet, dass es sich um eine normale Datei handelt: entweder eine ASCII-Text-Datei oder eine Applikationsdatei oder eine binäre Datei. bedeutet, dass es sich um ein Verzeichnis handelt. bedeutet, dass es sich um einen symbolischen Link handelt (vergleiche Abschnitt 4.3.2). bedeutet, dass es sich um eine blockorientierte Gerätedatei handelt. bedeutet, dass es sich um eine zeichenorientierte Gerätedatei handelt. bedeutet, dass es sich um eine spezielle Named Pipe-Datei (FIFO) für die Interprozesskommunikation handelt. bedeutet, dass es sich um eine Socket-Datei für die Interprozesskommunikation handelt.
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Block- und zeichenorientierte Gerätedateien werden in Kapitel 13 ausführlich beschrieben.
쮿
Der restliche Teil der ersten Spalte enthält die Zugriffsberechtigungen. Diese werden in Kapitel 8 ausführlich behandelt.
쮿
Die dritte Spalte enthält den so genannten Link Counter. Dieser gibt bei Dateien die Anzahl der Hard Links (vergleiche Abschnitt 4.3.1) und bei Verzeichnissen die Anzahl der Unterverzeichnisse zurück.
쮿
Die vierte Spalte enthält den Besitzer der Datei.
쮿
Die fünfte Spalte gibt die Gruppe an, die Rechte an der Datei hat.
쮿
Die sechste Spalte enthält die Dateigröße in Bytes: Eine Datei belegt immer mindestens zwei Blöcke zu 512 Byte auf der Festplatte, auch wenn ihre tatsächlich angezeigte Größe kleiner ist, wie zum Beispiel bei der Datei obst. Die erste Ausgabe total 8 des Befehls ls –l zeigt die Anzahl der durch den Verzeichnisinhalt belegten Festplattenblöcke (zu 512 Byte) an (vergleiche Kapitel 13).
Gerätedateien zeigen anstelle einer Größe in Bytes zwei Zahlen an: die Major und Minor Device Number (vergleiche Kapitel 13).
쮿
Die nächsten Spalten zeigen das Datum und die Uhrzeit der Erstellung bzw. der letzten Änderung der Datei oder des Verzeichnisses an. Wenn die Datei älter als ein halbes Jahr ist, wird anstelle der Uhrzeit die Jahreszahl ausgegeben.
쮿
Die letzte Spalte enthält den Namen der Datei oder des Verzeichnisses.
Unter Linux wird alles als Datei betrachtet. Verzeichnisse, Gerätedateien, symbolische Links sind nur Sonderformen von Dateien. Selbst Prozesse werden im Verzeichnis /proc als Verzeichnisse oder Dateien dargestellt und teilweise auch dort verwaltet (vergleiche Kapitel 15). Weitere wichtige Optionen des Befehls ls sind: Option
Bedeutung
-1 oder --format= single-column
Formatierte Ausgabe: Jede Dateiname wird in einer eigenen Zeile angezeigt.
-a oder --all
Auch versteckte (mit einem Punkt beginnende) Dateien anzeigen
-A oder --almost-all
Auch versteckte Dateien anzeigen, mit Ausnahme der Verzeichnisse . und ..
--author
Den Autor der Datei ausgeben
-B oder --ignore-backups
Dateien, die mit dem Zeichen ~ enden, gelten als Backupdateien und werden nicht ausgegeben.
Tab. 4.4: Optionen des Befehls ls
111
Dateien und Verzeichnisse bearbeiten
Option
Bedeutung
-b oder --escape
Nicht druckbare Zeichen als Oktalzahl anzeigen. Verwendbar zum Beispiel bei Dateinamen, die mit Umlauten von Rechnern mit einem anderen Zeichensatz erzeugt wurden
--block-size=groesse
Blöcke einer bestimmten Größe anzeigen
-C oder --format=vertical
Mehrspaltige Ausgabe
-c oder --sort=status oder --time=status
Letzte Veränderung der Statusinformationen sortiert anzeigen (gemeinsam mit Option -lt). Statt des Schlüsselworts status kann auch das Schlüsselwort ctime verwendet werden.
--color=[wann]
Farbe zum Unterscheiden der Dateitypen zum Zeitpunkt wann verwenden; wann kann never (nie), always (immer) und auto (automatisch) sein.
-D oder --dired
Formatierte Ausgabe für den Modus dired des Editors emacs
-d oder --directory
Ausgabe des Inhalts von Unterverzeichnissen unterdrücken und symbolischen Links nicht folgen
-F oder --classify oder --indicator-style= classify
Kennung für den Dateityp hinter dem Dateinamen ausgeben: / steht für Verzeichnis, * für ausführbare Dateien, @ für symbolische Links, | für Pipe-Dateien und = für Socket-Dateien
-f
Ausgabe erfolgt nicht sortiert nach Dateinamen, sondern nach der physikalischen Position im Verzeichnis
--full-time
Vollständige Ausgabe der Zeiten anstatt der standardmäßigen Abkürzungen
-G oder --no-group
Keine Ausgabe des Gruppennamens
-H oder --dereference-command-line
In der Befehlszeile angegebene symbolische Links werden verfolgt.
--dereference-command-linesymlink-to-dir
In der Befehlszeile angegebene und auf Verzeichnis weisende symbolische Links werden verfolgt.
-h oder--human-readable
Datei- und Verzeichnisgrößen werden in lesbarem Format ausgegeben, zum Beispiel 2K, 3M oder 1G.
--si
Entspricht der Ausgabe von -h, verwendet aber den Teiler 1000 statt 1024
-I oder --ignore=muster
Keine Anzeige von Einträgen, die mit dem Muster muster übereinstimmen
-i oder --inode
Inode-Nummer anzeigen
-L oder --dereference
Anzeige der Eigenschaften der Originaldatei bei symbolischen Links
-l oder --format=long
Ausführliches Listing
-m oder --format=comma
Ausgabe von möglichst vielen Dateinamen in einer Zeile, durch Kommata getrennt
Tab. 4.4: Optionen des Befehls ls (Forts.)
112
magnum
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Option
Bedeutung
-n oder --numeric-uid-gid
Dieselbe Ausgabe wie -l, aber statt Benutzer- und Gruppennamen werden die numerischen UIDs und GIDs angezeigt
-N oder --literal
Anzeige von »rohen« Dateinamen, das heißt, Kontrollzeichen werden nicht besonders behandelt
-o
Dieselbe Ausgabe wie -l, aber keine Anzeige der Gruppe
-p oder --file-type oder --indicator-style=file-type
Kennung für den Dateityp hinter dem Dateinamen ausgeben: / steht für Verzeichnis, @ für symbolische Links, | für PipeDateien und = für Socket-Dateien
-q oder --hide-control-chars
Nicht darstellbare Zeichen werden durch ein Fragezeichen ? abgebildet.
--show-control-chars
Nicht darstellbare Zeichen werden angezeigt, wie sie sind (standardmäßige Vorgabe, wenn das Programm nicht ls ist und die Ausgabe auf ein Terminal erfolgt).
-Q oder --quote-name
Dateinamen werden in doppelte Hochkommata eingefasst und nicht darstellbare Zeichen werden als Oktalzahl dargestellt.
--quoting-style=wort
Es werden die durch wort spezifizierten Anführungszeichen verwendet, zum Beispiel literal, locale, shell, shell-always, c, escape usw.
-R
Den Inhalt von Unterverzeichnissen rekursiv anzeigen
-r oder --reverse
Anzeige mit umgekehrter Sortierreihenfolge
-S oder --sort=size
Ausgabe nach Dateigröße sortiert
-s oder --size
Die Größe der Dateien wird in Blöcken zu 512 Byte ausgegeben. Die Variable POSIXLY_CORRECT muss dann ebenfalls gesetzt sein.
-T oder --tabsize=spalten
Definiert alle Tabstopps auf die Zeichenanzahl von spalten anstelle des Vorgabewerts 8
--time-style=stil
Die Änderungs- bzw. Zugriffszeiten der aufgelisteten Dateien werden im angegebenen Stil stil angezeigt, zum Beispiel: full-iso, iso, locale, posix-iso, +FORMAT.
-t oder --sort=time
Sortierreihenfolge verändern: nicht alphabetisch sortieren, sondern nach Änderungsdatum
-U oder --sort=none
Die Sortierung wird wie bei der Option -f unterdrückt, die Ausgabe erfolgt aber im erweiterten Format.
-u oder --time=access oder --sort=access
Datum des letzten Zugriffs auf die Datei anzeigen, anstelle des Änderungsdatums (gemeinsam mit Option l). Anstelle des Schlüsselworts access kann auch das Schlüsselwort atime oder use verwendet werden.
-v oder --sort=version
Sortierung nach Version
-w oder --width=spalten
Verwendung der durch spalten spezifizierten Bildschirmbreite
Tab. 4.4: Optionen des Befehls ls (Forts.)
113
Dateien und Verzeichnisse bearbeiten
magnum
Option
Bedeutung
-X oder --sort=extension
Sortierung alphabetisch nach Dateinamenserweiterung
-x oder --format=across oder --format=horizontal
Dateinamen werden in Zeilen statt in Spalten angezeigt
Tab. 4.4: Optionen des Befehls ls (Forts.)
Ein Inode ist eine Datenstruktur, die sämtliche Informationen zu einer Datei oder einem Verzeichnis enthält.
Die von Ihnen am häufigsten verwendeten Optionen können Sie zu einem Alias zusammenfassen, um anschließend nur noch den kurzen Aliasbefehl eingeben zu müssen (vergleiche Kapitel 9), zum Beispiel: alias dir=’ls –la | more’.
Der Befehl lsattr Dieser Befehl gibt die erweiterten Attribute von Dateien auf einem Linux-Dateisystem ext2fs aus. Die Syntax des Befehls lautet: $ lsattr [-option] datei(en)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-a
Listet alle Dateien in Verzeichnissen auf, einschließlich der mit einem Punkt beginnenden Dateien
-d
Listet Verzeichnisse wie normale Dateien auf, anstelle deren Inhalt auszugeben
-R
Listet Attribute von Verzeichnissen und deren Inhalte rekursiv auf
-v
Listet die Versions-/Generationsnummer von Dateien auf
Tab. 4.5: Optionen des Befehls lsattr
Im Beispiel wird der Inhalt des aktuellen Verzeichnisses mit der Generationsnummer der darin enthaltenen Dateien aufgelistet: $ lsattr -v
Die erweiterten Attribute wurden mit ext2fs eingeführt, um mehr Merkmale über Dateien speichern zu können, in Standardsystemen werden sie aber nicht benutzt.
114
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
4.1.5
Dateien anzeigen
Der Befehl cat Mit diesem Befehl können Sie sich den Inhalt von kleinen Dateien anzeigen lassen. Zur Anzeige von großen Dateien ist er nicht geeignet, da der Befehl die Datei auf einmal bis zum Ende ausgibt: $ cat [-option(en)] datei(en)
Zum Beispiel: $ cat prot10
Zusätzlich wird der Befehl verwendet, um während einer Batchverarbeitung durch ein Skript Dateien auszugeben, zum Beispiel auf eine Pipeline, und die Ausgabe weiter zu bearbeiten, zum Beispiel um Daten zu extrahieren oder umzusortieren. Der Befehl kennt folgende Optionen: Option
Bedeutung
-A oder --show-all
Anzeige aller Steuerzeichen und Ausgabe eines Dollarzeichens ($) am Ende jeder Zeile und von Tabulatoren als ^I (entspricht -vET)
-b oder --number-nonblank
Ausgabe der Zeilennummer am Anfang jeder nicht leeren Zeile
-e
Anzeige aller Steuerzeichen außer LF (Zeilenschaltung) und Tabulatoren und Ausgabe eines Dollarzeichens ($) am Ende jeder Zeile (entspricht -vE)
-E oder --show-ends
Ausgabe eines Dollarzeichens ($) am Ende jeder Zeile
-n oder --number
Ausgabe der Zeilennummer am Anfang jeder Zeile
-s oder --squeeze-blank Ausgabe zusätzlicher Leerzeilen wird unterdrückt -t
Anzeige aller Steuerzeichen außer LF (Zeilenschaltung) und Tabulatoren und Anzeige von Tabulatoren als ^I (entspricht -vT)
-T oder --show-tabs
Anzeige von Tabulatoren als ^I
-u
Wird ignoriert und ist nur aus Gründen der Abwärtskompatibilität mit Unix vorhanden
-v oder --show-nonprinting
Anzeige aller Steuerzeichen außer LF (Zeilenschaltung) und Tabulatoren
Tab. 4.6: Optionen des Befehls cat
Eine weitere wichtige Einsatzmöglichkeit des Befehls ist das Aneinanderketten von Dateien: $ cat prot1 prot2 prot3 > protgesamt
Hier werden die Dateien prot1, prot2 und prot3 auf die Datei protgesamt kopiert. $ cat protneu >> protgesamt
Hier wird die Datei protneu an die Datei protgesamt angehängt. $ cat > datneu
115
Dateien und Verzeichnisse bearbeiten
magnum
In diesem Beispiel wird eine neue Datei datneu aus der Standardeingabe erzeugt. Die Eingabe muss mit der Tastenkombination (Strg)+(D) beendet werden. Enthält eine Datei ein Zeichen (Ctrl)+(D) (Sonderzeichen für »End of file«), dann beendet cat bei diesem Zeichen die Dateiausgabe. Der Befehl cat ist deshalb nicht zum Ausgeben binärer Dateien geeignet.
Der Befehl more Dieser Befehl listet den Inhalt von Dateien bildschirmweise auf: $ more [-option(en)] datei(en)
Zum Beispiel: $ more prot1000 Protokoll der Besprechung vom 4.7.2003 Anwesende: ..... ---More---(15%)
Sie haben die Möglichkeit, den Befehl mit Hilfe von internen Befehlen, die auf viBefehlen basieren, zu steuern. Die Tabelle führt die wichtigsten internen Befehle auf: Eingabe
Funktion
(Leertaste)
Eine Bildschirmseite weiterblättern
(b) oder (Strg)+(b)
Eine Bildschirmseite zurückblättern
(¢)
Eine Zeile weiterblättern
(?) oder (h)
Hilfe anzeigen
(Q) oder (q) oder (Abbruch)
Den Befehl beenden
seitenzahl
Anzahl von Seiten (seitenzahl) weiterblättern
/suchbegriff
Nach Suchbegriff suchen und die dazugehörige Seite anzeigen
(f)
Eine Bildschirmseite überspringen
(s)
Eine Textzeile überspringen
(=)
Ausgabe der aktuellen Zeilennummer
(N)
Letzte Suche wiederholen
(.)
Letzten Befehl wiederholen
(V)
Aufruf des Editors vi in der Datei an der aktuellen Zeile
Tab. 4.7: Interne Befehle des Befehls more
116
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Der Befehl kennt folgende Optionen: Option
Bedeutung
-num zahl
Stellt die Bildschirmgröße auf zahl Zeilen ein
-d oder Die Hinweise »Press space to continue, 'q' to quit« und »Press 'h' for --number-nonblank instructions« werden angezeigt und kein Warnton ertönt, wenn auf eine
falsche Taste gedrückt wird. -l
Normalerweise wird (Strg)+(L) (Seitenvorschub) als Spezialzeichen behandelt und es wird hinter jeder Zeile angehalten, die einen Seitenvorschub enthält. Diese Option verhindert dieses Verhalten.
-f
Zählen der Textzeilen anstelle der Bildschirmzeilen, das heißt, lange Zeilen werden nicht umbrochen
-p
Es wird nicht gescrollt, stattdessen wird der Bildschirm mit jeder Seite neu aufgebaut.
-c
Es wird nicht gescrollt, stattdessen wird die Anzeige von oben her erneuert und jede vorhandene Zeile überschrieben.
-s
Zeigt mehrere Leerzeilen als eine einzige an
-u
Unterdrückt das Unterstreichen von Zeichen
+/muster
Definiert eine Zeichenkette, die gesucht wird, bevor eine Datei angezeigt wird
+zahl
Anzeige wird ab der Zeile mit der Nummer zahl begonnen
Tab. 4.8: Optionen des Befehls more
Der Befehl less Dieser Befehl listet den Inhalt von Dateien ebenfalls bildschirmweise auf. Er kennt aber mehr Funktionen als der Befehl more: $ less [-option(en)] datei(en)
Zum Beispiel: $ less prot10 Protokoll der Besprechung vom 4.7.2003 Anwesende: ..... less prot10 1-32/128 (15%)
Sie haben die Möglichkeit, auch diesen Befehl mit Hilfe von internen Befehlen zu steuern. Viele der Befehle lassen sich auch mit Zahlen kombinieren, die dann für eine Zeilennummer, eine Datei usw. stehen. Die Tabelle führt die wichtigsten internen Befehle auf:
117
Dateien und Verzeichnisse bearbeiten
Eingabe
Funktion
(H) oder (h)
Hilfe anzeigen
(Q) oder (q) oder (Abbruch)
Den Befehl beenden
magnum
Befehle zum Navigieren (Leertaste) oder (Strg)+(V) oder (f) oder (Strg)+(F)
Um die spezifizierte Zeilenzahl weiterblättern, standardmäßig um eine Bildschirmseite
(b) oder (Strg)+(V) oder (ESC)+(v)
Eine Bildschirmseite oder spezifizierte Anzahl von Zeilen zurückblättern
(w)
Ein Fenster zurückblättern und zahl auf die Zeilenzahl des Fensters zurücksetzen
(ESC)+(Leertaste)
Ein Fenster weiterblättern, aber am Ende der Datei nicht anhalten
(d) oder (Strg)+(D)
Eine halbe Bildschirmseite weiterblättern und zahl auf die Zeilenzahl der halben Fensterhöhe zurücksetzen
(u) oder (Strg)+ (U)
Eine halbe Bildschirmseite zurückblättern und zahl auf die Zeilenzahl der halben Fensterhöhe zurücksetzen
zahl (z)
Wie bei der Leertaste, blättert aber um die gewünschte Zeilenzahl zahl weiter, die dann auch für die (Leertaste)-Taste gilt
(¢) oder (Strg)+ (E) oder (e) oder (j) oder (Strg)+ (N)
Eine Zeile oder spezifizierte Anzahl von Zeilen weiterblättern
(y) oder (Strg)+(Y) oder (k) oder (Strg)+(K) oder (Strg)+(P)
Eine Zeile oder spezifizierte Anzahl von Zeilen zurückblättern
(ESC)+(Æ)
Eine halbe Bildschirmbreite oder zahl Spalten nach links
(ESC)+(æ)
Eine halbe Bildschirmbreite oder zahl Spalten nach rechts
(F)
Unaufhörlich vorwärts blättern, zum Beispiel zum Anzeigen von Protokolldateien, die ständig um Einträge ergänzt werden; entspricht dem Befehl tail -f
(r) oder (Strg)+(R) oder (Strg)+(L)
Bildschirm neu aufbauen
(R)
Bildschirm neu aufbauen und gepufferte Eingabe löschen
Befehle zum Suchen (/)suchbegriff
Vorwärts nach Suchbegriff suchen
(?)suchbegriff
Rückwärts nach Suchbegriff suchen
(n)
Vorwärtssuche wiederholen
Tab. 4.9: Interne Befehle des Befehls less
118
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Eingabe
Funktion
(N)
Rückwärtssuche wiederholen
(ESC)+(n)
Vorwärtssuche über alle Dateien wiederholen
(ESC)+(N)
Rückwärtssuche über alle Dateien wiederholen
(ESC)+(u)
Markierung für gefundene Suchmuster aktivieren und deaktivieren Das Modifizieren von Suchmustern ist möglich durch: (ESC)+(N) oder (!) (Strg)+(E) oder (*) (Strg)+(F) oder (@) (Strg)+(K) (Strg)+(R)
nach nicht übereinstimmenden Zeilen suchen mehrere Dateien durchsuchen die Suche bei Verwendung von / bei der ersten und bei Verwendung von ? bei der letzten Datei beginnen Übereinstimmungen markieren, aber Position beibehalten keine regulären Ausdrücke verwenden
Befehle zum Springen zahl(g) oder (ESC)+( neudatei]
170
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Der Befehl sed wird häufig auch gemeinsam mit dem Pipe-Symbol verwendet, um die Ausgabe von Befehlen zu verändern, zum Beispiel: $ ls -l | sed (...)
Mit Hilfe von Optionen wird das Verhalten von folgende Optionen:
sed
gesteuert. Der Befehl kennt
Option
Beschreibung
-e skript oder --expression= skript
Ermöglicht, dass dieselbe Befehlszeile mehrfach mit verschiedenen Befehlen editiert wird
-f skript oder --file=skript Fügt die Inhalte der Skriptdatei den auszuführenden Befehlen hinzu -i[suffix] oder --in-place=[suffix]
Editiert Dateien direkt und erstellt eine Backupdatei, wenn ein Suffix angegeben wurde
-l zahl oder --line-length=zahl
Definiert die gewünschte Länge des Zeilenumbruchs
-n oder --quiet oder --silent
Unterdrückt die standardmäßige Ausgabe und gibt nur die Zeilen aus, die mit dem Befehl p angegeben wurden
-r oder --regexp-extended
Verwendet erweiterte reguläre Ausdrücke im Skript
-s oder --separate
Betrachtet Dateien einzeln anstatt als einen einzigen langen Datenstrom
-u oder --unbuffered
Lädt minimale Datenmengen aus den Eingabedateien und leert die Ausgabepuffer häufiger
Tab. 4.59: Die Optionen des Befehls sed
Ähnlich wie der Befehl grep verwendet der Streameditor um die Suche nach Mustern zu unterstützen. Zeichen Beschreibung
Beispiel
Resultat
sed
reguläre Ausdrücke,
^
Markiert den Zeilenanfang
’^mein’
Sucht alle Zeilen, die mit «mein» beginnen
$
Markiert das Zeilenende
’mein$’
Findet alle Zeilen, die mit »mein« enden
.
Steht für genau ein beliebiges Zeichen
’m..n’
Findet alle Zeilen, die ein »m«, dann zwei beliebige Zeichen enthalten und mit »n« enden
*
Das vorherige Zeichen darf beliebig oft oder gar nicht vorkommen.
’m[a-z]*’
Findet alle Zeilen, die das Zeichen m, gefolgt von (k)einem oder mehreren Kleinbuchstaben, enthalten, zum Beispiel m, mr, moor, mein usw.
[ ]
Eines der Zeichen aus dem Bereich muss an dieser Stelle vorkommen.
’[Mm]ein’
Findet alle Zeilen, die »Mein« oder »mein« enthalten
[^]
Keines der Zeichen aus dem ’[^a-l]ein’ Findet alle Zeilen, die nicht die ZeichenBereich (oder der Liste) darf folge »a« bis »l« und dann »ein« enthalan dieser Stelle vorkommen. ten
Tab. 4.60: Die Optionen des Befehls sed
171
magnum
Editoren und Werkzeuge
Befehlsübersicht für sed Die folgende Tabelle enthält alle Befehle, die für die Arbeit mit sed verwendet werden können: Befehl
Beschreibung
d
Löschen einer Zeile
p
Ausgeben einer Zeile. Ohne die Option n wird die Zeile doppelt angezeigt.
a\
Anhängen eines Textes nach der angegebenen Zeile und Ausgabe auf die Standardausgabe
text text
Einfügen eines Textes vor der angegebenen Zeile und Ausgabe auf die Standardausgabe
c\
Ändern der angegebenen Zeilen, indem diese durch den Text ersetzt werden
i\
text s/alt/neu/befehl
Ersetzen des Suchmusters alt durch neu. Mögliche Befehle sind: (Leertaste) nur erstes Auftreten des Suchmusters in einer Zeile ersetzen g jedes Auftreten des Suchmusters in der Zeile ersetzen
zahl
p w datei
angegebenes Auftreten des Suchmusters ersetzen Ausgabe der Zeile, wenn eine Ersetzung stattfindet Zeile in die angegebene Datei schreiben
Tab. 4.61: Die Befehle von sed
Zeilen löschen Der Befehl sed kann nach einem Muster innerhalb einer Datei suchen und alle Zeilen entfernen, die dieses Suchmuster enthalten. Anschließend werden die Ergebnisse am Bildschirm ausgegeben, wobei die Datei selbst unverändert bleibt. Die Syntax zum Löschen von Zeilen lautet: $ sed '/muster/d' datei
Im ersten Beispiel werden alle Zeilen aus der Datei Suchmuster root enthalten:
/etc/group
gelöscht, die das
$ sed ’/root/d’ /etc/group bin:x:1:bin,daemon daemon:x:2: sys:x:3: tty:x:5: disk:x:6: ...
Im nächsten Beispiel werden alle Zeilen der Ausgabe des Befehls das Suchmuster 3 enthalten:
ls
gelöscht, die
$ ls -l | sed ’/3/d’ insgesamt 10904 -rw-r--r-- 1 her users 26082 2004-04-12 18:51 aus -rw-r--r-- 1 her users 2 2000-07-14 14:19 bericht.txt -rw-r--r-- 1 her users 2551 2004-04-10 21:42 bun.jar -rw-r--r-- 1 her einkauf 0 2004-05-08 17:49 datei-neu
Der Befehl sed kann auch nur bestimmte Zeilen innerhalb einer Datei durchsuchen und alle diese Zeilen entfernen:
172
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Adresse
Beschreibung
sed 'x,yd' datei
Entfernt Zeile x bis Zeile y
sed 'xd' datei
Entfernt Zeile x
sed 'x,$d' datei
Entfernt Zeile x bis zur letzten Zeile
sed '$d' datei
Entfernt nur die letzte Zeile
Tab. 4.62: Die Adressierung von Zeilen des Befehls sed
Im folgenden Beispiel wird die Ausgabe des Befehls ls dem Befehl sed übergeben und aus der Ausgabe werden alle Zeilen ab Zeile 7 bis zur letzten Zeile entfernt. Das Ergebnis wird in eine neue Datei geschrieben: $ ls -l | sed ’7,$d’ > datei-neu
Zeilen ausgeben Mit Hilfe des Befehls p gibt sed alle Zeilen standardmäßig an der Standardausgabe aus. Dabei werden alle Zeilen mit dem Suchmuster doppelt angezeigt, und zwar zusätzlich zu allen anderen Zeilen der Datei. $ sed ’/muster/p’ datei
Um dieses Standardverhalten des Befehls sed im Zusammenhang mit dem Befehl p zu unterdrücken, wird die Option -n verwendet, zum Beispiel: $ sed -n ’/muster/p’ datei
In diesem Beispiel werden alle Zeilen der Datei /etc/group, die das Muster root enthalten, mit sed ausgegeben: $ sed -n '/root/p' /etc/group root:x:0: projekt-ag1:x:501:bmu,root einkauf:x:517:her,doo,root
Zeichenketten ersetzen Mit dem Befehl s ist es möglich, Zeichenketten zu ersetzen oder zu ergänzen, wobei das Ergebnis am Bildschirm ausgegeben wird. $ sed ’von,biss/alt/neu’ datei
Es ist möglich, von einer bestimmten Zeile bis zu einer anderen Zeile einen Ausdruck alt durch einen Ausdruck neu zu ersetzen. Im folgenden Beispiel wird die Zeichenkette EOL ans Ende jeder Zeile hinzugefügt und das Ergebnis an der Standardausgabe angezeigt: $ ls -l | sed ’s/$/ EOL/g’
Im nächsten Beispiel wird in der Datei /etc/passwd von Zeile 7 bis 15 der Buchstabe x durch den Großbuchstaben X ersetzt: $ sed '7,15s/x/X/' /etc/passwd
In diesem Beispiel wird nach einem oder mehreren Leerzeichen gesucht und die gefundenen Leerzeichen werden durch einen einzigen Doppelpunkt ersetzt: $ ls -l | sed ’s/ */:/g’
173
magnum
Editoren und Werkzeuge
Im folgenden Beispiel führt der Befehl sed mehrere Editierfunktionen in derselben Befehlszeile aus. Dazu wird die Option -e verwendet: $ ls -l | sed -e ’s/May/MAY/g’ -e ’s/Jun/JUNE/g’
In diesem Beispiel wird die Ausgabe des Befehls ls MAY und statt Jun JUNE ausgegeben wird. Im letzten Beispiel wird am Anfang der Datei am Ende der Text »Ende« ausgegeben:
-l so
verändert, dass statt May
/etc/passwd
der Text »Anfang« und
$ sed -e '1i\ $a\ <Ende>' /etc/passwd
Der Befehl sed kennt genau wie der Befehl grep oder der Befehl awk reguläre Ausdrücke (regular expressions). Mit deren Hilfe kann die Suche besser eingeschränkt werden. Sie können als Suchmuster einen regulären Ausdruck verwenden.
4.2.4
Der Befehl awk
Der Befehl awk ist ein Textbearbeitungsbefehl, mit dessen Hilfe Datenspalten manipuliert und Berichte erzeugt werden. Dazu durchsucht er eine Datei oder die Eingabe von der ersten bis zur letzten Zeile nach Zeilen, die mit einem bestimmten Suchmuster übereinstimmen, und führt für diese Zeilen die gewünschten Aktionen durch. Dieser Abschnitt stellt nur eine Einführung zum Befehl awk dar. Über dieses Programm und seine umfangreichen Einsatzmöglichkeiten wurden ausführliche Bücher verfasst. Zu den grundlegenden Anwendungsmöglichkeiten des Befehls gehören das Ändern von Datenformaten, das Umsortieren von Spalten und das Hinzufügen von Text. Genau wie der Befehl sed verändert awk die Originaldatei nicht, sondern nur deren Ausgabe. Der Befehl leitet seinen Namen aus den Anfangsbuchstaben der Nachnamen seiner Autoren ab: Alfred Aho, Peter Weinberger und Brian Kernighan. Ende der achtziger Jahre erschien eine neue Version von awk, die auf alten UnixSystemen den Namen nawk erhalten hat. In diesem Abschnitt wird nur die neuere Version erläutert. Es gibt auch eine GNU-Version von awk, die gawk genannt wird und auf dem neueren awk basiert und die unter Linux läuft. Unter SUSE Linux ist der Befehl awk zum Beispiel nur ein symbolischer Link auf den Befehl gawk. Der Befehl awk hat folgende Eigenschaften:
174
쮿
Die Eingabedaten werden automatisch in Zeilen und Felder gegliedert.
쮿
Der Befehl kennt arithmetische und String-Operatoren, Gleitpunkt- und String-Variablen sowie Schleifkonstrukte und Bedingungsabfragen.
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
쮿
Es ist möglich, innerhalb des Befehls Linux-Befehle auszuführen und die Resultate weiterzuverarbeiten.
Die Syntax des Befehls lautet: $ awk [-option(en)] '{ aktion }' datei
Die wichtigsten Optionen des Befehls sind: Option
Beschreibung
-f datei oder --file=datei
Die Befehle für awk werden aus einer Datei anstatt von der Standardeingabe gelesen.
-F trenner oder --fieldseparator=trenner
Verwendet das angegebene Feldtrennzeichen. Dies kann alternativ durch die Variable FS erfolgen.
-v var=wert oder --assign=var=wert
Weist einen Wert einer Variablen zu. Damit können Zuweisungen vor Ausführung des Skripts vorgenommen werden.
Tab. 4.63: Die Optionen des Befehls gawk bzw. awk
Der Befehl besteht aus seinem Befehlsnamen sowie Anweisungen, die in Apostrophzeichen und geschwungene Klammern eingefasst werden, und dem Namen der Eingabedatei. Wird keine Eingabedatei angegeben, dann wird die Eingabe der Standardeingabe verwendet.
Recordvariablen des Befehls awk Der Befehl awk kennt folgende Recordvariablen: Variable
Funktion
$0
Aktuelle Zeile
$1 - $n
Erstes bis ntes Feld
NF
Anzahl der Felder im aktuellen Datensatz
NR
Nummer des aktuellen Datensatzes bzw. Zeilennummer. Bei mehreren Dateien wird diese weitergezählt.
FNR
Nummer des aktuellen Datensatzes in der aktuellen Datei
FILENAME
Name der aktuell eingelesenen Datei
Tab. 4.64: Recordvariablen von awk
Im nächsten Beispiel wird die Ausgabe des Befehls ls -l dem Befehl awk übergeben. Der Befehl führt für jede übergebene Zeile die Aktion print aus, so dass die Ausgabe der Zeile am Bildschirm erfolgt. $ ls -l | awk ’{print $0}’ insgesamt 10904 drwxr-xr-x 3 her users drwxr-xr-x 2 her users ...
4096 2004-01-18 02:37 Desktop 4096 2003-01-06 16:20 Documents
175
magnum
Editoren und Werkzeuge
Das Ergebnis dieses Befehls entspricht ganz genau der Ausgabe des Befehls ls Die Umsetzung lässt sich mit Hilfe der folgenden Abbildung nachvollziehen:
-l.
Bild 4.18: Die Felder des Befehls awk
Der Befehl awk unterteilt die Eingabedatei bzw. die Übergabe von der Standardeingabe in Zeilen oder Records und diese wiederum in Felder oder Wörter. Er ordnet diese Zeilen und Felder automatisch so genannten Recordvariablen zu, die dann bei der Ausführung des Befehls verwendet und ausgegeben werden können. Standardmäßig werden Leerzeichen oder Tabulatorzeichen als Trennzeichen zwischen Feldern verwendet. Die den Feldern zugewiesenen Variablennamen bestehen aus einem Dollarzeichen ($) gefolgt von der Feldnummer, wobei von links nach rechts gezählt wird. Der Variablenname $1 enthält also den Inhalt von Feld 1 und die Variable $2 enthält den Inhalt von Feld 2 usw. Die vollständige Zeile erhält den Variablennamen $0. Im nächsten Beispiel werden die Variablennamen der Felder zusammen mit der Aktion »Ausgeben« verwendet, so dass der Befehl awk bestimmte Daten anzeigt, wie den Eigentümer, die Größe und den Namen einer Datei: $ ls -l | awk ’{print $3 $5 $9}’ her4096Desktop her4096Documents her34297abb2-4.png ...
Standardmäßig enthält eine Ausgabe keine Leerzeichen zwischen den drei Feldern. Daher werden im nächsten Beispiel bei der Ausgabe Leerzeichen zwischen die Felder gesetzt: $ ls -l | awk ’{print $3, $5, $9}’ her 4096 Desktop her 4096 Documents her 34297 abb2-4.png ...
Zwischen den Feldern stehen nun Leerzeichen in der Ausgabe, die Felder sind aber noch nicht exakt angeordnet. Dies kann mit Hilfe von Tabulatoren erreicht werden. Im folgenden Beispiel werden zwischen den Feldern in Anführungszeichen Tabulatoren eingegeben: $ ls -l | awk ’{print $3 " her 4096 Desktop her 4096 Documents her 4297 abb2-4.png$ ...
" $5 "
" $9}’
Statt des Tabulatorzeichens kann zwischen den Anführungszeichen auch die Angabe »\t« stehen.
176
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Der Befehl awk kann Felder auch umsortieren, wenn das Datenformat geändert werden soll. Im nächsten Beispiel wird zuerst der Dateiname, dann die Dateigröße und schließlich der Dateibesitzer ausgegeben: $ ls -l | awk ’{print $9,$5,$3}’ Desktop 4096 her Documents 4096 her abb2-4.png 34297 her ...
Der Befehl awk kann sowohl die Felder neu anordnen als auch neuen Text zwischen die Felder hinzufügen. $ ls -l | awk '{print $9 " verwendet " $5 " Bytes"}' Desktop verwendet 4096 Bytes Documents verwendet 4096 Bytes abb2-4.png verwendet 34297 Bytes ...
Im folgenden Beispiel wird die Datei dat1 durchlaufen und pro Zeile werden die Anzahl der Worte und die Nummer der Zeile ausgegeben: $ cat dat1 Dies ist die erste Zeile und es gibt auch eine zweite Zeile $ awk '{ print "Dieser Text hat " NF " Worte in Zeile " NR }' dat1 Dieser Text hat 5 Worte in Zeile 1 Dieser Text hat 7 Worte in Zeile 2
Die Anweisungen BEGIN und END des Befehls awk Bei den Anweisungen BEGIN und END handelt es sich um fest definierte Vorgaben des Befehls awk. Ein awk-Befehl wird dadurch in drei Teile unterteilt, die aber nicht alle zwingend verwendet werden müssen:
쮿
Die Anweisung BEGIN bewirkt, dass ihre Aktionen vor dem Lesen des ersten Datensatzes ausgeführt werden.
쮿
Die Aktionen zwischen den Anweisungen Datensatz durchgeführt.
쮿
Die Anweisung END bewirkt, dass ihre Aktionen nach dem Lesen des letzten Datensatzes ausgeführt werden.
BEGIN
und
END
werden für jeden
In diesem Beispiel wird auf die Datei /etc/passwd zugegriffen. Das Feldtrennzeichen wird mit Hilfe der Variablen FS in der Anweisung BEGIN festgelegt: $ awk ' BEGIN { FS=":" } { print "Benutzer: " $1 ", Homeverzeichnis: " $6 } ' /etc/passwd Benutzer: root, Homeverzeichnis: /root Benutzer: bin, Homeverzeichnis: /bin Benutzer: daemon, Homeverzeichnis: /sbin Benutzer: lp, Homeverzeichnis: /var/spool/lpd ...
177
magnum
Editoren und Werkzeuge
Trennzeichen des Befehls awk Die Eingabe wird in Zeilen oder Records unterteilt, die durch ein so genanntes Zeilentrennzeichen oder Record-Separator RS getrennt sind. Standardmäßig ist RS das Zeichen New line, daher entspricht in der Regel eine Zeile einem Record. Jede Zeile besteht wiederum aus Feldern, die durch einen Field Separator FS voneinander getrennt sind. Standardmäßig sind Leerzeichen und Tabulatoren Feldtrennzeichen. Diese Vorgaben können mit Hilfe von Variablen geändert werden. Alternative Werte müssen den Variablen FS und RS in der Anweisung BEGIN zugeteilt werden, damit sie auch für den ersten Datensatz gelten. Die Variablen haben folgende Bedeutung: Variable
Funktion
FS
Feldtrennzeichen (field separator); kann auch mit der Option -F festgelegt werden
RS
Zeilentrennzeichen (record separator)
OFS
Ausgabefeld-Trennzeichen (output field separator)
ORS
Ausgabesatz-Trennzeichen (output record separator)
Tab. 4.65: Trennzeichen von awk
Strings des Befehls awk Strings werden in Hochkommata oder Anführungszeichen gefasst, um sie von Variablen abzugrenzen. Es ist möglich, innerhalb von Strings folgende EscapeSequenzen zu verwenden: Escape-Sequenz Funktion \a
Alarmton
\b
(æ__)
\f
Seitenvorschub (form feed)
\n
Neue Zeile (new line)
\r
Zeilenschaltung (carriage return)
\t
Horizontaler Tabulator
\v
Vertikaler Tabulator
\xzeichen
Zeichen mit Hexadezimalwert, zum Beispiel ist \x1B das ASCII-Zeichen (ESC)
\###
Zeichen mit Oktalwert ###, zum Beispiel ist \033 das ASCII-Zeichen (ESC)
\zeichen
Buchstäbliche Darstellung des Zeichens nach dem Backslash, auch wenn es sich um ein Metazeichen handelt
Tab. 4.66: Escape-Sequenzen von awk
178
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Im folgenden Beispiel werden zwischen den Feldern in Anführungszeichen Tabulatoren eingegeben: $ ls her her her ...
-l | awk ’{print $3 "\t" $5 "\t" $9}’ 4096 Desktop 4096 Documents 34297 abb2-4.png$
Reguläre Ausdrücke des Befehls awk Der Befehl awk verwendet wie sed reguläre Ausdrücke (regular expressions), allerdings in einer ausführlicheren Form. Außerdem werden diese immer in Schrägstriche einfasst. Es können folgende reguläre Ausdrücke verwendet werden: Ausdruck Beispiel
Bedeutung
.
/M...e/
Der Punkt steht für genau ein beliebiges Zeichen. Die Fundstellen für das Suchmuster im Beispiel könnten also Masse, Messe, Mette, Motte, Matte, Mitte, Miete usw. lauten.
*
/Mat.*/
Das vorangegangene Zeichen kann kein einziges Mal, einmal oder beliebig oft im Suchmuster vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Math, Matt, Matte, Mathematik, Mat usw. lauten.
[ ]
/M[oaei]tte/ Die eckigen Klammern stehen für genau ein beliebiges Zeichen, das
im Auswahlbereich der eckigen Klammern enthalten sein muss. Die Fundstellen für das Suchmuster im Beispiel müssen also Matte, Motte, Mette und Mitte lauten.
[^ ]
/M.[^es].e/
Die Zeichen des Auswahlbereichs in den eckigen Klammern, die wiederum für genau ein beliebiges Zeichen stehen, dürfen nicht vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Mette, Motte, Matte, Mitte, usw., aber nicht Masse, Messe, Miete usw. lauten.
^
/^Masse/
Die gefundene Zeile muss am Zeilenanfang das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Anfang einer Zeile gesucht werden.
$
/Masse$/
Die gefundene Zeile muss am Zeilenende das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Ende einer Zeile gesucht werden.
+
/M[as]+/
Der vorangegangene Ausdruck kann 1 bis n Mal wiederholt werden, zum Beispiel Mas, Masas, Masasas usw.
?
/M[as]?/
Der vorangegangene Ausdruck kann 0 bis 1 Mal wiederholt werden, zum Beispiel M oder Mas.
..|..
/root|her/
Darstellung einer ODER-Verknüpfung, zum Beispiel root oder her
(...)
/(+|-)?/
Gruppierung von mehreren Zeichen zu einem Ausdruck, zum Beispiel + oder – kann 0 oder 1 Mal vorkommen
\zeichen
\\
Maskierung von Metazeichen, zum Beispiel wird der Backslash als Backslash gelesen
Tab. 4.67: Reguläre Ausdrücke des Befehls awk
179
magnum
Editoren und Werkzeuge
Suchmuster für Records des Befehls awk Der Befehl awk kann Suchmuster auswerten, um bestimmte Zeilen anzusprechen. Dazu werden reguläre Ausdrücke und/oder Vergleiche verwendet. Die Syntax zum Verwenden dieser Suchmuster lautet: $ awk '... suchmuster { aktion(en) } suchmuster { aktion(en) } ...'
Genau wie bei dem Befehl erfolgen:
sed
kann die Adressierung über reguläre Ausdrücke
Ausdruck
Funktion
/reg-ausdr/
Alle Zeilen, die den angegebenen regulären Ausdruck enthalten
/reg-ausdr1/, /reg-ausdr2/
Von der ersten Zeile, die den ersten angegebenen regulären Ausdruck enthält, bis zur ersten Zeile, die den zweiten angegebenen regulären Ausdruck enthält. Dies kann auch mehrmals durchgeführt werden.
Tab. 4.68: Escape-Sequenzen von awk
Im folgenden Beispiel werden alle Dateien mit Namen und Größe ausgegeben, die Verzeichnisse sind, also den Buchstaben »d« am Anfang des Rechteblocks ausweisen: $ ls -l | awk '/^d/ { print $9, $5 }'
Es können nicht nur reguläre Ausdrücke, sondern auch Vergleichsoperatoren verwendet werden, um nur bestimmte Zeilen anzusprechen. Dazu gehören: Operator
Funktion
Größer als
=
Größer gleich als
==
Gleich
!=
Ungleich
string ~ /reg-ausdr/
Der angegebene reguläre Ausdruck ist im angegebenen String enthalten.
string !~ /reg-ausdr/ Der angegebene reguläre Ausdruck ist im angegebenen String nicht enthalten. !
Der angegebene Vergleich wird negiert.
&&
Zwei oder mehr Vergleiche werden über eine UND-Verknüpfung verbunden.
||
Zwei oder mehr Vergleiche werden über eine ODER-Verknüpfung verbunden.
Tab. 4.69: Vergleichsoperatoren von awk
180
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Im nächsten Beispiel werden alle Zeilen komplett ausgegeben ab Zeile Nr. 4: $ ls -l | awk ' NR > 2 { print $0 } '
Hier wird nur die erste Zeile ausführlich ausgegeben: $ ls -l | awk ' NR == 1 { print $0 } '
Im folgenden Beispiel werden alle Zeilen ausgegeben, von der ersten Zeile an, die einen Kleinbuchstaben enthält, bis zur ersten Leerzeile: $ ls -l | awk ' /[a-z]/,/^$/ { print $0 } '
In diesem Beispiel werden alle Zeilen von der fünften bis zur 15. ausgegeben: $ ls -l | awk ' NR>=5 && NR 2 { print $0 } '
Nachfolgend werden alle Zeilen aufgelistet, deren drittes Feld den Text »her« enthält: $ ls -l | awk ' $1 == "her" { print $0 } '
Im nächsten Beispiel werden alle Zeilen aufgeführt, deren drittes Feld entweder den Text »her« oder »doo« enthält: $ ls -l | awk ' $3 ~ /her|doo/ { print $0 } '
Nun werden alle Zeilen ausgegeben, die im ersten Feld weder den Buchstaben »d« noch ein »b« oder »c« enthalten: $ ls -l | awk ' $1 !~ /[bcd]/ { print $0 } '
Das nächste Beispiel gibt alle Zeilen aus, die mehr als vier Felder enthalten, und zwar ab Zeile 4: $ ls -l | awk ' NF >= 4 && NR > 3 { print $0 } '
Das letzte Beispiel zeigt alle Zeilen an, die mehr als 4 Felder enthalten, und zwar ab Zeile 4, oder alle Zeilen, bei denen das neunte Feld ein Tabulatorzeichen enthält: $ ls -l | awk ' (NF >= 4 && NR > 3) || $9 ~ /\t/ { print $0 } '
4.2.5
Dateien mit Hilfe von Editoren in KDE erstellen
Die grafische Oberfläche KDE bietet sehr viele verschiedene Editoren zur Erzeugung und Bearbeitung von Texten an. Zum einen können Sie das Hauptmenü öffnen und über die Menüfolge BÜROPROGRAMME - TEXTVERARBEITUNG diverse Textverarbeitungssoftware öffnen, wie zum Beispiel OpenOffice.org Writer, oder über die Menüfolge DIENSTPROGRAMME - EDITOR einen der folgenden Editoren wählen:
Bild 4.19: Editoren im Hauptmenü
181
Editoren und Werkzeuge
magnum
Die Auswahl der Programme ist jeweils abhängig vom Installationsumfang (vergleiche Kapitel 5). Zu den bekanntesten Editoren gehören neben gedit noch kate, kedit und scite. Des Weiteren gibt es viele verschiedene Editoren für verschiedene Aufgaben, zum Beispiel kile für die Bearbeitung von LaTEX-Texten, oder für die XML-Codierung oder spezielle Editoren für die integrierte Entwicklungsumgebung (IDE = Integrated Development Environment). Solche Editoren unterstützen den Anwender dann zusätzlich durch das Hervorheben von bestimmten Syntaxmerkmalen (Schlüsselwörter und andere Sprachelemente), das so genannte Syntax-Highlighting. Die Textbearbeitung mit einem Editor erfolgt analog zur Textbearbeitung in einem anderen Betriebssystem:
Bild 4.20: Texteditor gedit
Anschließend muss die Datei mit Hilfe des Menüs DATEI - SPEICHERN oder des Symbols SPEICHERN abgespeichert werden, wenn sie aufbewahrt werden soll:
Bild 4.21: Datei speichern
182
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
4.3 Links Links sind Verweise auf Dateien und gegebenenfalls auf Verzeichnisse. Durch die Vergabe von Links ist es möglich, von verschiedenen Stellen im Verzeichnisbaum aus auf dieselbe Datei oder dasselbe Verzeichnis zuzugreifen, ohne eine redundante Kopie zu erstellen, die außerdem nochmals denselben Speicherplatz verbraucht. Links sind auch eine Möglichkeit, die Originaldatei vor versehentlichem Löschen durch den Benutzer zu schützen, indem diese an einer Stelle steht, die dem Benutzer nicht zugänglich ist.
4.3.1
Hard Links
Ein Hard Link vergibt einer Datei einen zweiten Namen, wobei diese nicht kopiert wird, sondern einfach ein weiterer logischer Verweis auf einen vorhandenen Dateieintrag erzeugt wird. Die logischen Dateinamen von Hard Links verweisen immer auf denselben Eintrag in der Inode-Tabelle (vergleiche Kapitel 13). Einen Hard Link erzeugen Sie mit folgendem Befehl: $ ln quelldatei zieldatei
Der Befehl ln kennt folgende Optionen: Option
Bedeutung
-b oder --backup
Erstellt eine Backupdatei von jeder eventuell vorhandenen Zieldatei
-d oder --F oder --directory
Kann feste Verknüpfungen auf Verzeichnisse erzeugen. Diese Option kann nur root ausführen und sollte vermieden werden, um die Konsistenz des Dateisystems nicht zu gefährden.
-f oder --force
Löscht vorhandene Zieldateien
-i oder --interactive
Fragt nach, ob vorhandene Zieldateien überschrieben werden sollen
-n oder --no-dereference
Behandelt einen symbolischen Link auf ein Verzeichnis, als handele es sich um eine normale Datei; das heißt, symbolische Verknüpfungen werden ersetzt
-s oder --symbolic
Erzeugen eines symbolischen Links
-S oder --suffix=suffix
Hängt das Suffix suffix an Sicherheitskopien anstelle der Standardvorgabe Tilde (~) an
--target-directory=dir
Legt das Verzeichnis fest, in welchem die Links erzeugt werden sollen
-v oder --verbose
Gibt den Namen jeder Datei vor dem Verlinken aus
Tab. 4.70: Optionen des Befehls ln
In diesem Beispiel wird für die Datei prot ein Hard Link mit dem Namen prot1 erzeugt: $ $ $ $
ln prot prot1 ls -l prot* -rw-r--r-- 2 root other 65 May 3 10:31 prot -rw-r--r-- 2 root other 65 May 3 10:31 prot1
183
magnum
Links
Die Einträge, die der Befehl ls –l für die beiden Dateien ausgibt, sind absolut identisch, bis auf den logischen Dateinamen. Da beide Dateinamen dieselbe InodeNummer haben, verweisen sie auch auf dieselben Dateiinformationen. Die zweite Spalte der Ausgabe enthält den so genannten Link Counter, der pro Hard Link um 1 erhöht wird. Existieren für eine Datei Hard Links, so ist es nicht mehr möglich, den ursprünglichen Verweis auf die Originaldatei zu erkennen. Alle logischen Dateinamen verweisen einfach auf denselben Inode-Eintrag. Wenn Sie einen Hard Link löschen, wird die Zahl des Link Counters herabgesetzt, bis nur noch ein einziger Dateiname mit dem Link Counter 1 übrig ist. Wenn Sie diesen löschen, entspricht dies dem Löschen der Datei: Dateieintrag und -name werden entfernt. Ein Hard Link kann nur innerhalb derselben Partition zugewiesen werden, da für jede Partition die Inode-Nummern und die Inode-Tabelle (vergleiche Kapitel 13) separat verwaltet werden. Daher ist es auch nicht möglich, den Befehl mv für einen Hard Link über Partitionen hinweg auszuführen. Eine weitere Einschränkung ist, dass Hard Links normalerweise nicht für Verzeichnisse angelegt werden können bzw. sollten.
4.3.2
Symbolische Links
Ein symbolischer Link ist eine Datei, die als Daten nur den Namen und den Pfad der Originaldatei speichert, auf die sie verweist. Ein symbolischer Link hat im Gegensatz zum Hard Link auch einen eigenen Inode-Eintrag. Einen symbolischen Link können Sie wie folgt erzeugen: $ $ $ $
ln -s prot prots ls -l prot* -rw--r—r-- 1 root other 65 May 3 10:31 prot lrwxrwxrxw 1 root other 65 May 27 12:52 prots prot
Wenn Sie einen Befehl für den symbolischen Link absetzen, wird in Wirklichkeit die Originaldatei verwendet. Sie können symbolische Links nicht nur über Partitionen hinweg, sondern auch für Verzeichnisse verwenden. Wenn Sie den Befehl cp oder chmod ausführen, kopieren bzw. verändern Sie die Rechte für die Originaldatei, nicht für den Link. Die Befehle ls, rm und mv zeigen, löschen und verschieben hingegen den symbolischen Link, nicht die Originaldatei. Wenn Sie einen symbolischen Link löschen, hat dies keine Auswirkungen auf die Originaldatei. Wenn Sie die Originaldatei löschen, zeigt der Link ins Leere. Bei einem symbolischen Link haben Sie nur pro forma alle Rechte. Tatsächlich gelten die Rechte der Originaldatei, wenn Sie auf die Datei eine Operation ausführen möchten. Die folgende Tabelle enthält die wichtigsten Unterschiede zwischen Hard Links und symbolischen Links.
184
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Merkmal
Hard Link
Symbolischer Link
Partitionsübergreifend nein
ja
Inode-Eintrag
wie Originaldatei
eigener Inode-Eintrag
Link Counter
wird erhöht
bleibt 1
Originaldatei
nicht mehr erkennbar
bleibt erkennbar
Quelldatei
muss existieren
muss nicht existieren (Verweis erfolgt ins Leere)
Linkdatei
darf nicht existieren
wird überschrieben, wenn sie existiert
Eigene Datenblöcke
nein
ja, mit Pfad-/Dateinamen der Originaldatei
Anwendbar auf
nur normale Dateien
normale Dateien, Verzeichnisse und Gerätedateien
Wesen
anderer Name für gleiche Datei eigene Datei, die als Verweis dient
Tab. 4.71: Vergleich Hard Links und symbolische Links
4.3.3
Verknüpfungen in KDE erstellen
Das Erstellen von Verknüpfungen in KDE entspricht dem Anlegen von symbolischen Links. Dazu ziehen Sie mit gedrückter linker Maustaste eine Datei oder ein Verzeichnis aus einem Verzeichnis des Konquerors in ein anderes Verzeichnis oder auf den Desktop, der selbst auch wiederum nur ein Verzeichnis darstellt. Wählen Sie aus dem anschließend angezeigten Menü die Option HIERMIT VERKNÜPFEN, um einen symbolischen Link anzulegen:
Bild 4.22: Verknüpfung erstellen
Das Symbol der Verknüpfung auf dem Desktop wird mit einem kleinen schwarzen Pfeil markiert:
Bild 4.23: Verknüpfungssymbol
185
Dateien und Dateiinhalte suchen
magnum
4.4 Dateien und Dateiinhalte suchen Im letzten Abschnitt werden zwei Befehle zum Suchen von Dateien bzw. Dateiinhalten vorgestellt. Der Befehl find kann nach Dateien suchen und kennt sehr viele verschiedene Möglichkeiten, um die Suche einzugrenzen. Der Befehl grep sucht nach bestimmten Mustern in Dateien, die mit Hilfe von regulären Ausdrücken verfeinert werden können.
4.4.1
Der Befehl find
Mit Hilfe dieses Befehls können Sie eine Datei im Verzeichnisbaum suchen, wobei Sie bestimmte Suchkriterien festlegen können. Der Befehl führt eine rekursive Suche durch und gibt die gefundenen Dateien am Bildschirm aus. Die Befehlssyntax lautet: $ find suchpfad –suchkriterium/en [aktion(en)]
Der Suchpfad kann ein relativer oder absoluter Pfad sein, die Suchkriterien sollen die Suche eingrenzen und die Aktionen werden mit den gefundenen Dateien ausgeführt. Wenn Sie die Suche im Verzeichnis / starten, kann sie recht lange dauern, da sie im Wurzelverzeichnis beginnt und standardmäßig sämtliche Verzeichnisse durchsucht, einschließlich aller zurzeit gemounteten Geräte wie zum Beispiel CD-ROMs. Ein solcher Befehl kann auch die Systemleistung stark in Anspruch nehmen. Die Suchkriterien sind normalerweise über eine UND-Verknüpfung miteinander verbunden. Wenn Sie eine ODER-Verknüpfung verwenden möchten, dann geben Sie die Option –o zwischen den beiden Suchkriterien ein, die Sie mit ODER verbinden möchten. Es gibt eine ganze Reihe von Suchkriterien, die verwendet werden können: Suchkriterium
Bedeutung
-amin [+/-]i
Auf die Datei wurde zuletzt vor genau i Minuten oder vor mehr als i Minuten (Pluszeichen) oder vor weniger als i Minuten (Minuszeichen) zuletzt zugegriffen.
-anewer datei
Auf die Datei wurde zuletzt vor einem kürzeren Zeitpunkt zugegriffen, als das Änderungsdatum der Datei datei lautete. Diese Option wird von der Option -follow nur dann beeinflusst, wenn sie an der Befehlszeile nach der Option -follow eingegeben wird.
-atime [+/-]i
Nach einem bestimmten Zugriffsdatum in i Tagen (i * 24 Stunden) suchen. Wenn das Pluszeichen verwendet wird, wird nach Dateien gesucht, auf die vor mehr als i * 24 h zuletzt zugegriffen wurde, bei einem Minuszeichen nach Dateien, auf die vor weniger als i * 24 h zuletzt zugegriffen wurde. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, auf die zuletzt vor genau i * 24 h zugegriffen wurde.
Tab. 4.72: Die wichtigsten Suchkriterien des Befehls find
186
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Suchkriterium
Bedeutung
-cmin [+/-]i
Die Datei wurde zuletzt vor genau i Minuten oder vor mehr als i Minuten (Pluszeichen) oder vor weniger als i Minuten (Minuszeichen) zuletzt verändert.
-cnewer datei
Die Datei wurde zuletzt vor einem kürzeren Zeitpunkt geändert, als das Änderungsdatum der Datei datei lautete. Diese Option wird von der Option -follow nur dann beeinflusst, wenn sie an der Befehlszeile nach der Option -follow eingegeben wird.
-ctime [+/-]i
Nach einem bestimmten Änderungsdatum in i Tagen (i * 24 Stunden) suchen. Wenn das Pluszeichen verwendet wird, wird nach Dateien gesucht, die vor mehr als i * 24 h zuletzt geändert wurden, bei einem Minuszeichen nach Dateien, die vor weniger als i * 24 h zuletzt geändert wurden. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, die zuletzt vor genau i * 24 h geändert wurden.
-daystart
Zeiten werden vom Beginn des aktuellen Tages an berechnet und nicht 24 Stunden zuvor.
-depth
Vor dem Verzeichnis selbst wird der Inhalt von jedem Verzeichnis durchsucht.
-empty
Die Datei ist leer und entweder ein Verzeichnis oder eine reguläre Datei.
-follow
Den symbolischen Links folgen
-fstype typ
Nur in bestimmten Dateisystemtypen suchen. Gültige Dateisystemtypen sind unter anderem: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Wenn Sie für die Ausgabe die Option -printf mit der Angabe %F verwenden, werden die Dateisystemtypen auch ausgegeben.
-gid nummer
Suche nach der GID einer bestimmten Gruppe
-group gruppe
Nach einer bestimmten Gruppe suchen
-ilname muster
Entspricht der Suche von -lname, jedoch keine Unterscheidung von Großund Kleinschreibung
-iname muster
Entspricht der Suche von -name, jedoch keine Unterscheidung von Großund Kleinschreibung
-inum inodenr
Nach bestimmten Inode-Nummern suchen
-ipath muster
Entspricht der Suche von -path, jedoch keine Unterscheidung von Großund Kleinschreibung
-iregex muster
Entspricht der Suche von -regex, jedoch keine Unterscheidung von Großund Kleinschreibung
-links i
Nur nach Dateien mit einer Anzahl i von Links suchen
-lname muster
Es wird nach symbolischen Links gesucht, die auf Dateien weisen, deren Name mit dem angegebenen Suchmuster übereinstimmt. Dabei kann das Suchmuster Metazeichen enthalten, aber die Zeichen »/« und ».« werden nicht speziell behandelt.
-maxdepth zahl
Die Suche wird in ihrer Tiefe auf die angegebene Anzahl von Unterverzeichnisebenen eingeschränkt.
Tab. 4.72: Die wichtigsten Suchkriterien des Befehls find (Forts.)
187
Dateien und Dateiinhalte suchen
magnum
Suchkriterium
Bedeutung
-mindepth zahl
Die Suche beginnt in ihrer Tiefe erst ab der angegebenen Anzahl von Unterverzeichnisebenen.
-mmin [+/-]i
Die Daten der Datei wurden zuletzt vor genau i Minuten oder vor mehr als i Minuten (Pluszeichen) oder vor weniger als i Minuten (Minuszeichen) zuletzt verändert.
-mtime [+/-]i
Nach einem bestimmten Änderungsdatum in i Tagen (i * 24 Stunden) suchen. Wenn das Pluszeichen verwendet wird, wird nach Dateien gesucht, die vor mehr als i * 24 h zuletzt geändert wurden, bei einem Minuszeichen nach Dateien, die vor weniger als i * 24 h zuletzt geändert wurden. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, die zuletzt vor genau i * 24 h geändert wurden.
-mount
Nur im angegebenen Dateisystem suchen
-name muster
Nach einem bestimmten Dateinamen suchen. Metazeichen können im Muster verwendet werden, müssen aber vor der Shell maskiert werden.
-newer datei
Nach Dateien suchen, die neuer sind als die angegebene Datei. Diese Option wird von der Option -follow nur dann beeinflusst, wenn sie an der Befehlszeile nach der Option -follow eingegeben wird.
-noleaf
Normalerweise enthält jedes Verzeichnis zwei Unterverzeichnisse weniger, als der Hard Link Counter anzeigt. Diese Hard Links stehen für das Verzeichnis selbst und dessen übergeordnetes Verzeichnis, die nicht durchsucht werden müssen. Diese Option unterdrückt diese Optimierung, was bei der Suche in Dateisystemen Sinn macht, die keine Unix- bzw. LinuxDateisysteme sind, zum Beispiel CD-ROM- und MS-DOS-Dateisysteme.
-nouser
Nach Dateien ohne Benutzer suchen, das heißt, deren Besitzer keine gültige UID im System hat
-nogroup
Nach Dateien ohne Gruppe suchen, das heißt, deren Gruppe keine gültige GID im System hat
-path muster
Suche nach Dateien, deren Name mit Muster übereinstimmt. Die Metazeichen »/« und ».« haben keine spezielle Bedeutung. Um einen ganzen Verzeichnisbaum zu ignorieren, kann die Option -prune verwendet werden, damit wird vermieden, dass jede Datei in diesem Verzeichnisbaum überprüft wird.
-perm rechte
Nach bestimmten Berechtigungen suchen: -perm rechte sucht nach Dateien mit Berechtigungsbits, die exakt den ange-
gebenen Rechten entsprechen (oktal oder symbolisch).
-perm -rechte sucht alle Dateien, bei denen alle angegebenen Berechtigungsbits gesetzt wurden. Die Angabe -perm -700 entspricht zum Beispiel -rwx??????, wobei das Fragezeichen für jeden beliebigen Modus stehen kann. -perm +rechte sucht alle Dateien, bei denen ein beliebiges der angegebenen
Berechtigungsbits gesetzt wurde.
-regex muster
Der Dateiname stimmt mit dem regulären Ausdruck muster überein. Die Übereinstimmung gilt für den gesamten Dateipfad und nicht nur für den Dateinamen. Um zum Beispiel eine Datei mit dem Namen ’./projekt2’ zu finden, kann der reguläre Ausdruck ’.*projekt.' oder ’.*p.*2’ verwendet werden, aber nicht ’p.*r2’.
Tab. 4.72: Die wichtigsten Suchkriterien des Befehls find (Forts.)
188
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Suchkriterium
Bedeutung
-size [+/-]i
Nach einer bestimmten Größe suchen. i steht für einen 512-Byte-Block. Wenn das Pluszeichen verwendet wird, wird nach Dateien gesucht, die größer sind, bei einem Minuszeichen nach Dateien, die kleiner sind. Wird kein Minus- oder Pluszeichen verwendet, wird nach Dateien gesucht, die genau i Blöcke groß sind. Soll nach einer Größe in Bytes gesucht werden, muss hinter der Größe ein c für die Byte-Angabe bzw. k für Kbyte stehen.
-type typ
Nach einem bestimmten Dateityp suchen, möglich sind: f für eine normale Datei d für ein Verzeichnis l für einen symbolischen Link c für eine zeichenorientierte Gerätedatei b für eine blockorientierte Gerätedatei p für eine Named Pipe-Datei (FIFO) s für eine Socket-Datei
-user benutzer
Nach einem bestimmten Benutzer suchen
-uid uid
Nach einer bestimmten UID eines Benutzer suchen
-used i
Auf die Datei wurde zuletzt nach i Tagen zugegriffen, nachdem sie zuletzt geändert wurde.
-xdev
Nur im angegebenen Dateisystem suchen
-xtype typ
Entspricht der Option -type, wenn die Datei kein symbolischer Link ist. Bei symbolischen Links überprüft die Option den Typ der Originaldatei im Gegensatz zu -type.
Tab. 4.72: Die wichtigsten Suchkriterien des Befehls find (Forts.)
Die Aktionen des Befehls sind: Aktion
Bedeutung
-print
Die gefundenen Dateien ausgeben. Dies ist die standardmäßige Aktion, die nicht unbedingt eingegeben werden muss. Nach jeder ausgegebenen gefundenen Datei erfolgt eine Zeilenschaltung.
-ls
Die gefundenen Dateien in Langform ausgeben
-exec befehl {} \; Den angegebenen Befehl für jede gefundene Datei ausführen. Dabei wird
jeder gefundene Dateiname in die geschweiften Klammern ersetzt. Wenn Sie einen Befehl zum Löschen der gefundenen Dateien verwenden, werden Ihnen die Dateien nicht mehr angezeigt, sondern sofort gelöscht, wenn sie mit den Suchkriterien übereinstimmen! -ok befehl {} \;
Den angegebenen Befehl für jede gefundene Datei ausführen. Sie werden allerdings bei bestimmten Befehlen gefragt, wie zum Beispiel dem Löschen, ob Sie die jeweils gefundene Datei wirklich löschen wollen.
-print0
Die gefundenen Dateien gefolgt von einem Null-Zeichen ausgeben. Auf diese Weise können Dateinamen, die Zeilenschaltungen enthalten, von Programmen korrekt interpretiert werden, die die Ausgabe des Befehls find bearbeiten.
Tab. 4.73: Die Aktionen des Befehls find
189
Dateien und Dateiinhalte suchen
magnum
Aktion
Bedeutung
-fls datei
Entspricht der Aktion -ls, schreibt das Ergebnis aber in die Datei datei. Wenn die Datei noch nicht existiert, wird sie erzeugt. Ist sie bereits vorhanden, dann wird sie überschrieben.
-fprint datei
Entspricht der Aktion -print, schreibt das Ergebnis aber in die Datei datei
-fprint0 datei
Entspricht der Aktion -print0, schreibt das Ergebnis aber in die Datei datei
-prune
Wenn die Option -depth nicht verwendet wird, wird nicht in das angegebene Verzeichnis und dessen Unterverzeichnissen verzweigt. Wird die Option -depth verwendet, dann hat diese Option jedoch keine Auswirkung.
-printf format
Gibt das Format format an der Standardausgabe aus und interpretiert dabei die Anweisungen, die mit »\« und »%« erfolgen. Feldbreite und sonstige Angaben können mit der C-Funktion des Befehls printf angegeben werden. Im Gegensatz zu diesem Befehl fügt die Option -printf allerdings keine neue Zeile am Ende der Zeichenkette hinzu. Die möglichen Anweisungen lauten: \a Alarmglocke \b Backspace \c Die Ausgabe wird sofort gestoppt und geleert. \f Seitenvorschub \n Zeilenschaltung \r Wagenrücklauf \t Horizontaler Tabulator \v Vertikaler Tabulator \\ Das Zeichen Backslash (\') Folgt dem Zeichen »\« irgendein Zeichen, das an dieser Stelle nicht gelistet wurde, wird der Backslash als normales Zeichen behandelt und gedruckt.%% Das Zeichen Prozent (%) %a Die letzte Zugriffszeit auf die Datei wird im Format der C-Funktion »ctime« zurückgegeben. %Azeit Die letzte Zugriffszeit der Datei im durch zeit spezifizierten Format, das entweder »@« ist oder eine Anweisung der C-Funktion »strftime«. Die möglichen Werte für zeit sind:
– @ Sekunden seit dem 1. Januar 1970, 00:00 GMT – Zeitfelder: – H Stunde (00 ... 23) – I Stunde (01 … 12) – k Stunde ( 0 … 23) – l Stunde ( 1 … 12) – M Minute (00 ... 59) – p AM oder PM – r Zeit, 12-Stunden-Format (hh:mm:ss [AP]M) – S Sekunde (00 ... 61) – T time, 24-Stunden-Format (hh:mm:ss) – X Zeitdarstellungsformat (H:M:S) – Z Zeitzone (zum Beispiel EDT) Tab. 4.73: Die Aktionen des Befehls find (Forts.)
190
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Aktion -printf format
(Forts.)
Bedeutung – – – – – – – – – – – – – – – –
Datumsfelder:
a Abgekürzter Wochentagname (Sun ... Sat) A Wochentagname (Sunday ... Saturday) b oder h Abgekürzter Monatsname (Jan ... Dec) B Monatsname (January ... December) c Datum und Uhrzeit (Sat Nov 04 12:02:33 EST 1989) d Tag des Monats (01 ... 31) D Datum (mm/dd/yy) j Tag des Jahres (001 ... 366) m Monat (01 ... 12) U Kalenderwoche, wobei die Woche mit dem Sonntag beginnt (00 … 53) w Tag der Woche (0 ... 6) W Kalenderwoche, wobei die Woche mit dem Montag beginnt (00 ... 53) x Datumsdarstellung (mm/dd/yy) y Jahresdarstellung zweistellig (00 … 99) Y Jahr (1970 ...)
– %b Dateigröße in 512-Byte-Blöcken (aufgerundet) – %c Das letzte Änderungsdatum der Datei im Format, wie es die C-Funktion »ctime« zurückgibt – %C format Das letzte Änderungsdatum der Datei im Format format (siehe %A) – %d Die Tiefe der Datei im Verzeichnisbaum; 0 bedeutet, dass die Datei ein Argument der Befehlszeile ist – %f Der Dateiname, bei dem alle vorangestellten Verzeichnisse entfernt wurden (nur das letzte Element) – %F Der Typ des Dateisystems, in dem sich die Datei befindet; dieser Wert kann mit der Option -fstype verwendet werden – %g Der Gruppenname der Datei bzw. die numerische Gruppen-Id, wenn die Gruppe keinen Namen hat – %G Die numerische Gruppen-ID der Datei – %h Die führenden Verzeichnisse im Dateinamen (alles außer dem letzten Element) – %H Befehlszeilenargument, unter dem die Datei gefunden wurde – %i Die Inode-Nummer der Datei (in dezimaler Notation) – %k Die Dateigröße in 1-Kilobyte-Blöcken (aufgerundet) – %l Die Originaldatei des symbolischen Links (eine leere Zeichenkette, wenn die Datei kein symbolischer Link ist) – %m Die Zugriffsbits der Datei (in oktaler Notation) – %n Anzahl der Hard Links der Datei – %p Der Dateiname %P Der Dateiname, wobei der Name des Befehlszeilenarguments gelöscht wird, unter dem die Datei gefunden wurde %s Dateigröße in Bytes %t Das Datum der letzten Dateiänderung in dem Format, wie es von der C-Funktion »ctime« zurückgegeben wird %T format Das letzte Änderungsdatum der Datei im Format format (entspricht %A) %u Der Name des Besitzers der Datei oder die numerische Benutzer-ID, wenn der Benutzer keinen Namen hat
%U Die numerische Benutzer-ID der Datei Wenn dem Zeichen »%« irgendein anderes Zeichen folgt, wird das Prozentzeichen ignoriert (aber das andere Zeichen gedruckt). -fprintf datei
Entspricht der Aktion -fprintf, schreibt das Ergebnis aber in die Datei datei
Tab. 4.73: Die Aktionen des Befehls find (Forts.)
191
magnum
Dateien und Dateiinhalte suchen
Im nachfolgenden Beispiel wird im Homeverzeichnis und in den darunter liegenden Verzeichnissen nach einer Datei mit dem Namen fa.txt gesucht und die gesuchte Datei in Langform ausgegeben: $ find ~ -name fa.txt –ls 661149 1 -rw-r—r-- 1 behoerden/text/fa.txt
her
buha
189 Jul 5 15:34 /export/home/her/
Das Zeichen ~ ist ein Platzhalter für das Homeverzeichnis. Im nachfolgenden Beispiel wird ab dem aktuellen Verzeichnis nach allen normalen Dateien der Benutzer her und olli gesucht, die zuletzt vor weniger als 7 Tagen geändert wurden, und diese werden ausgegeben: $ find . \( –user her –o –user olli \) –type f –mtime –7 –print /export/home/her/brief-lg.txt /export/home/her/mond.jpg /export/home/olli/dokument1
Bei mehreren Auswahlkriterien, die mit der Option –o verknüpft werden, müssen die umgebenden Klammern mit Hilfe des Backslashes maskiert werden, sonst würde die Shell versuchen, die Eingabe aufzulösen. Im nachfolgenden Beispiel wird ab dem Wurzelverzeichnis nach Dateien mit dem Namen core gesucht und die gefundenen Dateien werden sofort ohne Rückfrage gelöscht: $ find / -name core –exec rm {} \;
Mit dem nächsten Befehl wird im Verzeichnis arbeit und in den Unterverzeichnissen bis zu drei Ebenen tiefer nach allen leeren Dateien der Gruppe buha gesucht, und diese werden nach Rückfrage gelöscht: $ find /arbeit -size 0 -group buha -maxdepth 3–ok rm {} \;
Im nächsten Beispiel wird nur in Dateisystemen vom Typ nfs nach Dateien gesucht, die jünger als die Datei bericht2002.txt sind. Bei symbolischen Links wird die Originaldatei gesucht und die gefundenen Dateien werden ausgegeben: $ find / -fstype nfs -type f -newer bericht2002.txt -follow -print
4.4.2
Der Befehl grep
Dieser Befehl durchsucht Dateien nach Suchmustern. Die Syntax des Befehls lautet: $ grep [–Option(en)] suchmuster datei(en)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-a oder --text
Entspricht --binary-files=text
-A oder --after-context=zahl Anzeige von zahl Zeilen vom nachfolgenden Kontext
Tab. 4.74: Die Optionen des Befehls grep
192
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Option
Bedeutung
-b oder --byte-offset
Nummer des Plattenblocks ausgeben, in dem das Suchmuster steht
-B oder --before-context=zahl
Anzeige von zahl Zeilen vom vorausgehenden Kontext
--binary-files=typ
Annahme von Binärdateien mit Typ binary oder text oder without-match
-c oder --count
Anzahl der Zeilen ausgeben, die das Suchmuster enthalten
-C oder --context=zahl
Anzeige von zahl Zeilen vom Kontext
--color[=wenn] oder --colour=[wenn]
Markieren von übereinstimmenden Textteilen, wobei wenn always oder never oder auto sein kann
-d oder --directories =aktion
read oder recurse oder skip
-D oder --devices=aktion
Festlegen der Verarbeitung mit aktion read oder write von Gerätedateien, FIFOs und Sockets
-e oder --regexp=muster
muster wird als regulärer Ausdruck verwendet. Diese Option kann verwendet werden, wenn das Suchmuster mit einem Bindestrich beginnt.
-E oder --extended-regexp
Das Suchmuster ist ein erweiterter regulärer Ausdruck.
--exclude=muster
Überspringen von Dateien, die mit muster übereinstimmen
--exclude-from=datei
Überspringen von Dateien, die mit einem Suchmuster in datei übereinstimmen
-f oder --file=datei
Das Suchmuster wird aus datei gelesen.
-F oder --fixed-strings
Das Suchmuster besteht aus durch Zeilenschaltungen getrennten Zeichenketten.
-G oder --basic-regexp
Das Suchmuster ist ein regulärer standardmäßiger Ausdruck.
-h oder --no-filename
Keine Anzeige von Dateinamen. Wird nur eine Datei durchsucht, wird standardmäßig ebenfalls kein Dateiname angezeigt.
-H oder --with-filename
Anzeige des Dateinamens bei jeder Übereinstimmung
-i
Keine Unterscheidung von Groß- und Kleinschreibung
-I
Entspricht --binary-files=without-match
--include=muster
Untersuchung von Dateien, die mit muster übereinstimmen
Festlegen, mit welcher aktion Verzeichnisse verarbeitet werden:
-l oder --files-with-matches Nur Dateinamen mit Übereinstimmungen werden ausgegeben. -L oder --files-without-match
Nur Dateinamen ohne Übereinstimmung werden ausgegeben.
--line-buffered
Einzelne (ungepufferte) Ausgabe jeder Zeile
--label=text
Ausgabe von text als Dateiname für die Standardeingabe
Tab. 4.74: Die Optionen des Befehls grep (Forts.)
193
magnum
Dateien und Dateiinhalte suchen
Option
Bedeutung
-m oder --max-count=zahl
Abbruch nach zahl Übereinstimmungen
--mmap
Eingabe in den Speicher mappen, wenn möglich
-n oder --line-number
Zeilennummer ausgeben, die das Suchmuster enthält
-o oder --only-matching
Nur der mit dem Suchmuster übereinstimmende Teil der Zeile wird angezeigt.
-P oder --perl-regexp
Das Suchmuster ist ein regulärer, von Perl akzeptierter Ausdruck.
-q oder --quiet oder --silent
Unterdrücken der normalen Ausgabe
-R oder -r oder --recursive
Entspricht --directories= recurse, das heißt also einer rekursiven Suche, auch in den Unterverzeichnissen des angegebenen Verzeichnisses
-s oder --no-messages
Unterdrücken von Fehlermeldungen
-u oder --unix-byte-offsets
Offsets ausgeben, als würden Carriage Return-Zeichen fehlen (an MS-DOS angepasst)
-U oder --binary
Das Carriage Return-Zeichen am Zeilenende wird belassen (an MS-DOS angepasst).
-v oder --revert-match
Umgekehrt suchen: nur Zeilen ausgeben, die das Suchmuster nicht enthalten
-w oder --word-regexp
Das Suchmuster muss mit einem ganzen Wort übereinstimmen.
-x oder --line-regexp
Das Suchmuster muss mit einer ganzen Zeile übereinstimmen.
-z oder --null-data
Eine Zeile muss mit Null-Byte statt einer Zeilenschaltung enden.
-Z oder --null
Ausgabe eines Null-Bytes nach jedem Dateinamen
-zahl
Entspricht --context=ZAHL
Tab. 4.74: Die Optionen des Befehls grep (Forts.)
Es gibt zwei weitere Versionen des Befehls unter Linux: fgrep und egrep. Der Befehl fgrep kennt keine regulären Ausdrücke (siehe nächster Abschnitt), während egrep weitere reguläre Ausdrücke kennt. Anders ausgedrückt: egrep entspricht grep -E und fgrep entspricht grep -F. Im folgenden Beispiel wird nach dem Suchmuster Vielfalt in der Datei gesucht und die gefundene Zeile wird mit Zeilennummer ausgegeben.
prot1000
$ grep –n Vielfalt prot1000 19:eine grosse Vielfalt an verschiedenen Produkten bietet gerade
Im nächsten Beispiel wird die Zahl der Benutzer ausgegeben, die laut der Datei etc/passwd die bash verwenden:
$ grep –c /bin/bash /etc/passwd 17
194
/
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Der Befehl grep kann auch mit dem Befehl find kombiniert werden, wenn sich die Datei mit dem Suchmuster im Verzeichnisbaum unterhalb des aktuellen Verzeichnisses befindet. Im nachfolgenden Beispiel werden im Verzeichnis /etc und in den darunter liegenden Verzeichnissen Dateien gesucht, die das Suchmuster PASSREQ enthalten: $ find /etc –type f –exec grep –n PASSREQ {} /dev/null \;
Da der Befehl grep bei einigen Unix- und Linux-Varianten normalerweise keine Dateinamen ausgibt, wenn er nur eine Datei durchsucht, wird ihm in diesem Beispiel parallel die leere Datei /dev/null zum Durchsuchen »aufgezwungen«. Auf diese Weise erhalten Sie auch die Dateinamen mit den Fundstellen. Der Befehl grep unter SUSE Linux kennt aber für solche Zwecke die Option -H. Alternativ kann mit dem Befehl grep aber auch direkt rekursiv gesucht werden (allerdings bietet find insgesamt noch weitergehende Suchmöglichkeiten): $ grep –r Vielfalt ~/berichte
In diesem Fall wird im und unterhalb des Verzeichnisses berichte, das sich im Homeverzeichnis des Suchenden befindet, nach Dateien gesucht, die das Wort Vielfalt enthalten. Im letzten Beispiel wird mit dem Befehl Muster Bernd oder Brigitte gesucht:
egrep
in der Datei erzaehl.txt nach dem
$ egrep –n '(Bernd|Brigitte)' erzaehl.text
Reguläre Ausdrücke (regular expressions) Der Befehl grep lässt sich über reguläre Ausdrücke steuern, die im Suchmuster verwendet werden. Im nachfolgenden Beispiel werden alle Dateien des Verzeichnisses prog_sprachen nach einem Suchmuster durchsucht, das objektorientiert lautet und am Zeilenanfang steht: $ grep –in '^objektorientiert' ~/prog_sprachen/* kapitel1:1:Objektorientierte Programmiersprachen kapitel1:71:objektorientierte Sprachen haben bestimmte Merkmale, wie zum kapitel7:331:Objektorientiert Programmieren
Zu den wichtigsten regulären Ausdrücken gehören: Ausdruck Beispiel
Bedeutung
.
M...e
Der Punkt steht für genau ein beliebiges Zeichen. Die Fundstellen für das Suchmuster im Beispiel könnten also Masse, Messe, Mette, Motte, Matte, Mitte, Miete usw. lauten.
*
Mat.*
Das vor dem Stern stehende Zeichen kann kein einziges Mal, einmal oder beliebig oft im Suchmuster vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Math, Matt, Matte, Mathematik, Mat usw. lauten.
[ ]
M[oaei]tte Die eckigen Klammern stehen für genau ein beliebiges Zeichen, das im
Auswahlbereich der eckigen Klammern enthalten sein muss. Die Fundstellen für das Suchmuster im Beispiel müssen also Matte, Motte, Mette und Mitte lauten. Tab. 4.75: Reguläre Ausdrücke
195
Dateien und Dateiinhalte suchen
magnum
Ausdruck Beispiel
Bedeutung
[^ ]
M.[^es].e
Die Zeichen des Auswahlbereichs in den eckigen Klammern, die wiederum für genau ein beliebiges Zeichen stehen, dürfen nicht vorkommen. Die Fundstellen für das Suchmuster im Beispiel könnten also Mette, Motte, Matte, Mitte, usw., aber nicht Masse, Messe, Miete usw. lauten.
^
^Masse
Die gefundene Zeile muss am Zeilenanfang das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Anfang einer Zeile gesucht werden.
$
Masse$
Die gefundene Zeile muss am Zeilenende das Suchmuster enthalten. Die Fundstellen für das Suchmuster im Beispiel müssen also am Ende einer Zeile gesucht werden.
Tab. 4.75: Reguläre Ausdrücke (Forts.)
Außer den Befehlen grep und egrep verwenden auch die Befehle und einige Texteditoren reguläre Ausdrücke.
4.4.3
vi, awk
und
sed
Dateien oder Verzeichnisse mit Hilfe von KDE suchen
KDE verfügt ebenfalls über eine recht gute Suchfunktion. Öffnen Sie dazu im Hauptmenü die Option DATEIEN SUCHEN:
Bild 4.24: Dateien mit KDE suchen
196
Kapitel 4 · Mit Dateien und Verzeichnissen arbeiten
Sie können in der ersten Registerkarte NAME/PFAD der nun angezeigten Dialogbox entweder nach dem Datei- oder Verzeichnisnamen suchen und gegebenenfalls angeben, in welchem Verzeichnispfad rekursiv gesucht werden soll:
Bild 4.25: Nach Datei- oder Verzeichnisnamen suchen
Die zweite Registerkarte INHALT bietet die Möglichkeiten, nach einem bestimmten Dateityp und nach enthaltenem Text zu suchen:
Bild 4.26: Nach Inhalten suchen
197
Dateien und Dateiinhalte suchen
magnum
Die dritte Registerkarte EIGENSCHAFTEN kann nach Dateien mit bestimmtem Erstellungs- bzw. Änderungsdatum oder einer bestimmten Größe oder bestimmten Dateizugriffsrechten suchen:
Bild 4.27: Nach bestimmten Eigenschaften suchen
198
5 Zugriffsschutz für Dateien und Verzeichnisse anwenden »Auf Rechte ist man nicht stolz, aber auf Vorrechte.« – Jean Paul Wenn Sie Ihre Dateien unter Linux wirkungsvoll vor Dritten schützen wollen, können Sie die Zugriffsrechte verwenden. Generell sind die Zugriffsrechte von Linux sehr einfach zu handhaben, da es grundsätzlich nur die drei Rechte Lesen, Schreiben und Ausführen gibt. Da diese nicht immer ausreichend sind, wurden vor einiger Zeit die Access Control Lists (ACLs) als Ergänzung implementiert. Darüber hinaus gibt es noch interessante Sonderzugriffsrechte, wie zum Beispiel das SetUID-Bit, die in diesem Kapitel ebenfalls ausführlich erklärt werden.
5.1 Zugriffs- und Besitzrechte Bei einem Multiuser-System wie Linux muss sichergestellt sein, dass jeder Benutzer individuellen Schutz für den Zugriff auf Dateien und Verzeichnisse hat. Diese so genannten Benutzerberechtigungen können dabei unterschieden werden in:
쮿
Superuser root, der keine Beschränkungen bezüglich der Zugriffsrechte auf Dateien und Verzeichnisse hat
쮿
Alle anderen Benutzer, für die jeweils die definierten Zugriffsrechte gelten
Die Verwaltung der Zugriffsrechte wird dadurch vereinfacht, dass Benutzer in verschiedene Gruppen zusammengefasst werden. Gruppen können unterschieden werden in:
쮿
Vom System vorgegebene Gruppen, wie zum Beispiel root, system, admin, lp usw.
쮿
Vom Superuser definierte Gruppen, wie zum Beispiel kurs, info, einkauf, verkauf usw.
Linux überprüft bei jedem Zugriff auf eine Datei oder ein Verzeichnis, ob die für diese Operation erforderlichen Rechte vorhanden sind, und erlaubt oder verweigert entsprechend den Rechten den Zugriff.
5.1.1
Grundlagen der Zugriffsberechtigungen
Benutzerkategorien Das Betriebssystem Linux verhindert mit zwei verschiedenen Methoden, dass nicht autorisierte Personen Zugang zum System und zu Daten erhalten. Dazu werden bei der Anmeldung eines Benutzers zunächst der Benutzername und das dazugehörige Passwort überprüft. Die dafür notwendigen Informationen entnimmt das standardmäßige Linux-System den Dateien /etc/passwd und /etc/shadow (vergleiche Kapitel 11). Es gibt speziell für Netzwerkumgebungen auch weitere Mechanismen, mit denen Benutzeranmeldungen überprüft werden können.
199
Zugriffs- und Besitzrechte
magnum
Wenn die Angaben zum Benutzernamen und Passwort mit denen in den beiden Dateien übereinstimmen, ist die Anmeldung des Benutzers erfolgreich. Die zweite Methode, um Daten vor unberechtigtem Zugriff zu schützen, ist die Vergabe von Zugriffsrechten. Mit ihnen lässt sich steuern, dass nur bestimmte Benutzer oder Gruppen von Benutzern auf bestimmte Dateien oder Verzeichnisse zugreifen. Mit Hilfe des Befehls ls –l können Sie die Rechte von Dateien und Verzeichnissen anzeigen. Dabei werden zuerst der Dateityp und dann die Zugriffsberechtigungen für drei verschiedene Benutzerkategorien angezeigt:
Bild 5.1: Benutzerkategorien
Der Dateityp und die drei Benutzerkategorien bedeuten:
Dateitypen Der Dateityp ist das erste Zeichen, das aufgelistet wird. Die Dateitypen unter Linux sind:
쮿
- bedeutet, dass es sich um eine normale Datei handelt: zum Beispiel entweder eine ASCII-Text-Datei oder eine Applikationsdatei oder eine binäre Datei.
쮿
d bedeutet,
dass es sich um ein Verzeichnis handelt.
쮿
l bedeutet,
dass es sich um einen symbolischen Link handelt.
쮿
b bedeutet,
dass es sich um eine blockorientierte Gerätedatei handelt.
쮿
c bedeutet,
dass es sich um eine zeichenorientierte Gerätedatei handelt.
쮿
p bedeutet, dass es sich um eine spezielle Named Pipe-Datei (FIFO) für die Interprozesskommunikation handelt.
쮿
s bedeutet, dass es sich um eine Socket-Datei für die Interprozesskommunikation handelt.
Benutzer (User) Die nächsten drei Zeichen legen die Rechte fest, die für den Besitzer der Datei gelten. Im Beispiel in der Abbildung hat die Besitzerin her sowohl Lese- (r = read) als auch Schreibrechte (w = write). Der Besitzer der Datei wird in der dritten Spalte der Ausgabe des Befehls ls –l angezeigt.
Gruppe (Group) Der zweite Abschnitt des Rechteblocks, der aus den nächsten drei Zeichen besteht, legt die Zugriffsrechte für die Gruppe fest. Für jeden Benutzer, der Mitglied in dieser Gruppe ist, gelten die definierten Rechte. In unserem Beispiel hat die Gruppe projekt1 das Leserecht für die Datei. Die Gruppe wird in der vierten Spalte der Ausgabe des Befehls ls –l angezeigt.
200
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Jeder Benutzer unter Linux ist Mitglied in mindestens einer Gruppe. Beim Anlegen eines Benutzers wird dieser automatisch einer Gruppe zugeordnet. Diese Gruppe wird als die primäre Gruppe bezeichnet. Wird der Benutzer weiteren Gruppen zugeordnet, so handelt es sich dabei um Sekundärgruppen. Das Gruppenkonzept vereinfacht die Systemverwaltung, da mehrere Benutzer, für die dieselben Rechte gelten sollen, einfach zu einer Gruppe zusammengefasst werden können. Es erleichtert auch den Mitgliedern einer Gruppe, sich gegenseitig Zugriffsrechte auf die Dateien und Verzeichnisse einzuräumen. Wenn ein Benutzer eine Datei oder ein Verzeichnis erstellt, werden diese automatisch der primären Gruppe des Benutzers zugeordnet. Es ist allerdings möglich, die Gruppenzugehörigkeit einer Datei anschließend noch zu ändern (vergleiche Abschnitt 5.1.4).
Andere (Other) Der letzte aus drei Zeichen bestehende Teil des Rechteblocks enthält die Zugriffsrechte, die für die Anderen gelten, also alle Benutzer, die weder Besitzer noch Gruppenmitglied sind. In unserem Beispiel haben diese ebenfalls Leserecht.
5.1.2
Arten von Zugriffsrechten und ihre Bedeutung
Sobald eine Datei oder ein Verzeichnis erstellt wird, weist das Betriebssystem diesem automatisch vordefinierte Standardzugriffsrechte zu. Wie Sie diese steuern können, erfahren Sie in Abschnitt 5.1.4. Dadurch ist bereits mit Erstellen der Datei ein Schutz gewährleistet. Über die Zugriffsrechte kann bestimmt werden, welche Benutzerkategorie welche Aktionen bei einer Datei oder einem Verzeichnis durchführen kann. Diese Rechte werden über einzelne Buchstaben definiert, dabei bedeutet:
쮿
r
쮿
w (write)
쮿
x
(read) – lesen – schreiben
(execute) – ausführen
Die Zugriffsrechte haben bei Dateien und Verzeichnissen unterschiedliche Bedeutung: Zugriffsrecht
Bedeutung bei einer Datei
Bedeutung bei einem Verzeichnis
r (read)
Der Inhalt der Datei darf gelesen oder kopiert werden; mögliche Befehle more, cat, less, cp.
Der Inhalt des Verzeichnisses darf aufgelistet werden; möglicher Befehl ls.
w (write)
Der Inhalt der Datei darf verändert oder gelöscht werden; mögliche Befehle vi, kedit, mv, rm.
Dateien und Unterverzeichnisse dürfen hinzugefügt oder gelöscht werden; mögliche Befehle mkdir, rmdir, touch, rm.
x (execute) Die Datei darf ausgeführt werden
Es darf in das Verzeichnis gewechselt (möglicher Befehl cd) und ein ausführliches Auflisten der Dateien und Unterverzeichnissen durchgeführt werden, wenn gleichzeitig die Leserechte gesetzt wurden (möglicher Befehl ls -l).
(nur bei Shellskripten oder ausführbaren Programmen sinnvoll).
Tab. 5.1: Zugriffsrechte bei Dateien und Verzeichnissen
201
Zugriffs- und Besitzrechte
magnum
Wenn Sie jemandem Schreibrecht auf ein Verzeichnis einräumen, dann darf dieser Benutzer alle Dateien löschen, die sich im Verzeichnis befinden, unabhängig davon, ob er für diese Dateien die erforderlichen Rechte besitzt. Im folgenden Beispiel kann die Datei prog1 von ihrem Besitzer doo gelesen, geändert und ausgeführt werden, während die Gruppe projekt3 die Datei nur lesen und ausführen und die restlichen Benutzer am System diese nur ausführen dürfen. $ ls -l prog1 -rwxr-x--x 1 doo proj3 142 Jul 17 11:24 prog1
Im nächsten Beispiel darf der Benutzer doo den Inhalt des Verzeichnisses auflisten, dort Dateien und Unterverzeichnisse anlegen und löschen, während die Gruppe proj3 nur den Inhalt des Verzeichnisses – auch auf ausführliche Weise – auflisten und dorthin verzweigen darf. Die übrigen Benutzer dürfen weder ins Verzeichnis verzweigen, noch dessen Inhalt anzeigen. $ ls -ld dir3 drwxr-x--- 7 doo proj3 512 Jul 19 10:22 dir3
Durch die Option -d wird nicht der Inhalt des Verzeichnisses, sondern das Verzeichnis projekt3 selbst aufgelistet.
5.1.3
Überprüfen der Berechtigungen
Wenn ein Zugriff auf eine Datei (oder ein Verzeichnis) erfolgt, werden die Benutzer-Identifikationsnummer (UID) und die Gruppen-Identifikationsnummer (GID) des zugreifenden Benutzers mit den für die Datei hinterlegten Nummern verglichen. Die UID bestimmt den Benutzer, der die Datei erstellt hat, also den Besitzer. Die GID legt die Gruppe von Benutzern fest, die Rechte an der Datei haben. Mit dem Befehl ls –n können Sie die UID und die GID einer Datei oder eines Verzeichnisses ausgeben: $ ls -n dat1 -rw-r--r-- 1 4220 67 742 Jul 11 9:43 dat1
Wenn ein Benutzer auf eine Datei zugreifen möchte, wird seine UID mit der UID verglichen, die für die Datei gespeichert wurde. Sind diese identisch, dann gelten für den Benutzer die dem Besitzer zugewiesenen Rechte. Unterscheiden sich die UIDs, so wird die GID, die für die Datei gespeichert wurde, mit den GIDs, zu denen der Benutzer gehört, verglichen. Stimmt eine der GruppenIds des Benutzers mit der GID der Datei überein, so gelten für ihn die Rechte, die für die Gruppe hinterlegt wurden. Unterscheiden sich auch die GIDs, dann gelten für den Benutzer die Rechte der Anderen, die für die Datei zugewiesen wurden. Die UID und die GUID werden beim Erstellen eines neuen Benutzernamens bzw. einer neuen Gruppe beim Benutzer eingetragen. Typischerweise beginnen sie bei Linux-Systemen für den ersten Benutzer mit dem Wert 500 oder 1000 und werden mit jedem weiteren Benutzer um den Wert 1 erhöht. Für interne Prozesse werden ebenfalls Benutzer vergeben, diese internen Benutzer erhalten in der Regel eine UID unterhalb von 500 bzw. 1000.
202
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Die nachfolgende Abbildung verdeutlicht nochmals die Überprüfung der Zugriffsrechte:
Bild 5.2: Überprüfung der Zugriffsberechtigungen
Die Zugriffsrechte sind disjunkt, das bedeutet, dass für den Besitzer einer Datei auch nur die Rechte des Besitzers und nicht die der Gruppe gelten. Genauso sind der Besitzer und die Gruppe aus der Kategorie ANDERE ausgeschlossen. Die Berechtigungen für Dateien und Verzeichnisse können nur vom Besitzer oder von root geändert werden.
5.1.4
Setzen von Zugriffsrechten
Der Befehl chmod Es gibt zwei verschiedene Möglichkeiten, um die Zugriffsrechte von Dateien oder Verzeichnissen zu ändern. Für beide Methoden wird der Befehl chmod verwendet. Die Syntax des Befehls lautet: $ chmod [-option] zugriffsrechte dateiname(n)
oder: $ chmod [-option] --reference=ref-datei dateiname(n)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-c oder --changes
Gibt eine Meldung aus, wenn eine Änderung durch den Befehl durchgeführt wurde
-f oder --silent oder --quiet
Die meisten Fehlermeldungen werden unterdrückt.
-R oder --recursive
Rekursives Ändern der Zugriffsrechte auch für alle Unterverzeichnisse und die darin enthaltenen Dateien
-v oder --verbose
Ausführliche Ausgabe für jede verarbeitete Datei
--reference=ref-datei
Anstelle von Werten für die Zugriffsrechte werden die Zugriffsrechte einer Referenzdatei verwendet.
Tab. 5.2: Optionen des Befehls chmod
203
Zugriffs- und Besitzrechte
magnum
Zum Beispiel ändert der Befehl $ chmod –R 755 projekt1
nicht nur die Zugriffsrechte für das Verzeichnis projekt1, sondern auch für alle in diesem Verzeichnis enthaltenen Verzeichnisse und Unterverzeichnisse rekursiv auf den Wert 755 (alle Rechte für den Besitzer, Lesen und Ausführen für die Gruppe und die Anderen). Beachten Sie, dass das Schreibrecht bei Verzeichnissen sehr weitgehende Rechte einräumt und die Rechte auf Dateien generell eine etwas andere Bedeutung haben als die gleichnamigen Rechte auf ein Verzeichnis. Das direkte Setzen von Zugriffsrechten auf Verzeichnisse und Dateien zugleich kann deshalb oft zu unerwarteten Ergebnissen führen.
Symbolische Methode Die symbolische Methode verwendet eine Kombination aus Buchstaben und Symbolen, um Rechte für eine Benutzerkategorie zu verändern. Es wird dabei angegeben, für welche Benutzerkategorie mit welcher Aktion welche Zugriffsrechte verändert werden. Mit dieser Methode werden die Zugriffsrechte in der Regel relativ gesetzt. Es gibt aber auch die Möglichkeit, diese mit Hilfe der Aktion »=« absolut zuzuweisen. Es gibt folgende Möglichkeiten, um die Zugriffsrechte mit der symbolischen Methode zu verändern:
Bild 5.3: Zugriffsrechte mit der symbolischen Methode zuweisen
Aus den drei Spalten werden die notwendigen Angaben entnommen, um Rechte zu ändern. Dabei ist es möglich, gleichzeitig verschiedene Rechte zu ändern. Die Kategorie »a« kann verwendet werden, um allen Kategorien gemeinsam ein Recht zuzuweisen oder zu entfernen. Im nachfolgenden Beispiel werden der Gruppe proj3 die Schreibrechte für die Datei prog1 zugewiesen: $ ls -l prog1 -rwxr-x--x 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod g+w prog1 $ ls -l prog1 -rwxrwx--x 1 doo proj3 142 Jul 17 11:24 prog1
Im nächsten Beispiel wird das Ausführrecht für alle Benutzerkategorien entfernt und den Anderen ein Leserecht eingeräumt:
204
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
$ ls -l prog1 -rwxrwx--x 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod a-x,o+r prog1 $ ls -l prog1 -rw-rw-r-- 1 doo proj3 142 Jul 17 11:24 prog1
Im letzten Beispiel werden der Gruppe und den Anderen alle Rechte genommen: $ ls -l prog1 -rw-rw-r-- 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod g-rw,o-r prog1 $ ls -l prog1 -rw------- 1 doo proj3 142 Jul 17 11:24 prog1
Wenn Sie mehrere Rechte gleichzeitig ändern, achten Sie darauf, dass zwischen den einzelnen Aufzählungen kein Leerzeichen steht.
Oktalmethode Die Oktalmethode bietet die Möglichkeit, die Zugriffsrechte numerisch zu ändern. Jedem Zugriffsrecht ist eine Oktalzahl zugeordnet, die anstelle der symbolischen Methode verwendet werden kann. Mit der Oktalmethode werden die Rechte immer absolut zugewiesen, das heißt, es ist nicht möglich, einzelne Berechtigungen explizit zu ändern, sondern immer nur alle Rechte für alle Kategorien absolut. Die Rechte der Benutzerkategorien werden mit dreistelligen Oktalzahlen definiert, wobei die erste Zahl für die Zugriffsrechte des Benutzers, die zweite für die der Gruppe und die dritte für die der Anderen steht. Die Oktalzahlen für die Zugriffsrechte lauten: Zugriffsrecht
Kürzel
Oktalzahl
4
w
Leserecht
2
r
Schreibrecht
1
x
Ausführrecht
Tab. 5.3: Zugriffsrechte in Oktalziffern definiert
Wenn Sie also nach der Oktalmethode zum Beispiel das Leserecht setzen möchten, verwenden Sie die Ziffer 2. Möchten Sie das Ausführ- und Leserecht zuweisen, dann addieren Sie die oktalen Werte für beide Rechte zusammen, verwenden Sie also die 3 usw. Die nachfolgende Tabelle soll diese Kombination nochmals verdeutlichen: Wert
Zusammensetzung
Rechte
Bedeutung
0
0+0+0
---
Kein Zugriffsrecht
1
0+0+1
--x
Ausführrecht
Tab. 5.4: Zusammensetzung der Zugriffsrechte
205
magnum
Zugriffs- und Besitzrechte
Wert
Zusammensetzung
Rechte
Bedeutung
2
0+2+0
-w-
Schreibrecht
3
0+2+1
-wx
Schreib- und Ausführrecht
4
4+0+0
r--
Leserecht
5
4+0+1
r-x
Lese- und Ausführrecht
6
4+2+0
rw-
Lese- und Schreibrecht
7
4+2+1
rwx
Alle Rechte
Tab. 5.4: Zusammensetzung der Zugriffsrechte (Forts.)
Die Rechte für die drei Benutzerkategorien werden aus diesen Zahlen zusammengefügt, zum Beispiel bedeutet 777 Lese-, Schreib- und Ausführrecht für alle drei Benutzerkategorien, 644 Lese- und Schreibrecht für den Besitzer und Leserecht für die Gruppe und die Anderen. Im nachfolgenden Beispiel werden dem Besitzer alle und der Gruppe und den Anderen Leserechte für die Datei prog1 zugewiesen: $ ls -l prog1 -rw------- 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod 744 prog1 $ ls -l prog1 -rwxr--r-- 1 doo proj3 142 Jul 17 11:24 prog1
Im nächsten Beispiel erhalten alle drei Benutzerkategorien das Lese- und Ausführrecht: $ ls -l prog1 -rwxr--r-- 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod 555 prog1 $ ls -l prog1 -r-xr-xr-x 1 doo proj3 142 Jul 17 11:24 prog1
Im letzten Beispiel werden dem Besitzer das Lese- und Schreibrecht und der Gruppe das Leserecht zugewiesen. Die Anderen erhalten kein Zugriffsrecht auf die Datei: $ ls -l prog1 -r-xr-xr-x 1 doo proj3 142 Jul 17 11:24 prog1 $ chmod 640 prog1 $ ls -l prog1 -rw-r----- 1 doo proj3 142 Jul 17 11:24 prog1
Wenn nur eine Zahl beim Befehl chmod verwendet wird, dann gilt diese für die Benutzergruppe Andere. Daher entspricht der Befehl $ chmod 7 prog1 $ ls -l prog1 -------rwx 1 doo proj3 142 Jul 17 11:24 prog1
dem Befehl $ chmod 007 prog1
206
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
In diesem Fall haben die Anderen alle Zugriffsrechte für die Datei, die Gruppe und der Besitzer aber kein Zugriffsrecht. Sollte der Besitzer oder die Gruppe jedoch Schreibrecht für das Verzeichnis haben, in dem sich die Datei befindet, dann ist es trotzdem möglich, die Datei zu löschen oder zu verschieben. Es ist ihm aber nicht mehr möglich, den Dateiinhalt anzuzeigen oder die Datei zu kopieren. Diese Einstellung sollte natürlich vermieden werden. Gerade das Schreibrecht für Andere auf Dateien und Verzeichnisse sollte möglichst nicht vergeben werden, da es immer ein Sicherheitsrisiko darstellt, vor allem wenn es fremde oder sogar ungebetene Benutzer im System gibt.
Standardzugriffsrechte mit umask setzen Wenn ein Benutzer oder ein Prozess eine neue Datei oder ein neues Verzeichnis erzeugt, dann erhalten diese die Standardzugriffsrechte. Diese Standardeinstellung ist in der Shell fest einprogrammiert, kann aber mit Hilfe des Filters umask verändert und angezeigt werden. $ umask [-option] [zugriffsrechte]
Der Befehl kennt folgende Optionen: Option
Bedeutung
-S
Die Zugriffsberechtigungen werden nicht als Oktalzahl, sondern in der symbolischen Notation ausgegeben.
-p
Wird diese Option verwendet und die Zugriffsrechte weggelassen, erfolgt die Ausgabe in einer Form, die wiederum als Eingabe verwendet werden kann.
Tab. 5.5: Optionen des Befehls umask
Verwenden Sie diesen Befehl ohne eine Option, erhalten Sie den aktuellen Filter: $ umask 022
Der Wert wird je nach Shell mit führenden oder ohne führende Null(en) ausgegeben. So erhalten Sie in der Bourne-Shell zum Beispiel 0022, in der Korn-Shell 022 und in der C-Shell 22. Die erste Zahl definiert, welche Standardzugriffsberechtigungen der Besitzer hat, die zweite legt die der Gruppe und die letzte die Standardrechte für die Anderen fest. Die Voreinstellung in Linux lautet in der Regel 022. Die Definition des Filters erfolgt entweder systemweit durch einen Eintrag in der Datei /etc/login.defs oder in der Datei /etc/profile (vergleiche Kapitel 11). Jeder Benutzer kann allerdings diesen Wert individuell für sich in einer seiner Initialisierungsdateien einstellen, wie zum Beispiel in $HOME/.profile. Der Filter umask gibt an, welche Rechte einer Datei oder einem Verzeichnis nicht zugewiesen werden. Standardmäßig werden für eine neue erstellte Datei unter Linux die Berechtigungen 666 (rw-rw-rw-) und für ein Verzeichnis 777 (rwxrwxrwx) vergeben. Von diesen Standardvorgaben werden die durch umask definierten Berechti-
207
magnum
Zugriffs- und Besitzrechte
gungen weggenommen. Auf diese Weise erhalten neu angelegte Dateien und Verzeichnisse die durch den Systemadministrator oder Benutzer gewünschten Zugriffsrechte. Der Filter umask mit dem Wert 022 hat folgende Auswirkungen auf eine Datei: Symbolische Schreibweise
Oktale Bedeutung Schreibweise
rw-rw-rw-
666
Ursprünglich vom System vorgegebene Zugriffsrechte
----w--w-
022
Vom Filter umask nicht zugelassene Zugriffsrechte
rw-r--r--
644
Standardzugriffsrechte für eine neu erstellte Datei
Tab. 5.6: Standardzugriffsrechte für eine neu erstellte Datei
Der Besitzer besitzt für die Datei das Lese- und Schreibrecht, während die Gruppe und die Anderen nur das Leserecht besitzen. Obwohl der Wert von umask für den Besitzer 0 lautet, werden trotzdem für eine Datei keine Ausführrechte vergeben. Einerseits sind ausführbare Programme stets ein gewisses Sicherheitsrisiko in einem System und andererseits ist in der Regel nicht bereits vorher bekannt, ob eine Datei ausführbar sein wird oder nicht, daher wird keine Datei von vornherein auf ausführbar gesetzt. Wenn ein Benutzer ein Shellskript schreibt, muss er daher hinterher mit dem Befehl $ chmod u+x testscript1
die Ausführrechte für sich (und gegebenenfalls für die Gruppe und die Anderen) setzen. Der Filter umask mit dem Wert 022 hat folgende Auswirkungen auf ein Verzeichnis: Symbolische Schreibweise
Oktale Schreibweise
Bedeutung
rwxrwxrwx
777
Ursprünglich vom System vorgegebene Zugriffsrechte
----w--w-
022
Vom Filter umask nicht zugelassene Zugriffsrechte
rwxr-xr-x
755
Standardzugriffsrechte für ein neu erstelltes Verzeichnis
Tab. 5.7: Standardzugriffsrechte für ein neu erstelltes Verzeichnis
Der Besitzer besitzt für das Verzeichnis das Lese-, Schreib- und Ausführrecht, während die Gruppe und die Anderen nur das Lese- und Ausführrecht besitzen. Sie können den Filter verwenden:
umask
verändern, indem Sie den Befehl mit einem Oktalwert
$ umask 027 $ umask 027
Wenn Sie diesen Befehl an der Befehlszeile eingeben, ist er nur in der aktuellen Shell und ihren Subshells gültig. Das heißt, wenn Sie ein weiteres Terminalfenster öffnen oder sich abmelden und erneut anmelden, dann wird wieder der Wert für
208
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
umask verwendet,
der in einer der oben genannten Dateien definiert wurde. Soll der von Ihnen neu festgelegte Wert dauerhaft erhalten bleiben, muss er in einer dieser Dateien definiert werden.
Das Ändern des Werts auf kung:
027
hat auf eine neu erstellte Datei folgende Auswir-
Symbolische Schreibweise
Oktale Schreibweise
Bedeutung
rw-rw-rw-
666
Ursprünglich vom System vorgegebene Zugriffsrechte
----w-rwx
027
Vom Filter umask nicht zugelassene Zugriffsrechte
rw-r-----
640
Standardzugriffsrechte für eine neu erstellte Datei
Tab. 5.8: Standardzugriffsrechte für eine neu erstellte Datei
Der Besitzer besitzt für die Datei das Lese- und Schreibrecht, während die Gruppe nur das Leserecht besitzt. Die Anderen haben keinerlei Berechtigungen. Das Ändern des Werts auf 027 hat auf ein neu erstelltes Verzeichnis folgende Auswirkung: Symbolische Schreibweise
Oktale Schreibweise
Bedeutung
rwxrwxrwx
777
Ursprünglich vom System vorgegebene Zugriffsrechte
----w-rwx
027
Vom Filter umask nicht zugelassene Zugriffsrechte
rwxr-x---
750
Standardzugriffsrechte für ein neu erstelltes Verzeichnis
Tab. 5.9: Standardzugriffsrechte für ein neu erstelltes Verzeichnis
Der Besitzer besitzt für das Verzeichnis das Lese-, Schreib- und Ausführrecht, während die Gruppe nur das Lese- und Ausführrecht besitzt. Die Anderen haben keinerlei Berechtigungen. In der nachstehenden Tabelle finden Sie weitere Beispiele für mögliche Werte von umask:
Wert
Dateirechte
Verzeichnisrechte
Bedeutung
777
----------
d---------
Keine Zugriffsrechte für alle drei Benutzerkategorien – nicht sehr sinnvoll, auch der Besitzer kann seine Dateien nicht einmal ansehen.
277
-r--------
dr-x------
Diese Einstellung kann verhindern, dass der Besitzer ohne vorherigen Befehl chmod seine Dateien nicht verändern kann; vorausgesetzt, er hat nicht das Schreibrecht für das übergeordnete Verzeichnis.
077
-rw-------
drwx------
Der Besitzer hat alle Rechte, die Gruppe und die Anderen haben keine Rechte.
Tab. 5.10: Beispielwerte für umask
209
magnum
Spezielle Zugriffsrechte
Wert
Dateirechte
Verzeichnisrechte
Bedeutung
027
-rw-r-----
drwxr-x---
Der Besitzer hat Lese- und Schreibrecht für die Datei, alle Rechte für das Verzeichnis. Die Gruppe hat das Leserecht für die Datei und für das Verzeichnis auch das Ausführrecht. Die Anderen haben keine Rechte.
022
-rw-r—r--
drwxr-xr-x
Standardeinstellung: Der Besitzer hat Lese- und Schreibrecht für die Datei, alle Rechte für das Verzeichnis. Die Gruppe und die Anderen haben das Leserecht für die Datei und für das Verzeichnis auch das Ausführrecht.
002
-rw-rw-r--
drwxrwxr-x
Der Besitzer und die Gruppe haben Lese- und Schreibrecht für die Datei, alle Rechte für das Verzeichnis. Die Anderen haben das Leserecht für die Datei und für das Verzeichnis auch das Ausführrecht.
007
-rw-rw----
drwxrwx---
Der Besitzer und die Gruppe haben Lese- und Schreibrecht für die Datei, alle Rechte für das Verzeichnis. Die Anderen haben keine Rechte.
000
-rw-rw-rw-
drwxrwxrxw
Alle haben Lese- und Schreibrecht für die Datei und alle Rechte für das Verzeichnis. Eine sehr gefährliche Einstellung!
Tab. 5.10: Beispielwerte für umask (Forts.)
5.2 Spezielle Zugriffsrechte Neben den bereits vorgestellten Zugriffsrechten Lesen, Schreiben und Ausführen gibt es weitere spezielle Zugriffsrechte. Dazu gehören:
쮿
das SetUID-Zugriffsrecht für die vorübergehende Zuteilung einer anderen Benutzerkennung
쮿
das SetGID-Zugriffsrecht für die vorübergehende Zuteilung einer anderen Gruppenkennung
쮿
das Mandatory Locking-Zugriffsrecht für die obligatorische Gruppenzuweisung und Dateisperre für einfache Textdateien
쮿
das Sticky Bit-Zugriffsrecht für das dauerhafte Laden eines Programms in den Hauptspeicher und für die Steuerung des Löschens in gemeinsamen Verzeichnissen
5.2.1
Das SetUID-Zugriffsrecht
Wenn das SetUID-Bit (Set User Identification Bit) gesetzt ist, dann wird einem von einem beliebigen Benutzer gestarteten Programm vorübergehend die Identität des tatsächlichen Besitzers zugewiesen. Dadurch erhält der Anwender für die Zeit der Ausführung des Programms die Zugriffsrechte des Besitzers. Das SetUID-Bit kann mit Hilfe des Befehls ls –l angezeigt werden: $ ls –l /bin/su -r-sr-xr-x 1 root root 21112 May 1 21:24 /bin/su
210
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Anstelle des Ausführrechts »x« für den Besitzer wird ein »s« angezeigt. Steht an dieser Stelle stattdessen ein großgeschriebenes »S«, dann wurde nur das SetUIDZugriffsrecht, aber nicht das Ausführrecht gesetzt, wodurch das Programm nicht ausführbar ist. Ein interessantes Beispiel für ein Programm mit gesetztem SetUID-Bit ist das Programm passwd, mit dessen Hilfe auch ein einfacher Anwender sein Passwort ändern kann. Dabei schreibt das Programm das neue Passwort in die Datei /etc/shadow zurück, die der Benutzer normalerweise nicht einmal lesen darf: $ ls –l /usr/bin/passwd /etc/shadow -rwsr-xr-x 3 root shadow 77204 May 1 21:24 /usr/bin/passwd -rw-r----- 1 root shadow 587 May 1 21:24 /etc/shadow
Während der Ausführung des Befehls passwd werden die Zugriffsrechte von root verwendet, da das SetUID-Bit gesetzt wurde. Aus Sicherheitsgründen kann das SetUID-Bit nur für binäre Programme und nicht für Shellskripte definiert werden. Wenn das Bit für Verzeichnisse oder normale Dateien gesetzt wird, hat es keinerlei Bedeutung. Da Programme mit SetUIDZugriffsrecht auch ein gewisses Sicherheitsrisiko bedeuten, sollte deren Verwendung eingeschränkt werden. Das SetUID-Bit kann entweder von root oder vom Besitzer mit Hilfe des Befehls chmod gesetzt werden. Dies ist mit der symbolischen oder der Oktalmethode möglich:
$ chmod u+s binärdatei
oder $ chmod 4555 binärdatei
Sie können nach Programmen mit SetUID-Bit zum Beispiel mit dem Befehl find
/
-perm –4000 suchen.
5.2.2
Das SetGID-Zugriffsrecht
Wenn das SetGID-Bit (Set Group Identification Bit) gesetzt ist, dann wird einem von einem beliebigen Benutzer gestarteten Programm vorübergehend die Gruppenzugehörigkeit der tatsächlichen Gruppe zugewiesen. Dadurch erhält der Anwender für die Zeit der Ausführung des Programms die Zugriffsrechte der Gruppe. Das SetGID-Bit kann mit Hilfe des Befehls ls –l angezeigt werden: $ ls –l /usr/bin/write -r-xr-sr-x 1 root tty 8280 May 1 21:24 /usr/bin/write
Anstelle des Ausführrechts »x« für die Gruppe wird ein »s« angezeigt. Steht an dieser Stelle stattdessen ein »l«, dann wurde nur das SetGID-Zugriffsrecht, aber nicht das Ausführrecht gesetzt. Das bedeutet, dass das Mandatory Locking-Zugriffsrecht für die obligatorische Gruppenzuweisung und Dateisperre gesetzt wurde. Dieses Zugriffsrecht wird im nächsten Abschnitt genauer erläutert. Mit dem Befehl write kann ein Benutzer einem anderen Benutzer eine Nachricht auf dessen Terminal schreiben. Mit den Rechten der Gruppe tty ist das möglich.
211
Spezielle Zugriffsrechte
magnum
Das SetUID-Bit kann entweder von root oder vom Besitzer mit Hilfe des Befehls chmod gesetzt werden. Dies ist mit der symbolischen oder der Oktalmethode möglich: $ chmod g+s binärdatei
oder $ chmod 2555 binärdatei
Aus Sicherheitsgründen kann auch das SetGID-Bit nur für binäre Programme und nicht für Shellskripte definiert werden. Wenn das Bit für Verzeichnisse gesetzt wird, hat es eine andere Bedeutung: Es findet dann eine obligatorische Gruppenzuweisung statt.
5.2.3
Das Zugriffsrecht für »Shared Directories« oder »Mandatory Locking-Bit«
Dieses Zugriffsrecht kann für ein Verzeichnis oder eine Datei gesetzt werden. Wird einem Verzeichnis das Mandatory Locking-Bit zugewiesen, das heißt, anstelle des Ausführrechts »x« für die Gruppe wird ein »s« angezeigt, dann wird die Gruppenzugehörigkeit dieses Verzeichnisses für alle darin neu erstellten Dateien und Verzeichnisse vererbt. Das heißt, eine darin neu erzeugte Datei oder ein Verzeichnis erhält nicht mehr die primäre Gruppenzugehörigkeit des Besitzers, sondern die des Verzeichnisses mit dem Mandatory Locking-Zugriffsrecht. Das bietet sich vor allem bei gemeinsam genutzten Verzeichnissen an, deren Benutzer zu verschiedenen primären Gruppen gehören, aber in diesem Verzeichnis sich gegenseitig über eine gemeinsame Gruppe bestimmte Gruppenzugriffsrechte einräumen möchten. $ ls –ld bau_proj drwxrwsr-x 5 braun bau 512 Jun 17 12:12 bau_proj $ id uid=324(olli) gid=82(projekt5) groups=82(projekt5),75(bau),1(other) $ touch bau_proj/proj33 $ ls –l bau_proj/proj33 -rw-r--r-- 1 olli bau 0 Jul 15 18:42 proj33
Die Gruppe bau hat Zugriffsrechte für das Verzeichnis bau_proj. Der Benutzer olli, dessen primäre Gruppe projekt5 ist, legt eine neue Datei proj33 in diesem Verzeichnis an. Die Gruppenzugehörigkeit der neuen Datei wird vom Verzeichnis vererbt und lautet bau. Das Mandatory Locking-Bit für ein Verzeichnis mit obligatorischer Gruppenzuweisung kann wiederum mit der symbolischen oder oktalen Methode zugewiesen werden. Dabei ist es möglich, den Befehl $ chmod g+s verzeichnis
zu verwenden, oder den Befehl: $ chmod 2555 verzeichnis
212
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Wird einer Textdatei das Mandatory Locking-Bit zugewiesen, das heißt, anstelle des Ausführrechts »x« für die Gruppe wird ein »S« angezeigt, dann werden alle Zugriffe auf diese Datei vom System überprüft, unmittelbar bevor die Eingabeoder Ausgabeoperation durchgeführt wird. Ist das Mandatory Locking-Bit für eine Datei aktiv, weil sie von einem Prozess in Bearbeitung ist, dann bleibt sie für andere Prozesse während der Dauer des Zugriffs gesperrt. $ ls –l lockdat -r-xr-S--- 1 root ther 1228 Jun 21 8:22 lockdat
Das Mandatory Locking-Bit für eine Textdatei wird wie beim Verzeichnis zugewiesen, allerdings wird das Ausführrecht nicht gesetzt, zum Beispiel chmod 2600 oder chmod 2644. Das Mandatory Locking-Bit für eine Textdatei ist in der Praxis nicht üblich.
5.2.4
Das Sticky Bit-Zugriffsrecht
Auch dieses Zugriffsrecht kann für ein Verzeichnis oder eine Datei, das heißt ein Programm, gesetzt werden. Bei einem Programm sorgt das Betriebssystem dafür, dass dieses nach seiner Beendigung nicht wie üblich wieder aus dem Hauptspeicher entfernt wird. Vielmehr verbleibt es darin, bis der Rechner heruntergefahren wird. Diese Funktion wird heute in der Regel nicht mehr genutzt, war aber in früheren Zeiten wichtig, um ein Programm sofort wieder verfügbar zu haben, auch nachdem es schon beendet war. Das Sticky Bit kann mit Hilfe des Befehls ls –l angezeigt werden: $ ls –l sticky_prog -rwxr-xr-t 1 root other 2188 Jul 2 22:12 sticky_prog
Anstelle des Ausführrechts »x« für die Anderen wird ein »t« angezeigt. Steht an dieser Stelle stattdessen ein »T«, dann wurde nur das Sticky Bit-Zugriffsrecht, aber nicht das Ausführrecht gesetzt, wodurch die Ausführbarkeit des Programms fehlt. Auch das Sticky Bit wird mit Hilfe des Befehls chmod gesetzt: $ chmod 1555 binärdatei
Bei einem Verzeichnis regelt das Sticky Bit das Recht, Dateien oder Unterverzeichnisse darin zu löschen. Wenn alle Benutzerkategorien für ein Verzeichnis, wie zum Beispiel das Verzeichnis /tmp, Lese-, Schreib- und Ausführrecht haben, dann könnten sich die Benutzer gegenseitig die darin erstellten Dateien und Unterverzeichnisse löschen. Um das zu verhindern, wird das Sticky Bit gesetzt. Damit dürfen nur noch root, der Besitzer der zu löschenden Datei oder des zu löschenden Verzeichnisses und der Besitzer des Verzeichnisses den Inhalt dieses Verzeichnisses löschen: $ ls –ld /tmp drwxrwxrwt 5 root root 512 Jul 22 12:21 /tmp
Anstelle des Ausführrechts »x« für die Anderen wird ein »t« angezeigt. Steht an dieser Stelle stattdessen ein »T«, dann wurde nur das Sticky Bit-Zugriffsrecht, aber nicht das Ausführrecht gesetzt.
213
magnum
Spezielle Zugriffsrechte
$ id uid=324(olli) gid=82(projekt5) groups=82(projekt5),75(bau),1(other) $ cd /tmp $ touch testdatei $ ls -l testdatei -rw-r--r-- 1 olli projekt5 0 Mar 12 11:03 testdatei $ su - her $ id uid=325(her) gid=73(projekt3) groups=73(projekt3),1(other) $ cd /tmp $ rm testdatei rm: remove regular file testdatei (override protection)? Y rm: testdatei not removed: Permission denied
Hier versuchte die Benutzerin her eine Datei testdatei des Benutzers olli im Verzeichnis /tmp zu löschen. Dies gelingt ihr nicht, da sie weder root noch der Besitzer der Datei noch des Verzeichnisses ist. Die speziellen Zugriffsrechte, wie zum Beispiel SetUID- und SetGID-Bit, können auch gemeinsam gesetzt werden, dazu werden einfach ihre Oktalwerte aufaddiert und dann der Befehl chmod 6555 programm ausgeführt. Die nachfolgende Tabelle fasst die speziellen Rechte nochmals zusammen: Kategorie Spezielle Bits
Verzeichnis
Datei
Besitzer (User)
r-sr-xr-x
–
SetUID-Bit: Ausführung des Programms mit Zugriffsrechten des Besitzers; Setzen mit chmod 4555 programm
Gruppe (Group)
r-xr-sr-x
–
SetGID-Bit: Ausführung des Programms mit Zugriffsrechten der Gruppe; Setzen mit chmod 2555 programm
Gruppe (Group)
r-xr-sr-x oder
Mandatory Locking-Bit: obligatorische Gruppenzuweisung; Setzen zum Beispiel mit chmod 2555 verzeichnis
Mandatory Locking-Bit: obligatorische Dateisperre; Setzen zum Beispiel mit chmod 2644 datei
rw-r-Sr--
Andere (Other)
rwxrwxrwt
Sticky Bit: Programm verbleibt dauerSticky Bit: schränkt haft im RAM; Setzen mit chmod 1555 Löschrechte in Verzeichnissen ein; Setzen mit chmod programm 1777 verzeichnis
Tab. 5.11: Übersicht über die speziellen Bits in Linux
214
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
5.3 Datei- und Gruppenbesitz ändern In diesem Abschnitt werden unter anderem Befehle vorgestellt, mit denen Sie eine Datei oder ein Verzeichnis einem anderen Besitzer oder einer anderen Gruppe zuweisen können.
5.3.1
Der Befehl chattr
Außer dem Befehl chmod, den Sie bereits in Abschnitt 5.1.4 kennen gelernt haben, um die Zugriffsrechte zu ändern, gibt es noch den Befehl chattr, um erweiterte Dateiattribute in einem Linux-Dateisystem vom Typ ext2fs oder ext3fs zu ändern. $ chattr [-option(en)] datei(en)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-R
Rekursives Ändern der Zugriffsrechte auch für alle Unterverzeichnisse und die darin enthaltenen Dateien. Symbolische Links werden dabei nicht verfolgt.
-p
Ausführliche Ausgabe für jede verarbeitete Datei sowie Ausgabe der Programmversion
Tab. 5.12: Optionen des Befehls chattr
Das Format der symbolischen Methode ist +-=[ASacDdIijsTtu]. Dabei fügt der Operator »+« die ausgewählten Attribute den vorhandenen Dateiattributen hinzu, der Operator »-« entfernt diese und der Operator »=« setzt die ausgewählten Attribute absolut. Die möglichen Attribute bedeuten: Attribut
Bedeutung
a
Daten werden an die Datei nur angehängt (append only)
A
Keine Aktualisierung der Zugriffszeit (Atime)
c
Automatische Komprimierung der Datei; diese Option wird erst ab Kernelversion 2.5.19 unterstützt (compressed) – aber im Moment (Stand 10/2005) immer noch nicht ausgewertet
d
Bei einer Datensicherung mit dem Befehl dump wird die Datei nicht berücksichtigt.
D
Synchronisierung der Aktualisierung der Verzeichnisse
i
Keine Veränderungsmöglichkeit der Datei (immutable)
j
Eine Datei mit diesem Attribut schreibt alle ihre Daten in die Journaling-Datei des Dateisystems ext3fs, bevor diese in die Datei geschrieben werden, wenn das Dateisystem mit der Option »data=ordered« oder »data=writeback« gemountet wurde (vergleiche Kapitel 17). Nur der Superuser kann dieses Attribut setzen oder löschen.
s
Sicheres Löschen der Datei, das heißt, ihre Daten werden mit zufällig erzeugten Daten überschrieben (secure deletion)
Tab. 5.13: Attribute des Befehls chattr
215
Datei- und Gruppenbesitz ändern
magnum
Attribut
Bedeutung
S
Synchronisierung der Aktualisierungen mit den Daten der Festplatte
u
Ein Löschen der Datei ist nicht möglich (undeletable). Diese Option ist vorgesehen, um ein Wiederherstellen nach dem Löschen zu ermöglichen.
Tab. 5.13: Attribute des Befehls chattr (Forts.)
Zum Beispiel: $ chattr -V +A dat99 chattr 1.34 (25-Jul-2003) Flags of dat99 set as -------A-----
Mit diesem Befehl wurde eingestellt, dass bei einem Zugriff auf die Datei (zum Beispiel durch Lesen) die bisherige Zugriffszeit nicht aktualisiert werden soll. Das kann sinnvoll sein, wenn gewünscht wird, dass weniger Festplattenaktivität stattfinden soll.
5.3.2
Der Befehl chfn
Mit diesem Befehl können die Informationen in der Datei /etc/passwd (vergleiche Kapitel 11) geändert werden, die sich im Kommentarfeld befinden, das auch GECOS-Feld genannt wird. Die Syntax des Befehls lautet: $ chfn [-Option(en)] [benutzername]
Ohne Optionen werden die Änderungen interaktiv abgefragt. Um das komplette Kommentarfeld zu löschen, kann none verwendet werden. Der Befehl kennt zum Beispiel folgende Optionen. Die Optionen können sich aber von Distribution zu Distribution unterscheiden, daher sollten Sie sich bei Ihrer Distribution auf die Man Pages beziehen. Option
Bedeutung
-f name
Ändern des vollständigen Namens
-h tel-privat
Ändern der privaten Telefonnummer
-q oder --quiet
Keine Meldungen ausgeben
Tab. 5.14: Optionen des Befehls chfn
Im ersten Beispiel ändert root das Kommentarfeld der Benutzerin her: # grep Ute /etc/passwd her:x:500:100:Ute:/home/her:/bin/bash # chfn -f "Ute Hertzog" her Changing finger information for her. Finger information changed. # grep Ute /etc/passwd her:x:500:100:Ute Hertzog:/home/her:/bin/bash
216
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
In diesem Beispiel wird zunächst mit dem Suchbefehl grep (vergleiche Abschnitt 4.4.2) die Zeile aus der Datei /etc/passwd ausgelesen, die den Eintrag für die Benutzerin her enthält. Ihr Kommentarfeld lautet zunächst »Ute«. Mit Hilfe des Befehls chfn wird das Kommentarfeld auf »Ute Hertzog« umgeändert. Im zweiten Beispiel ändert die Benutzerin her den Eintrag für ihre geschäftliche Telefonnummer: $ chfn -p 99999 Andere Finger-Informationen für her. Password: Finger-Informationen geändert. $ grep Ute /etc/passwd her:x:500:100:Ute Hertzog,,99999:/home/her:/bin/bash
5.3.3
Der Befehl chown
Mit diesem Befehl kann der Besitzer einer Datei oder eines Verzeichnisses geändert werden. Die Syntax des Befehls lautet: $ chown [-Option(en)] besitzer datei(en)
Der neue Besitzer kann entweder mit seinem Benutzernamen oder seiner UID angegeben werden. Als Argument können Sie entweder einen oder mehrere Dateinamen angeben. Der Befehl kennt folgende Optionen: Option
Bedeutung
-c oder --changes
Gibt eine Meldung aus, wenn eine Änderung durch den Befehl durchgeführt wurde
--dereference
Anstatt des symbolischen Links selbst wird die Originaldatei verändert
-h oder --noderefence Der symbolische Link wird verändert und nicht die Originaldatei. -f oder --silent oder --quiet
Die meisten Fehlermeldungen werden unterdrückt.
-from=akt-besitzer:
Der Besitzer und/oder die Gruppe können nur geändert werden, wenn der aktuelle Besitzer und/oder die aktuelle Gruppe mit den angegebenen Besitzer bzw. der angegebenen Gruppe übereinstimmen. Es muss nur eine Angabe gemacht werden; in diesem Fall muss keine Übereinstimmung mit dem nicht spezifizierten Teil vorliegen.
-R oder --recursive
Rekursives Ändern von Besitzer und/oder Gruppe auch für alle Unterverzeichnisse und den darin enthaltenen Dateien
-v oder --verbose
Ausführliche Ausgabe für jede verarbeitete Datei
--reference=ref-datei
Anstelle von Werten für Eigentümer und/oder Gruppe werden die entsprechenden Werte der Referenzdatei verwendet.
akt-gruppe
Tab. 5.15: Optionen des Befehls chown
217
magnum
Datei- und Gruppenbesitz ändern
Wenn Sie den Besitz zum Beispiel rekursiv für ein ganzes Verzeichnis einschließlich der darunter liegenden Dateien und Unterverzeichnisse ändern möchten, dann geben Sie diesen Befehl ein: $ ls –ld testverz drwxr-xr-x 5 her projekt3 512 Jun 22 20:17 testverz $ chown –R olli testverz $ ls –ld testverz drwxr-xr-x 5 olli projekt3 512 Jun 22 20:17 testverz
Dem neuen Besitzer gehört nicht nur das Verzeichnis testverz, sondern auch alle Dateien und Unterverzeichnisse, die in diesem Verzeichnis liegen. Mit dem Befehl ändern:
chown
können Sie auch gleichzeitig den Besitzer und die Gruppe
$ ls –l projekt99 -rw-r--r-- 1 her projekt3 $ chown olli:projekt5 projekt99 $ ls –l projekt99 -rw-r--r-- 1 olli projekt5
745
Jun 29 12:27
projekt99
745
Jun 29 12:27
projekt99
Standardmäßig kann nur root den Befehl chown ausführen. Es ist allerdings möglich, die Gruppe einer Datei mit diesem Befehl zu ändern, wenn der ändernde Benutzer Mitglied der Gruppe der Datei ist.
5.3.4
Der Befehl chgrp
Mit diesem Befehl können Sie die zu einer Datei oder einem Verzeichnis gehörende Gruppe ändern. Die Syntax des Befehls lautet: $ chgrp [-option(en)] gruppe datei(en)
Der Befehl kennt folgende Optionen: Option
Bedeutung
-c oder --changes
Gibt eine Meldung aus, wenn eine Änderung durch den Befehl durchgeführt wurde
--dereference
Anstatt des symbolischen Links selbst wird die Originaldatei verändert.
-h oder --noderefence
Der symbolische Link wird verändert und nicht die Originaldatei. Diese Option steht nur auf Systemen zur Verfügung, die den Systemaufruf »chown« implementiert haben.
-f oder --silent oder --quiet Die meisten Fehlermeldungen werden unterdrückt. -R oder --recursive
Rekursives Ändern von Besitzer und/oder Gruppe auch für alle Unterverzeichnisse und den darin enthaltenen Dateien
-v oder --verbose
Ausführliche Ausgabe für jede verarbeitete Datei
--reference=ref-datei
Anstelle von Werten für die Gruppe werden die entsprechenden Werte der Referenzdatei verwendet.
Tab. 5.16: Optionen des Befehls chown
218
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Die neue Gruppe kann entweder mit ihrem Gruppennamen oder ihrer GID angegeben werden. Als Argument können Sie einen oder mehrere Dateinamen angeben. Wenn Sie zum Beispiel die Gruppenzugehörigkeit rekursiv für ein ganzes Verzeichnis einschließlich der darunter liegenden Dateien und Unterverzeichnisse ändern möchten, dann verwenden Sie den Befehl wie folgt: $ ls –ld testverz drwxr-xr-x 5 olli proj3 512 Jun 22 20:17 testverz $ chgrp –R einkauf testverz $ ls –ld testverz drwxr-xr-x 5 olli einkauf 512 Jun 22 20:17 testverz
Die Gruppenzugriffsrechte für dieses Verzeichnis und alle Dateien und Unterverzeichnisse, die in diesem Verzeichnis liegen, gelten ab jetzt nicht mehr für die Gruppe proj3, sondern für die Gruppe einkauf. Dieser Befehl kann von jedem Benutzer ausgeführt werden. Allerdings kann ein Benutzer seinen Dateien oder Verzeichnissen nur eine neue Gruppe zuweisen, in der er selbst Mitglied ist. Dies wird anhand der Datei /etc/group überprüft (vergleiche Kapitel 11).
5.3.5
Der Befehl groups
Der Befehl groups zeigt an, zu welchen Gruppen ein Benutzer gehört. Wenn die Gruppen des aktuellen Benutzers angezeigt werden sollen, wird der Befehl ohne weitere Argumente eingegeben. $ groups einkauf proj3 other
Sollen die Gruppen eines anderen Benutzers angezeigt werden, dann wird dem Befehl der Benutzername übergeben: $ groups her proj3 verkauf staff
5.3.6
Der Befehl newgrp
Wenn ein Benutzer Mitglied in mehr als einer Gruppe ist, kann er auf diese Weise seine Gruppenidentität wechseln, das heißt, eine neue primäre Gruppe wählen. Er erhält dabei die neue effektive GID, zu der er wechselt. $ newgrp [-] gruppe
Ein Benutzer kann zudem in eine Gruppe wechseln, die ein Gruppenpasswort besitzt (vergleiche Kapitel 11), wenn er dieses kennt, ohne darin Mitglied zu sein. Wenn das optionale Flag - verwendet wird, wird die Umgebung des Benutzers so initialisiert, als hätte er sich neu angemeldet. Im anderen Fall bleibt die aktuelle Umgebung, einschließlich des aktuellen Arbeitsverzeichnisses, unverändert. Bei einem Aufruf ohne Argument oder mit einer nicht korrekten Gruppenzugehörigkeit wird eine neue Shell gestartet, aber die GID wird beibehalten. Bei einem Aufruf einer korrekten Gruppenzugehörigkeit wird eine neue Shell gestartet und eine neue effektive GID dem Benutzer zugewiesen. Wenn er nun neue Dateien oder Verzeichnisse anlegt, wird diese GID diesen zugewiesen:
219
magnum
Access Control Lists
$ ls –l projekt99 -rw-r--r-- 1 olli projekt5 745 Jun 29 12:27 projekt99 $ id uid=324(olli) gid=82(projekt5) groups=82(projekt5),73(neu),1(other) $ newgrp neu $ id uid=324(olli) gid=73(neu) groups=82(projekt5),73(neu),1(other) $ touch projekt100 $ ls –l projekt* -rw-r--r-- 1 olli neu 0 Jul 15 18:42 projekt100 -rw-r--r-- 1 olli projekt5 745 Jun 29 12:27 projekt99
Die neue effektive Gruppenzugehörigkeit bleibt so lange erhalten, bis die Shell beendet wird.
5.4 Access Control Lists Die ursprünglichen Möglichkeiten von Linux, Zugriffsrechte zu definieren, reichen manchmal nicht aus, um die Berechtigungen im gewünschten Umfang zuzuweisen. In diesem Fall bieten die Access Control Lists (ACLs) zusätzliche Möglichkeiten. Mit Hilfe von ACLs können Sie nicht nur für den Besitzer und die Gruppe einer Datei oder eines Verzeichnisses, sondern auch für weitere Benutzer oder Gruppen individuelle Berechtigungen definieren. Wenn der Benutzer doo zum Beispiel der Benutzerin her, die wie er in der Gruppe proj3 Mitglied ist, Schreibrechte für die Datei projektbericht01 geben möchte, konnte er traditionell nur der gesamten Gruppe Schreibrechte geben. Dies ist aber in der Regel nicht erwünscht. Mit ACLs ist es möglich, der Benutzerin her ein zusätzliches Schreibrecht zu geben, ohne dass deren Gruppe dieses auch erhält. Ein weiteres Beispiel ist, wenn die Benutzerin her eine Datei nicht nur für ihre primäre Gruppe projekt3, sondern auch für ihre sekundäre Gruppe einkauf lesbar machen möchte. Allerdings soll nicht jeder Systembenutzer die Datei lesen können, daher kann sie nicht einfach den Anderen das Leserecht einräumen. Mit Hilfe von ACLs lässt sich dieser Konflikt lösen. ACLs bilden also eine Erweiterung der Standardzugriffsrechte unter Linux. Sie werden mit einer Datei oder einem Verzeichnis gespeichert.
5.4.1
Der Befehl setfacl
ACLs werden mit dem Befehl setfacl zugewiesen. Die Syntax des Befehls lautet: $ setfacl –option(en) acl-einträge datei(en)
oder $ setfacl –option(en) acl-datei datei(en)
Bei einigen Linux-Distributionen sind ACLs standardmäßig bei den Dateisystemen ext2fs, ext3fs und reiserfs (vergleiche Kapitel 13) deaktiviert. Sie werden aktiviert, indem die Mountoption acl in die Dateisystemtabelle /etc/fstab für das entsprechende Dateisystem eingetragen wird (vergleiche Kapitel 13). Bei den Dateisystemen jfs und xfs ist diese Mountoption unbekannt und ACLs sind dort immer aktiv. Alternativ können Sie auch den Mountbefehl wie folgt absetzen: mount -o remount,acl /home.
220
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Der Befehl kennt folgende Optionen, die gemeinsam mit ACL-Einträgen verwendet werden: Option
Bedeutung
-b oder --remove-all
Alle erweiterten ACL-Einträge löschen
-d oder --default
Default-ACLs definieren
-k oder --remove-default
Default-ACLs löschen
-L oder --logical
Beim Setzen von ACLs wird symbolischen Links gefolgt.
-m acl oder --modify=acl
ACL-Einträge erzeugen oder ändern
-M datei oder --modify-file=datei
Die zu ändernden ACL-Einträge werden aus der angegebenen Datei gelesen.
--mask
Die Maske mit den effektiven Rechten wird neu berechnet.
-n oder --no-mask
Die Maske mit den effektiven Rechten wird nicht neu berechnet.
-P oder --physical
Symbolischen Links wird beim Setzen von ACLs nicht gefolgt.
-R oder --recursive
Die ACLs werden rekursiv auch in Unterverzeichnissen zugewiesen.
--restore=datei
ACLs wiederherstellen (das Gegenteil von getfacl -R – vergleiche nächsten Abschnitt)
--set acl
Alle bisherigen ACL-Einträge löschen und komplett neu setzen
--set-file=datei
Die zu definierenden ACL-Einträge werden aus einer Datei gelesen.
--test
Testmodus, die ACLs werden nicht verändert.
-x acl oder --remove=acl
ACL-Eintrag oder -Einträge löschen
-X datei oder --remove-file=datei
Die zu löschenden ACL-Einträge werden aus einer Datei gelesen.
Tab. 5.17: Optionen des Befehls setfacl
ACL-Einträge bestehen aus 2 oder 3 durch Doppelpunkte getrennten Feldern. Zuerst wird der Eintragstyp angegeben, aus dem hervorgeht, was geändert wird: ein Eintrag für einen Benutzer, eine Gruppe, die Anderen oder die Maske. Anschließend kann der Name des Benutzers oder die UID bzw. der Gruppenname oder die GID eingegeben werden, sofern es sich um einen Benutzer- oder Gruppeneintrag handelt. Zuletzt werden die Berechtigungen für diesen Eintrag angegeben. Sie können mit der symbolischen oder der Oktalmethode gesetzt werden.
221
magnum
Access Control Lists
Folgende ACL-Einträge können verwendet werden: ACL-Eintrag
Bedeutung
u[ser]::rechte
Mit diesem ACL-Eintrag werden die Rechte des Besitzers definiert. Der Name oder die UID des Besitzers muss nicht angegeben werden.
g[roup]::rechte
Mit diesem ACL-Eintrag werden die Rechte der Gruppe definiert, die standardmäßig Zugriffsberechtigung auf die Datei oder das Verzeichnis hat. Der Name oder die GID der Gruppe muss nicht angegeben werden.
o[ther]:rechte
Mit diesem ACL-Eintrag werden die Rechte der Anderen für die Datei oder das Verzeichnis definiert.
u[ser]:UID:rechte
Mit diesem ACL-Eintrag werden die Rechte für einen bestimmten Benutzer gesetzt. Es ist möglich, die UID oder den Benutzernamen zu verwenden. Bei der Verwendung des Benutzernamens muss der Benutzer einen Eintrag in der Datei /etc/passwd haben.
u[ser]:name:rechte g[roup]:GID:rechte g[roup]:name:rechte m[ask]:rechte
Mit diesem ACL-Eintrag werden die Rechte für eine bestimmte Gruppe gesetzt. Es ist möglich, die GID oder den Gruppennamen zu verwenden. Bei der Verwendung des Gruppennamens muss die Gruppe einen Eintrag in der Datei /etc/group haben (vergleiche Kapitel 11). Mit diesem Eintrag wird die ACL-Maske gesetzt. Sie legt fest, welches die höchsten Zugriffsrechte für alle Benutzer und Gruppen sind, mit Ausnahme des Besitzers. Wenn Benutzer und Gruppen höhere Zugriffsrechte haben, können diese durch die Maske begrenzt werden. Die Maske bietet eine schnelle Möglichkeit, die Berechtigungen für alle Benutzer und Gruppen zu ändern.
Tab. 5.18: ACL-Einträge und ihre Bedeutung
Die Eintragstypen können abgekürzt werden, zum Beispiel u für user oder m für mask.
5.4.2
Der Befehl getfacl
Den Befehl getfacl verwenden Sie, um definierte ACL-Einträge anzusehen. Die Syntax des Befehls lautet: $ getfacl datei
Der Befehl kennt folgende Optionen: Option
Bedeutung
--access
Nur die ACL-Liste der Datei anzeigen
--all-effective
Alle effektiven Rechte anzeigen
--absolute-names
Keine führenden Schrägstriche in Pfadnamen entfernen
-d oder --default
Nur die Default-ACL-Liste anzeigen
-L oder --logical
Beim Setzen von ACLs wird symbolischen Links gefolgt.
--numeric
Die Benutzer- und Gruppen-IDs anstelle der Namen ausgeben
Tab. 5.19: Optionen des Befehls getfacl
222
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
Option
Bedeutung
--no-effective
Keine effektiven Rechte ausgeben
--omit-header
Die kommentierende Titelzeile nicht anzeigen
-P oder --physical
Symbolischen Links wird beim Setzen von ACLs nicht gefolgt.
-R oder --recursive
Die ACLs werden rekursiv auch in Unterverzeichnissen zugewiesen.
--skip-base
Dateien überspringen, die nur die Basiseinträge haben
--tabular
Ein tabellarisches Ausgabeformat verwenden
Tab. 5.19: Optionen des Befehls getfacl (Forts.)
Zum Beispiel: $ getfacl --all-effective testdatei # file: testdatei # owner: her # group: staff user::rwuser:doo:rw#effective:rwgroup::r-#effective:r-group:einkauf:rw- #effective:rwmask:rwother:r--
ACL-Einträge erkennen Sie auch mit Hilfe des Befehls ls –l. Hinter der Spalte mit den Zugriffsberechtigungen wird das Zeichen »+« angezeigt, wenn ACL-Einträge vorhanden sind: $ ls –l testdatei -rw-r--r--+ 1 her
5.4.3
staff
281
Jul 22 21:41
testdatei
ACL-Einträge erzeugen, ändern und löschen
Mit Hilfe des Befehls setfacl –m können Sie einen oder mehrere ACL-Einträge zu einer Datei hinzufügen oder verändern. Im folgenden Beispiel werden der Datei bericht0501 zwei ACL-Einträge hinzugefügt. Die Besitzerin her hat im Moment das Lese- und Schreibrecht und die Gruppe versand das Leserecht, die Anderen haben kein Zugriffsrecht. Der Benutzer doo erhält das Lese- und Schreibrecht. $ ls –l bericht0501 -rw-r----- 1 her versand 188 Jul 12 $ setfacl –m user:doo:rw bericht0501 $ ls –l bericht0501 -rw-rw----+ 1 her versand 188 Jul 12 $ getfacl --all-effective bericht0501 # file: bericht0501 # owner: her # group: versand user::rwuser:doo:rw#effective:rwgroup::r-#effective:r-mask:rwother:---
9:13
bericht0501
9:13
bericht0501
Der Benutzer doo erhält das Schreib- und Leserecht und die Maske erhält gleichzeitig einen höheren Wert, so dass sich auch die effektiven Rechte erhöhen.
223
Access Control Lists
magnum
Beachten Sie auch, dass der Befehl ls -l nun anstelle der Gruppenrechte die Maskenrechte anzeigt, um auf die maximal vergebenen Rechte hinzuweisen.
Wenn die Maske beim Setzen von ACL-Einträgen erhöht wurde und später die ACL-Einträge mit einem Schreib- oder Ausführrecht gelöscht werden, wird die Maske automatisch wieder auf das Leserecht zurückgesetzt. Es ist auch möglich, mehrere ACL-Einträge gleichzeitig zuzuweisen. Im folgenden Beispiel erhält der Benutzer san alle Rechte und die Gruppe einkauf das Lese- und Ausführrecht: $ ls –l print-skript -rwxr-x--- 1 her verkauf 1084 Jun 27 8:21 print-skript $ setfacl –m user:san:7,group:einkauf:5 print-skript $ ls –l printskript -rwxrwx---+ 1 her verkauf 1084 Jun 27 8:21 print-skript $ getfacl --all-effective print-skript # file: print-skript # owner: her # group: verkauf user::rwx user:san:rwx #effective:rwx group::r-#effective:r-group:einkauf:r-x #effective:r-x mask:rwx other:---
Verwenden Sie zur Trennung von mehreren ACL-Einträgen nur Kommata und keine Leerzeichen! Mit der Option –s können Sie einen vollständigen ACL-Eintrag setzen. Alle bisher definierten ACL-Einträge werden dabei überschrieben. Es ist notwendig, dass Sie bei dieser Option eine Angabe für jeden Eintrag definieren, auch für den Besitzer, die standardmäßige Gruppe und die Anderen: $ setfacl –-set u::7,g::4,o:0,u:doo:7,g:buha:5,m:5 testscript1 $ getfacl --all-effective testscript1 # file: testscript1 # owner: her # group: staff user::rwx user:doo:rwx #effective:r-x group::r-#effective:r-group:buha:r-x #effective:r-x mask:r-x other:---
In diesem Beispiel erhielt der Besitzer alle Rechte an seiner Skriptdatei. Die Standardgruppe staff, der Benutzer doo und die zusätzliche Gruppe buha erhielten das Lese- und Ausführrecht, und zwar effektiv, da die Maske gleichzeitig auf den Wert 5 (Lesen und Ausführen) erhöht wurde. Durch die Begrenzung der Maske auf das Schreib- und Ausführrecht hat der Benutzer doo zwar der Form halber, aber nicht effektiv das Schreibrecht. Die Anderen haben kein Zugriffsrecht auf die Datei. Mit der Option –x können Sie einen oder mehrere ACL-Einträge löschen:
224
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
$ setfacl –x g:buha testscript1 $ getfacl --all-effective testscript1 # file: testscript1 # owner: her # group: staff user::rwx user:doo:rwx #effective:r-x group::r-#effective:r-mask:r-x other:---
In diesem Beispiel wurde der ACL-Eintrag für die Gruppe buha gelöscht. Dabei genügt es, den Namen oder die GID der Gruppe anzugeben, der letzte Teil des ACL-Eintrags kann weggelassen werden. Wenn der letzte ACL-Eintrag für den Benutzer doo auch noch gelöscht wird, ist die Datei testscript1 wieder eine Datei mit den traditionellen Dateirechten: $ setfacl –x u:doo testscript1 $ getfacl --all-effective testscript1 # file: testscript1 # owner: her # group: staff user::rwx group::r-#effective:r-mask:r-other:---
Gleichzeitig wurde auch wieder die Maske auf das Leserecht zurückgesetzt.
5.5 Zugriffsrechte mit Hilfe von KDE einrichten Es ist auch möglich, dass Sie sich die Eigenschaften einer Datei im Konqueror anzeigen lassen und die Zugriffsrechte dort ändern. Zum Anzeigen genügt es bereits, den Mauszeiger auf die Datei zu positionieren:
Bild 5.4: Dateieigenschaften anzeigen lassen
225
Zugriffsrechte mit Hilfe von KDE einrichten
magnum
Zum Ändern klicken Sie mit der rechten Maustaste auf die Datei, die Sie bearbeiten möchten, und wählen im Kontextmenü die Option EIGENSCHAFTEN:
Bild 5.5: Dateirechte ändern
In der ersten Registerkarte ALLGEMEIN werden allgemeine Dateiinformationen angezeigt, wie zum Beispiel die Größe, das letzte Änderungsdatum und der Pfadname:
Bild 5.6: Anzeige der Dateieigenschaften
226
Kapitel 5 · Zugriffsschutz für Dateien und Verzeichnisse anwenden
In der zweiten Registerkarte BERECHTIGUNGEN können Sie die Dateizugriffsrechte für den Eigentümer, die Gruppe und die Anderen ändern, die Datei als ausführbar definieren und den Eigentümer festlegen:
Bild 5.7: Berechtigungen ändern
Der Besitzer wird im unteren Fensterbereich geändert:
Bild 5.8: Besitzer einer Datei ändern
227
Zugriffsrechte mit Hilfe von KDE einrichten
magnum
Wenn Sie auf ERWEITERTE BERECHTIGUNGEN klicken, können Sie die Zugriffsrechte für die drei Benutzerklassen nochmals bearbeiten und die Spezialbits aktivieren oder deaktivieren:
Bild 5.9: Spezielle Zugriffsrechte definieren
228
6 Grundlagen der Shells und Shellskriptprogrammierung »Und so sage ich zum letzten Male: Natur hat weder Kern noch Schale. Dich prüfe du nur allermeist, ob du Kern oder Schale seist!« – Johann Wolfgang von Goethe Selbst im Zeitalter der grafischen Oberflächen ist es immer noch sehr nützlich, sich auch auf der Ebene der Kommandozeile auszukennen, das heißt, die Möglichkeiten einer Shell zu nutzen. In diesem Kapitel werden die wichtigsten Funktionen einer Shell erklärt, wie zum Beispiel der Pipe-Mechanismus und die Umlenkung der Ein- und Ausgabe. Die Hauptkomponenten eines Linux-Systems sind der Kernel, der Kommandointerpreter bzw. die Shell sowie die Dienst- und alle anderen Linux-Programme. Der Kernel ist das eigentliche Betriebssystem, das die Hardware steuert und mittels Schnittstellen von der Shell oder Dienstprogrammen angesteuert werden kann. Eine Shell ist eine Benutzerschnittstelle und zugleich ein Benutzerprogramm, das über einen Befehl aufgerufen werden kann. Sie ist also nicht Bestandteil des Betriebssystems und kann durch beliebige andere Benutzerschnittstellen ersetzt werden. Die Shell wird beim Anmelden des Benutzers gestartet und bleibt so lange aktiv, bis der Benutzer seine Sitzung wieder beendet hat. Welche Shell für einen Anwender gestartet wird, entscheidet der Eintrag für den Benutzer in der Datei /etc/passwd (vergleiche Kapitel 11). Ein Benutzer kann aber über eine seiner Initialisierungsdateien oder durch Aufruf direkt an der Befehlszeile eine Shell seiner Wahl starten bzw. die Shell mit dem Befehl chsh (vergleiche Kapitel 11) ändern. Ihre Bezeichnung leitet sich daraus ab, dass sich die Shell wie eine Schale um den Kernel legt. Sie wird aber auch als Befehlsinterpreter bezeichnet, da sie auf die Befehle des Benutzers reagiert und diese ausführt. Die Shell bildet die Schnittstelle zwischen dem Benutzer und dem System. Sie besitzt auch fest eingebaute Befehle, wie zum Beispiel set oder if oder exit. Eine Shell ist zugleich eine Art Programmiersprache. Dazu werden die Shellbefehle in einer Textdatei hinterlegt, die hinterher die Ausführrechte erhält. Diese Shellskriptsprache bietet als Programmiersprache neben den Befehlen wichtige Programmierelemente, wie zum Beispiel Variablen, Wiederholungen, Schleifen, Funktionsaufrufe oder Bedingungsabfragen wie die if- oder case-Anweisung. Die Shell ist an sich interaktiv, so dass der Anwender sofort nach Eingabe eines Befehls eine entsprechende Rückmeldung erhalten kann, sofern der Befehl selbst mit interaktiven Optionen ausgeführt wird (zum Beispiel -i), ansonsten erhält der Benutzer nur dann eine Rückmeldung, wenn der Befehl nicht ausgeführt werden konnte. Dies ist zum Beispiel der Fall, wenn die Shell den Befehl nicht in einem der in der Variablen PATH (vergleiche Abschnitt 6.4) definierten Verzeichnisse findet oder eine Option oder ein Argument falsch eingegeben wurde. Die Befehle einer Shell sind flexibel und umfangreich und lassen sich auch miteinander zu mächtigen Befehlen verketten. Ein Linux-System kann sehr gut auch ohne grafische Oberfläche nur mit einer Shell vollständig administriert werden.
229
Arten von Shells
magnum
Eine Shell besitzt in der Regel folgende Eigenschaften:
쮿
Möglichkeiten zur interaktiven Verarbeitung
쮿
Hintergrundverarbeitung
쮿
Ein-/Ausgabeumlenkung
쮿
Pipe-Mechanismus (Hintereinanderschalten von Befehlen mit Datenübergabe)
쮿
Verwendung von Metazeichen (Wildcards)
쮿
Shellskriptprogrammierung
쮿
Shellvariablen, die das Verhalten der Shell und anderer Programme durch Daten steuern, die in Variablen gespeichert werden
쮿
Individuelle Konfiguration durch den Benutzer
Zu den Hauptaufgaben von Shells gehören:
쮿
Analyse der Befehlseingabe (Syntax)
쮿
Suche nach Befehlen im Verzeichnisbaum
쮿
Ersetzen von Sonderzeichen
쮿
Steuerung der Ein-/Ausgabe
쮿
Steuerung des Ablaufs des Befehls
쮿
Erzeugung von Vorder- und Hintergrundprozessen
쮿
Prüfung der Zugriffsberechtigungen
쮿
Erzeugen von Subshells (wiederholter Aufruf der Shell als eigenständiger Prozess)
6.1 Arten von Shells Da eine Shell auch nur ein aufrufbares Programm ist, sind die Shells unterschiedlich umfangreich, je nach Absicht der Entwickler. Die verschiedenen Shells, die Sie heute unter Linux verwenden können, sind zumeist im Laufe der Jahre unter Unix entstanden und dabei durch bestimmte Funktionalitäten ergänzt worden. Die Shells unterscheiden sich also hinsichtlich ihrer Funktionen. Einige Shells haben zum Beispiel keine History-Funktion (Auflisten vergangener Befehle). Die Befehle der verschiedenen Shells unterscheiden sich ebenfalls teilweise, was bei der Entwicklung von Shellskripten berücksichtigt werden muss. Die Shells verwenden zum Teil unterschiedliche Promptzeichen. Wenn Sie sich als Superuser root anmelden, haben Sie in der Regel unabhängig von der Shell das Hashzeichen # als Promptzeichen.
230
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Die folgende Tabelle listet einige der bekanntesten Shells auf. Shell und Aufruf
Beschreibung
Bourne-Shell – sh
Sie wurde nach ihrem Entwickler Steven Bourne benannt und ist die ursprüngliche Shell für Unix. Als älteste Shell hat sie den kleinsten Befehlsumfang und kennt keine History- und Aliasfunktionen. Ihr Promptzeichen ist standardmäßig das Dollarzeichen ($).
C-Shell – csh
Sie wurde von Bill Joy an der University of California in Berkeley gemeinsam mit der BSD-Linux-Variante entwickelt. Sie enthält die Alias- und History-Funktionen und einen Befehlszeileneditor. Ihr Promptzeichen ist das Prozentzeichen (%).
Korn-Shell – ksh
Diese von David Korn entwickelte Shell ist eine Weiterentwicklung der Bourne-Shell. Ihr Promptzeichen ist auch das Dollarzeichen. Sie enthält ähnliche Erweiterungen wie die C-Shell.
Bourne-Again-Shell – bash
Sie wurde von der Free Software Foundation als Bestandteil des GNU-Projekts entwickelt und ist die Standardshell unter Linux. Neben dem Befehlsumfang der Bourne-Shell enthält sie auch die Alias- und History-Funktionen und den Befehlszeileneditor.
T-Shell oder TC-Shell – tcsh
Sie ist eine erweiterte C-Shell, verfügt aber im Gegensatz zur C-Shell über einige zusätzliche nützliche Funktionen, wie zum Beispiel eine Syntaxkorrektur.
Public-DomainKorn-Shell – pdksh
Sie ist eine Implementierung der Korn-Shell, die das Unternehmen AT&T als »Public domain«-Version veröffentlicht hat. Sie ist der Korn-Shell sehr ähnlich, wobei ihr aber einige wichtige Funktionen fehlen, die der Korn-Shell als Shellskriptsprache zur Verfügung stehen.
Z-Shell – zsh
Sie ist mit der Korn-Shell am engsten verwandt, wobei sie aber auch viele Funktionen der Bourne-Again-Shell, der TC-Shell und der KornShell miteinander verbindet. Darüber hinaus verfügt sie noch über einige zusätzliche Eigenschaften.
Tab. 6.1: Arten von Shells
Darüber hinaus gibt es noch weitere Shells. So wird zum Beispiel die Remote-Shell (rsh) für Remote-Zugriffe auf andere Rechner verwendet und die Secure Shell (ssh), stellt ein sicheres Anmeldesystem als Ersatz für Remote-Anmeldungen über telnet, rlogin usw. dar (vergleiche Kapitel 18). Wenn eine Shell aufgerufen, also zum Beispiel bei der Anmeldung gestartet wird, dann wird sie zum Vaterprozess aller Prozesse, die anschließend vom Benutzer in dieser Shell aufgerufen werden. Aus einer Shell heraus ist es auch möglich, andere Shells zu starten. Dabei erzeugt der Systemaufruf fork einen Kindprozess für die gestartete Shell. Eine Shell lässt sich jederzeit durch den Befehl exit beenden.
231
Sonderzeichen der Shells
magnum
6.2 Sonderzeichen der Shells In diesem Abschnitt lernen Sie die Sonderzeichen der Shells kennen. Diese sollten einerseits in Datei- und Verzeichnisnamen gemieden werden, um Probleme beim Bearbeiten der Datei bzw. des Verzeichnisses zu vermeiden. Andererseits bieten diese so genannten Metazeichen die Möglichkeit, Wildcards für Datei- und Verzeichnisnamen zu verwenden oder Befehle miteinander zu verbinden, oder können in Shellskripten eingesetzt werden. Das Betriebssystem Unix und damit auch Linux besteht aus einer großen Anzahl verschiedener kleiner Tools, die sich miteinander kombinieren lassen. Dabei wird der Benutzer der Befehlszeile bzw. ein Shellskriptprogrammierer einerseits von Metazeichen unterstützt, die die Eingabe vereinfachen, wie zum Beispiel dem Stern oder dem Fragezeichen, und andererseits von Sonderzeichen, die aus zwei oder mehreren kleinen Befehlen ein mächtiges Tool basteln, wie zum Beispiel das Pipe-Zeichen.
6.2.1
Metazeichen
Metazeichen vereinfachen den Aufruf von Befehlen, die für viele Dateien oder Verzeichnisse gelten sollen. Dabei werden diese Metazeichen als Platzhalter für Dateinamen oder Teile von Dateinamen eingesetzt. Die Shell ersetzt Metazeichen noch vor Ausführung des Befehls, so dass dem Befehl selbst eine Liste aller Dateinamen übergeben wird, die nach der Auflösung der Metazeichen gefunden wurden, zum Beispiel: $ ls her her1 her2 her3 her4 her11 her12 her111 her99 herb herd $ ls her?
Das Fragezeichen ist ein Platzhalter für genau ein beliebiges Zeichen. Vor der Ausführung des Befehls ls sucht die Shell nach Dateien, die diesem Muster entsprechen, und übergibt sie dem Befehl, so dass dieser anschließend folgendermaßen ausgeführt wird: $ ls her1 her2 her3 her4 herb herd her1 her2 her3 her4 herb herd
Das Fragezeichen ? Das Fragezeichen steht für genau ein beliebiges Zeichen in einem Dateinamen, allerdings nicht für den Punkt am Anfang des Dateinamens einer versteckten Datei. Versteckte Dateien beginnen unter Linux immer mit einem Punkt, wie zum Beispiel .profile. Dabei handelt es sich in der Regel um Initialisierungs- oder Konfigurationsdateien. Versteckte Dateien und Verzeichnisse lassen sich mit dem Befehl ls –a anzeigen. Im nachfolgenden Beispiel steht das Fragezeichen für das vierte Zeichen eines Dateinamens: $ ls her her1 her2 her3 her4 her11 her12 her111 her99 herb herd $ ls her? her1 her2 her3 her4 herb herd
Es werden nur die Dateien aufgelistet, die mit »her« beginnen und an vierter Stelle ein beliebiges Zeichen besitzen.
232
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Der Stern * Der Stern steht für kein, ein oder mehrere beliebige Zeichen in einem Dateinamen, auch für Leerzeichen. Aber auch er kann nicht als Platzhalter für den Punkt am Anfang eines Dateinamens verwendet werden. Im nachfolgenden Beispiel steht der Stern für eine Zeichenfolge am Ende eines Dateinamens: $ ls her her1 her2 her3 her4 her11 her12 her111 her99 herb herd $ ls her* her her1 her2 her3 her4 her11 her12 her111 her99 herb herd
Es werden alle Dateien aufgelistet, die mit »her« beginnen und beliebig enden.
Die eckigen Klammern [ ] Die eckigen Klammern stehen für genau ein Zeichen in einem Dateinamen, das sich innerhalb der Klammern befindet. So steht der Auswahlbereich [cmx] für die Zeichen c oder m oder x. Der Auswahlbereich [L–O] umfasst die Zeichen L oder M oder N oder O (groß geschrieben!) und [6–9] bedeutet 6 oder 7 oder 8 oder 9. Im nachfolgenden Beispiel steht die Auswahl in den eckigen Klammern für eines der darin enthaltenen Zeichen am Ende eines Dateinamens: $ ls her[1–4] her1 her2 her3 her4
Es werden alle Dateien aufgelistet, die mit »her« beginnen und entweder mit 1 oder 2 oder 3 oder 4 enden. Das nächste Beispiel listet alle Dateien auf, die an der vierten und fünften Stelle jeweils das Zeichen 1 oder 9 haben und beliebig enden: $ ls her[19][19]* her11 her111 her99
Die eckigen Klammern mit vorangestelltem Ausrufezeichen definieren einen negierten Auswahlbereich. Dieser repräsentiert genau ein Zeichen, das nicht an der entsprechenden Stelle stehen darf. Es sind also alle Zeichen an der Stelle zugelassen, die nicht in den Klammern stehen, zum Beispiel: $ ls her[!1-4] herb herd
Die Shell sucht hier nach allen Dateien, die mit »her« beginnen und vier Zeichen lang sind. Das vierte Zeichen darf weder die Zahl 1 noch 2 noch 3 noch 4 sein. Bei der C- und TC-Shell wird der negierte Auswahlbereich nicht mit einem Ausrufezeichen (!) versehen, sondern mit dem Accent circonflexe ^, da das Ausrufezeichen bei diesen Shells bereits für den History-Mechanismus verwendet wird. Die Bourne-Again-Shell akzeptiert beides.
233
Sonderzeichen der Shells
magnum
Die geschweiften Klammern {} Die bisher vorgestellten Metazeichen beziehen sich alle auf Datei- oder Verzeichnisnamen, während in den geschweiften Klammern einfach alle einzusetzenden Möglichkeiten angegeben werden. Da die verschiedenen Möglichkeiten auch aus mehreren Zeichen bestehen können, wird zwischen diesen das Komma als Trennzeichen verwendet. Es können auch mehrere Klammern in einem Ausdruck angegeben werden, wodurch alle Möglichkeiten miteinander kombiniert werden können. Im nachfolgenden Beispiel wird die Auswahl in den geschweiften Klammern für jede Angabe aufgelöst: $ echo {anna,berta,caesar} anna berta caesar
Das nächste Beispiel listet alle Dateien auf, die an der vierten und fünften Stelle jeweils das Zeichen 1 oder 9 haben und beliebig enden: $ echo t{a,o}nne tanne tonne
Im nachfolgenden Beispiel wird die Auswahl von beiden geschweiften Klammern miteinander kombiniert: $ echo {eins,zwei,drei}{a,b,c} einsa einsb einsc zweia zweib zweic dreia dreib dreic
Auch beim Anlegen mehrerer Verzeichnisse untereinander können die geschweiften Klammern Schreibarbeit sparen, da die Möglichkeiten miteinander kombiniert werden: $ mkdir -p verz/{a,b}/{eins,zwei} $ ls -R verz verz: . .. a b test/a: . .. c d test/a/c: . .. test/a/d: . .. test/b: . .. c d test/b/c: . .. test/b/d: . ..
234
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Das Kommentarzeichen # Alle Zeichen, die einem Kommentarzeichen folgen, werden von der Shell nicht ausgewertet, sondern als Kommentar ignoriert. $ echo "Jetzt kommt ein Kommentar" #Ende Jetzt kommt ein Kommentar
Das Semikolon ; Sie können mehrere Befehle in einer Befehlszeile eingeben und durch den Strichpunkt voneinander trennen. In diesem Fall wird ein Befehl nach dem anderen ausgeführt, genau so, als wenn die (¢)-Taste nach einer Befehlseingabe betätigt wird. Die Befehle werden völlig unabhängig voneinander ausgeführt. Das Semikolon kommt vor allem in Shellskripten zum Einsatz. Im nachfolgenden Beispiel wird zuerst der Befehl cd setzt:
/etc,
dann der Befehl pwd abge-
$ cd /etc ; pwd /etc
Das Ampersand-Zeichen & Dieses Zeichen wird verwendet, um einen Prozess im Hintergrund zu starten, damit die Befehlszeile nicht blockiert wird. Im nachfolgenden Beispiel wird der Befehl find im Hintergrund ausgeführt, da er den gesamten Verzeichnisbaum nach Dateien mit dem Namen core durchsucht, was eine gewisse Zeit benötigt. Die Ausgabe wird in eine Datei core_liste und die Fehlerausgabe in eine Datei fehler_liste umgelenkt (vergleiche Abschnitt 6.2.2). Da der Befehl in den Hintergrund gestellt wird, steht der Eingabeprompt für weitere Eingaben zur Verfügung, während der Befehl arbeitet: $ find / -name core –ls > core_liste 2> fehler_liste &
Mit dem Befehl jobs können Sie sich anzeigen lassen, welche Jobs Sie im Hintergrund gestartet haben, und mit dem Befehl fg den zuletzt in den Hintergrund gestellten Job wieder in den Vordergrund bringen. Eine ausführliche Anleitung, wie Sie Hintergrundjobs steuern können, finden Sie in Kapitel 18 im Abschnitt »Jobkontrolle«.
Das doppelte Ampersand-Zeichen && In einem Shellskript kann mit Hilfe von zwei Ampersand-Zeichen eine UND-Verknüpfung programmiert werden. Die Zeile befehl1 && befehl2
bedeutet, dass der zweite Befehl nur ausgeführt wird, wenn der erste Befehl erfolgreich war, zum Beispiel kann in einem Shellskript mit der Anweisung cd verz && programm
gesteuert werden, dass ein Programm nicht gestartet wird, wenn ein bestimmtes Verzeichnis existiert.
235
Sonderzeichen der Shells
magnum
Die runden Klammern ( ) In runden Klammern aufgerufene Befehle werden in einer Subshell gestartet, also als eigenständiger Prozess abgearbeitet. Das gilt auch für Variablen, die innerhalb dieser Subshell deklariert und verwendet werden. Nach Beendigung der Subshell wird in die aktuelle Shell zurückgekehrt. Im nachfolgenden Beispiel wird in einer Subshell in das Verzeichnis /usr verzweigt und der Befehl pwd abgesetzt. Anschließend befindet sich der Anwender wieder in seiner aktuellen Shell: $ pwd /etc $ (cd /usr ; pwd) /usr $ pwd /etc
Auch die runden Klammern werden vor allem in Shellskripten verwendet.
Das Dollarzeichen $ Wird einem Variablennamen das Dollarzeichen vorangestellt, so wird nicht mehr der Name, sondern der Wert einer Variablen verwendet (vergleiche Abschnitt 6.4). Programme, wie zum Beispiel auch Betriebssysteme, verwenden Variablen. Diese enthalten Werte, die an bestimmten Stellen vom System abgefragt werden. Dies hat den Vorteil, dass der Wert nur an einer Stelle zugeordnet werden muss, aber von den verschiedensten Programmen abgerufen werden kann. Da dieser Wert bei Bedarf geändert werden kann, also variabel ist, spricht man von Variablen. Die Variable SHELL enthält zum Beispiel als Wert die verwendete Anmeldeshell. Im nachfolgenden Beispiel wird der Wert mit Hilfe des Befehls echo und einem vorangestellten Dollarzeichen ausgelesen: $ echo $SHELL /bin/ksh
Die Anmeldeshell ist in diesem Fall die Korn-Shell.
Der Backslash \ Mit dem Backslash können Sonderzeichen maskiert werden. Man nennt dies auch Quotierung. Damit wird dem Zeichen seine besondere Bedeutung genommen und es wird wie ein gewöhnliches Zeichen interpretiert. Wird zum Beispiel der Stern maskiert mit \*, dann hat er nur noch die Bedeutung des Zeichens * und gilt nicht mehr als Platzhalter für eine beliebige Menge von Zeichen. Im nachfolgenden Beispiel maskiert der Backslash das Dollarzeichen: $ echo $HOME /export/home/her $ echo \$HOME $HOME
Da das Dollarzeichen nun nur noch als Zeichen interpretiert wird, nicht mehr als Metazeichen, wird statt des Pfads des Homeverzeichnisses nur der Ausdruck $HOME ausgegeben.
236
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Die einfachen Hochkommata '…' Eine weitere Möglichkeit, um die Bedeutung von Metazeichen zu quotieren, besteht darin, das gesamte Argument in einfache Hochkommata zu setzen. Diese maskieren ohne Ausnahme alle Sonderzeichen: $ echo '$HOME' $HOME
Das Dollarzeichen innerhalb der Hochkommata hat keine Sonderbedeutung mehr, sondern wird als Dollarzeichen ausgegeben.
Die doppelten Hochkommata »…« Auch die doppelten Hochkommata lassen sich zur Quotierung von Metazeichen verwenden. Im nachfolgenden Beispiel wird ein Semikolon in einem Dateinamen mit Hilfe der Anführungszeichen quotiert: $ ls test.dat test;dat $ ls "test;dat" test;dat
Ohne die Quotierung würde das Semikolon als Befehlstrenner betrachtet werden und daher zu einer Fehlermeldung führen. Die doppelten Hochkommata quotieren allerdings nicht alle Sonderzeichen. Die drei Ausnahmen, die nicht maskiert werden, sind der Backslash (\), das Dollarzeichen ($) und die rückwärtigen Hochkommata (`...`) (siehe nächster Absatz): $ echo "$HOME" /export/home/her
Das Dollarzeichen innerhalb der doppelten Hochkommata behält seine Sonderbedeutung bei.
Die rückwärtigen Hochkommata `…` Diese Hochkommata dienen der Befehlssubstitution. Sie werden manchmal auch als Backquotes oder Backticks bezeichnet. Ein in rückwärtige Hochkommata gefasster Befehl wird ausgeführt und seine Ausgabe wird gegebenenfalls weiterverarbeitet. Im nachfolgenden Beispiel wird eine Befehlssubstitution mit dem Befehl date durchgeführt: $ echo date date $ echo `date` Thu Jul 2 12:32 MET DST 2001
Beim ersten Befehl wird nur die Zeichenfolge »date« zurückgegeben. Der zweite Befehl gibt die Zeichenfolge aus, die die Shell erhält, nachdem sie den Befehl date ausgeführt hat. Eine alternative Schreibweise für die Befehlssubstitution ist: $ echo $(date) Thu Jul 2 12:32 MET DST 2001
237
Sonderzeichen der Shells
magnum
Die Befehlssubstitution ermöglicht es, die Ergebnisse beliebig komplexer Befehle als Argument an einen anderen Befehl zu geben. Möglich sind auch Kombinationen wie befehl3 `befehl1 && befehl2`.
Das Tildezeichen ~ Das Tildezeichen ist eine Abkürzung für das Homeverzeichnis eines Benutzers, zum Beispiel: $ echo $HOME /export/home/her $ pwd /etc $ cd ~/protokoll/berichte/2001 ; pwd /export/home/her/protokoll/berichte/2001
Mit Hilfe des Tildezeichens erfolgt hier eine Verzweigung in ein Unterverzeichnis des Homeverzeichnisses. Das Tildezeichen lässt sich auch verwenden, um in ein bestimmtes Benutzerverzeichnis zu gelangen. Dabei wird dem Benutzernamen, dem das Benutzerverzeichnis gehört, das Tildezeichen vorangestellt: $ pwd /etc $ cd ~/olli ; pwd /export/home/olli
Das Tildezeichen wird von der Bourne-Shell nicht als Sonderzeichen erkannt.
Das Minuszeichen – Zum schnellen Wechseln zwischen zwei Verzeichnissen kann das Minuszeichen verwendet werden. Dabei wird auch automatisch das Verzeichnis angezeigt, in das gewechselt wurde: $ cd /etc ; pwd /etc $ cd /export/home/her/protokoll/berichte/2001 ; pwd /export/home/her/protokoll/berichte/2001 $ cd /etc $ cd /export/home/her/protokoll/berichte/2001
Das Minuszeichen wird nur von der Korn-Shell und der Bourne-Again-Shell verwendet.
Das Ausrufezeichen ! Das Ausrufezeichen wird in der C-Shell und in der Bourne-Again-Shell in Verbindung mit der History-Funktion verwendet.
238
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
6.2.2
Ein-/Ausgabeumlenkung
Die Shell liest die Befehlseingaben von der Tastatur ein und gibt die Befehlsausgaben am Bildschirm aus. Mit Hilfe der Umlenkungszeichen < und > können Befehlseingaben und -ausgaben umgelenkt werden. Durch die Eingabeumlenkung ist es zum Beispiel möglich, dass ein Befehl die erforderliche Eingabe aus einer Datei statt von der Tastatur liest. Durch die Ausgabeumlenkung dagegen lässt sich die Ausgabe von einer Befehlszeile in eine Datei umlenken oder an einen anderen Befehl mit Hilfe einer Pipe (vergleiche Abschnitt 6.2.3) senden. Technisch wird die Umlenkung dadurch realisiert, dass alle Ein- und Ausgaben über Kanäle an ein Programm gegeben bzw. von einem Programm ausgegeben werden. Das Programm selbst weiß in aller Regel nicht, ob und welches Gerät hinter den Kanälen steckt. Damit kann der Ausgabekanal eines Programms auf den Eingabekanal eines anderen Programms oder in eine Datei umgeleitet werden. Umgekehrt kann eine Datei als Eingabekanal definiert werden. Für die Kommunikation eines Programms sind unter Linux standardmäßig drei Kanäle festgelegt:
쮿
Die Standardeingabe (stdin) mit File Descriptor 0 (null)
쮿
Die Standardausgabe (stdout) mit File Descriptor 1
쮿
Die Standardfehlerausgabe (stderr) mit File Descriptor 2
File Descriptors oder Dateizeiger werden vom Betriebssystem für den Zugriff auf Dateien verwendet. Sie entsprechen den Kanalnummern bei der Ein-/Ausgabeumlenkung. Wenn ein Programm eine Datei lesen oder schreiben möchte, muss diese Datei geöffnet werden, wobei die Shell mit dieser Datei einen File Descriptor verknüpft. Die Ein- und Ausgabekanäle sind in praktischer Hinsicht also wie Dateien zu sehen. Mit Hilfe der Dateizeiger definiert die Shell, woher die Eingabe eines Befehls eingelesen wird und wohin die Ausgabe und Fehlermeldungen ausgegeben werden. Kanalbezeichnung
Abkürzung
Kanalnr.
Verwendete Sonderzeichen
Standardeingabe
stdin
0
0< oder
oder >
Standardfehlerausgabe
stderr
2
2>
Standardausgabe + Standardfehlerausgabe
stdout + stderr
1 + 2
1> datei 2>&1
Tab. 6.2: Sonderzeichen der Datenumlenkung
Die C- und TC-Shell kennen die Standardfehlerausgabe nicht. In ihrem Fall erfolgt durch die Verwendung der Sonderzeichen >& eine gemeinsame Umlenkung von Standardausgabe und Fehlerausgabe in eine Datei.
239
Sonderzeichen der Shells
magnum
Befehle, die den Inhalt von Dateien bearbeiten, lesen in der Regel von der Standardeingabe und geben auf die Standardausgabe aus. Der Befehl cat zum Beispiel liest von der Standardeingabe und schreibt auf die Standardausgabe. Im folgenden Beispiel bildet die erste Zeile das Lesen von der Tastatur und die zweite Zeile das Schreiben auf den Bildschirm ab: $ cat Dies ist Dies ist Dies ist Dies ist ^D
die die die die
erste Zeile erste Zeile zweite Zeile zweite Zeile
Mit (Ctrl)+(d) wird die Eingabe abgebrochen. Die vorgegebene Einstellung von Standardeingabe, Standardausgabe und Standardfehlerausgabe lässt sich mit Hilfe der oben genannten Sonderzeichen ändern. Im nachfolgenden Beispiel wird die Standardeingabe umgelenkt. Der Befehl mailx liest normalerweise von der Standardeingabe, wenn ein Benutzer eine E-Mail verfasst. In diesem Beispiel wird dem Befehl aber die Eingabe aus der Datei protokoll vorgegeben, die E-Mail wird also mit dem Inhalt dieser Datei erstellt: $ mailx her@suso1 < protokoll
In dem Fall wird die Datei wie ein an die E-Mail angehängter Anhang an die Benutzerin her auf dem Rechner suso1 versandt. Die Befehlsausgabe kann ebenfalls in eine Datei umgelenkt werden. Existiert die Datei noch nicht, dann wird sie neu erzeugt. Ist sie bereits vorhanden, dann wird der Inhalt der Datei durch die Umlenkung überschrieben, wenn die Shelloption für den Überschreibschutz nicht aktiviert wurde (vergleiche Abschnitt 6.4). In diesem Beispiel wird der Inhalt eines Verzeichnisses ausgegeben und die Ausgabe in eine Datei umgelenkt: $ ls –l > dateiliste
Existiert die Datei dateiliste schon, wird sie in diesem Fall überschrieben, ansonsten neu angelegt. Eine Befehlsausgabe lässt sich auch ans Ende einer bereits bestehenden Datei anhängen. Im folgenden Beispiel wird der Satz »Ende der Liste« an diese Datei gehängt: $ echo "Ende der Liste" >> dateiliste
In einigen Shells, wie zum Beispiel der Bourne-, Korn- und Bourne-Again-Shell, ist eine getrennte Umlenkung von Ausgabe und Fehlerausgabe möglich. Das folgende Beispiel zeigt, wie die Ausgabe weiterhin an die Standardausgabe Bildschirm gesendet wird, während die Fehlerausgabe in eine Datei geleitet wird: $ ls /var /nix 2> /tmp/fehler X11R6 adm games lib log opt spool yp account cache heimdal lock mail run tmp $ cat /tmp/fehler /nix: No such file or directory
Es ist auch möglich, die Standardausgabe und die Standardfehlerausgabe in unterschiedliche Dateien umzulenken (nicht bei der C-Shell oder TC-Shell möglich): $ ls /var /nix > /tmp/ausgabe 2> /tmp/fehler
240
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Eine weitere Möglichkeit ist, beide Ausgaben in eine Datei zu lenken. Die Syntax bei der C- oder TC-Shell lautet dann: $ ls /var /nix >& /tmp/ausgabe
Bei den anderen in diesem Buch behandelten Shells lautet die Syntax für diesen Fall: $ ls /var /nix > /tmp/fehler 2>&1
Außer den drei Standardkanälen kennt die Shell noch andere Kanäle. Diese können beliebig verwendet werden, wovon meist in Shellskripten Gebrauch gemacht wird.
6.2.3
Pipe-Mechanismus
Mit Hilfe des Pipe-Mechanismus lassen sich auf effiziente Weise zwei Befehle miteinander verbinden. Eine Pipe wird durch das Zeichen | definiert und zwischen zwei Befehlen positioniert, wobei die Ausgabe des ersten Befehls direkt als Eingabe für den nachfolgenden Befehl dient. Die Syntax des Befehls lautet: $ befehl1 | befehl2 | befehl3
Befehle lassen sich theoretisch unbegrenzt über Pipes verketten, vorausgesetzt, der vorangehende Befehl schreibt seine Ausgabe auf die Standardausgabe und der nachfolgende Befehl liest seine Eingabe von der Standardeingabe. In diesem Beispiel wird die Ausgabe des Befehls ls –l /etc dem Befehl grep übergeben, der nach dem Muster rc sucht und dann die Namen aller Dateien ausgibt, die das Suchmuster enthalten: $ ls –l /etc | grep rc.d lrwxrwxrwx 1 root root 6 2004-01-17 13:50 rc.d -> init.d -rw-r--r-- 1 root root 611 2002-05-21 17:01 rc.d.README
Der nachfolgende Befehl gibt aus, wie viele Bourne-Again-Shells im System im Moment gestartet sind: $ ps -ef | grep bash | grep –v grep | wc –l 4
Der erste Befehl ps sendet eine Liste von allen aktiven Prozessen an den zweiten Befehl grep, der die Liste nach dem Muster bash durchsucht. Das Ergebnis wird dann dem dritten Befehl grep übergeben, der aus der Liste nur noch die Zeilen als Ausgabe weitergibt, die nicht das Muster grep enthalten (da der »grep bash«Befehl ebenfalls in der Prozessliste steht, muss er herausgerechnet werden). Der vierte Befehl wc zählt schließlich die Zeilen, die der dritte Befehl grep als Ausgabe übergab, und gibt die Anzahl der Zeilen aus, was gleichbedeutend mit der Anzahl der aktiven Bourne-Again-Shells ist. Zu den gebräuchlichsten Befehlen, die mit einer Pipe verkettet werden, gehören ls, ps, head, tail, more, cat, sort, lp, grep und wc.
241
magnum
Sonderzeichen der Shells
Das doppelte Pipe-Zeichen In einem Shellskript kann mit Hilfe von zwei Pipe-Zeichen eine ODER-Verknüpfung programmiert werden. Die Zeile befehl1 || befehl2
bedeutet, dass der zweite Befehl nur ausgeführt wird, wenn der erste Befehl nicht erfolgreich war. Im folgenden Beispiel ermittelt die if-Anweisung in einem Shellskript, ob ein Jahr ein Schaltjahr ist oder nicht: if (( (jahr % 400) == 0 )) || (( (jahr % 4 ) == 0 && ( jahr % 100 ) != 0 )) then print "Das Jahr ist ein Schaltjahr" else print "Das Jahr ist kein Schaltjahr" fi
Die Schaltjahrberechnung lautet: alle 4 Jahre ein Schaltjahr, alle vollen 100 Jahre nicht, aber alle vollen 400 Jahre jedoch wieder. In der if-Anweisung wird geprüft, ob ein Jahreswert durch 400 geteilt 0 ergibt (entspricht der Bedingung »alle 400 Jahre«) oder ob sich das Jahr durch 4 teilen lässt und 0 ergibt, aber gleichzeitig beim Teilen durch 100 ungleich 0 ist (entspricht der Bedingung »alle 4 Jahre, aber alle vollen 100 Jahre nicht«). Wenn eine der beiden Abfragen zutrifft, handelt es sich um ein Schaltjahr und eine entsprechende Meldung wird ausgegeben.
6.2.4
Gesamtüberblick über die Sonderzeichen
Die folgende Tabelle fasst zusammen, welche Sonderzeichen von welchen Shells verwendet werden: Sonderzeichen
Bourne-Shell
Korn-Shell/Bash C-Shell/TC-Shell
Fragezeichen ?
ja
ja
ja
Stern *
ja
ja
ja
Eckige Klammern [ ]
ja
ja
ja
Negierte eckige Klammern [! ]
ja
ja
nein
Kommentarzeichen #
ja
ja
ja
Semikolon ;
ja
ja
ja
Ampersand &
nein, nur mit jsh ja
ja
Runde Klammern ( )
ja
ja
ja
Dollarzeichen $
ja
ja
ja
Backslash \
ja
ja
ja
Einfache Hochkommata '...'
ja
ja
ja
Tab. 6.3: Welche Shell kennt welche Sonderzeichen?
242
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Sonderzeichen
Bourne-Shell
Korn-Shell/Bash C-Shell/TC-Shell
Doppelte Hochkommata »...«
ja
ja
ja
Rückwärtige Hochkommata `...`
ja
ja
ja
Tildezeichen ~
nein
ja
ja
Minuszeichen -
nein
ja
nein
Ausrufezeichen !
nein
nein
ja
Standardeingabeumlenkung
ja
ja
ja
Standardfehlerausgabeumlenkung 2> ja
ja
nein
Pipe-Mechanismus |
ja
ja
ja
Tab. 6.3: Welche Shell kennt welche Sonderzeichen? (Forts.)
Die nachfolgende Tabelle enthält Schreibweisen von Befehlen und deren Bedeutung: Schreibweise
Bedeutung
befehl &
Der Befehl wird im Hintergrund ausgeführt, die Befehlszeile wird nicht blockiert und kann weitergenutzt werden.
befehl1 ; befehl2
Mehrere Befehle werden in einer Befehlszeile hintereinander ausgeführt.
(befehl1 ; befehl2)
Die Befehle werden hintereinander in einer Subshell ausgeführt.
befehl1 | befehl2
Der erste Befehl übergibt mit Hilfe des Pipe-Symbols seine Ausgabe als Eingabe an den zweiten Befehl.
befehl1 `befehl2`
Beim zweiten Befehl wird eine Befehlssubstitution durchgeführt und seine Ausgabe wird dem ersten Befehl als Argument übergeben.
befehl1 $ (befehl2)
Beim zweiten Befehl wird eine Befehlssubstitution durchgeführt und seine Ausgabe dem ersten Befehl als Argument übergeben.
befehl1 && befehl2
Bei dieser UND-Verknüpfung wird der zweite Befehl nur ausgeführt, wenn der erste Befehl erfolgreich war.
befehl1 || befehl2
Bei dieser ODER-Verknüpfung wird der zweite Befehl nur ausgführt, wenn der erste Befehl fehlgeschlagen ist.
{ befehl1 ; befehl2 }
Die Befehle werden in der laufenden Shell ausgeführt.
Tab. 6.4: Schreibweise von Befehlen
243
Sonderzeichen der Shells
6.2.5
magnum
Funktionen
Funktionen sind eine Möglichkeit der Shellprogrammierung, um angepasste Befehle zu erzeugen. Eine Funktion ist eine Gruppe von Befehlen, die als eigenständige Routinen definiert sind. Bei Aliasen ist es nicht möglich, Argumente zu übergeben, das heißt, einem Alias für den Befehl ls -al kann zum Beispiel kein Argument für ein bestimmtes Verzeichnis mitgegeben werden, sondern es muss vor dem Aufruf des Befehls in das entsprechende Verzeichnis gewechselt werden. Einer Funktion hingegen können zum Beispiel ein oder mehrere Verzeichnisnamen als Argumente zur Verarbeitung übergeben werden. Eine Funktion wird in diesem Format definiert: function name { befehl; . . . befehl; }
In diesem Beispiel wird eine Funktion mit dem Namen proc erzeugt und anschließend aufgerufen. Die Funktion führt den Befehl ps -ef aus und übergibt dessen Ausgabe dem Befehl wc, um die Gesamtanzahl aller im Moment am System aktiven Prozesse anzuzeigen: $ function proc { ps -ef | wc -l; } $ proc 97 $
Im nächsten Beispiel wird eine Funktion mit dem Namen list erzeugt, die den Befehl ls ausführt und dessen Ausgabe dem Befehl wc übergibt, um die Gesamtanzahl aller Dateien und Unterverzeichnisse im aktuellen Verzeichnis anzuzeigen. $1 ist ein Platzhalter für das Argument, das der Funktion übergeben wird. $ function anzeigen { ls -al $1 | wc -l; } $ anzeigen /usr 195 $
Wurde ein Befehlsname sowohl für eine Funktion als auch für einen Alias verwendet, dann hat der Alias Vorrang. Mit folgendem Befehl wird eine Liste aller definierten Funktionen angezeigt: $ typeset -f
Funktionen können auch definiert werden, ohne den Ausdruck function im Befehl zu verwenden, zum Beispiel kann function proc { ps -ef | wc -l; } auch als proc () { who | wc -l; } definiert werden.
244
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
6.3 Die verschiedenen Shells In diesem Abschnitt wird vor allem die Bourne-Again-Shell beschrieben, wobei Abweichungen zur Bourne- und Korn-Shell kurz erwähnt werden und ein Unterabschnitt der C- und TC-Shell gewidmet wird, um die Unterschiede kurz herauszuarbeiten. Shells interpretieren sowohl die systemweiten als auch die standardmäßig für den Benutzer vorgegebenen Initialisierungsdateien, wie zum Beispiel /etc/profile oder /etc/.login (vergleiche Kapitel 11).
6.3.1
Die Bourne-Again-Shell
Die Bourne-Again-Shell ist als Befehl bash in einem Standard-Linux-System immer zu finden. Die Syntax des Befehls lautet: # bash [-option(en)]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
- oder --
Alle nachfolgenden Strings sind für den Befehl Argumente und keine Optionen. (Hinter dem Bindestrich - bzw. den Bindestrichen -- ist mindestens ein Leerzeichen erforderlich, um das allein stehende - bzw. -von einer Option unterscheiden zu können, zum Beispiel das Löschen einer Datei mit dem Namen -file: rm -- -file.)
-c string
Sofortiges Ausführen der Befehle, die die Zeichenkette string enthält, in der zu startenden Shell
-i
Starten einer interaktiven Shell (mit Eingabeprompt)
--init-file datei Führt die Befehle der angegebenen Datei beim Starten der Shell oder --rcfile datei anstelle der standardmäßigen Datei ~/.bashrc aus -l oder --login
Die Shell verhält sich wie eine Anmeldeshell.
--noediting
Verwendet nicht die GNU-readline-Bibliothek beim Einlesen der Befehle, wenn die Shell interaktiv ist
--noprofile
Die Initialisierungsdateien /etc/profile, ~/.bash_profile, ~/.bash_login oder ~/.profile werden beim Starten der Shell nicht gelesen.
--norc
Die Initialisierungsdatei ~/.bash_profile wird beim Starten der Shell nicht gelesen.
--posix
Das Verhalten der Shell passt sich dem POSIX-Standard an.
-r oder --restricted
Die Shell wird eingeschränkt (restricted). Der Benutzer darf in diesem Fall nur noch sehr wenige Befehle ausführen.
-s
Einlesen der Befehle von der Standardeingabe. Mit dieser Option ist es möglich, beim Aufruf einer interaktiven Shell Positionsparameter zu setzen (vergleiche Abschnitt ).
-v oder --verbose
Ausführliche Ausgabe
-x
Gibt Befehle und deren Argumente so aus, wie sie in Ausführung gegeben wurden, also unter anderem mit aufgelösten Metazeichen
Tab. 6.5: Die Optionen des Befehls bash
245
Die verschiedenen Shells
magnum
Wurde einem Benutzer in der Datei /etc/passwd die Bourne-Again-Shell als Anmeldeshell zugewiesen (vergleiche Kapitel 11), dann wird zuerst die Datei /etc/profile als systemweite Initialisierungsdatei eingelesen. Dies gilt auch für die Korn- und Bourne-Shell. Nach dem Abarbeiten dieser Datei wird im Homeverzeichnis des Benutzers nach der Initialisierungsdatei .bash_profile gesucht und diese eingelesen. Entweder wird diese beim Neuanlegen eines Benutzers in dessen Verzeichnis kopiert oder sie kann manuell erstellt werden. Sie kann bestimmte Einstellungen für die Benutzerumgebung enthalten. Alternativ wird von der Bourne-Again-Shell die Initialisierungsdatei .profile im Homeverzeichnis eines Benutzers gelesen. In dieser Datei kann ein Benutzer jederzeit Ergänzungen vornehmen, um seine eigene Arbeitsumgebung anzupassen, zum Beispiel seine eigenen Variablen definieren oder den Filter umask neu setzen. Normalerweise werden in dieser Datei Umgebungsvariablen und Terminaleinstellungen definiert oder es wird der notwendige Befehl zum Starten einer Anwendung beim Anmelden festgelegt. Die Initialisierungsdatei .bash_profile wird nur einmal von der Anmeldeshell ausgeführt oder beim Aufrufen eines Konsolfensters gelesen und muss sich immer im Homeverzeichnis des Benutzers befinden. Änderungen der Datei werden normalerweise erst bei der nächsten Anmeldung aktiv. Diese Änderungen lassen sich aber auch sofort aktivieren, indem die Datei mit Hilfe des Punktbefehls ».« neu eingelesen wird: $ . ~/.bash_profile
Als nächste Initialisierungsdatei wird bei der Bourne-Again-Shell die Datei ~/.bashrc gelesen, sofern sie vorhanden ist. Ein Benutzer kann zum Beispiel folgende Einstellungen in der Datei definieren:
쮿
Festlegen der Promptzeichen mit Hilfe der Variablen PS1 und PS2
쮿
Aliasdefinitionen
쮿
Erstellung von Korn-Shell-Funktionen
쮿
Festlegen von Variablen für die History-Umgebung
쮿
Definieren von Korn-Shell-Optionen
쮿
Einlesen weiterer Initialisierungsdateien
Änderungen in dieser Initialisierungsdatei werden auch nur aktiv, wenn Sie sich das nächste Mal anmelden oder die Dateien mit dem Punkt-Befehl neu einlesen. Die Bourne-Shell kennt als Initialisierungsdatei eines Benutzers nur die .profile. Die Korn-Shell liest ebenfalls zuerst die ~/.profile auf Benutzerebene und wenn in dieser Datei die Zuweisung ENV=~/.kshrc steht, wird auch diese Datei gelesen. Anstelle des Namens .kshrc kann ein Benutzer auch einen beliebigen anderen Namen wählen und der Variablen ENV in der Datei ~/.profile zuweisen. Im Homeverzeichnis lässt sich bei der Bourne-Again-Shell auch eine Datei mit dem Namen .bash_logout erzeugen, um Aktionen für den Abmeldevorgang eines Benutzers zu definieren.
246
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Optionen der Bourne-Again-Shell Optionen sind Schalter, die das Verhalten der Shell steuern. Mit diesen Optionen können Sie das Verhalten der Bourne-Again- oder Korn-Shell steuern. Die Bourne-Shell kennt diese Optionen nicht. Die Werte der Optionen sind entweder on oder off. Mit dem Befehl set –o geben Sie die gesetzten Optionen aus: $ set –o allexport off braceexpand on emacs on errexit off hashall on histexpand on history on ignoreeof off interactive-comments keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off posix off privileged off verbose off vi off xtrace off
on
Mit Hilfe des Befehls $ set -o option
aktivieren Sie eine Option, das heißt, Sie setzen diese auf on. Der Befehl $ set +o option
deaktiviert die Option, das heißt, Sie setzen diese auf off. Die folgende Tabelle erläutert die wichtigsten Optionen. Option
Beschreibung
allexport
Durch die Aktivierung dieser Option werden neu definierte Shellvariablen automatisch zu globalen Umgebungsvariablen.
emacs
Durch die Aktivierung dieser Option kann die Befehlszeile mit Hilfe der Funktionen des Editors emacs bearbeitet werden.
errexit
Durch die Aktivierung dieser Option wird die Shell bei der Rückgabe eines Statuswerts ungleich 0 beendet, also sobald ein Fehler auftritt.
Tab. 6.6: Optionen der Bourne-Again-Shell
247
magnum
Die verschiedenen Shells
Option
Beschreibung
history
Es wird eine Befehlshistorie in der Datei ~/.bash_history aufgezeichnet.
ignoreeof
Durch die Aktivierung dieser Option ist es nicht mehr möglich, eine Shell durch Betätigen von (Ctrl)+(d) zu beenden.
interactivecomments
Durch die Aktivierung dieser Option werden alle Zeichen, die dem Hashzeichen # folgen, als Kommentare behandelt.
keyword
Durch die Aktivierung dieser Option werden alle Variablen eines Befehls automatisch als Shellvariablen definiert.
markdirs
Durch die Aktivierung dieser Option werden alle Verzeichnisse bei der Ausgabe mit einem nachfolgenden Schrägstrich (/) gekennzeichnet, wenn der aufrufende Befehl ein Metazeichen beinhaltet, zum Beispiel ls *.
monitor
Durch die Aktivierung dieser Option werden beim Beenden von Hintergrundprozessen Meldungen ausgegeben.
noclobber
Durch die Aktivierung dieser Option wird verhindert, dass bei der Ausgabeumlenkung bereits bestehende Dateien überschrieben werden.
noexec
Durch die Aktivierung dieser Option werden Befehle nicht ausgeführt, sondern nur auf ihre Richtigkeit hin überprüft.
noglob
Durch die Aktivierung dieser Option wird verhindert, dass die Shell Dateinamen erzeugen kann, die Sonderzeichen enthalten.
nolog
Durch die Aktivierung dieser Option werden keine definierten Funktionen in der History-Liste gespeichert.
notify
Durch die Aktivierung dieser Option wird dem Benutzer angezeigt, dass ein Hintergrundprozess beendet wurde, ohne dass zuvor die (¢)-Taste an der Befehlszeile betätigt werden muss.
nounset
Durch die Aktivierung dieser Option wird ein Befehl abgebrochen, wenn er nicht existierende Variablen verwendet.
privileged
Durch die Aktivierung dieser Option wird verhindert, dass die Initialisierungsdateien (.profile und .kshrc) im Homeverzeichnis des Benutzers verwendet werden. Stattdessen wird die Datei /etc/suid_profile gelesen.
verbose
Durch die Aktivierung dieser Option wird jeder Befehl vor seiner Ausführung nochmals so angezeigt, wie er von der Shell gelesen wurde.
vi
Durch die Aktivierung dieser Option kann die Befehlszeile mit Hilfe der Funktionen des Editors vi bearbeitet werden.
xtrace
Durch die Aktivierung dieser Option wird jeder Befehl vor seiner Ausführung nochmals so angezeigt, wie er von der Shell interpretiert wird.
Tab. 6.6: Optionen der Bourne-Again-Shell (Forts.)
Die Optionen der Korn-Shell stimmen weitestgehend mit denen der BourneAgain-Shell überein. Im folgenden Beispiel werden Dateien bei der Ausgabeumlenkung durch die Verwendung der Shell-Option noclobber geschützt. Wenn die Standardausgabe in eine bereits vorhandene Datei umgelenkt wird, wird diese normalerweise überschrie-
248
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
ben, was zu Datenverlust führen kann. Wurde die Option noclobber aktiviert, dann lässt die Shell nicht zu, dass die Standardausgabe in eine bereits vorhandene Datei umgelenkt wird, und gibt eine Fehlermeldung aus. $ set -o noclobber $ set -o | grep noclobber noclobber on $ ls -l > dateiliste $ cat /etc/system > dateiliste -bash: dateiliste: cannot overwrite existing file
Sie deaktivieren die Option noclobber einmalig, indem Sie in der Befehlszeile statt > die Syntax >| verwenden. In diesem Fall wird trotz der aktivierten Option noclobber der Inhalt der Datei überschrieben. $ ls -al >| dateiliste
Um die Option noclobber dauerhaft zu deaktivieren, geben Sie folgenden Befehl ein: $ set +o noclobber
Integrierte Befehle der Bourne-Again-Shell Die nachfolgende Auflistung enthält nur einige der wichtigsten in die BourneAgain-Shell integrierte Befehle. Eine vollständige Liste mit ausführlichen Erläuterungen erhalten Sie mit dem Befehl man bash.
Der Befehl cd Mit diesem Befehl kann zwischen Verzeichnissen gewechselt werden (vergleiche Kapitel 7).
Der Befehl exec Wenn Sie dem Befehl exec einen Programmnamen als Argument übergeben, wird dieses Programm statt der aktuellen Shell ausgeführt. Das bedeutet, dass die Shell durch die Ausführung des Programms ersetzt wird. Wenn Sie zum Beispiel den Befehl ls aufrufen, dann wird von der Shell für die Ausführung des Befehls ls ein so genannter Kindprozess erzeugt. Wenn Sie aber den Befehl exec ls starten, ruft die Shell ls auf, ohne einen Kindprozess zu erzeugen, das heißt, die aufrufende Shell beendet sich selbst sofort wieder. Das spart zum einen Platz im Hauptspeicher und zum anderen wird verhindert, dass der aufgerufene Befehl mit der aufrufenden Shell gemeinsam beendet wird. Das soeben beschriebene Verhalten wird deutlich, wenn Sie in einem Terminalfenster folgendes Beispiel eingeben: $ exec less /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:Daemon:/sbin:/bin/bash ... q
Sobald Sie mit der Taste (q) den Befehl less beenden, wird auch das Terminalfenster geschlossen.
249
Die verschiedenen Shells
magnum
Der Befehl exit Dieser Befehl beendet die Shell.
Der Befehl hash Dieser Befehl gibt eine so genannte Hash-Tabelle aus. In dieser sind die absoluten Pfade für die Ausführung von Befehlen gespeichert, die entweder eingegeben oder über die Variable PATH gesucht wurden. Beim nächsten Aufruf eines Programms müssen auf diese Weise nicht wieder alle Verzeichnisse der Variablen PATH durchsucht werden, falls sich bereits ein entsprechender Eintrag in der Tabelle befindet. $ hash hits command 1 /bin/ps 2 /usr/bin/man
Die Spalte »hits« enthält die Anzahl der Aufrufe für den Befehl und die Spalte »commands« enthält den vollen Pfadnamen des Befehls. Die Hash-Tabelle kann durch Verwendung der Option –r neu aufgebaut werden. Sie wird außerdem gelöscht, wenn die Variable PATH verändert wird.
Der Befehl pwd Dieser Befehl gibt das aktuelle Verzeichnis aus.
Der Befehl trap Mit Hilfe des Befehls trap lassen sich an ein Shellskript gesandte Signale abfangen.
Der Befehl type Dieser Befehl gibt aus, wie ein Befehl von der Shell interpretiert wird (vergleiche Kapitel 7).
Der Befehl ulimit Mit Hilfe dieses Befehls können Benutzern Grenzen für den Verbrauch von Systemressourcen gesetzt werden.
Der Befehl umask Mit Hilfe dieses Befehls können die Standardzugriffsrechte gesetzt werden (vergleiche Kapitel 8).
Der Befehl command Der Befehl kann ein Programm, das als Argument übergeben wurde, ausführen, wobei nicht nach definierten Funktionen gesucht wird. Mit Hilfe der Option –p wird der Befehl mit einem Standardwert für PATH durchgeführt, um zu gewährleisten, dass alle Standardprogramme gefunden werden. Die Option –v gibt zusätzlich den Pfad an, der für den angegebenen Befehl verwendet wird. Die Option –V informiert darüber, wie die Shell den Befehl interpretiert: $ command –v more /usr/bin/more $ command –V ls more is a tracked alias for /usr/bin/ls
250
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Der Befehl fc Die Bourne-Again-Shell verwaltet mit diesem Befehl ihre History-Liste. Sie können die letzten 16 Befehle mit fc –l anzeigen lassen. Die Ausgabe erfolgt dann mit einer Nummer, die anzeigt, in welcher Reihenfolge die Befehle eingegeben wurden. $ fc –l 32fc -l 33cd /user 34pwd 35cd /usr 36pwd 37cd ...
Sie können aber auch die Nummern der aufzulistenden Befehle als Parameter übergeben: $ fc –l 33 41
Die Option –n unterdrückt die Ausgabe der Zeilennummer, während die Option –r die Liste in umgekehrter Reihenfolge ausgibt. Wenn Sie die Option –e verwenden, können Sie die History-Liste an der Befehlszeile mit dem Editor ed editieren. Alternativ können Sie mit der Option –e einen anderen Editor angeben, zum Beispiel den vi: $ fc –e /bin/vi 45
Der vi wird geöffnet und Sie können die angegebene Zeile darin editieren. Wenn Sie den vi beenden, wird der geänderte Befehl ausgeführt.
Der Befehl typeset Dieser Befehl zeigt die exportierten Variablen und deren Typ an. Die folgende Auflistung ist nur ein Ausschnitt der kompletten Ausgabe eines standardmäßigen Linux-Systems: $ typeset ACLOCAL_PATH=/opt/gnome/share/aclocal BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release"nux") BASH_VERSION='2.05b.0(1)-release' COLORTERM=1 COLUMNS=80 CPU=i686 CVS_RSH=ssh DEFAULT_WM=kde ...
Die Syntax des Befehls lautet: $ typeset [option] [variable] [wert]
Mit einem Pluszeichen (+) werden Optionen einer Variablen oder Funktion zugewiesen, mit einem Minuszeichen (–) werden sie wieder deaktiviert. Die Option –f zeigt die Funktionen zusammen mit dem Quellcode an. Die Funktion –x exportiert die Variablen oder Funktionen automatisch, sobald diese definiert werden.
251
Die verschiedenen Shells
magnum
Weitere Funktionen der Bourne-Again-Shell Die History-Funktion Diese Funktion ist vollständig in der Bourne-Again-Shell implementiert. Sie lässt sich über die Pfeiltasten aktivieren. Auf diese Weise kann der Benutzer bereits ausgeführte Befehle wiederholen, editieren oder ändern. Die bereits getätigten Befehle werden in der Datei ~/.bash_history gespeichert. Der Befehl history gibt standardmäßig die letzten 1000 gespeicherten Befehle aus. Der Name der History-Datei und ihre Größe, das heißt, auch die Anzahl der gespeicherten Befehle, lassen sich mit Hilfe der Variablen HISTFILE bzw. HISTSIZE ändern. Die History-Funktion der wesentlich älteren Korn-Shell ist leider nicht so komfortabel. Die History-Liste mit den zuletzt verwendeten Befehlen wird auch in Form einer Datei geführt, die standardmäßig .sh_history lautet. Bereits eingegebene Befehle können mit Hilfe eines Inline-Editors, wie zum Beispiel des vi, editiert und wiederholt werden. Dazu muss die Umgebungsvariable EDITOR oder bei der Korn-Shell alternativ die Variable VISUAL entsprechend definiert werden. Der Befehl history gibt standardmäßig die letzten 16 Befehle aus, wobei ein Befehl mittels seiner Zeilennummer wieder aufgerufen werden kann. Zum Beispiel zeigt der Befehl $ history -4
den letzten und die vier vorherigen Befehle an. Mit Hilfe des Befehls r können Sie einen bestimmten Befehl durch Aufruf seiner Nummer wiederholen: $ r 210
Die Dateiergänzungsfunktion Sie können sich in der Bourne-Again-Shell Schreibarbeit sparen, indem Sie den File Completion-Mechanismus bzw. die Dateiergänzungsfunktion verwenden. Mit ihrer Hilfe werden Namen von Dateien und Verzeichnissen im aktuellen Verzeichnis ergänzt. Dazu geben Sie einfach den Anfang eines Verzeichnis- oder Dateinamens ein und drücken dann auf die Taste (ÿ_). Wenn der angegebene Anfang eindeutig ist, wird der Name entsprechend ergänzt. Ist er nicht eindeutig, müssen Sie zweimal auf die Taste (ÿ_) drücken, um alle zutreffenden Dateinamen zu erhalten. Anschließend geben Sie so viele Zeichen ein, die notwendig sind, um den Dateinamen eindeutig zu identifizieren, und drücken dann wieder auf die Taste (ÿ_). Auf dieselbe Weise lassen sich am Anfang der Befehlszeile auch Befehlsnamen ergänzen.
252
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Auch die Korn-Shell kennt eine Dateiergänzungsfunktion, die allerdings etwas umständlicher zu handhaben ist. Zuerst einmal sollte der Variablen EDITOR der Befehl vi zugewiesen werden: $ EDITOR=/bin/vi
Nun ist es möglich, mit Hilfe der Tastenkombination (ESC)+(\) unvollständige Datei- und Verzeichnisnamen automatisch zu ergänzen. Geben Sie den Verzeichnisnamen teilweise ein, zum Beispiel: $ cd /ex
Betätigen Sie dann die Tastenkombination (ESC)+(\) und der Eintrag lautet anschließend: $ cd /export
Wenn Ihre Eingabe nicht eindeutig ist, wird der Pfad nicht ergänzt. Alternativ können Sie dann über die Tastenkombination (ESC)+(=) eine Auswahlliste der möglichen Verzeichnisnamen erhalten. Mit der Tastenkombination (ESC)+(*) können Sie alle möglichen Alternativen eines Datei- oder Verzeichnisnamens in einen Befehl einfügen, zum Beispiel: $ ls her1 her2 her3 her4 testdatei nocheinedatei letztedatei $ cp h
Betätigen Sie nun die Tastenkombination (ESC)+(*) und der Eintrag lautet anschließend: $ cp her1 her2 her3 her4
Sie können den Befehl dann zum Beispiel noch manuell ergänzen und aufrufen: $ cp her1 her2 her3 her4 /tmp
Die Alias-Funktion Ein Alias ist eine Abkürzung für einen Linux- oder Unix-Befehl und wird mit Hilfe des Befehls alias definiert, zum Beispiel: $ alias dir=’ls –l | more’ $ alias dir ls –l | more
Die Shell durchsucht vor der Ausführung eines Befehls eine Liste von Aliasen und ersetzt gegebenenfalls das erste Wort der Befehlszeile durch den Text des Alias. Vor und nach dem Gleichheitszeichen einer Alias-Definition dürfen keine Leerzeichen stehen. Die Alias-Zuweisung muss außerdem quotiert werden, wenn darin Sonder- oder Leerzeichen enthalten sind. Trennen Sie mehrere Alias-Definitionen durch Strichpunkte voneinander.
253
Die verschiedenen Shells
magnum
Die Bourne-Again- und die Korn-Shell enthalten bereits standardmäßig mehrere vordefinierte Aliase, die gemeinsam mit vom Benutzer definierten Aliasen mit dem Befehl alias angezeigt werden können. $ alias alias +='pushd .' alias -='popd' alias ..='cd ..' alias ...='cd ../..' ... alias l='ls -alF' alias la='ls -la' alias ll='ls -l' ...
Alias-Definitionen sind häufig Abkürzungen für lange Befehle. Sie können mit Hilfe von Aliasen aber auch interaktive Optionen bei Befehlen quasi standardmäßig aktivieren, wie zum Beispiel bei den Befehlen rm, cp und mv: $ alias rm="rm -i" $ rm her1 rm: remove her1: (yes/no)? n
In diesem Fall werden Sie von der Shell erst gefragt, bevor Sie eine vorhandene Datei löschen können. Eine Alias-Definition lässt sich einmalig deaktivieren, indem Sie vor den Alias einen Backslash (\) schreiben: $ rm her2 rm: remove her2 (yes/no)? n $ \rm her2 $ ls her2 her2: No such file oder directory
Mit Hilfe des Befehls unalias können Sie Aliase aus der Alias-Liste wieder löschen, zum Beispiel: $ unalias dir $ dir ksh: dir: not found
Alias-Definitionen müssen in Initialisierungsdateien hinterlegt werden, wie zum Beispiel die Dateien ~/.profile oder ~/.bash_profile, damit sie nach jedem Systemstart in der Shell bekannt sind.
Funktionen Mit Hilfe von Funktionen können Sie angepasste Befehle konstruieren, da im Gegensatz zu Aliasen die Übergabe von Argumenten möglich ist. Um den im vorherigen Abschnitt definierten Alias dir für ein bestimmtes Verzeichnis aufzurufen, mussten Sie zuvor in dieses Verzeichnis wechseln. Einer Funktion können dagegen ein oder mehrere Verzeichnisnamen als Argument(e) übergeben werden. Eine Funktion definieren Sie mit folgender Syntax: $ function name { befehl; . . . befehl; }
254
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Im folgenden Beispiel wird eine Funktion mit dem Namen anzahl erzeugt, die den Befehl ls aufruft und die Ausgabe dem Befehl wc übergibt, der die Gesamtanzahl aller Dateien und Unterverzeichnisse ausgibt. $1 ist der Parameter für das Argument, das der Funktion übergeben wird. $ function anzahl { ls -al $1 | wc -l; } $ anzahl /usr 51
Wenn Sie sowohl einen Alias als auch eine Funktion mit demselben Namen erstellt haben, dann wird die Alias-Definition vorrangig behandelt. Mit folgendem Befehl erhalten Sie eine Liste aller definierten Funktionen: $ typeset -f
Sie können Funktionen auch definieren, ohne den Begriff function im Befehl anzuwenden. Die obige Funktion ließe sich auch wie folgt definieren: anzahl () { who | wc -l; }. Sie können eine Funktion auch wieder löschen, indem Sie den folgenden Befehl verwenden: $ unset –f funktionsname
6.3.2
Die C- und TC-Shell
Die C-Shell erhielt ihren Namen aufgrund der Ähnlichkeit ihrer Shellprogrammierung mit der Programmiersprache C. Das Standardpromptzeichen ist das Prozentzeichen (%), wobei unter Linux vor dem Prozentzeichen in der Regel der Rechnername angezeigt wird. Auch in der C-Shell hat root das Hashzeichen als Prompt. Bei der C-Shell bleiben gestartete Hintergrundprozesse erhalten, auch wenn der Vaterprozess beendet wird, zum Beispiel durch das Abmelden eines Benutzers. Wenn sich ein Benutzer, dem in der Datei /etc/passwd die C-Shell zugewiesen wurde, am System anmeldet, dann wird zuerst die systemweite Initialisierungsdatei /etc/ .login gelesen. Die standardmäßig von Linux vorgegebene Datei /etc/.login ähnelt inhaltlich der Initialisierungsdatei /etc/profile der Bourne- und Korn-Shell. Dann wird die Initialisierungsdatei .cshrc gelesen, die sich ebenfalls im Homeverzeichnis des Benutzers befindet. Hier werden in der Regel Definitionen für Aliase und für den History-Mechanismus hinterlegt. Im Homeverzeichnis lässt sich auch eine Datei mit dem Namen .logout erzeugen, um Aktionen für den Abmeldevorgang eines Benutzers zu definieren.
255
Die verschiedenen Shells
magnum
Optionen der C-Shell und TC-Shell Sie können beim Aufrufen einer C-Shell das Verhalten mit Hilfe der folgenden Optionen festlegen: Option
Bedeutung
-e
Im Fehlerfall, das heißt, wenn ein Programm einen Returncode ungleich 0 zurückgibt, soll die Shell beendet werden
-f
Kein Lesen von .cshrc oder .login beim Starten der Shell
-n
Zur Syntaxüberprüfung von Skripten: Befehle werden nur gelesen, nicht ausgeführt
-v
Befehle werden vor ihrer Ausführung angezeigt, wobei nur History-Ersetzungen ausgeführt werden.
-V
Befehle werden vor ihrer Ausführung angezeigt, wobei nur History-Ersetzungen ausgeführt werden. Diese Anzeige wird schon vor dem Lesen von .cshrc aktiviert.
-x
Befehle werden vor ihrer Ausführung angezeigt und alle Ersetzungen werden dabei durchgeführt.
-X
Befehle werden vor ihrer Ausführung angezeigt und alle Ersetzungen werden dabei durchgeführt. Diese Anzeige wird schon vor dem Lesen von .cshrc aktiviert.
Tab. 6.7: Optionen der C-Shell
Die Optionen ignoreeof, noclobber, noglob, notify und verbose, die Sie bereits bei der Korn-Shell kennen gelernt haben, haben in der C-Shell dieselbe Bedeutung genau wie einige weitere Optionen der Korn-Shell. Sie werden auch mit dem Befehl set, aber mit einer anderen Syntax als bei der Korn-Shell aktiviert: suso1% set noclobber
Auch die Syntax, um einen durch noclobber aktivierten Überschreibschutz einmalig zu übergehen, lautet etwas anders: suso1% ls –al >! dateiliste
Integrierte Befehle der C- und TC-Shell Die C-Shell kennt auch die eingebauten Befehle login, exit und exec wie die Bourne-Again- und die Korn-Shell. Die folgende Auflistung weiterer in die C-Shell integrierter Befehle erhebt keinen Anspruch auf Vollständigkeit. hashstat
Dieser Befehl zeigt die Hash-Tabelle an (vergleiche Befehl hash der Bourne-Again-Shell). rehash
Mit diesem Befehl wird die Hash-Tabelle neu aufgebaut, zum Beispiel nach dem Verändern der Variablen path. unhash
Dieser Befehl schaltet die Hash-Funktion ab. logout
Dieser Befehl beendet die Anmeldeshell und zeigt eine neue Anmeldeaufforderung an.
256
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Weitere Funktionen der C- und TC-Shell Die History-Funktion Auch die C-Shell führt eine History-Liste mit den zuletzt verwendeten Befehlen. Aktiviert wird diese Funktion durch das Setzen der Variablen history mit einem numerischen Wert, der die Anzahl der zu speichernden Befehle bestimmt: suso1% set history=60
Der Befehl history gibt die History-Liste aus, wobei ein Befehl mittels seiner Zeilennummer, der ein Ausrufezeichen (!) vorangestellt wird, wieder aufgerufen werden kann: suso1% history 1 ls –a 2 cd /etc 3 pwd 4 vi /etc/passwd 5 cd /sbin suso1% !2 cd /etc
Es ist auch möglich, einen Befehl durch Angabe der ersten Zeichen erneut aufzurufen, zum Beispiel: suso1% !vi vi /etc/passwd
Der letzte Befehl lässt sich durch Eingabe von suso1% !! vi /etc/passwd
wiederholen.
Die Dateiergänzungsfunktion Sie können sich auch bei der C-Shell Schreibarbeit sparen, indem Sie die Dateiergänzungsfunktion bzw. den File Completion-Mechanismus verwenden. Mit ihrer Hilfe werden Namen von Dateien und Verzeichnissen im aktuellen Verzeichnis ergänzt. Dazu muss die Variable filec gesetzt werden: suso1% set filec
Mit Hilfe der Taste (ESC) lassen sich nun Datei- und Verzeichnisnamen ergänzen. Geben Sie den Verzeichnisnamen teilweise ein, zum Beispiel: suso1% cd /ex
Drücken Sie auf die Taste (ESC) und der Eintrag lautet anschließend: suso1% cd /export
Wenn Ihre Eingabe nicht eindeutig ist, wird der Pfad nicht ergänzt. Alternativ erhalten Sie über die Tastenkombination (Ctrl)+(d) eine Auswahlliste der möglichen Verzeichnisnamen.
257
magnum
Variable
Die Alias-Funktion Auch die C-Shell kennt Aliase als Abkürzung für einen Linux-Befehl und wird ebenfalls mit Hilfe des Befehls alias definiert, allerdings mit einer etwas anderen Syntax: suso1% alias dir ’ls –l | more’ suso1% alias dir suso1% dir='ls –l | more'
Die C-Shell durchsucht vor der Ausführung eines Befehls eine Liste von Aliasen und ersetzt gegebenenfalls das erste Wort der Befehlszeile durch den Text des Alias. Eine Alias-Definition kann auch in der C-Shell einmalig deaktiviert werden, indem Sie vor den Alias einen Backslash (\) schreiben: suso1% alias rm "rm –i" suso1% rm her2 rm: remove her2 (yes/no)? n suso1% \rm her2 suso1% ls her2 her2: No such file oder directory
Mit Hilfe des Befehls unalias können Sie Aliase aus der Alias-Liste wieder löschen, zum Beispiel: suso1% unalias dir suso1% dir dir: command not found
Alias-Definitionen sollten auch in der C- und TC-Shell in Initialisierungsdateien hinterlegt werden, damit sie nach jedem Systemstart in jeder Shell bekannt sind.
6.4 Variable Eine Variable ist ein festgelegter Name, der sich auf einen temporären Bereich im RAM bezieht und dem ein bestimmter Wert zugeordnet wurde. Mit Hilfe der in Variablen gespeicherten Informationen kann die Shell verändert werden. Diese Informationen sind auch für andere Prozesse notwendig, um ablaufen zu können. In diesem Abschnitt werden die Variablen der Bourne-Again-, Korn- und Bourne-Shell gemeinsam beschrieben, da es in diesem Bereich eine große Übereinstimmung bei diesen Shells gibt. Abweichungen zwischen den Shells werden angemerkt. Es gibt zwei Arten von Variablen, die vor allem eine unterschiedliche Bedeutung für die Shellprogrammierung haben:
258
쮿
Lokale Variablen, die nur in der Shell bekannt sind, in der sie erzeugt wurden. Sie werden nicht an von der Shell aufgerufene Prozesse oder an andere Shells übergeben.
쮿
Exportierte Variablen oder Umgebungsvariablen, die vom Elternprozess an den Kindprozess weitervererbt werden.
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
6.4.1
Shellvariable
Der in der Shell integrierte Befehl set zeigt alle definierten Variablen einer Shell an, also lokale und Umgebungsvariablen, und gibt deren Werte aus: $ set ACLOCAL_PATH=/opt/gnome/share/aclocal BASH=/bin/bash BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i586-suselinux") BASH_VERSION='2.05b.0(1)-release' COLORTERM=1 COLUMNS=80 CPU=i686 CVS_RSH=ssh DEFAULT_WM=kde DIRSTACK=() EUID=0 GNOMEDIR=/opt/gnome GNOME_PATH=:/opt/gnome:/usr GROUPS=() G_BROKEN_FILENAMES=1 HISTCONTROL=ignoreboth HISTFILE=/root/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 ...
Der Inhalt von Variablen kann mit einem der Variablen vorangestellten Dollarzeichen abgefragt und dann zum Beispiel mit Hilfe des Befehls echo ausgegeben werden: $ echo $USER her
Setzen und Löschen von Shellvariablen Eine Shellvariable lässt sich ganz einfach definieren, indem dem Variablennamen ein Wert zugewiesen wird. Im nachfolgenden Beispiel wird die Variable BER definiert, die als Wert den Pfadnamen eines Verzeichnisses enthält: $ BER=/export/home/her/protokolle/projekt1/berichte $ echo $BER /export/home/her/protokolle/projekt1/berichte $ set | grep BER BER=/export/home/her/protokolle/projekt1/berichte $ pwd /etc $ cd $BER ; pwd /export/home/her/protokolle/projekt1/berichte
Mit Hilfe dieser Variablen kann die Benutzerin her schneller in das entsprechende Unterverzeichnis wechseln. Verwenden Sie vor und nach dem Gleichheitszeichen (=) keine Leerzeichen! Groß- und Kleinschreibung werden unterschieden, die Variablen ber oder Ber oder BER bezeichnen also drei unterschiedliche Variablen!
259
magnum
Variable
Mit dem Befehl unset werden definierte Shellvariablen wieder gelöscht. Im folgenden Beispiel wird die Variable BER gelöscht: $ unset BER
Mit Hilfe des Befehls readonly wird eine Variable so definiert, dass sie nicht mehr verändert oder gelöscht werden kann, solange die Shell aktiv ist. Diese Eigenschaft wird aber nicht an Kindprozesse vererbt: $ readonly BER
Bei Bedarf lassen sich Variablen auch erweitern. Die Variable PATH wird zum Beispiel wie folgt um das Homeverzeichnis eines Benutzers ergänzt. $ echo $PATH /usr/bin:/usr/openwin:/bin/usr/ucb: $ PATH=$PATH:~ $ echo $PATH /usr/bin:/usr/openwin/bin:/usr/ucb:/home/her
Variablen exportieren Wenn eine Umgebungsvariable in einer Subshell verwendet werden soll, dann müssen Sie diese mit Hilfe des Befehls export zuerst exportieren. Dadurch wird eine gesetzte Variable der Shell als globale Umgebungsvariable an alle Folgeprozesse weitergegeben, zum Beispiel: $ PROG=/export/home/her/protokol/projekt1/programme $ echo $PROG /export/home/her/protokol/projekt1/programme $ sh $ echo $PROG $ exit $ export PROG $ bash $ echo $PROG /export/home/her/protokolle/projekt1/programme
Wenn Sie den Befehl ohne Argumente verwenden, wird eine Liste von allen exportierten Variablen angezeigt, zum Beispiel: $ export declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x declare -x ...
260
ACLOCAL_PATH="/opt/gnome/share/aclocal" COLORTERM="1" CPU="i686" CVS_RSH="ssh" GNOMEDIR="/opt/gnome" GNOME_PATH=":/opt/gnome:/usr" G_BROKEN_FILENAMES="1" HISTSIZE="1000" HOME="/home/her" HOST="pc7lsu" HOSTNAME="pc7lsu" HOSTTYPE="i386"
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Der Befehl env ohne Argumente zeigt alle Umgebungsvariablen an, die im Moment definiert sind, und wie sie an Folgeprozesse weitergegeben werden. Das Betriebssystem legt dabei alle wichtigen Standardvariablen der Shell automatisch als Umgebungsvariablen fest. Sie können mit Hilfe des Befehls Variablen für Folgeprozesse verändern. $ env LESSKEY=/etc/lesskey.bin MANPATH=/usr/local/man:/usr/share/man:/usr/X11R6/man:/opt/gnome/man INFODIR=/usr/local/info:/usr/share/info:/usr/info NNTPSERVER=news HOSTNAME=pclsu7 XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB TERM=ansi SHELL=/bin/bash HOST=pclsu7 HISTSIZE=1000 PROFILEREAD=true GNOME_PATH=:/opt/gnome:/usr QTDIR=/usr/lib/qt3 USER=her ...
Die folgende Tabelle fasst alle Befehle zum Setzen, Löschen oder Anzeigen von Variablen nochmals zusammen: Lokale Variable
Exportierte Variable
Bedeutung
VAR=wert
export VAR=wert
Setzen einer Variablen
unset VAR
Löschen einer Variablen
---
set
Anzeige aller lokalen und Umgebungsvariablen
export
---
Anzeige aller exportierten Variablen
env
---
Anzeige aller Umgebungsvariablen
print $VAR oder echo $VAR
Anzeige des Variablenwerts
Tab. 6.8: Überblick über Befehle zum Arbeiten mit Variablen
In folgendem Beispiel wird der Wert der Variablen LANG zur Spracheinstellung für eine einzige Anwendung verändert. In diesem Fall wird die Ausgabe der Hilfe zum Befehl ls in englischer statt in voreingestellter deutscher Sprache ausgegeben: $ export LANG=en_US ; ls --help
6.4.2
Standardvariablen
Außer den Variablen, die ein Benutzer oder der Systemadministrator selbst festlegen kann, gibt es auch Shellvariablen, die bereits von vornherein für bestimmte Zwecke definiert sind. Teilweise lassen sich deren Werte von einem Benutzer verändern. Solche Variablen sind in der Bourne-Again-, Korn- und Bourne-Shell grundsätzlich groß geschrieben.
261
magnum
Variable
In der folgenden Tabelle werden die wichtigsten Standardvariablen der BourneAgain-, Korn- und Bourne-Shell beschrieben: Variable
Beschreibung
CDPATH
Diese Variable ist standardmäßig nicht definiert. Sie enthält alle Verzeichnisse, die vom Befehl cd nach einem Unterverzeichnis durchsucht werden sollen, wodurch die Pfadeingabe abgekürzt wird, denn in alle angegebenen Pfade kann direkt verzweigt werden. Wird diese Variable verwendet, muss unbedingt als Verzeichnis auch der Punkt (.) für das aktuelle Verzeichnis angegeben werden. Ansonsten funktioniert die Angabe von anderen relativen Pfaden nicht mehr.
EDITOR
Diese Variable definiert den Standardeditor der Shell. Bestimmte Programme, wie zum Beispiel Varianten des Befehls crontab, verwenden diese Variable, da sie einen Editor zur Ausführung benötigen.
HOME
Diese Variable enthält den Verzeichnispfad für das Homeverzeichnis des Benutzers, in das der Befehl cd wechselt, wenn er ohne Argument an der Befehlszeile eingegeben wird.
IFS
Diese Variable enthält das interne Feldtrennzeichen, das zum Erkennen von getrennten Worten verwendet wird. In der Regel ist ein solches Feldtrennzeichen das Leerzeichen oder ein Tabulatorzeichen oder der Zeilenumbruch oder ein Doppelpunkt.
LANG
Diese Variable wird zur Einstellung der Sprachumgebung verwendet. Gleichzeitig hat der Wert der Variablen Auswirkung auf Datums- und Zeitausgaben, Währungsangaben und Sortierreihenfolgen. Die Standardeinstellung ist C für USEnglisch. Die Einstellung für die deutsche Sprache lautet de.
LOGNAME
Diese Variable enthält den Anmeldenamen des Benutzers.
MAIL
Diese Variable setzt den Pfad für die Maildatei des Benutzers, die in der Regel /var/mail/benutzername lautet.
MAILCHECK
Diese Variable gibt in Sekunden an, wie oft die Mails für einen Benutzer abgefragt werden sollen. Lautet der Wert 0, dann wird nach jeder Befehlseingabe geprüft, ob neue E-Mails angekommen sind.
MAILPATH
Diese Variable ist eine Ergänzung zur Variablen MAIL und enthält eine Liste von Dateien, in die eingehende E-Mails abgelegt werden sollen. Die Eingabe erfolgt durch Kommata getrennt.
PATH
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von Verzeichnisnamen, die durchsucht werden, wenn die Shell nach einem an der Befehlszeile angegebenen Befehl sucht. Diese Verzeichnisse werden dabei von links nach rechts durchsucht, um den auszuführenden Befehl zu finden. Der erste gefundene Befehl wird von der Shell ausgeführt.
PS1
Diese Variable enthält das primäre Promptzeichen der Shell, bei der Korn-Shell zum Beispiel das Dollarzeichen ($) für einen einfachen Benutzer und das Hashzeichen (#) für root. Sie kann aber jederzeit von einem Benutzer seinen Bedürfnissen entsprechend angepasst werden.
PS2
Diese Variable enthält das sekundäre Promptzeichen, in der Regel das Größerzeichen (>). Dieser Prompt wird von der Shell verwendet, wenn ein Befehl noch nicht abgeschlossen wurde, das heißt, sie wartet auf weitere Eingaben. Der Sekundärprompt kann durch (Ctrl)+(c) abgebrochen werden.
PWD
Diese Variable enthält das aktuelle Verzeichnis.
SHELL
Diese Variable enthält den Namen der Anmeldeshell, zum Beispiel /bin/bash.
Tab. 6.9: Wichtige Variablen der Bourne-Again-, Korn- und Bourne-Shell
262
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Variable
Beschreibung
TERM
Diese Variable enthält den Bildschirmtyp und wird von Programmen ausgewertet, die bildschirmorientiert arbeiten.
VISUAL
Diese Variable definiert ebenfalls den Standardeditor der Shell. Bestimmte Programme, wie zum Beispiel Varianten des Befehls crontab, verwenden diese Variable, da sie einen Editor zur Ausführung benötigen.
Tab. 6.9: Wichtige Variablen der Bourne-Again-, Korn- und Bourne-Shell (Forts.)
Einige der Variablen werden einmalig bei der Anmeldung des Benutzers definiert, wie zum Beispiel HOME und LOGNAME. Andere werden während der Arbeit am System automatisch von der Shell gesetzt, wie zum Beispiel PWD und PS1, und manche werden durch einen Benutzer oder eine Datei zugewiesen, wie zum Beispiel TERM. Die Shellvariablen der Korn-Shell werden auf genau dieselbe Weise wie bei der Bourne-Shell definiert, geändert, gelöscht und exportiert (vergleiche Abschnitt 6.4.1). Die Bourne-Again- und Korn-Shell kennen einige Standardvariablen mehr als die Bourne-Shell. Nachfolgend werden nur die Variablen vorgestellt, die in der BourneShell nicht bekannt sind: Variable
Beschreibung
COLUMNS
Diese Variable definiert die Breite der Befehlszeile für die Ausgabe, der Standardwert sind 80 Spalten.
HISTFILE
Diese Variable enthält den Namen der Datei, in der die History-Liste gespeichert wird. Standardmäßig heißt die Datei .sh_history.
HISTSIZE
Diese Variable definiert, wie viele Befehle in der History-Liste gespeichert werden sollen. Der Standardwert ist 128.
LINES
Diese Variable enthält die Zeilenlänge des Bildschirms, die standardmäßig 25 Zeilen beträgt.
OLDPWD
Diese Variable enthält den Namen des Verzeichnisses, in das vor dem aktuellen Verzeichnis verzweigt wurde.
PPID
Diese Variable enthält die Prozess-ID der übergeordneten Shell.
PS3
Die Variable PS3 enthält das Promptzeichen, das von der Shell-Anweisung select verwendet wird.
PS4
Die Variable PS4 enthält das Promptzeichen für die Shelloption –x und lautet standardmäßig »+«.
RANDOM
Diese Variable gibt eine Zufallszahl zwischen 0 und 32.767 aus.
SECONDS
Diese Variable enthält die Zeit in Sekunden, die vergangen ist, seit die Shell gestartet wurde.
TMOUT
Diese Variable enthält die Zeit in Sekunden, nach der ein automatisches Abmelden des Benutzers erfolgen soll, wenn dieser eine bestimmte Zeitspanne nicht mehr aktiv ist.
Tab. 6.10: Die Variablen der Bourne-Again- und Korn-Shell
263
magnum
Variable
6.4.3
Shellvariablen der C- und TC-Shell
Die C-Shell verwendet ebenfalls lokale und Umgebungsvariablen. Lokale Variablen werden dabei in der Regel klein- und Umgebungsvariablen großgeschrieben. Bestimmte lokale Variablen werden auch automatisch von der Shell zu Umgebungsvariablen umgesetzt. Werden die Umgebungsvariablen TERM oder PATH verändert, dann ändert sich automatisch auch der Wert der entsprechenden lokalen Variablen term oder path. Lokale Variablen werden mit dem Befehl set erzeugt, der ohne Optionen eine Liste von Variablen anzeigt: suso1% set path=($path /home/her) suso1% echo $path /usr/bin /usr/ucb /export/home/her suso1% set cwd/etc home/home/her path(/usr/bin /usr/ucb /home/her) promptsuso1% shell/bin/csh ...
Mit dem Befehl unset variable lässt sich eine lokale Variable wieder löschen. Umgebungsvariablen werden mit dem Befehl der entfernt:
setenv
erzeugt und mit
unsetenv
wie-
suso1% setenv BER / home/her/protokolle/bericht suso1% echo $BER /home/her/protokolle/bericht suso1% unsetenv suso1% echo $BER BER: Undefined variable
Beachten Sie die unterschiedliche Syntax von set und setenv. Der Befehl set verwendet ein Gleichheitszeichen, der Befehl setenv dagegen ein Leerzeichen, um eine Variable zu definieren. In der folgenden Tabelle sehen Sie einige weitere lokale Variablen der C-Shell. Variable
Bedeutung
cwd
Enthält das aktuelle Arbeitsverzeichnis
filec
Definiert den File-Completion-Mechanismus
home
Enthält das Homeverzeichnis des Benutzers
shell
Enthält die Anmeldeshell des Benutzers
term
Enthält den Terminaltyp
user
Enthält den aktuellen Benutzernamen
Tab. 6.11: Lokale Variablen der C-Shell
264
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
6.5 Grundlagen der Shellskriptprogrammierung Shellskripte werden häufig von Systemadministratoren erstellt oder verwaltet, um das Verhalten des Betriebssystems zu steuern oder zu ändern. Ein Shellskript ist eine reine ASCII-Datei, in der Befehle und Kommentare eingetragen sind. Kommentare beginnen mit dem Hashzeichen (#) und dokumentieren, was die jeweiligen Zeilen im Skript beim Ausführen bewirken. Das ausführende Shellprogramm wird in der ersten Zeile des Skripts festgelegt, bei einem Bourne-Shellskript zum Beispiel: #!/bin/sh
Wenn bei einem Shellskript nur normaler Textkommentar oder kein Kommentar in der obersten Zeile steht, wird die aufrufende Shell zur Ausführung des Skripts verwendet. Sie erzeugen ein Shellskript mit einem beliebigen Texteditor, zum Beispiel vi. Anschließend machen Sie die Datei ausführbar, indem Sie die Ausführrechte zuweisen. Sie starten das neue Skript durch Aufruf mit seinem Namen: $ vi testprog ... :wq $ chmod 755 testprog $ ./testprog
Sie sollten als Shellskriptnamen auf keinen Fall script oder test verwenden, da es unter Linux bereits Befehle mit diesem Namen gibt.
6.5.1
Variablen der Shellskriptprogrammierung
Shellskripte können Variablen auswerten. Variablen können in der Shell gesetzt oder beim Aufruf als Positionsparameter übergeben werden. Positionsparameter sind besondere, in die Shell integrierte Variablen, um einem Skript Argumente der Befehlszeile zu übergeben. Dabei wird jede Zeichenkette der Befehlszeile, die durch ein Leerzeichen getrennt hinter dem Skriptnamen steht, als Argument betrachtet, auf das man sich mit Hilfe von Positionsparametern beziehen kann, zum Beispiel: $ testprog argument1 argument2 argument3 ...
Bei Ausführung des Skripts testprog wird von der Shell das erste Argument der Befehlszeile automatisch dem Positionsparameter $1, das zweite Argument dem Positionsparameter $2 usw. übergeben. Die Bourne-Shell kennt die Positionsparameter $1 bis $9, ${10}, ${11} usw. (ab dem zehnten Positionsparameter müssen geschweifte Klammern verwendet werden) und der Name des Skripts wird mit der Variablen $0 abgerufen. Im nächsten Beispiel wird ein Shellskript mit dem Namen my.script erstellt, das an der Befehlszeile übergebene Parameter wieder ausgeben soll.
265
Grundlagen der Shellskriptprogrammierung
magnum
$ vi my.script #!/bin/sh echo Hier sind die gesetzten Positionsparameter: echo Der erste lautet: $1 echo Der zweite lautet: $2 echo Der dritte lautet: $3 echo Der vierte lautet: $4 echo Das Skript heisst: $0 :wq $ chmod 755 my.script
Wenn das neue Skript aufgerufen wird, erhalten Sie folgendes Ergebnis: $ ./my.script heute scheint die sonne Hier sind die gesetzten Positionsparameter: Der erste lautet: heute Der zweite lautet: scheint Der dritte lautet: die Der vierte lautet: sonne Das Skript heisst: my.script
Es gibt zwei weitere spezielle Variablen:
쮿
Die spezielle Variable $# enthält die Anzahl der Argumente der Befehlszeile, die in den Positionsparametern $1 bis $9 gespeichert sind.
쮿
Die spezielle Variable $@ gibt alle Werte der Positionsparameter auf einmal aus.
6.5.2
Bedingungsabfragen
Der Befehl if Die Shellskriptsprache kann auch Bedingungen abfragen und damit Aktionen ausführen, abhängig davon, ob eine Bedingung erfüllt ist oder nicht. Dazu wird der Befehl if verwendet. Die Syntax des Befehls lautet: if befehl1 then befehl2 befehl3 fi
Wird ein Programm beendet, dann gibt es einen Wert an die Shell zurück. Dieser Rückgabewert ist eine Integerzahl zwischen 0 und 255. Der Rückgabewert 0 (null) bedeutet, dass der Befehl erfolgreich ausgeführt wurde. Bei der Anweisung if heißt das Folgendes: Wenn befehl1 den Wert 0 zurückgibt, werden die Anweisungen ausgeführt, die zwischen then und fi stehen. Bei einem Rückgabewert größer 0 wurde die Bedingung nicht erfüllt und die Anweisungen zwischen then und fi werden übersprungen. Die Shellvariable $? enthält den Rückgabewert des zuletzt ausgeführten Befehls, zum Beispiel: $ ls –l /nix /nix: No such file or directory $ echo $? 1
266
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Der Befehl test Der Befehl test wird häufig gemeinsam mit if verwendet. Dieser in die Shell eingebaute Befehl prüft einen Ausdruck und gibt bei einem wahren Ergebnis den Wert 0 zurück. Bei einem falschen Ergebnis ist der Rückgabewert ungleich 0. Im folgenden Beispiel wird der Wert der Variablen TERM überprüft: if test "$TERM" = "vt100" then echo "Das Terminal heisst vt100" fi
Der Befehl test wird normalerweise in Shellskripten nicht ausgeschrieben, sondern in seiner Kurzschreibweise mit den eckigen Klammern verwendet, zum Beispiel: if [ "$TERM" = "vt100" ] then echo "Das Terminal heisst vt100" fi
Vor und nach den eckigen Klammern sowie den Vergleichsoperatoren muss jeweils ein Leerzeichen stehen. Der Befehl test kann nicht nur Zeichenketten vergleichen, sondern kennt viele spezielle Prüfoperatoren für Dateien, die mit der Syntax $ test option datei
verwendet werden. Zu den wichtigsten gehören: Operator
Abfrage
-b
Ist die Datei ein blockorientiertes Gerät?
-c
Ist die Datei ein zeichenorientiertes Gerät?
-d
Ist die Datei ein Verzeichnis?
-e
Ist die Datei vorhanden?
-f
Ist die Datei nur eine reguläre Datei?
-h
Ist die Datei ein symbolischer Link?
-p
Ist die Datei ein Named Pipe?
-r
Ist die Datei für den Benutzer lesbar?
-s
Ist die Datei größer als 0 Byte?
-w
Ist die Datei für den Benutzer schreibbar?
-x
Ist die Datei ausführbar?
Tab. 6.12: Die Operatoren des Befehls test
267
magnum
Grundlagen der Shellskriptprogrammierung
Im nächsten Beispiel wird mit Hilfe eines Dateioperators überprüft, ob eine ausführbare Datei vorliegt: $ vi exe_script #!/bin/sh if [ -x /export/home/her/pos_script ] then echo "Datei ist ein ausfuehrbares Skript!" echo $? fi :wq $ chmod 755 exe_script $ ./exe_script Datei ist ein ausfuehrbares Skript! 0
Darüber hinaus beherrscht der Befehl che. Die Syntax lautet hier:
test
auch noch umfangreiche Dateiverglei-
$ test datei1 option datei2
Zu den Möglichkeiten des Dateivergleichs gehören folgende Operatoren: Operator
Abfrage
( ausdruck )
Der Ausdruck ist wahr.
! ausdruck
Der Ausdruck ist falsch.
ausdr1 -a ausdr2
Sowohl Ausdruck1 als auch Ausdruck2 sind wahr.
ausdr1 -o ausdr2
Entweder Ausdruck1 oder Ausdruck2 ist wahr.
[-n] string
Die Zeichenkette ist nicht leer, also mindestens ein Zeichen lang.
-z string
Die Zeichenkette ist leer.
string1 = string2
Die Zeichenketten sind gleich.
string1 != string2
Die Zeichenketten sind nicht gleich.
zahl1 -eq zahl2
Zahl1 ist gleich Zahl2.
zahl1 -ge zahl2
Zahl1 ist größer oder gleich Zahl2.
zahl1 -gt zahl2
Zahl1 ist größer als Zahl2.
zahl1 -le zahl2
Zahl1 ist kleiner gleich Zahl2.
zahl1 -lt zahl2
Zahl1 ist kleiner als Zahl2.
zahl1 -ne zahl2
Zahl1 ist nicht gleich Zahl2.
datei1 -ef datei2
Datei1 und Datei2 haben dieselbe Gerätenummer und dieselbe Inode-Nummer.
datei1 -nt datei2
Datei1 ist jünger als Datei2.
datei1 -ot datei2
Datei1 ist älter als Datei2.
Tab. 6.13: Die Vergleichsoperatoren des Befehls test
268
Kapitel 6 · Grundlagen der Shells und Shellskriptprogrammierung
Bei den Vergleichen zahl option zahl können Sie auch die Länge von Zeichenketten vergleichen, indem Sie die Option -l string anstelle einer Zahl verwenden.
Der Befehl case Mit dem Befehl case lassen sich mehrere Bedingungen überprüfen. Die Syntax lautet: case wert in wert1 ) befehl befehl wert2 ) befehl befehl wert3 ) befehl befehl * ) befehl esac
;; ;; ;; ;;
Der Anweisung case wird ein Wert übergeben, der in einem Mustervergleich nacheinander mit den Werten wert1, wert2 usw. verglichen wird, bis eine Übereinstimmung vorliegt. Dann werden die diesem Wert zugeordneten Befehle ausgeführt, bis die beiden Strichpunkte erreicht sind. Anschließend erfolgt ein Sprung direkt auf die Zeile nach dem Abschlusselement esac. Stimmt kein Wert mit dem der Variablen überein, werden die Befehle nach dem Wert * ) aufgerufen. In diesem Beispiel wird der Befehl case verwendet: $ vi script.gruss #!/bin/sh stunde=‘date | cut -c12-13‘ echo $stunde case "$stunde" in 0? | 1[01]) echo "Guten Morgen." ;; 1[2-7]) echo "Guten Tag." ;; *) echo "Guten Abend." ;; esac :wq $ chmod 755 script.gruss $ ./script.gruss 16 Guten Tag. $
Der Befehl case wertet die Variable $stunde aus, die den Wert der aktuellen Zeit speichert. Diese wird vom Befehl date über seine Ausgabe an den Befehl cut übergeben, der die Uhrzeit aus dem 12. und 13. Zeichen extrahiert. Der Wert der caseVariablen $stunde wird mit jedem Wert im Skript verglichen und wenn eine Übereinstimmung gefunden wird, wird das Ergebnis am Bildschirm ausgegeben. Der erste überprüfte Wert stellt fest, ob der Wert von $stunde mit einer Stunde am Morgen übereinstimmt (zum Beispiel 1:00 h bis 11:00 h): 0? | 1[01] ).
269
Grundlagen der Shellskriptprogrammierung
magnum
쮿
0? steht für die Zahl 0 und das Wildcardsymbol ?, das ein Platzhalter für genau ein beliebiges Zeichen ist. Die möglichen Werte lauten daher: 01, 02, 03, 04, 05, 06, 07, 08, 09.
쮿
| ist eine ODER-Abfrage.
쮿
1[01] steht für die Zahl eins und die Wildcardzeichen, die sich in den eckigen Klammern ([ ]) befinden, stehen für genau ein beliebiges Zeichen aus diesem Bereich. Die möglichen Werte lauten hier 10 und 11.
Die zweite Prüfung stellt fest, ob der Wert der case-Variablen mit einer Stunde am Nachmittag übereinstimmt (zum Beispiel 12:00 h bis 17:00 h): 1[2-7] ). Die möglichen Werte lauten hier 12, 13, 14, 15, 16 und 17. Die dritte Prüfung stellt fest, ob der Wert der case-Variablen mit einer Stunde am Abend übereinstimmt (zum Beispiel 18:00 h bis 24:00 h): * ). Die möglichen Werte lauten hier 18, 19, 20, 21, 22, 23 und 24.
Der Befehl exit Mit Hilfe des Befehls exit können Sie die Ausführung eines Shellskripts sofort beenden und dabei gleichzeitig einen Rückgabewert zwischen 0 und 255 zuweisen. Die Syntax lautet: exit wert
Der Befehl lässt sich mehrmals in einem Skript verwenden, um dieses zu beenden, wenn eine bestimmte Bedingung eintritt. Da Sie unterschiedliche Argumente für jeden Befehl exit mitgeben können, lässt sich nach einem Abbruch feststellen, wo im Skript dieser Abbruch stattgefunden hat. Wenn das Skript erfolgreich abläuft, verwenden Sie einen exit-Wert von 0, ansonsten definieren Sie den Returncode mit einem Wert größer 0.
270
7 Multimedia »Die neuen Medien bringen viele neue Möglichkeiten, aber auch viele neue Dummheiten mit sich.« – Ernst Ferstl In diesem Kapitel wird zuerst beschrieben, wie die notwendigen Multimediageräte, wie zum Beispiel Soundkarte und CD-ROM- bzw. DVD-Geräte konfiguriert werden können. Dazu werden einige Begriffe im Bereich Audio erläutert und Tools vorgestellt, mit denen Sie Audiodateien abspielen können. Danach erfahren Sie, wie Sie Daten- und Audio-CD-ROMs brennen können. Bei Fedora Core Linux 4.0 gibt es unter KDE und GNOME einige der hier beschriebenen KDE-Programme, ein Teil muss aber manuell nachinstalliert werden. Auch das Brennen von CD-ROMs ist mit der Standard-KDE-Installation nicht möglich, sondern muss mit Hilfe der hier beschriebenen Befehle erfolgen, oder das gewünschte Brennprogramm muss nachinstalliert werden. Alle in diesem Kapitel vorgestellten KDE-Tools müssen Sie nicht unbedingt über das KDE-Hauptmenü starten. Wenn das entsprechende Tool installiert ist, können Sie es auch direkt in einem Terminalfenster mit seinem Namen aufrufen, zum Beispiel können Sie das CD-Spieler-Programm KSCD wie folgt starten: $ kscd &
7.1 Audio unter Linux Unter Linux gibt es viele verschiedene Tools, um Audiodateien abzuspielen. Bevor einige vorgestellt werden, sollen in diesem Abschnitt einige Begriffe geklärt werden.
7.1.1
Audiodateitypen
Um die Begriffe in den nachfolgenden Abschnitten zu klären, werden in diesem Abschnitt kurz auf die unterschiedlichen Audiodateitypen erläutert.
WAV-Dateien WAV bzw. WAVE ist das Audioformat von Microsoft Windows, das mit Windows 95 eingeführt wurde. Es hat sich recht schnell verbreitet, da es zu dieser Zeit wenig andere Formate gab. Da das Format unkomprimiert aufgezeichnet wird, benötigt eine aufgezeichnete Minute ungefähr 10 Mbyte Festplattenplatz. Das WAV-Format lässt sich zwar mit fast jedem Player abspielen, ist aber aufgrund der großen anfallenden Dateimenge ungünstig. Daher wird es in der Regel fast nur noch als Zwischenformat für die Erstellung von MP3- und OGG-VorbisDateien verwendet, die normalerweise nicht mehr ganz dieselbe Tonqualität aufweisen, aber eine sehr effiziente Komprimierung verwenden.
MP3-Dateien MP3 steht für MPEG 1 Audio Layer 3, ein vom Fraunhofer Institut entwickeltes Format, das Musikdateien effizient und ohne nennenswerten Qualitätsverlust
271
Soundkarte einrichten
magnum
komprimieren kann. Dazu werden einfach für das menschliche Gehör nicht mehr wahrnehmbare Tonbereiche und zum Teil auch hörbare Klangspitzen gelöscht. Eine im MP3-Format aufgezeichnete Minute benötigt noch ungefähr 1 Mbyte Festplattenplatz. Das führte dazu, dass sich Musiktauschbörsen besser entwickeln konnten, was schnell rechtliche Folgen hatte, zum Beispiel musste die größte Tauschbörse Napster aufgrund von Prozessen aufgeben. So wurde selbst für den privaten Verwendungszweck ab dem 13. September 2003 gesetzlich verboten, kopiergeschützte CDs zu »knacken« bzw. zu rippen. Kopiergeschützte CDs können auch oft nicht mehr von allen CD-Playern abgespielt werden. Für den Eigenbedarf ist es gesetzlich aber immer noch erlaubt, von nicht kopiergeschützten CDs MP3-Dateien zu erstellen. Musikstücke, die von den Künstlern selbst oder zu Werbezwecken zum Herunterladen angeboten werden, dürfen nach dem im Moment geltenden Gesetz ebenfalls angehört und abgespeichert werden. Als Rippen oder Grabben wird das Auslesen einer Musik-CD und Abspeichern auf einer Festplatte bezeichnet. Ein weiteres Problem mit MP3-Dateien besteht darin, dass der dafür verwendete Algorithmus des Fraunhofer Instituts patentiert ist, das heißt, ein Hersteller eines Encoders muss eine Lizenzgebühr dafür entrichten. Open-Source-Projekte können sich das nicht leisten und haben daher eigene Lösungen entwickelt. Als Encoden wird das Konvertieren einer WAV-Datei in ein Format wie zum Beispiel MP3- oder Ogg-Vorbis bezeichnet, um weniger Speicherplatz zu verbrauchen. Decoden ist der umgekehrte Weg und wird durchgeführt, wenn ein Programm Audio-CDs nur mit WAV-Dateien brennen kann.
OGG Vorbis Das Lizenzproblem führte dazu, dass Ogg Vorbis entwickelt wurde, das im Moment einzige freie (Public Domain) Audioformat, das den bereits beschriebenen Komprimierungsmechanismus nutzt und daher kleinere Dateien erzeugen kann. Die erzeugten Dateien sind häufig kleiner als die im MP3-Format bei meist besserer Qualität. Das Projekt OGG (http://www.vorbis.com) bietet nicht nur das Musikformat, sondern baut auch ein vollständiges freies Multimediasystem auf. Wenn Sie MP3-Dateien besitzen, können Sie diese mit Hilfe eines Konverters in das OGG-Vorbis-Format umwandeln. Die Dateien werden dabei zwar verkleinert, aber häufig wird durch das doppelte Encoden die Qualität auch ein wenig schlechter. Besser ist es in der Regel, von Anfang an mit dem OGG-Vorbis-Format zu arbeiten.
7.2 Soundkarte einrichten Wenn Sie Ihre im Rechner befindliche Soundkarte aktivieren möchten, müssen Sie sich unbedingt als Superuser root am System anmelden, da nur dieser die Installation neuer Geräte durchführen darf. In der Regel wird die Soundkarte von den heutigen Linux-Systemen automatisch erkannt. Sollte dies ausnahmsweise nicht der Fall sein, können Sie die Soundkarte entweder unter SUSE Linux mit dem Befehl alsaconf oder über die grafische Oberfläche aktivieren.
272
Kapitel 7 · Multimedia
Der Befehl steht standardmäßig unter Fedora Core Linux nicht zur Verfügung. Dort kann die Soundkarte mit dem Befehl alsactl konfiguriert werden, der die Konfigurationsdatei /etc/asound.state verwendet. Alternativ können Sie das Paket mit den Alsa-Tools unter http://download.fedora.redhat.com/pub/fedora/ linux/core/development/i386/Fedora/RPMS herunterladen. Da die Alsa-Tools distributionsunabhängig sind, können Sie diese auch von der Webseite des Alsa-Projekts beziehen: http://www.alsa-project.org/download.php.
7.2.1
Der Befehl alsaconf
Öffnen Sie unter SUSE Linux ein Terminalfenster und geben Sie dort den Befehl alsaconf ein:
Bild 7.1: Einstiegsfenster des Programms alsaconf
Ihre Soundkarte wird von alsaconf erkannt und angezeigt.
Bild 7.2: Anzeige der erkannten Soundkarte
273
Soundkarte einrichten
magnum
Bestätigen Sie diese Information mit der (¢)-Taste. Das Tool schlägt Ihnen nun vor, die Soundkarte in die Datei /etc/modeprobe.d/sound bzw. /etc/modprobe.conf einzutragen. Dieser Schritt bewirkt, dass Linux beim nächsten Start automatisch den passenden Treiber lädt.
Bild 7.3: Soundkarte in der Datei /etc/modules.conf eintragen
Bestätigen Sie diesen Vorschlag mit YES. Damit haben Sie Ihre Soundkarte dem Betriebssystem bekannt gemacht. Es folgt noch die Meldung, dass die Soundkarte nun von alsaconf einsatzbereit konfiguriert wird, sowie der Hinweis, dass Sie manuelle Einstellungen zur Lautstärke usw. mit Hilfe des Programms alsamixer oder gamix vornehmen können.
Bild 7.4: Abschlusskonfiguration der Soundkarte
Bestätigen Sie auch diese Meldung mit der Taste (¢). Das letzte Fenster des Programms bietet Ihnen die Möglichkeit, die Soundkarte gleich einmal zu testen.
274
Kapitel 7 · Multimedia
Bild 7.5: Soundkarte testen
Wählen Sie dazu die Option YES, woraufhin ein lang gezogener Klang ertönen sollte. Das Programm beendet sich schließlich mit der Meldung Now ALSA is ready to use.
7.2.2
Lautstärke bei der Soundkarte regeln?
Um die Lautstärke der Soundkarte zu regeln, gibt es mehrere Tools. An dieser Stelle werden nur einige vorgestellt.
Das Tool alsamixer Wenn Sie im Terminalfenster den Befehl alsamixer eingeben, starten Sie ein Programm, mit dem Sie die Lautstärkeregelung der Soundkarte einstellen können. Ein solches Programm sollte mindestens einmal verwendet werden, denn die Grundlautstärke steht oft standardmäßig auf 0.
Bild 7.6: Das Programm alsamixer
275
Soundkarte einrichten
magnum
Sie können mit den Cursortasten (æ) und (Æ) zwischen den verschiedenen Einstellungsmöglichkeiten wechseln und anschließend mit den Cursortasten (½) und (¼) die Lautstärke erhöhen oder leiser stellen. Die Einstellung wird in den Säulen oberhalb der Einstellungsmöglichkeiten angezeigt. Je höher die Anzeige in den Säulen ist, desto lauter ist der Kanal geschaltet. Durch Drücken auf die (ESC)-Taste können Sie das Programm beenden. Das Tool gibt es inzwischen auch in grafischer Ausführung. Öffnen Sie im Hauptmenü MULTIMEDIA - LAUTSTÄRKEREGLER - ALSAMIXERGUI:
Bild 7.7: Das Programm ALSAMIXERGUI
Dieses Programm ist unter Debian GNU/Linux 3.1 mit KDE 3.3.2 standardmäßig nicht installiert.
Das KDE-Tool Kmix Wenn Sie es bevorzugen, mit einem KDE-Tool diese Einstellungen durchzuführen, öffnen Sie im Hauptmenü MULTIMEDIA - LAUTSTÄRKEREGLER (KMIX):
Bild 7.8: Das Tool KMIX
Hier können Sie mit der Maus arbeiten. Die Symbole über den Spalten weisen auf das Aufnahme- oder Ausgabegerät hin, so wird zum Beispiel die Lautstärke für das Abspielen von CDs über die Säule mit dem CD-Symbol gesteuert. Mit dem Regler innerhalb einer Säule können Sie die Lautstärke erhöhen (nach oben ziehen) oder leiser stellen (nach unten ziehen). Es gibt außerdem noch eine Registerkarte EINGANG und eine Registerkarte SCHALTER, mit denen Sie weitere Einstellungen vornehmen können:
276
Kapitel 7 · Multimedia
Bild 7.9: Einstellungen unter KMIX
Das Tool KMIX bindet sich in die Kontrollleiste ein, um einen schnelleren Zugriff auf die Lautstärkeregelung zu bieten. Sie können mit der linken Maustaste die Lautstärke regeln und mit der rechten Maustaste das Programm starten. Wenn Sie das Tool aus der Kontrollleiste entfernen möchten, öffnen Sie das Menü EINSTELLUNGEN - KMIX EINRICHTEN und deaktivieren Sie die Option KMIX AN DIE KONTROLLLEISTE ANDOCKEN.
7.2.3
Soundkarte grafisch mit YaST konfigurieren
Normalerweise sollte Ihre Soundkarte auch bei SUSE Linux automatisch erkannt werden. Wenn das nicht der Fall ist oder Sie weitere Einstellungen zur Soundkarte vornehmen möchten, wie zum Beispiel die Lautstärke regeln, können Sie in YaST das Menü HARDWARE - SOUND verwenden. Entweder können Sie eine nicht erkannte Soundkarte mit Hilfe der Schaltfläche KONFIGURIEREN einrichten oder Sie können eine bereits konfigurierte Soundkarte mit der Schaltfläche ÄNDERN bearbeiten:
Bild 7.10: Soundkarte bearbeiten
277
Soundkarte einrichten
magnum
Wenn Sie auf KONFIGURIEREN klicken, um eine Soundkarte neu zu konfigurieren, stehen Ihnen dazu drei Optionen zur Auswahl:
Bild 7.11: Soundkarte neu konfigurieren
Wenn Sie stattdessen eine bestehende Soundkarte ändern, wird Ihnen zuerst die Liste der zur Verfügung stehenden Soundkarten angezeigt. Sie müssen die zu bearbeitende markieren und anschließend auf OPTIONEN klicken. Alternativ können Sie auch an dieser Stelle eine Soundkarte hinzufügen oder löschen:
Bild 7.12: Soundkarte bearbeiten
278
Kapitel 7 · Multimedia
Mit Hilfe der Schaltfläche OPTIONEN können Sie erweiterte Optionen zur Soundkarte einstellen:
Bild 7.13: Erweiterte Soundkartenoptionen einstellen
Die Schaltfläche LAUTSTÄRKE bietet Möglichkeiten, die Lautstärke der Soundkarte einzustellen und zu testen:
Bild 7.14: Lautstärke der Soundkarte einstellen
7.2.4
Soundkarte grafisch mit Fedora Linux konfigurieren
Normalerweise sollte Ihre Soundkarte auch bei Fedora Core Linux automatisch erkannt werden. Wenn das nicht der Fall ist, können Sie im Hauptmenü unter SYSTEMEINSTELLUNGEN - ERMITTLUNG DER SOUNDKARTE nach der Soundkarte suchen lassen und diese testen:
279
Soundkarte einrichten
magnum
Bild 7.15: Mit Fedora Linux Soundkarte suchen
7.2.5
Audio-CDs abspielen
Es ist sehr einfach, Audio-CDs unter Linux abzuspielen, wenn Sie eines der Tools im Menü MULTIMEDIA - CD-SPIELER, zum Beispiel CD-PLAYER, verwenden.
Das Tool CD-Player/CD-Spieler Das Programm sieht einem CD-Spieler nicht nur sehr ähnlich, sondern funktioniert auch genauso. Legen Sie die CD, die Sie anhören möchten, in das CD-ROM-Laufwerk ein und klicken Sie anschließend auf die Schaltfläche PLAY. Zu jeder Schaltfläche gibt es wieder eine Minihilfe, sobald Sie den Mauszeiger darauf stellen. Dieses Tool steht unter der von Fedora Core Linux 4.0 standardmäßig installierten KDE nicht zur Verfügung, wird aber unter GNOME angeboten.
Bild 7.16: Audio-CDs mit CD-Player anhören
Unter manchen Linux-Versionen kann es vorkommen, dass Sie bei den CD-SpielerTools Fehlermeldungen mit dem Inhalt bekommen, dass keine CD eingelegt sei. Es kann daran liegen, dass die Rechte für das CD-ROM-Gerät nicht für jeden gesetzt sind. Wechseln Sie mit dem Befehl su zum Benutzer root (alternativ können Sie natürlich auch sudo verwenden) und überprüfen Sie mit dem Befehl ls-l /dev/hdc (bzw. für Ihren CD-ROM-Gerätenamen), ob die Lese- und Schreibrechte auf 666 gesetzt sind (vergleiche Kapitel 9). Wenn nicht, verwenden Sie den Befehl chmod 666 /dev/hdc (bzw. den Gerätenamen Ihres CD-ROM-Geräts). Unter Debian sollte der Benutzer zur Gruppe cdrom gehören.
280
Kapitel 7 · Multimedia
Mit der Schaltfläche TITELEDITOR ÖFFNEN können Sie eine eigene Titelliste hinterlegen, wenn die CD nicht automatisch erkannt wird:
Bild 7.17: Titeleditor öffnen
Alternativ versucht das Programm aber immer, aus einer Datenbank Interpret und Titel anzubieten. Diese Datenbank ist bereits standardmäßig zentral für alle KDE-Programme im KDE-Kontrollzentrum im Abschnitt SOUND & MULTIMEDIA und dort unter CDDB-ABFRAGE hinterlegt. Das entsprechende Fenster öffnet sich automatisch und Sie können die entsprechende CD-Kennung auswählen:
Bild 7.18: Auswahl aus der Titel-Datenbank
281
Soundkarte einrichten
magnum
Anschließend werden Titel und Interpret angezeigt:
Bild 7.19: Übernahme der Auswahl von Titel und Interpret
Und die Daten aus der Datenbank werden automatisch in den Titeleditor übertragen:
Bild 7.20: Übernahme der Einzeltitel in den Titeleditor
Das Tool KsCD Ein weiteres Tool zum Abspielen von CDs im Menü MULTIMEDIA ist KSCD. Es ist genauso einfach zu bedienen:
Bild 7.21: Das Tool KSCD
Diese Tools stellen nur eine kleine Auswahl dar. Die meisten grafischen CD-Player funktionieren aber auf ähnliche Weise.
282
Kapitel 7 · Multimedia
Dieses Tool finden Sie unter SUSE Linux im Menü MULTIMEDIA unter dem Namen CD-SPIELER.
7.2.6
Audiodateien abspielen
Es gibt sehr viele KDE-Tools, mit denen Sie Audiodateien abspielen können. In diesem Abschnitt werden drei Tools vorgestellt. Es gibt aber weitere Audioplayer wie zum Beispiel KMID usw.
Das Tool Xmms Ein weiteres interessantes Tool zum Abspielen von Audiodateien ist XMMS. Bei SUSE Linux 10.0 können Sie das Paket mit Hilfe von YaST nachinstallieren (vergleiche Kapitel 5), da es in der standardmäßigen Paketauswahl nicht enthalten ist. Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung. Für Fedora Linux können Sie das Paket unter http://www.xmms.org/download.php downloaden. Bei Debian Linux ist das Paket im Moment nur im Archiv »unstable« unter http:// packages.debian.org/unstable/sound/xmms.html erhältlich.
Bild 7.22: Startfenster von XMMS
Die Programmoberfläche erinnert an einen CD-Player. Klicken Sie auf die Schaltfläche PL (Play List), um eine Liste der abzuspielenden Dateien zusammenzustellen.
Bild 7.23: Eine Play List erstellen
Sie können dazu entweder die Schaltfläche +FILE oder LOAD LIST verwenden, wenn Sie bereits eine Play List gespeichert haben. Alternativ können Sie per Drag&Drop aus dem Konqueror die abzuspielenden Dateien in die Play List in den Editorbereich ziehen. Klicken Sie auf einen Titel und anschließend auf die
283
Soundkarte einrichten
magnum
PLAY-Schaltfläche, um ihn abzuspielen. Dasselbe ist auch mit einem Doppelklick auf den Titel möglich:
Bild 7.24: Titel abspielen
Wenn Sie auf die Schaltfläche EQ (Equalizer) klicken, können Sie noch einige Feineinstellungen zum Abspielen vornehmen:
Bild 7.25: Equalizer verwenden
XMMS hat sehr viele Einstellungsmöglichkeiten. Eine Auswahlmöglichkeit erhalten Sie, wenn Sie mit der rechten Maustaste in das Startfenster klicken. Wenn Ihnen zum Beispiel das etwas schwer lesbare schwarze Design nicht zusagt, können Sie sich ein anderes über das Menü OPTIONS - PREFERENCES auswählen. Anschließend klicken Sie auf die Registerkarte VISUALIZATION PLUGINS und wählen dort ein anderes Design. Weitere Designs können Sie auch von der Website http://www.xmms.org/skins.php downloaden.
Das Tool amaroK Öffnen Sie bei SUSE Linux 10.0 das KDE-Hauptmenü und dann die Optionen MULTIMEDIA - AUDIO-WIEDERGABE (AMAROK).
Bild 7.26: Begrüßungsfenster von AMAROK
Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung. Für Fedora Linux können Sie das Paket unter http://download.fedora.redhat.com/pub/fedora/linux/extras/4/ i386 downloaden. Bei Debian Linux ist das Paket unter http://packages.debian. org/stable/kde/amarok erhältlich.
284
Kapitel 7 · Multimedia
Auch diese Programmoberfläche ist sehr anschaulich aufgebaut, und die Schaltflächen sind entsprechend grafisch dargestellt. Klicken Sie auf die Schaltfläche PL (Play List), um Dateien zu laden, die Sie abspielen möchten. Es ist auch möglich, per Drag&Drop aus dem Konqueror die abzuspielenden Dateien in die Play List in den Bereich TITEL zu ziehen. Im nun geöffneten Fenster klicken Sie auf HINZUFÜGEN, um über einen Datei-Browser die abzuspielenden Dateien auszuwählen:
Bild 7.27: Abzuspielende Dateien auswählen
Anschließend können Sie auf eine Datei doppelklicken, damit sie abgespielt wird:
Bild 7.28: Datei abspielen AMAROK
setzt sich in die Kontrollleiste, wenn Sie das Fenster schließen. Klicken Sie mit der rechten Maustaste auf das entsprechende Symbol und wählen Sie BEENDEN, um das Programm vollständig zu schließen.
Das Tool AlsaPlayer Mit dem Programm ALSAPLAYER können Sie ebenfalls MP3-Dateien abspielen. Bei SUSE Linux 10.0 können Sie das Paket mit Hilfe von YaST nachinstallieren (vergleiche Kapitel 5), da es in der standardmäßigen Paketauswahl nicht enthalten ist. Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung. Bei Debian Linux ist es unter http://packages.debian.org/stable/sound/alsaplayer erhältlich. Klicken Sie auf das Symbol , um die Liste der Dateien zu laden, die abgespielt werden sollen. Mit LOAD können Sie einen Datei-Browser öffnen, um die Dateien in die Liste zu laden:
285
Soundkarte einrichten
magnum
Bild 7.29: Das Tool ALSAPLAYER
Bild 7.30: Abzuspielende Dateien auswählen
7.2.7
Videodateien abspielen
Es gibt auch mehrere KDE-Tools, mit denen Sie Videodateien abspielen können. In diesem Abschnitt werden drei Tools vorgestellt.
Das Tool Kaffeine Öffnen Sie das KDE-Hauptmenü und dann die Optionen MULTIMEDIA - VIDEOWIEDERGABE und klicken Sie dann auf KAFFEINE. Es wird ein Begrüßungsbildschirm angezeigt. Klicken Sie auf DATEI - ÖFFNEN, um eine Videodatei abzuspielen: Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung. Für Fedora Linux können Sie das Paket unter http://sourceforge.net/projects/kaffeine downloaden. Bei Debian Linux ist es unter http://packages.debian.org/stable/kde/ kaffeine-mozilla erhältlich.
Bild 7.31: Videodatei abspielen
286
Kapitel 7 · Multimedia
Sie können auch eine Kaffeine-Stückliste zusammenstellen, wenn Sie immer wieder dieselben Dateien abspielen wollen. Wählen Sie dazu im Menü ANSICHT den Menüpunkt STÜCKLISTE und anschließend über DATEI - ÖFFNEN die entsprechenden Dateien aus:
Bild 7.32: Abzuspielende Videodateien auswählen
Das Tool RealPlayer Öffnen Sie das KDE-Hauptmenü und dann die Optionen MULTIMEDIA - VIDEOWIEDERGABE und klicken Sie auf REALPLAYER. Klicken Sie auf DATEI - ÖFFNEN, um eine Videodatei abzuspielen: Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung.
Bild 7.33: Videodatei abspielen
287
Soundkarte einrichten
magnum
Das Tool Noatun Mit dem Tool NOATUN können Sie ebenfalls Videodateien abspielen.
Bild 7.34: Noatun starten
Bei SUSE Linux 10.0 können Sie das Paket mit Hilfe von YaST nachinstallieren (vergleiche Kapitel 5), da es in der standardmäßigen Paketauswahl nicht enthalten ist. Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux 3.1 standardmäßig installierten KDE nicht zur Verfügung. Bei Debian Linux ist das Paket unter http://packages.debian.org/stable/sound/noatun erhältlich. Klicken Sie auf DATEI - ÖFFNEN, um eine Videodatei abzuspielen:
Bild 7.35: Videodatei abspielen
288
Kapitel 7 · Multimedia
7.3 CDs brennen Zum Brennen von CDs können Sie entweder nur die Befehlszeile oder grafische Tools verwenden. In diesem Abschnitt werden zuerst die CD-Dateisysteme erläutert und dann die entsprechenden Linux-Befehle zum Brennen aufgezeigt. Schließlich werden noch grafische Tools vorgestellt.
7.3.1
Dateisysteme für CDs und DVDs
Es gibt mehrere Dateisysteme für CDs und DVDs:
쮿
ISO-9660: Dieses genormte Dateisystem kann plattformübergreifend verwendet werden, verfügt dadurch aber über geringere Funktionalität als die anderen Dateisysteme. So wird zum Beispiel noch die 8.3-Konvention von DOS für Dateinamen eingehalten und mehr als acht Verzeichnisebenen sind nicht möglich.
쮿
Joliet: Viele Softwareunternehmen erweiterten aufgrund der oben genannten Beschränkungen das ISO-9660-Dateisystem. Microsoft entwickelte das JolietDateisystem, bei dem Dateinamen bis zu 64 Zeichen lang sein können, aber gleichzeitig kann das Dateisystem nur von den Betriebssystemen DOS, Windows, MacOS und Linux gelesen werden.
쮿
Rock Ridge: Auch dieses Dateisystem, auch RRIP oder Rock Ridge Interchange Protocol genannt, stellt eine Erweiterung zu ISO-9660 dar. Verzeichnisebenen können unbegrenzt tief geschachtelt werden und Dateinamen bis zu 256 Zeichen lang sein, trotzdem ist das Dateisystem zu anderen Betriebssystemen kompatibel.
쮿
UDF: Dieses Format ist recht neu und wird auch Universal Disc Format genannt. Es kann für CDs, DVDs und Festplatten verwendet werden, trotzdem bleibt die Kompatibilität zu ISO-9660 erhalten.
7.3.2
CDs mit Linux-Befehlen erstellen
Mit drei Befehlen ist es möglich, Daten-CDs, Audio-CDs sowie eine Mischform aus beidem zu erzeugen. Nachfolgend werden Ihnen alle drei Möglichkeiten erläutert, wobei folgende Befehle verwendet werden: 1. Der Befehl mkisofs wird zum Erstellen von Imagefiles verwendet. Imagefiles »spiegeln« den Inhalt einer CD-ROM oder eines Teils der Festplatte auf eine Weise wider, dass dieser mit einem der nachfolgend erläuterten Befehle auf eine CD gebrannt werden kann. 2. Der Befehl cdparanoia wird zum Kopieren der Audiospuren einer CD in Audiodateien auf der Festplatte benutzt. Anschließend können die Audiodateien auf eine CD gebrannt werden. 3. Der Befehl cdrecord wird für den Brenn- oder Kopiervorgang selbst verwendet.
289
magnum
CDs brennen
Die folgenden Befehle können nur ausgeführt werden, wenn Ihr(e) CD-Laufwerk(e) ordnungsgemäß erkannt wurden. Die neueren Linux-Distributionen haben in der Regel damit kein Problem, bei älteren Versionen kann das daran liegen, dass die Hardware nicht korrekt angeschlossen ist. Diese älteren LinuxVersionen erwarten, dass die einzelnen Geräte am (E)IDE-Bus fortlaufend angeschlossen sind, das bedeutet, das erste Gerät ist Master am ersten Controller, das zweite dort Slave, das dritte Gerät Master am zweiten Controller und das vierte dort wieder Slave. Ein weiteres Problem könnte sein, dass ein Laufwerk falsch »gejumpert« und damit als Slave konfiguriert ist, aber als Master am zweiten Controller angeschlossen oder umgekehrt ist. Bei Nichterkennen des CD-Laufwerks sollten diese Einstellungen überprüft und eventuell korrigiert werden. Eine weitere Voraussetzung ist, dass die CD-Laufwerke vom System bereits in die Tabelle /etc/fstab eingetragen wurden, in der zu mountende Geräte hinterlegt werden (vergleiche Kapitel 13). Solche Einträge müssen bei älteren Linux-Versionen manuell durchgeführt werden, während neue Linux-Distributionen das automatisch bei der Hardwareerkennung durchführen. Ein automatischer Eintrag für CD- und/oder DVD-Laufwerke kann zum Beispiel folgendermaßen aussehen: # more /etc/fstab /dev/hda1 / ... /dev/cdrom /media/cdrom /dev/dvd /media/dvd /dev/cdrecorder /media/cdrecorder /dev/dvdrecorder /media/dvdrecorder
ext3 defaults
1 1
auto auto auto auto
0 0 0 0
ro,noauto,user ro,noauto,user ro,noauto,user ro,noauto,user
0 0 0 0
CD-Brenner testen Geben Sie in einem Terminalfenster folgenden Befehl ein, um die Konfiguration Ihres CD-Brenners zu ermitteln und die Abfragezeichenketten auszudrucken: # cdrecord -scanbus
scsibus0: 0,0,0 0,1,0 0,2,0 ...
0) 'TOSHIBA ' 'DVD-ROM SD-R5112' '1031' Removable CD-ROM 1) * 2) *
Mit dieser Information zu Ihrem CD-ROM-Gerät können Sie später mit dem Befehl cdrecord dev=0,0,0 das Gerät ansprechen. Beachten Sie, dass Sie die Angabe 0,0,0 durch die Werte ersetzen müssen, die Ihnen der Befehl cdrecord -scanbus ausgibt. Sollte bei Ihnen der oben genannte Befehl eine Ausgabe mit Meldung Ihrer SCSIGeräte zur Folge haben, dann legen Sie jetzt eine CD ein und geben Sie dann den nächsten Befehl ein, um das CD-Gerät zu mounten: # mount /media/cdrom
Sollten Sie einen abweichenden Namen für den Mountpoint Ihres CD-Brenners in der Datei /etc/fstab eingetragen haben, dann verwenden Sie diesen.
290
Kapitel 7 · Multimedia
Ein Imagefile für eine Daten-CD erzeugen Im nächsten Schritt erstellen Sie mit dem Befehl mkisofs ein Filesystem-Image bzw. Imagefile von einer Daten-CD-ROM. Imagefiles spiegeln den Inhalt einer CD oder eines Teils der Festplatte auf eine Weise wider, dass dieser mit dem Befehl cdrecord oder cdparanoia auf eine CD gebrannt werden kann. Die Syntax des Befehls lautet: # mkisofs [-option(en)] pfadangabe
Das CD-Image, das später gebrannt werden soll, wird mit dem Befehl erzeugt. Dazu kann man unter anderem folgende Optionen wählen: Option
Beschreibung
-a
Enthält alle Dateien des ISO-9660-Dateisystems. Normalerweise werden Dateien mit den Zeichen ~ oder # nicht mit eingeschlossen, da dies in der Regel temporäre Dateien unter Linux sind.
-abstract datei
Definiert den abstrakten Dateinamen
-A anwendung
Gibt eine Zeichenkette an, die in den Header des Volumes geschrieben werden kann, um die Anwendung auf der CD näher zu bezeichnen
-J
Erzeugen eines Joliet-Dateisystems mit langen Dateinamen für Windows 95
-l
Lange Dateinamen für das ISO-9660-Dateisystem zulassen. Normalerweise kennt ISO-9660 nur Dateinamen mit der Konvention 8.3-Stellen.
-log-file protokoll
Umlenken aller Fehlermeldungen, Warnungen und Informationen in die angegebene Protokolldatei
-o imagename
Angabe des Namens für die zu erstellende Image-Datei
-print-size
Ausgabe der geschätzten Dateisystemgröße und Beenden des Programms
-R
Erzeugen eines Rock Ridge-Dateisystems für Unix/Linux
-r
Erzeugen eines Rock Ridge-Dateisystems mit Besitzer root und Gruppe root sowie der Rechtemaske r--r--r-- für normale Dateien und r-xr -xr-x für ausführbare Dateien und Verzeichnisse
-V cdname
Angabe eines Namens für die CD
-v
Ausführliche Ausgabe
-x pfad
Schließt das angegebene Verzeichnis aus dem ISO-Image aus. Dabei muss der vollständige Pfadname angegeben werden. Es können bis zu 1000 Verzeichnisse ausgeschlossen werden.
Tab. 7.1: Die Optionen des Befehls mkisofs
In diesem Beispiel wird der Inhalt des Verzeichnisses /cdrom (also der Inhalt der gemounteten CD-ROM) in das Imagefile image.isofs übertragen. Genauso ist es aber auch möglich, den Inhalt eines Verzeichnisses der Festplatte zu übertragen, zum Beispiel /usr oder /home/her: # mkisofs -l -L -J -v -o /cdimage/image.isofs /cdrom
291
magnum
CDs brennen
Die Optionen haben hier folgende Bedeutung:
쮿
-l erlaubt die Erweiterung der Länge von Dateinamen, die bei Standard-UnixCD-ROMs normalerweise auf acht Stellen vor und drei Stellen nach dem Punkt beschränkt ist. Microsoft Windows und Unix haben diese Standardeinstellung erweitert. Diese Option lässt bis zu 30 Zeichen lange Dateinamen zu.
쮿
-L erlaubt führende Punkte in den Dateinamen. Dies ist wichtig, wenn CDROMs von Unix-Programmen kopiert werden, da unter Unix/Linux Systemund Konfigurationsdateien häufig mit einem Punkt beginnen.
쮿
-J muss verwendet werden, wenn es sich um eine Microsoft Windows-CDROM handelt oder lange Dateinamen unter Microsoft Windows lesbar sein sollen.
쮿
-v erzeugt eine ausführliche Ausgabe, das bedeutet, Sie erhalten ständig Rückmeldungen vom System während der Ausführung des Befehls.
쮿
-o definiert die Ausgabedatei, das heißt das Imagefile, zum Beispiel /cdimage/ image.isofs. Ohne diese Angabe würde die Standardausgabe der Bildschirm sein. Das Imagefile wird später auf CD-R gebrannt.
Anschließend kann der Inhalt des Imagefiles getestet werden, indem dieses zum Beispiel auf das Verzeichnis /mnt gemountet wird: # mount -o loop /cdimage/image.isofs /mnt
Überprüfen Sie dann mit dem Dateimanager oder dem Befehl ls den Inhalt des verwendeten Verzeichnisses. Er sollte mit dem Inhalt der eingelegten CD-ROM oder des auf der Festplatte ausgewählten Verzeichnisses übereinstimmen. Unmounten Sie anschließend das Verzeichnis wieder, um es wieder freizugeben: # umount /mnt
Audiodateien aus Audio-CD-Tracks erzeugen Der Befehl cdparanoia wird zum Kopieren der Audiospuren einer CD in Audiodateien auf der Festplatte benutzt. Anschließend können die Audiodateien auf eine CD gebrannt werden. Der Befehl sucht standardmäßig nach einem Gerät mit der Bezeichnung /dev/cdrom. Die Audiodateien werden in dem Verzeichnis erstellt, in dem sich der Benutzer bei Aufruf des Befehls befindet, man sollte also zuvor das gewünschte Verzeichnis anlegen und in dieses wechseln. Die Tracks auf der Audio-CD sind durchnummeriert und werden in dieser Reihenfolge auch vom Befehl cdparanoia verwendet. Der Befehl kann für jeden Track eine eigene Audiodatei erzeugen, deren Name aus den Teilen Tracknummer, Trackname und standardmäßig der Dateinamenserweiterung .wav zusammengesetzt wird. Es können aber auch andere Audioformate als WAV erzeugt werden. Auf einigen Linux-Systemen steht ein weiteres Grabber-Programm mit dem Namen dagrab zur Verfügung.
292
Kapitel 7 · Multimedia
Die Syntax des Befehls lautet: # cdparanoia [-option(en)] bereich [datei]
Der Befehl kennt unter anderem folgende Optionen: Option
Beschreibung
-B oder --batch
Der Befehl zerlegt die Ausgabe in mehrere Dateien ausgehend von den Trackbegrenzungen. Die Ausgabedateinamen beginnen mit track#.
-Q oder --query
Das CD-ROM-Laufwerk durchsuchen und den Inhalt ausgeben, anschließend den Befehl beenden
-q oder --quiet
Keine Ausgabe anzeigen
-s oder --search-for-drive
Erzwingt eine vollständige Suche nach einem CD-ROM-Laufwerk, auch wenn der Link /dev/cdrom bereits vorhanden ist
-v oder --verbose
Ausführliche Ausgabe
Tab. 7.2: Die Optionen des Befehls mdir
In diesem Beispiel wird der Trackname zztop.wav vergeben und von der AudioCD werden die zu kopierenden Tracks Nummer 2, 3 und 4 gewählt, außerdem wird dafür eine Datei mit der Bezeichnung zztop.wav erzeugt. Mit dem Befehl # cdparanoia -B 2-4 zztop.wav cdparanoia III release ... ... Rippling from sector 18530 (track 2 [0:00.00]) t0 sector 73906 (track 4 [4:52.26]) outputting to track02.zztop.wav (== PROGRESS == [ ...
werden drei Audiodateien aus den Tracks Nummer 2, 3 und 4 einer Audio-CD erzeugt. Sie können entweder eine Trackfolge, zum Beispiel 2–4 (Track 2 bis 4) oder 5–9 (Track 5 bis 9) oder einzelne Tracks, zum Beispiel 2 (nur Track 2) oder 7 (nur Track 7) für die Option -B verwenden. Wenn Sie keinen Bereich angeben können, starten Sie den Befehl einfach mehrmals mit der jeweiligen Tracknummer. Wenn Sie die komplette CD rippen möchten, dann geben Sie keine Tracknummern an.
Eine Daten-CD erzeugen Der Befehl cdrecord wird für den Brenn- oder Kopiervorgang selbst verwendet. Er kann Imagefiles oder Mediadateien auf CD oder DVD brennen. Die Syntax des Befehls lautet: # cdrecord [-option(en)] dev=gerät [track-option(en)] track1 ... trackn
293
magnum
CDs brennen
Der Befehl kennt unter anderem folgende Optionen: Option
Beschreibung
-audio
Alle nachfolgenden Dateien sind Audioformate und sollen als Audiospuren geschrieben werden.
blank=typ
Eine wieder beschreibbare CD leeren und das Programm beenden bzw. vor dem Beschreiben leeren. Mögliche Typen sind: all
die gesamte CD leeren. Diese Option benötigt relativ viel Zeit.
fast
die gesamte CD so schnell wie möglich leeren (nur die notwendigsten Bereiche)
track
einen Track leeren
unreserve
die Reservierung eines Tracks aufheben
trtail
das Ende eines Tracks leeren
unclose
die letzte Sitzung nicht beenden die letzte Sitzung leeren
session -data
Alle nachfolgend angegebenen Dateien sind Image-Dateien und werden im CD-ROM-Format geschrieben.
dev=ziel
Zielgerät für den CD-Recorder einstellen. Mit der Option scanbus können die möglichen Zielgeräte beauskunftet werden.
-eject
CD nach Fertigstellung auswerfen
-format
Eine beschreibbare CD bzw. DVD formatieren
-force
Bei bestimmten Fehlern wird erzwungen, dass der Befehl fortfährt. Diese Option sollte mit Vorsicht verwendet werden.
fs=zahl
Den Ring-Buffer auf zahl setzen
gracetime=zahl
Die Wartezeit einstellen, bevor der Schreibvorgang gestartet wird
-multi
Lässt zu, dass mehrere Sitzungen auf einer CD erzeugt werden
-nofix
Fixiert die CD nach dem Schreiben der Tracks nicht. Das ist nützlich, wenn mehrere Sessions bzw. Tracks auf die CD geschrieben werden sollen.
-pad
Wenn es sich bei dem Track um einen Datentrack handelt, werden 15 Sektoren mit Nulldaten hinter diesem angefügt.
-reset
Geräte zurücksetzen
-scanbus
Geräte überprüfen
speed=zahl
Angabe der Schreibgeschwindigkeit der CD
-v
Ausführlicher Modus, um den Fortschritt des Vorgangs zu verfolgen
Tab. 7.3: Die Optionen des Befehls cdrecord
Im folgenden Beispiel wird das CD-Writer-Gerät überprüft: # cdrecord -scanbus
294
Kapitel 7 · Multimedia
Im nächsten Beispiel wird das Imagefile, das mit dem Befehl mkisofs erzeugt wurde, auf eine leere CD geschrieben. Wenn eine bereits beschriebene CD-RW verwendet wird, die noch geleert werden soll, verwenden Sie zuvor folgenden Befehl: # cdrecord -v blank=fast dev=0,0,0
Ersetzen Sie die Angabe dev=0,0,0 durch die Werte, die Ihnen der Befehl cdrecord scanbus ausgibt.
Wenn dieser Befehl unterbrochen wird, dann kann sich das Gerät aufhängen und der Rechner muss neu gebootet werden! Sie können auch versuchen, das Gerät mit folgendem Befehl neu zu initialisieren, was allerdings nicht immer funktioniert: # cdrecord -reset dev=0,0,0
Anschließend wird das Imagefile auf die CD mit dem Befehl geschrieben: # cdrecord -v speed=16 fs=4m dev=0,0,0 -data /cdimage/image.isofs
Die Option speed gibt die Schreibgeschwindigkeit (hier vierfach) an, fs enthält den Pufferwert (hier 4 Mbyte), dev ist die notwendige Gerätebezeichnung und -data gibt an, dass »normale« Dateien/Verzeichnisse kopiert werden, und zwar aus dem Imagefile /cdimage/image.isofs. Das Programm gibt standardmäßig ständig aus, wie weit es mit dem Schreiben ist und wie weit der Puffer noch gefüllt ist. Ganz am Ende wird der kleinste Wert min fill ausgegeben. Wenn der Wert min fill kleiner als 20 % ist, ist der Puffer zu klein. Dann kann das Schreiben der CD-ROM kritisch werden und beim nächsten Mal sollte der Pufferwert unbedingt erhöht werden, zum Beispiel auf den Wert fs=8m. Das ist aber kein Problem mehr bei Brennern, die einen Buffer-Underrun-Schutz haben.
Eine Audio-CD erzeugen Zur Erstellung von Audio-CDs gehen Sie ähnlich vor. Hier verwenden Sie den Befehl wie folgt: # cdrecord -v speed=16 fs=4m dev=0,0,0 -audio -pad /cdimage/track*zztop.wav
Es werden die Optionen -audio und Audiodateien kopiert werden.
-pad
anstelle der Option
-data
verwendet, weil
Die Option -pad sorgt dafür, dass zwischen den einzelnen Tracks kleine Pausen entstehen. Wenn Sie mehrmals hintereinander Tracks auf eine Audio-CD brennen möchten, dann müssen Sie zusätzlich die Optionen -nofix und -multi aktivieren. Beim letzten Track müssen Sie die Option -fix verwenden, damit die AudioCD fixiert wird, ansonsten können CD-Player sie nicht abspielen.
295
magnum
CDs brennen
Eine Mischform aus Audio- und Daten-CD erzeugen Sie können mit diesen zusätzlichen Optionen eine Mischform von Audio- und Datendateien erzeugen, dabei müssen aber immer die Daten vor den Audiodateien auf die CD gebrannt werden. Verwenden Sie zuerst den Befehl: # cdrecord -v speed=4 fs=4m -nofix dev=0,0,0 -multi -data /cdimage/image.isofs
Die Option -nofix gibt die Anweisung, dass das Beschreiben der CD nicht mit diesem einen Befehl abgeschlossen werden soll, das heißt, die CD bleibt zum Beschreiben »offen«. Die Option -multi bedeutet, dass die CD auf mehrere Spuren ausgelegt werden soll. Anschließend können Sie nun Ihre Audiodateien auf die CD kopieren. Verwenden Sie dazu den Befehl: # cdrecord -v speed=4 fs=4m -nofix dev=0,0,0 -multi -audio -pad /cdimage/ track*zztop.wav
Sie können nun weitere Audiodateien hinzufügen. Die letzten kopieren Sie ohne die Option -nofix mit dem Befehl: # cdrecord -v speed=4 fs=4m dev=0,0,0 -multi -audio -pad /cdimage/track*iron.wav
Sollten Sie beim letzten Brennvorgang versehentlich die Option -nofix verwendet haben, dann schließen Sie die CD einfach mit dem Befehl: # cdrecord -fix dev=0,0,0
7.3.3
Das Programm K3b
Das Programm K3B ist ein Frontend für die Linux-Befehle zum Brennen von CDs, also in erster Linie für den Befehl cdrecord. Es kann Daten-CDs brennen, die entweder mit der Maus aus einzelnen Verzeichnissen oder Dateien in ein Projektverzeichnis gezogen werden oder eine vollständige CD auf eine neue CD (»on-the-fly«) brennen. Auch Audio-CDs können entweder »on-the-fly« (wenn zwei Geräte vorhanden sind) oder direkt von MP3-CDs, ohne dass ein De- und Encodieren notwendig wird, im WAV-Format kopiert werden. Dabei werden die meisten Optionen des Befehls mkisofs unterstützt, wie zum Beispiel Burn-Proof-Support und DVD-Ripping. Beim Verfahren »On-the-fly« wird eine Datei von der Original-CD im CD-Laufwerk direkt auf den Rohling im CD-Brenner geschrieben, ohne dass irgendwelche Daten auf der Festplatte zwischengespeichert werden. Dieses Tool steht unter der von Fedora Core Linux 4.0 und Debian GNU/Linux standardmäßig installierten KDE nicht zur Verfügung. Für Fedora Linux können Sie das Paket unter http://k3b.plainblack.com/download downloaden. Bei Debian Linux ist das Paket unter http://packages.debian.org/stable/otherosfs/ k3b erhältlich. Um mit K3B eine CD zu brennen, muss im ersten Schritt ein Projekt angelegt werden.
296
Kapitel 7 · Multimedia
Bild 7.36: Mit K3b CDs brennen
Mit DATEI - NEUES PROJEKT können folgende Projekte angelegt werden:
Bild 7.37: Neues Projekt anlegen
Ein angelegtes Projekt kann nur temporär oder dauerhaft verwendet werden. Wenn Sie es aufbewahren möchten, speichern Sie es über DATEI - SPEICHERN. Beim Beenden des Programms werden Sie aber auf jeden Fall gefragt, ob Sie das Projekt speichern oder verwerfen möchten.
Eine Daten-CD erzeugen Wenn Sie zwei CD-Laufwerke besitzen, zum Beispiel ein CD-Laufwerk und einen CD-Brenner, können Sie eine Daten-CD »on-the-fly« kopieren, ansonsten wird eine Image-Datei der CD auf die Festplatte zwischenkopiert. Das Menü EXTRAS CD bietet folgende Kopiermöglichkeiten an:
Bild 7.38: CD kopieren
297
CDs brennen
magnum
Wenn Sie CD KOPIEREN wählen, haben Sie weitere OPTIONEN. Im Fall von zwei CD-Geräten (was in unserem Beispiel nicht zutrifft, daher ist die Option deaktiviert), könnten Sie »on-the-fly« brennen. Sie können aber auch den Brennvorgang nur simulieren, nur eine Abbilddatei (Image-Datei) erstellen lassen und die Abbilddatei, die beim Brennvorgang mit nur einem Gerät erzeugt wird, entweder aufbewahren oder löschen. Ein ISO-Image oder Datei-Image ist ein Abbild einer CD, das genau dem CDInhalt entspricht. Wenn der Befehl cdrecord eine CD brennt, verwendet er immer ein solches Image, es sei denn, es stehen zwei Geräte für die »On-the-fly«Methode zur Verfügung. Es ist auch möglich, die Anzahl der Kopien zu wählen, die erzeugt werden sollen.
Bild 7.39: CD-Kopie erstellen
Das temporäre Verzeichnis sollte sich auf einer Partition befinden, auf der genügend Festplattenplatz zur Verfügung steht.
Wenn Sie für die Methode »On-the-fly« zwei Laufwerke besitzen, die beide am gleichen IDE-Kabel angeschlossen sind, kann es besser sein, trotzdem die Methode der Image-Datei auf der Festplatte zu wählen, denn bei »On-the-fly« laufen Sie immer Gefahr eines Buffer-Underruns. Das bedeutet, der Datenfluss vom Lese- zum Schreibgerät kann plötzlich abbrechen, wodurch der Brennvorgang misslingt. Viele CD-Brenner haben deshalb einen Extrapuffer eingerichtet, um dieses Problem zu meiden. Man spricht in diesem Fall zum Beispiel von BurnProof- oder JustLink-Support.
298
Kapitel 7 · Multimedia
Im Registerblatt FORTGESCHRITTEN gibt es einige Expertenoptionen, wie zum Beispiel TAO (Track-at-once). Diesen Modus sollte man bei Audio-CDs grundsätzlich anwenden, denn die Tracks werden dabei einzeln geschrieben und dazwischen wird eine Zwei-Sekunden-Pause eingebaut. Bei DAO (Disc-at-once) dagegen wird die ganze CD ohne Pausen beschrieben, das wäre zum Beispiel für Live-Konzertaufnahmen und Ähnliches angebracht. Eine exakte Kopie der CD erhält man auf jeden Fall mit der DAO-Methode. Das Klonen einer CD bietet ein ähnliches Fenster und erstellt ebenfalls eine CDKopie:
Bild 7.40: CD klonen
Eine weitere Option des Menüs EXTRAS - CD ist das Löschen einer CD-RW:
Bild 7.41: CD-RW löschen
299
magnum
CDs brennen
Für das folgende Brennbeispiel wurde die Option CD anschließend CD-KOPIEREN gestartet:
KOPIEREN
gewählt und
Bild 7.42: Kopiervorgang starten
Im ersten Schritt wird die Image-Datei erzeugt, dann folgt der eigentliche Brennvorgang. Dazwischen werden Sie aufgefordert, die Daten-CD gegen einen Rohling auszutauschen:
Bild 7.43: Rohling einlegen
Jetzt folgt der eigentliche Brennvorgang, dessen Fortschritt ständig angezeigt wird:
300
Kapitel 7 · Multimedia
Bild 7.44: Brennvorgang von K3B
Nach erfolgreichem Brennen erhalten Sie eine entsprechende Meldung und die CD wird ausgeworfen:
Bild 7.45: Erfolgreicher Brennvorgang
301
CDs brennen
magnum
Alternativ ist es möglich, einzelne Verzeichnisse und Dateien per Drag&Drop in den unteren Fensterbereich in ein neu angelegtes Projekt zu ziehen und anschließend auf das Menü PROJEKT - BRENNEN oder die entsprechende Schaltfläche zu klicken, um den Brennvorgang einzuleiten:
Bild 7.46: Einzelne Verzeichnisse und Dateien brennen
Die weitere Vorgehensweise entspricht dem Brennvorgang einer kompletten CD.
Eine Audio-CD erzeugen Eine Audio-CD kann ebenfalls entweder vollständig oder es können einzelne Titel kopiert werden. Wenn Sie zwei CD-Laufwerke besitzen, zum Beispiel ein CDLaufwerk und einen CD-Brenner, können Sie auch eine Audio-CD »on-the-fly« kopieren, ansonsten wird wieder eine Image-Datei der CD auf die Festplatte zwischenkopiert. Starten Sie den direkten Brennvorgang wieder über das Menü EXTRAS - CD - CD BRENNEN:
Bild 7.47: Komplette Audio-CD brennen
302
Kapitel 7 · Multimedia
Es wird ein Titel nach dem anderen eingelesen:
Bild 7.48: Titel einer Audio-CD einlesen
Sie können auch einzelne Titel, die Sie bereits abgespeichert haben, in einem Audioprojekt für eine neue CD zusammenstellen und dann den Menüeintrag PROJEKT - BRENNEN wählen oder auf die entsprechende Schaltfläche klicken, um den Brennvorgang einzuleiten:
Bild 7.49: Einzelne Titel zur Audio-CD zusammenstellen
303
CDs brennen
magnum
Es ist auch möglich, mit K3B die einzelnen Audiotracks anzeigen zu lassen. Dazu klicken Sie im rechten Fensterbereich ganz oben auf den Laufwerksnamen Ihres CD-Geräts, in unserem Beispiel Toshiba - BDV-ROM SD-R5112:
Bild 7.50: Die Tracks einer Audio-CD mit K3B anzeigen
Das Programm versucht aus der CDDB-Datenbank die Trackinformationen zu erhalten. Wenn Sie diese nicht verwenden oder im Moment nicht im Internet angemeldet sind, können Sie die einzelnen Tracks selbst benennen. Dazu klicken Sie auf das Symbol CDDB-INFO bearbeiten. Alternativ aktivieren Sie über das Menü EINSTELLUNGEN - K3B EINRICHTEN in der Rubrik CDDB im Registerblatt ENTFERNT die Option ENTFERNTE CDDB-ANFRAGEN AKTIVIEREN und klicken dann auf OK.
Bild 7.51: CDDB-Anfragen aktivieren
Anschließend klicken Sie auf das Symbol CDDB ABFRAGEN und die Liste wird aktualisiert, wenn Ihre CD in der Datenbank erfasst ist. Sollte der CDDB-Eintrag nicht ganz eindeutig sein, müssen Sie noch eine Auswahl treffen:
304
Kapitel 7 · Multimedia
Bild 7.52: Auswahl aus CDDB treffen
Dann wird die aktualisierte Liste endgültig angezeigt:
Bild 7.53: Aktualisierte Trackliste
Markieren Sie dann die Tracks, die Sie rippen möchten, indem Sie die rechte Maustaste verwenden oder die Kontrollkästchen an- bzw. abhaken. Klicken Sie dann auf das Zahnradsymbol AUSLESE STARTEN. Nun sollten Sie noch das Zielverzeichnis für die gerippten Tracks angeben und anschließend auf AUSLESE STARTEN klicken:
Bild 7.54: Die gewünschten Tracks rippen
305
magnum
CDs brennen
Die Audiotitel werden dann ins angegebene Verzeichnis ausgelesen und können anschließend für ein Audioprojekt, in dem Sie einzelne Tracks zusammenstellen, wie bereits beschrieben verwendet werden.
Bild 7.55: Digital-Audio auslesen
Wenn Ihnen K3b nicht zusagt, gibt es eine gute grafische Alternative, das Programm X-CD-Roast. Sie können es unter http://www.xcdroast.org downloaden.
7.3.4
Encoder-Programme der KDE
Das Programm grip Das grafische Programm GRIP ist ein einfaches Tool, mit dem Sie CDs rippen und im MP3- oder Ogg-Vorbis-Format encoden können. Legen Sie eine Audio-CD ein und rufen Sie GRIP auf. Wenn die CD in der CDDB enthalten ist, werden die einzelnen Tracks angezeigt. Die Anzeige lässt sich über die Schaltfläche SCHALTE CDEDITOR AN/AUS erweitern: Bei SUSE Linux 10.0 müssen Sie das Tool nachinstallieren (vergleiche Kapitel 5). Dieses Tool steht unter der von Fedora Core Linux 4.0 standardmäßig installierten KDE nicht zur Verfügung. Sie können es aber unter http://nostatic.org/grip/grip-download.shtml downloaden. Wechseln Sie dann auf das Registerblatt KONFIGURATION und überprüfen Sie dort die Einstellungen. In der Regel sind die Standardeinstellungen ausreichend. Wechseln Sie im Untermenü von KONFIGURATION in das Registerblatt RIP und überprüfen Sie, welchen Ripper Sie verwenden möchten:
306
Kapitel 7 · Multimedia
Bild 7.56: Anzeige der Tracks einer Audio-CD
Bild 7.57: Konfiguration des Rippers
307
magnum
CDs brennen
Hinter dem Rip-Dateiformat verbergen sich der Speicherort und der Name der gerippten Dateien. Die standardmäßigen Einstellungen haben folgende Bedeutung: %A
Interpret der CD
%a
Interpret des Stücks
%d
Name der CD
%i
Index der CD aus der CDDB
%n
Name des Stücks
%t
Positionsnummer des Stücks
%y
Erscheinungsjahr der CD
Wechseln Sie dann im Konfigurationsmenü zum Registerblatt KODIERE und überprüfen Sie dort ebenfalls die Einstellungen, wie zum Beispiel das Kodierprogramm oder das Dateiformat:
Bild 7.58: Kodiereinstellungen
Im Registerblatt DISCDB des Menüs KONFIGURATION ist die CDDB eingestellt, mit deren Hilfe der Interpret und die Titel der eingelegten Audio-CD gesucht werden:
308
Kapitel 7 · Multimedia
Bild 7.59: Einstellung der CDDB
Wechseln Sie dann im Hauptmenü auf die Registerkarte TRACKS zurück und markieren Sie die Tracks, die gerippt werden sollen. Klicken Sie dazu auf die Spaltenüberschrift RIP, um alle zu markieren, und anschließend auf die Haken der Tracks, die nicht gerippt werden sollen:
Bild 7.60: Tracks zum Rippen auswählen
309
CDs brennen
magnum
Wechseln Sie dann in das Registerblatt RIP und klicken Sie entweder auf RIPPE UND KODIERE, um MP3- oder Ogg-Vorbis-Dateien zu erzeugen, oder auf NUR RIPPEN, um nur die einzelnen Tracks als WAV-Dateien abzuspeichern, die dann zum Beispiel mit K3B gebrannt werden können.
Bild 7.61: Rippen und/oder Kodieren mit GRIP
Sollte Ihnen GRIP nicht zusagen, gibt es noch weitere Möglichkeiten zum Rippen und Encoden unter Linux. Dieselbe Funktionalität hat zum Beispiel das Programm RIPPERX, das unter http://sourceforge.net/projects/ripperx heruntergeladen werden kann. Weitere Encoder der Befehlszeile sind lame (»Lame Aint an MP3 Encoder«, erhältlich unter http://lame.sourceforge.net/download/download.html), und notlame, der auf lame basiert und unter http://users.rsise.anu.edu.au/~conrad/ not_lame zur Verfügung steht. Das Tool wurde entwickelt, weil lame zunächst durch die Verwendung von Codeteilen der ISO-Implementierung nicht mit Linux-Distributionen ausgeliefert werden durfte, allerdings steht inzwischen auch lame unter LGPL. Eine weitere Befehlszeilenalternative ist oggenc, das vom Ogg-Vorbis-Projekt entwickelt wurde und von dessen Website http://www.vorbis.com bezogen werden kann.
Das Programm KAudioCreator Das grafische Programm KAUDIOCREATOR ist ein weiteres einfaches Tool, mit dem Sie CDs rippen und im MP3- oder Ogg-Vorbis-Format encoden können. Legen Sie eine Audio-CD ein und starten Sie das Programm über das KDE-Menü MULTIMEDIA - CD/DVD-WERKZEUGE (KAUDIOCREATOR). Wenn die CD in der CDDB enthalten ist, werden die einzelnen Tracks angezeigt. Durch Anklicken wählen Sie die zu rippenden Titel aus. Klicken Sie dann auf die Schaltfläche AUSWAHL zum Auslesen und wählen Sie das gewünschte Format.
310
Kapitel 7 · Multimedia
Bild 7.62: Titel im KAUDIOCREATOR wählen
Sie erhalten eine Meldung, dass Sie in der Registerkarte AUFTRÄGE das Auslesen verfolgen können. Klicken Sie auf die Registerkarte AUFTRÄGE:
Bild 7.63: Das Auslesen verfolgen
311
CDs brennen
magnum
Im Menü EINSTELLUNGEN - KAUDIOCREATOR EINRICHTEN können Sie verschiedene Einstellungen vornehmen, zum Beispiel zur CDDB-Quelle oder den Pfad und Namen der ausgelesenen Dateien festlegen:
Bild 7.64: Einstellungen des KAUDIOCREATORS
312
magnum
Teil 2 Systemverwaltung
8 Benutzer und Gruppen verwalten »Der Anwender steht immer im Mittelpunkt – und da steht er jedem im Weg.« Verfasser unbekannt (Quelle: Entwickler Weisheit) Auch wenn Sie Linux nur privat anwenden, sollten Sie neben dem Systemadministrator bzw. Superuser root auch mindestens einen einfachen Benutzer angelegt haben. Melden Sie sich mit diesem Benutzernamen an, wenn Sie unter Linux arbeiten möchten, und verwenden Sie den Benutzer root wirklich nur für Systemtätigkeiten. Damit vermeiden Sie, dass Sie versehentlich das System verändern, zum Beispiel ungewollt wichtige Dateien löschen. Linux unterscheidet die verschiedenen Benutzer und kann damit bei Zugriffen auf Dateien u. Ä. sicherstellen, ob der Benutzer die entsprechenden Rechte besitzt. In diesem Kapitel werden Gruppen und Benutzer angelegt und wichtige Befehle im Bereich der Benutzerverwaltung vorgestellt, wie zum Beispiel sudo und su.
8.1 Gruppen verwalten Bevor ein Systemadministrator neue Benutzer anlegt, sollte er sich Gedanken über die Zusammenfassung der Benutzer in Gruppen machen, zum Beispiel alle Mitarbeiter einer Abteilung. Um die Systemverwaltung zu vereinfachen, werden jeweils aus mehreren Benutzern Gruppen gebildet. Dabei ist zu beachten, dass die Benutzer einer Gruppe zumeist gleiche Tätigkeiten ausführen bzw. zur selben Abteilung gehören und daher Zugriff auf dieselben Dateien und Verzeichnisse benötigen. Dies lässt sich dann über die Gruppenzugehörigkeit steuern. Unter Linux muss jeder Benutzer in mindestens einer Gruppe Mitglied sein. Beim Anlegen eines Benutzers wird dieser automatisch der so genannten primären Gruppe zugeordnet. Darüber hinaus kann er standardmäßig in beliebig vielen weiteren Gruppen, den so genannten Sekundärgruppen, Mitglied sein. Eine Gruppe besteht aus einem Gruppennamen und einer numerischen Gruppenidentifikationsnummer, der so genannten GID. Bei der Zugriffskontrolle wird die numerische GID überprüft, die Gruppennamen selbst werden im System immer in GIDs aufgelöst. Die Vergabe der Gruppennummern unterliegt einer Konvention, das heißt, GIDs mit Werten kleiner als 100 sind für Systemgruppen reserviert. Manche Linux-Distributionen reservieren für diesen Fall eventuell auch alle Gruppennummern kleiner als 500 oder 1000. Sie sollten daher Ihre Gruppen mit Nummern größer 1000 anlegen, wenn Sie zu anderen Linux-Systemen kompatibel sein möchten. Einige Linux-Distributionen, wie zum Beispiel Red Hat und Fedora Core Linux, legen automatisch beim Erstellen eines neuen Benutzers eine Gruppe an, deren Gruppennummer der Benutzernummer (UID) und deren Gruppenname dem Benutzernamen entspricht, und weisen diese Gruppe dem Benutzer als primäre Gruppe zu. Auch Debian verhält sich standardmäßig so. Diese Einstellung ist aber steuerbar durch die Variable USERGROUPS in der Datei /etc/adduser.conf.
315
magnum
Gruppen verwalten
Der zur Verfügung stehende Zahlenraum zum Anlegen von Gruppennummern liegt im Zahlenbereich zwischen 0 und 65536. Ab Kernel-Version 2.6 können aber sogar bis zu 4 Milliarden GIDs angelegt werden. Die folgenden Befehle, um Benutzer und Gruppen anzulegen, zu löschen und zu ändern, stehen in fast allen Linux- und Unix-Derivaten zur Verfügung. Debian GNU/Linux hat zusätzlich noch eigene Befehle für denselben Zweck, die so genannte adduser-Suite.
8.1.1
Gruppen anlegen mit dem Befehl groupadd
Eine neue Gruppe wird vom Benutzer root mit dem Befehl Syntax des Befehls lautet:
groupadd
angelegt. Die
# groupadd [-option(en)]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-f
Wenn die Gruppe bereits besteht, wird standardmäßig eine Fehlermeldung ausgegeben. Diese Option unterdrückt die Fehlermeldung. Wenn die Option -g mit einer bereits vergebenen Gruppen-ID (GID) verwendet wird, wird durch -f die Option -g ignoriert und die nächste freie GID vergeben.
-g gid [-o] Weist der Gruppe die angegebene GID zu. Ist diese bereits vergeben, kann durch die zusätzliche Angabe der Option -o eine doppelte Zuweisung erzwungen werden. -r
Mit dieser Option wird eine Systemgruppe angelegt, die eine Gruppennummer kleiner als 500 erhält. Es wird die nächste freie Gruppennummer unter 500 vergeben, wenn nicht gleichzeitig die Option -g verwendet wird.
Tab. 8.1: Die Optionen des Befehls groupadd
In diesem Beispiel wird eine Gruppe einkauf angelegt: # groupadd einkauf
Dabei wurde der neuen Gruppe automatisch die nächste freie GID zugewiesen. Es ist aber auch möglich, diese manuell zuzuweisen: # groupadd –g 555 verkauf
Der Gruppenname und die GID müssen normalerweise eindeutig sein, trotzdem gibt es die Möglichkeit, eine mehrfache Vergabe der GID mit der Option –o zu erzwingen: # groupadd –g 555 -o vertrieb
Für Linux handelt es sich hierbei aber nur um eine einzige Gruppe, da das Betriebssystem intern nur die GID und nicht den Gruppennamen verwendet. Die Gruppen verkauf und vertrieb sind also nur Aliase zueinander. Da solche Konstellationen aber in der Regel schwer zu durchschauen sind, sollten sie nicht verwendet werden.
316
Kapitel 8 · Benutzer und Gruppen verwalten
8.1.2
Gruppen ändern mit dem Befehl groupmod
Mit dem Befehl groupmod ändern Sie eine bereits vorhandene Gruppe. Die Syntax des Befehls lautet: # groupmod [-option(en)]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-g gid [-o]
Weist der Gruppe die angegebene GID zu. Ist diese bereits vergeben, kann durch die zusätzliche Angabe der Option -o eine doppelte Zuweisung erzwungen werden.
-n name
Mit dieser Option wird der Name einer Gruppe verändert.
Tab. 8.2: Die Optionen des Befehls groupmod
Im folgenden Beispiel wird die Gruppe einkauf in die Gruppe beschaff umbenannt: # groupmod –n beschaff einkauf
Die GID einer bereits bestehenden Gruppe lässt sich mit der Option –g verändern: # groupmod –g 666 beschaff
Dabei sollten Sie aber unbedingt beachten, dass Dateien und Verzeichnisse, denen diese Gruppe bereits zugeordnet wurde, nicht die neue GID erhalten. Der Befehl ls –l zeigt in solchen Fällen nur die GID an, weil kein Gruppenname mehr vorhanden ist. Solche Dateien können mit dem Befehl find und der Option -nogroup gesucht und mit chgrp der neuen GID zugewiesen werden. Auch bei diesem Befehl lässt sich die doppelte Vergabe einer GID erzwingen, zum Beispiel: # groupmod –g 666 -o buha
8.1.3
Gruppen löschen mit dem Befehl groupdel
Mit dem Befehl lautet:
groupdel
löschen Sie eine Gruppe wieder. Die Syntax des Befehls
# groupdel gruppe
In diesem Beispiel wird die Gruppe buha gelöscht: # groupdel buha
Die Gruppe wird unter Linux nicht gelöscht, wenn es sich um die primäre Gruppe eines Benutzers handelt. Das ist die Gruppe, die ihm als erste Gruppe zugewiesen wurde (vergleiche Abschnitt 8.2.2): # groupdel einkauf groupdel: cannot remove user's primary group.
317
magnum
Gruppen verwalten
8.1.4
Die Datei /etc/group
Die Informationen zu den im System vorhandenen Gruppen befinden sich in der Datei /etc/group: # cat /etc/group root:x:0: bin:x:1:bin,daemon daemon:x:2: sys:x:3: tty:x:5: disk:x:6: lp:x:7: ...
Die Datei enthält pro Zeile den Eintrag für eine Gruppe. Sie besteht aus vier durch Doppelpunkte getrennten Feldern mit folgendem Inhalt:
쮿
Das erste Feld enthält den Gruppennamen, der maximal acht Zeichen lang sein kann.
쮿
Im zweiten Feld steht das (verschlüsselte) Gruppenpasswort, wenn es keine Datei /etc/gshadow gibt (vergleiche nächster Abschnitt). Dieses Feld wird nur von wenigen Programmen ausgewertet, ist aber seit der Entstehung von Unix vorhanden. Das Gruppenpasswort wird zum Beispiel vom Befehl newgrp (vergleiche Kapitel 8) verwendet, der temporär die primäre Gruppe eines Benutzers ändert.
Bei vielen Linux- und Unix-Systemen gibt es standardmäßig keinen Befehl, um das verschlüsselte Gruppenpasswort zu füllen. In diesem Fall müssen Sie bei Bedarf erst einem Benutzer das gewünschte Passwort zuweisen, aus der Datei /etc/shadow (vergleiche nächster Abschnitt) das verschlüsselte Passwort kopieren und in das Gruppenpasswortfeld in der Datei /etc/group einfügen. Bei SUSE Linux können Sie das Gruppenpasswort mit Hilfe des grafischen Tools YaST eingeben. Bei Debian können Sie das Gruppenpasswort mit dem Befehl gpasswd -g erzeugen.
318
쮿
Das dritte Feld enthält die GID der Gruppe. Sie sollte eindeutig sein. Die Ziffern 0 bis 99 oder 0 bis 499 (je nach Linux- oder Unix-System) sind Systemgruppen vorbehalten. Weitere angelegte Benutzergruppen können standardmäßig von 100 bis 60.000 reichen.
쮿
Das letzte Feld enthält eine Liste von Benutzernamen, für die diese Gruppe die sekundäre Gruppe ist.
Kapitel 8 · Benutzer und Gruppen verwalten
8.1.5
Die Datei /etc/gshadow
In der Datei /etc/gshadow werden die verschlüsselten Passwörter und die Angaben zum Passwortablauf gespeichert: # cat /etc/gshadow at:*:root: audio:*:root:hugo1,her bin:*:root: cdrom:*:root: console:*:root: daemon:*:root: dba:*:root: ...
Die Datei enthält pro Zeile den Eintrag für eine Gruppe. Sie besteht aus drei durch Doppelpunkte getrennten Feldern mit folgendem Inhalt:
쮿
Das erste Feld enthält den Gruppennamen.
쮿
Das zweite Feld enthält ein verschlüsseltes Passwort oder das Zeichen *, wenn kein Passwort für eine Gruppe vergeben wurde: –
Das Ausrufezeichen (!) steht für »new group« und bedeutet, dass noch kein Gruppenpasswort vergeben wurde, wodurch Nichtmitglieder auch nicht in diese Gruppe wechseln können.
–
Kein Eintrag steht für »no password« und bedeutet, das Passwort wurde entfernt, wodurch Nichtmitglieder auch nicht in diese Gruppe wechseln können.
–
Ein Ausrufezeichen vor einem verschlüsselten Passwort bedeutet »locked group«, das Passwort wurde vorübergehend gesperrt, wodurch Nichtmitglieder im Moment nicht in diese Gruppe wechseln können.
쮿
Das dritte Feld enthält den Gruppenadministrator, der Gruppenmitglieder und das Gruppenpasswort verwalten kann.
쮿
Das vierte Feld enthält eine Liste von Benutzernamen, für die diese Gruppe die sekundäre Gruppe ist.
8.1.6
Weitere Befehle der Gruppenverwaltung
Die folgenden Befehle können im Bereich der Gruppenverwaltung verwendet werden.
Der Befehl groups Mit dem Befehl groups können Sie die Gruppen anzeigen lassen, in denen ein Benutzer Mitglied ist. Die Syntax des Befehls lautet: # groups [benutzer]
In diesem Beispiel werden die Gruppen der Benutzer her abgefragt: # groups her her : users uucp dialout audio video einkauf
319
magnum
Gruppen verwalten
Der Befehl grpck Dieser Befehl überprüft die Datei /etc/group auf Inkonsistenzen. Diese können zum Beispiel durch manuelles Editieren der Datei entstehen. Die Syntax des Befehls lautet: # grpck [-option]
Der Befehl überprüft folgende Punkte:
쮿
eine korrekte Anzahl von Feldern
쮿
eine eindeutige Vergabe von Gruppennamen
쮿
eine gültige Liste von Mitgliedern
Der Befehl kennt nur eine Option: Option
Beschreibung
-r
Die Datei /etc/group wird nur überprüft (read-only).
Tab. 8.3: Die Optionen des Befehls grpck
In diesem Beispiel wird bei der Überprüfung ein Fehler gefunden: # grpck shadow group projekt-ag1: no user fbern delete member `fbern'? n grpck: no changes
Diese Fehlermeldung ist relativ harmlos, da sie besagt, dass als Gruppenmitglied ein User fbern eingetragen ist, der in der Datei /etc/passwd nicht existiert. In diesem Fall wurde der Gruppeneintrag nicht gelöscht.
Der Befehl newgrp Mit diesem Befehl kann ein Benutzer seine aktuelle Gruppen-ID (GID) während einer Sitzung wechseln. Die Syntax des Befehls lautet: # newgrp [-] gruppe
Wenn das optionale Flag - verwendet wird, wird die Umgebung des Benutzers neu initialisiert, als ob er sich neu anmelden würde. Wird das Flag nicht verwendet, bleibt die aktuelle Umgebung einschließlich des aktuellen Arbeitsverzeichnisses unverändert. Der Befehl verlangt vom Benutzer ein Passwort, wenn er keines hat, aber der Gruppe eines zugewiesen wurde, oder wenn er kein Mitglied der Gruppe ist und die Gruppe ein zugewiesenes Passwort hat. Wenn es kein Gruppenpasswort gibt und der Benutzer kein Mitglied der Gruppe ist, wird ihm der Wechsel in die angegebene Gruppe verwehrt. In diesem Beispiel wechselt die Benutzerin her von ihrer Standardgruppe users in die Gruppe einkauf. Legt sie nun eine neue Datei an, erhält die Gruppe einkauf Rechte an der Datei anstelle ihrer primären Gruppe users: $ groups einkauf users uucp dialout audio video $ newgrp einkauf
320
Kapitel 8 · Benutzer und Gruppen verwalten
$ touch dat-neu $ ls -l dat-neu -rw-r--r-- 1 her einkauf 0 2004-05-08 17:49 dat-neu
Der Befehl sg Dieser Befehl funktioniert ähnlich wie der Befehl newgrp, aber er nimmt zusätzlich einen Befehl entgegen und wirkt nur für diesen einen Befehl. Ein Befehl, der aus mehreren Komponenten besteht, muss in Anführungszeichen eingegeben werden. Die Syntax des Befehls lautet: # sg [-] [gruppe befehl]
In einigen Linux-Systemen ist der Befehl Befehl newgrp.
sg
nur ein symbolischer Link auf den
Im folgenden Beispiel ist der aufrufende Benutzer kein Mitglied der Gruppe einkauf, aber er kennt das Gruppenpasswort und kann aus diesem Grund die Datei hinweis.txt lesen: $ groups buha users uucp dialout audio video $ ls -l /projekt/einkauf/hinweis.txt -rw-r--r-- 1 her einkauf 0 2004-05-08 19:49 hinweis.txt $ sg einkauf "more /projekt/einkauf/hinweis.txt" Kennwort: Diese Datei enthaelt Hinweise zum ...
Der Befehl gpasswd Mit diesem Befehl kann das Gruppenpasswort vergeben oder ein Administrator für die Gruppenselbstverwaltung angelegt werden. Die Syntax des Befehls lautet: # gpasswd [-option(en)] group
Sobald der Gruppenadministrator von root mit dem Befehl gpasswd wurde, kann er mit demselben Befehl gpasswd die Gruppe und damit und /etc/group bearbeiten.
-A angelegt /etc/gshadow
Der Befehl kennt folgende Optionen: Option
Beschreibung
-r
Die Datei /etc/group wird nur überprüft (read-only).
-A admin
Anlegen des Gruppenadministrators (kann nur von root verwendet werden)
-M user1,user2,…
Anlegen der Gruppenmitglieder (kann nur von root verwendet werden)
-a user
Hinzufügen des Benutzers user zur Gruppe
-r
Löschen des Gruppenpassworts, dadurch ist es für Nichtmitglieder der Gruppe nicht mehr möglich, mit Hilfe des Befehls newgrp in die Gruppe zu wechseln.
Tab. 8.4: Die Optionen des Befehls gpasswd
321
Benutzer verwalten
magnum
Bestimmte Linux-Distributionen verwenden die Datei /etc/gshadow nicht. Diese Distributionen kennen auch nur die Option -r für den Befehl gpasswd. Im folgenden Beispiel wird der Gruppenadministrator doo für die Gruppe entwicklung angelegt: # gpasswd -A doo entwicklung
Auf folgende Weise kann der Gruppenadministrator doo der Gruppe entwicklung einen Benutzer hinzufügen: # su - doo doo@linux3:~ > gpasswd -a per entwicklung Adding user per to group entwicklung
Der entsprechende Eintrag zur Gruppe in die Datei /etc/gshadow sieht wie folgt aus: # fgrep entwicklung /etc/gshadow entwicklung::doo:per
Dasselbe können Sie unter Debian GNU/Linux mit dem Befehl adduser benutzer gruppe ausführen.
8.2 Benutzer verwalten Jeder Benutzer unter Linux besitzt einen Anmeldenamen und eine dazugehörige numerische Benutzeridentifikationsnummer, die so genannte UID. Die UIDs werden im Zahlenbereich zwischen 0 und 65536 angelegt, ab Kernel-Version 2.6 sind aber bis zu 4 Milliarden UIDs möglich. Linux verwendet für die Zugriffskontrolle nur die UIDs. Bei der Ausgabe von Befehlen wird die UID meist wieder durch den Benutzernamen ersetzt, damit die Benutzer die Ausgabe einfacher interpretieren können. Neben den Benutzern, die sich am System anmelden können, gibt es eine Anzahl von Systemkonten. Mit diesen können bestimmte Programme gestartet werden oder sie sind aus Sicherheitsgründen die Besitzer von speziellen Dateien. Die UID 0 ist bei allen UNIX- und Linux-Systemen dem Superuser bzw. Systemadministrator root zugewiesen. Er hat das einzige Benutzerkonto ohne Zugriffsbeschränkungen. UIDs kleiner als 100 werden für Systemkonten verwendet, verschiedene LinuxDistributionen verwenden dazu auch die Zahlenbereiche kleiner 500 oder kleiner 1000. Die Systemkonten können bei jeder Linux-Distribution je nach Hersteller unterschiedlich lauten. Sie sollten Ihre Benutzer mit Nummern größer 1000 anlegen, wenn Sie zu anderen Linux-Systemen kompatibel sein möchten. Wenn Sie neue Benutzer anlegen, sollten Sie pro Benutzer folgende Informationen bereithalten:
쮿
322
Der Benutzer- oder Anmeldename, den Sie vergeben möchten, muss eindeutig sein und darf aus zwei bis acht Zahlen und Buchstaben bestehen. Das erste Zeichen muss ein Buchstabe und mindestens ein Zeichen muss ein Kleinbuchstabe sein. Als Sonderzeichen sind nur Unterstriche, Punkte und Bindestriche, aber keine Leerzeichen oder sonstigen Sonderzeichen zugelassen. Es ist empfehlenswert, Punkte und Umlaute zu vermeiden. Sie können den Benutzernamen aus dem Vor- oder Nachnamen oder einer Kombination aus beidem bilden. Es ist
Kapitel 8 · Benutzer und Gruppen verwalten
aber auch möglich, die Namensvorgabe nach eigenen Vorstellungen zu definieren, zum Beispiel durch Angabe der Abteilung und einer laufenden Nummer.
쮿
Das Passwort muss zunächst vom Administrator vorgegeben werden, um zu vermeiden, dass ein Benutzerkonto ohne Passwort am System existiert. Es sollte aber sofort nach dem ersten Anmelden vom Benutzer geändert werden.
쮿
Das Homeverzeichnis, in das der Benutzer nach der Anmeldung positioniert wird und in dem er Dateien und Verzeichnisse anlegen, ändern und löschen kann. Standardmäßig wird das Verzeichnis /home und darin ein Unterverzeichnis mit dem gleichen Namen wie der Benutzername vorgeschlagen.
쮿
Die Anmeldeshell des Benutzers, mit der er arbeiten soll, zum Beispiel die Bourne-Again- oder Korn-Shell. Davon hängt ab, welche systemweiten und benutzereigenen Initialisierungsdateien beim Anmelden oder Starten einer Shell gelesen werden.
8.2.1
Defaultwerte zum Anlegen von Benutzern
Sie legen einen neuen Benutzer mit dem Befehl useradd an. Bevor Sie damit beginnen, sollten Sie aber die Defaultwerte, mit denen ein neuer Benutzer angelegt wird, überprüfen und gegebenenfalls ändern, wenn Sie diese Vorgabewerte nicht überschreiben. Der folgende Befehl gibt die Defaultwerte aus: # useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel GROUPS=dialout,uucp,video,audio
Sie erhalten die Defaultwerte für die primäre Gruppe, in diesem Beispiel 100 (bei SUSE Linux die Gruppe users), das Basisverzeichnis für das Homeverzeichnis, in diesem Beispiel /home, das Verzeichnis, in dem sich die Vorlagedateien der benutzereigenen Initialisierungsdateien befinden, in diesem Beispiel /etc/skel, die Anmeldeshell, in diesem Beispiel /bin/bash, die Anzahl der Tage, an denen ein Konto inaktiv sein darf, bevor es automatisch gesperrt wird, in diesem Beispiel -1 (kein Wert), und das Ablaufdatum (EXPIRE), das in diesem Beispiel auch keinen Wert hat. Nach dem ersten Aufruf des Befehls wird eine entsprechende Datei /etc/default/ useradd angelegt, die von Hand editiert werden kann, um die Defaultwerte zu ändern. Diese Datei enthält die Vorgabewerte für das Anlegen von Benutzern, wie zum Beispiel das Homeverzeichnis, die Gruppe oder die Shell. Nach dem ersten Aufruf des Befehls wird eine entsprechende Datei /etc/default/useradd angelegt, die von Hand oder mit dem Befehl useradd -D editiert werden kann. # cat /etc/default/useradd GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel GROUPS=dialout,uucp,video,audiodefgroup=1 ...
323
magnum
Benutzer verwalten
Bei Debian Linux heißt diese Datei /etc/adduser.conf und enthält andere Variablen.
8.2.2
Benutzer anlegen mit dem Befehl useradd
Ein neuer Benutzer wird von root mit dem Befehl useradd angelegt. Die Syntax des Befehls lautet: # useradd [-option(en)] benutzer
Der Befehl kennt viele Optionen: Option
Beschreibung
-c kommentar oder --comment
Diese Option weist dem Benutzerkonto eine ausführliche Beschreibung zu.
-d verzeichnis oder --home
Diese Option weist dem Benutzerkonto explizit ein Homeverzeichnis zu.
-D oder --show-defaults Ausgabe der Defaultwerte -D binddn oder --binddn
Verwendet den Namen binddn, um sich an das LDAP Directory zu binden
-e jjjj-mm-tt oder --expire
Das Benutzerkonto erhält ein Ablaufdatum im angegebenen Format.
-f tage oder --inactive
Diese Option weist der Anzahl der inaktiven Tage einen Wert zu, bevor das Konto automatisch gesperrt wird.
-g gid oder --gid
Diese Option weist die primäre Gruppe zu.
-G gid,gid,... oder --groups
Diese Option weist die sekundären Gruppen zu. Die Gruppen werden durch Komma getrennt ohne Leerzeichen aufgelistet.
-k verzeichnis oder --skel
Diese Option bewirkt, dass die Initialisierungsdateien aus einem anderen Verzeichnis kopiert werden.
-m oder --create-home
Wenn das Homeverzeichnis noch nicht existiert, wird es angelegt.
-o oder --non-unique
Diese Option erzwingt die mehrfache Vergabe derselben UID.
-p password oder --password
Diese Option weist dem Benutzer ein verschlüsseltes Passwort zu.
-P pfad oder --path
Diese Option informiert den Befehl, dass die Dateien passwd und shadow sich nicht in /etc, sondern im angegebenen Pfad befinden.
-r oder --system
Diese Option erzeugt ein Systemkonto mit einer Benutzer-ID, die kleiner als 500 ist.
-s shell oder --shell
Diese Option weist dem Benutzerkonto eine bestimmte Shell zu.
--save-defaults
Diese Option speichert abgeänderte Defaultwerte ab.
--service service
Fügt das Konto einem speziellen Verzeichnisdienst hinzu. Der Standardwert ist files, aber auch ldap ist ein gültiger Wert.
-u
uid oder --uid
Diese Option weist dem Benutzerkonto eine bestimmte UID zu.
Tab. 8.5: Optionen des Befehls useradd
324
Kapitel 8 · Benutzer und Gruppen verwalten
Im nachfolgenden Beispiel wird der Benutzer hans einschließlich seines Homeverzeichnisses angelegt. Er erhält die C-Shell, die primäre Gruppe buha und die sekundären Gruppen einkauf und versand. Die Anzahl der inaktiven Tage wird auf 25 gesetzt: # useradd –m –g buha –G einkauf,versand –s /bin/csh –c "Hans Hansen, Raum 327" –f 25 hans
Im nächsten Beispiel wird die Benutzerin anna mit ihrem Homeverzeichnis angelegt. Sie erhält die Korn-Shell und die primäre Gruppe einkauf. Ihr Konto wird am 30.6.2007 ablaufen und ihr wird die UID 999 zugewiesen: # useradd –m –g einkauf –u 999 –s /bin/ksh –c "Anna Anders, Raum 217" –e 06/30/ 07 anna
Die einfachste Möglichkeit, einen Benutzer anzulegen, besteht darin, alle Defaultwerte zu übernehmen. Sie sollten allerdings die Option –m immer verwenden, damit der Benutzer auch ein Homeverzeichnis hat: # useradd –m berta
Im nächsten Beispiel wird der Defaultwert für die Shell eines neu angelegten Benutzers geändert. Zukünftig soll jeder neue Benutzer nicht mehr die BourneAgain-, sondern die Korn-Shell erhalten: # useradd --save-defaults -s /bin/ksh # useradd --show-defaults GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/ksh SKEL=/etc/skel GROUPS=dialout,uucp,video,audio
Wenn Sie die Option –m vergessen, dann gibt es Probleme bei der Anmeldung des Benutzers, weil kein Homeverzeichnis existiert. Sie müssen dann hinterher manuell den Befehl mkdir verwenden, um das Verzeichnis anzulegen, sowie die notwendigen Initialisierungsdateien in das Homeverzeichnis kopieren. Vergessen Sie anschließend nicht, mit dem Befehl chown dem entsprechenden Benutzer und seiner Gruppe den Besitz an seinem Homeverzeichnis und den darin enthaltenen Initialisierungsdateien zu übertragen, sonst kann er darin nicht arbeiten.
8.2.3
Passwortablauf mit dem Befehl passwd steuern
Im Gegensatz zu root muss sich ein Benutzer an bestimmte Regeln bei der Passwortvergabe halten: Das Passwort darf nicht zu kurz sein, es darf nicht mit dem Benutzernamen übereinstimmen, es muss aus mindestens zwei Buchstaben und einem Sonderzeichen oder einer Zahl bestehen. Bei einer Passwortänderung muss sich das neue Passwort vom alten in mindestens drei Zeichen unterscheiden. Standardmäßig ist für das Passwort unter Linux eine Länge von mindestens 5 Zeichen vorgegeben. Es sollten aber unbedingt 8 Zeichen verwendet werden, um den Passwortschutz zu verbessern. Mehr als 8 Zeichen bei einem Passwort werden im Standard-Linux nicht ausgewertet, sofern nicht die MD5- oder DES-Verschlüsselung der Passwörter aktiviert ist (vergleiche 8.5.3).
325
magnum
Benutzer verwalten
Sie können entweder den Befehl useradd -p oder den Befehl passwd verwenden, um das verschlüsselte Passwort eines Benutzers in die Datei /etc/shadow einzutragen. Die Syntax des Befehls lautet: # passwd [-option(en)] [benutzer]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Diese Option gibt den Status der Passwörter aller Benutzerkonten aus, wenn sie gemeinsam mit –S verwendet wird.
-d user
Diese Option löscht das Passwort des Benutzers.
-D binddn
Verwendet den Namen binddn, um sich an das LDAP Directory zu binden
-e
Diese Option zwingt den Benutzer, das Passwort beim nächsten Anmelden zu ändern.
-f
Diese Option ändert die Information, die sich im Kommentarfeld befindet.
-g
Diese Option ändert das Passwort für die angegebene Gruppe. Sie kann nur von root oder einem Benutzer geändert werden, der Gruppenadministrator der angegebenen Gruppe ist.
-h
Diese Option ändert das Homeverzeichnis des angegebenen Benutzers.
-i tage
Diese Option definiert, wie viele Tage ein Konto inaktiv sein darf, bevor es automatisch gesperrt wird.
-k
Diese Option lässt das Ändern eines Passworts nur zu, wenn dieses abgelaufen ist.
-l
Diese Option sperrt das Konto eines Benutzers.
-n tage
Diese Option gibt an, wie viele Tage das Passwort mindestens gültig sein muss.
-q
Stiller Modus. Diese Option kann nur mit der Option -k zusammen verwendet werden.
-s
Diese Option ändert die Anmeldeshell eines Benutzers.
-S
Diese Option gibt Informationen über den Status des Passworts eines Benutzers aus. Dabei bedeutet L, das Konto ist gesperrt, NP, das Konto hat kein Passwort, und P, das Konto hat ein verwendbares Passwort.
-u
Diese Option entsperrt das angegebene Konto.
-w tage
Diese Option gibt an, wie viele Warntage vor dem Ablauf des Passworts bestehen.
-x tage
Diese Option gibt an, nach wie vielen Tagen das Passwort geändert werden muss.
Tab. 8.6: Optionen des Befehls passwd
Nachfolgend wird dem Benutzer hans ein Passwort zugewiesen: # passwd hans Changing password for hans New password: Re-enter new password: Password changed
326
Kapitel 8 · Benutzer und Gruppen verwalten
Nachfolgend wird der Status des Kontos der Benutzerin her ausgegeben: # passwd -S her her PS 01/06/2003 0 99999 7 -1
Zuerst wird der Anmeldename, dann der Status PS ausgegeben, der besagt, dass das Konto ein gültiges Passwort hat. Es folgen das letzte Änderungsdatum des Passworts, die Anzahl der Tage, bevor das Passwort wieder geändert werden darf, die Anzahl der Tage, wann das Passwort geändert werden muss, die Anzahl der Warntage, dass das Passwort abläuft (hier 7), und das Ablaufdatum des Passworts (hier -1, das heißt, es gibt kein Ablaufdatum).
8.2.4
Benutzer ändern mit dem Befehl usermod
Mit dem Befehl usermod ändern Sie einen bereits vorhandenen Benutzer. Die Syntax des Befehls lautet: # usermod [-option(en)] benutzer
Dieser Befehl hat fast dieselben Optionen wie der Befehl der Optionen –l und –m:
useradd,
mit Ausnahme
Option
Beschreibung
-c kommentar
Diese Option weist dem Benutzerkonto eine ausführliche Beschreibung zu.
-d verzeichnis
Diese Option weist dem Benutzerkonto explizit ein Homeverzeichnis zu.
-e jjjj-mm-tt
Das Benutzerkonto erhält ein Ablaufdatum im angegebenen Format.
-f tage
Diese Option weist der Anzahl der inaktiven Tage einen Wert zu, bevor das Konto automatisch gesperrt wird.
-g gid
Diese Option weist die primäre Gruppe zu.
-G gid,gid,...
Diese Option weist die sekundären Gruppen zu. Die Gruppen werden durch Komma getrennt ohne Leerzeichen aufgelistet.
-l neuername
Diese Option verändert den Anmeldenamen eines Benutzers.
-L
Sperrt das Passwort eines Benutzers. Vor das verschlüsselte Passwort wird ein Ausrufezeichen (!) gesetzt.
-m
Diese Option benennt das Homeverzeichnis des Benutzers in das mit der Option –d angegebene Verzeichnis um.
-o
Diese Option erzwingt die mehrfache Vergabe derselben UID.
-p password
Diese Option weist dem Benutzer ein verschlüsseltes Passwort zu.
-s shell
Diese Option weist dem Benutzerkonto eine bestimmte Shell zu.
-u uid
Diese Option weist dem Benutzerkonto eine bestimmte UID zu.
-U
Entsperrt das Passwort eines Benutzers. Das Ausrufezeichen (!) vor dem verschlüsselten Passwort wird entfernt.
Tab. 8.7: Optionen des Befehls usermod
327
magnum
Benutzer verwalten
In diesem Beispiel werden der Anmeldename und das Homeverzeichnis der Benutzerin berta in tina verändert: # usermod –d /home/tina –m –l tina berta
Im nächsten Beispiel erhält anna nun die Bourne-Again-Shell und die Anzahl der inaktiven Tage wird bei ihr auf 40 gesetzt: # usermod –s /bin/bash –f 40 anna
Mit der Option –u können Sie dem Benutzer eine neue UID zuweisen: # usermod –u 120 tina
Dabei sollten Sie aber unbedingt beachten, dass Dateien und Verzeichnisse, denen diese UID bereits zugeordnet wurde, nicht die neue UID erhalten. Der Befehl ls –l zeigt in solchen Fällen nur die UID an, weil kein Benutzername mehr vorhanden ist. Solche Dateien können mit dem Befehl find und der Option –nouser gesucht und mit dem Befehl chown auf die neue UID geändert werden. Auch bei diesem Befehl lässt sich die doppelte Vergabe der UID erzwingen, zum Beispiel: # usermod –u 100 -o otto
Vor diesem Gebrauch muss aber wieder ausdrücklich gewarnt werden, weil Benutzer mit derselben UID dieselben Zugriffsrechte unter Linux haben, ja sogar dieselben Benutzer für das System sind.
8.2.5
Benutzer löschen mit dem Befehl userdel
Sie können mit dem Befehl Befehls lautet:
userdel
einen Benutzer wieder löschen. Die Syntax des
# userdel [-option(en)] benutzer
Der Befehl kennt folgende Optionen: Option
Beschreibung
-D binddn oder --binddn
Verwendet den Namen binddn, um sich an das LDAP Directory zu binden
-f oder --force
Diese Option erzwingt das Löschen von Dateien, auch wenn diese nicht dem Eigentümer des Kontos gehören.
-P pfad oder --path
Diese Option informiert den Befehl, dass die Dateien passwd und shadow sich nicht in /etc, sondern im angegebenen Pfad befinden.
-r oder --remove-home
Diese Option löscht das komplette Home- und Mailverzeichnis des zu löschenden Benutzers.
--service service
Fügt das Konto einem speziellen Verzeichnisdienst hinzu. Der Standardwert ist files, aber auch ldap ist ein gültiger Wert.
Tab. 8.8: Optionen des Befehls userdel
328
Kapitel 8 · Benutzer und Gruppen verwalten
Im folgenden Beispiel wird die Benutzerin tina gelöscht: # userdel tina
Um gleichzeitig das Homeverzeichnis des Benutzers zu löschen, verwenden Sie die Option –r: # userdel –r tina
Vergewissern Sie sich aber zuvor, dass sich keine wichtigen Dateien mehr in dem zu löschenden Homeverzeichnis befinden. Alle anderen Dateien des Benutzers, wie zum Beispiel seine Mailbox, können Sie mit dem Befehl find und der Option -user benutzername suchen und löschen bzw. manuell löschen.
8.2.6
Die Datei /etc/passwd
Die Informationen zu den im System vorhandenen Benutzern befinden sich in der Datei /etc/passwd: # cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/bin/bash daemon:x:2:2:Daemon:/sbin:/bin/bash lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash ...
Die Datei enthält pro Zeile den Eintrag für einen Benutzer. Sie besteht aus sieben durch Doppelpunkte getrennten Feldern mit folgendem Inhalt:
쮿
Das erste Feld enthält den Benutzernamen, der maximal acht Zeichen lang sein sollte.
쮿
Im zweiten Feld steht der Platzhalter für das verschlüsselte Passwort. Das verschlüsselte Passwort wird inzwischen aus Sicherheitsgründen in /etc/shadow (siehe nächster Abschnitt) gespeichert.
쮿
Das dritte Feld enthält die UID des Benutzers. Sie sollte unbedingt eindeutig sein. Die Werte 0 bis 499 sind Systemkonten vorbehalten. Weitere angelegte Benutzergruppen können von 500 bis 60.000 bzw. bis zu 4 Milliarden reichen.
쮿
Das vierte Feld nimmt die GID der primären Gruppe des Benutzers auf.
쮿
Das fünfte Feld kann einen Kommentar zur näheren Beschreibung des Benutzers enthalten (siehe Kapitel 8, Befehl chfn).
쮿
Im sechsten Feld steht das Homeverzeichnis des Benutzers, in dem er sich nach der Anmeldung befindet.
쮿
Das siebte Feld verweist auf die Anmeldeshell des Benutzers. Alternativ kann hier auch der Name eines Anwendungsprogramms stehen, mit dem der Benutzer arbeiten soll, zum Beispiel eine Buchhaltungs- oder PPS-Anwendung. Dieses wird dann anstelle der Shell gestartet. Auf diese Weise erhält der Benutzer in der Regel keine Shell, denn sobald er das Programm beendet, ist der Benutzer auch vom System abgemeldet.
329
magnum
Benutzer verwalten
Die Systemkonten sind virtuelle Benutzer, unter deren UIDs die Systemprozesse laufen. Dies wurde aus Sicherheitsgründen auf diese Weise implementiert. Bei älteren Linux- und Unix-Systemen wurden die meisten Prozesse unter dem Konto root gestartet, was bei Sicherheitslücken aber die Folge hatte, dass ein Hacker über den aufgebrochenen Dienst mit der UID von root arbeiten konnte. Durch die jetzige Einstellung kann ein Hacker bei einem Durchbruch nur mit einem Systemkonto mit eingeschränkten Rechten arbeiten.
8.2.7
Die Datei /etc/shadow
In der Datei /etc/shadow werden die verschlüsselten Passwörter und die Angaben zum Passwortablauf etc. gespeichert: # cat /etc/shadow adabas:*:8902:0:10000:::: amanda:*:8902:0:10000:::: at:*:8902:0:10000:::: bin:*:8902:0:10000:::: cyrus:*:8902:0:10000:::: daemon:*:8902:0:10000:::: ... oliver:zgg4f1jipNKAg:12563:7:90:4:-1:12783: ...
Die Datei enthält pro Zeile den Eintrag für einen Benutzer. Sie besteht aus neun durch Doppelpunkte getrennten Feldern mit folgendem Inhalt:
330
쮿
Das erste Feld enthält den Benutzernamen.
쮿
Das zweite Feld enthält ein 13 Zeichen langes verschlüsseltes Passwort oder das Zeichen ! für ein gesperrtes Konto oder * für Systemkonten, bei denen kein interaktives Anmelden möglich ist.
쮿
Das dritte Feld zeigt das Datum, an dem das Passwort zuletzt geändert wurde. Dieses Datum wird in Tagen ab dem 1.1.1970 gezählt.
쮿
Im vierten Feld steht die Anzahl der Tage, die vergehen müssen, bevor das Passwort wieder geändert werden darf.
쮿
Das fünfte Feld nennt die Anzahl der Tage, die vergehen müssen, bevor das Passwort verändert werden muss.
쮿
Das sechste Feld enthält die Anzahl der Tage, an denen der Benutzer gewarnt wird, dass sein Passwort abläuft.
쮿
Das siebte Feld gibt die Anzahl der Tage an, an denen das Password abgelaufen sein muss, bevor es gesperrt wird.
쮿
Das achte Feld enthält das Ablaufdatum des Kontos. Dieses Datum wird in Tagen ab dem 1.1.1970 gezählt.
쮿
Das letzte Feld ist zurzeit noch nicht belegt.
Kapitel 8 · Benutzer und Gruppen verwalten
Im Gegensatz zur Datei /etc/passwd, die von jedem gelesen werden darf, hat nur root das Schreibrecht und root und die Gruppe shadow haben das Leserecht für die Dateien /etc/shadow und /etc/gshadow. Dadurch, dass nicht einmal die verschlüsselten Passwörter gelesen werden dürfen, wird die Passwortsicherheit wesentlich erhöht. Da dem Befehl passwd das SETUID-Bit zugewiesen wurde (vergleiche Kapitel 8), ist es trotzdem möglich, dass ein Benutzer sein in der Datei /etc/shadow hinterlegtes Passwort ändert. Das bedeutet, dass dieser Befehl mit den Rechten seines Besitzers, nämlich root, ausgeführt wird, wodurch die einzelnen Benutzer die Möglichkeit haben, ihr Passwort zu ändern. Wenn Sie selbst Systemkonten einrichten müssen, mit den kein interaktives Anmelden möglich sein soll, dann verwenden Sie bei diesen Konten anstelle einer Shell den Befehl /bin/false. Damit wird das interaktive Anmelden verhindert, wenn es nicht schon zuvor am nicht vorhandenen Passwort scheitert.
8.2.8
Weitere Befehle der Benutzerverwaltung
Die in diesem Abschnitt vorgestellten Befehle sind nützlich, um Informationen über Benutzer anzuzeigen oder die Passwortdateien zu überprüfen oder den Benutzer zu wechseln.
Der Befehl pwconv Dieser Befehl aktualisiert die Datei /etc/shadow oder erzeugt sie, wenn sie noch nicht vorhanden ist. Dazu wird die Datei /etc/passwd als Basis verwendet:
쮿
Existiert die Datei /etc/shadow noch nicht, wird sie auf der Grundlage der Einträge der Datei /etc/passwd erzeugt.
쮿
Existiert die Datei /etc/shadow bereits, aber es fehlen Einträge aus der Datei /etc/passwd, dann werden diese entsprechend erzeugt.
쮿
Existiert die Datei /etc/shadow bereits, aber sie hat zusätzliche Einträge im Vergleich zur Datei /etc/passwd, dann werden diese gelöscht.
Der Befehl pwunconv Dieser Befehl erzeugt die Datei /etc/passwd aus den Dateien /etc/passwd shadow. Anschließend wird die Datei /etc/shadow gelöscht.
und
/etc/
Der Befehl grpconv Dieser Befehl aktualisiert die Datei /etc/gshadow oder erzeugt sie, wenn sie noch nicht vorhanden ist. Dazu wird die Datei /etc/group als Basis verwendet:
쮿
Existiert die Datei /etc/gshadow noch nicht, wird sie auf der Grundlage der Einträge der Datei /etc/group erzeugt.
쮿
Existiert die Datei /etc/gshadow bereits, aber es fehlen Einträge aus der Datei /etc/group, dann werden diese entsprechend erzeugt.
쮿
Existiert die Datei /etc/gshadow bereits, aber sie hat zusätzliche Einträge im Vergleich zur Datei /etc/group, dann werden diese gelöscht.
331
Benutzer verwalten
magnum
Der Befehl grpunconv Dieser Befehl erzeugt die Datei /etc/group aus den Dateien /etc/group und /etc/gshaAnschließend wird die Datei /etc/gshadow gelöscht.
dow.
Der Befehl pwck Dieser Befehl überprüft die Dateien /etc/passwd und /etc/shadow auf Inkonsistenzen. Diese können durch manuelles Editieren der Datei entstehen. Es wird geprüft, ob das Format der Dateien ordnungsgemäß ist und ob diese gültige Einträge in allen Feldern enthalten. Die Prüfungen stellen fest, ob jeder Eintrag:
쮿
die korrekte Anzahl von Feldern hat
쮿
einen eindeutigen Benutzernamen hat
쮿
eine gültige UID und GID besitzt
쮿
eine gültige primäre Gruppe besitzt
쮿
ein gültiges Homeverzeichnis hat
쮿
eine gültige Anmeldeshell hat
Die Syntax des Befehls lautet: # pwck [-sr] [passwd shadow]
Der Befehl kennt folgende Optionen: Option Beschreibung -r
Der Befehl wird im nur lesbaren Modus ausgeführt, was zu keinen Änderungen führt.
-s
Diese Option sortiert die aufgerufenen Dateien, wobei keine Prüfungen durchgeführt werden.
Tab. 8.9: Optionen des Befehls pwck
Im folgenden Beispiel wird die Benutzerin tina gelöscht: # pwck user postgres: directory /var/lib/pgsql does not exist user squid: directory /var/squid does not exist user fax: directory /var/spool/fax does not exist ...
Hier sind die Fehlermeldungen zum Beispiel relativ harmlos, da sie nur besagen, dass die Systemkonten kein eigenes Homeverzeichnis haben.
Der Befehl logname Dieser Befehl gibt den Anmeldenamen des aktuellen Benutzers zurück. Die Syntax des Befehls lautet: $ logname
Nachfolgend wird der Anmeldename der Benutzerin her ausgegeben: # logname her
332
Kapitel 8 · Benutzer und Gruppen verwalten
Der Befehl id Dieser Befehl zeigt die Benutzeridentifikation an, das heißt den Namen und die Nummer des Benutzers. Die Syntax des Befehls lautet: # id [-option(en)] [benutzer]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Bei anderen Unix-Varianten bedeutet diese Option »alles ausgeben«. Hier ist sie nur noch aus Kompatibilitätsgründen vorhanden.
-g
oder --group
Gibt nur die effektive Gruppen-ID aus
-G
oder --groups
Gibt alle Gruppen-IDs aus
-n
oder --name
Gibt einen Namen anstelle der ID-Nummer aus
-r
oder --real
Gibt die reale ID anstatt der effektiven ID aus
-u
oder --user
Gibt nur die effektive Benutzer-ID aus
Tab. 8.10: Optionen des Befehls id
Im folgenden Beispiel werden die Angaben des aktuellen Benutzers ausgegeben: $ id uid=500(her) gid=100(users) groups=100(users), 14(uucp),15(shadow),16(dialout),17(audio),33(video),1001(einkauf)
Ein Benutzername kann als Argument des Befehls verwendet werden: $ id otto uid=501(otto) gid=100(users) groups=100(users),107(entw),v102(buha)
Der Befehl su Mit diesem Befehl ist es möglich, zwischen verschiedenen Benutzerkennungen zu wechseln. Die Syntax des Befehls lautet: # su [-option(en)] [benutzer]
Der Befehl kennt folgende Optionen: Option
Beschreibung
- oder -l oder --login
Die Shell, die gestartet wird, ist eine Anmeldeshell und liest sämtliche Konfigurationsdateien ein.
-c befehl oder --command
Übergibt der Shell einen einzelnen Befehl
-f oder --fast
Übergibt die Option -f der Shell (wird von der csh oder tcsh ausgewertet)
Tab. 8.11: Optionen des Befehls su
333
magnum
Benutzer verwalten
Option
Beschreibung
-m oder --preserve-environment oder -p
Setzt die Umgebungsvariablen nicht zurück.
-s shell oder --shell
Startet die angegebene Shell
Tab. 8.11: Optionen des Befehls su (Forts.)
Wenn die Option – verwendet wird, erhält man beim Ändern der Benutzerkennung auch gleichzeitig die Umgebung des neuen Benutzers, zum Beispiel: # su - her $ pwd / home/her $ id uid=101(her) gid=1(other) groups=1(other),101(einkauf) $ logname root
Die effektive UID lautet nun her, aber der Anmeldename bleibt root. In diesem Beispiel wird auch deutlich, dass root im Gegensatz zu jedem anderen Benutzer im System kein Passwort angeben muss, wenn er die Identität eines regulären Benutzers annimmt. Mit dem Befehl su wird eine neue Shell mit den Rechten des dabei verwendeten Benutzers gestartet, die mit dem Befehl exit wieder beendet wird. Im nächsten Beispiel wird von der Benutzerkennung her zur Benutzerkennung olli gewechselt: $ su olli Password: $ pwd / home/her $ id uid=111(olli) gid=1(other) groups=1(other),107(verkauf) $ logname root
Hier wird nach dem Passwort gefragt, weil der Wechsel von der Benutzerin her zu einem anderen Benutzer erfolgt. Außerdem wird durch den Wechsel der Benutzerkennung nicht in das entsprechende Homeverzeichnis gewechselt, weil die Option – nicht verwendet wurde. Über den Befehl exit gelangt man wieder zur vorherigen Kennung zurück: $ exit $ id uid=111(her) gid=1(other) groups=1(other),101(einkauf) $ exit # id uid=0(root) gid=1(other)
Wenn root den Befehl su verwendet, um zu einem einfachen Benutzer zu werden, wird er nicht nach einem Passwort gefragt.
334
Kapitel 8 · Benutzer und Gruppen verwalten
Der Befehl sudo Mit diesem Befehl ist es möglich, einen Befehl als anderer Benutzer oder Superuser auszuführen. Der Befehl entscheidet anhand der Datei /etc/sudoers, wer den Befehl ausführen darf oder nicht. Das ist nützlich, wenn Benutzer bestimmte systemnahe Befehle verwenden dürfen, aber deswegen nicht alle Privilegien von root erhalten sollen. Die Syntax des Befehls lautet: # sudo [-option(en)] befehl
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Diese Option veranlasst, dass der angegebene Authentifizierungstyp, wie in der Datei /etc/login.conf definiert, verwendet wird, wenn der Benutzer überprüft wird.
-b
Diese Option veranlasst, dass der aufgerufene Befehl im Hintergrund abläuft.
-c
Diese Option veranlasst, dass der angegebene Befehl mit den begrenzten Ressourcen der angegebenen Klasse läuft. Klassen können entweder in der Datei /etc/login.conf definiert werden oder es wird das Zeichen »-« verwendet, um die Ressourcen des Benutzers zu verwenden, unter dem der Befehl läuft.
-H
Diese Option legt die Variable für die HOME-Umgebung auf das Homeverzeichnis des Zielbenutzers fest. Standardmäßig ist dies root.
-k
Diese Option macht den Zeitstempel des Benutzers ungültig, so dass dieser beim nächsten Aufruf des Befehls ein Passwort angeben muss.
-K
Diese Option entfernt den Zeitstempel des Benutzers endgültig.
-l
Diese Option listet die zulässigen (und verbotenen) Befehle für den Benutzer auf dem aktuellen Rechner auf.
-L
Diese Option listet die Parameter auf, die gesetzt werden dürfen, gemeinsam mit einer kurzen Beschreibung von jedem.
-p
Diese Option ermöglicht es, die standardmäßige Passwortaufforderung zu übergehen und ein eigenes Prompt zu verwenden. Es werden folgende Escape-Sequenzen unterstützt:
%h
stellt den Anmeldenamen des aufrufenden Benutzers dar stellt den Anmeldenamen des Benutzers dar, mit dem der Befehl gestartet wird (standardmäßig root) stellt den lokalen Rechnernamen ohne den Domänennamen dar
%H
stellt den lokalen Rechnernamen einschließlich des Domänennamens dar
%%
stellt ein Prozentzeichen (%) dar
%u %U
-P
Diese Option behält die Gruppen des Benutzers unverändert bei. Normalerweise initialisiert der Befehl die Gruppe mit der Liste von Gruppen, die dem Zielbenutzer zugewiesen wurden.
-s
Diese Option startet die Shell, die in der Umgebungsvariablen SHELL definiert wurde, oder wenn diese nicht existiert, die in der Datei /etc/passwd definierte Shell.
-S
Diese Option bewirkt, dass das Passwort von der Standardeingabe anstatt vom Terminalgerät gelesen wird.
Tab. 8.12: Optionen des Befehls sudo
335
magnum
Benutzer verwalten
Option
Beschreibung
-u
Diese Option veranlasst, dass der angegebene Befehl mit einem anderen Benutzer als root aufgerufen wird.
-v
Diese Option aktualisiert den Zeitstempel des Benutzers und fragt diesen nach seinem Passwort, wenn es notwendig ist. Damit kann der automatische Timeout von sudo um weitere 5 Minuten verlängert werden.
-V
Diese Option gibt die Versionsnummer aus und beendet den Befehl. Wenn der aufrufende Benutzer bereits root ist, gibt die Option eine Liste der Standards aus, mit denen der Befehl kompiliert wurde.
--
Dieses Flag verhindert, dass der Befehl weitere Befehlszeilenargumente bearbeitet.
Tab. 8.12: Optionen des Befehls sudo (Forts.)
Im ersten Beispiel mountet die Benutzerin her die Ressource dazu wurde ihr in der Datei /etc/sudoers eingeräumt:
/network.
Das Recht
$ sudo mount /network passwd: $ mount proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) tmpfs on /dev/shm type tmpfs (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) pclsu3:/home/network on /network type nfs (rw,acl,bg,addr=192.186.175.88)
Im zweiten Fall versucht der Benutzer otto diese Ressource zu mounten, ohne die entsprechenden Berechtigungen zu haben: $ sudo mount /network passwd: otto1 is not in the sudoers file. This incident will be reported.
Im letzten Fall ist der Benutzer doo zwar in der Datei /etc/sudoers eingetragen, aber nicht mit den entsprechenden Berechtigungen: $ sudo mount /network passwd: $ mount Sorry, user doo is not allowed to execute '/bin/mount /network' as root on pc19lsu
Die Datei /etc/sudoers steuert das Verhalten des Befehls sudo mit Hilfe von Parametern. Sie könnte zum Beispiel wie folgt aussehen: # more /etc/sudoers # sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the sudoers man page for the details on how to write a sudoers file. #... # User privilege specification root ALL=(ALL) ALL otto ALL=/usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd doo ALL=/sbin/shutdown -h now %rootgrp ALL=(ALL) ALL %userslocalhost=/sbin/shutdown -h now ...
336
Kapitel 8 · Benutzer und Gruppen verwalten
Eine Zeile enthält einen Eintrag, der Rechte vergibt. Dieser besteht aus verschiedenen Angaben: dem Benutzer- oder Gruppennamen, zum Beispiel otto oder rootgrp, von welchem Rechner aus welche Kommandos ausgeführt werden dürfen, zum Beispiel localhost oder ALL für alle Rechner, und als welcher Benutzer etwas ausgeführt werden soll. Im obigen Beispiel darf der Benutzer otto auf allen Rechnern Benutzer anlegen, ändern, löschen und deren Passwörter ändern, die Gruppe rootgrp darf alles auf allen Rechnern ausführen und die Gruppe users darf den Rechner herunterfahren, wenn der entsprechende Benutzer der Gruppe direkt auf dem Rechner angemeldet ist. Die Datei sollte nicht direkt, sondern nur vom Benutzer root mit dem Befehl visudo editiert werden. Wenn ein Benutzer wissen möchte, welche Befehle er mit sudo ausführen darf, muss er nur den Aufruf von sudo -l ausführen.
Der Befehl chsh Mit diesem Befehl ist es möglich, die Anmeldeshell eines Benutzers in der Datei /etc/passwd zu ändern. Ein normaler Benutzer kann seine eigene Anmeldeshell ändern, root die von allen Benutzern. Außerdem muss die gewählte Shell in der Datei /etc/shells aufgeführt sein. Die Syntax des Befehls lautet: # chsh [-option(en)] benutzer
Der Befehl kennt folgende Optionen: Option
Beschreibung
-l
oder --list-shells
Anzeige der in der Datei /etc/shells aufgeführten Shell
-q
oder --quiet
Stiller Modus ohne Rückmeldungen
-s
shell oder --shell
Angabe der neuen Anmeldeshell
Tab. 8.13: Optionen des Befehls chsh
Im ersten Beispiel mountet die Benutzerin her die Ressource dazu wurde ihr in der Datei /etc/sudoers eingeräumt:
/network.
Das Recht
$ chsh Ändere Login-Shell für otto. passwd: Enter the new value, or press return for the default. Login Shell [/bin{bash]: /bin/csh Shell changed. $ grep otto /etc/passwd otto:x:501:100::/home/otto:/bin/csh
Der Befehl chpasswd Mit diesem Befehl ist es möglich, die Passwörter für Benutzer in einer Art Stapelverarbeitung zu ändern. Der Befehl liest eine Liste von Paaren bestehend aus Anmeldenamen und Passwort von der Standardeingabe oder aus einer Datei und aktualisiert mit diesen Informationen die Passwörter der angegebenen Benutzerkonten, die bereits vorhanden sein müssen. Das Datum der Passwortänderung wird aktualisiert. Die Eingabe muss folgendes Format haben:
337
magnum
Benutzer verwalten
benutzername:passwort
Die Syntax des Befehls lautet: # chpasswd [-option(en)] [datei]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c des|md5|blowfish
Diese Option legt den Hash-Algorithmus fest, der zum Verschlüsseln der Passwörter verwendet werden soll.
-D
binddn oder --binddn Der angegebene Name wird verwendet, um sich an das LDAP Directory zu binden.
Die Passwörter liegen in verschlüsselter Form vor. Normalerweise liegen sie im einfachen Textformat vor.
-e
-P
pfad oder --path
Die Dateien passwd und shadow befinden sich im angegebenen Verzeichnis.
Tab. 8.14: Optionen des Befehls chpasswd
In diesem Beispiel werden hintereinander die Passwörter der Benutzer her, otto und hugo geändert und die Eingabe schließlich mit der Tastenkombination (Strg)+(d) beendet: $ chpasswd otto:l17zU3% hugo:eW91§lx7 (Strg)+(d)
Der Befehl chroot Mit diesem Befehl wird ein Verzeichnis zum fiktiven Wurzelverzeichnis / erklärt. Wird ein Befehl oder eine interaktive Shell mit diesem neuen Wurzelverzeichnis gestartet, dann kann es nicht mehr auf Dateien außerhalb des neuen Wurzelverzeichnisses zugreifen. Dies ist zum Beispiel sinnvoll, wenn von einer Rettungsdiskette aus in einem gemounteten System gearbeitet werden soll oder ein Webserver grundsätzlich nur auf einen abgegrenzten Dateibaum zugreifen darf. Im Prinzip wird auf diese Weise ein kritischer Befehl vom übrigen Dateisystem losgelöst verwendet, was die Sicherheit des Systems erhöht. Der Befehl kann nur von root aufgerufen werden. Die Syntax des Befehls lautet: # chroot neues-wurzelver befehl
Die Anwendung kann zum Beispiel sinnvoll sein, wenn man von einer Rettungsdiskette im gemounteten root-System arbeiten will: # mount /dev/hda3 /rootsystem # chroot /rootsystem /bin/bash -i
Der Benutzer arbeitet jetzt innerhalb des zu rettenden Systems und alle Pfadangaben stimmen exakt mit den Pfaden dieses Systems überein.
338
Kapitel 8 · Benutzer und Gruppen verwalten
In einem chroot-Verzeichnis müssen bestimmte Dateien unbedingt vorhanden sein, damit es funktionsfähig ist, zum Beispiel shlibs, /proc, /etc, Gerätedateien usw., je nach Anwendung. Es ist außerdem möglich, aus einer chroot-Umgebung »auszubrechen«, das heißt, sie sollte nicht als »sicheres Gefängnis« betrachtet werden.
Der Befehl chage Dieser Befehl stand ursprünglich unter Red Hat Linux zum Ändern des Passwortablaufs zur Verfügung. Inzwischen ist er aber auf vielen Linux-Systemen, zum Beispiel auch SUSE Linux und Debian GNU/Linux, implementiert. Die Syntax des Befehls lautet: # chage [-option(en)] [benutzer]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-m nummer
Setzt die minimale Gültigkeit des Passworts in Tagen
-M nummer
Setzt die maximale Gültigkeit des Passworts in Tagen
-W nummer
Warnt den Benutzer die angegebene Anzahl von Tagen, bevor das Passwort abläuft
-E datum
Definiert das Ablaufdatum im Format YYYY-MM-DD
-I inaktiv
Definiert die maximale inaktive Zeit nach einem Passwortablauf
-l
Gibt eine Übersicht über die für einen Benutzer eingestellten Werte zum Passwortablauf
Tab. 8.15: Optionen des Befehls chage
Wird der Benutzername ohne Option angewandt, können die Werte zum Passwortablauf interaktiv eingegeben werden. Im nachfolgenden Beispiel werden die Passwortablauf-Informationen zum Benutzer root ausgegeben: # chage -l root Minimum: Maximum: Warning: Inactive: Last Change: Password Expires: Password Inactive: Account Expires:
0 99999 7 -1 Dec 20, 1999 Never Never Never
339
Weitere Konfigurationsdateien der Benutzer- und Gruppenverwaltung
magnum
8.3 Weitere Konfigurationsdateien der Benutzerund Gruppenverwaltung 8.3.1
Die Datei /etc/login.defs
Diese Datei steuert das Verhalten des Systems bei der Anmeldung von Benutzern. Die Einträge sind alle optional, das heißt, nicht vorhandene bzw. auskommentierte Einträge gelten auch als nicht definiert. Hier wird ein kleiner Ausschnitt aus dieser Datei aufgelistet: # cat /etc/login.defs # /etc/login.defs - Configuration control definitions for pwdutils package. ... # Please read the manual page for more information (login.defs.5). # Should login be allowed if we can't cd to the home directory? # Default is yes. DEFAULT_HOME yes # The default PATH settings (used by login): ENV_PATH /usr/local/bin:/usr/bin:/bin # The default PATH settings for root (used by login): ENV_ROOTPATH /sbin:/bin:/usr/sbin:/usr/bin ...
Die Datei ist sehr gut kommentiert, so dass die Einträge relativ einfach erweitert werden können. In der folgenden Tabelle werden die wichtigsten Parameter erläutert: Parameter
Beschreibung
CHFN_AUTH
Wenn der Wert mit yes definiert ist, verlangen die Befehle chsh und chfn eine Passworteingabe.
CHFN_RESTRICT
Dieser Parameter legt fest, welche Einträge des Kommentarfelds in der Datei /etc/passwd von einem Benutzer mit dem Befehl chfn geändert werden dürfen.
CONSOLE
root darf sich nur an den hier aufgeführten Terminals anmelden.
DEFAULT_HOME
Dieser Parameter bestimmt, ob ein Benutzer sich anmelden darf, wenn sein Homeverzeichnis nicht zur Verfügung steht, zum Beispiel durch den Ausfall eines NFS-Servers.
ENVIRON_FILE
Dieser Parameter kann eine Datei enthalten, die einen Satz mit vordefinierten Umgebungsvariablen bereitstellt.
ENV_PATH
Mit diesem Parameter wird die Variable PATH zum ersten Mal belegt. Dieser Eintrag muss hinterlegt werden.
ENV_ROOTPATH
Erste Belegung der Variablen PATH für root
ERASECHAR
Angabe eines Zeichens, das zum Löschen in einem Terminal verwendet wird. Wird dieser Parameter nicht definiert, kann die Taste (æ__) zum Löschen verwendet werden.
FAILLOG_ENAB
Wird dieser Parameter mit yes belegt, werden nicht erfolgreiche Anmeldeversuche in der Datei /var/log/faillog mit protokolliert.
Tab. 8.16: Parameter der Konfigurationsdatei login.defs
340
Kapitel 8 · Benutzer und Gruppen verwalten
Parameter
Beschreibung
FAIL_DELAY
Angabe einer Zeit in Sekunden, die nach einem erfolglosen Anmeldeversuch gewartet wird, bevor der Anmeldeprompt wieder angeboten wird
GID_MIN, GID_MAX
Der minimale bzw. maximale Wert, den eine Gruppennummer erhalten kann, wenn sie automatisch durch den Befehl groupadd vergeben wird.
ISSUE_FILE
Dieser Parameter enthält den Namen der Datei, deren Inhalt vor der Anzeige des Anmeldeprompts ausgegeben werden kann.
LASTLOG_ENAB
Wenn dieser Parameter auf yes gesetzt wird, werden bei einem erfolgreichen Anmeldeversuch verschiedene Informationen ausgegeben, wie zum Beispiel Zeitpunkt der letzten Anmeldung.
LOGIN_RETRIES
Dieser Parameter enthält die Anzahl, wie viele erfolglose Anmeldeversuche erlaubt sind, bevor sich der Befehl login beendet.
LOGIN_TIMEOUT
Mit diesem Parameter wird die Anzahl in Sekunden definiert, die der Befehl login auf die Passworteingabe wartet.
MAIL_CHECK_ENAB
Dieser Parameter bewirkt, dass ein Benutzer nach der Anmeldung Informationen über den Mailboxstatus erhält.
MAIL_DIR
Dieser Parameter definiert das Verzeichnis mit den Mailboxen der Benutzer.
MAIL_FILE
Dieser Parameter verweist auf die Datei, die die Mailbox eines Benutzers enthält. Sie muss sich im Homeverzeichnis befinden, denn der Pfad zum Homeverzeichnis wird automatisch ergänzt.
MD5_CRYPT_ENAB
Ist dieser Parameter mit yes definiert, wird das Passwort nicht mit dem DES-, sondern mit dem MD5-Algorithmus verschlüsselt, wodurch Passwörter bis zu 256 Zeichen lang sein können.
MOTD_FILE
Dieser Parameter verweist auf den vollständigen Pfad zu der Datei, die die Tagesnachricht (»Message of the day«) enthält. Der Inhalt der Datei wird nach dem Anmelden angezeigt.
NOLOGINS_FILE
Dieser Parameter enthält die Angabe einer Datei. Wenn diese vorhanden ist, kann nur noch root sich am System anmelden. Alle anderen Benutzer werden mit dem Text der Datei abgewiesen.
PASS_CHANGE_TRIES
Dieser Parameter enthält die Anzahl der Versuche, die ein Benutzer zum Ändern des Passworts durchführen darf, bevor der Befehl passwd beendet wird.
PASS_MIN_DAYS, PASS_MAX_DAYS
Diese Parameter enthalten die Mindest- bzw. maximale Anzahl von Tagen, die zwischen zwei Änderungen des Passworts vergehen müssen bzw. dürfen.
PASS_MIN_LEN, PASS_MAX_LEN
Diese Parameter enthalten die Mindest- bzw. maximale Länge eines Passworts.
PASS_WARN_AGE
Dieser Parameter definiert, ab welcher Anzahl von Tagen ein Benutzer gewarnt wird, dass sein Passwort abläuft.
SULOG_FILE
Dieser Parameter gibt die Datei an, die alle Anmeldeversuche mit dem Befehl su protokolliert. Ist dieser Parameter nicht definiert, findet die Protokollierung nicht statt.
Tab. 8.16: Parameter der Konfigurationsdatei login.defs (Forts.)
341
Weitere Konfigurationsdateien der Benutzer- und Gruppenverwaltung
magnum
Parameter
Beschreibung
SYSLOG_SG_ENAB
Wenn dieser Parameter den Wert yes hat, werden alle Aufrufe des Befehls sg über den Systemdienst syslogd mit protokolliert.
SYSLOG_SU_ENAB
Wenn dieser Parameter den Wert yes hat, werden alle Aufrufe des Befehls su über den Systemdienst syslogd mit protokolliert.
UID_MIN, UID_MAX
Der minimale bzw. maximale Wert, den eine Benutzernummer erhalten kann, wenn sie automatisch durch den Befehl useradd vergeben wird.
ULIMIT
Dieser Parameter enthält den Wert, den die Größe einer Datei maximal einnehmen darf.
UMASK
Dieser Parameter enthält die Voreinstellung für die Berechtigungen von neu erstellten Dateien und Verzeichnissen.
Tab. 8.16: Parameter der Konfigurationsdatei login.defs (Forts.)
8.3.2
Die Datei /etc/securetty
Diese Datei steuert das Verhalten des Systems bei der Anmeldung von root. Es ist oft aus Sicherheitsgründen nicht erwünscht, dass root sich an jedem Terminal anmelden kann. Diese Datei enthält die »vertrauenswürdigen« Terminals, an denen root sich anmelden darf: # more /etc/securetty # This file contains the device names of tty lines (one per line, # without leading /dev/) on which root is allowed to login. tty1 tty2 tty3 tty4 ...
An allen anderen Terminals erhält root die Meldung, dass er zur Anmeldung keine Berechtigung habe. Die Standardeinstellung ermöglicht root nur eine Anmeldung an einem physikalischen Terminal. Ein Anmeldeversuch über das Netzwerk über Pseudoterminals würde abgewiesen werden.
8.3.3
Die Datei /etc/shells
Diese Datei legt fest, welche Shells von den Benutzern des Systems verwendet werden dürfen. Nach der Anmeldung am System erhält ein Benutzer zunächst seine Standardshell aus der Datei /etc/passwd, die er aber mit dem Befehl chsh ändern kann. Um zu gewährleisten, dass nur sichere und stabile Shellbefehle dazu verwendet werden, werden alle zulässigen Shells in der Datei /etc/shells aufgeführt. Der Befehl chsh liest diese Datei, bevor er die Shell eines Benutzers tatsächlich ändert. Diese Datei sieht unter SUSE Linux standardmäßig wie folgt aus: # more /etc/shells /bin/ash /bin/bash /bin/bash1 /bin/csh /bin/false /bin/ksh /bin/sh
342
Kapitel 8 · Benutzer und Gruppen verwalten
/bin/tcsh /bin/true /bin/zsh /usr/bin/csh /usr/bin/ksh /usr/bin/passwd /usr/bin/bash /usr/bin/rbash /usr/bin/tcsh /usr/bin/zsh
8.4 Initialisierungsdateien Initialisierungsdateien werden benötigt, um die Umgebung des Benutzers für ihn passend einzurichten. Die grafische Oberfläche KDE hat zum Beispiel eigene Initialisierungsdateien im versteckten Ordner .kde und die grafische Oberfläche GNOME einen versteckten Ordner .gnome, jeweils im Homeverzeichnis des Benutzers. Die verschiedenen Shells (vergleiche Kapitel 9) haben unterschiedliche Initialisierungsdateien. Datei
sh
ksh
bash
/etc/profile
x
x
x x
/etc/.login ~/.profile ~/.kshrc*
csh
x
x
x
x
~/.bash_profile
x
~/.bashrc
x
~/.bash_login
x
~/.bash_logout
x
~/.login
x
~/.cshrc
x
~/.logout
x
Tab. 8.17: Initialisierungsdateien der verschiedenen Shells
Einige Vorlagen der Initialisierungsdateien befinden sich standardmäßig im Verzeichnis /etc/skel und werden bei den meisten Systemen bei Verwendung des Befehls useradd oder der grafischen Tools zur Benutzerverwaltung automatisch in das Homeverzeichnis eines neu angelegten Benutzers kopiert.
343
Initialisierungsdateien
8.4.1
magnum
Die Datei /etc/profile
Diese Datei ist eine systemweite Initialisierungsdatei für alle Benutzer, denen entweder die Bourne- oder Korn- oder Bourne-Again-Shell zugewiesen wurde. In diese Datei kann root Systemeinstellungen aufnehmen, die für alle diese Benutzer gelten sollen. Im Folgenden ein Ausschnitt der Datei unter SUSE Linux: # more /etc/profile # /etc/profile for SUSE Linux # # PLEASE DO NOT CHANGE /etc/profile. There are chances that your changes # will be lost during system upgrades. Instead use /etc/profile.local for # your local settings, favourite global aliases, VISUAL and EDITOR # variables, etc ... # # Check which shell is reading this file # if test -f /proc/mounts ; then case "`/bin/ls -l /proc/$$/exe`" in */bash) is=bash ;; */rbash) is=bash ;; */ash) is=ash ;; */ksh) is=ksh ;; */zsh) is=zsh ;; */*) is=sh ;; esac else is=sh fi ...
Im Prinzip ist die Datei /etc/profile von jedem Administrator beliebig anpassbar. Die Firma SUSE Linux weist allerdings darauf hin, dass Sie diese Datei nicht editieren sollten, weil sie bei einem Update überschrieben werden könnte. Sie können aber diese Anpassungen in der Datei /etc/profile.local einstellen, die von der Datei /etc/profile gelesen wird. Die C-Shell liest bei einigen Linux- und Unix-Systemen zuerst die systemweite Konfigurationsdatei /etc/.login. Bei vielen Linux-Systemen werden von der Cund TC-Shell stattdessen die Dateien /etc/csh.cshrc und /etc/csh.login gelesen.
344
Kapitel 8 · Benutzer und Gruppen verwalten
8.4.2
Die Datei ~/.profile
Die Korn-Shell sucht nach Einlesen der systemweiten Initialisierungsdatei /etc/proim Homeverzeichnis des Benutzers nach einer Initialisierungsdatei mit dem Namen .profile. Wenn in dieser Datei eine weitere Datei mit Umgebungseinstellungen, die in der Regel .kshrc heißt, der Variablen ENV zugewiesen wurde, wird auch diese gelesen. Erst wenn alle in diesen Dateien enthaltenen Befehle ausgeführt wurden, erscheint das Promptzeichen der Shell auf dem Bildschirm und die KornShell wartet auf Befehle.
file
Die Datei .profile ist eine vom Benutzer erzeugte Initialisierungsdatei, die nur einmal von der Anmeldeshell ausgeführt wird und sich im Homeverzeichnis befindet. Mit Hilfe dieser Datei kann die Arbeitsumgebung angepasst und verändert werden. In der Regel werden in dieser Datei Umgebungsvariablen und Terminaleinstellungen definiert. Auch wenn eine Anwendung beim Anmelden gestartet werden soll, wird der entsprechende Befehl hier hinterlegt. Die Bourne-Again-Shell liest und verarbeitet nach der systemweiten Initialisierungsdatei /etc/profile beim Anmelden die Datei .bash_profile im Homeverzeichnis des Benutzers. Die Datei ~/.bashrc wird bei jedem neuen Aufruf einer Shell gelesen. Die Initialisierungdateien der Bourne-Again-Shell werden auf bestimmte Art ausgewertet. Es wird zwischen einer interaktiven und nicht interaktiven BourneAgain-Shell unterschieden. Eine interaktive Shell ist mit der Standardein- und Standardausgabe, also einer Konsole, verbunden. Beim Starten wertet die Bourne-Again-Shell den Rückgabewert des Befehls tty -s aus, um festzustellen, ob es sich um eine interaktive oder nicht interaktive Shell handelt. Bei einer Anmeldeshell wird zunächst die Initialisierungsdatei /etc/profile und dann entweder die Datei ~/.bash_profile oder ~/.bash_login oder ~/.profile gelesen, wenn eine davon vorhanden ist. Eine Shell, die keine Anmeldeshell ist, liest die Datei ~/.bashrc. Für eine nicht interaktive Bourne-Again-Shell, also zum Beispiel ein Shellskript, ist nur die Umgebungsvariable BASH_ENV von Bedeutung: Wenn diese eine Pfadangabe zu einer Datei enthält, wird diese gelesen und ausgeführt. Die Datei .bashrc bzw. .kshrc enthält in der Regel Variablen und Aliase der Shell. Häufig werden die folgenden Einstellungen in dieser Datei definiert:
쮿
Definitionen der Promptzeichen der Shell (PS1, PS2)
쮿
Alias-Definitionen
쮿
Shell-Funktionen
쮿
Angaben für die History-Variablen
쮿
Shell-Optionen
Wenn die Datei ~/.bash_profile nicht vorhanden ist, liest die Bourne-Again-Shell genau wie die Bourne- und Korn-Shell die Initialisierungsdatei .profile im Homeverzeichnis des Benutzers.
345
Grafische Benutzerverwaltung
magnum
Die Korn-Shell kann zusätzlich auch eine zweite Initialisierungsdatei des Benutzers interpretieren, die Datei ~/.kshrc in seinem Homeverzeichnis, wenn die Datei .profile eine Umgebungsvariable mit dem Namen ENV enthält. In diesem Fall wird als Nächstes die Datei ausgeführt, deren Name dieser Variablen zugeordnet ist, in der Regel lautet diese .kshrc. Die Dateien .bash_profile (für die Bourne-Again-Shell) und .profile (für die Bourne-, Korn- und gegebenenfalls die Bourne-Again-Shell) werden nur einmal von der Anmeldeshell oder beim Aufruf eines Konsolfensters ausgeführt. Die Dateien .bashrc (für die Bourne-Again-Shell) und .kshrc (für die Korn-Shell) werden jedes Mal ausgeführt, wenn eine Subshell der entsprechenden Shell gestartet wird. Sie enthalten in der Regel Definitionen von Variablen und Aliasen der Shell und Aktivierungen von Shell-Funktionen. Die C- und TC-Shell lesen statt der oben genannten Initialisierungsdateien die Dateien ~/.cshrc und ~/.login im Homeverzeichnis des Benutzers. Ist bei der TCShell anstelle der Datei ~/.cshrc die Datei ~/.tcshrc vorhanden, wird diese gelesen.
8.4.3
Initialisierungsdateien einlesen
Wenn Sie als Benutzer Ihre eigenen Initialisierungsdateien ändern, dann treten diese Änderungen in Kraft, wenn Sie sich das nächste Mal anmelden. Wenn Sie jedoch möchten, dass die durchgeführten Änderungen sofort wirksam werden, dann können Sie die Datei .profile bzw. .bashrc mit Hilfe des Punktbefehls (.) neu einlesen: $ . ~/.profile $ . ~/.bashrc
Alternativ und speziell bei der C- und TC-Shell lautet der Befehlsname um die Initialisierungsdateien neu einzulesen:
source,
% source ~/.cshrc % source ~/.login
8.5 Grafische Benutzerverwaltung In diesem Abschnitt erfahren Sie, wie Sie mit YaST oder KDE die Benutzer- und Gruppenverwaltung grafisch durchführen können. Dabei haben Sie fast alle Möglichkeiten, die Sie auch an der Befehlszeile haben.
8.5.1
KDE-Benutzerverwaltung
Die grafische Oberfläche KDE bietet eine eigene Benutzer- und Gruppenverwaltung mit dem Programm KUSER. Dieses Programm befindet sich oft im Hauptmenü unter der Option SYSTEM. Auch in KUSER kann man mit Hilfe von Registerkarten zwischen der Benutzer- und Gruppenverwaltung umschalten:
346
Kapitel 8 · Benutzer und Gruppen verwalten
Bild 8.1: Benutzerverwaltung mit KUser
Wenn Sie auf die Schaltfläche NEUER BENUTZER klicken, werden Sie aufgefordert, einen neuen Benutzernamen einzugeben:
Bild 8.2: Benutzernamen eingeben
Anschließend können Sie mit Hilfe von drei Registerkarten die Benutzereigenschaften definieren, wie zum Beispiel die UID, den vollständigen Namen, das Passwort usw.:
Bild 8.3: Benutzerinformationen hinterlegen
347
Grafische Benutzerverwaltung
magnum
Die mittlere Registerkarte bietet Möglichkeiten zur Passwortverwaltung des Benutzers, wie zum Beispiel die minimale und maximale Gültigkeit des Passworts, die Anzahl der Warntage vor Passwortablauf usw.:
Bild 8.4: Passworteinstellungen für einen Benutzer festlegen
In der letzten Registerkarte kann der Benutzer einer primären und mehreren sekundären Gruppen zugeordnet werden:
Bild 8.5: Gruppenzugehörigkeit festlegen
Die Änderung eines Benutzers erfolgt mit denselben Fenstern über die Schaltfläche BENUTZER ÄNDERN. Beim Löschen eines Benutzers mit Hilfe der Schaltfläche BENUTZER LÖSCHEN können Sie wählen, ob auch das Homeverzeichnis des Benutzers und dessen Postfach gelöscht werden sollen:
348
Kapitel 8 · Benutzer und Gruppen verwalten
Bild 8.6: Benutzer löschen
Beachten Sie, dass Sie alle anderen Dateien des Benutzers gegebenenfalls manuell löschen bzw. mit dem Befehl find suchen und löschen müssen. Durch Umschalten auf die Registerkarte GRUPPEN werden die Gruppen angezeigt:
Bild 8.7: Gruppen anzeigen
Wenn Sie auf die Schaltfläche GRUPPE ANLEGEN klicken, können Sie die GID, den Namen und die Mitglieder der Gruppe bearbeiten:
Bild 8.8: Gruppe anlegen
349
Grafische Benutzerverwaltung
magnum
Wenn Sie auf die Schaltfläche GRUPPE ÄNDERN klicken, können Sie die GID nicht mehr ändern, aber den Namen und die Mitglieder der Gruppe:
Bild 8.9: Gruppe ändern
Wenn Sie eine Gruppe markieren und die Schaltfläche GRUPPE LÖSCHEN wählen, erhalten Sie eine entsprechende Fehlermeldung, wenn die Gruppe noch Mitglieder hat:
Bild 8.10: Warnmeldung beim Löschen einer Gruppe
Wenn Sie eine Gruppe ohne Mitglieder löschen, erhalten Sie eine letzte Warnmeldung:
Bild 8.11: Warnmeldung beim Löschen einer Gruppe
8.5.2
Gruppenverwaltung mit YaST
Die grafische Benutzer- und Gruppenverwaltung wird durch ein einziges YastModul realisiert, zu dem es aber verschiedene Zugangsmöglichkeiten gibt, zum Beispiel für die Gruppenverwaltung über SICHERHEIT UND BENUTZER - GRUPPEN BEARBEITEN UND ANLEGEN. Die Gruppenverwaltung wird gestartet, Sie können aber jederzeit über die Auswahlmöglichkeiten BENUTZER und GRUPPEN zwischen diesen beiden wechseln:
350
Kapitel 8 · Benutzer und Gruppen verwalten
Bild 8.12: Gruppen in YaST anzeigen
Standardmäßig werden die lokalen Gruppen angezeigt. Über die Schaltfläche FILTER FESTLEGEN kann aber durch den benutzerdefinierten Filter die Anzeige von lokalen und Systemgruppen aktiviert werden:
Bild 8.13: Filter für die Gruppenanzeige aktivieren
Mit Hilfe der Schaltfläche HINZUFÜGEN können Sie eine neue Gruppe anlegen. Zuerst müssen Sie entscheiden, ob die neue Gruppe eine lokale oder eine Systemgruppe sein soll:
Bild 8.14: Gruppentyp wählen
351
Grafische Benutzerverwaltung
magnum
Im anschließend geöffneten Fenster können der Name und die GID der Gruppe, ein Gruppenpasswort (vergleiche Abschnitt 8.1.6) und Benutzer, die Mitglied der Gruppe sein sollen, ausgewählt werden:
Bild 8.15: Eine lokale Gruppe anlegen
Wenn Sie im Eingangsmenü der Gruppenverwaltungsfunktion auf die Schaltfläche BEARBEITEN klicken, können Sie dieselben Daten nochmals überarbeiten:
Bild 8.16: Gruppe bearbeiten
352
Kapitel 8 · Benutzer und Gruppen verwalten
Wenn Sie die Funktion LÖSCHEN wählen, erhalten Sie von YaST die Warnmeldung, dass die Gruppe nur gelöscht werden kann, wenn zuerst die Gruppenmitglieder gelöscht werden. Diese Meldung ist YaST-spezifisch und erscheint nicht beim Löschen an der Befehlszeile:
Bild 8.17: Warnmeldung beim Löschen einer Gruppe
Wenn die Gruppenmitglieder entfernt wurden, wird erst nach einer erneuten Rückfrage endgültig gelöscht:
Bild 8.18: Anforderung der Löschbestätigung
8.5.3
Benutzerverwaltung mit YaST
Wenn Sie im Eingangsmenü der Gruppenbearbeitung die Ansicht BENUTZER aktivieren, werden die lokalen Benutzer angezeigt. Die Ansicht SYSTEM- UND LOKALE BENUTZER kann mit Hilfe der Funktion FILTER FESTLEGEN aktiviert werden:
Bild 8.19: Benutzer anzeigen
353
Grafische Benutzerverwaltung
magnum
Beim Anlegen eines Benutzers können der vollständige Name, der Benutzername, das Passwort sowie Passwort- und Detaileinstellungen hinterlegt werden. In diesem Fenster ist es auch möglich, einen Benutzer zu deaktivieren bzw. wieder zu aktivieren:
Bild 8.20: Benutzer anlegen
Als Passwort sollte auf keinen Fall der Benutzername oder ein bekanntes Wort verwendet werden, daher erhalten Sie einen entsprechenden Warnhinweis. Obwohl Sie als root beim Anlegen der Benutzerpasswörter diese Warnungen ignorieren können, wird davon dringend abgeraten:
Bild 8.21: Sicheres Passwort wählen
Mit Hilfe der Schaltfläche PASSWORTEINSTELLUNGEN können Sie festlegen, wie viele Tage vor Passwortablauf eine Warnung erscheinen soll, wie viele Tage nach Passwortablauf noch eine Anmeldung möglich ist, wie lange das Passwort mindestens und wie lange höchstens gültig ist, und gegebenenfalls ein Ablaufdatum für das Passwort:
354
Kapitel 8 · Benutzer und Gruppen verwalten
Bild 8.22: Passworteinstellungen vornehmen
Die Schaltfläche DETAILS öffnet ein Dialogfenster, in dem weitere Eigenschaften zum Benutzerkonto hinterlegt werden können, wie zum Beispiel die UID, das Homeverzeichnis, die Anmeldeshell, die primäre und die sekundären Gruppen des Benutzers:
Bild 8.23: Benutzereigenschaften festlegen
355
Grafische Benutzerverwaltung
magnum
Die OPTIONEN FÜR EXPERTEN im ersten Fenster zur Benutzerverwaltung bieten folgende Möglichkeiten:
Bild 8.24: Optionen für Experten verwenden
Die Option STANDARDEINSTELLUNGEN FÜR NEUE BENUTZER legt dieselben Werte für einen neuen Benutzer fest wie der Befehl useradd -D. Dazu gehören die primäre und sekundären Gruppen, die Anmeldeshell, die Pfade für das Homeverzeichnis und das Verzeichnis mit den Vorlagen der Initialisierungsdateien, das Standardablaufdatum und die Anzahl der Tage nach Passwortablauf, an denen ein Benutzer sich noch anmelden kann:
Bild 8.25: Standardeinstellungen für neu anzulegende Benutzer
356
Kapitel 8 · Benutzer und Gruppen verwalten
Die Option PASSWORTVERSCHLÜSSELUNG bietet die Möglichkeit, einen Algorithmus für die Passwortverschlüsselung auszuwählen:
Bild 8.26: Passwortverschlüsselung wählen
Es gibt folgende Methoden für die Verschlüsselung des Passworts:
쮿
DES ist die Standardmethode unter Linux und funktioniert in allen Netzwerkumgebungen. Die Beschränkung ist aber, dass die Passwörter nicht mehr als acht Zeichen lang sein dürfen. Wenn die Kompatibilität zu anderen Systemen wichtig ist, sollte diese Verschlüsselung verwendet werden.
쮿
MD5 ermöglicht die Verwendung von längeren Passwörtern. Diese Methode unterstützen alle gängigen Linux-Distributionen, aber ältere Distributionen oder andere Systeme sind oft nicht MD5-kompatibel.
쮿
Blowfish ist MD5 ähnlich, verschlüsselt die Passwörter aber mit einem anderen Algorithmus, dessen Berechnung eine hohe CPU-Leistung benötigt. Dadurch ist das Knacken von Passwörtern unterstützt durch Wörterbücher schwieriger. Aber auch Blowfish wird nicht von allen Systemen unterstützt.
Diese Information wird bei SUSE Linux in der Datei /etc/default/passwd mit der Variablen CRYPT_FILES hinterlegt. Die Datei kann auch manuell editiert werden. Bei Fedora Core Linux kann die MD5-Verschlüsselung in der Datei /etc/pam.d/ passwd mit dem Eintrag password required md5 aktiviert werden. Die Aktivierung kann auch mit dem Tool /usr/bin/system-config-authentication durchgeführt werden. Unter Debian Linux ist es möglich, die MD5-Verschlüsselung durch den Eintrag der Datei /etc/login.defs zu aktivieren.
MD5_CRYPT_ENAB yes in
357
Grafische Benutzerverwaltung
magnum
Die Option AUTHENTIFIKATION UND BENUTZERQUELLEN bietet die Auswahl zwischen verschiedenen Zugriffsmöglichkeiten auf gemeinsam genutzte Ressourcen, wie zum Beispiel NIS, LDAP, Kerberos und Samba (vergleiche Kapitel 22):
Bild 8.27: Quellen für Benutzerdaten wählen
Die Option EINSTELLUNGEN FÜR DAS ANMELDEN UNTER KDM bietet die Möglichkeit bei privat genutzten Linux-Systemen, das System mit einer automatischen Anmeldung ohne Passwort für einen bestimmten Benutzer zu starten. Bei einem in einem Unternehmen genutzten Linux-Rechner sollte diese Option aus Sicherheitsgründen nicht verwendet werden:
Bild 8.28: Einstellungen für das Anmelden unter KDM
Die Option ÄNDERUNGEN NUN SCHREIBEN schreibt die durchgeführten Änderungen in die jeweiligen Konfigurationsdateien zurück:
358
Kapitel 8 · Benutzer und Gruppen verwalten
Bild 8.29: Änderungen der Benutzerkonfiguration speichern
8.5.4
Sicherheitseinstellungen mit YaST
Mit Hilfe des YAST-Moduls SICHERHEIT UND BENUTZER - EINSTELLUNGEN ZUR SICHERHEIT lassen sich verschiedene Einstellungen für die Systemsicherheit vornehmen, zum Beispiel für die Passwortsicherheit. Im ersten Fenster kann ein Sicherheitslevel oder eine benutzerdefinierte Einstellung gewählt werden:
Bild 8.30: Lokale Sicherheitskonfiguration einstellen
359
Grafische Benutzerverwaltung
magnum
Im nächsten Dialogfenster können Passworteinstellungen wie die Plausibilitätsprüfung von Passwörtern, die Verschlüsselungsmethode, die gewünschte Passwortlänge, die Warntage vor Passwortablauf sowie die maximale und minimale Gültigkeit des Passworts gewählt werden:
Bild 8.31: Passworteinstellungen vornehmen
Des Weiteren ist es möglich, Einstellungen für den Systemstart festzulegen, das heißt, was beim Betätigen der Tastenkombination (Strg)+(Alt)+(Del) passiert und wer das System herunterfahren darf:
Bild 8.32: Einstellungen für den Systemstart durchführen
Auch Einstellungen für das Anmelden am System können hier definiert werden, wie zum Beispiel wie viele Sekunden nach einer fehlerhaften Anmeldung gewartet
360
Kapitel 8 · Benutzer und Gruppen verwalten
wird (um das Ausprobieren von Passwörtern zu erschweren), ob diese fehlerhaften Versuche protokolliert werden usw.:
Bild 8.33: Einstellungen für das Anmelden festlegen
Die grafische Anmeldung von Remote sollten Sie aus Sicherheitsgründen nicht aktivieren! Die Erweiterung der Benutzerzahl bzw. die Reduzierung der Systembenutzerkennungen kann im folgenden Fenster durchgeführt werden. Die Systemkennungen werden nicht wirklich reduziert oder erweitert, sondern der Nummernkreis wird entsprechend umdefiniert. Darauf sollte aber verzichtet werden, wenn es für das System nicht unbedingt notwendig ist:
Bild 8.34: Nummernbereiche für UIDs und GIDs festlegen
361
Grafische Benutzerverwaltung
magnum
Schließlich gibt es im letzten Dialogfenster noch diverse Einstellungsmöglichkeiten zu Dateirechten, Aufrufmöglichkeiten für Skripte usw.:
Bild 8.35: Verschiedene Einstellungen für die Sicherheit durchführen
Die Einstellungen für die Rechte von bestimmten Systemdateien werden gemäß den Dateien /etc/permissions.secure oder /etc/permissions.easy definiert. Wenn SUSEconfig gestartet wird, werden die Dateirechte entsprechend den Einstellungen in diesen Dateien verwendet und versehentlich oder absichtlich fehlerhafte Rechte berichtigt. Die Einstellung EASY bedeutet, dass die meisten normalerweise nur für root lesbaren Systemdateien auch für andere Benutzer lesbar sind. SECURE heißt, dass bestimmte Systemdateien, wie zum Beispiel die Protokolldatei /var/log/messages, nur von root gelesen und einige Programme nur von root oder von Daemons gestartet werden können. PARANOID bedeutet, dass das System extrem sicher ist, zum Beispiel wird festgelegt, welche Benutzer X-Anwendungen (grafische Anwendungen und X-Window) und SetUID-Programme starten dürfen. Des Weiteren kann der Benutzer festgelegt werden, der das einmal täglich laufende Programm updatedb starten darf. Das Programm liest das vollständige Dateisystem und erstellt eine Datenbank für den Befehl locale. Mit dem Befehl locale können Sie die aktuelle Spracheinstellung ausgeben. Diese wird normalerweise während der Installation bei jeder der vorgestellten LinuxDistributionen ausgewählt. Die Sprache der grafischen Oberfläche KDE können Sie im KDE-Kontrollzentrum auswählen. Unter SUSE Linux können Sie die Sprache mit Hilfe von YaST im Menü System - Sprache wählen einstellen. Unter Debian GNU/Linux können Sie die Sprache nachträglich mit Hilfe von dpkg-reconfigure locales durchführen, die die Konfiguration in der Datei /etc/ locale.gen speichert. Die Einträge der Datei können auch manuell durchgeführt werden, wenn anschließend der Befehl locale.gen aufgerufen wird.
362
Kapitel 8 · Benutzer und Gruppen verwalten
Bei Fedora Core Linux kann die Sprache nach der Installation mit Hilfe der Datei /etc/sysconfig/i18n durchgeführt werden.
8.5.5
Fedora-Linux-Benutzerverwaltung
Fedora bietet unter der grafischen Oberfläche ebenfalls eine eigene Benutzer- und Gruppenverwaltung im Menü SYSTEMEINSTELLUNGEN - BENUTZER UND GRUPPEN an.
Bild 8.36: Fedora-Linux-Benutzerverwaltung
Mit BENUTZER HINZUFÜGEN können Sie einen neuen Benutzer anlegen. Fedora Core Linux schlägt vor, dass der Benutzer eine primäre Gruppe mit demselben Namen zugewiesen bekommt. Wenn Sie das nicht wünschen, können Sie die Option EINE PRIVATE GRUPPE FÜR DIESEN BENUTZER ERSTELLEN deaktivieren:
Bild 8.37: Neuen Benutzer anlegen
363
Grafische Benutzerverwaltung
magnum
Wenn Sie einen Benutzer markieren, können Sie ihn mit der Schaltfläche LÖSCHEN entfernen oder mit EIGENSCHAFTEN bearbeiten. Alternativ öffnet auch ein Doppelklick das Fenster BENUTZEREIGENSCHAFTEN. Hier können Sie zusätzlich zu den Benutzerdaten auch noch eine Befristung des Accounts aktivieren, Informationen zum Passwortablauf und die Zugehörigkeit zu anderen Gruppen definieren:
Bild 8.38: Benutzereigenschaften bearbeiten
Wenn Sie auf die Registerkarte GRUPPEN klicken, werden die Gruppen angezeigt.
Bild 8.39: Gruppen anzeigen
364
Kapitel 8 · Benutzer und Gruppen verwalten
Wenn Sie auf GRUPPE HINZUFÜGEN klicken, können Sie eine neue Gruppe anlegen:
Bild 8.40: Neue Gruppe anlegen
Wenn Sie eine Gruppe markieren, können Sie diese mit der Schaltfläche LÖSCHEN entfernen oder mit EIGENSCHAFTEN bearbeiten. Alternativ öffnet auch ein Doppelklick das Fenster GRUPPENEIGENSCHAFTEN. Hier können Sie zusätzlich zu den Gruppendaten auch noch weitere Mitglieder dieser Gruppe definieren:
Bild 8.41: Gruppeneigenschaften bearbeiten
365
9 Linux booten und herunterfahren »Das ist der Anfang vom Ende.« – William Shakespeare Ein Systemadministrator kann den Bootvorgang beeinflussen, indem er Run-Control-Skripte verändert, entfernt oder ergänzt (vergleiche Abschnitt 9.4.5). In diesem Kapitel wird zunächst der Bootvorgang erklärt, anschließend die Einflussmöglichkeiten des Administrators auf diesen Vorgang. Das Herunterfahren eines Linux-Systems ist bei privaten PCs oft auch einem einfachen Benutzer gestattet, bei einem Unternehmensrechner können die entsprechenden Befehle root vorbehalten bleiben.
9.1 Der Bootprozess Nach dem Einschalten eines Rechners laufen bestimmte Vorgänge ab, um das System zu starten und in einen funktionsfähigen und einsatzbereiten Zustand zu bringen. Dabei bildet das so genannte »Bootstrapping« oder auch kurz »Booten« das größte Problem, denn das Betriebssystem muss aktiviert werden, ohne dabei die Funktionen und Dienste des Betriebssystems selbst verwenden zu können. Diese Problematik wird dadurch gelöst, dass verschiedene Komponenten der Hardware, Firmware und Bootmanager zusammenwirken.
9.1.1
Der Power-on-self-Test (POST)
Wenn Sie das System einschalten, wird zuerst ein kurzer Hardwaretest vom BIOS gestartet. Diese Basisinitialisierung der Hardware (POST) wird von der im ROM des BIOS vorliegenden Firmware durchgeführt, indem die minimal notwendigen Hardwarekomponenten getestet, der Speicher eingebunden und verschiedene Hardwareeinstellungen initialisiert werden. Scheinen die Hardware und der Speicher in Ordnung zu sein, beginnt der automatische Bootvorgang, der in vier Hauptphasen abläuft.
9.1.2
Die BIOS-Phase
Diese Phase ist der hardwarenahe Teil des Bootens. Ein INTEL-Rechner ist mit einem BIOS und einem CMOS, das die Konfigurationsdaten enthält, ausgestattet. Aus dem CMOS werden die Angaben entnommen, in welcher Reihenfolge die Geräte auf ein bootfähiges System überprüft werden sollen. So kann zum Beispiel eingestellt werden, dass zuerst das CD-ROM-Laufwerk und dann erst die Festplatte durchsucht wird. Beim Starten eines Personalcomputers findet ein Selbsttest (Power-on-self-test) statt und anschließend wird die Partitionstabelle von den Festplatten in den Speicher gelesen. Er enthält die Aufteilung der Festplatte in Partitionen und die Information, welche Partition die aktive ist. Danach wird der Master Boot Record (MBR) gelesen, der in der Regel das Bootprogramm enthält. Dieser Bootmanager bietet eine Auswahl aus den Betriebssystemen, die sich auf den verschiedenen Partitionen der Festplatte befinden. Alternativ kann ein Bootloader statt im MBR der Festplatte auch in einen Bootsektor nur einer Partition geschrieben werden. Diese Methode kann sinnvoll sein, wenn mehrere Betriebssysteme auf einer Festplatte in unterschiedlichen Partitionen installiert wurden. Allerdings muss dann der MBR weiterhin von einem Boot-
367
magnum
Die Bootloader
manager belegt sein, denn von dort bootet der PC, und dieser Bootmanager muss Querverweise auf die Bootsektoren der Partitionen konfiguriert haben bzw. damit umgehen können. Bei diesem mehrstufigem Verfahren kann der Bootmanager im MBR ein anderer sein als der Bootmanager im Bootsektor der Festplatte. Wenn Sie zum Beispiel neben dem Linux noch eine Microsoft-Windows-Partition auf der Festplatte haben, dann wird der Bootmanager von Linux das MicrosoftWindows-System über den Bootsektor der Windows-Partition starten. Unter Linux gibt es zwei verbreitete Bootmanager oder so genannte Bootloader, zwischen denen bei den meisten Linux-Varianten während der Installation ausgewählt werden kann: LILO und GRUB. Jeder Bootloader hat seine eigene Konfigurationsdatei. GRUB ist der neuere von beiden und in einigen Punkten auch flexibler, zum Beispiel, wenn sich Ihre Partitionsdaten ändern. Wir empfehlen daher, GRUB als Bootloader zu verwenden. Überlegen Sie sich am besten vor der Installation, welchen Bootloader Sie bevorzugen. Ein späterer Wechsel oder Ändern der Konfiguration des Bootloaders ist mit den Befehlen grub oder lilo möglich (vergleiche Abschnitt 9.2). Bei SUSE Linux werden Sie dabei auch vom grafischen Tool YaST unterstützt.
9.1.3
Die Kernel-Initialisierungsphase
Nach der Auswahl des entsprechenden Betriebssystems, in unserem Fall Linux, wird dieses gestartet. Dazu sucht der Bootmanager auf der Festplatte nach der Datei mit dem Kernprogramm des Betriebssystems, im Linux Kernel genannt, und lädt und startet dieses Programm. Anschließend initialisiert sich der Kernel, gefolgt vom Laden der benötigten Kernel-Module. Der Kernel allokiert und initialisiert die benötigten Verwaltungsstrukturen und bringt das System in einen festgelegten Zustand, indem er den Prozess init startet. Dieser Prozess durchsucht die Datei /etc/inittab nach dem Default-Runlevel. Die zu diesem Runlevel gehörenden Run-Control-Skripte werden gelesen und starten ihrerseits weitere Prozesse. Damit wird jetzt das Gesamtsystem »Linux« gestartet und betriebsbereit gemacht. Nach Abschluss dieser Phase wird der Anmeldebildschirm oder die Anmeldeaufforderung angezeigt.
9.2 Die Bootloader Ein Bootloader lädt und startet den Kernel, der selbst wiederum direkt oder indirekt alle notwendigen Treiber integrieren muss, um auf die root-Partition zugreifen zu können. Bis zum Jahre 2003 war der am häufigsten unter Linux verwendete Bootloader der Linux Loader LILO, der aber in den vergangenen Jahren von GRUB (GRand Unified Bootloader) abgelöst und in vielen Linux-Distributionen zum standardmäßigen Bootmanager wurde, da er viel mehr Eigenschaften als LILO zur Verfügung stellt. Ein Wechsel von LILO nach GRUB und umgekehrt ist jederzeit möglich.
368
Kapitel 9 · Linux booten und herunterfahren
9.2.1
Der Bootloader lilo
Der Bootloader LILO kann für Multi-Boot-Systeme eingesetzt werden, wie zum Beispiel verschiedene Linux-Distributionen, DOS, OS/2 und Microsoft-WindowsSysteme. Beim Rechnerstart wird ein Boot-Prompt angezeigt, an dem das gewünschte System mit Hilfe der Taste (ÿ_) ausgewählt werden kann. LILO besteht aus zwei Teilen. Der erste Teil ist der so genannte First-Stage-Loader, der sich im Bootsektor einer Diskette, Festplatte oder Festplattenpartition befindet. Das Bootsektor-Programm lädt und startet mit Hilfe des BIOS den Second-Stage-Loader, der den Kernel lädt. Dazu liest es die notwendigen Sektoradressen aus der Datei /boot/map.
Bild 9.1: Der Bootloader LILO
Alle im Bootablauf eingesetzten Dateien und Programme sind für LILO eine willkürliche Ansammlung von Datensektoren. Das bedeutet, dass bei Veränderungen dieser Dateien, wie zum Beispiel beim Neukompilieren des Kernels oder Verschieben der entsprechenden Dateien im Dateisystem, LILO neu installiert werden muss.
Der Befehl lilo Dieser Befehl liest die Konfigurationsdatei /etc/lilo.conf, um Informationen über die zu startenden Kernel, Bildschirmeinstellungen, Bootplatte usw. zu erhalten, und konfiguriert mit diesen Daten den Bootloader lilo in den Master Boot Record hinein. Nach dem Lesen der Konfigurationsdatei werden vom Befehl die Informationen der Konfigurationsdatei in die physikalischen Festplattendaten codiert, das heißt, die Pfadangaben der Datei werden auf die physikalischem Blockadressen übersetzt. Diese Information ist beim Bootzeitpunkt sehr wichtig, weil es in diesem Moment noch kein aktives Dateisystem gibt, weshalb der Bootloader lilo nicht über Pfadangaben zu der Datei finden kann, sondern die direkten Blockadressen auf der Festplatte anspringt. Die notwendigen Informationen werden in einer Map-Datei hinterlegt. Verwechseln Sie den Befehl lilo nicht mit dem Bootloader lilo. Der Befehl dient lediglich zum Einrichten des Bootloaders, der Bootloader selbst ist ein kleines Maschinenprogramm, das direkt auf die Festplatte geschrieben wird.
369
magnum
Die Bootloader
Die Syntax des Befehls lautet: # lilo [-option(en)]
Um LILO zu installieren, genügt in der Regel ein Aufruf ohne Parameter, da alle wichtigen Konfigurationsdaten aus einer Konfigurationsdatei gelesen werden, in der Regel /etc/lilo.conf. Es können aber verschiedene Optionen verwendet werden. Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-A mastergerät [zahl]
Sucht nach der aktiven Partition auf dem angegebenen Mastergerät, zum Beispiel /dev/hda. Wenn eine Zahl zwischen 1 und 4 angegeben wird, wird die entsprechende Partition aktiviert.
-b bootgerät
Definiert das Bootgerät, zum Beispiel, wo der Bootloader installiert wird. Die Angabe -b /dev/hda legt den Master Boot Record fest und die Angabe -b /dev/ sdb5 bedeutet die erste erweiterte Partition auf der zweiten SCSI-Festplatte.
-B bitmapdatei
Definiert eine während des Bootens anzuzeigende Bitmapdatei
-c
Aktiviert die Komprimierung der Map, was das Booten etwas beschleunigt
-C datei
Angabe der Konfigurationsdatei, die der Befehl lilo verwendet. Standardmäßig ist das die Datei /etc/lilo.conf.
-d zeit
Definiert die Verzögerungszeit in Zehntelsekunden, bevor das erste Image automatisch gebootet wird
-D label
Verwendet den Kernel mit dem angegebenen Label anstelle des ersten Kernels in der Liste
-E datei.ext
Wenn es sich bei der Dateinamenserweiterung um .bmp handelt, wird die Datei als Bitmapgrafik in der Anweisung bitmap der Konfigurationsdatei verwendet. Wenn es sich bei der Dateinamenserweiterung um .dat handelt, wird die Datei als Konfigurationsdatei behandelt, die Parameter für eine Bitmapgrafik enthält.
-f tabelle
Definiert die Parameterdatei mit der Festplattengeometrie
-F
Überspringt die Bootsektorprüfung nach Dateisystemen
-g
Erzeugt geometrische Zylinder-/Kopf-/Sektor-Festplattenadressen und ist auf 1023 Zylinder beschränkt
-i bootloader
Definiert eine Datei, die als neuer Bootloader verwendet, also in den Bootsektor geschrieben wird.
-I label
Das Label des gestarteten Kernels kann nach dem Start in der Umgebungsvariablen BOOT_IMAGE gefunden werden oder in der Pseudodatei /proc/cmdline.
-l
Erzeugt 24-Bit lineare Sektoradressen anstelle von Zylinder-/Kopf-/SektorAdressen
-L
Erzeugt 32-Bit logische Blockadressen anstelle von Zylinder-/Kopf-/SektorAdressen und ermöglicht einen Zugriff auf alle Partitionen auf Festplatten mit mehr als 1024 Zylindern
-m map-datei
Verwendet die angegebene Map-Datei anstelle der Standard-Map
Tab. 9.1: Die Optionen des Befehls lilo
370
Kapitel 9 · Linux booten und herunterfahren
Option
Beschreibung
-M mastergerät [mbr-datei]
Installiert einen Master Boot Record auf dem als Mastergerät angegebenen Gerät und kann dabei die angegebene MBR-Datei verwenden
-p
Benötigt einen interaktiven Eintrag aller Passwörter, die als »« in der Konfigurationsdatei angegeben wurden
-P {fix| ignore}
Bereinigt oder ignoriert beschädigte Partitionstabellen, das heißt, Partitionstabellen mit linearen und Zylinder-/Kopf-/Sektor-Adressen, die nicht übereinstimmen.
-q
Listet die aktuell gemappten Dateien auf
-r rootverz
Ändert das Wurzelverzeichnis auf das angegebene Verzeichnis, das aber ein Verzeichnis /dev enthalten muss
-R befehlszeile
Diese Option definiert den Standardbefehl für den Bootloader, der beim nächsten Mal ausgeführt werden soll.
-s datei
Wenn lilo den Bootsektor überschreibt, bewahrt er die alten Inhalte in der Datei /boot/boot.gerät oder in der hier angegebenen Datei auf.
-S datei
Normalerweise überschreibt lilo eine bereits vorhandene Backupdatei nicht. Diese Option erlaubt das Überschreiben.
-t
Testmodus. Gibt zusammen mit -v detailliert aus, was bei einer reellen Durchführung geschehen würde.
-T option
Gibt eine der folgenden Systeminformationen aus: help
eine Liste von Diagnosemeldungen ChRul
eine Liste der Partitionstypen EBDA
eine Liste der Informationen des erweiterten BIOS-Datenbereichs geom
eine Liste der Gerätegeometrie für alle Laufwerke table= laufwerk
eine Liste der primären Partitionstabelle, zum Beispiel table=/dev/sda video
eine Liste der für den Bootloader verfügbaren Grafikmodi -u [gerät]
Deinstalliert lilo durch Zurückkopieren des gesicherten Bootsektorblocks und prüft den Zeitstempel
-U [gerät]
Deinstalliert lilo durch Zurückkopieren des gesicherten Bootsektorblocks, prüft den Zeitstempel aber nicht
-v
Ausführlicher Modus
-w
Unterdrückt Warnmeldungen
Tab. 9.1: Die Optionen des Befehls lilo (Forts.)
371
magnum
Die Bootloader
Im folgenden Beispiel wird
lilo im
Testmodus aufgerufen:
# lilo -t Added linux * Added failsafe Added windows Added memtest86 The boot sector and the map file have *NOT* been altered.
Die Datei /etc/lilo.conf Der Bootloader lilo verwendet die Konfigurationsdatei /etc/lilo.conf, die aus zwei Teilen besteht. Der erste globale Teil legt das generelle Verhalten von LILO fest. Dagegen sind im zweiten Teil, der mit dem Schlüsselwort image oder other beginnt, alle Betriebssysteme aufgelistet, die von LILO gestartet werden können. Diese Trennung muss aber nicht streng eingehalten werden. Die Datei kann zum Beispiel wie folgt aufgebaut sein: $ cat /etc/lilo.conf ... boot = /dev/hda change-rules reset read-only menu-scheme = Wg:kw:Wg:Wg lba32 prompt timeout = 80 message = /boot/message default = linux image = /boot/vmlinuz label = linux root = /dev/hda2 vga = 788 initrd = /boot/initrd image = /boot/vmlinuz.suse label = failsafe root = /dev/hda2 vga = 788 initrd = /boot/initrd.suse append = "ide=nodma apm=off acpi=off" optional other = /dev/hda1 label = windows image = /boot/memtest.bin label = memtest86
Diese Datei gibt verschiedene Parameter, wie zum Beispiel append, root oder vga, während des Bootens an den Kernel weiter. Dies ist sowohl im globalen Einführungsteil als auch in einem einzelnen Image-Abschnitt möglich.
372
Kapitel 9 · Linux booten und herunterfahren
Wenn die Konfigurationsdatei geändert wurde, muss der Befehl /sbin/lilo aufgerufen werden, damit die Änderungen dem lilo übergeben werden. Auch wenn die physische Position des Kernels auf der Festplatte sich geändert hat, also die KernelDatei nicht mehr an der exakt gleichen Position steht, zum Beispiel weil ein Partitionswechsel oder eine Verschiebung der Partition oder eine Kernel-Kompilierung stattgefunden hat, ist es notwendig, den Befehl aufzurufen, da sonst beim nächsten Start lilo die Kernel-Datei nicht mehr findet. Zu den wichtigsten Parametern gehören: Parameter
Beschreibung
boot=partition
Dieser Parameter definiert, auf welchem Medium der Bootsektor liegt. Dies kann zum Beispiel bei einem PC mit IDE-Festplatte das Gerät /dev/ hda sein. Ohne diese Angabe wird der Bootsektor auf die aktuelle rootPartition geschrieben.
default=name
Angabe des standardmäßig zu startenden Betriebssystems; ohne diese Angabe wird das Betriebssystem gestartet, das als Erstes in der Konfigurationsdatei aufgeführt ist.
delay=zeit
Angabe der Zeit in Zehntelsekunden, die gewartet wird, ob auf eine Taste zur Ausgabe des Boot-Prompts gedrückt wird. Nach dieser Zeit lädt LILO automatisch das erste hinterlegte Kernel-Image, wenn nicht der Parameter prompt verwendet wird.
image=kerneldatei
Zusammen mit den Parametern label und root bestimmt dieser Parameter die Kernel-Datei, die das Bootmenü anbietet. Jeder Kernel, das heißt also, jedes Betriebssystem muss einen eigenen Eintrag erhalten. Alle Einträge bis zur nächsten Angabe image oder bis zum Dateiende gelten für die vorangestellte Kernel-Datei. Es gibt folgende kernelspezifische Einträge: append=string
Angabe einer Zeichenkette, die bei jedem Start dieses Kernel-Images an die Befehlszeile angehängt wird.
label=name
Mit diesem Parameter kann der Text definiert werden, mit dem eines der zu bootenden Betriebssysteme im Auswahlmenü angezeigt wird.
read-only
Dieser Parameter legt fest, dass das root-Dateisystem nur lesbar gemountet wird. In der Regel wird dieses Dateisystem anschließend von einer anderen Startprozedur schreibbar gemountet.
root= rootfilesystem
Dieser Parameter muss hinter dem Parameter image stehen. Er definiert das root-Gerät für das Betriebssystem. Die Angabe current anstelle eines Gerätenamens bedeutet, dass die aktuelle root-Partition verwendet wird. Ohne diesen Eintrag wird die beim Übersetzen des Kernels definierte root-Partition verwendet.
vga=wert
Angabe des Textmodus, in dem der Kernel gestartet wird. normal bedeutet 80 x 25 Zeichen, extended 80 x 50 Zeichen und ask zeigt ein Menü mit den verfügbaren Videomodi an und lässt eine Auswahl daraus zu. Ohne diesen Eintrag wird mit dem in der Kernel-Datei festgelegten Videomodus gestartet, der sich mit dem Befehl rdev einstellen lässt.
Tab. 9.2: Die Bootparameter des Befehls lilo
373
magnum
Die Bootloader
Parameter
Beschreibung
install=bootsektor
Mit diesem Parameter wird die Datei bestimmt, die als Bootsektor installiert wird. Standardeinstellung ist /boot/boot.b.
loader=chainloader
In einer Sektion other kann mit der Angabe loader ein Programm angegeben werden, mit dessen Hilfe spezielle Einstellungen zum Umschalten der Betriebssysteme durchgeführt werden können. Standardmäßig wird chain.b verwendet, das die Steuerung an den sekundären Bootloader eines fremden Betriebssystems übergibt.
mandatory
Mit dieser Option gilt das Passwort des aktuellen Images auch für alle anderen Images.
map=datei
Mit diesem Parameter kann gesteuert werden, dass eine andere Map-Datei als die standardmäßige /boot/map verwendet wird.
message=datei
Angabe der Datei, die eine auszugebende Meldung enthält
other=gerät
Dieser Parameter funktioniert wie der Parameter image, wird aber für andere Betriebssysteme angewandt, wie zum Beispiel Microsoft Windows.
password
Mit Hilfe dieses Parameters kann der Zugriff auf ein Image beschränkt werden, indem für dieses ein eigenes Passwort definiert wird. In diesem Fall sollte /etc/lilo.conf nur für root les- und schreibbar sein.
prompt
Dieser Parameter bewirkt, dass dem Benutzer beim Starten des Systems ein Bootmenü zur Auswahl angeboten wird. Ohne diesen Parameter kann der Benutzer das Bootmenü mit Hilfe der Taste (ª), (Strg) oder (Alt) aufrufen.
restricted
Eine Passwortabfrage findet nur statt, wenn der Kernel mit weiteren Parametern aufgerufen wird.
table=gerät
Angabe der Festplatte, die die Partitionstabelle für ein fremdes Betriebssystem enthält
timeout=zeit
Dieser Parameter bestimmt, in welcher Zeitspanne (in Zehntelsekunden) der Benutzer das Betriebssystem auswählen kann, bevor die Standardeinstellung gewählt wird. Ohne diesen Parameter bootet LILO nicht weiter, wenn keine Auswahl erfolgt.
Tab. 9.2: Die Bootparameter des Befehls lilo (Forts.)
374
Kapitel 9 · Linux booten und herunterfahren
9.2.2
LILO-Konfiguration über YaST
Die LILO-Konfiguration kann bei SUSE Linux auch über YAST vorgenommen werden. Dazu muss im Menü SYSTEM die Option KONFIGURATION DES BOOTLOADERS gestartet werden. Im ersten Dialogfenster werden alle Konfigurationsmöglichkeiten angezeigt, die über die Schaltfläche BEARBEITEN geändert werden können:
Bild 9.2: Bootloader konfigurieren
Durch die Auswahl von BOOTLOADER-TYP aus der angezeigten Liste und anschließend der Schaltfläche BEARBEITEN kann zwischen den Bootloadern GRUB und LILO gewechselt werden:
Bild 9.3: Bootloader wählen
375
Die Bootloader
magnum
Anschließend können die einzelnen Einstellungen zum ausgewählten Bootloader über BEARBEITEN verändert werden, zum Beispiel der ORT DES BOOTLOADERS:
Bild 9.4: Ort des Bootloaders festlegen
Auch die Abschnitte der Konfigurationsdatei können Sie hier verwalten, wenn Sie die Option markieren und auf BEARBEITEN klicken:
Bild 9.5: Abschnittsverwaltung von LILO
376
Kapitel 9 · Linux booten und herunterfahren
Über die Schaltfläche KONFIGURATIONSDATEI BEARBEITEN lässt sich die Datei /etc/ lilo.conf editieren:
Bild 9.6: Editieren von /etc/lilo.conf
9.2.3
Der Bootloader GRUB
GRUB (GRand Unified Bootloader) übernimmt als Bootloader die Aufgabe, nach dem Einschalten des Rechners die Steuerung an den Kernel zu übergeben. Der Kernel initialisiert anschließend über entsprechende Treiber die weitere Hardware des Betriebssystems. GRUB kann viele unterschiedliche Betriebssysteme laden. Wenn ein Betriebssystem nicht direkt von GRUB unterstützt wird, ist es möglich, dieses von GRUB über einen so genannten »Chain-Bootloader« zu laden. Ab SUSE Linux 8.1 hat sich das Bootmanagerkonzept grundlegend geändert, so dass bei einer Neuinstallation nun als Bootloader GRUB anstelle von LILO installiert wird. Dies hat folgende Gründe:
쮿
GRUB kann bei Bedarf noch vor dem Booten eine betriebssystemähnliche Umgebung zur Verfügung stellen.
쮿
GRUB kann viele verschiedene Betriebssysteme booten, das heißt außer Linux noch Windows, OS/2, BeOS und einige Unix-Systeme.
쮿
GRUB greift direkt auf Dateisysteme zu, dadurch ist es nicht nötig, GRUB neu zu installieren, wenn die Bootloader-Konfiguration oder der Kernel geändert wird.
쮿
Es ist möglich, auf Daten noch vor dem Bootvorgang zuzugreifen.
377
Die Bootloader
magnum
쮿
GRUB kann bei Bedarf die zum Booten erforderlichen Dateien über das Netzwerk laden.
쮿
Bei Terminals ohne Bildschirm stellt GRUB eine Kontrolle über die serielle Leitung zur Verfügung.
Wie der Bootloader LILO besteht auch GRUB aus zwei Stufen: eine erste Stufe mit 512 Byte Größe, die in den MBR oder den Bootsektor einer Partition geschrieben wird, und eine größere zweite Stufe, die im Anschluss geladen wird und den eigentlichen Programmcode enthält. GRUB kann im Unterschied zu LILO mehrere Dateisysteme direkt unterstützen. Dazu gehören alle Dateisysteme, die unter Linux verwendet werden können, und das Dateisystem vfat. Da GRUB noch vor dem Booten auf das Dateisystem zugreift, muss GRUB nach einer Änderung seiner Konfigurationsdatei nicht neu installiert werden, sondern liest beim Booten den Dateiinhalt einfach neu ein. GRUB findet auch einen neu installierten Kernel (/boot/vmlinuz) selbständig. Die physikalische Lage des Kernels ist für GRUB nicht von Bedeutung, es müssen nur die Partition und der Pfad des zu bootenden Kernels in der Konfigurationsdatei korrekt angegeben werden. GRUB bietet außerdem die Möglichkeit, alle Bootparameter noch vor dem Booten zu editieren. Dies ist hilfreich, wenn die Konfigurationsdatei fehlerhaft editiert wurde. Die Bootbefehle können außerdem in eine Art Eingabeaufforderung eingegeben werden, wodurch auch Betriebssysteme gebootet werden können, für die es noch keinen Eintrag im Bootmenü gibt. Beim Booten des Rechners läuft GRUB in zwei Stufen ab: 1. Laden der ersten Stufe von GRUB: Die erste Stufe von GRUB befindet sich nach der Installation von Linux im MBR (Master Boot Record), im Bootsektor einer Festplattenpartition oder im Bootsektor einer Diskette. Sie muss sehr klein sein, da im MBR oder den Bootsektoren nur wenig Platz vorhanden ist. Die einzige Aufgabe dieser Stufe besteht darin, die zweite Stufe von GRUB zu laden. 2. Laden der zweiten Stufe von GRUB: Diese Stufe stellt die wichtigen Funktionen des Bootloaders bereit, wie zum Beispiel das Auswahlmenü. Die Datei der zweiten Stufe befindet sich in /boot/grub/ stage2. GRUB besitzt inzwischen – ganz genau genommen – sogar drei Stufen, da die Stufe 1.5 eingeführt wurde. Diese Stufe behebt das Problem, dass GRUB nach einem Verschieben oder Ändern der stage2-Datei nicht mehr booten konnte. Die Zwischenstufe 1.5 liegt auf den Sektoren zwischen dem MBR und dem ersten Sektor auf der ersten Partition und kann genau ein Dateisystem lesen, zurzeit die Dateisysteme FAT, Minix, ext2, reiserfs, jfs und xfs. Es gibt nun keine Probleme mehr bei veränderten oder verschobenen stage2-Dateien, denn in diesem Sektor befindet sich genau die Version, die das entsprechende Dateisystem auf der Partition unterstützt. Das bedeutet, dass Sie nicht einfach den MBR auf eine andere Festplatte oder Partition kopieren können, um diese GRUB-fähig zu machen, sondern stattdessen den Befehl grub-install verwenden müssen, damit die Stufe 1.5 nicht fehlt.
378
Kapitel 9 · Linux booten und herunterfahren
Der Befehl grub Dieser Befehl liest die drei Konfigurationsdateien /etc/grub.conf, device.map und menu.lst, um Bootloader-Informationen zu erhalten und den Bootloader grub zu installieren, also in den Bootsektor zu schreiben. Der Bootloader grub ist intelligent genug, um einige Dateisysteme wie ext3 direkt lesen zu können, und kann daher wichtige Angaben wie zum Beispiel die Lage des Kernels direkt in der logischen Pfadangabe des Dateisystems verarbeiten. Für diese Dateisysteme ist folglich keine Umsetzung in physikalische Blockadressen notwendig. Das hat den Vorteil, dass grub auch noch booten kann, wenn sich die physikalische Lage des Kernels verändert, zum Beispiel, weil er neu kompiliert wurde oder weil die Partitionen mit einem Partitionsmanager verschoben wurden. Die Syntax des Befehls lautet: # grub [-option(en)]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
--batch
Aktiviert den Batchmodus für nicht interaktiven Gebrauch
--boot-drive=laufwerk
Definiert das Bootlaufwerk der zweiten Bootstufe, der Standard ist 0x0
--config-file=datei
Definiert die Konfigurationsdatei der zweiten Bootstufe, der Standard ist /boot/grub/menu.lst
--device-map=datei
Verwendet die angegebene Geräte-Map-Datei
--hold
Wartet, bis ein Debugger verwendet wird
--install-partition=part Definiert die Installationspartition der zweiten Bootstufe, der Standard ist 0x20000 --no-config-file
Verwendet die Konfigurationsdatei nicht
--no-floppy
Verwendet kein Diskettenlaufwerk
--preset-menu
Verwendet das voreingestellte Menü
--probe-second-floppy
Testet das zweite Diskettenlaufwerk
--read-only
Nur Lese-Modus; es wird nichts auf die Geräte geschrieben
--verbose
Ausführlicher Modus
Tab. 9.3: Die Optionen des Befehls grub
379
magnum
Die Bootloader
grub kann vor dem Booten an der Boot-Befehlszeile verschiedene Befehle verarbeiten. Zu den wichtigsten Befehlen gehören:
Parameter
Beschreibung
boot
Das Betriebssystem starten
bootp
Ein Netzwerkgerät via BOOTP initialisieren
blocklist
Eine Blocklistennotation einer Datei einholen
cat
Den Inhalt einer Datei anzeigen
chainloader
Einen weiteren Bootloader laden
cmp
Zwei Dateien vergleichen
color
Die Menü-Schnittstelle in Farbe darstellen
configfile
Eine Konfigurationsdatei laden
debug
Das Debugging-Flag aktivieren
device
Ein Gerät als Laufwerk angeben
dhcp
Ein Netzwerkgerät via DHCP initialisieren
find
Eine Datei suchen
fstest
Ein Dateisystem testen
geometry
Die Geometrie eines Laufwerks manipulieren
halt
Den Computer herunterfahren
hide
Eine Partition verstecken
ifconfig
Ein Netzwerkgerät manuell konfigurieren
install
GRUB installieren
ioprobe
Ein-/Ausgabeports testen, die für ein Gerät verwendet werden
kernel
Einen Kernel laden
lock
Einen Menüeintrag sperren
makeactive
Eine Partition aktivieren
map
Ein Gerät auf ein anderes mappen
module
Ein Modul laden
modulnounzip
Ein Modul laden, ohne es zu dekomprimieren
partnew
Eine primäre Partition einrichten
parttype
Den Typ einer Partition ändern
Tab. 9.4: Befehle des Bootloaders grub
380
Kapitel 9 · Linux booten und herunterfahren
Parameter
Beschreibung
password
Ein Passwort für die Menü-Schnittstelle festlegen
pause
Auf eine Tastatureingabe warten
quit
Das Programm beenden
rarp
Ein Netzwerkgerät via RARP initialisieren
reboot
Den Computer neu starten
read
Daten aus dem Speicher lesen
root
Das root-Gerät für GRUB einstellen
savedefault
Den aktuellen Eintrag als Standardeintrag speichern
serial
Ein serielles Gerät einrichten
setup
Die Installation von GRUB automatisch aufsetzen
terminal
Ein Terminal wählen
terminfo
Escape-Sequenzen für ein Terminal festlegen
tftpserver
Einen TFTP-Server festlegen
testload
Eine Datei laden, um ein Dateisystem zu testen
Tab. 9.4: Befehle des Bootloaders grub (Forts.)
Die Dateien des Bootloaders GRUB GRUB besitzt eine Konfigurationsdatei /boot/grub/menu.lst und die Datei /boot/grub/ in der die Massenspeichergeräte den BIOS-Gerätenamen zugeordnet sind, sowie die Datei /etc/grub.conf, die hauptsächlich von YAST benutzt wird.
device.map,
Wenn GRUB nach dem Booten auf dem Bildschirm erscheint, kann ein Menüpunkt ausgewählt werden, um das gewünschte Betriebssystem zu starten. Für Linux-Systeme ist es möglich, Bootparameter einzufügen. GRUB bietet außerdem die Möglichkeit, mit dem Drücken auf die Taste (ESC) den Auswahlbereich zu verlassen und anschließend einzelne Menüeinträge temporär zu editieren.
Die Konfigurationsdatei /boot/grub/menu.lst Nach der Installation ist die Datei /boot/grub/menu.lst die wichtigste Konfigurationsdatei von GRUB, denn sie enthält alle Informationen zu den Partitionen und Betriebssystemen, die mit GRUB gestartet werden können. GRUB verwendet allerdings eigene Bezeichnungen für Festplatten und Partitionen und nicht die unter Linux gewohnten Gerätenamen, wie zum Beispiel /dev/hda1. Das Diskettenlaufwerk heißt fd0 und die Festplatten heißen hdx. Die Partitionsbezeichnung wird durch Komma getrennt an diesen Namen angehängt: hd0,0 ist die erste Partition auf der ersten Festplatte.
381
magnum
Die Bootloader
Weitere Beispiele für Gerätenamen von GRUB sind: Gerät
Beschreibung
fd0
Diskettenlaufwerk
hd0
Erste Festplatte im System (Bootplatte)
hd1
Zweite Festplatte
hd0,0
Erste Partition der ersten Festplatte
hd0,1
Zweite Partition der ersten Festplatte
Tab. 9.5: Gerätenamen des Bootloaders grub
Bei der Nummerierung der Partitionen werden die vier primären Partitionen mit 0 bis 3 und die logischen Partitionen ab 4 nummeriert: Gerät
Beschreibung
hd0,0
Erste primäre Partition der ersten Festplatte
hd0,1
Zweite primäre Partition
hd0,2
Dritte primäre Partition
hd0,3
Vierte primäre, in der Regel erweiterte Partition
hd0,4
Erste logische Partition
hd0,5
Zweite logische Partition usw.
Tab. 9.6: Gerätenamen des Bootloaders grub
Bei der Bezeichnung der Festplatten unterscheidet GRUB nicht zwischen IDE, SCSI oder sonstigen Geräten. Alle Festplatten, die vom BIOS oder weiteren Controllern erkannt werden, werden einfach der Bootreihenfolge nach durchnummeriert. Das folgende Beispiel zeigt eine Konfigurationsdatei /boot/grub/menu.lst mit der Linux-Bootpartition /dev/hda5, der Root-Partition /dev/hda7 und einem WindowsBetriebssystem auf /dev/hda1: gfxmenu (hd0,4)/message color white/blue black/light-gray default 0 timeout 8 title linux kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 initrd (hd0,4)/initrd title windows root (hd0,0) makeactive chainloader +1 title floppy root (fd0) chainloader +1
382
Kapitel 9 · Linux booten und herunterfahren
title failsafe kernel (hd0,4)/vmlinuz.shipped root=/dev/hda7 ide=nodma apm=off acpi=off vga=normal nosmp maxcpus=0 3 initrd (hd0,4)/initrd.shipped
Die ersten beiden Zeilen betreffen die Konfiguration des Auswahlmenüs: Das Hintergrundbild mit der Bezeichnung message befindet sich auf /dev/hda5 und der Vordergrund soll weiß, der Hintergrund blau usw. sein. Der Eintrag default 0 bedeutet, dass der erste Menüeintrag title linux standardmäßig gebootet wird. Der Timeout für die Auswahl beträgt 8 Sekunden. Mit dem ersten Eintrag title linux wird Linux gebootet. Der Linux-Kernel liegt auf der ersten Festplatte in der ersten logischen Partition hd0,4 und heißt vmlinuz. Auch initrd befindet sich auf der ersten Festplatte in der ersten logischen Partition. Mit dem zweiten Abschnitt wird Microsoft Windows von der ersten Partition der ersten Festplatte hd0,0 gestartet. Die Option makeactive bedeutet, dass Windows nur von einer sichtbaren aktiven Partition gestartet werden kann. Durch den Eintrag chainloader +1 wird der erste Sektor der angegebenen Partition ausgelesen und ausgeführt. Mit Hilfe des nächsten Abschnitts kann ein Betriebssystem von einer Diskette gestartet werden, ohne dass das BIOS geändert werden muss. Im letzten Abschnitt kann Linux im »failsafe«-Modus gestartet werden. Bei den meisten aktuellen Linux-Distributionen wird die Datei menu.lst automatisch erzeugt. Die Datei enthält Kommentare, in denen die automatisch generierten Einträge detaillierter konfiguriert werden können.
Die Map-Datei /boot/grub/device.map Die Datei /boot/grub/device.map ist die zweite wichtige Konfigurationsdatei für GRUB, die aber in der Regel nur bei Bootproblemen manuell editiert werden muss. In einem System, in dem sich Festplatten an unterschiedlichen Controllern befinden, zum Beispiel IDE- und SCSI-Platten, muss GRUB durch Berechnung die Bootreihenfolge ermitteln, ob von IDE- oder SCSI-Festplatte gebootet wird. Das Ergebnis schreibt GRUB in die Datei /boot/grub/device.map. Diese kann zum Beispiel wie folgt aussehen, wenn im BIOS IDE vor SCSI in der Bootreihenfolge definiert wurde: (fd0) (hd0) (hd1) (hd2) (hd3)
/dev/fd0 /dev/hda /dev/hdb /dev/sda /dev/sdb
Sollte es notwendig sein, die Datei zu ändern, muss anschließend folgender Befehl gestartet werden, um GRUB neu zu installieren: # grub --batch --device-map=/boot/grub/device.map < /etc/grub.conf
Die Option --device-map bedeutet, dass GRUB die vorhandene Map-Datei liest.
383
magnum
Die Bootloader
Die Datei /etc/grub.conf Der Bootloader grub verwendet die Konfigurationsdatei kann zum Beispiel wie folgt aufgebaut sein:
/etc/grub.conf.
Die Datei
$ cat /etc/grub.conf root (hd0,1) install --stage2=/boot/grub/stage2 /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,1)/boot/grub/menu.lst quit
Der Eintrag root mountet die Partition, auf der sich die GRUB-Dateien befinden. Der Befehl install installiert GRUB, in diesem Fall wird die Datei stage1 in den MBR der ersten Festplatte installiert: d (hd0). Die Datei stage2 wird in die Speicheradresse 0x8000 geladen: /grub/stage2 0x8000. Der Eintrag (hd0,1)/boot/grub/menu.lst gibt an, wo sich die Menüdatei befindet.
9.2.4
GRUB-Konfiguration über YaST
Die GRUB-Konfiguration kann bei SUSE Linux auch über YAST vorgenommen werden. Dazu muss im Menü SYSTEM die Option KONFIGURATION DES BOOTLOADERS gestartet werden. Im ersten Dialogfenster werden alle Konfigurationsmöglichkeiten angezeigt, die über die Schaltfläche BEARBEITEN geändert werden können:
Bild 9.7: Bootloader konfigurieren
Durch die Auswahl von BOOTLOADER-TYP aus der angezeigten Liste und anschließend der Schaltfläche BEARBEITEN kann zwischen den Bootloadern GRUB und LILO gewechselt werden. Anschließend können die einzelnen Einstellungen zum ausgewählten Bootloader über BEARBEITEN verändert werden, zum Beispiel der ORT DES BOOTLOADERS.
384
Kapitel 9 · Linux booten und herunterfahren
Über die Schaltfläche KONFIGURATIONSDATEI BEARBEITEN lassen sich die Dateien von GRUB editieren, zum Beispiel /boot/grub/device.map:
Bild 9.8: Editieren der GRUB-Datei /boot/grub/device.map
Auch die Dateien /boot/grub/menu.lst und über das Pulldown-Menü editieren:
/etc/grub.conf
lassen sich nach Auswahl
Bild 9.9: Editieren der GRUB-Datei /etc/grub.conf
385
Bootsektor sichern und wiederherstellen
magnum
Mit Hilfe der Schaltfläche HINZUFÜGEN lassen sich Bootoptionen konfigurieren:
Bild 9.10: Bootoptionen konfigurieren
9.3 Bootsektor sichern und wiederherstellen Sie können den Master Boot Record (MBR) jederzeit sichern und diese Sicherung bei einem defekten MBR verwenden, um den Bootsektor wiederherzustellen. Die Sicherung muss allerdings auf einem anderen Datenträger stattfinden, denn bei beschädigtem MBR ist es in der Regel nicht mehr möglich, die betroffene Festplatte zu booten. In diesem Beispiel wird er auf einen USB-Stick gesichert (Sie sollten den Gerätenamen des USB-Sticks durch den Gerätenamen ersetzen, den Ihr System für den USB-Stick verwendet): # dd if=/dev/hda of=/dev/sda1/hda.mbr bs=512 count=1
Der Befehl dd wird ausführlich in Kapitel 17 beschrieben. Sollte Ihr MBR tatsächlich defekt sein, können Sie nun zum Beispiel mit einer KNOPPIX-CD-ROM booten (siehe Anweisungen im nächsten Abschnitt) und die Sicherung des MBRs wie folgt zurückspielen: $ dd if=/dev/sda1/hda.mbr of=/dev/hda bs=512 count=1
Wenn Sie keine Sicherung des Bootsektors haben, ist es eventuell trotzdem möglich, mit Knoppix und dem Programm testdisk einen funktionsfähigen MBR zu erzeugen. Gehen Sie wie folgt vor: Legen Sie die KNOPPIX-CD-ROM in das Laufwerk und vergewissern Sie sich, dass Ihre BIOS-Einstellung ein Booten von CD-ROM ermöglicht. Öffnen Sie ein Terminalfenster, sobald die grafische Oberfläche von KDE gestartet ist. Geben Sie den Befehl sudo
testdisk ein.
Wählen Sie mit den Pfeiltasten die Festplatte mit dem MBR aus (in der Regel /dev/ hda) und den Menüpunkt MBRCODE. Das Programm überschreibt damit den Sektor Ihrer Festplatte, der zum Booten der Betriebssysteme notwendig ist. Sie sollten
386
Kapitel 9 · Linux booten und herunterfahren
die Option nur dann anwenden, wenn Ihr System überhaupt nicht mehr bootet und Sie keine andere Möglichkeit mehr haben. Das Programm versucht zu booten, was es im Bootsektor der ersten Partition der Festplatte vorfindet. Wenn dies nicht gelingt, wird ein kleines Menü mit den Optionen 1234F angezeigt. Sie können nun eine der Zahlen eingeben und das Programm versucht, von möglichen Bootsektoren zu booten, die es im 1., 2., 3. oder 4. Partitionstabelleneintrag im MBR findet. Mit der Taste (f) können Sie versuchen, von der Diskette zu booten. Häufig ist es mit einer dieser Optionen möglich, das ursprüngliche Betriebssystem der Festplatte wieder zu starten. Hinterher sollten Sie mit Hilfe Ihres Bootmanagers den MBR wieder so herstellen, wie er vor der Umstellung des Programms testdisk eingerichtet war. Das Programm testdisk ist wirklich nur für extreme Notfälle gedacht und sollte mit Sorgfalt verwendet werden. Mit Hilfe des Programms ist es auch möglich, die komplette Festplatte zu löschen! Eine ausführliche Beschreibung der OpenSource-Software finden Sie unter http://www.cgsecurity.org.
9.4 Die Runlevel von Linux Ein Runlevel ist ein Systemzustand unter Linux, der definiert, welche Dienste und Ressourcen im System zur Verfügung stehen. Er definiert eine Anzahl von Prozessen, die beim Booten gestartet werden. Sie können den Standard-Runlevel zum Starten des Systems mit Hilfe der Datei /etc/inittab definieren oder mit Hilfe des Befehls init oder anderer Befehle manuell in verschiedene Runlevel wechseln. Bevor Sie den Runlevel des Systems verändern, sollten Sie unbedingt weitere am System arbeitende Benutzer benachrichtigen, um Datenverlust zu vermeiden. Den aktiven Runlevel können Sie mit Hilfe des Befehls runlevel feststellen: # runlevel N 5
Der erste Wert gibt den vorherigen Runlevel aus, in unserem Fall N für keinen. Der zweite Wert zeigt den aktuellen Runlevel an, in unserem Fall 5. Alternativ können Sie den aktiven Runlevel auch mit Hilfe des Befehls ermitteln: # runlevel . run-level 3
runlevel
Jun 30 17:58 last=S
Die erste Spalte gibt den aktiven Runlevel aus, gefolgt vom Datum und der Uhrzeit der letzten Änderung des Runlevels. Die letzte Spalte enthält den Runlevel, in dem sich das System vor dem aktiven Runlevel befand. Als Bezeichnung für einen Runlevel wird eine Zahl oder ein Buchstabe verwendet. Das System befindet sich grundsätzlich in einem der definierten Runlevel. Die definierten Runlevel lassen sich auch durch einen Blick in die Datei /etc/inittab ermitteln.
387
Die Runlevel von Linux
magnum
Unter SUSE erhalten Sie folgende Information: # The default runlevel is defined here id:5:initdefault: ... # runlevel 0 is System halt (Do not use this for initdefault!) # runlevel 1 is Single user mode # runlevel 2 is Local multiuser without remote network (e.g. NFS) # runlevel 3 is Full multiuser with network # runlevel 4 is Not used # runlevel 5 is Full multiuser with network and xdm # runlevel 6 is System reboot (Do not use this for initdefault!)
Die erste Zeile bedeutet, dass der Standard-Runlevel unter SUSE Linux 9.0 der Runlevel 5 ist.
9.4.1
Überblick über die Runlevel von SUSE Linux 10.0
Runlevel 0 (System-Halt-Runlevel) In diesem Runlevel wird Linux heruntergefahren und der Rechner ausgeschaltet, das heißt, softwaremäßig das Netzteil des Rechners ausgeschaltet, sofern dies unterstützt wird und im Kernel ACPI (Advanced Configuration and Power Interface) oder APM (Advanced Power Management) aktiviert ist. Alle laufenden Prozesse werden ordnungsgemäß beendet.
Runlevel 1 oder S oder s (Single-User- oder AdministrationsRunlevel) In diesem Runlevel ist nur ein einzelner Benutzer, nämlich root, zugelassen. Es laufen nur noch die notwendigsten Prozesse, so dass in diesem Zustand Sicherungen oder Wiederherstellungen von Daten, Überprüfungen des Dateisystems, Installationen von Softwarepaketen oder andere Wartungsarbeiten durchgeführt werden können. Alternativ können auch die Buchstaben S oder s verwendet werden, um mit dem Befehl init in den Single-User-Runlevel zu gelangen.
Runlevel 2 (lokaler Multi-User-Runlevel ohne Netzwerkbetrieb) In diesem Runlevel ist die Mehrbenutzerumgebung aktiviert, das heißt, autorisierte Anwender sind im System lokal zugelassen. Die grafische Oberfläche steht noch nicht zur Verfügung, aber das System hat die volle Multi-User- und Multitaskingfähigkeit. Es ist möglich, Dateisysteme lokal zu mounten, aber es können keine Dateisysteme remote gemountet werden.
Runlevel 3 (vollständiger Multi-User-Runlevel mit Netzwerkbetrieb) Dieser Runlevel bietet die volle Funktionalität eines Linux-Systems ohne grafische Oberfläche. Er ergänzt die Funktionen des Runlevels 2 um die Prozesse und Daemons, die für die Netzwerkunterstützung notwendig sind.
388
Kapitel 9 · Linux booten und herunterfahren
Runlevel 4 (benutzerdefinierter Runlevel) Dieser Runlevel wird von Linux im Moment nicht verwendet und könnte daher durch den Systemadministrator zum Beispiel für den zusätzlichen Start einer Datenbank definiert werden.
Runlevel 5 (vollständiger Multi-User-Runlevel mit Netzwerkbetrieb und grafischer Oberfläche) Dieser Runlevel entspricht dem Runlevel 3, allerdings wird zusätzlich die grafische Oberfläche gestartet. Standard-Runlevel unter SUSE Linux.
Runlevel 6 (Reboot-Runlevel) Das System wird vollständig angehalten und heruntergefahren. Anschließend erfolgt ein Neustart, wobei die Einstellungen der Datei /etc/inittab verwendet werden. In der Regel wird also in den Default-Runlevel 5 gefahren.
Runlevel a, b, c (spezielle Runlevel) In die Datei /etc/inittab lassen sich zusätzliche Zeilen eintragen, die die Runlevel a, b oder c verwenden. Auf diese Weise könnten mit Hilfe des Befehls diese Zeilen eingelesen und zusätzliche Hintergrundprozesse im System gestartet werden, zum Beispiel um eine Schnittstelle zu überwachen. Diese Zeilen werden allerdings nicht separat, sondern zusätzlich zum bereits aktivierten Runlevel abgearbeitet.
Runlevel q, Q (Einlesen der Datei /etc/inittab) Mit Hilfe des Befehls init q oder init Q lässt sich die Datei /etc/inittab erneut einlesen, während das System bereits aktiv ist. Dadurch könnten die Änderungen in dieser Datei verarbeitet werden, ohne dass das System neu gestartet werden muss.
Runlevel u, U (erneutes Ausführen von init) Diese Option führt dazu, dass der Befehl init sich selbst nochmals ausführt und dabei den Runlevel beibehält. Die Einträge in der Datei /etc/inittab werden nicht erneut geprüft. Diese Anforderung funktioniert nur, wenn der aktuelle Runlevel 1, 2, 3, 4, 5, s oder S ist, ansonsten wird sie ignoriert.
9.4.2
Überblick über die Runlevel von Debian GNU/Linux 3.1
Runlevel 0 (System-Halt-Runlevel) und Runlevel 1 oder S oder s (Single-User- oder Administrations-Runlevel) Diese Runlevel entsprechen in ihrer Bedeutung den Runleveln wie bei SUSE Linux.
Runlevel 2–5 (Multi-User-Runlevel) In diesem Runlevel ist die Mehrbenutzerumgebung aktiviert, das heißt, autorisierte Anwender arbeiten im System. Standard-Runlevel bei Debian GNU/Linux ist Runlevel 2.
389
magnum
Die Runlevel von Linux
Runlevel 6 (Reboot-Runlevel), Runlevel a, b, c (spezielle Runlevel), Runlevel q, Q (Einlesen der Datei /etc/inittab) und Runlevel u, U (erneutes Ausführen von init) Diese Runlevel entsprechen in ihrer Bedeutung denselben Runleveln wie bei SUSE Linux.
9.4.3
Überblick über die Runlevel von Fedora Core Linux 4.0
Runlevel 0 (System-Halt-Runlevel) und Runlevel 1 oder S oder s (Single-User- oder Administrations-Runlevel) Diese Runlevel entsprechen in ihrer Bedeutung den Runleveln wie bei SUSE Linux.
Runlevel 2–5 (Multi-User-Runlevel) Diese Runlevel für die Mehrbenutzerumgebung entsprechen wiederum den Runleveln von SUSE Linux. Standard-Runlevel bei Fedora Core Linux ist ebenfalls Runlevel 5.
Runlevel 6 (Reboot-Runlevel), Runlevel a, b, c (spezielle Runlevel), Runlevel q, Q (Einlesen der Datei /etc/inittab) und Runlevel u, U (erneutes Ausführen von init) Diese Runlevel entsprechen in ihrer Bedeutung denselben Runleveln wie bei SUSE Linux.
9.4.4
Die Datei /etc/inittab
Diese Datei enthält die Konfiguration der Runlevel und sie wird beim Systemstart vom Befehl init ausgewertet. Durch die Angaben in dieser Datei wird festgelegt, welche Befehle für welche Runlevel wie gestartet werden sollen. Die Datei /etc/inittab besteht pro Zeile aus folgenden fünf Spalten, wobei die ersten vier Einträge durch Doppelpunkt und die letzte Spalte durch Leerzeichen voneinander getrennt sind. Die folgenden Ausschnitte der Datei stammen aus SUSE Linux, sehen aber bei den anderen Distributionen ähnlich aus: $ cat /etc/inittab ... # The default runlevel is defined here id:5:initdefault: # First script to be executed, if not booting in emergency (-b) mode si:I:bootwait:/etc/init.d/boot # # # # # # # #
390
/etc/init.d/rc runlevel 0 is runlevel 1 is runlevel 2 is runlevel 3 is runlevel 4 is runlevel 5 is runlevel 6 is
takes care of runlevel handling System halt (Do not use this for initdefault!) Single user mode Local multiuser without remote network (e.g. NFS) Full multiuser with network Not used Full multiuser with network and xdm System reboot (Do not use this for initdefault!)
Kapitel 9 · Linux booten und herunterfahren
l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 #l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # what to do in single-user mode ls:S:wait:/etc/init.d/rc S ~~:S:respawn:/sbin/sulogin # what to do when CTRL-ALT-DEL is pressed ca::ctrlaltdel:/sbin/shutdown -r -t 4 now # special keyboard request (Alt-UpArrow) # look into the kbd-0.90 docs for this kb::kbrequest:/bin/echo "Keyboard Request -- edit /etc/inittab to let this work." # what to do when power fails/returns pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now #pn::powerfail:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # for ARGO UPS sh:12345:powerfail:/sbin/shutdown -h now THE POWER IS FAILING # getty-programs for the normal runlevels # :::<process> # The "id" field MUST be the same as the last # characters of the device (after "tty"). 1:2345:respawn:/sbin/mingetty --noclear tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 ...
Die Spalten haben folgende Bedeutung: Nr.
Spalte
Bedeutung
1
Id
Der ein- oder zweistellige, selbstgewählte Identifier des Eintrags
2
Runlevel
Ein oder mehrere Runlevel, für die der Eintrag gilt und ausgeführt wird
3
Aktion
Die Art, wie der nachfolgende Befehl bearbeitet werden soll
4
Befehl
Der Befehl oder das Skript, das ausgeführt werden soll
5
Ein-/Ausgabeumlenkung des Befehls
Anweisung zur Umlenkung der Ein- oder Ausgabe des Befehls
Tab. 9.7: Aufbau der Datei /etc/inittab
391
magnum
Die Runlevel von Linux
Die folgende Tabelle listet die möglichen Aktionen auf, die der init-Prozess durch Lesen der Datei /etc/inittab ausführen kann: Aktion
Bedeutung
boot
Diese Zeile wird nur während des Bootvorgangs gelesen und vor allen anderen Zeilen ausgeführt. Es wird nicht gewartet, bis die gestarteten Prozesse beendet sind.
bootwait
Mit Hilfe dieser Zeile wird das Betriebssystem hochgefahren. Sie wird vor allen anderen Zeilen ausgeführt und es wird gewartet, bis die gestarteten Prozesse beendet sind.
ctrlaltdel
Mit Hilfe dieser Aktion wird festgelegt, was nach der Tastenkombination (Strg)+(Alt)+(Entf) durchgeführt wird.
initdefault
Diese Zeile enthält den Standard-Runlevel des Systems. Ist sie nicht vorhanden, wird beim Booten eine Eingabe verlangt. Ist sie vorhanden, aber leer, wird der Systemstart abgebrochen.
kbrequest
Der Prozess wird ausgeführt, wenn init von der Tastatureingabe ein Signal empfängt, dass eine spezielle Tasteneingabe getätigt wurde.
off
Keine Bedeutung bei Linux-Systemen (existiert aus Kompatibilitätsgründen zu Unix-Systemen)
once
Der angegebene Prozess wird nur gestartet, falls er noch nicht aktiviert ist. Es wird nicht gewartet, bis er beendet ist.
ondemand
Diese Aktion sorgt dafür, dass Prozesse in bestimmten Runleveln weiterlaufen.
powerfail
Wenn der Rechner eine Meldung von der USV erhält, dass ein Stromausfall aufgetreten ist, wird dieser Prozess gestartet.
powerfailnow
Dieser Prozess wird ausgeführt, wenn init informiert wird, dass die Batterie der externen USV fast leer ist und der Strom ausgefallen ist.
powerokwait
Dieser Prozess wird ausgeführt, sobald der Befehl init informiert wird, dass der Strom wiederhergestellt wurde.
powerwait
Der Prozess wird ausgeführt, wenn ein Stromausfall eintritt. Dies wird dem Befehl init von der USV mitgeteilt. init wartet, bis der Prozess beendet ist, bevor die Aktion durchgeführt wird.
respawn
Der Prozess wird gestartet, wenn er noch nicht aktiviert ist. Falls er abbricht bzw. endet, wird er erneut gestartet.
sysinit
Der Prozess wird ausgeführt, bevor auf die Konsole zugegriffen und eine Anmeldung durchgeführt werden kann. Es wird gewartet, bis der Prozess beendet ist, bevor die Datei weiter abgearbeitet wird. Zeilen mit solchen Aktionen werden für die Systeminitialisierung verwendet und vor den Einträgen boot und bootwait ausgeführt.
wait
Der Prozess wird gestartet und es wird gewartet, bis er beendet ist.
Tab. 9.8: Die Aktionen der Datei /etc/inittab
392
Kapitel 9 · Linux booten und herunterfahren
9.4.5
Die Run-Control-Skripte
In diesem Abschnitt werden die Run-Control-Skripte genauer betrachtet.
Das Skript /etc/init.d/rc Es gibt unter Linux eine große Anzahl von Run-Control- oder so genannten rcSkripten, um Prozesse für die Runlevel zu starten oder zu stoppen. Für jeden Runlevel kann das Skript rc im Verzeichnis /etc/init.d mit einer dem Runlevel entsprechenden Nummer gestartet werden. Das Skript enthält Variablendeklarationen, die Prüfung von Bedingungen und Aufrufe von weiteren Skripten. Diese Skripte wiederum starten und stoppen Prozesse für den entsprechenden Runlevel. Dieses Skript liegt bei Fedora Linux im Verzeichnis /etc/rc.d. Ein symbolischer Link auf dieses Skript befindet sich im Verzeichnis /etc.
Die Verzeichnisse /etc/init.d/rc?.d bzw. /etc/rc?.d Das Fragezeichen im Namen des Run-Control-Unterverzeichnisses bedeutet, dass an dieser Stelle ein beliebiges Zeichen stehen kann, zum Beispiel die Ziffern 0 bis 6 oder das Zeichen 0 oder 1 oder S. Diese Verzeichnisse werden nicht einheitlich bei allen Distributionen behandelt, daher wird in diesem Abschnitt die Schreibweise /etc/[init.d/]rc?.d verwendet. SUSE Linux verwendet die Verzeichnisse schen Link /etc/rc.d nach /etc/init.d.
/etc/init.d/rc?.d
und einen symboli-
Fedora Core Linux und Debian GNU/Linux verwenden stattdessen /etc/rc?.d. Im Verzeichnis /etc finden Sie symbolische Links auf diese Verzeichnisse, die in das Verzeichnis /etc/rc.d verweisen. Für jeden Runlevel gibt es ein entsprechendes Unterverzeichnis im Verzeichnis /etc [/init.d]. Nachfolgend sehen Sie einige Skripte im Unterverzeichnis /etc/[init.d/] rc2.d, mit denen die Dienste und Ressourcen im Runlevel 2 gestartet bzw. beendet werden: # ls /etc/[init.d/]rc2.d . K09fbset .. K09rpmconfigcheck K01splash_late K13splash_early K03cron K14resmgr K05atd K15hotplug K07hwscan K16syslog K08cups K17network K08splash K21isdn K09alsasound K21random
S01isdn S01random S05network S06syslog S07hotplug S08resmgr S09splash_early S13alsasound S13fbset
S13rpmconfigcheck S14cups S14kbd S14splash S15hwscan S17atd S19cron S21splash_late
393
magnum
Die Runlevel von Linux
Es handelt sich hierbei um Start- und Stoppskripte. Startskripte beginnen mit einem S und starten einen Prozess, Stoppskripte beginnen mit einem K (für Kill) und beenden einen Prozess. Die Skripte werden in der Reihenfolge ausgeführt, wie sie mit dem Befehl ls angezeigt werden. Bei einem Systemstart werden die mit einem S beginnenden Skripte in der Reihenfolge der beiden Ziffern nach dem S ausgeführt, beim Herunterfahren des Systems dagegen alle mit einem K beginnenden Skripte, wobei die beiden dem K folgenden Ziffern die Reihenfolge festlegen. Der erste Buchstabe des Namens legt also fest, ob es sich um ein Stop- oder Startskript handelt, die nächsten beiden Ziffern bestimmen die Reihenfolge der Ausführung. Damit nicht das gleiche Skript immer in alle /etc/[init.d/]rc?.d-Verzeichnisse kopiert werden muss, werden alle Skripte mit einem Standardnamen wie zum Beispiel cups im Verzeichnis /etc/init.d abgelegt und in den Runlevel-bezogenen Verzeichnissen /etc/[init.d/]rc?.d nur Links auf das Standardskript nach der Konvention S99Skriptname bzw. K99Skriptname eingerichtet. Beim Eintreten in einen Runlevel wird dieses Skript dann mit der Option »start« bzw. beim Verlassen eines Runlevels mit der Option »stop« gerufen. Das Skript muss in diesem Fall also in der Lage sein, diese beiden Optionen zu verarbeiten. Die Distributionen SUSE Linux und Debian Linux stellen ein Vorgabeskript im Verzeichnis /etc/init.d/skeleton bereit.
Alle Skripte in den Verzeichnissen /etc/[init.d/]rc?.d sind symbolische Links auf Skripte im Verzeichnis /etc/init.d.
Wenn Sie nicht möchten, dass ein bestimmtes Skript in einem der Run-ControlUnterverzeichnisse ausgeführt wird, dann benennen Sie das Skript einfach um, indem Sie aus dem ersten Buchstaben einen Kleinbuchstaben machen. Auf diese Weise bleiben alle Informationen zum deaktivierten Skript erhalten, aber es wird nicht mehr ausgeführt, wenn in den entsprechenden Runlevel gefahren wird.
Das Verzeichnis /etc/init.d In diesem Verzeichnis befinden sich die ursprünglichen Run-Control-Skripte, für die in den Run-Control-Unterverzeichnissen /etc/rc?.d entsprechende Hard Links erstellt wurden. # ls /etc/init.d ... acct esound acpid fam alsasound fbset apache fbset.rpmsave atalk fetchmail atd gpm autofs halt bgpd halt.local boot hotplug ...
394
ntop nwe openct ospf6d ospfd pcscd plpnfsd plpprintd portmap
saslauthd sendmail setserial single skeleton slurpd smb smbfs smpppd
Kapitel 9 · Linux booten und herunterfahren
Diese Vorgehensweise mit Hilfe von symbolischen Links bietet zwei Vorteile: Ein Run-Control-Skript wird immer nur an einer Stelle gepflegt und in den notwendigen Verzeichnissen wird ein entsprechender symbolischer Link dazu erstellt, so dass kein redundanter Datenbestand entsteht. Der zweite Vorteil besteht darin, dass alle Skripte von root im Verzeichnis /etc/init.d manuell ausgeführt werden können. Wenn Sie zum Beispiel den NFS-Daemon manuell erneut starten möchten, verwenden Sie folgenden Befehl: # /etc/init.d/nfs restart Remove Net File System (NFS) Importing Net File System (NFS)
done done
Bei Debian Linux heißt dieses Run-Control-Skript nfs-common.
Aufbau eines Run-Control-Skripts Am Beispiel des Run-Control-Skripts /etc/init.d/nfs werden nachfolgend die Möglichkeiten zur Steuerung der Runlevel aufgezeigt. Das Skript startet bzw. beendet den NFS-Dienst (vergleiche Kapitel 20): #! /bin/bash ... # /etc/init.d/nfs ### BEGIN INIT INFO # Provides: nfs # Required-Start: $network $portmap # Required-Stop: # Default-Start: 3 5 # Default-Stop: # Description: Imports remote Network File Systems (NFS) ### END INIT INFO ... case "$1" in start|reload) echo -n "Importing Net File System (NFS)" if test "$nfs" = yes ; then # Mount all auto NFS devices (-> nfs(5) and mount(8) ) ... # mount -at nfs rc_status sleep 1 # # generate new list of available shared libraries # ldconfig -X 2>/dev/null rc_status -v else rc_status -u fi ;; stop) echo -n "Remove Net File System (NFS)" if test "$nfs" = "yes" ; then # # Unmount in background because during long timeouts # umount -at nfs & sleep 2 rc_status -v
395
magnum
Die Runlevel von Linux
else rc_status -u fi ;; restart|force-reload) ## Stop the service and regardless of whether it was ## running or not, start it again. $0 stop $0 start rc_status ;; status) echo -n "Checking for mounted nfs shares (from /etc/fstab):" if test "$nfs" = "yes" ; then while read where what type options rest ; do case "$where" in \#*|"") ;; *) case "$options" in *noauto*) ;; *) if test "$type" = "nfs" ; then grep -q "$where $what nfs" /proc/mounts || rc_failed 3 fi ;; esac esac done < /etc/fstab else rc_failed 3 fi rc_status -v ;; try-restart|condrestart) $0 status if test $? = 0; then $0 restart else rc_reset fi rc_status ;; *) echo "Usage: $0 {start|stop|status|reload|force-reload|restart|try-restart}" exit 1 esac rc_exit
Dieses Beispiel zeigt, dass ein Run-Control-Skript mit verschiedenen Argumenten aufgerufen werden kann: Argument
Bedeutung
start
Dienst starten
stop
Dienst anhalten
restart
Dienst anhalten und wieder starten (start und stop)
Tab. 9.9: Bedeutung der Argumente der Run-Control-Skripte
396
Kapitel 9 · Linux booten und herunterfahren
Argument
Bedeutung
reload
Konfiguration des Dienstes neu einlesen
status
Informationen über den Zustand des Dienstes ausgeben
Tab. 9.9: Bedeutung der Argumente der Run-Control-Skripte (Forts.)
Dienste mit dem Befehl insserv integrieren und entfernen Ab SUSE 7.0 gibt es den Befehl insserv, um Dienste einfacher in den Bootablauf integrieren bzw. entfernen zu können. Mit Hilfe dieses Befehls können entsprechend vorbereitete Run-Control-Skripte in die jeweiligen zugeordneten Runlevel eingehängt bzw. mit der Option –r auch wieder entfernt werden. Der Befehl ist unter Debian GNU/Linux und Fedora Core Linux nicht implementiert. Unter Debian GNU/Linux gibt es zu diesem Zweck den Befehl update-rc.d. Die Syntax des Befehls lautet: # insserv [-r] dienst
Das verwendete Basisskript mit dem Namen dienst muss sich dazu im Verzeichnis /etc/init.d befinden. Im Run-Control-Skript muss es außerdem einen Absatz mit Kommentaren geben, die Informationen für die Konfiguration enthalten. Im folgenden Beispiel wird der entsprechende Informationsblock des Run-Control-Skripts /etc/init.d/cups angezeigt, das für den Druckdienst gestartet wird: #! /bin/sh # /etc/init.d/cupsd # System startup script for the CUPS printer daemon ### BEGIN INIT INFO # Provides: cupsd # Required-Start: $local_fs $remote_fs $syslog # Required-Stop: $remote_fs $syslog # X-UnitedLinux-Should-Start: hotplug named portmap ptal slpd printbill # X-UnitedLinux-Should-Stop: portmap # Default-Start: 2 3 5 # Default-Stop: 0 1 6 # Description: Start CUPS printer daemon ### END INIT INFO
Die Parameter Default-Start bzw. Default-Stop definieren die Runlevel, in denen mit Hilfe der Start- und Stoppskripte (Sxxdienst bzw. Kxxdienst) das Basisskript eingehängt werden soll. Die Position im Bootablauf, das heißt, die Nummer der Start- und Stoppskripte, steuern die Zeilen Required-Start und Required-Stop. Die notwendigen Dienste können entweder direkt oder indirekt über eine Variable, wie zum Beispiel $local_fs, festgelegt werden. Die Variablen werden dabei in der Datei /etc/insserv.conf definiert. Im Folgenden ein Auszug zu /etc/insserv.conf:
397
magnum
Die Runlevel von Linux
... # # All local filesystems are mounted (done during boot phase) # $local_fsboot.localfs # # Low level networking (ethernet card) # $networknetwork +pcmcia +hotplug # # Named is operational $named+named +dnsmasq +lwresd $network ...
Dienste mit dem Befehl chkconfig integrieren und entfernen Der Befehl chkconfig kann ebenfalls Dienste aktivieren und deaktivieren. Sie können mit ihm die Runlevel-Links für das Booten setzen. Der Befehl wird als Frontend zum Befehl insserv betrachtet. Die Syntax des Befehls lautet: # chkconfig [-option]
Der Befehl ist unter Debian GNU/Linux nicht implementiert. Unter Debian GNU/Linux gibt es zu diesem Zweck den Befehl update-rc.d. Der Befehl kennt sechs verschiedene Modi, die als Option gesetzt werden können:
쮿
Terse-List-Modus
쮿
Set-Modus
쮿
Edit-Modus
쮿
List-Modus
쮿
Add-Modus
쮿
Delete-Modus
Die letzten drei Modi wurden aus Kompatibilitätsgründen hinzugefügt. Argument
Bedeutung
-a oder -add name(n)
Dienst aktivieren
-c oder -check name [status]
Status eines Diensts überprüfen. Wenn der Returncode 0 zurückgegeben wird, ist der Dienst in allen angegebenen Runlevel aktiviert, sonst wird Returncode 1 ausgegeben. Wenn nur der Dienstname angegeben wird, erfolgt die Prüfung nur für den aktuellen Runlevel.
-d oder -del name(n)
Dienst deaktivieren
-e oder -edit [name(n)]
Dieser Modus schreibt den Status aller angegebenen Dienste (oder aller bekannten Dienste, wenn keiner angegeben wird) in eine temporäre Datei, startet einen Editor und konfiguriert alle Dienste neu, so dass sie die Status der geänderten temporären Datei wiedergeben.
Tab. 9.10: Optionen des Befehls chkconfig
398
Kapitel 9 · Linux booten und herunterfahren
Argument
Bedeutung
-l oder Dieser Modus gibt für jeden angegebenen Dienst eine Zeile aus, die -list [--deps] [name (n)] aus dem Dienstnamen und den Runlevel 0 bis 6, jeweils mit Angabe on oder off, besteht. Wenn die Option --deps verwendet wird, wer-
den die Namen der Dienste, die vor diesem Dienst gestartet werden müssen, an jede Zeile gehängt. -s oder set [name state]
Dieser Modus konfiguriert, auf welchem Runlevel ein Dienst gestartet wird. Die Argumente müssen der Dienstname und der neue Status sein. Sie können on und off als spezielle Status verwenden, um die standardmäßigen Runlevel auszuwählen oder einen Dienst vollständig zu deaktivieren. Mit inetd oder xinetd können Sie einen Dienst konfigurieren, der von den Daemonen inetd/xinetd verwaltet wird. Wenn keine Dienste angegeben werden, liest der Befehl die Zeilen von der Standardeingabe.
-t oder -terse [name(n)]
Dieser Modus listet den Status des angegebenen Diensts auf oder alle bekannten Dienste, wenn kein Name angegeben wird. Jede Zeile enthält einen Dienstnamen und die Runlevel, für die der Dienst im Moment konfiguriert ist.
Tab. 9.10: Optionen des Befehls chkconfig (Forts.)
Ohne Argument gibt der Befehl eine Liste aller Dienste und ihres Status aus: # chkconfig Makefile SUSEfirewall2_final SUSEfirewall2_init SUSEfirewall2_setup acct acpid alsasound apache2 atalk atd autofs ...
off on on on off off on off off off off
Im nächsten Beispiel werden der Dienst cron und seine Status in den einzelnen Runlevel überprüft: # chkconfig -l cron cron 0:off
1:off
2:on
3:on
4:off
5:on
6:off
Der Dienst cron wird deaktiviert und gleich darauf wieder aktiviert: # chkconfig -d cron cron 0:off # chkconfig -a cron cron 0:off
1:off
2:off
3:off
4:off
5:off
6:off
1:off
2:on
3:on
4:off
5:on
6:off
399
Die Runlevel von Linux
magnum
Ein neues Run-Control-Skript erstellen und einbinden Wenn Sie neue Dienste oder weitere Prozesse in einem Runlevel starten möchten, erstellen Sie einfach ein neues Run-Control-Skript und erzeugen zu diesem die entsprechenden symbolischen Links in den Run-Control-Verzeichnissen. Im folgenden Beispiel erstellen Sie ein Skript dbservice, mit dem im Runlevel 2 ein Datenbankdienst gestartet wird, der im Runlevel 3 gestoppt wird. 1. Im ersten Schritt erstellen Sie das Run-Control-Skript im Verzeichnis /etc/ init.d. Häufig ist es möglich, ein ähnliches Skript zu kopieren und zu verändern, zum Beispiel das Vorgabeskript skeleton: # cp /etc/init.d/skeleton /etc/init.d/dbservice # vi /etc/init.d/dbservice
2. Im zweiten Schritt machen Sie das Run-Control-Skript zu einem ausführbaren Programm, indem Sie die Rechte ändern. Außerdem übertragen Sie den Besitz an der Datei dem Benutzer root und der Gruppe root: # chmod 744 /etc/init.d/dbservice # chown root:sys /etc/init.d/dbservice
3. Im dritten Schritt sollten Sie testen, ob das Skript wie gewünscht arbeitet. Dazu rufen Sie es jeweils mit dem Parameter start und stop auf: # /etc/init.d/dbservice start # /etc/init.d/dbservice stop
4. Im vierten Schritt müssen Sie sich überlegen, in welchem Runlevel der Dienst gestartet und in welchem er gestoppt werden soll. Gleichzeitig sollten Sie sich Gedanken darüber machen, an welcher Stelle das Skript gestartet oder gestoppt werden soll, das heißt, ob zuvor bereits andere Dienste laufen oder beendet werden sollten. In unserem Beispiel verwenden wir zum Starten Runlevel 2 und die laufende Nummer 95 und zum Beenden Runlevel 3 und die laufende Nummer 10. An dieser Stelle erzeugen Sie die entsprechenden symbolischen Links: # cd /etc/init.d # ln -s dbservice /etc/rc3.d/S95dbservice # ln -s dbservice /etc/rc2.d/K10dbservice
Gegebenenfalls erstellen Sie für weitere Runlevel weitere symbolische Links zum neu angelegten Run-Control-Skript.
9.4.6
Run-Control-Skripte mit YaST bearbeiten
Das Programm YAST unter SUSE Linux bietet eine grafische Bearbeitung der Runlevel über die Menüfolge SYSTEM - RUNLEVEL EDITOR an. Die Dienste der Runlevel können im einfachen Modus über entsprechende Schaltflächen aktiviert oder deaktiviert werden:
400
Kapitel 9 · Linux booten und herunterfahren
Bild 9.11: Runlevel-Dienste aktivieren oder deaktivieren
Im Expertenmodus ist es möglich, den Standard-Runlevel über ein PulldownMenü einzustellen, die Dienste den einzelnen Runleveln zuzuordnen bzw. zu starten, anzuhalten und zu aktualisieren und einzelne oder alle Dienste zu aktivieren bzw. zu deaktivieren:
Bild 9.12: Runlevel-Editor im Expertenmodus verwenden
401
Die Runlevel von Linux
9.4.7
magnum
Run-Control-Skripte mit KDE SysV-Init-Editor bearbeiten
Auch KDE bietet ein Programm, SYSV-INIT-EDITOR, um Run-Control-Skripte grafisch zu starten oder anzuhalten. Es ist bei SUSE Linux im Hauptmenü unter SYSTEM - DIENSTKONFIGURATION zu finden:
Bild 9.13: Runlevel und Run-Control-Skripte mit SysV-Init-Editor bearbeiten
Wenn Sie die grafische Oberfläche KDE mit Debian GNU/Linux verwenden, finden Sie das Programm unter SYSTEM - SYSV-INIT-EDITOR.
Fedora Core Linux hat dieses Tool in seiner KDE-Standardkonfiguration nicht enthalten. Sie können den zu bearbeitenden Dienst entweder im entsprechenden Runlevel auswählen oder im linken Fensterbereich unter VERFÜGBARE SYSTEMDIENSTE und mit Doppelklick zum Bearbeiten öffnen:
402
Kapitel 9 · Linux booten und herunterfahren
Bild 9.14: cron-Dienst mit SysV-Init-Editor bearbeiten
In unserem Beispiel wurde der cron-Dienst ausgewählt. In der ersten Registerkarte finden Sie allgemeine Angaben zum Dienst, zum Beispiel wann er zuletzt geändert wurde, wo das Skript steht etc. In der zweiten Registerkarte werden die Berechtigungen angezeigt:
Bild 9.15: Berechtigungen des cron-Daemon
403
Die Runlevel von Linux
magnum
In der dritten Registerkarte SYSTEMDIENST kann der Dienst gestartet, gestoppt oder neu gestartet werden.
Bild 9.16: cron-Daemon starten oder stoppen
In der vorliegenden Version von SYSV-INIT-EDITOR war es nicht möglich, die Aktion BEARBEITEN zu aktivieren.
9.4.8
Run-Control-Skripte mit Fedora Linux grafisch bearbeiten
Auch Fedora Core Linux bietet ein Programm, um Run-Control-Skripte grafisch zu starten oder anzuhalten. Es ist im Hauptmenü unter SYSTEMEINSTELLUNGEN SERVEREINSTELLUNGEN - DIENSTE zu finden:
Bild 9.17: Dienste mit Fedora grafisch verwalten
404
Kapitel 9 · Linux booten und herunterfahren
9.5 Das System herunterfahren Es gibt mehrere Befehle, um das System in einen anderen Runlevel zu bringen oder herunterzufahren. Vor einem Herunterfahren des Systems sollte sich der Systemadministrator vergewissern, dass er auf dem richtigen System angemeldet ist und die Anwender entsprechend informiert wurden, um Datenverluste zu verhindern. Er sollte sich auch darüber im Klaren sein, dass ein Server mit entsprechenden Funktionen (zum Beispiel Mail- oder Printserver) seine Aufgaben für die Clients nicht mehr ausführen kann. Auf einem Multi-User-System sollte es nur dem Systemadministrator möglich sein, das System herunterzufahren. Eine Ausnahme bilden Workstations, an denen nur einzelne Benutzer tätig sind, und eventuell Standalone-Server. Die Rechte zum Herunterfahren sind in der Gruppe shutdown enthalten. Die Befehle reboot, poweroff und swsusp sind nur Links auf /sbin/halt, das heißt, es wird im Hintergrund das gleiche Programm aufgerufen. Laut Manual ruft der Befehl halt nach dem Ablegen der Notiz in /var/log/wtmp in allen Runleveln außer 0 und 6 wiederum den Befehl shutdown auf.
9.5.1
Der Befehl shutdown
Dieser Befehl ruft das Programm init auf und ermöglicht es, die Benutzer am System über das bevorstehende Herunterfahren zu informieren. Der Befehl benötigt eine Zeit, zu der heruntergefahren werden soll. Die Syntax des Befehls lautet: # shutdown [-option(en)] [-t zeit] zeit [nachricht]
Der Befehl kennt verschiedene Optionen: Option Beschreibung -a
Die Datei /etc/shutdown.allow wird verwendet. Damit wird überprüft, ob ein berechtigter Benutzer im Moment angemeldet ist. Wenn ja, wird das System heruntergefahren.
-c
Beendet einen bereits gestarteten Shutdown.
-f
Der Befehl fsck wird beim Neustart übersprungen.
-F
Der Befehl fsck wird beim Neustart erzwungen.
-h
Nach dem Herunterfahren wird das System ausgeschaltet.
-k
Das System wird nicht wirklich heruntergefahren, sondern es wird nur eine Nachricht an die Benutzer gesandt.
-r
Nach dem Herunterfahren wird das System neu gestartet.
-t zeit
Es wird zeit Sekunden gewartet, bevor den Prozessen das Signal zum Beenden gesandt wird und das System in einen anderen Runlevel wechselt.
zeit
Kann im Format hh:mm (Stunden und Minuten) oder +m (Minuten ab jetzt) erfolgen oder mit der Angabe now
Tab. 9.11: Die Optionen des Befehls shutdown
405
magnum
Das System herunterfahren
Das nachfolgende Beispiel zeigt einen Shutdown ohne besondere Benachrichtigung der Benutzer und mit nachfolgendem Neustart: # shutdown -r now
Im nächsten Beispiel soll ein Shutdown mit anschließendem Ausschalten des Rechners nach 5 Minuten stattfinden, wobei die Benutzer am System entsprechend informiert werden: # shutdown -h +5 "Das System wird in 5 Minuten heruntergefahren"
9.5.2
Der Befehl init
Dieser Befehl init oder telinit wechselt in die verschiedenen Runlevel. Er liest die Datei /etc/inittab, um die erforderlichen Run-Control-Skripte auszuführen. Das System wird damit ordnungsgemäß heruntergefahren, ausgeschaltet oder neu gestartet. Es ist nicht möglich, den Benutzern am System eine Warnmeldung zukommen zu lassen oder eine zeitliche Verzögerung einzustellen. Die Syntax des Befehls lautet: # init [-option(en)] runlevel-nr
Die Bedeutung der Runlevel-Nummer wurde bereits im vorherigen Abschnitt »Runlevel« erläutert. Der Befehl kennt folgende Optionen: Option
Beschreibung
-s oder -S oder single
Verzweigt in den Single-User-Modus
1-5
Verzweigt in den angegebenen Runlevel
-a oder auto
Der LILO-Bootloader fügt der Befehlszeile das Wort »auto« hinzu, wenn er den Kernel mit der standardmäßigen Befehlszeile bootet. Daraufhin wird die Variable AUTOBOOT auf Ja gesetzt.
-b oder emergency
Bootet direkt in eine Single-User-Shell, ohne irgendwelche StartupSkripte aufzurufen
Tab. 9.12: Die Optionen des Befehls init
Mit diesem Befehl können Sie das System neu starten: # init 6
Mit diesem Befehl wird das System heruntergefahren und ausgeschaltet: # init 0
406
Kapitel 9 · Linux booten und herunterfahren
9.5.3
Der Befehl halt
Dieser Befehl fährt das System sofort herunter. Es ist nicht möglich, den Benutzern am System eine Warnmeldung mitzugeben oder eine zeitliche Verzögerung einzustellen. Die Syntax des Befehls lautet: # halt [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d
Die Information des Neustarts oder Anhaltens des Systems wird nicht in die Datei /var/log/wtmp geschrieben. Die Option -n verwendet diese Option standardmäßig.
-f
Erzwingt das Anhalten oder den Neustart des Systems, ohne den Befehl shutdown aufzurufen
-i
Fährt zuerst alle Netzwerkschnittstellen herunter, bevor es anhält oder neu bootet
-n
Vor dem Neustarten oder Anhalten des Systems keine Synchronisation durchführen
-p
Beim Anhalten des Systems wird der Befehl poweroff durchgeführt.
-w
Startet das System nicht tatsächlich neu oder hält es an, sondern schreibt nur die Informationen in die Datei /var/log/wtmp
Tab. 9.13: Die Optionen des Befehls halt
9.5.4
Der Befehl poweroff
Dieser Befehl fährt das System sofort herunter und schaltet es aus, vorausgesetzt, die Hardware kann softwaremäßig deaktiviert werden und im Kernel sind die Optionen ACPI oder APM aktiviert. Es ist auch nicht möglich, den Benutzern am System eine Warnmeldung mitzugeben oder eine zeitliche Verzögerung einzustellen. Die Syntax des Befehls lautet: # poweroff [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d
Die Information des Neustarts oder Anhaltens des Systems wird nicht in die Datei /var/log/wtmp geschrieben. Die Option -n verwendet diese Option standardmäßig.
-f
Erzwingt das Anhalten oder den Neustart des Systems, ohne den Befehl shutdown aufzurufen
-i
Fährt zuerst alle Netzwerkschnittstellen herunter, bevor es anhält oder neu bootet
-n
Vor dem Neustarten oder Anhalten des Systems keine Synchronisation durchführen
-w
Startet das System nicht tatsächlich neu oder hält es an, sondern schreibt nur die Informationen in die Datei /var/log/wtmp
Tab. 9.14: Die Optionen des Befehls poweroff
407
magnum
Das System herunterfahren
9.5.5
Der Befehl reboot
Dieser Befehl fährt das System sofort herunter und bringt es anschließend in den Default-Runlevel. Es ist nicht möglich, den Benutzern am System eine Warnmeldung mitzugeben oder eine zeitliche Verzögerung einzustellen. Die Syntax des Befehls lautet: # reboot [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d
Die Information des Neustarts oder Anhaltens des Systems wird nicht in die Datei /var/log/wtmp geschrieben. Die Option -n verwendet diese Option standardmäßig.
-f
Erzwingt das Anhalten oder den Neustart des Systems, ohne den Befehl shutdown aufzurufen
-i
Fährt zuerst alle Netzwerkschnittstellen herunter, bevor es anhält oder neu bootet
-n
Vor dem Neustarten oder Anhalten des Systems keine Synchronisation durchführen
-w
Startet das System nicht tatsächlich neu oder hält es an, sondern schreibt nur die Informationen in die Datei /var/log/wtmp
Tab. 9.15: Die Optionen des Befehls reboot
9.5.6
Der Befehl swsusp
Dieser Befehl fährt das System sofort herunter. Es ist nicht möglich, den Benutzern am System eine Warnmeldung mitzugeben oder eine zeitliche Verzögerung einzustellen. Die Syntax des Befehls lautet: # swsusp [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d
Die Information des Neustarts oder Anhaltens des Systems wird nicht in die Datei /var/log/wtmp geschrieben. Die Option -n verwendet diese Option standardmäßig.
-w
Startet das System nicht tatsächlich neu oder hält es an, sondern schreibt nur die Informationen in die Datei /var/log/wtmp
Tab. 9.16: Die Optionen des Befehls swsusp
Unter Debian Linux und Fedora Linux gibt es den Befehl nicht.
408
swsusp
standardmäßig
10 Geräteverwaltung »Mit stumpfem Gerät macht die Arbeit keinen Spaß.« – Sprichwort Das Dateisystem unter Linux führt einen großen Teil der Kommunikation zwischen Prozessen und dem Kernel und dem Zugriff auf Peripheriegeräte durch. Neben den gewöhnlichen Dateien und Verzeichnissen gibt es dafür die so genannten Spezialdateien, wie zum Beispiel Gerätedateien. Die Verwendung des Dateisystems für diesen Zweck hat einmal den Vorteil, dass das Dateisystem immer verfügbar ist, zum anderen bietet das einheitliche Konzept die Möglichkeit, dass alle lokalen Prozesse als auch der Kernel auf das Dateisystem unter Verwendung der Zugriffsrechte auf der Grundlage der normalen Dateirechte zugreifen können. In diesem Kapitel liegt der Schwerpunkt vor allem auf den Themen Verwaltung von Gerätedateien und des Dateisystems.
10.1 Festplatten verwalten Bei jedem Betriebssystem besteht die Festplattenverwaltung aus mehreren verschiedenen Aufgaben, die sich unter Linux in vier Bereiche unterteilen lassen:
쮿
Festplatten in das System einbinden: Dazu gehört das physikalische Anschließen von neuen Festplatten an den Rechner und das anschließende Einbinden in das Betriebssystem, damit die Festplatten erkannt und angesprochen werden können.
쮿
Festplatten partitionieren: Durch das Partitionieren werden die vorhandenen Festplatten in getrennte Bereiche aufgeteilt, die unabhängig voneinander verwendet werden und daher auch unterschiedliche Betriebssysteme aufnehmen können.
쮿
Dateisysteme anlegen: Um Dateien auf die Partition einer Festplatte schreiben und dort verwalten zu können, muss sich auf dieser ein Dateisystem befinden, das die physikalische Organisation der Daten verwaltet.
쮿
Partitionen mounten: Enthält eine Partition ein Linux-kompatibles Dateisystem, ist es möglich, diese in den Verzeichnisbaum der root-Partition durch einen Mountvorgang einzubinden.
Bei der Installation werden diese Teilschritte im Hintergrund automatisch ausgeführt.
409
magnum
Festplatten verwalten
10.1.1
Gerätedateien
Gerätedateien verwenden das Dateisystem nicht in seiner Funktion als Speichermedium, sondern sie haben entweder keine Dateilänge oder immer eine Länge von 0 Byte unabhängig von der Art des Zugriffs. Auch das Schreiben von Daten in eine Spezialdatei vergrößert diese nicht und die Daten werden nicht auf die Festplatte geschrieben. Eine Gerätedatei ist ein Verweis in den Kernel über das Dateisystem. Über diesen wird einem Prozess die Möglichkeit gegeben, auf Daten von anderen Prozessen oder auf externe Geräte zuzugreifen. Gerätetreiber bilden die Schnittstelle zwischen dem Betriebssystem und der Hardware, indem sie zwischen diesen Daten übertragen. Für diesen Zweck werden vom Kernel Systemaufrufe, wie zum Beispiel read(), open(), write() usw., verwendet. Ein Programm oder ein Anwender kommuniziert dabei nicht direkt über diese Gerätetreiber mit der Hardware, sondern verwendet Gerätedateien, die auch Device oder Special Files genannt werden. Daher muss jedes angeschlossene Gerät unter Linux eine Gerätedatei besitzen. Jede Gerätedatei wiederum kann mit unterschiedlichen Namen angesprochen werden. Abstrakt betrachtet wird die Hardware wie eine geöffnete Datei angesprochen, die vom Kernel mit einem entsprechenden Gerätetreiber verbunden wird.
10.1.2
Gerätenamen
Geräte mit ihren Namen befinden sich im Verzeichnis /dev und sind in der Regel einfach zu merkende Namen, mit deren Hilfe Sie teilweise auch selbst direkt auf ein Gerät zugreifen können: # ls –l /dev | more ... brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root brw-rw---- 1 root ...
disk disk disk disk disk disk disk disk disk disk disk disk disk
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1 10 11 12 13 14 15 16 17 18 19 2 20
Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep
23 23 23 23 23 23 23 23 23 23 23 23 23
2003 2003 2003 2003 2003 2003 2003 2003 2003 2003 2003 2003 2003
hda1 hda10 hda11 hda12 hda13 hda14 hda15 hda16 hda17 hda18 hda19 hda2 hda20
In der ersten Spalte steht entweder der Buchstabe b für eine blockorientierte Gerätedatei oder der Buchstabe c für eine zeichenorientierte (character oriented) Gerätedatei. Bei einem blockorientierten Zugriff auf ein Gerät erfolgt die Ein- bzw. Ausgabe auf Datenblock-Ebene. Im Hauptspeicher werden dazu so lange Daten gesammelt, bis diese wieder in Form eines vollständigen Datenblocks übertragen werden können. Diese Zugriffsart wird bei Festplatten, CD-ROMs oder Disketten verwendet und von den Linux-Dateisystemen unterstützt. Beim zeichenorientierten Zugriff, der auch als Raw-Zugriff bezeichnet wird, wird ein ungepufferter Datentransfer durchgeführt, das heißt, bei jedem Schreib- und Lesevorgang werden Daten übertragen. Unter Linux erfolgt im Gegensatz zu traditionellen Unix-Systemen der Zugriff entweder nur blockorientiert oder nur zei-
410
Kapitel 10 · Geräteverwaltung
chenorientiert. Ein zeichenorientierter Zugriff wird bei Terminals, Tastatureingaben und Bandlaufwerken verwendet. Die fünfte Spalte, die normalerweise die Dateigröße anzeigt, enthält bei Gerätedateien zwei durch Komma getrennte Zahlen. Dabei handelt es sich um die Majorund Minor-Device-Number. Die Device-Nummern legen den Gerätetreiber im Kernel fest und bilden damit eine Art von »Dateiinhalt«. Für den Zugriff auf verschiedene Gerätetreiber, wie zum Beispiel Festplatten oder Terminals, gibt es im LinuxKernel eine so genannte Treibertabelle. Mit Hilfe der Major-Device-Number wird auf einen Treiber in der Treibertabelle Bezug genommen, das heißt, die MajorDevice-Number entspricht dabei der Position des Treibers innerhalb der Tabelle. In der Regel verwaltet ein Treiber mehrere Geräte, zum Beispiel ein Treiber für eine IDE-Festplatte, daher muss mit Hilfe der Minor-Device-Number zusätzlich das physikalische Gerät angegeben werden. Wenn ein Gerät in logische Einheiten unterteilt werden kann, wie zum Beispiel eine Festplatte in verschiedene Partitionen oder wenn es verschiedene Zugriffsarten kennt, dann wird dies ebenfalls über die Minor-Device-Number geregelt. Ein Gerätename einer Festplattenpartition besteht immer aus drei Teilen, zum Beispiel /dev/hda1:
쮿
hd ist die Bezeichnung für Festplatten, wobei eine IDE-Festplatte die Bezeichnung hd = »hard disk« und eine SCSI-Festplatte die Bezeichnung sd = »scsi disk« trägt.
IDE(Intelligent Drive Electronics oder Integrated Device Equipment)-Controller und -Festplatten sind preisgünstiger als SCSI(Small Computer Systems Interface)-Controller und -Festplatten, aber gleichzeitig weniger flexibel. Sie werden aber häufig bei Personalcomputern verwendet. Ein neuer für den Datenaustausch zwischen Festplatte und Prozessor entwickelter Datenbus ist Serial ATA (SATA), der sich aus dem IDE-Standard gebildet hat und im Kernel 2.6 als SCSI emuliert wird. Die Daten werden seriell, also Bit für Bit übertragen, wodurch eine höhere Geschwindigkeit erreicht wird. Außerdem ermöglicht SATA eine einfachere Kabelführung und den Austausch von Datenträgern im laufenden Betrieb.
쮿
a ist die Festplattennummer. Die erste IDE-Festplatte am System heißt hda, die zweite hdb usw. Die erste SCSI-Festplatte am System heißt sda, die zweite sdb usw.
쮿
1 ist die Partitionsnummer. Das Betriebssystem Linux kann auf verschiedene Partitionen aufgebracht werden. Auf IDE-Platten gibt es maximal vier primäre Partitionen oder drei primäre und eine erweiterte Partition, wobei die erweiterte Partition wiederum in mehrere logische Partitionen unterteilt werden kann. Insbesondere bei großen Festplatten kann es sinnvoll sein, die Platte in mehrere Partitionen zu teilen und die unterschiedlichen Bereiche des LinuxSystems in unterschiedliche Partitionen zu legen (Anwenderbereiche, Systembereiche) und diese getrennt zu sichern. Die Partitionsnummern werden von 1 aufwärts gezählt.
Weitere Gerätenamen sind zum Beispiel /dev/fd0 für das erste Diskettenlaufwerk am System (floppy disk 0) oder /dev/usb0 als Bezeichnung für das erste USB-Gerät.
411
magnum
Festplatten verwalten
Standardmäßig sind in Linux-Systemen bereits Gerätedateien für eine Vielzahl von Standardgeräten eingerichtet. Die nachfolgende Tabelle enthält eine Auswahl möglicher Gerätedateien: Name
Beschreibung
/dev/hd…
IDE-Laufwerke, wie zum Beispiel Festplatten, CD-ROM, DVD
/dev/sd…
SCSI-Laufwerke
/dev/scd…
SCSI-CD-ROM oder DVD-Laufwerke
/dev/ht…
IDE-Streamer
/dev/st…
SCSI-Streamer
/dev/fd…
Diskettenlaufwerke
/dev/tty…
Terminals (Textmodus)
/dev/ttyp…
Virtuelle Terminals unter X (Slave)
/dev/ptyp…
Virtuelle Terminals unter X (Master)
/dev/pts/…
Virtuelle Terminals gemäß Unix98-Spezifikation
/dev/ttyS…
Serielle Schnittstellen
/dev/lp…
Parallele Schnittstellen
/dev/psaux
PS/2-Maus
/dev/usb/…
USB-Geräte
Tab. 10.1: Gerätedateinamen
Es gibt in der Regel symbolische Links auf spezielle Geräte, die vereinfachte Namen haben. Dies ist aber bei den verschiedenen Linux-Distributionen nicht einheitlich geregelt: Link
Gerät
/dev/cdrom
Verweis auf das Gerät CD-ROM oder DVD
/dev/dvd
Verweis auf das Gerät CD-ROM oder DVD
/dev/mouse
Verweis auf das Gerät Maus
/dev/modem
Verweis auf das Gerät Modem
/dev/ftape
Verweis auf Floppy-Streamer
/dev/tape
Verweis auf SCSI/IDE-Streamer
Tab. 10.2: Symbolische Links auf Gerätedateinamen
412
Kapitel 10 · Geräteverwaltung
Gerätedateien für Festplattenlaufwerke Unter Linux wird bei der Namensgebung zwischen der Anschlussart von Festplatten unterschieden, das heißt zwischen SCSI- und IDE-Platten. Alle SCSI-Gerätedateien beginnen mit den Zeichen sd gefolgt von der Platten- und der Partitionsnummer: /dev/sd<Partitionsnummer>
Die Plattennummer wird den einzelnen Festplatten nach der SCSI-ID in aufsteigender Reihenfolge mit Hilfe von Kleinbuchstaben zugeordnet. Generell sind immer Gerätedateien für 16 SCSI-Festplatten bereits vorhanden und 128 SCSI-Festplatten sind möglich: /dev/sda
die gesamte 1. SCSI-Festplatte
/dev/sdb
die gesamte 2. SCSI-Festplatte usw.
/dev/sdz
die gesamte 26. SCSI-Festplatte
/dev/sdaa
die gesamte 27. SCSI-Festplatte usw.
/dev/sddx
die gesamte 128. SCSI-Festplatte
Die Partitionsnummern werden in Zahlen angegeben. Bei SCSI-Festplatten sind insgesamt 15 Partitionen möglich, davon vier primäre Partitionen (davon wiederum eine erweiterte Partition) und maximal 11 logische Laufwerke bzw. Partitionen: /dev/sd..1
die 1. primäre Partition (zum Beispiel /dev/sda1 die erste primäre Partition der ersten SCSI-Festplatte)
/dev/sd..2
die 2. primäre Partition
/dev/sd..3
die 3. primäre Partition
/dev/sd..4
die 4. primäre Partition
/dev/sd..5
die 1. logische Partition
/dev/sd..6
die 2. logische Partition usw.
/dev/sd..15
die 11. logische Partition
Je nach Einteilung der Partitionen können bei den Partitionsnummern einer Platte Lücken vorhanden sein, das heißt, es ist nicht zwingend erforderlich, aufeinander folgende Partitionsnummern zu verwenden. Alle IDE-Gerätedateien beginnen mit den Zeichen hd gefolgt von der Platten- und der Partitionsnummer: /dev/hd<Partitionsnummer>
Die Plattennummer wird der Reihe nach den möglichen Geräten an den IDE-Controllern zugeordnet, das heißt, zuerst immer die Master-Drive, dann die SlaveDrive. Bei dieser Vergabe können Lücken entstehen, aber in der Regel sind die Gerätedateien für 8 IDE-Festplatten vorhanden, prinzipiell wären 18 IDE-Festplatten möglich: /dev/hda
die gesamte Master-Festplatte am 1. IDE-Controller
/dev/hdb
die gesamte Slave-Festplatte am 1. IDE-Controller
413
magnum
Festplatten verwalten
/dev/hdc
die gesamte Master-Festplatte am 2. IDE-Controller
/dev/hdd
die gesamte Slave-Festplatte am 2. IDE-Controller usw.
/dev/hdh
die gesamte Slave-Festplatte am 4. IDE-Controller
Auch bei IDE-Festplatten werden für die Partitionsnummern Zahlen verwendet. Bei IDE-Festplatten sind insgesamt 63 Partitionen möglich, davon 4 primäre Partitionen (davon eine erweiterte Partition) und maximal 59 logische Laufwerke bzw. Partitionen: /dev/hd..1
die 1. primäre Partition
/dev/hd..2
die 2. primäre Partition
/dev/hd..3
die 3. primäre Partition
/dev/hd..4
die 4. primäre Partition
/dev/hd..5
die 1. logische Partition
/dev/hd..6
die 2. logische Partition usw.
/dev/hd..63
die 59. logische Partition
Abhängig von der Partitionseinteilung bei den Partitionsnummern können auch hier Lücken entstehen.
Gerätedateien für CD-ROM- und DVD-Laufwerke Auch beim Zugriff auf CD-ROM- und DVD-Laufwerke wird zwischen der Anschlussart IDE/ATAPI und SCSI unterschieden. Die SCSI-CD-ROM-Gerätedateien beginnen mit den Buchstaben der CD-ROM-Nummer:
scd
gefolgt von
/dev/scd
Den CD-ROM Laufwerken wird über Zahlen in aufsteigender Reihenfolge anhand der SCSI-ID die Laufwerksnummer zugeordnet, beginnend mit 0. In der Regel sind die Gerätedateien für maximal 8 CD-ROM-Laufwerke vorhanden: /dev/scd0
Das 1. SCSI CD-ROM-Gerät
/dev/scd1
Das 2. SCSI CD-ROM-Gerät usw.
/dev/scd7
Das 8. SCSI CD-ROM-Gerät
Bei IDE- bzw. ATAPI-CD-ROM-Laufwerken wird entsprechend dem Zugriff auf IDE-Festplatten vorgegangen. Gängige Gerätedateien für ATAPI-CD-ROM-Laufwerke als Slave am ersten Controller oder als Master am zweiten Controller sind daher: /dev/hdb
CD-ROM als Slave am 1. IDE-Controller
/dev/hdc
CD-ROM als Master am 2. IDE-Controller
In der Regel gibt es bei allen Distributionen einen symbolischer Link der auf das erste CD-ROM-Gerät am System verweist.
414
/dev/cdrom,
Kapitel 10 · Geräteverwaltung
Gerätedateien für Diskettenlaufwerke Bei Linux wird das Diskettenformat, zum Beispiel 720 Kbyte, 1,44 Mbyte oder 2,88 Mbyte, vom Diskettencontroller überprüft, wodurch der Zugriff vereinfacht wird. Die Diskettenlaufwerke werden über die Buchstaben fd gefolgt von der Laufwerksnummer angesprochen. /dev/fd
In der Regel gibt es Gerätedateien für zwei Diskettenlaufwerke, bis zu 8 Laufwerke sind möglich. /dev/fd0
das 1. Diskettenlaufwerk
/dev/fd1
das 2. Diskettenlaufwerk usw.
Sollte der Treiber ausnahmsweise mit dem Medium nicht zurechtkommen, ist es auch möglich, das Diskettenlaufwerk mit der genauen Bezeichnung anzugeben, zum Beispiel: /dev/fd0 /dev/fd0D360 /dev/fd0D720 /dev/fd0H1440 /dev/fd0H360 /dev/fd0H720 /dev/fd0d360 /dev/fd0h1200 /dev/fd0h360 /dev/fd0h720
Gerätedateien für Bandlaufwerke Bei Bandlaufwerken spielt bei der Namensgebung ebenfalls die Anschlussart eine Rolle, außerdem gibt es meist eine Zugriffsmöglichkeit mit und eine ohne automatisches Zurückspulen. Die SCSI-Streamer-Gerätedateien beginnen mit den Buchstaben st bei zurückspulenden Geräten bzw. nst bei nicht zurückspulenden Geräten, gefolgt von der Streamernummer: /dev/(n)st<Streamernummer>
Den Streamern wird mit Hilfe von Zahlen in aufsteigender Reihenfolge anhand der SCSI-ID eine Nummer zugeordnet, beginnend mit 0. In der Regel gibt es maximal 8 Streamer: /dev/st0
1. Streamer, Band wird automatisch zurückgespult
/dev/nst0
2. Streamer, Band wird nicht zurückgespult usw.
Auf IDE-Streamer kann mit den Buchstaben Kürzeln ht bei zurückspulenden Geräten bzw. nht bei nicht zurückspulenden Geräten zugegriffen werden. Im Moment wird nur ein Streamer unterstützt, so dass die Streamernummer immer 0 ist: /dev/(n)ht0
415
magnum
Festplatten verwalten
Damit gibt es genau zwei Gerätedateien für IDE-Streamer: /dev/ht0
IDE-Streamer, Band wird automatisch zurückgespult
/dev/nht0
IDE-Streamer, Band wird nicht zurückgespult
Für Streamer, die an den Floppy-Controller, eine parallele Schnittstelle oder über eigene Interface-Karten angeschlossen werden, gibt es darüber hinaus noch weitere individuelle Gerätedateien.
10.1.3
Gerätedateien mit dem Befehl mknod erzeugen
Mit diesem Befehl können Sie block- oder zeichenorientierte Gerätedateien erzeugen. Die Syntax des Befehls lautet: # mknod [-option] name typ [major minor]
Sowohl die Major-Gerätenummer major als auch die Minor-Gerätenummer minor müssen angegeben werden, wenn der Typ entweder b, c oder u ist, und sie müssen weggelassen werden, wenn der Typ p ist. Beginnen major oder minor mit 0x oder 0X, werden sie als hexadezimale Zahl interpretiert. Beginnen sie dagegen mit 0, werden sie als Oktalzahl und in allen anderen Fällen als Dezimalzahl interpretiert. Es gibt folgende Gerätetypen: Gerätetyp
Beschreibung
b
Erzeugt ein blockorientiertes (gepuffertes) Gerät
c oder u
Erzeugt ein zeichenorientiertes (ungepuffertes) Gerät
-p
Erzeugt eine FIFO-Datei (eine Pipe für die Interprozesskommunikation)
Tab. 10.3: Die Gerätetypen des Befehls mknod
Der Befehl kennt folgende Option: Option
Beschreibung
-m oder -mode=modi
Setzt die Dateizugriffsrechte, wie beim Befehl chmod
Tab. 10.4: Die Option des Befehls mknod
Im Beispiel wird eine FIFO-Gerätedatei fifotest mit den Rechten rw-r--r-- angelegt: # mknod -m 644 fifotest p # ls -l fifotest prw-r--r-- 1 root root
0 Apr 25 17:23 fifotest
Wenn neue Treiber in Linux eingebunden werden, dann korrespondieren diese mit neuen major-Nummern und es werden in der Regel neue Gerätedateien mit dieser major-Nummer angelegt.
416
Kapitel 10 · Geräteverwaltung
10.1.4
Gerätedateien mit dem Befehl MAKEDEV erzeugen
Mit diesem im Verzeichnis /dev befindlichen Shellskript können Sie ebenfalls Gerätedateien anlegen. Dabei geben Sie nur das Gerät an und das Skript ermittelt die Major- und Minor-Gerätenummern. Die Syntax des Befehls lautet: # cd /dev ; ./MAKEDEV [-option(en)] gerät
Unter SUSE Linux 10.0 ist dieses Skript standardmäßig nicht installiert. Der Befehl kennt folgende Optionen: Option
Beschreibung
-d
Löscht die Gerätedateien
-n
Aktualisiert die Gerätedateien nicht wirklich, sondern gibt nur aus, was durchgeführt wird
-v
Ausführliche Ausgabe
Tab. 10.5: Die Optionen des Skripts MAKEDEV
Die folgende Liste enthält nur eine kleine Angabe von Gerätedateitypen, die das Skript erzeugen kann: Gerätetyp
Beschreibung
std
Erzeugt Standardgerätedateien, mem zum Beispiel für Zugriff auf physikalischen Speicher, port für Zugriff auf Ein-/Ausgabe-Ports usw.
console
Erzeugt Gerätedateien für virtuelle Konsolen, tty-Gerätedateien
pty
Erzeugt Gerätedateien für Pseudoterminals
usb
Erzeugt einen Ordner für USB-Gerätedateien und die darin befindlichen Gerätedateien, zum Beispiel lp für den Drucker, mouse für die Maus usw.
fd
Erzeugt Gerätedateien für Diskettenlaufwerke
Tab. 10.6: Die Gerätetypen des Skripts MAKEDEV
In diesem Beispiel werden Gerätedateien für Pseudoterminals erzeugt: # cd /dev ; ./MAKEDEV -v pty create ptyp0c 2 0 root:tty 0666 create ttyp0c 3 0 root:tty 0666 create ptyp1c 2 1 root:tty 0666 create ttyp1c 3 1 root:tty 0666 create ptyp2c 2 2 root:tty 0666 create ttyp2c 3 2 root:tty 0666 ...
417
magnum
Festplatten verwalten
10.1.5
PCI-Geräte mit dem Befehl lspci anzeigen
Der Befehl lspci listet alle PCI-Geräte auf. Das Tool zeigt Informationen über alle PCI-Busse des Systems und alle damit verbundenen Geräte an. Die Syntax des Befehls lautet: # lspci [-option(en)]
Der Befehl kennt unter anderem folgende Optionen: Option
Beschreibung
-b
Buszentrierte Sicht mit Anzeige aller IRQ-Nummern und -Adressen, wie sie von den PCI-Buskarten und nicht vom Kernel gesehen werden
-d [hersteller]: [gerät]
Zeigt nur die Geräte mit dem angegebenen Hersteller oder der Geräte-ID an. Jeder Wert kann weggelassen oder mit dem Zeichen * für einen beliebigen Wert gesetzt werden.
-i [datei]
Verwendet die angegebene Datei als PCI-ID-Datenbank anstelle von /usr/share/pci.ids
-n
Anzeige des PCI-Herstellers und -Gerätecodes als Zahlen
-p [verzeichnis]
Verwendet das angegebene Verzeichnis für die PCI-Bus-Informationen anstelle von /proc/bus/pci
-s [bus:][slot] [.func]
Nur die Geräte, die mit bus, slot und func festgelegt sind, werden angezeigt. Jede Komponente der Geräteadresse kann weggelassen oder mit dem Zeichen * für einen beliebigen Wert gesetzt werden.
-t
Anzeige eines baumartigen Diagramms, das alle Busse, Brigdes, Geräte und Verbindungen enthält
-v
Ausführliche Ausgabe
-vv
Sehr ausführliche Ausgabe
-x
Anzeige des hexadezimalen Dumps der ersten 65 Kbyte des PCIKonfigurationsbereichs (Standardheader)
-xxx
Anzeige des hexadezimalen Dumps des ganzen PCI-Konfigurationsbereichs
Tab. 10.7: Die Optionen des Befehls lspci
Im folgenden Beispiel werden alle PCI-Informationen ausgegeben: # lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT8375 [KM266/KL266] Host Bridge 00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP] 00:10.0 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.1 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.2 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge 00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT8233/A/C/ VT8235 PIPC Bus Master IDE (rev 06) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235 AC97 Audio
418
Kapitel 10 · Geräteverwaltung
Controller (rev 50) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) 01:00.0 VGA compatible controller: S3 Inc. VT8375 [ProSavage8 KM266/KL266]
10.1.6
USB-Geräte mit dem Befehl lsusb anzeigen
Der Befehl lsusb listet alle USB-Geräte auf. Das Tool zeigt Informationen über alle USB-Busse des Systems und alle damit verbundenen Geräte an. Die Syntax des Befehls lautet: # lspci [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-D gerät
Überprüft nicht das Verzeichnis /proc/bus/usb, sondern nur die Informationen über das angegebene Gerät, zum Beispiel /proc/bus/usb/001/001
-d hersteller: [produkt]
Zeigt nur die Geräte mit dem angegebenen Hersteller oder der ProduktID an. Jeder Wert kann weggelassen oder mit dem Zeichen * für einen beliebigen Wert gesetzt werden.
-p [verzeichnis]
Verwendet das angegebene Verzeichnis für die USB-Bus-Informationen anstelle von /proc/bus/usb
-s [bus:][gerätenr]
Nur die Geräte, die mit bus und gerätenr festgelegt sind, werden angezeigt. Jede Komponente der Geräteadresse kann weggelassen werden.
-t
Anzeige eines baumartigen Diagramms
-v
Ausführliche Ausgabe
-vv
Sehr ausführliche Ausgabe
Tab. 10.8: Die Optionen des Befehls lspci
Im folgenden Beispiel werden alle USB-Informationen in Baumstruktur ausgegeben: # lsusb Bus# 4 `-Dev# Bus# 3 `-Dev# Bus# 2 `-Dev# Bus# 1 `-Dev#
-t 1 Vendor 0x0000 Product 0x0000 1 Vendor 0x0000 Product 0x0000 1 Vendor 0x0000 Product 0x0000 1 Vendor 0x0000 Product 0x0000
Auch KDE bietet ein Tool zum Anzeigen der USB-Geräte an. Sie können es über das Hauptmenü SYSTEM - ÜBERWACHUNG - USBVIEW starten:
419
Festplatten verwalten
magnum
Bild 10.1: Grafische Überwachung der USB-Geräte mit KDE
Dieses Tool ist unter Debian GNU/Linux standardmäßig nicht enthalten.
10.1.7
Festplattenanalyse mit den Smartmontools
Mit den Smartmontools können Sie die Zuverlässigkeit von neueren ATA- und SCSIFestplatten und -bandlaufwerken überwachen (ab ATA 3 und SCSI 3). Dazu wird auf so genannte SMART-Informationen von modernen Speichermedien zugegriffen, die durch eine Überwachungstechnologie für die oben genannten Geräte erzeugt werden. SMART ist die Abkürzung für »Self-Monitoring, Analysis and Reporting Technology« und protokolliert nicht nur ständig Messwert und Fehler für die Geräte mit, sondern besitzt auch Funktionen, um die Geräte zu testen. Die Smartmontools bestehen aus dem Befehl smartctl zur Programmsteuerung und Festplattenanalyse, dem Daemon smartd für die ständige, im Hintergrund ausgeführte Geräteüberwachung und der Konfigurationsdatei /etc/smartd.conf. Unter Debian GNU/Linux finden Sie die Konfigurationsdatei unter /etc/default/ smartmontools.
Die Syntax des Befehls smartctl lautet: # smartctl [-option(en)] [gerätename]
Zu den wichtigsten Optionen des Befehls gehören: Option
Beschreibung
-A
Anzeige der Werte aller Attribute
-a
Ausgabe aller SMART-Informationen
-c
Ausgabe der SMART-Methoden, die das Gerät kann, und der benötigten Zeit
Tab. 10.9: Die Optionen des Befehls smartctlb
420
Kapitel 10 · Geräteverwaltung
Option
Beschreibung
-d typ
Angabe des Gerätetyps
-H
Ausgabe des Gesundheitszustands (»Health-Status«) des Geräts
-i
Ausgabe der Informationen zur Gerätemodellnummer, seriellen Nummer, Firmware-Version und ATA-Standardversions- und Revisionsinformationen.
-l typ
Ausgabe von Protokollmeldungen. Es gibt verschiedene Protokolltypen, zum Beispiel selftest [scsi], error [scsi] usw.
-t long
Selbsttest starten
Tab. 10.9: Die Optionen des Befehls smartctlb (Forts.)
Im folgenden Beispiel werden die Informationen einer IDE-Festplatte ausgelesen: # smartctl -i /dev/hda smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Device Model: WDC WD400EB-00CPF0 Serial Number: WD-WCAAT4284064 Firmware Version: 06.04G06 User Capacity: 40,020,664,320 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 5 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Wed Nov 9 14:56:23 2005 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled
Im zweiten Beispiel wird ein ausführlicher Test für dieselbe Festplatte gestartet: # smartctl -t long /dev/hda smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === Sending command: "Execute SMART Extended self-test routine immediately in offline mode". Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful. Testing has begun. Please wait 30 minutes for test to complete. Test will complete after Wed Nov 9 15:28:13 2005 Use smartctl -X to abort test.
Im nächsten Beispiel werden die Informationen aus dem Testprotokoll ausgelesen: # smartctl -l selftest /dev/hda smartctl version 5.33 [i686-pc-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Extended offline Completed without error 00% 701 -
421
magnum
Festplatten verwalten
Wenn Sie anstelle einer manuellen Abfrage, wie sie in diesen Beispielen durchgeführt wurde, eine automatische Abfrage durch den smartd bevorzugen, integrieren Sie am besten Start- und Stopskripte zum Booten und Herunterfahren des Daemons. Die Smartmontools enthalten außer den Programmen /usr/sbin/ smartctl und /usr/sbin/smartd auch ein Shellskript smartd, das meist in das Verzeichnis /etc/[rc.d/]init.d eingebunden wird. Mit dem Befehl chkconfig --add smartd können Sie die notwendigen Links für die unterschiedlichen Runlevel erzeugen. Die Konfiguration von smartd kann mit Hilfe der Konfigurationsdatei / etc/smartd.conf durchgeführt werden. Die Anweisung DEVICESCAN bedeutet, dass die Überwachung für alle vorhandenen Geräte durchgeführt werden soll, standardmäßig alle 30 Minuten.
10.1.8
DMA-Modus von IDE-Festplatten
Wenn der DMA-Modus (Direkt Memory Access) aktiviert ist, findet eine effizientere Datenübertragung zwischen IDE-Festplatten und Hauptspeicher statt, denn die Daten werden über einen DMA-Kanal übertragen, so dass die CPU nicht Byte für Byte kopieren muss. Der DMA-Modus ist bei einigen Linux-Distributionen und Kernel-Versionen bereits automatisch aktiv. Wenn dies nicht der Fall ist, kann die DMA-Konfiguration mit dem Befehl hdparm eingerichtet bzw. ausgegeben werden. Die Syntax des Befehls lautet: hdparm [-option(en)] [gerätename]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-i
Die von der Festplatte unterstützten DMA-Modi ausgeben
-d1
DMA-Modus aktivieren
-d0
DMA-Modus deaktivieren
-tT
Die Datenübertragungsrate zwischen Festplatte und Rechner ermitteln
Tab. 10.10: Die Optionen des Befehls hdparm
Ohne Angabe einer Option werden die aktiven Festplattenparameter ausgegeben: # hdparm /dev/had /dev/hda: multcount = 16 (on) I/O support = 1 (32-bit) unmaskirq = 1 (on) using_dma = 1 (on) keepsettings = 0 (off) nowerr = 0 (off) readonly = 0 (off) readahead = 8 (on) geometry = 7476/255/63, sectors = 120103200, start = 0
422
Kapitel 10 · Geräteverwaltung
Im folgenden Beispiel werden die von der Festplatte unterstützten Modi aufgelistet: # hdparm -i /dev/hda /dev/hda: Model=IC35L060AVVA07-0, FwRev=VA3OA52A, SerialNo=VNC302A3C3G7SA Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=52 BuffType=DualPortCache, BuffSize=1863kB, MaxMultSect=16, MultSect=16 CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=120103200 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120} PIO modes: pio0 pio1 pio2 pio3 pio4 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 AdvancedPM=yes: disabled (255) Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-2 ATA-3 ATA-4 ATA-5 Kernel Drive Geometry LogicalCHS=7476/255/63 PhysicalCHS=119150/16/63
Im nächsten Beispiel wird die Übertragungsgeschwindigkeit einmal mit und einmal ohne den DMA-Modus gemessen: # hdparm -d0 /dev/hda /dev/hda: setting using_dma to 0 (off) using_dma = 0 (off) # hdparm -Tt /dev/hda /dev/hda: Timing buffer-cache reads: Timing buffered disk reads: # hdparm -d1 /dev/hda /dev/hda: setting using_dma to 1 (on) using_dma = 1 (on) # hdparm -Tt /dev/had /dev/hda: Timing buffer-cache reads: Timing buffered disk reads:
10.1.9
128 MB in 0.78 seconds =164.10 MB/sec 64 MB in 9.55 seconds = 6.70 MB/sec
128 MB in 0.75 seconds =170.67 MB/sec 64 MB in 1.41 seconds = 45.39 MB/sec
DMA-Modus von IDE-Festplatten mit YaST aktivieren
Das Menü zur Einstellung des DMA-Modus befindet sich unter HARDWARE - IDE DMA-MODUS. Hier können Sie den DMA-Modus für IDE-Geräte konfigurieren: Das Setzen der DMA-Einstellungen mit SUSE Linux erfolgt mit dem Skript /etc/ init.d/boot.idedma, das die Einstellungen der Datei /etc/sysconfig/ide verwendet: # more /etc/sysconfig/ide ## Path: Hardware/IDE ## Description: IDE device settings ## Type: string ## Default: "" ## ServiceRestart: boot.idedma # # Force DMA mode for selected device. Use pairs <device>: separated # by space - dma_mode can be "on" (enable default DMA mode), "off" (disable DMA # mode) or any mode supported by hdparm (e.g. "mdma2", "udma5", ...) # Example: "/dev/hdc:off /dev/hdd:udma2" # DEVICES_FORCE_IDE_DMA="/dev/hda:on"
423
Der Verzeichnisbaum von Linux
magnum
Bild 10.2: DMA-Modus mit YAST aktivieren
10.2 Der Verzeichnisbaum von Linux Dieser Abschnitt erläutert den Inhalt der wichtigsten Verzeichnisse des Betriebssystems Linux. Die Aufzählung erhebt keinen Anspruch auf Vollständigkeit. Verzeichnis
Bedeutung
/ (root)
root-Verzeichnis
/bin
Enthält die Befehle für alle Benutzer, die beim Systemstart notwendig sind, bevor das Verzeichnis /usr gemountet wird
/boot
Enthält den Linux-Kernel und die zum Booten benötigten Dateien
/dev
Enthält die Gerätedateien
/etc
Enthält Systemkonfigurationsdateien, wie zum Beispiel passwd, shadow
/home
Enthält die Benutzerverzeichnisse
/lost+found
Enthält die vom Programm fsck gefundenen und nicht zuordenbaren Dateien, wenn Probleme mit dem Dateisystem aufgetreten sind
Tab. 10.11: Die wichtigsten Verzeichnisse des Betriebssystems Linux
424
Kapitel 10 · Geräteverwaltung
Verzeichnis
Bedeutung
/media
Externe Geräte, wie zum Beispiel Diskette, CD-ROM und DVD werden in entsprechende Unterverzeichnisse dieses Verzeichnisses gemountet. Die Unterverzeichnisse cdrom, floppy etc. sind in der Regel schon erstellt. Einige Distributionen besitzen noch symbolische Links von /cdrom zum Beispiel auf /media/cdrom oder /floppy auf /media/floppy usw.
/mnt
Ein leeres Verzeichnis, das jederzeit als Mountpoint verwendet werden kann
/opt
Enthält optionale Software, wie zum Beispiel StarOffice, Netscape usw. Welche Softwarepakete hier abgelegt werden, ist distributionsabhängig.
/proc
Enthält laufende Prozesse und ist ein spezielles Dateisystem (vgl. Abschnitt 10.4.3)
/root
Arbeitsverzeichnis für den Benutzer root
/sbin
Enthält die Systemstartbefehle, wie zum Beispiel init
/srv
Dieses Verzeichnis ist für Beispielumgebungen für Web- und FTP-Server vorgesehen. SUSE Linux liefert hier zwei Unterverzeichnisse www und ftp, bei Debian GNU/Linux und Fedora Core ist es ein leeres Verzeichnis.
/sys
Enthält ab Version 2.6 Systeminformationen des Kernels
/tmp
Enthält temporäre Dateien und ist bei älteren Linux- und vielen Unix-Systemen ein eigenes Dateisystem, dessen Inhalt beim Neustarten des Systems gelöscht wird. Bei manchen Distributionen, wie zum Beispiel Debian GNU/ Linux wird das Verzeichnis unabhängig, ob es ein eigenes Dateisystem hat oder nicht, bei jedem Neustart gelöscht.
/usr
Enthält die Unix-Systemsoftware (unix system resources), zum Beispiel Benutzerbefehle, die Manual Pages und Programme und Dateien, um die grafische Oberfläche zu betreiben
/var
Enthält Dateien variierenden Inhalts, wie zum Beispiel Protokolle, Spooldateien usw.
Tab. 10.11: Die wichtigsten Verzeichnisse des Betriebssystems Linux (Forts.)
Der Verzeichnis- oder Dateibaum unter Linux ist die logische Ablage der Dateien und Verzeichnisse des Betriebssystems und gleichzeitig die, die der Benutzer sieht. Die physikalische Ablage der Daten wird durch die Dateisysteme selbst geregelt.
425
Festplatten partitionieren
magnum
10.3 Festplatten partitionieren Eine PC-Festplatte kann in bis zu vier primäre Partitionen aufgeteilt werden. Eine dieser vier Partitionen kann dazu verwendet werden, um eine so genannte erweiterte oder extended-Partition anzulegen. Das Betriebssystem Linux kann im Gegensatz zu anderen Betriebssystemen nicht nur auf einer primären, sondern auch auf einer erweiterten Partition installiert werden. Dabei ist es möglich, die verwendete Partition in weitere Linux-Partitionen zu unterteilen, in denen sich nach der Installation dann die verschiedenen Teile des Betriebssystems befinden. Teile des Betriebssystems Linux können aus Sicherheits- oder Datensicherungsgründen auf mehrere Partitionen aufgeteilt werden, zum Beispiel können sich die zum Booten und Betreiben des Systems notwendigen Teile in einer root-Partition / und die Benutzerdaten auf einer /home-Partition befinden. Eine Partitionierungsmöglichkeit wäre: Bezeichnung
Erklärung
/
root-Partition mit den wichtigsten Systemdateien
swap
Swap-Partition
/var
Variable Dateien, zum Beispiel Spooldateien, Maildateien etc.
/usr
Systemprogramme
/opt
Optionale Software
/home
Benutzerverzeichnisse
Tab. 10.12: Mögliche Partitionierung einer Festplatte
Bereits bei der Installation eines Betriebssystems muss die Aufteilung der Festplatten gut geplant werden, denn es ist nur mit großem Aufwand möglich, die Konfiguration später nochmals zu ändern. Sie sollten auf jeden Fall eine Swap-Partition als Auslagerungsbereich einplanen (vergleiche Abschnitt 10.5). Eine Aufteilung des Betriebssystems in mehrere Partitionen ist dann sinnvoll, wenn diese für bestimmte Aufgaben verwendet werden sollen, zum Beispiel das Verzeichnis /home auf einem Fileserver oder das Verzeichnis /var auf einem Druckserver. Das vereinfacht im ersten Beispiel die physikalische Datensicherung und verhindert im zweiten Beispiel, dass durch eine Partition, die große Dateien in /var spoolt und dadurch voll wird, nicht das ganze System voll wird. Partitionen sollten nie zu klein angelegt werden, denn um eine Partition zu ändern, müssen die Daten gesichert, die Partition neu eingerichtet und dann die Daten wieder zurückgesichert werden. Mit Programmen wie dem Logical Volume Manager können mehrere Festplattenpartitionen zu einem logischen Bereich zusammengefasst werden. Auf diese Weise lassen sich Partitionen vergrößern und müssen dafür nicht neu angelegt werden.
426
Kapitel 10 · Geräteverwaltung
Wenn Linux auf einer PC-Hardware installiert wird, gelten zusätzlich zu den Linux-Partitionen auch die auf PC-Systemen gängigen Partitionstypen:
쮿
Primäre Partition: Auf einer PC-Festplatte können bis zu vier primäre Partitionen oder drei primäre und eine erweiterte Partition angelegt werden. Die aktive primäre Partition muss ein Betriebssystem enthalten.
쮿
Erweiterte Partition und logische Partitionen: Auf jeder Festplatte kann eine erweiterte Partition angelegt werden, die in mehrere Bereiche unterteilt werden kann, die so genannten logischen Laufwerke.
Für Linux können Sie auf einem PC-System sowohl eine primäre als auch die erweiterte Partition mit den logischen Laufwerken verwenden. Das Betriebssystem Linux kann sogar in eine erweiterte Partition installiert werden. Die Daten selbst werden aber in den Partitionsbereichen mit eigenen Dateisystemen verwaltet.
10.3.1
Der Befehl fdisk
Dieser Befehl kann Partitionstabellen ausgeben, erstellen, verändern und die aktiven Partitionen bestimmen. Die Syntax des Befehls lautet: # fdisk [-option(en)] gerät
oder, um die Größe von Partitionen in Blöcken zu ermitteln: # fdisk -s partition
Der Befehl kann mit verschiedenen Optionen gestartet werden: Option
Beschreibung
-b sektorgröße
Definiert die Sektorgröße der Festplatte. Gültige Werte sind 512, 1024 oder 2048. Die neueren Kernel kennen die Sektorgröße. Diese Option muss nur bei alten Kernels verwendet werden.
-C zylinder
Definiert die Anzahl der Zylinder der Festplatte
-H köpfe
Definiert die Anzahl der Köpfe der Festplatte (nicht die physikalische Anzahl, sondern die für Partitionstabellen verwendete Zahl). Die Werte 255 und 16 werden empfohlen.
-l
Listet die Partitionstabellen für spezielle Geräte auf und beendet das Programm. Wenn keine Gerätenamen angegeben werden, werden die in /proc/ partitions verwendet, sofern sie vorhanden sind.
-S sektoren
Definiert die Anzahl von Sektoren pro Spur auf der Festplatte (nicht die physikalische Anzahl, sondern die für Partitionstabellen verwendete Zahl). Der Wert 63 wird empfohlen.
-s partition
Die Größe der Partition in Blöcken wird an der Standardausgabe angezeigt.
-u
Beim Auflisten von Partitionstabellen werden Sektoren anstelle von Zylindern angezeigt. Das ist bei modernen Festplatten ein geeigneterer Wert.
Tab. 10.13: Die Optionen des Befehls fdisk
427
magnum
Festplatten partitionieren
Wenn Sie das Programm starten, werden mehrere Menüpunkte zur Auswahl angeboten: Option Beschreibung a
Das Bootflag umschalten, das heißt, die aktuelle Partition bootbar oder nicht bootbar definieren
b
Das BSD-Festplattenlabel editieren
c
Das DOS-Kompatibilitätsflag umschalten
d
Die aktuelle Partition löschen
l
Bekannte Partitionstypen auflisten
m
Dieses Menü ausgeben
n
Eine neue Partition hinzufügen
o
Eine neue leere DOS-Partitionstabelle erzeugen
p
Die Partitionstabelle ausgeben
q
Programm beenden, ohne zu speichern
s
Ein neues leeres Sun-Festplattenlabel anlegen
t
Die ID des aktuellen Partitionssystems ändern
u
Ändern der Anzeige-/Eintragseinheiten (Zylinder, Sektoren)
v
Die Partitionstabelle auf Fehler überprüfen
w
Partitionstabelle auf die Festplatte zurückschreiben und Programm beenden
x
Zusatzfunktionen für Experten: b c d e f g h m p q r s v w
den Anfang der Daten in eine Partition verschieben die Anzahl der Zylinder ändern die Rohdaten in die Partitionstabelle ausgeben die erweiterten Partitionen auflisten die Partitionsreihenfolge festlegen eine IRIX-(SGI-)Partitionstabelle erstellen die Anzahl der Köpfe ändern dieses Menü ausgeben die Partitionstabelle ausgeben Programm beenden, ohne zu speichern zum Hauptmenü zurückkehren die Anzahl der Sektoren/Spuren ändern die Partitionstabelle auf Fehler überprüfen Partitionstabelle auf die Festplatte zurückschreiben und Programm beenden
Tab. 10.14: Die Menüpunkte des Befehls fdisk
428
Kapitel 10 · Geräteverwaltung
Im ersten Beispiel wird die Partitionstabelle für die Festplatte /dev/hda ausgegeben: # fdisk /dev/hda The number of cylinders for this disk is set to 2434. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): p Disk /dev/hda: 20.0 GB, 20020396032 bytes 255 heads, 63 sectors/track, 2434 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot /dev/hda1 * /dev/hda2
Start 1 65
End Blocks Id System 64 514048+ 82 Linux swap 2434 19037025 83 Linux
Sie sollten mit dem Befehl fdisk sehr vorsichtig umgehen, da Sie bei falscher Handhabung Ihre Partitionstabelle zerstören und damit nicht mehr auf die Daten zugreifen können. Im nächsten Beispiel werden eine primäre und eine sekundäre Partition auf einer zweiten IDE-Fesplatte /dev/hdb neu eingerichtet: # fdisk /dev/hdb Device contains neither a valid DOS partition table, nor Sun or SGI disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 1218. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): n Command action e extended p primary partition (1-4) p
Partition number (1-4): 1 First cylinder (1-1218, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1218, default 1218): 200M Command (m for help): p Disk /dev/hdb: 275 heads, 65 sectors, 1218 cylinders Units = cylinders of 16365 * 512 bytes Device Boot Start End Blocks Id System /dev/hdb1 1 105 823218+ 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) e
429
magnum
Festplatten partitionieren
Partition number (1-4): 2 First cylinder (106-1218, default 106): Using default value 106 Last cylinder or +size or +sizeM or +sizeK (101-1218, default 1218): Using default value 1218 Command (m for help): p Disk /dev/sdb: 275 heads, 65 sectors, 1218 cylinders Units = cylinders of 16365 * 512 bytes Device Boot /dev/hdb1 /dev/hdb2
Start 1 106
End 105 1218
Blocks Id System 823218+ 83 Linux 8981695 5 Extended
Im folgenden Beispiel wird in der erweiterten Partition eine Swap-Partition angelegt: Command (m for help): n Command action l logical (5 or over) p primary partition (1-4) l
First cylinder (365-1218, default 365): Using default value 365 Last cylinder or +size or +sizeM or +sizeK (365-1218, default 1218): +800M Command (m for help): t Partition number (1-6): 6 Hex code (type L to list codes): 82 Changed system type of partition 6 to 82 (Linux swap) Command (m for help): p Disk /dev/sdb: 275 heads, 65 sectors, 1218 cylinders Units = cylinders of 16365 * 512 bytes Device Boot /dev/hdb1 /dev/hdb2 /dev/hdb5
Start 1 106 107
End 105 1218 187
Blocks Id System 823218+ 83 Linux 8981695 5 Extended 524042+ 82 Linux swap
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: If you have created or modified any DOS 6.x partitions, please see the fdisk manual page for additional information. Syncing disks.
Wenn Sie Änderungen an der Festplattenpartition mit fdisk vorgenommen haben, müssen Sie anschließend das System neu booten, damit diese wirksam werden.
10.3.2
Der Befehl cfdisk
Dieser Befehl kann ebenfalls eine Festplatte partitionieren. Zulässige Geräte sind / und /dev/sdd. Die Darstellung des Befehls unterscheidet sich von der des Befehls fdisk. dev/hda, /dev/hdb, /dev/sda, /dev/sdb, /dev/sdc
430
Kapitel 10 · Geräteverwaltung
Dieser Befehl steht unter Fedora Core Linux nicht zur Verfügung. Die Syntax des Befehls lautet: # cfdisk [-option(en)] gerät
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a
Markieren der aktuellen Partition mit einem Cursor anstelle einer inversen Hervorhebung
-c cylinder
Angabe der Anzahl der Zylinder
-g
Es wird nicht die Festplattengeometrie des Festplattentreibers verwendet, sondern versucht, die Geometrie aus der Partitionstabelle zu ermitteln.
-h köpfe
Angabe der Anzahl der Köpfe
-P format
Die Partitionstabelle wird im angegebenen Format angezeigt. Mögliche Formate sind r, s oder t (siehe Befehl p in der nächsten Tabelle).
-s sektoren
Angabe der Sektoren pro Spur
-z
Mit einer leeren Partitionstabelle beginnen
Tab. 10.15: Die Optionen des Befehls cfdisk
Der Befehl verwendet folgende Befehle: Option
Beschreibung
b
Umschalten des Bootflags der aktuellen Partition, das heißt, ob die aktuelle Partition bootbar ist oder nicht
d
Löschen der aktuellen Partition. Dies wandelt die Partition in freien Festplattenplatz um.
g
Ändern der Festplattengeometrie: Zylinder, Köpfe oder Sektoren pro Spur
h
Das Hilfemenü anzeigen
m
Die maximale Ausnutzung des Festplattenplatzes der aktuellen Partition gewährleisten
n
Eine neue Partition anlegen, wobei Sie weitere Einstellungsmöglichkeiten beantworten müssen
p
Die Partitionstabelle anzeigen. Dabei können folgende Partitionsformate gewählt werden: r s t
q
Rohdatenformat Partitionstabelle im Format der Sektorenreihenfolge Partitionstabelle im Rohformat
Programm beenden, ohne die Änderungen zu speichern
Tab. 10.16: Die Menüpunkte des Befehls cfdisk
431
Festplatten partitionieren
magnum
Option
Beschreibung
t
Ändern des Dateisystemtyps. Standardmäßig werden neue Partitionen als LinuxPartitionen angelegt.
u
Die Einheiten der Partitionsgröße ändern. Es können Mbyte, Sektoren und Zylinder gewählt werden.
W
Schreibt die Partitionstabelle auf die Festplatte, wodurch die Änderungen gespeichert werden
Pfeiltasten Bewegen den Cursor zur vorherigen oder nächsten Partition Tab. 10.16: Die Menüpunkte des Befehls cfdisk (Forts.)
Im folgenden Beispiel wird die Partitionstabelle für das Gerät /dev/hda2 ausgegeben: # fdisk /dev/hda2 cfdisk 2.11z Disk Drive: /dev/hda2 Size: 19493913600 bytes, 19.4 GB Heads: 255 Sectors per Track: 63 Cylinders: 2370 Name Flagsart Type FS Type [Label] Size (MB) Pri/Log Free Space 19493.92
10.3.3
Grafische Hardware-Informationen mit YaST
Mit YAST ist es auch möglich, sich Informationen zur Hardware anzeigen zu lassen. Über das Menü HARDWARE - HARDWARE-INFORMATIONEN können Sie Informationen zur vorhandenen Hardware auflisten, zum Beispiel:
Bild 10.3: Hardware-Informationen zur Festplatte
432
Kapitel 10 · Geräteverwaltung
10.3.4
Grafische Hardware-Informationen mit Fedora
Auch Fedora Core Linux kann Informationen zur Hardware grafisch anzeigen. Über das Menü SYSTEMVERWALTUNG - HARDWARE-BROWSER können Sie Informationen zur vorhandenen Hardware auflisten:
Bild 10.4: Hardware-Browser von Fedora Core Linux
Eine etwas andere grafische Darstellung der Hardware-Informationen erhalten Sie unter Fedora Core Linux über das Menü SYSTEMVERWALTUNG - INFOZENTRUM:
Bild 10.5: Hardware-Infozentrum unter Fedora Core Linux
433
Festplatten partitionieren
10.3.5
magnum
Grafische Festplattenpartitionierung mit YaST
Das YAST-Modul für die Partitionierung von Festplatten befindet sich im Menü SYSTEM - PARTITIONIEREN. Es erscheint zuerst eine Warnung, da das Partitionieren der Festplatten zu Datenverlust führen kann:
Bild 10.6: Warnmeldung vor dem Partitionieren von Festplatten
Diese Warnmeldung sollte unbedingt beachtet werden, um sich vor Datenverlust zu schützen. Wenn Sie sicher sind, dass Sie die Festplatte problemlos partitionieren können, klicken Sie auf JA. Das nächste Fenster listet die vorhandenen Festplatten auf. Die Aufgaben Anlegen, Bearbeiten und Löschen können an dieser Stelle dialogorientiert durchgeführt werden:
Bild 10.7: Festplatten mit YAST partitionieren
In diesem Beispiel wird eine erweiterte Partition neu angelegt. Zuerst müssen Sie den Partitionstyp auswählen:
434
Kapitel 10 · Geräteverwaltung
Bild 10.8: Partitionstyp wählen
Anschließend können Sie die Partition Ihren Wünschen entsprechend anlegen. Sie können entscheiden, ob die Partition formatiert werden soll, welches Dateisystem aufgebracht wird, wie groß sie ist, in welches Verzeichnis sie gemountet wird und ob weitere Mountoptionen in der Datei /etc/fstab hinterlegt werden sollen:
Bild 10.9: Partition anlegen
Wenn Sie die Schaltfläche FSTAB-OPTIONEN anklicken, können Sie zusätzliche Mountoptionen in die Datei /etc/fstab eintragen:
Bild 10.10: Mountoptionen in /etc/fstab eintragen
435
magnum
Dateisystem verwalten
10.4 Dateisystem verwalten Ein Dateisystem regelt die Ablage von Daten auf dem physikalischen Datenträger. Während ein Benutzer seine Dateien und Verzeichnisse mit logischen Namen versieht, um sie wieder zu erkennen und einzuordnen, organisiert im Hintergrund das Dateisystem die tatsächliche Ablage über ein ausgeklügeltes Nummernsystem. Nachdem eine Festplatte partitioniert wurde, müssen auf den einzelnen Partitionen Dateisysteme aufgebracht werden, damit das Betriebssystem diese verwalten kann. Wenn auf das Dateisystem zugegriffen wird, werden aus Gründen der Performance die Schreibvorgänge zuerst im Hauptspeicher zwischengespeichert (»Caching«) und dann ungefähr alle 30 Sekunden mit der Festplatte synchronisiert. Daher ist es notwendig, ein Betriebssystem, das diesen Mechanismus verwendet, wie zum Beispiel Linux, ordentlich herunterzufahren. Bei einem Systemabsturz kann dies auch zu einem Datenverlust führen. Modernere Dateisysteme verwenden daher den so genannten Journaling-Mechanismus, bei dem die Meta- bzw. Strukturinformationen des Dateisystems ständig auf der Festplatte in den freien Datenblöcken mitprotokolliert werden. Wurde das System nicht ordnungsgemäß heruntergefahren, zum Beispiel durch einen Systemabsturz, kann trotzdem schnell wieder ein konsistenter Zustand des Dateisystems hergestellt werden, indem die protokollierten Transaktionen beim Hochfahren des Systems nachvollzogen werden. Damit werden auch langwierige Dateisystemüberprüfungen überflüssig.
10.4.1
Lokale Dateisysteme
Lokale Dateisysteme sind alle Dateisysteme, die auf Datenträgern abgelegt sind, die sich in direkt am System angeschlossenen Geräten befinden. Zu den Linux-Dateisystemen und den mit dem Dateisystem von Linux kompatiblen plattenbasierten Dateisystemen gehören: Dateisystem
Beschreibung
ext2
Es ist das ursprüngliche Standarddateisystem für die meisten Linux-Distributionen. Vom Aufbau ähnelt es dem BSD Fast-File-System. Bei älteren Kerneln und 32-Bit-CPUs gibt es eine Beschränkung der maximalen Dateigröße auf 2 Gbyte. Diese Bibliotheks- bzw. Kernel-Limitierung wurde mit der Einführung des Large File Support (LFS) ab Kernel 2.4 aufgehoben.
reiserfs
Ein neueres Dateisystem mit zusätzlichen Optionen, das zunehmend unter Linux Verwendung findet und nach seinem Entwickler Hans Reiser benannt wurde. Auch die Firma SUSE hat zur Entwicklung mit beigetragen und das Dateisystem ab 2000 mit ausgeliefert und bevorzugt verwendet. Seit dem Kernel 2.4 ist das Dateisystem fester Bestandteil von Linux und steht auf allen Linux-Distributionen zur Verfügung.
ext3
Das verbesserte Standarddateisystem für Linux ist der Nachfolger von ext2. Der grundsätzliche Aufbau von ext2 blieb dabei unverändert, es wurde um den Journaling-Mechanismus erweitert. Seit der Kernel-Version 2.4 ist es Bestandteil des Standardlieferumfangs.
Tab. 10.17: Plattenbasierte Dateisysteme – kompatibel mit Linux
436
Kapitel 10 · Geräteverwaltung
Dateisystem
Beschreibung
hpfs/hfs
Das High Performance Filesystem, das vom Betriebssystem OS/2 von IBM verwendet wird, ist unter Linux wie (v)fat benutzbar, bietet aber keine vollständige Unix-Semantik.
jfs
Ein weiteres Dateisystem für Linux-Distributionen, das wie ext3 und reiserfs den Journaling-Mechanismus für eine schnelle Wiederherstellung des Dateisystems verwendet. Es wurde ursprünglich als Dateisystem für OS/2-Server von IBM entwickelt und anschließend auch auf Linux portiert.
xfs
Die Firma SGI entwickelte dieses Dateisystem als Hochverfügbarkeitsdateisystem für ihr UNIX-Derivat IRIX. Anschließend wurde es auch auf Linux portiert. Es ist gut für die Verwaltung von sehr großen Datenmengen geeignet und unterstützt ebenfalls die Journaling-Funktionalität.
ntfs
Das New Technology Filesystem, das unter Windows NT, Windows 2000 und Windows XP verwendet wird. Die Linux-Dateisysteme können darauf lesend zugreifen. Im Moment wird daran gearbeitet, mit den entsprechenden Rechten auch schreibend auf ntfs zugreifen zu können.
iso9660
Das Dateisystem für CD-ROMs, das herstellerübergreifend genormt ist
dos oder fat oder vfat
Das PC-Dateisystem ist eine Implementierung unter Unix des FAT32-Filesystems von DOS. Damit kann unter Linux auf DOS-formatierte Dateisysteme, zum Beispiel Disketten, zugegriffen werden.
udfs
Das Universal Disk Format Filesystem, das für optische Speichermedien wie DVDs und CD-ROMs verwendet wird.
ufs
Das Standard Unix Filesystem, das unter Linux auf dem BSD-Fast-File-System basiert. Je nach Hersteller ist es nur lesbar oder les- und beschreibbar.
vxfs
Das Veritas Filesystem des Veritas Volume Managers, ein Drittherstellerprodukt, das oft optional zusammen mit Linux eingesetzt wird.
Tab. 10.17: Plattenbasierte Dateisysteme – kompatibel mit Linux (Forts.)
Das Nachfolgedateisystem von reiserfs mit dem Namen reiser4 wurde bereits entwickelt, ist aber im Moment noch nicht in den Kernel integriert (Stand November/ 2005), seine Aufnahme wurde aber bereits vom Autoren des Dateisystems beantragt.
10.4.2
Netzwerk- oder verteilte Dateisysteme
Verteilte Dateisysteme basieren auf einem Netzwerk. Zu den weit verbreiteten gehören nfs (Network Filesystem) und smbfs (Samba-Filesystem). Sie erlauben es den Benutzern, Dateien auf verschiedene Systeme im Netzwerk zu verteilen, wodurch Ressourcen von bestimmten Rechnern im Netz für andere Systeme zur Verfügung gestellt werden. Beide werden ausführlich in Kapitel 20 erläutert.
437
magnum
Dateisystem verwalten
10.4.3
Pseudodateisysteme
Pseudodateisysteme sind spezielle Dateisysteme, die sich zum Teil nur im RAM befinden und unter anderem Zugriff auf Kernel-Informationen bieten. Zu den Pseudodateisystemen gehören: Dateisystem Beschreibung autofs
Das Automounter Filesystem ist für das automatische Mounten von Dateisystemen erforderlich.
procfs
Das Prozess-Filesystem für die Verwaltung der Prozesse in einem System ist ein virtuelles Dateisystem, das sich nur im RAM befindet und keinen Festplattenplatz belegt. Dieses Dateisystem wird standardmäßig während des Bootens in den Verzeichnisbaum von Linux eingehängt. Die Prozesse werden mit ihrer PID als Verzeichnisse mit Besitzer und Gruppe im Verzeichnis /proc aufgelistet. In den jeweiligen Prozessverzeichnissen befinden sich Pseudodateien für den Zugriff auf die Prozess-ID und für die Prozessverwaltung. Das Verzeichnis /proc wird in der Regel mit Hilfe der Befehle ps, kill usw. verwaltet (vergleiche Kapitel 15).
swap
Das Swap-Filesystem wird vom Kernel für die Verwaltung der Swap-Partition verwendet. Es ist möglich, im laufenden Betrieb neue Swap-Dateien hinzuzufügen (vergleich Abschnitt 10.5).
sysfs
Ab dem Kernel Version 2.6 gibt es das sysfs-Dateisystem, das die Geräte und Busse eines Systems in einer Dateisystemhierarchie aufführt, auf die der Benutzer zugreifen kann. Auf diese Weise kann er zum Beispiel geräte- und treiberspezifische Optionen verwenden, die vorher in /proc verwaltet wurden. Das Dateisystem sysfs wird in das Verzeichnis /sys gemountet und enthält wiederum Verzeichnisse, um Geräte zu organisieren.
tmpfs
Das temporäre Filesystem befindet sich ebenfalls im RAM, wobei Linux erweiterte Möglichkeiten zu einer RAM-Disk bietet, wie sie in anderen Systemen genannt wird. Das temporäre Dateisystem unter Linux wächst dynamisch mit den Kapazitätsanforderungen, ist aber maximal auf die halbe Größe des RAMs begrenzt. Wird der notwendige Platz zu groß für den RAM-Speicher, dann werden Teile des tmpfs auf den Swap-Bereich auf der Festplatte ausgelagert. Dieses Dateisystem ist auf /dev/shm gemountet, bei neueren Linux-Systemen kann dieses Dateisystem auch für das Verzeichnis /tmp verwendet werden. Der Inhalt dieses Verzeichnisses wird bei einem Neustart des Systems gelöscht.
Tab. 10.18: Pseudodateisysteme
10.4.4
Der Aufbau von ext2
In diesem Abschnitt wird die Beschreibung des Aufbaus von den Aufbau eines Linux-Dateisystems verwendet.
ext2
als Beispiel für
Bevor das Betriebssystem Linux eine Partition verwenden kann, muss darauf ein Dateisystem, wie zum Beispiel ext2 oder ext3, erzeugt werden. Das Dateisystem ext2 konnte ursprünglich eine Datei bis zu 2 Gbyte Größe enthalten. Seit SUSE 7.0 gibt es den so genannten »Large File Support« (LFS) für 64-BitBetriebssysteme, der eine Dateigröße von bis zu 16 Gbyte unterstützt. Fedora Core Linux unterstützt LFS ebenfalls, da Red Hat Linux es ab Version 7.1 unterstützt. Debian GNU/Linux enthält LFS standardmäßig mit der neuen Version, die unter dem Codenamen etch veröffentlicht wird.
438
Kapitel 10 · Geräteverwaltung
Die Dateiinformationen des Systems werden durch Inodes verwaltet, die auch die Adressen der Datenblöcke einer Datei speichern. Standardmäßig wird bei einem neu angelegten Dateisystem ext2 ein Inode pro zwei Kilobyte Festplattenplatz zugewiesen. Diese Größe lässt sich allerdings mit Hilfe des Befehls mke2fs steuern, der das Dateisystem erzeugt (vergleiche Abschnitt 10.4.8). Der Zugriff auf eine Festplatte lässt sich dadurch beschleunigen, dass die Zylinder einer Partition in Gruppen aufgeteilt werden, wobei eine Zylindergruppe standardmäßig aus 16 Zylindern besteht. Dieses Dateisystem umfasst folgende Komponenten:
쮿
Plattenlabel
쮿
Bootblock
쮿
Superblock und Backup-Superblöcke
쮿
Zylindergruppe mit –
Zylindergruppenblöcken
–
Inode-Tabelle
–
Datenblöcken
Bild 10.11: Der Aufbau des Dateisystems ext2
439
Dateisystem verwalten
magnum
Der Bootblock Im ersten Block einer Festplatte befindet sich der Bootblock mit dem bootstrap-Programm, dem primären Bootloader (vergleiche Kapitel 12). Der Bootblock gehört nicht zum Dateisystem selbst, wird hier aber der Vollständigkeit halber beschrieben.
Der Superblock Der Superblock enthält Informationen über das Dateisystem und befindet sich in den nächsten 16 Sektoren der Festplatte. Zu den gespeicherten Informationen gehören:
쮿
Anzahl und Größe der Zylindergruppen
쮿
Datenblock- und Fragmentgröße
쮿
Anzahl der freien und belegten Datenblöcke
쮿
Maximale Zahl von Dateien (Inode-Anzahl)
쮿
Belegte Inodes
쮿
Namen der Mountverzeichnisse
쮿
Informationen über die Hardware (entsprechend dem VTOC)
쮿
Zustand des Dateisystems
Die Daten des Superblocks werden im laufenden Betrieb ständig aktualisiert, wozu eine Kopie in den Hauptspeicher geladen und verändert wird. Ein Systemausfall vor der Aktualisierung des Superblocks auf der Festplatte führt zu einer automatischen Überprüfung des Dateisystems durch den Befehl fsck (vergleiche Abschnitt 10.4.11). Dasselbe geschieht, wenn ein Dateisystem nicht sauber mit dem Befehl umount ungemountet wurde. Da der Superblock selbst auch beschädigt werden könnte, werden Kopien von ihm auf der Festplatte abgelegt, die so genannten Backup-Superblöcke, die sich am Anfang von jeder Zylindergruppe befinden. Der erste Backup-Superblock beginnt also bei Sektor 32, wo auch die erste Zylindergruppe beginnt.
Zylindergruppen Partitionen werden in Zylindergruppen unterteilt, um den Zugriff auf die Festplatte zu beschleunigen. Dateien werden vom Dateisystem, so weit möglich, immer innerhalb einer Zylindergruppe gespeichert und eine Fragmentierung von Dateien wird vermindert. Am Anfang jeder Zylindergruppe befindet sich ein Backup-Superblock. Anschließend folgt der Zylindergruppenblock, der die notwendigen Informationen für die Zylindergruppe enthält, wie zum Beispiel:
쮿
Anzahl der Zylinder
쮿
Anzahl der freien und belegten Inodes
쮿
Anzahl der freien und belegten Datenblöcke
쮿
Anzahl der Verzeichnisse
Des Weiteren enthält eine Zylindergruppe eine Inode-Tabelle und die Datenblöcke, in denen die Daten selbst gespeichert sind.
440
Kapitel 10 · Geräteverwaltung
Inodes Die Inode-Tabelle verwaltet die Inodes der Zylindergruppe. Ein Inode beschreibt eine Datei und ihre Datenblöcke und enthält folgende Informationen:
쮿
Dateityp
쮿
Zugriffsrechte
쮿
Linkzähler
쮿
Besitzer der Datei (UID)
쮿
Gruppenzugehörigkeit der Datei (GID)
쮿
Dateigröße
쮿
Letztes Änderungsdatum
쮿
Letztes Zugriffsdatum
쮿
Anzahl der Datenblöcke und Adressverweise auf die verwendeten Datenblöcke
Es gibt zwölf direkte Zeiger, die direkt auf einen Datenblock verweisen. Ein Datenblock hat standardmäßig die Größe eines Kbytes unter Linux. Damit können standardmäßig 12 * 1 Kbyte = 12 Kbyte Daten gespeichert werden. Ein einfach indirekter Zeiger zeigt auf einen Dateisystemblock, der wiederum auf 256 weitere Adressen von 1 Kbyte großen Datenblöcken verweist. Damit können standardmäßig 256 * 1 Kbyte = 256 Kbyte Daten gespeichert werden. Es gibt einen zweifach indirekten Zeiger, der auf einen Dateisystemblock mit zwei einfach indirekten Zeigern zeigt, die wiederum jeweils auf 256 weitere Adressen von 1 Kbyte großen Datenblöcken verweisen. Damit können standardmäßig 256 * 256 * 1 Kbyte = 64 Mbyte Daten gespeichert werden. Ein dreifach indirekter Zeiger zeigt auf einen Dateisystemblock, der auf zwei zweifach indirekte Zeiger verweist. Damit können theoretisch bis zu 256 * 256 * 256 * 1 Kbyte = 16,6 Gbyte Daten gespeichert werden.
441
Dateisystem verwalten
magnum
Bild 10.12: Inode-Tabelle von ext2
Unter Linux können Datenblöcke auch einen höheren Wert als 1.024 Byte annehmen, zum Beispiel 2 Kbyte oder 4 Kbyte. Dies lässt sich beim Anlegen des Dateisystems steuern (vergleiche Abschnitt 10.4.8). Die maximale theoretische Dateigröße ist bei größeren Datenblöcken auch entsprechend größer, nämlich 256 Gbyte bei einer Blockgröße von 2 Kbyte und 4.100 Gbyte bei einer Blockgröße von 4 Kbyte.
442
Kapitel 10 · Geräteverwaltung
Datenblöcke Die Datenblöcke enthalten die tatsächlichen Daten der Dateien, zum Beispiel ASCII-Text, Anwendungsdaten oder binäre Daten.
10.4.5
Das Dateisystem ext3
Das Dateisystem ext3 basiert in unveränderter Form auf der Struktur von ext2 und besitzt damit dieselben Vor- und Nachteile. Es wurde lediglich um die JournalingFunktionalität erweitert. Das Journal protokolliert alle im Moment bearbeiteten Dateien, damit nach einem Systemabsturz oder Ähnlichem beim Neustart nur noch diese Dateien auf Inkonsistenzen hin überprüft werden müssen. Des Weiteren wurde das transaktionsbasierte Modell verwendet, nach dem eine Datei so lange gültig bleibt, bis die Bearbeitung einer neueren Version ganz abgeschlossen ist. Dadurch kann nur im Moment des Abspeicherns ein Fehler auftreten. Jedes ext2-Dateisystem kann problemlos in ein ext3-System konvertiert werden und umgekehrt. Das heißt, auch bereits bestehende Dateisysteme können ohne Neuinstallation den Journaling-Mechanismus zugewiesen bekommen. Journaling bedeutet, dass Änderungen im Dateisystem mitprotokolliert werden, wobei allerdings die Änderungen an den Metadaten, das heißt die Informationen zu einer Datei, und die Dateninhalte unterschiedlich behandelt werden. Das Dateisystem ext3 unterstützt drei verschiedene Journaling-Modi:
쮿
journal: Dieser Modus protokolliert Änderungen an Metadaten und Dateien, was sehr sicher, aber auch sehr langsam ist.
쮿
ordered:
쮿
writeback:
Dieser Modus protokolliert Änderungen an Metadaten und geänderte Dateien, deren Metadaten davon betroffen sind, werden zuvor gesichert. Dadurch ist zwar immer die Dateisystemkonsistenz gewährleistet, aber es besteht kein absoluter Schutz vor Verlust von Änderungen in Dateien.
Dieser Modus protokolliert nur die Änderungen an Metadaten, während die Änderungen an den Dateien nur mit den Standardverfahren ungefähr alle 30 Sekunden auf die Festplatte geschrieben werden. Dies kann zu einem inkonsistenten Zustand führen: Wenn zum Beispiel eine Datei neue Datenblöcke belegen will, wird dies in den Metadaten entsprechend eingetragen, während die Blöcke aber erst nach der nächsten Synchronisation tatsächlich mit ihren Daten beschrieben werden.
Mit folgendem Befehl ist es möglich, den gewünschten Journaling-Modus zu aktivieren (vergleiche Abschnitt 10.4.10): # mount -t ext3 -o data=writeback /dev/hda2 /daten
443
magnum
Dateisystem verwalten
10.4.6
Das Dateisystem reiserfs
Dieses Dateisystem unterscheidet sich von traditionellen BSD-basierten Dateisystemen, wie zum Beispiel ext2 oder ext3, durch den Einsatz von Baumstrukturen. Das Dateisystem reiserfs speichert die Daten in einem so genannten B-Baum, wobei ein Element des Baumes Knoten genannt wird. Von einem Knoten aus können alle weiteren Knoten erreicht werden. Ein Teilbaum wird aus den Knoten unterhalb eines bestimmten Knotens gebildet. Diese Strukturen werden dynamisch erzeugt und können jederzeit in der Größe angepasst werden, sie unterliegt keiner maximalen Dateianzahl wie ext2 oder ext3. Außerdem skaliert das Dateisystem reiserfs besser und flexibler als ein traditionelles BSD-Dateisystem. Auch das Durchsuchen des Dateisystems geht schneller als bei einer linearen Suche, denn innerhalb eines Baums kann auch bei vielen Dateien in einem Verzeichnis durch wenige Vergleiche nach einem bestimmten Kriterium gesucht werden. Ein Nachteil ist allerdings der höhere Verwaltungsaufwand und die wesentlich komplexere Programmlogik.
10.4.7
Die verschiedenen Dateitypen
Die unterschiedlichen Dateitypen haben verschiedene Informationen in ihren Inodes und Datenblöcken hinterlegt: Typ
Verwendung
Gespeicherte Daten
-
Normale Datei;
Text Binärdaten Grafiken Anwendungsdaten Datenbankdaten
Erstellen mit Texteditoren, Compiler, Anwendungen, Datenbankanwendungen, Befehlen (zum Beispiel touch) d
Verzeichnis; Erstellen mit dem Befehl mkdir
Verzeichnisinformationen: Datei- und Unterverzeichnisnamen und Inode-Nummern
l
Symbolischer Link; Erstellen mit dem Befehl ln –s
Pfadname auf Originaldatei
-
Hard Link – ein weiterer Dateiname für eine bereits vorhandene Datei; Erstellen mit dem Befehl ln
Text Binärdaten Grafiken Anwendungsdaten Datenbankdaten
c
Zeichenorientierte Gerätedatei; Erstellen mit dem Befehl mknod
–
b
Blockorientierte Gerätedatei; Erstellen mit dem Befehl mknod
–
Tab. 10.19: Die verschiedenen Dateitypen eines Linux-Systems
444
Kapitel 10 · Geräteverwaltung
Die meisten in dem Inode zu einer Datei gespeicherten Informationen können mit dem Befehl ls -l ausgegeben werden: $ cd /home/her $ ls -l total 4 drwxr-xr-x 3 her einkauf drwxr-xr-x 5 her einkauf -rw-r--r-- 1 her einkauf drwxr-xr-x 2 her einkauf lrwxrwxrwx 1 her einkauf $ cd /dev $ ls -l total 1 drwxr-xr-x 3 her einkauf drwxr-xr-x 5 her einkauf ... crw-rw---- 1 root video ... brw------- 1 root disk b--------- 1 root root ...
144 128 1031 48 22
Nov Nov Nov Nov Nov
9 9 9 9 9
18:20 18:17 18:18 18:18 18:20
. .. bericht12 finanzamt prot5 -> /einkauf/protokoll-05
144 Nov 9 18:20 . 128 Nov 9 18:17 .. 29,
0 Nov 9 09:15 fb0
2, 0 Nov 9 09:15 fd0 2, 84 Nov 9 09:15 fd0u1040
Es werden der Dateityp, die Zugriffsrechte, der Linkzähler, der Besitzer und die Gruppe, die Dateigröße, das letzte Änderungsdatum und der Dateiname ausgegeben. Bei block- und zeichenorientierten Gerätedateien werden anstelle der Dateigröße die Major- und Minor-Gerätenummer ausgegeben. Das letzte Zugriffsdatum auf eine Datei oder ein Verzeichnis, das ebenfalls in der Inode-Tabelle gespeichert wird, lässt sich mit ls -u ausgeben.
10.4.8
Dateisysteme anlegen
Der Befehl mkfs Mit Hilfe dieses Befehls können neue Dateisysteme auf einem Gerät angelegt werden. Er sollte in der Regel von root verwendet werden, damit andere auch Zugriff auf die Gerätedatei haben. mkfs legt die Struktur des mit der Option -t angegebenen Dateisystems an, wie zum Beispiel Superblock, Backup-Superblöcke, Zylindergruppen usw. Der Befehl ist nur ein Frontend-Programm für die Erstellung des angegebenen Dateisystems. So wird zum Beispiel bei der Angabe -t ext2 dieselbe Routine wie beim Befehl mke2fs verwendet. In der Regel ruft mkfs immer andere Befehle auf, die für das mit -t festgelegte Dateisystem programmiert wurden, dazu gehören unter anderem mkfs.ext2, mkfs.msdos, mkfs.ext3 und mkfs.minix. Die Syntax des Befehls lautet: # mkfs [-option(en)] [dateisystem-optionen] gerätedatei [blöcke]
Für diesen Vorgang darf der verwendete Datenträger nicht gemountet sein.
445
magnum
Dateisystem verwalten
Der Befehl kennt folgende Optionen: Option
Beschreibung
-V
Erzeugt eine ausführliche Ausgabe einschließlich aller Dateisystembefehle, die ausgeführt werden
dateisystem-optionen Übergabe von Dateisystemoptionen der Backend-Befehle; die meisten Backend-Befehle unterstützen diese Optionen: -c Das Gerät wird vor dem Anlegen des Dateisystems auf defekte Blöcke überprüft. -l datei liest die Liste der defekten Blöcke aus datei -v ausführliche Ausgabe -t dateisystemtyp
Gibt den anzulegenden Dateisystemtyp an. Ohne Angabe wird standardmäßig das Dateisystem ext2 verwendet.
Tab. 10.20: Die Optionen des Befehls mkfs
Im nachfolgenden Beispiel wird ein neues ext2-Dateisystem auf der vierten Partition der ersten Festplatte mit einer vorgegebenen Blockgröße erstellt: # mkfs -t ext2 /dev/hda4 1388890
In der Regel ist es heute nicht mehr notwendig, die Blockgröße anzugeben, da die Anzahl der Blöcke automatisch berechnet wird.
Der Befehl mke2fs oder mkfs.ext2 oder mkfs.ext3 Mit diesen Befehlen können Sie ein Gerät als ext2- oder ext3-Dateisystem formatieren. Die Syntax des Befehls lautet: # mke2fs [-option(en)] gerät [blöcke]
oder # mkfs.ext2 [-option(en)] gerät [blöcke]
oder # mkfs.ext3 [-option(en)] gerät [blöcke]
Die Angabe der Blöcke ist optional. Werden sie nicht angegeben, berechnet der Befehl die Blöcke automatisch. Die Verwendung des neueren Dateisystems ext3 oder reiserfs ist dem Dateisystem ext2 aufgrund der bereits beschriebenen Verbesserungen vorzuziehen!
446
Kapitel 10 · Geräteverwaltung
Der Befehl kennt folgende Optionen: Option
Beschreibung
-b
Definiert die Blockgröße in Bytes. Gültige Blockgrößen sind 1.024, 2.048 und 4.096 Byte pro Block. Wird die Option weggelassen, wird die Blockgröße heuristisch auf der Basis der Dateisystemgröße und der erwarteten Verwendung des Dateisystems bestimmt.
blocksize
-c
Überprüft das Gerät auf defekte Blöcke, bevor das Dateisystem angelegt wird
-f fragmentgröße
Definiert die Größe der Fragmente in Blöcken
-F
Erzwingt die Durchführung des Befehls, auch wenn das angegebene Gerät kein blockorientiertes Gerät ist oder gemountet zu sein scheint
-g
Definiert die Anzahl der Blöcke in einer Blockgruppe. Es gibt in der Regel keinen Grund, diesen Parameter zu verwenden, da der Standard für das Dateisystem optimal ist. Die Option wird von Entwicklern verwendet, die Testfälle bearbeiten.
blocks-pro-gruppe
-i
bytes-pro-inode
Definiert den Wert Bytes/Inode, das heißt, es wird ein Inode für jedes byte-pro-inode Byte Plattenplatz angelegt. Je größer der Wert ist, desto weniger Inodes werden angelegt. Dieser Wert darf nicht kleiner als die Blockgröße des Dateisystems sein, da sonst zu viele Inodes erstellt werden. Dieser Wert kann nach der Erstellung des Dateisystems nicht mehr geändert werden.
-j
Erzeugt das Dateisystem mit einem ext3-Journal. Wenn die Option -J nicht angegeben wird, werden Standardjournalparameter verwendet, um ein Journal von geeigneter Größe zu erstellen (abhängig von der Größe des Dateisystems). Diese Option kann nur bei einem Kernel verwendet werden, der ext3 unterstützt.
-J
Erzeugt das ext3-Journal mit Hilfe der angegebenen Optionen, die als eine durch Kommata getrennte Liste übergeben werden. Folgende Journaloptionen werden unterstützt:
journaloption
-size= größe
Erzeugt ein internes Journal (das innerhalb des Dateisystems gespeichert wird) mit der angegebenen Größe (in Megabyte). Die Größe muss mindestens 1.024 Dateisystemblöcke umfassen (das heißt, 1 Mbyte bei der Verwendung von 1-Kbyte-Blöcken und 4 Mbyte bei 4-Kbyte-Blöcken) und darf nicht größer als 102.400 Dateisystemblöcke sein. -device= Weist dem Dateisystem ein blockorientiertes externes-journal Gerät für das Journal zu, das sich außerhalb des eigenen Dateisystems befindet. Das externe Journal muss zuvor mit folgendem Befehl angelegt werden: # mke2fs -O journalgerät externes-journal Das externe Journal muss außerdem mit derselben Blockgröße wie das neue Dateisystem erstellt werden. -l datei
Die defekten Blöcke werden aus der angegebenen Datei gelesen.
-L label
Legt das Label für das Dateisystem fest
-m
reserve-blöcke
Definiert den Prozentsatz der Dateisystemblöcke, die für den Superuser reserviert werden. Der Standardwert beträgt 5 %.
-M dir
Weist dem Dateisystem das zuletzt gemountete Verzeichnis zu
Tab. 10.21: Die Optionen des Befehls mke2fs
447
magnum
Dateisystem verwalten
Option
Beschreibung
-n
Mit dieser Option wird nicht tatsächlich ein Dateisystem angelegt, sondern nur angezeigt, wie das Anlegen durchgeführt würde.
-N
Diese Option überschreibt die Standardberechnung der Inode-Anzahl, die für das Dateisystem reserviert wird. Die Standardberechnung basiert auf der Anzahl der Blöcke und dem Wert Bytes pro Inode.
anzahl-inodes -o
creator-os -O [^]eigenschaft,…
Überschreibt den Standardwert des Felds »Creator OS« des Dateisystems. Normalerweise wird dieses Feld auf das native Betriebssystem des Befehls mke2fs festgelegt. Erzeugt das Dateisystem mit den angegebenen Eigenschaften. Standardmäßig aktivierte Eigenschaften können deaktiviert werden, indem ihnen als Präfix das Zeichen ^ vorangestellt wird. Die Eigenschaften sparse_super und filetype sind standardmäßig ab Linux 2.2 aktiviert. Folgende Eigenschaften werden unterstützt: dir_index filetype has_journal journal_dev sparse_super
verwendet verteilte B-Trees, um die Suchgeschwindigkeit in großen Verzeichnissen zu beschleunigen speichert Dateitypinformationen in Verzeichniseinträgen erzeugt ein ext3-Journal (entspricht der Option –j) erzeugt ein externes ext3-Journal auf dem angegebenen Dateisystem anstelle eines ext2-Dateisystems erzeugt ein Dateisystem mit weniger Backup-Superblocks (spart Platz auf großen Dateisystemen)
-q
Ausführung ohne Ausgabe. Nützliche Option, wenn der Befehl mke2fs in einem Skript verwendet wird
-r revision
Legt die Dateisystemrevision für das neue Dateisystem fest. KernelVersionen bis 1.2 unterstützen nur Revision-0-Dateisysteme. Der Standard ist, Revision-1-Dateisysteme zu erzeugen.
-R raid
Legt RAID-bezogene Optionen für das Dateisystem fest. RAID-Optionen werden als eine durch Kommata getrennte Liste angegeben. Folgende Option wird unterstützt: stride =stripe-größe konfiguriert das Dateisystem für einen RAID-Array
mit der in Blöcken angegebenen Stripe-Größe
-S
Schreibt nur den Superblock und Gruppenbezeichner. Diese Option ist nützlich, wenn sowohl Superblock als auch alle Backup-Superblöcke beschädigt sind. Damit werden Superblock und Gruppenbezeichner neu initialisiert, wobei die Inode-Tabelle und die Block- und Inode-Bitmaps nicht verändert werden. Nach dieser Option sollte sofort das Programm e2fsck gestartet werden.
-T fs-typ
Definiert die Verwendung des Dateisystems, damit die Dateisystemparameter optimal eingestellt werden können. Unterstützte Dateisystemtypen sind: news largefile largefile4
-v
ein Inode pro 4 Kbyte Block ein Inode pro Mbyte ein Inode pro 4 Mbyte
Ausführliche Informationen werden bei der Ausführung angezeigt.
Tab. 10.21: Die Optionen des Befehls mke2fs (Forts.) Im Beispiel wird ein neues ext3-Dateisystem auf dem Gerät /dev/hda2 angelegt: # mke2fs -j /dev/hda2
448
Kapitel 10 · Geräteverwaltung
Der Befehl tune2fs Bei einem ungemounteten Dateisystem lässt sich der Befehl verwenden, um die Leistung sowie die Parameter der Festplatte zu ändern. Die Syntax des Befehls lautet: # mke2fs [-option(en)] gerät
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c max-zähler
Definiert die maximale Anzahl von Mountvorgängen zwischen zwei Dateisystemüberprüfungen. Wenn der Wert 0 ist, ignorieren der Befehl und der Kernel, wie oft das Filesystem gemountet wurde.
-C mount-zahl
Legt fest, wie oft das Dateisystem gemountet wurde. Diese Option kann in Verbindung mit -c verwendet werden, um ein Überprüfen des Dateisystems beim nächsten Systemstart zu erzwingen.
-e
Ändert das Verhalten des Kernels, wenn Fehler entdeckt werden. In allen Fällen wird ein Dateisystemfehler den Befehl dazu veranlassen, das Dateisystem beim nächsten Start zu überprüfen. Es gibt folgende Fehlerverhalten: continue mit der normalen Ausführung fortfahre remount-ro mountet das Dateisystem erneut, aber nur lesbar panic verursacht eine Kernel-Panic-Meldung
fehler-verhalten
-f
Erzwingt, dass der Befehl vollständig durchgeführt wird, auch wenn Fehler auftreten. Diese Option kann beim Entfernen der Eigenschaft has_journal von einem Dateisystem mit einem externen Journal sehr nützlich sein, wenn das externe Journal nicht verfügbar ist. Es sollte dabei aber beachtet werden, dass es zu extremen Datenverlusten und einem korrupten Dateisystem führen kann, wenn ein externes Journal von einem nicht sauber ungemounteten Dateisystem entfernt wird, bevor das externe Journal wieder eingespielt wird.
-g group
Legt die Gruppe fest, die reservierte Dateisystemblöcke verwenden darf. Die Eingabe kann mit dem Gruppennamen oder der GID erfolgen.
-i intervall [d|w|m]
Legt die maximale Zeitspanne in Tagen, Wochen oder Monaten zwischen zwei Dateisystemüberprüfungen fest. Der nachfolgende Buchstabe d oder keine Angabe eines nachfolgenden Buchstabens stehen für Tage, w für Wochen und m für Monate. Der Wert 0 deaktiviert das zeitabhängige Überprüfen.
-j
Fügt ein ext3-Journal dem Dateisystem hinzu. Wird die Option -J nicht verwendet, werden die standardmäßigen Journalparameter angewandt, um ein Journal mit geeigneter Größe zu erzeugen.
-J
Erzeugt das ext3-Journal mit Hilfe der angegebenen Optionen, die als eine durch Kommata getrennte Liste übergeben werden. Folgende Journaloptionen werden unterstützt:
journaloption
-size= größe
-device=
Erzeugt ein internes Journal (das innerhalb des Dateisystems gespeichert wird) mit der angegebenen Größe (in Megabyte). Die Größe muss mindestens 1.024 Dateisystemblöcke umfassen (das heißt, 1 Mbyte bei der Verwendung von 1-KbyteBlöcken und 4 Mbyte bei 4-Kbyte-Blöcken) und darf nicht größer als 102.400 Dateisystemblöcke sein. Es muss ausreichend freier Speicherplatz im Dateisystem vorhanden sein, um ein Journal der gewünschten Größe zu erzeugen. externes-journalWeist dem Dateisystem ein blockorientiertes Gerät für das Journal zu, das sich außerhalb des eigenen Dateisystems befindet. Das externe Journal muss zuvor mit folgendem Befehl angelegt werden: # mke2fs -O journalgerät externes-journal
Tab. 10.22: Die Optionen des Befehls tune2fs
449
magnum
Dateisystem verwalten
Option
Beschreibung
-l
Listet die Inhalte des Superblocks des Dateisystems auf
-L label
Legt das Label für das Dateisystem fest. Es kann eine Länge von 16 Zeichen haben, werden mehr Zeichen verwendet, werden diese abgeschnitten und es wird eine Warnmeldung ausgegeben.
-m
reserve-blöcke
Definiert den Prozentsatz der Dateisystemblöcke, die für den Superuser reserviert werden
-M dir
Weist dem Dateisystem das zuletzt gemountete Verzeichnis zu
-n
Mit dieser Option werden die Parameter der Festplatte nicht tatsächlich geändert, sondern nur angezeigt, wie die Änderung durchgeführt wird.
-o [^]
Definiert oder entfernt die standardmäßigen Mountoptionen in Dateisystemen. Standardmountoptionen können durch Mountoptionen überschrieben werden, die entweder in der Datei /etc/fstab eingetragen oder an der Befehlszeile mit dem Befehl mount angegeben werden. Ältere Kernel (vor 2.4.20) unterstützen diese Eigenschaft nicht.
mount-option
Mehrere Mountoptionen können gleichzeitig mit einer durch Kommata getrennten Liste angegeben werden. Mountoptionen, die als Präfix das Zeichen ^ haben, werden im Superblock des Dateisystems entfernt, und die Optionen ohne dieses Präfix oder mit einem vorangestellten Zeichen + werden dem Dateisystem hinzugefügt. Die folgenden Mountoptionen können definiert oder entfernt werden: aktiviert den Debugging-Code für das Dateisystem emuliert ein BSD-Verhalten beim Erzeugen von neuen Dateien: Diese erhalten die GID des Verzeichnisses, in dem sie erzeugt werden. Dieses Verhalten wird bei System V-Systemen nur durch das setgid-Bit erzeugt (vergleiche Kapitel 8). user_xattr aktiviert benutzerspezifische erweiterte Attribute acl aktiviert die POSIX Access Control-Listen uid16 deaktiviert 32 Bit lange UIDs und GIDs. Diese Option ist zur Kompatibilität mit älteren Kerneln von Bedeutung. journal_data Wenn das Dateisystem mit aktiviertem JournalingMechanismus gemountet ist, werden alle Daten (und nicht nur Metadaten) in das Journal eingestellt, bevor sie in das Hauptdateisystem geschrieben werden. journal_data_ordered Wenn das Dateisystem mit aktiviertem JournalingMechanismus gemountet ist, wird erzwungen, dass alle Daten direkt auf das Hauptdateisystem geschrieben werden, bevor deren Metadaten in das Journal eingetragen werden. journal_data_writeback Wenn das Dateisystem mit aktiviertem JournalingMechanismus gemountet ist, können Daten in das Hauptdateisystem geschrieben werden, nachdem deren Metadaten in das Journal eingetragen wurden. Dies kann den Durchsatz verbessern, aber es können nach einem Systemabsturz und einer Journal-Wiederherstellung auch alte Daten wieder auftauchen. debug bsdgroups
Tab. 10.22: Die Optionen des Befehls tune2fs (Forts.)
450
Kapitel 10 · Geräteverwaltung
Option
Beschreibung
-O [^]eigenschaft,…
Aktiviert oder entfernt im Dateisystem die angegebenen Eigenschaften. Es können mehrere Eigenschaften in einer durch Kommata getrennten Liste übergeben werden. Standardmäßig aktivierte Eigenschaften können deaktiviert werden, indem ihnen als Präfix das Zeichen ^ vorangestellt wird. Folgende Eigenschaften können zugewiesen oder entfernt werden: verwendet zerlegte verteilte B-Trees, um die Suchgeschwindigkeit in großen Verzeichnissen zu beschleunigen filetype speichert Dateitypinformationen in Verzeichnis-einträgen has_journal verwendet ein Journal, um die Dateisystemkonsistenz auch nach unsauberem Herunterfahren des Systems zu gewährleisten (entspricht der Option -j) sparse_super erzeugt ein Dateisystem mit weniger Backup-Superblocks (spart Platz auf großen Dateisystemen) Die Eigenschaften werden standardmäßig erst ab Linux 2.2 unterstützt. Wenn die Optionen sparse_super oder filetype aktiviert oder deaktiviert werden, muss der Befehl e2fsck aufgerufen werden, damit das Dateisystem in einen konstanten Zustand gelangt. dir_index
-r reserve-blocks Stellt die Anzahl der reservierten Blöcke des Dateisystems ein -s [0|1]
-T letzteprüfung
-u benutzer
Aktiviert oder deaktiviert die Option sparse_super. Die aktivierte Option spart Festplattenplatz auf sehr großen Dateisystemen (entspricht -O sparse_super). Stellt die Zeit ein, zu der das Dateisystem zum letzten Mal durch den Befehl
e2fsck überprüft wurde. Das Format entspricht dem internationalen
Datumsformat mit einer optionalen Zeitangabe: YYYYMMDD [[HHMM]SS].
Definiert den Benutzer, der die reservierten Blöcke des Dateisystems verwenden darf. Die Angabe kann mit dem Benutzernamen oder der UID erfolgen.
Tab. 10.22: Die Optionen des Befehls tune2fs (Forts.)
Der nachfolgende Befehl stellt den Prozentsatz des reservierten Dateisystems auf 7 % ein und erlaubt die Verwendung des reservierten Bereichs der Gruppe admin für das Gerät /dev/hda3: # tune2fs –m 7 -g admin /dev/hda3
Im nächsten Beispiel wird das Verhalten des Kernels im Fehlerfall für das Dateisystem /dev/hda1 neu eingestellt: # tune2fs –e continue /dev/hda1
Im nächsten Beispiel wird ein delt:
ext2-Dateisystem
in ein
ext3-Dateisystem
umgewan-
# tune2fs –j /dev/hda1 Creating journal inode: done This filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
451
magnum
Dateisystem verwalten
Der Befehl mkreiserfs Das Dateisystem reiserfs kann mit dem Befehl mkreiserfs erstellt werden. Die Syntax lautet: mkreiserfs [-option(en)] gerät
Der Befehl kennt folgende Optionen: Option
Beschreibung
-b oder --block-size N
N ist die Blockgröße Bytes. Im Moment ist nur 4096 möglich.
-d
Diese Option veranlasst mkreiserfs während des Anlegens des Dateisystems, Debug-Informationen auszugeben.
-f
Dies zwingt mkreiserfs, auch dann fortzufahren, wenn ein Gerät entweder die ganze Festplatte oder noch gemountet oder kein blockorientiertes Gerät ist. Wird es mehr als einmal angegeben, werden keine Bestätigungen mehr verlangt.
--format FORMAT
FORMAT legt das Format für das neue Dateisystem fest. Es kann 3.5 und 3.6 gewählt werden, Wird kein Format angegeben, wird 3.6 verwendet, wenn die Kernel-Version 2.4 oder höher ist.
-h oder --hash HASH
HASH ist der Name der Hash-Funktionsdatei, nach der in Verzeichnissen sortiert wird. Möglich sind r5, rupasoy und tea. r5 ist Standard.
-j oder --journal-device FILE
FILE ist der Name des blockorientierten Geräts, auf dem das Dateisystem das Journal ablegen soll.
-l label oder --label label
Vergibt für das Dateisystem ein Label mit maximal 16 Zeichen
-o oder --journal-offset N
N ist der Startwert, an dem das Journal beginnt, wenn es sich auf einem separaten Gerät befindet. Standard ist 0.
-q oder --quiet
Es werden keine Meldungen ausgegeben.
-s oder --journal-size N
N ist die Größe des Journals in Blöcken. Wenn das Journal sich auf einem separaten Gerät befindet, entspricht seine Größe standardmäßig der Anzahl der Blöcke des Geräts. Befindet es sich im Hostgerät, ist die standardmäßige Größe 8.193 und die maximale Größe ist 32.749 bei einer Blockgröße von 4 Kbyte.
-t oder --transaction-max-size N
N ist die maximale Transaktionsgröße des Journals. Der Standard und maximale Wert sind 1.024 Blöcke. Es sollte kleiner als die halbe Größe des Journals sein. Wird es falsch eingestellt, dann wird es automatisch korrigiert.
-u oder --uuid UUID
Definiert die universelle, eindeutige ID (UUID) des Dateisystems auf UUID
Tab. 10.23: Die Optionen des Befehls mkreiserfs
452
Kapitel 10 · Geräteverwaltung
Im folgenden Beispiel wird das Dateisystem reiserfs auf /dev/hda7 angelegt: # mkreiserfs /dev/hda7 ... Format 3.6 with standard journal Count of blocks on the device: 1411297 Number of blocks consumed by mkreiserfs formatting process: 8352 Blocksize: 4096 Hash function used to sort names: "r5" Journal Size 8193 blocks (first block 18) Journal Max transaction length 1024 inode generation number: 0 UUID: c59697c6-310e-4ef1-9452-5b47fcae9275 ATTENTION: YOU SHOULD REBOOT AFTER FDISK! ALL DATA WILL BE LOST ON '/dev/hda5'! Continue (y/n):y Initializing journal - 0%....20%....40%....60%....80%....100% Syncing..ok Please visit www.namesys.com for information about ReiserFS sponsors
10.4.9
Dateisystemgröße verändern
Die Größe eines Dateisystems kann nur im Rahmen des verfügbaren Festplattenplatzes geändert werden. Die Vorgehensweise dazu ist: Vorgang
1. Schritt
2. Schritt
Vergrößern
Partition vergrößern; dies ist nur Dateisystem an die neue Größe anpassen; möglich, wenn direkt hinter der dazu wird der entsprechende Befehl ohne Partition noch freier Platz ist oder Parameter aufgerufen. das Dateisystem auf einem Logical Volume liegt.
Verkleinern
Partitionsgröße an die neue DateisystemDateisystem verkleinern; dazu wird der entsprechende Befehl mit größe anpassen; dabei darf die Partition Größenangabe aufgerufen. nicht kleiner als das Dateisystem sein.
Tab. 10.24: Dateisystemgröße verändern
Die Dateisystemgröße kann mit den hier vorgestellten Befehlen nur bei nicht aktiven Dateisystemen geändert werden. Für gemountete Dateisysteme kann der Befehl ext2online verwendet werden, der aber nicht standardmäßig auf jedem Linux-System vorhanden ist. Physikalische Festplatten können zu einer so genannten Volume Group zusammengefasst werden, um daraus dynamisch Partitionen oder so genannte Logical Volumes anzulegen, auf denen wieder Dateisysteme angelegt werden. Dieser Vorgang wird auch als Logical Volume Management (LVM) bezeichnet.
453
magnum
Dateisystem verwalten
Der Befehl resize2fs Bei den Dateisystemen ext2 und ext3 kann der Befehl um die Größe zu verändern. Die Syntax ist wie folgt:
resize2fs
verwendet werden,
resize2fs gerät [größe-in-blöcken]
Die Angabe der Größe in Blöcken ist nur bei einer Verkleinerung notwendig. Im folgenden Beispiel wird die Partition /dev/hda3 mit dem Befehl fdisk vergrößert und anschließend das Dateisystem mit dem Befehl resize2fs angepasst: # fdisk /dev/hda ... Command (m for help): p Disk /dev/hda: 265 heads, 66 Units = cylinders of 16365 * Device Boot Start /dev/hda1 * 1 /dev/hda2 51 /dev/hda3 182
sectors, 7876 cylinders 512 bytes End Blocks Id System 50 401593+ 83 Linux 181 1052257+ 82 Linux swap 1787 12490445 83 Linux
Command (m for help): d Partition number (1-5): 5 Command (m for help): n First cylinder (1788-7876, default 1788): Using default value 1788 Last cylinder or +size or +sizeM or +sizeK (1788-7876, default 7876): 4200 Command (m for help): p Disk /dev/hda: 265 heads, 65 Units = cylinders of 16365 * Device Boot Start /dev/hda1 * 1 /dev/hda2 51 /dev/hda3 182
sectors, 7876 cylinders 512 bytes End Blocks Id System 50 401593+ 83 Linux 181 1052257+ 82 Linux swap 4200 17490445 83 Linux
Command (m for help): w The partition table has been altered! ...
Nach dem Verändern der Partitionstabelle muss das System zuerst neu gebootet werden. # resize2fs /dev/hda3 resize2fs 1.26 (3-Feb-2002) The filesystem on /dev/hda3 is now 17490445 blocks long.
Der Befehl resize_reiserfs Mit diesem Befehl kann die Größe eines Dateisystems reiserfs verändert werden. Die Syntax ist wie folgt: resize_reiserfs [ -s [+|–]größe-in-bytes[K|M|G] ] gerät
Auch in diesem muss nur bei einer Verkleinerung eine neue Größe mit Hilfe der Option -s in Kbyte, Mbyte oder Gbyte festgelegt werden. Im folgenden Beispiel wird das Dateisystem an eine bereits vergrößerte Partition angepasst:
454
Kapitel 10 · Geräteverwaltung
# resize_reiserfs /dev/hda7 resize_reiserfs 3.x.1b (2002) ReiserFS report: blocksize 4096 block count 8347500 (3382685) free blocks 8269043 (3291981) bitmap block count 276 (98) Syncing..done
Der Befehl guessfstype Dieser Befehl gibt den Dateisystemtyp eines Geräts zurück. Die Syntax des Befehls lautet: # guessfstype gerät
Dies ist ein Befehl, der nur unter SUSE Linux implementiert ist. In diesem Beispiel wird der Dateisystemtyp des Dateisystems /dev/hda2 ausgegeben: # guessfstype /dev/hda2 /dev/hda2 *appears* to be: reiserfs
10.4.10 Dateisysteme einbinden Nachdem ein Dateisystem angelegt wurde, kann das Betriebssystem noch nicht darauf zugreifen, da es noch nicht im Verzeichnisbaum eingebunden ist. Um ein neues Dateisystem zu verwenden, muss es im letzten Schritt noch gemountet werden. Mounten bedeutet, dass die Dateien und Verzeichnisses eines Gerätes, zum Beispiel einer anderen Festplattenpartition, mit dem Gerät, auf dem sich das rootVerzeichnis befindet, verbunden werden. Die folgende Abbildung zeigt zwei Festplattenpartitionen mit unterschiedlichen Verzeichnissen und Dateien:
und
/dev/hdb4
Die Verzeichnisse und Dateien von /dev/hdb4 sollen unter das Verzeichnis /dev/hda2 eingehängt werden. Dies geschieht mit dem Befehl:
/home von
/dev/hda2
Bild 10.13: Zwei Dateisysteme mit Dateien und Verzeichnissen
# mount /dev/hdb4 /home
455
Dateisystem verwalten
magnum
Anschließend sieht der Verzeichnisbaum aus Benutzersicht folgendermaßen aus:
Bild 10.14: Ein Dateisystem mounten
Der Befehl mount Mit Hilfe dieses Befehls kann root Dateisysteme in den Verzeichnisbaum einhängen, damit Benutzer sie verwenden können. Alle gemounteten Dateisysteme werden in die Datei /etc/mtab eingetragen. Die Syntax des Befehls lautet: # mount [-optionen] gerät mountpoint
Das Verzeichnis, das als Mountpoint dient, muss bereits angelegt sein. Es sollte leer sein, denn sobald es als Mountpoint verwendet wird, ist sein früherer Inhalt nicht mehr sichtbar. Dateisysteme mit einem Eintrag in /etc/fstab können einfach durch Angabe des Namens des Mountpoints oder der Ressource gemountet werden. Der Befehl kennt folgende Optionen: Option
Erklärung
-a
Alle Dateisysteme mit einem Eintrag in der Datei /etc/fstab werden gemountet, mit Ausnahme der Dateisysteme mit der Option noauto.
--bind
Mountet eine Ressource an einer anderen Stelle erneut ein, so dass der Inhalt der Ressource in zwei unterschiedlichen Verzeichnissen zugleich zur Verfügung steht. Die Syntax lautet: # mount --bind verz_alt verz_neu
-F
(In Verbindung mit -a) Initiiert parallele Ausführung des Mountens für jedes Gerät. Dadurch werden die Mountvorgänge auf verschiedenen Geräten oder verschiedenen NFS-Servern parallel durchgeführt. Dies hat Geschwindigkeitsvorteile, da auch NFS-Timeouts parallel laufen.
-f
Simuliert einen Mountvorgang, wodurch in Verbindung mit der Option -v die Geräte und das Mountverzeichnis überprüft werden können
-l
Fügt die Labels von ext2, ext3 und XFS der Mountausgabe hinzu
Tab. 10.25: Die Optionen des Befehls mount
456
Kapitel 10 · Geräteverwaltung
Option
Erklärung
-L label
Mountet die Partition mit dem angegebenen Label
--move
Verschiebt eine gemountete Ressource in ein anderes Verzeichnis. Die Syntax lautet: # mount --move verz_alt verz_neu
-n
Mountet, ohne einen Eintrag in der Datei /etc/mtab zu hinterlegen. Dies ist zum Beispiel notwendig, wenn /etc ein nur lesbares Dateisystem ist.
Definiert Mountoptionen, die durch Kommata getrennt angegeben werden müssen optionen (siehe nächste Tabelle) -o
Wird in Verbindung mit der Option -a verwendet, um die Anzahl der Dateisysteme, optionen die gemountet werden, zu begrenzen. So werden durch den Befehl -O
# mount -a -O no_netdev
zum Beispiel alle Dateisysteme gemountet, außer denen, die als Mountoption _netdev in der Datei /etc/fstab angegeben haben. -r
Das Dateisystem wird als nur lesbar (read-only) gemountet (entspricht der Option -o ro)
-s
Toleriert ungenaue oder unzutreffende Mountoptionen anstatt abzubrechen. Diese Angabe führt dazu, dass Mountoptionen ignoriert werden, die nicht von einem Dateisystemtyp unterstützt werden. Die Option wird nicht von allen Dateisystemen unterstützt. Sie soll in erster Linie den Automounter von Linux unterstützen, der auf autofs basiert.
-t typ
Definiert den Typ des zu mountenden Dateisystems. Unterstützte Dateisysteme sind im Moment: adfs, affs, autofs, coda, cramfs, devpts, efs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, nfsd, ntfs, proc, qnx4, ramfs, reiserfs, romfs, smbfs, sysv (entspricht coherent und xenix, die aber zukünftig nicht mehr zur Verfügung stehen), tmpfs, udf, ufs, usbfs, umsdos, vfat, xfs, xiafs.
-v
Ausführliche Anzeige aller Informationen
-V
Anzeige des Befehls, aber keine wirkliche Durchführung
-w
Das Dateisystem wird als beschreib- und lesbar (read/write) gemountet, was der Standard ist (entspricht der Option -o rw).
Tab. 10.25: Die Optionen des Befehls mount (Forts.)
Es gibt sehr viele verschiedene Mountoptionen, die Dateisystemen zugewiesen werden können: Option
Beschreibung
async
Alle Ein- und Ausgabeoperationen des Dateisystems sollen asynchron ausgeführt werden.
atime
Protokolliert das letzte Zugriffsdatum auf Dateien und Verzeichnisse in der InodeTabelle mit (Standardeinstellung)
auto
Kann mit der Option -a gemountet werden
defaults
Verwendung der Standardoptionen rw, suid, dev, exec, auto, nouser und async
dev
Interpretiert alle zeichen- oder blockorientierten Gerätedateien im Dateisystem
Tab. 10.26: Mögliche Mountoptionen
457
Dateisystem verwalten
Option
Beschreibung
dirsync
Alle Verzeichnisaktualisierungen innerhalb des Dateisystems werden synchron durchgeführt.
_netdev
Das Dateisystem befindet sich auf einem Gerät, das Netzwerkzugriff erfordert (diese Option wird verwendet, um das System davon abzuhalten, diese Dateisysteme zu mounten, bevor das Netzwerk auf dem System eingerichtet ist).
noatime
Verhindert, dass das Datum des letzten Zugriffs auf Dateien und Verzeichnisse in der Inode-Tabelle mitprotokolliert wird, wodurch die Performance etwas erhöht wird. Diese Einstellung kann bei Dateisystemen verwendet werden, wo das Zugriffsdatum nicht von Bedeutung ist. Sie spart außerdem Strom.
noauto
Kann nur explizit gemountet werden (das heißt, die Option -a kann das Dateisystem nicht mounten)
nodev
Interpretiert keine zeichen- oder blockorientierten Gerätedateien im Dateisystem
noexec
Lässt nicht zu, dass irgendwelche Binärdateien im gemounteten Dateisystem ausgeführt werden. Diese Option kann für einen Server nützlich sein, für den Dateisysteme gemountet sind, die Binärdateien enthalten, die nicht für seine Hardwarearchitektur lauffähig sind.
intr
Lässt Interrupts mit der Tastenkombination (Ctrl)+(C) zu, mit deren Hilfe auch Prozesse beendet werden können, die auf gesperrte Dateisysteme zugreifen (Standardeinstellung)
nosuid
Verhindert die Ausführung von Programmen mit SetUID- oder SetGID-Bit
nouser
Lässt nicht zu, dass ein normaler Benutzer (das heißt, nicht root), das Dateisystem mountet. Dies ist eine Standardeinstellung.
remount
Versucht, ein bereits gemountetes Dateisystem erneut zu mounten. Diese Option wird in der Regel verwendet, um die Mountoptionen eines Dateisystems zu ändern, zum Beispiel, um ein nur lesbares Dateisystem in ein beschreibbares System zu ändern. Die Option verändert weder das Gerät noch den Mountpoint.
ro
Mountet das Dateisystem nur mit Lesezugriff (read-only)
rw
Mountet das Dateisystem mit Lese- und Schreibzugriff (read-write)
suid
Lässt die Ausführung von Programmen mit SetUID- oder SetGID-Bit zu
sync
Alle Ein- und Ausgabeoperationen des Dateisystems sollen synchron ausgeführt werden.
user
Erlaubt einem normalen Anwender, das Dateisystem zu mounten. Der Name des mountenden Benutzers wird in die Tabelle mtab geschrieben, damit er das Dateisystem auch wieder unmounten kann. Diese Option setzt die Optionen noexec, nosuid und nodev voraus (solange diese nicht von nachfolgenden Optionen überschrieben werden, wie zum Beispiel user, exec, dev, suid).
users
Erlaubt jedem normalen Anwender, das Dateisystem zu mounten und zu unmounten. Diese Option setzt zugleich die Optionen noexec, nosuid und nodev voraus (solange diese nicht von nachfolgenden Optionen überschrieben werden, wie zum Beispiel user, exec, dev, suid).
Tab. 10.26: Mögliche Mountoptionen (Forts.)
458
magnum
Kapitel 10 · Geräteverwaltung
Wird der Befehl systeme an:
mount
ohne Optionen verwendet, zeigt er alle gemounteten Datei-
# mount /dev/hda2 on / type ext3 (rw,acl) proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) tmpfs on /dev/shm type tmpfs (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) pc3lsu:/home/networkdata on /networkdata type nfs (rw,acl,bg,addr=192.162.168.54)
Mit dem folgenden Befehl wird das Dateisystem /dev/sda2 mit den Optionen den Mountpoint /export/home gemountet:
noa-
time und nosuid unter
# mount –o noatime,nosuid /dev/sda2 /export/home
Wenn ein zu mountendes Dateisystem bereits einen Eintrag in der Datei /etc/fstab besitzt, genügt es, wenn an der Befehlszeile entweder nur der Name des Dateisystems oder des Mountpoints genannt wird. Die fehlenden Angaben werden dann der Datei entnommen. Im nachfolgenden Beispiel wird das Dateisystem /opt, das bereits einen Eintrag in der Datei /etc/fstab hat, mit den Optionen suid und nouser gemountet: # mount –o nouser,suid /opt
Eine DOS-formatierte Diskette kann mit folgendem Befehl manuell gemountet werden: # mount –t msdos /dev/fd0 /floppy
Der folgende Befehl mountet alle Dateisysteme, die in der Datei tragen sind, mit Ausnahme derer vom Typ msdos und ext:
/etc/fstab
einge-
# mount -a -t nomsdos,ext
Die Optionen -t und -O wirken kumulativ, daher mountet der nächste Befehl nur alle ext2-Dateisysteme mit der Option _netdev und nicht alle Dateisysteme, die entweder vom Typ ext2 sind oder die Option _netdev zugewiesen haben: # mount -a -t ext2 -O _netdev
Eine CD-ROM kann manuell auf folgende Weise gemountet werden: # mount –t iso9660 –o ro /dev/cdrom /cdrom
Die Datei /etc/fstab Die Datei /etc/fstab enthält alle Dateisysteme, die immer wieder, in der Regel beim Booten des Systems, gemountet werden sollen. Dabei können gleichzeitig die gewünschten Mountoptionen bestimmt werden: # cat /etc/fstab /dev/hda2 / /dev/cdrom /media/cdrom devpts /dev/pts /dev/fd0 /media/floppy proc /proc usbdevfs /proc/bus/usb /dev/hda1 swap pcl3:/network /network
ext3 auto devpts auto proc usbdevfs swap nfs
usrquota,acl,defaults ro,noauto,user,exec defaults noauto,user,sync defaults noauto pri=42 acl,defaults,bg
1 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0
459
Dateisystem verwalten
magnum
Neben den regulären Dateisystemen und den Swap-Bereichen finden sich hier meist auch Einträge zum Prozessdateisystem /proc, dem Dateisystem usbdevfs für Zugriffe auf USB-Geräte und die Unix98-konformen Terminals /dev/pts. Ab der Kernel-Version 2.6 ist auch das Dateisystem sysfs eingetragen. Dabei handelt es sich um ein virtuelles Dateisystem, eine Ergänzung zum Dateisystem /proc auf der Basis des neuen Treibermodells LDM (Linux Device Model). Jeder Mounteintrag steht in einer eigenen Zeile mit sechs Feldern, die durch mindestens ein Leerzeichen getrennt sein müssen.
쮿
Feld 1: Name der zu mountenden Ressource
쮿
Feld 2: Angabe des Mountpoints
쮿
Feld 3: Dateisystemtyp (zum Beispiel ext3, nfs oder proc)
쮿
Feld 4: Mountoptionen (siehe Befehl mount)
쮿
Feld 5: Eine Nummer, die festlegt, ob das Dateisystem bei einer Datensicherung mit dem Befehl dump gesichert werden soll
쮿
Feld 6: Eine Nummer, die festlegt, in welcher Reihenfolge der Befehl Dateisysteme prüfen soll
fsck
die
Besonders bei USB-Geräten, bei denen die Gerätebezeichnung einmal /dev/sda und einmal /dev/sdb usw. lautet, kann ein Dateisystemlabel nützlich sein, das in der Spalte »Mountoptionen« oder beim Befehl mount mit LABEL=label angegeben wird.
Die Datei /etc/mtab Alle aktuell gemounteten Dateisysteme werden in diese Datei einschließlich ihrer Optionen automatisch von Linux eingetragen. Wird ein Dateisystem ungemountet, erfolgt eine automatische Löschung des entsprechenden Eintrags. Die Tabelle sollte auf keinen Fall von Hand bearbeitet werden. Der Aufbau der Tabelle sieht folgendermaßen aus: # cat /etc/mtab /dev/hda2 / ext3 rw,usrquota,acl 0 0 proc /proc proc rw 0 0 devpts /dev/pts devpts rw,mode=0620,gid=5 0 0 tmpfs /dev/shm tmpfs rw 0 0 usbdevfs /proc/bus/usb usbdevfs rw 0 0 pclsu3:/home/network /network nfs rw,acl,bg,addr=192.165.171.44 0 0
Die Tabelle listet die Bezeichnung der gemounteten Ressource auf, anschließend das Verzeichnis bzw. den Mountpoint, an dem das Dateisystem eingehängt wurde, und den Dateisystemtyp (ext3, proc, nfs usw.). Es folgen die Mountoptionen und eine Nummer, die festlegt, ob das Dateisystem bei einer Datensicherung mit dem Befehl dump gesichert werden soll, sowie eine Nummer, die festlegt, in welcher Reihenfolge der Befehl fsck die Dateisysteme prüfen soll. Eine etwas übersichtlichere Ausgabe des Inhalts der Datei /etc/mtab erhalten Sie, wenn Sie den Befehl mount ohne Option verwenden.
460
Kapitel 10 · Geräteverwaltung
Der Befehl umount Der Befehl umount wird verwendet, um Dateisysteme zu unmounten, das heißt, aus dem Verzeichnisbaum wieder auszuhängen. Gleichzeitig wird der Eintrag in der Datei /etc/mtab gelöscht. Für bestimmte Verwaltungstätigkeiten ist es unbedingt erforderlich, das Dateisystem zuvor zu unmounten, wie zum Beispiel bei der Durchführung des Befehls fsck. Sie können dem Befehl entweder den Namen des Dateisystems oder des Mountpoints als Argument übergeben. Die Syntax des Befehls lautet: # umount [-option(en)] gerät | mountpoint
Der Befehl kennt folgende Optionen: Option
Erklärung
-a
Alle Dateisysteme mit einem Eintrag in der Datei /etc/mtab werden ungemountet (ab Version 2.7 des Befehls wird das Dateisystem proc nicht ungemountet).
-d
Falls es sich bei dem ungemounteten Gerät um ein Loop-Device handelt, soll auch dieses Loop-Device freigegeben werden.
-f
Erzwingt das Unmounten trotz der Fehlermeldung »Device busy«. Dies kann im Fall eines nicht erreichbaren NFS-Dateisystems nützlich sein. Die Option wird erst ab Kernel-Version 2.1.116 unterstützt.
-l
»Gemütliches Unmounten« (lazy umount). Hängt das Dateisystem sofort aus der Verzeichnishierarchie aus und bereinigt alle Bezüge auf das Dateisystem, sobald es nicht mehr verwendet wird. Die Option wird erst ab Kernel-Version 2.4.11 unterstützt.
-n
Unmountet, ohne die Datei /etc/mtab zu verwenden
Bewirkt, dass die Aktionen nur für Dateisysteme vorgenommen werden, denen optionen die angegebenen Optionen in der Datei /etc/fstab zugewiesen wurden. Mehrere Aktionen können in einer durch Kommata getrennten Liste übergeben werden. Eine Option mit einem Präfix no bezeichnet die Optionen, für die keine Aktionen vorgenommen werden. -O
-r
Im Fall, dass das Unmounten fehlschlägt, wird versucht, das Dateisystem als nur lesbar (read-only) zu mounten.
-t typ
Bewirkt, dass die Aktionen nur für Dateisysteme des angegebenen Typs durchgeführt werden. Mehrere Dateisystemtypen können in einer durch Kommata getrennten Liste übergeben werden. Erhält die Dateisystemliste ein vorangestelltes no, werden die Aktionen nur für die Dateisystemtypen durchgeführt, die nicht angegeben werden.
-v
Ausführliche Anzeige aller Informationen
Tab. 10.27: Die Optionen des Befehls umount
Ein Loop-Device ist eine Einrichtung, mit der es möglich ist, eine Datei wie ein Gerät zu verwenden. Aus Benutzersicht scheint es, als würde auf ein Gerät und nicht auf eine Datei zugegriffen werden. Dies kann zum Beispiel bei einem CD-Server eingesetzt werden: Dazu kann der Inhalt einer CD-ROM mit Hilfe des Befehls dd beispielsweise in eine Datei cdinhalt1.iso geschrieben und anschließend die Datei auf die Gerätedatei /dev/loop0 gemountet werden.
461
magnum
Dateisystem verwalten
In diesem Beispiel wird das Dateisystem ungemountet, das unter dem Mountpoint /home eingebunden wurde, wobei für den Fall, dass der Versuch, unzumounten, fehlschlägt, das Dateisystem nur noch lesbar gemountet wird: # umount -r /home
Ein Dateisystem, das gerade von einem Benutzer oder einem Prozess verwendet wird, kann nicht mit diesem Befehl ungemountet werden: # umount /opt umount: /opt: device is busy
Sie können nun mit Hilfe des Befehls fuser, der auch in diesem Abschnitt erläutert wird, feststellen, welche Prozesse oder Benutzer noch auf dem Dateisystem aktiv sind, und gegebenenfalls das Unmounten mit der Option –f erzwingen: # umount -f /opt
Der Befehl fuser Dieser Befehl stellt fest, welche Benutzer oder Prozesse noch auf einem Dateisystem, das ungemountet werden soll, aktiv sind. Die Syntax des Befehls lautet: # fuser [-option(en)] [ datei(en) | dateisystem(e) ]
Der Befehl gibt die Prozess-IDs von allen Prozessen aus, die die angegebenen Dateien oder Dateisysteme verwenden. Dabei wird an jede Prozess-ID ein Buchstabe angehängt, der die Zugriffsart bezeichnet. Die Kennzeichen der Ausgabe haben folgende Bedeutung: Kennzeichen
Erklärung
c
Der Prozess verwendet die Datei als aktuelles Verzeichnis.
e
Der Prozess führt die Datei aus.
f
Der Prozess hat die Datei geöffnet.
m
Der Prozess verwendet die Datei als dynamische Bibliothek.
r
Die Datei ist das Wurzelverzeichnis des Prozesses.
Tab. 10.28: Die Kennzeichen der Ausgabe des Befehls fuser
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Zeigt alle an der Befehlszeile angegebenen Dateien, auch wenn kein Prozess auf diese zugreift
-i
Bittet den Benutzer um Bestätigung, bevor ein Prozess beendet wird. Diese Option ist nur gemeinsam mit der Option -k gültig.
-k
Sendet das KILL-Signal an jeden Prozess, um alle Prozesse abzubrechen
-l
Listet alle bekannten Signalnamen auf
Tab. 10.29: Die Optionen des Befehls fuser
462
Kapitel 10 · Geräteverwaltung
-m
Das Argument gibt eine Datei auf einem gemounteten Dateisystem oder ein blockorientiertes Gerät an, das gemountet ist. Alle Prozesse, die auf Dateien dieses Dateisystems zugreifen, werden aufgelistet.
-s
Stiller Modus
-signal
Verwendet anstelle des KILL-Signals das angegebene Signal, um Prozesse zu beenden. Signale können entweder mit dem Namen angegeben werden, zum Beispiel -QUIT, oder mit ihrer Nummer, zum Beispiel -2.
-u
Der Name des Benutzers des Prozesses wird an jede Prozess-ID angehängt.
-v
Ausführlicher Modus
-
Setzt alle Optionen auf ihre Standardwerte zurück
Tab. 10.29: Die Optionen des Befehls fuser (Forts.)
Die Ausgabe des Befehls kann zum Beispiel folgendermaßen aussehen: # fuser –vu /projektdaten USER PID ACCESS COMMAND /projektdaten: her 783 c bash
10.4.11 Dateisysteme überprüfen Mit den nachfolgenden Befehlen können Dateisysteme auf ihre Konsistenz überprüft werden:
Der Befehl fsck Der Befehl fsck ist ein interaktives Programm, das Dateisysteme auf Inkonsistenzen überprüft und zu reparieren versucht. Dateisystemfehler können durch Stromausfall oder Systemabstürze usw. entstehen. Die Syntax des Befehls lautet: # fsck [-option(en)] [dateisystem(e) ]
Der Rückgabewert des Befehls ist die Summe der folgenden Zustände: Zustand
Beschreibung
0
Keine Fehler
1
Fehler wurden gefunden und bereinigt.
2
Das System sollte neu gestartet werden.
4
Fehler wurden gefunden, aber nicht bereinigt.
8
Auftreten eines internen Fehlers
16
Auftreten eines Anwendungs- oder Syntaxfehlers
32
Der Befehl wurde auf Anforderung des Benutzers abgebrochen.
128
Auftreten eines Fehlers im Zusammenhang mit einer dynamischen Bibliothek
Tab. 10.30: Zustände des Befehls fsck
463
Dateisystem verwalten
magnum
Der Befehl ist nur ein Frontend für die verschiedenen Überprüfungsroutinen, die unter Linux zur Verfügung stehen. Normalerweise muss root während der Ausführung bestätigen, ob Korrekturen durchgeführt werden sollen. Der Befehl fsck ist in der Lage, die am häufigsten auftretenden Festplattenprobleme zu lösen, wobei die Korrekturen aber manchmal zum Datenverlust im Dateisystem führen. Vor der Ausführung des Befehls sollten Sie die zu prüfenden Dateisysteme unbedingt unmounten. Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Repariert das Dateisystem automatisch ohne Rückfragen
-A
Überprüft alle in der Datei /etc/fstab angegebenen Dateisysteme in einem Durchlauf
-C
Zeigt Fortschrittsleisten bei den Dateisystemprüfprogrammen an, die dies unterstützen
-N
Es erfolgt keine normale Ausführung, sondern nur eine Anzeige, was durchgeführt werden würde.
-P
Wenn die Option -A verwendet wird, wird das root-Dateisystem parallel mit den anderen Dateisystemen überprüft. Das ist keine sichere Option, da dies zu einem inkonsistenten root-Dateisystem führen kann. Diese Option wurde für Systemadministratoren zur Verfügung gestellt, die das root-Dateisystem nicht in kleinere und kompakte Dateisysteme aufteilen möchten.
-R
Wenn das root-Dateisystem bereits beschreib- und lesbar gemountet ist, sorgt diese Option dafür, dass dieses übersprungen wird, wenn die Option -A verwendet wird.
-s
Serieller Modus des Befehls: Die Überprüfungen finden nacheinander und nicht parallel statt
-t typ
Angabe des Dateisystemtyps, der überprüft werden soll
-r
Interaktives Reparieren des Dateisystems: root wird um Bestätigung gebeten, wenn Reparaturen notwendig sind
--
Übergabe von Parametern an das dateisystemspezifische Programm
Tab. 10.31: Die Optionen des Befehls fsck
Der Befehl kann bei einem ungemounteten Dateisystem zum Beispiel wie folgt verwendet werden: # fsck –r /dev/hda3
Der Befehl e2fsck oder fsck.ext2 Dieser Befehl ist ein interaktives Programm, das ext2-Dateisysteme auf Inkonsistenzen überprüft und zu reparieren versucht. Der Rückgabewert des Befehls besteht aus der Summe derselben Zustände wie der Befehl fsck. Die Syntax des Befehls lautet: # e2fsck [-option(en)] [ dateisystem(e) ]
Der Befehl kennt folgende Optionen:
464
Kapitel 10 · Geräteverwaltung
Option
Beschreibung
-a
Diese Option entspricht der Option -p; sie ist nur aus Gründen der Abwärtskompatibilität vorhanden.
-b
Verwendet einen alternativen Backup-Superblock anstelle des originalen Superblocks. Diese Option ist nützlich, wenn der Superblock beschädigt ist. Die Blocknummern von Backup-Superblocks können mit Hilfe des Befehls mke2fs -n ermittelt werden.
superblock
-B
blockgröße
In der Regel sucht der Befehl nach einem Superblock, wobei die Blockgröße unterschiedlich sein kann. Wird die Blockgröße angegeben, versucht der Befehl, den Superblock nur an dieser bestimmten Blockgröße zu finden.
c
Mit dieser Option versucht der Befehl, defekte Blöcke im Dateisystem zu finden und zu markieren.
-C
Bei Verwendung dieser Option sendet der Befehl Informationen über die Fertigstellung des Prüflaufs an den angegebenen File Descriptor (Dateizeiger). Wurde dieser mit 0 angegeben, gibt der Befehl (an einer Grafikkonsole oder einem -terminal) eine Anzeige aus, wie weit der Prüflauf abgearbeitet ist.
fd
-d
Ausgabe von Debugging-Informationen
-D
Optimiert die Verzeichnisse im Dateisystem durch erneute Indizierung oder durch Sortierung und Komprimierung
-E
Definition von erweiterten Optionen. Im Moment wird nur folgende Option unterstützt:
optionen
ea_ver= ext-attr-ver
geht davon aus, dass das Format von erweiterten Attributblöcken im Dateisystem der angegebenen Versionsnummer entspricht, die 1 oder 2 sein kann
-f
Erzwingt ein Überprüfen des Dateisystems, auch wenn es in Ordnung zu sein scheint
-F
Leert den Geräte-Buffercache des Dateisystems vor der Überprüfung
-j
Definiert den Pfadnamen, unter dem das externe Journal des Dateisystems sich befindet
ext-journal -l
datei -L
datei
Fügt die in der Datei angegebenen Blocknummern der Liste mit den defekten Blocknummern hinzu Weist die in der Datei angegebene Liste von Blöcken der Liste defekter Blöcke des Dateisystems zu
-n
Öffnet das Dateisystem nur lesbar und setzt die Antwort »no« für alle Fragen voraus
-p
Stiller Modus. Das Dateisystem wird ohne Rückfragen repariert.
-t
Ausgabe der Zeitstatistiken des Befehls
-v
Ausführlicher Modus
-y
Alle Rückfragen werden automatisch mit »yes« beantwortet.
Tab. 10.32: Die Optionen des Befehls e2fsck
465
magnum
Dateisystem verwalten
Alternativ können Sie den Befehl dumpe2fs verwenden, um die Backup-Superblocks zu ermitteln, wenn Ihnen die ursprünglichen mke2fs-Optionen nicht mehr bekannt sind. Der Befehl kann zum Beispiel wie folgt verwendet werden, um alle Rückfragen automatisch mit Ja zu beantworten: # e2fsck –y /dev/hda2
Der Befehl reiserfsck Manchmal muss auch ein Dateisystem reiserfs überprüft werden. Dazu wird der Befehl reiserfsck verwendet, der folgende Syntax besitzt: reiserfsck [-option(en)] gerät
Die wichtigsten Optionen des Befehls sind: Option
Beschreibung
-a oder -p
Diese Optionen bewirken, dass weitere Informationen über das angegebene Dateisystem ausgegeben werden, prüfen, ob die Fehlermarken im Superblock gesetzt sind, und führen einige einfache Prüfungen durch.
--check
Das Dateisystem wird auf Inkonsistenzen überprüft und ein Bericht wird ausgegeben, aber es wird nichts repariert.
--clean-attributes
Diese Option bereinigt reservierte Felder im Bereich Stat-Data.
--fix-fixable
Leicht zu korrigierende Fehler werden repariert. Normalerweise wird diese Option benötigt, wenn die Option --check folgende Meldung ausgibt: »corruption that can be fixed with --fix-fixable«.
-j gerät oder -journal gerät
Diese Option liefert den Gerätenamen des aktuellen Dateisystemjournals und ist notwendig, wenn das Journal sich auf einem separaten Gerät befindet.
-l datei oder --logfile datei
Diese Option gibt einen Bericht über jede Inkonsistenz in die angegebene Datei aus, anstatt auf die Standardausgabe.
-n oder --nolog
Diese Option verhindert, dass vom Befehl reiserfsck irgendeine Inkonsistenz gemeldet wird.
-q oder --quiet
Diese Option verhindert, dass vom Befehl reiserfsck der Fortschritt der Prüfung gemeldet wird.
--rebuild-sb
Der Superblock wird repariert. Normalerweise wird diese Option benötigt, wenn die Option --check folgende Meldung ausgibt: »read_super_block: can't find a reiserfs file system«.
--rebuild-tree
Die vollständige Dateisystem-Baumstruktur wird neu aufgebaut. Normalerweise wird diese Option benötigt, wenn die Option --check folgende Meldung ausgibt: »corruption that can be fixed only during --rebuild-tree«.
Tab. 10.33: Die Optionen des Befehls reiserfsck
466
Kapitel 10 · Geräteverwaltung
Option
Beschreibung
-y oder --yes
Diese Option verhindert, dass Sie um Bestätigung gebeten werden, wenn der Befehl auf weitere Anweisungen wartet. Es wird dann automatisch mit Ja geantwortet.
-z oder --adjust-size
Diese Option korrigiert Dateigrößen, die größer als der Startpunkt des letzten entdeckten Byte sind. Dies bedeutet, dass die Lücken am Ende der Dateien entfernt werden.
Tab. 10.33: Die Optionen des Befehls reiserfsck (Forts.)
Es gibt darüber hinaus noch einige Expertenoptionen, die aber nur mit äußerster Vorsicht angewendet werden sollten. Sie können mit man reiserfsck ausgegeben werden. In diesem Beispiel wird eine Überprüfung eines Dateisystems reiserfs für das Dateisystem /dev/hda8 durchgeführt: # reiserfsck /dev/hda8 reiserfsck 3.x.1b (2002) Will read-only check consistency of the filesystem on /dev/hda8 Will put log info to 'stdout' Do you want to run this program?[N/Yes] (note need to type Yes):Yes ########### reiserfsck --check started at Sat Jun 11 22:18:10 2005 ########### Replaying journal.. 0 transactions replayed Checking S+tree..ok Comparing bitmaps..ok Checking Semantic tree... ok No corruptions found There are on the filesystem: Leaves 794 Internal nodes 8 Directories 981 Other files 8526 Data block pointers 2385 (zero of them 12) Safe links 0 ########### reiserfsck finished at Sat Jun 11 22:19:37 2005 ###########
Der Befehl dumpe2fs Dieser Befehl gibt Informationen über das Dateisystem aus. Er zeigt Superblockund Blockgruppen- Informationen an. Die Syntax des Befehls lautet: # dumpe2fs [-option(en)] gerät
467
Dateisystem verwalten
magnum
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-b
Zeigt die Blöcke an, die als defekt im Dateisystem markiert wurden
-f
Zwingt den Befehl, ein Dateisystem auch dann anzuzeigen, wenn es Dateisystemflags besitzt, die der Befehl nicht versteht
-h
Zeigt nur die Superblock- und keine detaillierten Blockgruppen-Informationen an
-i
Zeigt die Dateisystemdaten aus einer Image-Datei an, die durch den Befehl e2image erzeugt wurde
-ob
superblock
Verwendet den angegebenen Block als Superblock beim Überprüfen des Dateisystems
-oB
Verwendet Blöcke der angegebenen Größe beim Prüfen des Dateisystems
blockgröße -x
Gibt die detaillierten Nummern der Blockgruppen-Informationen im Hexadezimalformat aus
Tab. 10.34: Die Optionen des Befehls dumpefs
Im folgenden Beispiel werden nur die Informationen des Superblocks für das Gerät /dev/hda2 ausgegeben: # dumpe2fs -h /dev/hda2 dumpe2fs 1.34 (25-Jul-2003) Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 5e4c1223-5903-415b-bf28-85d91cb648cf Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr filetype needs_recovery sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Panic Filesystem OS type: Linux Inode count: 2382720 Block count: 4759256 Reserved block count: 237962 Free blocks: 3128770 Free inodes: 2092015 First block: 0 Block size: 4096 Fragment size: 4096 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 16320 Inode blocks per group: 510 Last mount time: Tue May 11 09:37:43 2004 Last write time: Tue May 11 09:37:43 2004 Mount count: 8 Maximum mount count: 21 Last checked: Sun May 9 18:05:05 2004 Check interval: 15552000 (6 months) Next check after: Fri Nov 5 17:05:05 2004 Reserved blocks uid: 0 (user root
468
Kapitel 10 · Geräteverwaltung
Reserved blocks gid: First inode: Inode size: Journal inode:
0 (group root) 11 128 8
Der Befehl badblocks Dieser Befehl durchsucht ein Gerät (eine Partition in der Regel) nach defekten Blöcken. Die Syntax des Befehls lautet: # badblocks [-option(en)] gerät [letzter-block] [erster-block]
Die Angabe letzter-block benennt den letzten zu prüfenden Block, wobei standardmäßig der letzte Block des Geräts verwendet wird. Die Angabe erster-block ist ebenfalls optional und legt den Block fest, bei dem die Prüfung beginnen soll. Standardmäßig ist es der erste Block auf dem Gerät. Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-b
Gibt die Größe der Blöcke in Bytes an
-c blockzahl
Gibt die Anzahl der Blöcke an, die gleichzeitig überprüft werden sollen. Standardmäßig sind dies 16. Wenn Sie diese Zahl erhöhen, wird die Effizienz des Befehls gesteigert, aber auch entsprechend mehr Hauptspeicher verwendet.
-f
Normalerweise weigert sich der Befehl, einen Test lesend-schreibend oder anders als im nicht destruktiven Modus auf ein gemountetes Gerät durchzuführen. Denn dies könnte ein Dateisystem zum Absturz bringen oder beschädigen. Mit dieser Option kann der Befehl aber dazu gezwungen werden. Die Verwendung dieser Option wird nicht empfohlen, sie kann unter Umständen das Dateisystem zerstören!
-i inputdatei
Listet bereits als defekt bekannte Blöcke aus der angegebenen Datei oder bei Eingabe des Zeichens »-« von der Standardeingabe auf. Diese Blöcke werden dann beim Testen einfach übersprungen und sie werden auch nicht als defekt ausgegeben.
-o outputdatei
Diese Option schreibt die Liste der defekten Blöcke in die angegebene Datei.
-p anzahl
Wiederholt das Scannen der Festplatte, bis es keine neuen Blöcke mehr in den mit anzahl angegebenen aufeinander folgenden Scanvorgängen findet. Standardmäßig findet nur ein Scanvorgang statt.
-t muster
Definiert ein Testmuster, das aus den Blöcken gelesen und in diese geschrieben werden soll.
-n
Verwendet einen nicht destruktiven Lese-Schreib-Modus. Standardmäßig wird nur ein nicht destruktiver Lesemodus durchgeführt. Diese Option kann nicht gemeinsam mit der Option -w verwendet werden.
-s
Zeigt den Fortschritt des Scanvorgangs an, indem die Blocknummern nach der Überprüfung ausgegeben werden
-v
Ausführlicher Modus
-w
Verwendet den Schreibmodus-Test. Es wird nach defekten Blöcken gescannt, indem Muster in jeden Block des Geräts geschrieben werden und anschließend jeder Block gelesen wird. Danach werden die Ergebnisse verglichen, um festzustellen, ob ein Block defekt ist.
Tab. 10.35: Die Optionen des Befehls badblocks
469
magnum
Dateisystem verwalten
Im folgenden Beispiel wird eine Überprüfung mit ausführlicher Ausgabe für das Gerät /dev/hda2 durchgeführt: # badblocks -v /dev/hda2 Checking blocks 0 to 19037025 Checking for bad blocks (read-only test): 1502640/ 19037025 2427824/ 19037025
788352/ 19037025
Der Befehl debugfs Dieser Befehl kann ein ext2-Dateisystem debuggen. Die Syntax des Befehls lautet: # debugfs [-option(en)] [gerät]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-b
Erzwingt die Verwendung der angegebenen Blockgröße für das Dateisystem, anstatt wie standardmäßig die korrekte Blockgröße automatisch zu ermitteln
blockgröße -c
Legt fest, dass das Dateisystem in einem Modus geöffnet wird, in dem die Inodeund Gruppe-Bitmaps anfänglich nicht gelesen werden. Dies kann bei Dateisystemen nützlich sein, die ziemlich beschädigt sind, setzt allerdings voraus, dass das Dateisystem nur lesbar geöffnet wird.
-f
Veranlasst den Befehl debugfs, die Befehle aus der angegebenen Datei zu lesen und auszuführen
datei -i
Legt fest, dass das Gerät eine ext2-Image-Datei enthält, die vom Befehl e2image angelegt wurde. Da eine solche Image-Datei weniger Komponenten als ein ext2Dateisystem hat, funktionieren viele Befehle von debugfs nicht.
-R
Veranlasst den Befehl, die einzelnen Befehlsanforderungen auszuführen und sich dann zu beenden
request superblock
Veranlasst, dass der Superblock des Dateisystems aus der angegebenen Blocknummer gelesen wird, anstatt die standardmäßige Nummer zu verwenden (1). Diese Option muss gemeinsam mit der Option -b verwendet werden.
-w
Legt fest, dass das Dateisystem im beschreib- und lesbaren Modus geöffnet wird
-s
Tab. 10.36: Die Optionen des Befehls debugfs
Der Befehl kann mit folgenden Befehlen angewandt werden: Option
Beschreibung
bmap datei log_block
Gibt die physikalische Blocknummer entsprechend der angegebenen logischen Blocknummer in dem Inode aus
cat datei
Gibt den Inhalt dem Inode an die Standardausgabe aus
cd verzeichnis
Ändert das aktuelle Arbeitsverzeichnis entsprechend der Angabe ab
chroot verzeichnis
Ändert das root-Verzeichnis entsprechend des angegebenen Verzeichnisses ab
Tab. 10.37: Die Menüpunkte des Befehls debugfs
470
Kapitel 10 · Geräteverwaltung
Option
Beschreibung
close
Schließt das aktuell geöffnete Dateisystem
clri datei
Löscht den Inhalt des Inodes der angegebenen Datei
dump datei ausgabe_datei
Die Inhalte des Inodes der angegebenen Datei werden in die Ausgabedatei geschrieben.
expand_dir verzeichnis
Expandiert das Verzeichnis
feature [fs_option]
Aktiviert oder deaktiviert verschiedene Dateisystemoptionen im Superblock
find_free_block [zähler [ziel]]
Sucht den ersten freien Block und allokiert diesen, das Zählen beginnt nach dem angegebenen Zielblock
find_free_inode [verzeichnis [modi]]
Findet und allokiert eines freien Inodes. Mit Hilfe des Verzeichnisses kann die Inode-Nummer angegeben des Verzeichnisses werden, in dem sich der Inode befindet. Das Argument modi gibt die Berechtigungen des neuen Inodes an.
freeb block [zähler]
Markiert den angegebenen Block als nicht allokiert. Wenn das Argument zähler angegeben wird, dann wird die angegebene Anzahl von Blöcken als nicht allokiert markiert.
freei datei
Gibt den Inode der angegebenen Datei frei
icheck block block …
Gibt eine Liste der Inodes aus, die einen der angegebenen Blöcke verwenden
imap datei
Gibt aus, wo in der Inode-Tabelle sich die Inode-Datenstruktur der angegebenen Datei befindet
initialize
gerät blockgröße
Erzeugt ein ext2-Dateisystem auf dem angegebenen Gerät mit der entsprechenden Blockgröße
kill_file datei
Entfernt den Inode und Datenblöcke der angegebenen Datei
lcd verzeichnis
Wechselt vom aktuellen Verzeichnis des Prozesses debugfs in das Verzeichnis des nativen Dateisystems
ln datei zieldatei
Erzeugt einen Link
logdump [-option(en)]
Gibt die Inhalte des ext3-Journals aus
ls verzeichnis
Gibt eine Liste der Dateien im angegebenen Verzeichnis aus. Mögliche Optionen sind -l (ausführliches Listing) und -d (Auflisten von gelöschten Einträgen im Verzeichnis).
modify_inode datei
Ändern des Inhalts der Inode-Struktur der angegebenen Datei
mkdir verzeichnis
Anlegen eines Verzeichnisses
mknod datei [p|[c|b] major minor]
Erzeugt eine spezielle Gerätedatei (Named Pipe, block- oder zeichenorientiertes Gerät). Handelt es sich dabei um eine block- oder zeichenorientierte Gerätedatei, müssen als Optionen die Major- und Minor-Gerätenummer angegeben werden.
ncheck inum …
Zur angegebenen Liste von Inode-Nummern wird eine Liste von Pfadnamen ausgegeben.
Tab. 10.37: Die Menüpunkte des Befehls debugfs (Forts.)
471
magnum
Dateisystem verwalten
Option
Beschreibung
open [-option(en)] gerät Öffnet ein Dateisystem für die Bearbeitung. Dabei können die Optionen des Befehls debugfs verwendet werden. pwd
Ausgabe des aktuellen Verzeichnisses
quit
Beenden des Befehls
rdump verzeichnis ziel
Gibt ein Verzeichnis und dessen Inhalt rekursiv in das angegebene Ziel aus, das ein vorhandenes Verzeichnis im nativen Dateisystem sein muss.
rm datei
Entfernt die angegebene Datei
rmdir verzeichnis
Entfernt das angegebene Verzeichnis
setb block [zähler]
Markiert den angegebenen Block als allokiert. Wenn der Zähler angegeben wird, dann wird die entsprechende Anzahl von Blöcken allokiert.
seti datei
Markiert die angegebene Datei als belegt
set_super_value
Setzt das angegebene Feld des Superblocks auf den angegebenen Wert. Die Liste aller Felder des Superblocks ist mit dem Befehl set_super_value -l erhältlich.
feld wert show_super_stats [-h]
Listet den Inhalt des Superblocks und der Gruppenblock-Deskriptoren auf. Die Option -h bewirkt, dass nur der Inhalt des Superblocks angezeigt wird.
stat datei
Zeigt die Inhalte der Inode-Struktur der angegebenen Datei an
testb block [zähler]
Testet, ob der angegebene Block als allokiert markiert ist. Wird das Argument zähler angegeben, wird die entsprechende Anzahl von Blocks geprüft.
testi datei
Testet, ob der Inode der angegebenen Datei als allokiert markiert ist
unlink datei
Entfernt den durch die Datei angegebenen Link zu einem Inode
write datei zieldatei
Erzeugt eine Datei im Dateisystem mit dem Namen zieldatei und kopiert die Inhalte der Datei datei in diese Datei
Tab. 10.37: Die Menüpunkte des Befehls debugfs (Forts.)
Im folgenden Beispiel wird der Befehl debugfs für das Gerät /dev/hda2 gestartet und nach dem nächsten freien Inode gesucht: # debugfs /dev/hda2 debugfs 1.34 (25-Jul-2003) debugfs: find_free_inode Free inode found: 16
Im nächsten Beispiel wird die Liste aller Felder des Superblocks ausgegeben: debugfs: set_super_value -l Superblock fields supported by command: inodes_count blocks_count r_blocks_count
472
the set_super_value unsigned integer unsigned integer unsigned integer
Kapitel 10 · Geräteverwaltung
free_blocks_count free_inodes_count first_data_block log_block_size log_frag_size blocks_per_group
unsigned unsigned unsigned unsigned integer unsigned
integer integer integer integer integer
...
Im letzten Beispiel wird der Inhalt des Superblocks ausgegeben: debugfs: show_super_stats Filesystem volume name: <none> Last mounted on: <not available> Filesystem UUID: 5e4c1223-5903-415b-bf28-85d91cb648cf Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr filetype needs_recovery sparse_super Default mount options: (none) Filesystem state: clean Errors behavior: Panic Filesystem OS type: Linux Inode count: 2382720 Block count: 4759256 Reserved block count: 237962 Free blocks: 3129884 Free inodes: 2092343 First block: 0 Block size: 4096 Fragment size: 4096 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 16320 Inode blocks per group: 510 Last mount time: Fri Apr 30 16:07:14 2004 Last mount time: Fri Apr 30 16:07:14 2004 Last write time: Fri Apr 30 21:37:58 2004 Mount count: 16 Maximum mount count: 21 Last checked: Tue Apr 27 10:10:33 2004 Check interval: 15552000 (6 months) Next check after: Sun Oct 24 10:10:33 2004 Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 128 Journal inode: 8 Directories: 20863 Group 0: block bitmap at 3, inode bitmap at 4, inode table at 5 5822 free blocks, 16301 free inodes, 2 used directories Group 1: block bitmap at 32771, inode bitmap at 32772, inode table at 32773 22819 free blocks, 14287 free inodes, 129 used directories Group 2: block bitmap at 65536, inode bitmap at 65537, inode table at 65541 28013 free blocks, 14618 free inodes, 209 used directories ...
473
magnum
Dateisystem verwalten
10.4.12 Informationen zu Dateisystemen ausgeben In diesem Abschnitt werden Befehle vorgestellt, die verschiedene Informationen zu Dateisystemen geben können.
Der Befehl df Sie können den Befehl df verwenden, um den freien Speicherplatz von Dateisystemen anzuzeigen. Die Syntax des Befehls lautet: # df [-option(en)] [ dateisystem(e) ]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --all
Schließt Dateisysteme mit ein, die 0 Blöcke Kapazität haben, das heißt leer sind
-b oder --block-size=größe Verwendet Blöcke der angegebenen Größe -h oder --human-readable
Ausgabe der Größen in einem von Menschen lesbaren Format, zum Beispiel 1K, 2M, 3G
-H oder --si
Entspricht -h, aber verwendet 1000 anstelle von 1024
-i oder --inodes
Listet Inode-Informationen auf anstelle der Verwendung von Blöcken
-k oder --block-size=1K
Blockgröße ist ein Kbyte
-l oder --local
Anzeige nur der lokalen Dateisysteme und nicht der NFS-Dateisysteme
--no-sync
Ruft vor der Abfrage der Information nicht den Befehl sync auf
-P oder --portability
Verwendet das POSIX-Ausgabeformat (genau eine Zeile pro Dateisystem)
--sync
Ruft vor der Abfrage der Information den Befehl sync auf
-t oder --type=typ
Gibt nur die Dateisysteme des angegebenen Typs aus
-T oder --print-type
Ausgabe des Dateisystemtyps
-x oder --exclude-type=typ Gibt nur die Dateisysteme aus, die nicht zum angegebenen Typ
gehören
Tab. 10.38: Optionen des Befehls df
Im nachfolgenden Beispiel wird der Befehl df bare Anzeige zu erhalten: # df -h FilesystemSizeUsedAvailUse% Mounted on /dev/hda218G6.0G12G35%/ tmpfs121M0121M0%/dev/shm pclsu:/home/data25G12G12G49%/data
474
–h verwendet,
um eine einfacher les-
Kapitel 10 · Geräteverwaltung
Der Befehl du Dieser Befehl gibt aus, wie viel Festplattenplatz von Verzeichnissen und/oder Dateien belegt wird. Die Syntax des Befehls lautet: # du [-option(en)] [ datei(en) ]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --all
Anzeige des verbrauchten Festplattenplatzes auch für die einzelnen Dateien, nicht nur summarisch für Verzeichnisse
--apparent-size
Gibt die offensichtliche Größe anstelle des verbrauchten Festplattenplatzes aus. Diese ist in der Regel kleiner, kann aber zum Beispiel bei der Verwendung von indirekten Blöcken oder interner Fragmentierung größer sein.
-B oder --block-size=größe
Verwendet Blöcke der angegebenen Größe
-b oder --bytes
Entspricht der Kombination der Optionen --apparent-size -block-size=1
-c oder --total
Gibt am Schluss zusätzlich eine Gesamtsumme aus
-D oder --dereference-args
Symbolische Links von Dateien werden aufgelöst
--exclude=muster
Schließt Dateien aus, die mit dem angegebenen Muster übereinstimmen
-h oder --human-readable
Gibt die Größen in für Menschen lesbarem Format an, zum Beispiel 1K, 2M, 3G
-H der --si
Entspricht der Option -h, verwendet aber 1000 statt 1024
-k
Anzeige in Kilobyte
-L oder --dereference
Alle symbolischen Links werden aufgelöst.
--max-depth=n
Gibt die Summe für ein Verzeichnis nur aus, wenn es n oder weniger Level unter dem an der Befehlszeile angegebenen Verzeichnis liegt
-S oder --separate-dirs
Enthält keine Größe von untergeordneten Verzeichnissen
-s oder --summarize
Ausgabe der Summe für jedes Argument
-x oder --one-file-system
Ignoriert Verzeichnisse von anderen Dateisystemen
Tab. 10.39: Optionen des Befehls df
Im nachfolgenden Beispiel wird der verbrauchte Festplattenplatz des Verzeichnisses /etc in Mbyte als Summe ermittelt: # du –sh /etc 77M /etc
475
Swapping unter Linux
magnum
Der Befehl sync Normalerweise werden die noch nicht auf die Festplatte zurückgeschriebenen Schreiboperationen in bestimmten Zeitabständen durch den Prozess pdflush aus dem Zwischenspeicher auf die Platte geschrieben. Dies lässt sich aber auch manuell mit Hilfe des Befehls sync durchführen.
10.4.13 Grafische Systemverwaltung mit KDE KDE bietet ein grafisches Frontend zum Befehl df an. Das Programm befindet sich im Hauptmenü unter SYSTEM - DATEISYSTEM - KDISKFREE:
Bild 10.15: Festplattenbelegung mit KDiskFree anzeigen
10.5 Swapping unter Linux In diesem Abschnitt erfahren Sie, wie Sie Swap-Partitionen und Swap-Dateien unter Linux einrichten, anzeigen und wieder löschen können.
10.5.1
Swapping und Paging
Gestartete Programme werden als Prozesse in den realen Speicher geladen, das heißt den Haupt- oder RAM-Speicher. Alle Prozesse im Hauptspeicher werden in so genannte Seiten oder Pages unterteilt, die nach Bedarf ein- oder ausgelagert werden können. Wird der Speicherplatz des RAM zu klein, dann beginnt Linux damit, alle Seiten von Prozessen, die im Moment nicht zur Verarbeitung eines Prozesses notwendig sind, in den virtuellen Speicherbereich, den so genannten Swap Space oder Swap-Bereich, auszulagern. Auf diese Weise wird der Arbeitsspeicher virtuell vergrößert, indem die im Moment nicht benötigten Daten ausgelagert werden. Unter Linux befindet sich dieser Auslagerungsbereich in der Regel auf der Festplatte als eigene Partition, der so genannten Swap-Partition. Auf diese Weise können wesentlich mehr Programme im RAM ablaufen, als ursprünglich durch die Hauptspeichergröße möglich ist.
476
Kapitel 10 · Geräteverwaltung
Der Swap Space sollte mindestens so groß wie der Hauptspeicher sein, damit er im Falle eines Systemabsturzes ein Speicherabbild des RAM, einen so genannten Crashdump, aufnehmen kann. Bei sehr speicherintensiven Anwendungen sollte der Swap Space entsprechend vergrößert werden. Eine Swap-Datei wird auch als Auslagerungsdatei bezeichnet.
Ist das System sehr stark belastet, wird nicht mehr das soeben beschriebene PagingVerfahren angewandt, sondern es kommt zum Swapping, das heißt, statt einzelner Pages werden ganze Prozesse vorübergehend in den Swap-Bereich ausgelagert. Die Größe einer Swap-Partition wird normalerweise bei der Installation festgelegt, es ist aber auch möglich, später weitere Swap-Bereiche oder im Notfall auch SwapDateien hinzuzufügen. Swap-Partitionen sollten in die Datei /etc/fstab eingetragen werden, damit sie automatisch bei jedem Bootvorgang erkannt werden. Wenn Sie Ihrem System eine weitere Swap-Partition hinzufügen möchten, müssen Sie dazu eine Partition auf einer Ihrer Festplatten einrichten und dann einen entsprechenden Eintrag in der Datei /etc/fstab vornehmen, zum Beispiel: # cat /etc/vfstab ... /dev/hda5 swap ...
10.5.2
swap
pri=42 0 0...
Der Befehl mkswap
Mit Hilfe des Befehls mkswap können Sie Swap-Bereiche oder -Dateien erstellen. Anschließend müssen Sie den Befehl swapon verwenden, um den Swap-Bereich zu aktivieren. Die Syntax des Befehls lautet: # mkswap [-option(en)] gerät | datei
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Überprüft das Gerät auf defekte Blöcke (sofern es sich um ein blockorientiertes Gerät handelt), bevor der Swap-Bereich angelegt wird. Werden defekte Blöcke gefunden, dann werden die entsprechenden Blockzähler ausgegeben.
-f
Erzwingt das Anlegen des Swap-Bereichs, auch wenn der Befehl nicht ordnungsgemäß ist. Dadurch kann ein Swap-Bereich erzeugt werden, der größer als die Datei oder Partition ist, in der er sich befindet.
-p größe
Angabe der zu verwendenden Größe der Seiten (Pages), typische Werte sind 4096 oder 8192
Tab. 10.40: Die Optionen des Befehls mkswap
477
magnum
Swapping unter Linux
Zur Einrichtung einer zusätzlichen Swap-Partition gehen Sie wie folgt vor, wenn Sie den Bereich gleichzeitig auf defekte Blöcke testen möchten: # mkswap -c /dev/hda7
Um eine Swap-Datei einzurichten, müssen Sie zuerst die Datei in der benötigten Größe anlegen, bevor Sie sie mit dem Befehl mkswap initialisieren, zum Beispiel: # dd if=/dev/zero of=/space/swapdatei bs=1024 count=30000
Initialisieren Sie dann die Datei als Swap-Datei: # mkswap /space/swapdatei
10.5.3
Der Befehl swapon
Mit Hilfe des Befehls swapon können Sie bereits vorhandene Swap-Bereiche oder Dateien aktivieren oder anzeigen lassen. Die Syntax des Befehls lautet: # swapon [-option(en)] spezialdatei
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Alle als Swap gekennzeichneten Geräte in der Datei /etc/fstab werden aktiviert. Geräte, die bereits als Swap aktiv sind, werden ohne Rückmeldung übersprungen.
-e
Diese Option überspringt Geräte ohne Rückmeldung, die nicht vorhanden sind.
-p priorität
Definiert die Priorität für den Befehl swapon. Diese Option steht erst ab Kernel 1.3.2 zur Verfügung. Die Priorität ist ein Wert zwischen 0 und 32.767. In der Datei /etc/fstab kann im Optionsfeld eines Swap-Geräts ein Eintrag pri=wert hinterlegt werden, der beim Aufruf von swapon -a verwendet wird.
-s
Ausgabe von Informationen zum Swap pro Gerät. Diese Option entspricht dem Befehl cat /proc/swaps und ist erst ab der Kernel-Version 2.1.25 verfügbar.
Tab. 10.41: Die Optionen des Befehls swap
Im folgenden Beispiel wird die im letzten Abschnitt angelegte Swap-Datei aktiviert: # swapon /swapdatei
Der nachfolgende Befehl zeigt die Informationen zu den Swap-Bereichen an: # swapon -s Filename /dev/hda1 /swapdatei
478
Type partition file
Size Used 514040 3212 29288 0
Priority 42 -1
Kapitel 10 · Geräteverwaltung
10.5.4
Der Befehl swapoff
Mit Hilfe des Befehls swap können Sie bereits vorhandene Swap-Bereiche oder -Dateien wieder deaktivieren. Die Syntax des Befehls lautet: # swapoff [-a] [spezialdatei]
Der Befehl kennt folgende Option: Option
Beschreibung
-a
Deaktivieren aller in /etc/fstab oder /proc/swaps vorhandenen Swap-Partitionen oder -Dateien
Tab. 10.42: Die Option des Befehls swapoff
Der nachfolgende Befehl deaktiviert die im vorherigen Abschnitt aktivierte SwapDatei: # swapoff /swapfile
Sie sollten in diesem Fall auch anschließend die Swap-Datei wieder löschen, wenn sie nicht mehr benötigt wird: # rm /swapdatei
10.5.5
Der Befehl free
Der Befehl free zeigt die Speicherauslastung einschließlich der Ausnutzung des Swap-Bereichs an. Die Syntax des Befehls lautet: free [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-b
Zeigt die Speichermenge in Byte an
-k
Zeigt die Speichermenge in Kbyte an
-m
Zeigt die Speichermenge in Mbyte an
-o
Deaktiviert die Anzeige der Zeile »buffer adjusted«
-s sekunde
Aktualisiert die Ausgabe im angegebenen Sekundenintervall
-t
Gibt die Gesamtsummen aus
Tab. 10.43: Die Optionen des Befehls free
479
magnum
Swapping unter Linux
In diesem Beispiel wird die Speicherauslastung in Mbyte einschließlich der Gesamtsumme ausgegeben: $ free -tm total Mem: 218 -/+ buffers/cache: Swap: 517 Total: 735
10.5.6
used 189 100 1 190
free 28 117 516 545
shared 0
buffers 12
cached 75
Swap-Konfiguration mit YaST
Die Swap-Konfiguration unter SUSE wird mit Hilfe des YAST-Moduls für die Partitionierung durchgeführt. Öffnen Sie das Menü HARDWARE - PARTITIONIEREN. Zuerst erscheint eine Warnmeldung, da das Partitionieren der Festplatten zu Datenverlust führen kann. Diese Warnmeldung sollten Sie unbedingt beachten, um sich vor Datenverlust zu schützen. Wenn Sie sicher sind, dass Sie die Festplatte problemlos partitionieren können, klicken Sie auf JA. Das nächste Fenster listet die vorhandenen Festplatten auf. Die Aufgaben Anlegen, Bearbeiten und Löschen können an dieser Stelle dialogorientiert durchgeführt werden: Wählen Sie einen freien Festplattenbereich, um eine Swap-Partition anzulegen, und anschließend den Partitionstyp aus (primäre oder logische Partition):
Bild 10.16: Swap-Partition mit YAST anlegen
Wählen Sie als Dateisystem SWAP aus und legen Sie die Größe fest. Sobald Sie diese Auswahl getroffen haben, wird auch SWAP als Mountpoint hinterlegt. Ein neu angelegter Swap-Bereich wird dabei automatisch in /etc/fstab aufgenommen. Allerdings besteht zurzeit keine Möglichkeit, die Priorität (und damit die parallele Nutzung) von Swap-Bereichen über die grafische Oberfläche zu definieren.
480
Kapitel 10 · Geräteverwaltung
10.6 Mit Disketten arbeiten Dieser Abschnitt gibt Ihnen einen Überblick über die Möglichkeiten, unter Linux mit Disketten zu arbeiten.
10.6.1
Der Befehl fdformat
Dieser Befehl formatiert eine Diskette im Low-Level-Format. Die Syntax des Befehls lautet: # fdformat [-n] gerät
Zu den formatierbaren Geräten gehören die nachfolgend aufgeführten Geräte. Bei der Gerätedatei für Disketten ist die Major-Gerätenummer in der Regel 2 und die Minor-Gerätenummer wie folgt: /dev/fd0d360 /dev/fd0h1200 /dev/fd0D360 /dev/fd0H360 /dev/fd0D720
(minor (minor (minor (minor (minor
= = = = =
4) 8) 12) 12) 16)
/dev/fd1D720 /dev/fd1H720 /dev/fd1h360 /dev/fd1h720 /dev/fd1H1440
(minor (minor (minor (minor (minor
= = = = =
17) 17) 21) 25) 29)
...
Diese Gerätedateien sind für Disketten unterschiedlicher Speicherkapazität. /dev/ Disketten mit einer Kapazität von 360 Kbyte, /dev/fd1H1440 Disketten vom Typ High Density und einer Speicherkapazität von 1,44 Mbyte usw. Die generischen Gerätenamen /dev/fd0 und /dev/fd1 können mit diesem Befehl nicht verwendet werden, wenn ein nicht standardmäßiges Format verwendet wird.
fd0d360 bezeichnet
Der Befehl kennt folgende Option: Option
Beschreibung
-n
Auf die abschließende Überprüfung des Geräts wird verzichtet.
Tab. 10.44: Die Option des Befehls fdformat
Im folgenden Beispiel wird eine Diskette mit Hilfe des Gerätenamens /dev/fd0 formatiert: # fdformat /dev/fd0 Double-sided, 80 tracks, 18 sec/track. Total capacity 1440 kB. Formating ... c12 71
10.6.2
Der Befehl setfdprm
Mit diesem Befehl können Parameter zur Konfiguration des Diskettenlaufwerks eingestellt und gleichzeitig in der Datei /etc/fdprm hinterlegt werden. Die Syntax des Befehls lautet: # setfdprm [-option] gerät [name]
481
magnum
Mit Disketten arbeiten
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-c gerät
Löscht die Parameter des angegebenen Diskettenlaufwerks
-f gerät
Deaktiviert die Formatmeldungen für das angegebene, automatisch konfigurierte Diskettenlaufwerk
-p gerät name
Ein neuer Parametersatz wird dauerhaft für das angegebene Diskettenlaufwerk unter dem spezifizierten Namen aus der Datei /etc/fdprm gelesen. Alternativ ist es möglich, diese Parameter direkt über die Befehlszeile einzugeben.
-y gerät
Aktiviert die Formatmeldungen für das angegebene, automatisch konfigurierte Diskettenlaufwerk
Tab. 10.45: Die Optionen des Befehls setfdprm
Im folgenden Beispiel werden die Formatmeldungen für das Gerät viert:
/dev/fd0
akti-
# setfdprm -y /dev/fd0
10.6.3
Grafische Diskettenverwaltung mit KDE
KDE bietet ein grafisches Frontend zum Befehl fdformat an. Das Programm befindet sich im Hauptmenü unter SYSTEM - DATEISYSTEM - KFLOPPY:
Bild 10.17: Mit KFloppy Disketten formatieren
482
Kapitel 10 · Geräteverwaltung
10.6.4
Die Mtools
Der Umgang mit Disketten oder ZIP-Laufwerken, die FAT32-formatiert sind, kann unter Linux mit den Mtools gesteuert werden. Diese Disketten sind dann auch auf DOS- oder Windows-Systemen beschreib- und lesbar. Die Mtools sind eine Sammlung von Befehlen, die DOS-Befehlen angepasst wurden, um Umsteigern von DOS auf Linux den Umgang mit Disketten zu erleichtern. So können Sie bei den Mtools auch die unter Linux nicht gebräuchlichen Laufwerksbuchstaben verwenden. Das Diskettenlaufwerk muss auch nicht mit einem Linux-Befehl gemountet werden, um die Tools anzuwenden. In diesem Abschnitt werden die gebräuchlichsten Tools behandelt.
Der Befehl mcopy Mit diesem Befehl können Dateien und Verzeichnisse auf eine Diskette geschrieben werden. Er entspricht dem Linux-Befehl cp bzw. dem DOS-Befehl copy. Die Syntax des Befehls lautet: # mcopy [-option(en)] quelldatei zieldatei
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a
Übertragung einer von DOS stammenden ASCII-Textdatei. Der Befehl übersetzt die Zeichen Carriage Return/Line Feed in Line Feed.
-b
Batch-Modus. Optimierung für große, rekursive Kopien, aber unsicher, falls während des Kopiervorgangs ein Absturz erfolgt.
-m
Bewahrt die Änderungszeit der kopierten Dateien auf
-n
Keine Bestätigung wird angefragt, wenn bereits vorhandene Linux-Dateien durch das Kopieren überschrieben werden.
-p
Bewahrt die Attribute der kopierten Dateien auf
-Q
Beim Kopieren von mehreren Dateien wird unterbrochen, sobald ein Kopiervorgang misslingt, zum Beispiel, wenn nicht genügend Platz auf dem Datenträger vorhanden ist.
-s
Rekursives Kopieren: Auch untergeordneteVerzeichnisse und deren Inhalte werden kopiert
-t
Übertragung einer Textdatei unter Berücksichtigung der Umwandlung der Zeichen Carriage Return/Line Feed nach Line Feed, wenn das Kopieren von DOS nach Linux erfolgt, und umgekehrt.
-T
Übertragung einer ASCII-Textdatei mit Zeichensatzkonvertierung. Im Unterschied zur Option -a werden auch PC-8-Zeichen in ISO-8859-1 übersetzt, so weit möglich.
-v
Ausführliche Ausgabe des Namens jeder kopierten Datei
Tab. 10.46: Die Optionen des Befehls mcopy
483
magnum
Mit Disketten arbeiten
Im folgenden Beispiel wird die Datei /root/test100 auf die DOS-formatierte Diskette kopiert: # mcopy -t /root/test100 a:
Der Befehl mdir Mit diesem Befehl kann der Inhalt einer Diskette oder eines Verzeichnisses auf der Diskette aufgelistet werden. Er entspricht dem Linux-Befehl ls bzw. dem DOSBefehl dir. Die Syntax des Befehls lautet: # mdir [-option(en)] verzeichnis(se)
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-/
Rekursive Ausgabe
-a
Auch versteckte Dateien werden ausgegeben.
-b
Übersichtliche Ausgabe. Jeder Verzeichnis- oder Dateiname wird in eine einzelne Zeile ausgegeben.
-f
Schnelle Ausgabe, ermittelt keinen freien Speicherplatz
Tab. 10.47: Die Optionen des Befehls mdir
Im folgenden Beispiel wird der Inhalt einer Diskette aufgelistet: # mdir a: Volume in drive A has no label Volume Serial Number is 042C-796B Directory for A:/ test100 1 file 161 bytes 1 457 152 bytes free
Der Befehl mdel Mit diesem Befehl können Dateien auf der Diskette gelöscht werden. Er entspricht dem Linux-Befehl rm bzw. dem DOS-Befehl del. Die Syntax des Befehls lautet: # mdel [-v] datei
Der Befehl kennt folgende Option: Option
Beschreibung
-v
Ausführlicher Modus
Tab. 10.48: Die Option des Befehls mdel
Im folgenden Beispiel wird die Datei test100 auf der DOS-formatierten Diskette gelöscht: # mdel -v a:/test100 Removing A:/test100
484
Kapitel 10 · Geräteverwaltung
Der Befehl mdeltree Mit diesem Befehl können DOS-Verzeichnisse gelöscht werden. Er entspricht dem Linux-Befehl rm -r bzw. dem DOS-Befehl del. Die Syntax des Befehls lautet: # mdeltreee [-v] verzeichnis
Der Befehl kennt folgende Option: Option
Beschreibung
-v
Ausführlicher Modus
Tab. 10.49: Die Option des Befehls mdeltree
Im folgenden Beispiel wird das Verzeichnis projekt100 auf einer DOS-formatierten Diskette gelöscht: # mdeltree -v a:/projekt100 Removing A:/projekt100
Der Befehl mformat Mit diesem Befehl kann eine Diskette mit dem FAT-Dateisystem (nach DOS-/Windows-Standard) formatiert werden. Die Syntax des Befehls lautet: # mformat [-option(en)] laufwerk
Die wichtigsten Optionen des Befehls lauten: Option
Beschreibung
-1
Formatiert eine einzige Seite (single-sided)
-2
Mit dieser Option können die Sektoren größer angelegt werden (2m-Format)
-4
Formatiert eine 360 Kbyte double-sided Diskette
-8
Formatiert eine Diskette mit 8 Sektoren pro Spur
-f
Definiert die Größe des DOS-Dateisystems, das formatiert wird. 1440 bedeutet zum Beispiel 1.440 Kbyte, double-sided, 18 Sektoren pro Spur, 80 Zylinder.
-F
Formatiert die Partition mit FAT32
-h
Die Anzahl der Köpfe
-L
Definiert die Länge des FAT-Dateisystems
-n
Definiert die Anzahl der Sektoren pro Spur
-S
Gibt den Größencode an
-t
Definiert die Anzahl von Spuren
-v
Definiert das Volume Label, das aus bis zu 11 Zeichen bestehen kann
-x
Formatiert die Diskette im XDF-Format
Tab. 10.50: Die Optionen des Befehls mformat
485
Monitor und Grafikkarte einrichten
magnum
Im folgenden Beispiel wird eine Diskette mit FAT32 formatiert: # mformat -F a:
Der Befehl mmd Mit diesem Befehl können DOS-Verzeichnisse erstellt werden. Er entspricht dem Linux-Befehl mkdir bzw. dem DOS-Befehl md. Die Syntax des Befehls lautet: # mmd verzeichnis
Im folgenden Beispiel wird das Verzeichnis projekt100 auf einer DOS-formatierten Diskette erstellt: # mmd a:/projekt100
Der Befehl rmd Mit diesem Befehl können DOS-Verzeichnisse gelöscht werden. Er entspricht dem Linux-Befehl rmdir bzw. dem DOS-Befehl rd. Die Syntax des Befehls lautet: # rmd [-v] verzeichnis
Der Befehl kennt folgende Option: Option
Beschreibung
-v
Ausführlicher Modus
Tab. 10.51: Die Option des Befehls mrd
Im folgenden Beispiel wird das Verzeichnis projekt100 auf einer DOS-formatierten Diskette gelöscht: # rmd -v a:/projekt100 Removing A:/projekt100
10.7 Monitor und Grafikkarte einrichten Dieser Abschnitt zeigt Ihnen, wie Sie Monitor und Grafikkarte mit Hilfe des Befehls xf86config oder über die grafische Oberfläche mit SAX einrichten können. SAX kann auch verwendet werden, wenn Sie noch keine grafische Oberfläche installiert haben.
10.7.1
Der Befehl xf86config
Der Befehl xf86config bietet eine Möglichkeit, um die Maus, die Tastatur, den Monitor und die Grafikkarte zu konfigurieren. Dieser Befehl steht unter Fedora Core Linux nicht zur Verfügung. Sie können alternativ X verwenden. Die Möglichkeiten von X werden ausführlich in den Man Pages beschrieben, siehe man X und siehe man Xserver. Der Befehl wird wie folgt aufgerufen: # /usr/X11/bin/xf86config
486
Kapitel 10 · Geräteverwaltung
Die Konfigurationsdaten werden in die Datei /etc/X11/XF86Config eingetragen. Normalerweise werden die Grafikkarte und der Monitor schon bei der Installation erkannt und korrekt konfiguriert. Sollte dies fehlschlagen, können Sie alternativ zum Befehl xf86config bei SUSE Linux das Programm SAX verwenden, das eine grafische Konfiguration durchführt. Alternativ können auch die Befehle xf86cfg oder XFree86 verwendet werden. Der Befehl läuft in mehreren Schritten ab und Sie sollten sich vor dem Starten die Daten zu Ihrer Maus, Ihrer Tastatur, Ihrer Grafikkarte und Ihrem Monitor zurechtlegen. Nach den Fragen zur Maus und Tastatur werden die Spezifikationen zum Monitor abgefragt. Sie erhalten folgende Information: The two critical parameters are the vertical refresh rate, which is the rate at which the whole screen is refreshed, and most importantly the horizontal sync rate, which is the rate at which scanlines are displayed.
Diese Meldung weist Sie außerdem darauf hin, dass Sie im Zweifelsfall Einblick in das Handbuch Ihres Monitors nehmen sollen. Sie können auch die MonitorDatenbank /usr/X11R6/lib/X11/doc/Monitors einsehen, ob Ihr Monitor dort überhaupt vorhanden ist. Zuerst müssen Sie den horizontalen Synchronisationsbereich Ihres Monitors festlegen. Dabei kann entweder ein vordefinierter Bereich ausgewählt werden oder Sie definieren einen speziellen Bereich. Sie werden darauf hingewiesen, dass Sie auf keinen Fall einen Monitortyp auswählen, dessen horizontaler Synchronisationsbereich außerhalb der Möglichkeiten des Bildschirms liegt. Das gilt aber nur für ältere Monitore – im Zweifelsfall können Sie aber eine »konservativere« Einstellung wählen. Eine Liste wie die folgende wird angezeigt: hsync in kHz; monitor type with characteristic modes 1 31.5; Standard VGA, 640x480 @ 60 Hz 2 31.5 - 35.1; Super VGA, 800x600 @ 56 Hz 3 31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600) 4 31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz 5 31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz 6 31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz 7 31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz 8 31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz 9 31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz 10 31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz 11 Enter your own horizontal sync range
Anschließend müssen Sie den vertikalen Synchronisationsbereich Ihres Monitors festlegen. Dabei kann wiederum entweder ein vordefinierter Bereich ausgewählt werden oder Sie definieren einen speziellen Bereich.
487
Monitor und Grafikkarte einrichten
magnum
For interlaced modes, the number that counts is the high one (e.g. 87 Hz rather than 43 Hz). 1 50-70 2 50-90 3 50-100 4 40-150 5 Enter your own vertical sync range
Anschließend werden Sie aufgefordert, einen Hersteller- oder Modellnamen als identifizierende Bezeichnung einzugeben. Im nächsten Schritt werden die spezifischen Einstellungen der Grafikkarte konfiguriert, die aus einer Datenbank mit Grafikkartendefinitionen ausgewählt werden können. Da Karten desselben Modells Abweichungen aufweisen können, zum Beispiel in Bezug auf den Taktgeber, werden Sie nach Ihrer Auswahl nach weiteren Kartenkomponenten gefragt. Sie sollten auf keinen Fall eine Karte aus der Datenbank wählen, die der Ihren ähnelt, wenn Sie nicht die exakte Kartenbezeichnung in der Datenbank finden: Do you want to look at the card database? 0 * Generic VESA compatible 1 * Generic VGA compatible 2 * Unsupported VGA compatible 3 ** 3DLabs, TI (generic) [glint] 4 ** 3Dfx (generic) [tdfx] 5 ** ATI (generic) [ati] 6 ** ATI Radeon (generic) [radeon] 7 ** ATI Rage 128 based (generic) [r128] 8 ** Alliance Pro Motion (generic) [apm] 9 ** Ark Logic (generic) [ark] 10 ** Chips and Technologies (generic) [chips] 11 ** Cirrus Logic (generic) [cirrus] 12 ** Cyrix MediaGX (generic) [cyrix] 13 ** DEC TGA (generic) [tga] 14 ** Intel i740 (generic) [i740] 15 ** Intel i810 (generic) [i810] 16 ** Linux framebuffer (generic) [fbdev] 17 ** Matrox Graphics (generic) [mga] Enter a number to choose the corresponding card definition. Press enter for the next page, q to continue configuration. Your selected card definition: Identifier: ** S3 Savage (generic) [savage] Chipset: Driver: savage
Nach dieser Auswahl müssen Sie weitere Informationen zu Ihrer Grafikkarte bereitstellen, und zwar zu deren Speicherausstattung: How 1 2 3 4 5 6 7 8 9
488
much video memory do you have on your video card: 256K 512K 1024K 2048K 4096K 8192K 16384K 32768K 65536K
Kapitel 10 · Geräteverwaltung
10 131072K 11 262144K 12 Other Enter your choice:
Danach müssen Sie einen Hersteller- oder Modellnamen als identifizierende Zeichenkette für die Grafikkarte eingeben. Im nächsten Schritt muss die Auflösung festgelegt werden. Hier haben Sie die Möglichkeit, die vordefinierten Modi zu übernehmen oder zu ändern: Currently it is set to: "1280x1024" "1024x768" "800x600" "640x480" for 8-bit "1024x768" "800x600" "640x480" for 16-bit "800x600" "640x480" for 24-bit Modes that cannot be supported due to monitor or clock constraints will be automatically skipped by the server. 1 Change the modes for 8-bit (256 colors) 2 Change the modes for 16-bit (32K/64K colors) 3 Change the modes for 24-bit (24-bit color) 4 The modes are OK, continue. Enter your choice:
Nach dieser Aktion können Sie die Auflösung aus der nachfolgenden Liste auswählen: Select modes from the following list: 1 "640x400" 2 "640x480" 3 "800x600" 4 "1024x768" 5 "1280x1024" 6 "320x200" 7 "320x240" 8 "400x300" 9 "1152x864" a "1600x1200" b "1800x1400" c "512x384" d "1400x1050" Please type the digits corresponding to the modes that you want to select. For example, 432 selects "1024x768" "800x600" "640x480", with a default mode of 1024x768.
Anschließend folgt die Information, dass Sie einen virtuellen Desktop so einrichten können, dass der Bildschirmbereich über die physikalischen Abmessungen hinausgeht. Sie müssen sich mit y oder n gegen oder für diesen vergrößerten virtuellen Desktop entscheiden: Please answer the following question with either 'y' or 'n'. Do you want a virtual screen that is larger than the physical screen?
Danach wählen Sie, welche Farbtiefe Sie standardmäßig verwenden möchten: Please specify which color depth you want to use by default: 1 1 bit (monochrome) 2 4 bits (16 colors) 3 8 bits (256 colors) 4 16 bits (65536 colors) 5 24 bits (16 million colors) Enter a number to choose the default depth.
489
Monitor und Grafikkarte einrichten
magnum
Schließlich werden Sie informiert, dass die Konfigurationsdatei XF86Config nun geschrieben wird. Sie sollten unbedingt verhindern, dass Sie mit dem Befehl xf86config diese Datei versehentlich abändern. Shall I write it to /etc/X11/XF86Config?
Nachdem die Datei abgespeichert wurde, sollten Sie die grafische Oberfläche mit dem Befehl startx starten können. Sollte es beim Starten Probleme geben, können Sie mit der Tastenkombination (Strg)+(Alt)+(+)oder mit (Strg)+(Alt)+(-) die Grafikauflösung erhöhen oder vermindern. Wenn dies auch nicht möglich ist, können Sie die grafische Oberfläche mit der Tastenkombination (Strg)+(Alt)+(æ__) abbrechen und den Befehl xf86config erneut durchführen. Unter Debian GNU/Linux 3.1 können Sie den Befehl dpkg-reconfigure xserverxfree86 verwenden. Die neue Version mit dem Codenamen etch bzw. die Version »unstable« mit dem Codenamen sid verwendet den Befehl dpkg-reconfigure xserver-xorg.
10.7.2
Die Datei /etc/X11/XF86Config
Diese Datei ist die wichtigste Konfigurationsdatei für den X-Server. In der Regel sollte sie mit Hilfe von grafischen Tools oder Befehlen bearbeitet und nur in äußersten Notfällen manuell editiert werden: # # # # # #
more /etc/X11/XF86Config SaX generated XFree86 config file Created on: 2003-04-13. Version: 4.3 Automatically generated by [ISaX] (4.3) PLEASE DO NOT EDIT THIS FILE!
Section "Files" FontPath "/usr/X11R6/lib/X11/fonts/misc:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/local" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/100dpi:unscaled" ...
Seit XFree86 Version 4 ist die Namensgebung leider nicht bei allen Distributionen einheitlich; manchmal nennt sich die Datei nun auch XF86Config-4. Die Datei ist in einzelne Sektionen aufgeteilt: Sektion
Beschreibung
Files
Diese Sektion enthält Variablen mit Pfadangaben, in denen der Server nach Dateien sucht.
Modules
Diese Sektion enthält Module, die für den X-Server dynamisch nachladbare Erweiterungen sind. Damit können verschiedene Geräte unterstützt werden.
Tab. 10.52: Sektionen der Konfigurationsdatei XF86Config
490
Kapitel 10 · Geräteverwaltung
Sektion
Beschreibung
ServerFlags
Diese Sektion enthält verschiedene Optionen für die Arbeit des X-Servers, zum Beispiel ist es hier möglich, die Tastenkombination (Strg)+(Alt)+(æ__) zum Beenden des X-Servers zu deaktivieren.
Keyboard
Diese Sektion steuert in erster Linie die Tastaturbelegung.
Pointer
Diese Sektion enthält Informationen über die Maus, zum Beispiel die Anzahl der unterstützten Tasten usw.
Monitor
Diese Sektion dient der Einstellung des Bildschirms.
Device
Diese Sektion konfiguriert eine Grafikkarte. Jede Grafikkarte belegt eine eigene Sektion Device.
Screen
Diese Sektion ordnet Grafikkarte, Monitor und X-Server den unterstützten Auflösungen zu.
Tab. 10.52: Sektionen der Konfigurationsdatei XF86Config (Forts.)
10.7.3
Der Befehl vidmode
Der Befehl vidmode kann dazu verwendet werden, den Videomodus in einem bootfähigen Image zu definieren. Im Gegensatz zum zuvor vorgestellten Befehl xf86config nehmen Sie also keine Einstellungen in der Datei XF86Config vor, sondern setzen Kernel-Parameter. Ohne Argumente erfolgt eine Ausgabe des aktuellen Modus, der ein 1 Byte großer Wert ist und sich im Kernel an Position 506 befindet. Auch diese Position kann verändert werden. Wird sie weggelassen an der Befehlszeile, wird der Standard 506 verwendet. Die Syntax des Befehls lautet: # vidmode [option] image [modus [position]]
Der Befehl kennt folgende Modi: Modus
Beschreibung
-3
Der Benutzer wird nach dem Modus gefragt.
-2
Erweiteter VGA-Modus
-1
Normaler VGA-Modus
n bzw. 0 - 3
Entspricht einer Eingabe von n am Eingabeprompt beim Booten
Tab. 10.53: Die Optionen des Befehls vidmode
Der Befehl rdev -v ist ein Synonym für vidmode. Der Befehl ist nicht notwendig, wenn der Bootmanager LILO verwendet wird, da in diesem Fall der Videomodus auch während des Systemstarts an der Eingabeaufforderung von LILO eingegeben werden kann. Im nachfolgenden Beispiel wird der Modus auf -2 verändert und anschließend ausgegeben: # vidmode /boot/vmlinuz -2 # vidmode /boot/vmlinuz 65534
491
Monitor und Grafikkarte einrichten
10.7.4
magnum
Monitor und Grafikkarte mit YaST und SaX2 einrichten
Um den Monitor und die Grafikkarte einzurichten, können Sie unter SUSE Linux auch YAST verwenden. Wählen Sie dazu die Menüfolge HARDWARE - GRAFIKKARTE UND MONITOR. Im ersten Fenster können Sie entscheiden, ob Sie mit der grafischen Oberfläche oder nur im Textmodus arbeiten möchten:
Bild 10.18: Bildschirmeinstellungen mit YAST
Wenn Sie die Option GRAFISCHE OBERFLÄCHE aktiviert lassen, können Sie mit der Schaltfläche ÄNDERN in das Programm SAX2 verzweigen und dort Einstellungen zu folgenden Punkten durchführen:
쮿
Anzeige (Monitor und Grafikkarte)
쮿
Multihead (Anschluss mehrerer Bildschirme)
쮿
Eingabegeräte (Maus, Tastatur, Grafiktablett, Touchscreen)
쮿
Zugriffskontrolle (VNC und AccessX)
Wenn Sie keine grafische Oberfläche installiert haben oder sich Ihre grafische Oberfläche aufgrund von Problemen mit Grafikkarte oder Monitor nicht starten lässt, können Sie SAX2 auch direkt an der Befehlszeile als root mit sax2 aufrufen.
492
Kapitel 10 · Geräteverwaltung
Die Auswahl ANZEIGE ist wieder in mehrere Punkte unterteilt:
Bild 10.19: Anzeige mit SaX2 einstellen
Wenn Sie auf MONITOR klicken, wird die aktuelle Monitorkonfiguration angezeigt:
Bild 10.20: Aktuelle Monitorkonfiguration mit SaX2
493
Monitor und Grafikkarte einrichten
magnum
Die Konfiguration kann über die Schaltfläche KONFIGURATION ÄNDERN verändert werden:
Bild 10.21: Aktuelle Monitorkonfiguration mit SaX2 ändern
Klicken Sie im nächsten Fenster auf EIGENSCHAFTEN, um die Monitoreinstellungen zu verändern. Im ersten Registerblatt können Sie den Monitortyp und die Auflösung auswählen:
Bild 10.22: Monitortyp mit SaX2 ändern
494
Kapitel 10 · Geräteverwaltung
Wenn Sie Ihre Hardware nicht kennen, können Sie einfach VESA GENERISCH verwenden. Im Registerblatt FREQUENZEN können Sie die Frequenzbereiche Ihres Monitors einstellen. Beachten Sie dabei den Warnhinweis:
Bild 10.23: Frequenzbereich mit SaX2 ändern
Im letzten Registerblatt können Sie zum Beispiel die Bildschirmgröße und DPMS (Display Powermanagement Signaling), einen Standard für Grafikkarten und Monitore zur Aktivierung des Powermanagements, einstellen:
Bild 10.24: Bildschirmgröße in SaX2 einstellen
495
Monitor und Grafikkarte einrichten
magnum
Wenn Sie auf OK und anschließend auf FERTIG klicken, kommen Sie ins Auswahlmenü zurück. Die Auswahl der Grafikkarte zeigt die aktuelle Konfiguration an:
Bild 10.25: Aktuelle Grafikkartenkonfiguration
Diese kann wieder über die Schaltfläche KONFIGURATION ÄNDERN und anschließend EIGENSCHAFTEN verändert werden. Sie können auf der linken Seite den Hersteller und auf der rechten Seite den Typ Ihrer Grafikkarte auswählen:
Bild 10.26: Grafikkartenkonfiguration mit SaX2 ändern
496
Kapitel 10 · Geräteverwaltung
Im Registerblatt ERWEITERT können Sie noch einige Feineinstellungen zur Grafikkarte festlegen, zum Beispiel die Bildschirmrotation:
Bild 10.27: Grafikkarte mit SaX2 einstellen
Wenn Sie auf OK und anschließend auf FERTIG klicken, kommen Sie ins Auswahlmenü zurück. Eine weitere Einstellungsmöglichkeit betrifft die Farben und Auflösung:
Bild 10.28: Aktuelle Oberflächenkonfiguration mit SaX2 anzeigen
497
magnum
Monitor und Grafikkarte einrichten
Klicken Sie auf die Schaltfläche KONFIGURATION EIGENSCHAFTEN, um die Farbtiefe zu ändern:
ÄNDERN
und anschließend auf
Bild 10.29: Farbtiefe mit SaX2 ändern
Die Auflösung können Sie in der nächsten Registerkarte einstellen:
Bild 10.30: Auflösung mit SaX2 ändern
498
Kapitel 10 · Geräteverwaltung
In der Registerkarte ERWEITERT können Sie eine benutzerdefinierte Auflösung einrichten:
Bild 10.31: Benutzerdefinierte Auflösung mit SaX2 einstellen
Klicken Sie auf OK und anschließend auf FERTIG, um ins Auswahlmenü zurückzukehren. Die nächste Einstellung ist die virtuelle Auflösung:
Bild 10.32: Virtuelle Auflösung mit SaX2 einstellen
499
Monitor und Grafikkarte einrichten
magnum
Der X-Server kennt zwei Auflösungsarten: die physische Auflösung, die tatsächlich vom Bildschirm dargestellt werden kann, und die virtuelle Auflösung, bei der nur ein Ausschnitt in der Größe der gewählten physischen Auflösung angezeigt wird. Um den gesamten Bildschirm zu sehen, kann man mit der Maus über den Bildschirmrand hinausnavigieren, wobei der Ausschnitt automatisch in die entsprechende Richtung verschoben wird. Im Hauptmenü können Sie als Nächstes die 3D-Beschleunigung konfigurieren, wenn Sie eine entsprechende Grafikkarte besitzen.
Bild 10.33: 3D-Beschleunigung mit SaX3 aktivieren
Der letzte Punkt des Anzeigemenüs betrifft die Einstellung von Bildlage und -größe:
Bild 10.34: Geometrieparameter mit SaX2 einstellen
500
Kapitel 10 · Geräteverwaltung
Wenn Sie auf KONFIGURATION ÄNDERN klicken, erscheint das Unterprogramm XFINE2, mit dem Sie die Bildschirmgeometrie ändern können. Klicken Sie auf die entsprechenden Pfeile, um Ihre Bildschirmanzeige zu zentrieren:
Bild 10.35: Bildschirmgeometrie ändern
In der zweiten Registerkarte können Sie die Größe ändern. Verwenden Sie dazu wieder den Pfeil in die gewünschte Richtung, um die Bildschirmdarstellung zu vergrößern oder zu verkleinern:
Bild 10.36: Bildschirmgröße ändern
Der zweite Teil von SaX2 betrifft Multihead-Einstellungen. Dieses Menü können Sie verwenden, wenn Sie zwei oder mehr Bildschirme an Ihr Linux-System anschließen:
501
Monitor und Grafikkarte einrichten
magnum
Bild 10.37: Multihead mit SaX2 konfigurieren
Sie sollten sehr vorsichtig mit den Monitor- und Grafikkarteneinstellungen mit SaX2 umgehen. Bei falschen Einstellungen kann die grafische Oberfläche nicht mehr gestartet werden. In diesem Fall können Sie als root an der Befehlszeile mit dem Befehl init 3 in den Runlevel 3 verzweigen und anschließend den Befehl sax2 starten. In der Regel bringt SAX2 die Einstellungen selbständig wieder in Ordnung. Alternativ können Sie die korrekten Werte auswählen. Der dritte Abschnitt von SAX2 wird in 10.9.3 besprochen. Der letzte Abschnitt ZUGRIFFSKONTROLLE von SaX2 bietet die Möglichkeit, die VNC-Konfiguration oder AccessX-Konfiguration einzustellen:
Bild 10.38: Zugriffskontrolle von SaX2
502
Kapitel 10 · Geräteverwaltung
Alternativ können Sie Maus, Tastatur und Joystick direkt in YAST im Menü HARDWARE mit den Optionen MAUSMODELL WÄHLEN, TASTATURBELEGUNG AUSWÄHLEN und JOYSTICK konfigurieren. Der erste Menüpunkt enthält die VNC-Konfiguration. VNC bedeutet Virtual Network Computing und ermöglicht es Ihnen, einen PC fernzusteuern, zu überwachen und zu warten:
Bild 10.39: VNC-Konfiguration mit SaX2 aktivieren
Die zweite Option betrifft die AccessX-Konfiguration. Wenn Sie Ihren Rechner ohne Maus bedienen möchten und AccessX aktivieren, ist es möglich, den Mauszeiger auf Ihrem Bildschirm mit dem Nummerntastenblock Ihrer Tastatur zu steuern.
Bild 10.40: AccessX-Konfiguration aktivieren
503
magnum
Terminal einstellen
Die Taste (÷) aktiviert zum Beispiel die linke Maustaste, (×) die mittlere Maustaste und (–) die rechte Maustaste. Weitere Informationen dazu finden Sie im KDEHardware-Hilfezentrum. Wenn Sie SaX2 beenden, erhalten Sie folgende Meldung:
Bild 10.41: SaX2 beenden
Sie können die Konfiguration zuerst testen, bevor Sie sie speichern. Sollte diese nicht wie erwartet funktionieren, dann verwenden Sie ABBRECHEN, um die Änderungen zu verwerfen.
10.8 Terminal einstellen Die Befehle dieses Abschnitts werden in der Regel nur noch benötigt, wenn Sie sich über eine einfache Terminalsitzung remote auf einem Linux- oder Unix-Rechner anmelden und im Terminalfenster bestimmte Tasten, wie zum Beispiel (æ__), nicht richtig funktionieren.
10.8.1
Der Befehl tty
Dieser Befehl gibt den Terminal- bzw. Leitungsnamen des angeschlossenen Terminals aus. $ tty /dev/pts/3
10.8.2
Der Befehl stty
Dieser Befehl kann Terminaleinstellungen anzeigen und ändern. Es kann zum Beispiel vorkommen, dass in einer Terminalsitzung die Taste (æ__) nicht richtig funktioniert – dies lässt sich mit dem Befehl stty beheben. Die Syntax des Befehls lautet: # stty [-option(en)]
504
Kapitel 10 · Geräteverwaltung
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a oder --all
Gibt alle aktuellen Einstellungen des Terminals in menschlich lesbarer Form aus
-g oder --save Gibt alle aktuellen Einstellungen in einer von stty lesbaren Form aus -F gerät oder --file
Öffnet und verwendet das angegebene Gerät anstelle der Standardeingabe
Tab. 10.54: Die Optionen des Befehls stty
Im folgenden Beispiel werden alle Terminaleinstellungen ausgegeben: # stty -a speed 9600 baud; rows 25; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ; eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Im nächsten Beispiel wird dem Löschen von Zeichen die Taste (æ__) zugewiesen. Beachten Sie, dass das Zeichen »^« durch das gleichzeitige Drücken auf die Taste (Strg) entsteht: # stty erase ^H
Denselben Effekt erreichen Sie auch durch diese Eingabe: # stty erase ^?
10.9 Tastatur einrichten In diesem Abschnitt lernen Sie, wie Sie mit Befehlen oder der grafischen Oberfläche die Tastatur einrichten können. Ein weiterer Befehl, xf86config, wurde bereits in Abschnitt 10.7.1 vorgestellt.
10.9.1
Der Befehl kbd_mode
Mit diesem Befehl kann der aktuelle Tastaturmodus ausgegeben oder eingestellt werden. Die Syntax des Befehls lautet: # kbd_mode [-option]
505
magnum
Tastatur einrichten
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a
Setzt den Modus auf XLATE, das entspricht dem ASCII-Modus
-k
Setzt den Modus auf MEDIUMRAW, das entspricht dem Tastaturcode-Modus
-s
Setzt den Modus auf RAW, das entspricht dem Scancode-Modus
-u
Setzt den Modus auf UNICODE, das entspricht dem UTF-8-Modus
Tab. 10.55: Die Optionen des Befehls kbd_mode
Im folgenden Beispiel wird der aktuelle Tastaturmodus zuerst ausgegeben und dann neu eingestellt: # kbd_mode The keyboard is in the default (ASCII) mode # kbd_mode -u # kbd_mode The keyboard is in Unicode (UTF-8) mode
Sie sollten diesen Befehl mit äußerster Sorgfalt anwenden, denn er kann unter einem X-System das System unbenutzbar machen! Wenn Sie eine grafische Oberfläche wie zum Beispiel KDE nutzen, sollten Sie diese Einstellungen besser dort vornehmen, das heißt zum Beispiel im KDE-Kontrollzentrum.
10.9.2
Der Befehl kbdrate
Dieser Befehl stellt die Wiederholungsrate und Verzögerungszeit der Tastatur ein. Die Verzögerungszeit ist die Zeitspanne, die auf eine Taste gedrückt werden muss, bevor sie wiederholt wird. Verwenden Sie den Befehl ohne Optionen, dann wird die Wiederholungsrate auf 10,9 Zeichen pro Sekunden und die Verzögerungszeit auf 250 Millisekunden eingestellt. Die Syntax des Befehls lautet: # kbdrate [-option(en)]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-d zeit
Ändert die Verzögerungszeit auf die in Millisekunden angegebene Zeit. Der zulässige Wert für INTEL-Systeme liegt zwischen 250 und 1000 Millisekunden, in Abstufungen von 250 Millisekunden.
-r rate
Ändert die Wiederholungsrate auf die angegebene Zeitspanne. Bei INTEL-Systemen liegt der zulässige Wert zwischen 2.0 und 30.0 Zeichen pro Sekunde. Es sind nur bestimmte Werte möglich, daher wählt der Befehl den nächstmöglichen Wert in Bezug auf den Eingabewert. Die vorgegebenen Werte sind: 2.0, 2.1, 2.3, 2.5, 2.7, 3.0, 3.3, 3.7, 4.0, 4.3, 4.6, 5.0, 5.5, 6.0, 6.7, 7.5, 8.0, 8.6, 9.2, 10.0, 10.9, 12.0, 13.3, 15.0, 16.0, 17.1, 18.5, 20.0, 21.8, 24.0, 26.7, 30.0 in Zeichen pro Sekunde.
-s
Stiller Modus; es werden keine Meldungen ausgegeben.
Tab. 10.56: Die Optionen des Befehls kbdrate
506
Kapitel 10 · Geräteverwaltung
Im folgenden Beispiel werden die Verzögerungszeit auf 15 Zeichen pro Sekunden und die Wiederholrate auf 510 Millisekunden eingestellt. Da nur die Werte 250, 500, 750 und 1000 Millisekunden gültige Werte sind, wird 510 automatisch auf den nächsthöheren Wert 750 Millisekunden gesetzt: # kbdrate -r 15 -d 510 Typematic Rate set to 15.0 cps (delay = 750 ms)
Im nächsten Beispiel werden die Verzögerungszeit und die Wiederholrate auf die Standardwerte gesetzt: # kbdrate Typematic Rate set to 10.9 cps (delay = 250 ms)
10.9.3
Maus und Tastatur mit YaST und SaX2 einrichten
Um Maus und Tastatur einzurichten, können Sie unter SUSE Linux auch YAST verwenden. Wählen Sie dazu die Menüfolge HARDWARE - GRAFIKKARTE UND MONITOR. Der dritte Abschnitt bietet Ihnen die Möglichkeit, verschiedene Eingabegeräte zu konfigurieren, zum Beispiel die Maus:
Bild 10.42: Eingabegeräte mit SaX2 konfigurieren
507
Tastatur einrichten
Zuerst wird Ihnen die aktuelle Mauskonfiguration angezeigt:
Bild 10.43: Mauskonfiguration mit SaX2 anzeigen
Über KONFIGURATION ÄNDERN kann diese verändert werden:
Bild 10.44: Mauskonfiguration mit SaX2 ändern
508
magnum
Kapitel 10 · Geräteverwaltung
Wählen Sie EIGENSCHAFTEN, um den Maustyp oder Anschluss zu ändern. In der ersten Registerkarte können Sie auf der linken Seite den Hersteller und anschließend rechts den Produkttyp auswählen:
Bild 10.45: Hersteller und Maustyp mit SaX2 auswählen
In der Registerkarte ANSCHLUSS können Sie den Gerätenamen auswählen, an dem die Maus angeschlossen ist:
Bild 10.46: Mausanschluss mit SaX2 auswählen
509
Tastatur einrichten
magnum
In der letzten Registerkarte können Sie die Radunterstützung aktivieren:
Bild 10.47: Radunterstützung der Maus aktivieren
Klicken Sie auf OK und anschließend auf FERTIG, um ins Auswahlmenü zurückzukehren. Die nächste Einstellung betrifft die Tastatur:
Bild 10.48: Aktuelle Tastatureinstellung mit SaX2 anzeigen
510
Kapitel 10 · Geräteverwaltung
Über die Schaltfläche KONFIGURATION ÄNDERN können Sie die Tastatureinstellungen bearbeiten, zum Beispiel zusätzliche Tastaturbelegungen einstellen oder das Layout ändern:
Bild 10.49: Tastatureinstellungen mit SaX2 bearbeiten
Über die Schaltfläche OPTIONEN kommen Sie in ein Untermenü, in dem Sie Tastenkombinationen bestimmten Aktionen zuordnen können:
Bild 10.50: Tastenzuordnungen festlegen
511
Systemkonfiguration mit SUSE Linux
magnum
10.10 Systemkonfiguration mit SUSE Linux SUSE Linux bietet ein spezielles Programm, SuSEconfig, an, um das System zu konfigurieren. Dazu werden Variablen verwendet, die in den verschiedenen Dateien des Verzeichnisses /etc/sysconfig gesetzt wurden. Das Programm verwendet spezielle Skripte in /sbin/conf.d, um die verschiedenen Subsysteme zu konfigurieren. Die Variablen in /etc/sysconfig/postfix werden zum Beispiel vom Skript /sbin/conf.d/ SuSEconfig.postfix ausgewertet. SuSEconfig ist ein Backend zu YAST und aktiviert die von YAST durchgeführten Änderungen. Die Syntax lautet: # SuSEconfig [-optionen(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-module modul
Startet SuSEconfig mit dem Konfigurationsmodul für ein bestimmtes Subsystem anstatt für alle Module
-nomodule
Führt die Subsystem-spezifischen Module nicht aus
-nonewpackage
Überspringt Konfigurationsmodule, die nur laufen, wenn ein Paket neu installiert wurde
-quick
Baut Kernel-Modulabhängigkeiten nicht neu auf. Diese Option wird auch von der Option -module verwendet.
-verbose
Ausführlicher Modus
Tab. 10.57: Die Optionen des Befehls SuSEconfig
Der Befehl SuSEconfig hat folgende Ausgabe: # SuSEconfig Starting SuSEconfig, the SuSE Configuration Tool... Running in full featured mode. Reading /etc/sysconfig and updating the system... Executing /sbin/conf.d/SuSEconfig.apache2... Looking for multi-processing modules (MPM)... 1 MPM installed (prefork) APACHE_MPM is unset (/etc/sysconfig/apache2), picked "prefork" create symbolic link `/usr/sbin/httpd2' to `/usr/sbin/httpd2-prefork' create symbolic link `/usr/share/apache2/build/config_vars.mk' to `config_vars.mkprefork' Executing /sbin/conf.d/SuSEconfig.automake... Executing /sbin/conf.d/SuSEconfig.fonts... Creating cache files for Xft ...................... Creating fonts.{scale,dir} files ........... Executing /sbin/conf.d/SuSEconfig.gnome-print... Executing /sbin/conf.d/SuSEconfig.gnome-vfs2... Executing /sbin/conf.d/SuSEconfig.groff... ... Executing /sbin/conf.d/SuSEconfig.xdm... Executing /sbin/conf.d/SuSEconfig.xpdf... Executing /sbin/conf.d/SuSEconfig.zmessages... Finished.
512
Kapitel 10 · Geräteverwaltung
10.11 Systemkonfiguration mit Debian GNU/Linux Auch Debian GNU/Linux besitzt ein spezielles Programm, base-config, um das System zu konfigurieren. Es läuft normalerweise nach der Installation, kann aber jederzeit später nochmals gestartet werden. Die Syntax lautet: # base-config
Es beinhaltet die Konfiguration der Grafikkarte, des Window-Managers, von ISDN, der Zeitzone und der Locale-Einstellungen, des Webbrowsers Mozillas, des Samba-Servers, des X-Servers und des News-Servers über das Programm Leafnode.
513
11 Drucker verwalten »Ich will keine Zensur, weil ich nicht für Dummheiten verantwortlich sein will, die man drucken darf.« – Napoleon I. Bonaparte (Quelle: zu Fouché) Gerade im Bereich des Druckens hat sich unter Linux in den vergangenen Jahren sehr viel getan. Dank eines neuen Drucksystems, CUPS (Common Unix Printing System), ist es heute sehr viel einfacher, Drucker anzuschließen. In diesem Kapitel wird nicht nur CUPS ausführlich erläutert, sondern der Vollständigkeit halber auch kurz auf die älteren Drucksysteme eingegangen.
11.1 Drucksysteme unter Linux In einem Mehrbenutzersystem müssen Druckaufträge verschiedener Anwender zentral koordiniert werden. Zur Druckerverwaltung gehört nicht nur die Ansteuerung von Druckern, sondern auch das Aufbereiten der Druckaufträge und das Verwalten der Warteschlangen für jeden Drucker. Ein Druckverwaltungssystem besteht in der Regel aus folgenden Teilen:
쮿
Benutzerbefehle Befehle, um einen Druckauftrag zu starten, zu verfolgen und zu löschen.
쮿
Administrationsbefehle Befehle, um das Druckersystem zu verwalten, zum Beispiel Drucker einrichten, starten und anhalten.
쮿
Druckerdefinitionen Dateien mit Beschreibungen der verschiedenen Drucker, einschließlich Skripten, um die Druckausgabe für einen speziellen Druckertyp vorzubereiten.
쮿
Druckerwarteschlangen und Spoolverzeichnisse Warteschlangen, um Druckaufträge einzustellen, und Verzeichnisse, um die Druckdateien zwischenzulagern, bis der Drucker bereit ist.
쮿
Drucker-Daemons Serverprozesse, die Druckaufträge entgegennehmen, in die Spoolverzeichnisse einstellen und der Reihe nach aus der Warteschlange an den Drucker weiterleiten.
Die Druckerverwaltung kann wie in Bild 11.1 dargestellt werden. Bei der Druckerverwaltung gibt es unter Linux verschiedene Ansätze. Zwei der am weitesten verbreiteten Drucksysteme haben sich aus der Unix-Historie heraus entwickelt:
쮿
Das BSD-Drucksystem oder Berkeley Line Printer Daemon-System (»lpd«)
쮿
Das System V-Drucksystem oder AT&T Line Printer-System
Diese Drucksysteme entstanden in den siebziger Jahren und wurden auf die damaligen Druckanforderungen ausgelegt, also für Zeilen- bzw. Nadeldrucker.
515
Drucksysteme unter Linux
magnum
Bild 11.1: Druckerverwaltung unter Linux
Zu diesen beiden Systemen kamen im Laufe der Zeit weitere Drucksysteme dazu, wie zum Beispiel LPRng, Palladin und PLP, wobei sich aber an den grundlegenden Funktionen relativ wenig geändert hat. Die System V-Lösung wurde unter Linux nicht verwendet, aber das BSD-Drucksystem gab es in zwei verschiedenen Implementierungen:
쮿
BSD-LPD Die klassische BSD-Druckerverwaltung, die von der University of Berkeley zunächst für BSD-Unix entwickelt wurde, wird auch oft als LPD, Berkeley LPR oder RPM lprold bezeichnet und war früher Standard unter Linux. Die Befehle dieser Druckerverwaltung wurden auch von anderen Drucksystemen übernommen.
쮿
LPRng LPRng (Line Printer next generation) ist eine vollständige Neuimplementierung des BSD-LPD-Drucksystems. Es bietet weitestgehende Kompatibilität und erweiterte Konfigurationsmöglichkeiten.
Die alten Drucksysteme erwiesen sich aufgrund der begrenzten Funktionalitäten in einigen Punkten als problematisch, worauf Unix-Hersteller eigene Erweiterungen in die Programme integrierten, was das Problem aber nicht grundsätzlich beseitigte. Seit dem Jahr 2000 wird immer häufiger eine weitere Drucksoftware mit der Bezeichnung CUPS (Common UNIX Printing System) in der Unix- und Linux-Welt eingesetzt. Sie basiert auf dem BSD-System und wird genau wie Linux unter der GPL (GNU General Public License) vertrieben, das heißt, sie ist frei verfügbar.
516
Kapitel 11 · Drucker verwalten
Unter den verschiedenen SUSE-Versionen werden standardmäßig folgende Drucksysteme verwendet:
쮿
seit Version 9.0: CUPS (alternativ LPRng)
쮿
Version 8.0: LPRng (alternativ CUPS)
쮿
Version 7.3: LPRng (alternativ CUPS)
쮿
Version 7.2: BSD-LPD (alternativ CUPS)
쮿
bis Version 7.1: BSD-LPD
11.2 BSD-LPD- und LPRng-Druckerverwaltung Die BSD-LPD-Druckerverwaltung weist folgende Funktionalitäten auf:
쮿
Jeder Drucker hat eine eigene lokale Warteschlange, die den Namen des Druckers trägt und über diesen gesteuert werden kann.
쮿
Die Druckerwarteschlangen und die Drucker können aktiviert und deaktiviert werden.
쮿
Die Drucker können mit Hilfe von Filtern gesteuert werden.
쮿
Der Druck-Daemon ist der Prozess lpd (line printer daemon).
쮿
Als Konfigurationsdatei wird die Datei /etc/printcap verwendet.
쮿
Mit der BSD-Druckerverwaltung kann über das Netzwerk gedruckt werden. Der Zugriff auf Remote-Drucker wird über die Datei /etc/hosts.lpd gesteuert.
Die Neuimplementierung LPRng hat folgende zusätzliche Leistungsmerkmale:
쮿
Aus mehreren Druckern können Druckerklassen gebildet werden.
쮿
Die Steuerung der Zugriffsrechte wird flexibler gehandhabt, die Zugriffsregelung auf Remote-Drucker erfolgt mit der Datei /etc/lpd.perms.
쮿
Es gibt eine weitere globale Konfigurationsdatei /etc/lpd.conf.
11.2.1
Der Daemon lpd
Dieser Daemon ist der »ältere« Druck-Daemon, der sich noch auf einigen LinuxDistributionen und vielen Unix-Systemen findet. Mit dem Run Control-Skript /etc/init.d/lpd lässt sich das Drucksystem anhalten und neu starten, wenn es Probleme mit dem Drucken gibt.
11.2.2
Die Konfigurationsdatei /etc/printcap
Ein Drucker der BSD-LPD-Druckerverwaltung wird in der Datei /etc/printcap eingetragen. Diese enthält die lokale oder Netzwerk-Druckerkonfiguration, die Definition von Protokolldateien usw., aber keine Informationen über die Druckerauflösung oder die Druckersprache (zum Beispiel Postscript). Sie hat folgende Syntax: druckername : xx=string : xx#nummer : xx : ... :
517
magnum
BSD-LPD- und LPRng-Druckerverwaltung
Eine Druckerdefinition beginnt mit dem Druckernamen, gefolgt von einzelnen Definitionsfeldern, die durch Doppelpunkte getrennt sind. Das erste Definitionsfeld enthält eine zweistellige Printcap-Variable (xx), von denen es drei verschiedene Typen gibt:
쮿
String: xx=string Der Variablen wird ein Text zugewiesen, in der Regel ein Dateipfad.
쮿
Integer: xx#nummer Der Variablen wird ein Integerwert zugewiesen.
쮿
Bool: xx Wenn die Variable xx in der Druckerbeschreibung vorhanden ist, hat sie den Wert TRUE, und wenn nicht, den Wert FALSE. FALSE kann auch in der Schreibweise xx@ angegeben werden.
Die Schreibweise xx=nummer hat übrigens weder eine Auswirkung noch erzeugt sie eine Fehlermeldung.
Eine Druckerdefinition passt in der Regel nicht in eine einzige Zeile. Daher wird sie durch einen Backslash (\) auf mehrere Zeilen umbrochen. Zu den wichtigsten Variablen von /etc/printcap gehören: Variable
Beispiel
Bedeutung
printer [|alias|...]
lp|hp1|HP1|HPLaser1:
Druckername, mehrere Namen werden durch »|« getrennt. Standarddrucker ist lp.
sd
sd=/var/spool/lpd/HPLaser1
Spoolverzeichnis, das Kopien der Druckaufträge enthält
lp
lp=/dev/lp0
Gerätename eines lokal angeschlossenen Druckers
if
if=/var/lpd/HPLaser1/filter
Input-Filter, um eine zu druckende Datei für einen bestimmten Drucker aufzubereiten
lf
lf=/var/lpd/druck.err
Fehlerprotokolldatei, um Fehlermeldungen von Filterprogrammen zu speichern
rm
rm=server.mein.netz
Remote-Host, an dem ein Drucker angeschlossen ist
rp
rp=BrotherLaser
Remote-Druckername
mx
mx#0
Maximale Dateigröße eines Druckauftrags (0 heißt keine Beschränkung)
sh
sh
Bannerseiten nicht drucken
Tab. 11.1: Variablen von /etc/printcap
518
Kapitel 11 · Drucker verwalten
Im folgenden Beispiel ist ein HP-Laserdrucker lokal angeschlossen, der auch als Standarddrucker verwendet wird: lp|hp|laser|HP1200:\ :sd=/var/spool/lpd/HP1200:\ :mx#0:\ :sh:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/HP1200/filter:
Das nächste Beispiel zeigt einen Netzwerkdrucker: laser|postscript|PostScript|Brother:\ :sd=/var/spool/lpd/remoteBrother:\ :mx#0:\ :sh:\ :rm=server.mein.nw:\ :rp=pslaser:\ :lp=:
11.2.3
Im Netzwerk drucken
Beim Drucken im Netzwerk wird nicht nur die lokale Konfigurationsdatei /etc/ sondern auch ein Eintrag in der Datei /etc/hosts.lpd (beim BSDLPD-Drucksystem) bzw. /etc/lpd.perms beim LPRng-System, damit das lokale System Druckerlaubnis auf dem Remote-Rechner erhält.
printcap benötigt,
Der Eintrag in /etc/printcap im lokalen System kann wie folgt aussehen: laser|postscript|PostScript|Brother:\ :sd=/var/spool/lpd/remoteBrother:\ :mx#0:\ :sh:\ :rm=server.mein.nw:\ :rp=pslaser:\ :lp=:
Auf dem Remote-Rechner könnte folgender Eintrag in /etc/printcap hinterlegt werden: lp|laser|brother:\ :sd=/var/spool/lpd/brother:\ :mx#0:\ :sh:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/brother/filter:
Folgender Eintrag in /etc/hosts.lpd für das BSD-LPD-Drucksystem ist notwendig: server.mein.nw
Beim LPRng-System kann ein entsprechender Eintrag in der Datei /etc/lpd.perms hinterlegt werden, standardmäßig ist ein allgemeiner Zugriff auf den Netzwerkdrucker erlaubt. Es gibt aber sehr viele verschiedene Einstellungen, zum Beispiel die Einschränkung des Zugriffs auf ein Teilnetz: REJECT SERVICE=X NOT REMOTEIP=195.123.121.0/255.255.255.0
519
BSD-LPD- und LPRng-Druckerverwaltung
11.2.4
magnum
Druckertreiberfilter
Filterprogramme werden verwendet, um Dateien für einen bestimmten Drucker aufzubereiten. Sie können für jeden einzelnen Drucker mit der Variablen if= in /etc/printcap hinterlegt werden. Das Standardausgabeformat für Drucker auf Unix-Systemen ist die Seitenbeschreibungssprache PostScript. Inzwischen können viele Programme Dokumente in PostScript erzeugen und sie anschließend direkt auf einen PostScript-Drucker ausgeben, ohne dass sie zuvor von einem Filter umgewandelt werden müssen. Auch für nicht PostScript-fähige Drucker gibt es unter Linux eine Lösung, um PostScript-Dokumente auszugeben. GhostScript (gs) wandelt das PostScript-Dokument in ein Grafikformat um, das für verschiedene Drucker aufbereitet werden kann. In der Regel ist es dafür nicht notwendig, den Befehl gs direkt zu verwenden, denn die meisten Linux-Distributionen besitzen komfortable Filtersysteme, die automatisch die Konvertierung mit GhostScript durchführen. Bei älteren Linux-Versionen, zum Beispiel SUSE Linux bis Version 7.3, wurde apsfilter verwendet, das für jeden Drucker automatisch drei Druckernamen installiert:
쮿
: automatische Formaterkennung und Konvertierung der Druckdateien
쮿
-ascii: Ausdruck als ASCII-Text
쮿
-raw: keine Vorbearbeitung, sondern direktes Ausdrucken der Druckdaten
Ein typischer Eintrag kann zum Beispiel wie folgt aussehen: ### BEGIN apsfilter: ### hp1200 a4 mono 300 ### # Warning: Configured for apsfilter, do not edit the labels! # apsfilter setup Mon Jul 31 18:41:32 CEST 2005 hp1200-ascii|lp5|hp1200-a4-ascii-mono-300|Hp1200 a4 ascii mono 300:\ :lp=/dev/lp0:\ :sd=/var/spool/lpd/hp1200-a4-ascii-mono-300:\ ... # hp1200|lp6|hp1200-a4-auto-mono-300|hp1200 a4 auto mono 300:\ :lp=/dev/lp0:\ :sd=/var/spool/lpd/hp1200-a4-auto-mono-300:\ ... # hp1200-raw|lp7|hp1200-a4-raw|hp1200 a4 raw:\ :lp=/dev/lp0:\ :sd=/var/spool/lpd/hp1200-a4-raw:\ ... # ### END apsfilter: ### cdj550 a4 mono 300 ###
Es gibt mehrere Konfigurationsdateien, um apsfilter zu konfigurieren. Für die globale Konfiguration wird /etc/apsfilterrc verwendet und /etc/apsfilterrc., um einen speziellen Druckertyp zu konfigurieren. Ab SUSE Linux Version 8.0 wird lpdfilter verwendet, das SUSE selbst entwickelt hat. Es muss nicht mehr manuell nachbearbeitet werden und ist in der Konfiguration von YaST integriert.
520
Kapitel 11 · Drucker verwalten
11.2.5
Druckerverwaltung mit lpc
Das Programm lpc (line printer control) kann jeden in /etc/printcap eingetragenen Drucker verwalten, das heißt, anhalten und wieder aktivieren, die Warteschlange bearbeiten und Statusinformationen anzeigen. Der Befehl kann entweder mit Optionen direkt an der Befehlszeile oder im interaktiven Modus durch Aufruf von lpc verwendet werden. Die Syntax des Befehls lautet: lpc [option [argumente ...]
Der Befehl kennt folgende Optionen: Option
Beschreibung
help [befehl]
Listet alle lpc-Befehle auf oder eine Kurzinformation zu befehl
status printer/all
Zeigt den aktuellen Status des Druckers an
topq printer jobid topq printer user
Verschiebt den Druckauftrag jobid oder alle Druckaufträge eines Benutzers user an den Anfang der Druckerwarteschlange
enable printer/all disable printer/all
Aktiviert (enable) bzw. deaktiviert (disable) eine oder alle Warteschlangen, druckt aber die noch anstehenden Aufträge aus. Neue Druckaufträge können weiterhin in die Warteschlange gestellt werden.
start printer/all stop printer/all
Aktiviert (start) bzw. deaktiviert (stop) das Drucken auf einem oder allen Druckern. Neue Druckaufträge können weiterhin in die Warteschlange gestellt werden.
up printer/all down printer/all
Aktiviert (up) bzw. deaktiviert (down) eine Warteschlange und den dazugehörigen Drucker. Wird bei längerer Ausfallzeit eines Druckers empfohlen
mesg printer text
Setzt die Statusmeldung für einen Drucker
Tab. 11.2: Optionen des Befehls lpr
Im folgenden Beispiel werden Statusinformationen zum Drucker ausgegeben: # lpc lpc> status all Printer Printing Spooling Jobs Server Subserver Redirect hp2@pc3 enabled enabled 0 none none br17@pc5 enabled enabled 0 none none
Im nächsten Beispiel wird der Drucker hp2 deaktiviert: lpc> down hp2@pc3 Printer: hp2@pc3
[email protected]: disabled and stopped lpc> status all Printer Printing Spooling Jobs Server Subserver Redirect br17@pc5 enabled enabled 0 none none hp2@pc3 disabled disabled 0 none none
521
Das neue Drucksystem CUPS
magnum
11.3 Das neue Drucksystem CUPS Zuerst fand CUPS bei vielen Benutzern, die sich zu Hause mit Linux beschäftigten, großen Anklang, das System ist aber überhaupt nicht auf einen Einzelplatz beschränkt, sondern bietet vor allem im UNIX- oder Linux-Netzwerk große Vorteile. Ein PC, auf dem CUPS zur Verfügung steht, kann auch drucken, wenn darauf keine eigenen Druckertreiber installiert und konfiguriert sind. Das System soll das alte LPD-Drucksystem ablösen. CUPS wurde von dem Unternehmen Easy Software Products (ESP) entwickelt, das CUPS auch als kommerzielle Software unter dem Namen ESP PrintPro verkauft. Das System CUPS behebt viele Schwächen der bisherigen Drucksysteme, zum Beispiel kann es:
쮿
Benutzer über Passwörter oder Zertifikate authentifizieren
쮿
die zu druckenden Daten bei der Übertragung zwischen zwei Rechnern oder zum Drucker verschlüsseln
쮿
alle im Netz zur Verfügung stehenden Drucker jedem Clientrechner beim Booten oder Anmelden mitteilen
CUPS bezieht die wichtigsten Funktionen des LPD-Drucksystems ein, wodurch die Druckfunktionen von alten Anwendungen, Programmen und Shellskripten weiterhin genutzt werden können. CUPS orientierte sich beim Drucken unter Unix und Linux an den Betriebssystemen Microsoft Windows und MacOS, was bedeutet, dass für eine CUPS-fähige Anwendung kein eigener Druckertreiber mehr notwendig ist, sondern diese einfach die CUPS-Bibliothek verwendet. Die besonderen Eigenschaften eines Druckers werden mit auf dem Druckserver vorliegenden PPD-Dateien (PostScript Printer Description-Dateien) umgesetzt, was auch bei nicht PostScriptfähigen Druckern funktioniert. Damit setzt CUPS bei Beschreibungsdateien auf Standards. Die Input- bzw. Dokumentfilter basieren auf MIME-Dateitypen und die eigentlichen Druckerbeschreibungen werden durch PPD-Dateien, ein Dateiformat von Adobe, umgesetzt. Die BSD- und System-V-Druckbefehle lpr und lp verwendet CUPS weiterhin, so dass ein Anwender sich nicht umstellen muss. CUPS verfügt allerdings zusätzlich über eigene Befehle. Da GhostScript in CUPS komplett integriert ist, können druckerrelevante Funktionen wesentlich besser unterstützt werden. Wenn ein Benutzer einen Druckbefehl absetzt, muss er allerdings angeben, ob eine schon vorhandene Druckdatei von CUPS gefiltert und an bestimmte Druckereigenschaften angepasst oder unverändert an den Drucker weitergeleitet werden soll. Sollte die Filterfunktion nicht benötigt werden, muss die Option -l an den Befehl lpr und die Option -o raw an den Befehl lp gehängt werden. Das Filtern ist immer dann sinnvoll, wenn zum Beispiel eine Textdatei auf einem PostScript-Drucker ausgegeben werden soll, ohne diese zuerst manuell konvertieren zu müssen. Wird keine Option verwendet, dann wird automatisch gefiltert, zum Beispiel: $ lpr -P ps-drucker bericht.txt
Wenn in diesem Beispiel das Filtern mit der entsprechenden Option unterdrückt wird, ist das Ergebnis ein leeres, ausgedrucktes Blatt: $ lpr -l -P ps-drucker bericht.txt
522
Kapitel 11 · Drucker verwalten
CUPS verwendet eine so genannte Client-Server-Architektur. Jeder Rechner mit einem lokal installierten Treiber und einem direkt angeschlossenen Drucker ist bei CUPS ein Server. Die Treiberfunktionalität von CUPS liegt darin, dass ein Druckauftrag mit Hilfe von Filtern und Druckerbeschreibungsdateien (PPDs) überarbeitet wird, so dass das Druckformat für den entsprechenden Drucker passend ist. Jeder CUPS-Server kann die lokal installierten Drucker Clients, das heißt anderen Rechnern im Netzwerk, verfügbar machen. Die Befehle zum Drucken und Einrichten eines Druckers werden in den Abschnitten Drucker auf der Befehlszeile einrichten und Dateien drucken ausführlich beschrieben.
11.3.1
Das Verzeichnis /etc/cups
Die Konfigurationsdateien für den Druckdienst CUPS befinden sich im Verzeichnis /etc/cups. In der Regel ist es nicht nötig, diese Dateien zu verändern. Im gegebenen Fall ist es aber am einfachsten, ein grafisches Tool dazu zu verwenden, wie zum Beispiel die Webschnittstelle oder YAST von SUSE Linux oder das Druckerkonfigurationstool von Fedora. Bei CUPS existiert die Datei /etc/printcap zwar noch, aber sie ist nicht mehr die zentrale Konfigurationsdatei, sondern enthält nur noch die Namen der bekannten Drucker und ansonsten keine weiteren Einträge. Stattdessen ist die Konfiguration über verschiedene Dateien im Verzeichnis /etc/cups verteilt: Datei
Beschreibung
cups.conf
Zentrale Konfigurationsdatei, die Pfade, Protokollierung, Ports, Zugriffsrechte usw. enthält
ppds.dat
Datenbank mit allen PPD-Definitionen
ppd/.ppd
PPD-Konfiguration für einen eingerichteten Drucker
printers.conf
Globale Definitionen aller Drucker
mime.types
Liste aller Dokumenttypen, die von CUPS automatisch in PostScript konvertiert werden können
mime.convs
Definition der Filterprogramme, die die verschiedenen Dokumenttypen nach PostScript wandeln
Tab. 11.3: Konfigurationsdateien von CUPS
11.3.2
MIME-Types
CUPS verwendet MIME-Types, um Dateiformate zu bestimmen für die Weiterverarbeitung zu kennzeichnen. MIME (Multipurpose Internet Mail Extension) ist ein so genannter RFC-Standard, um Dateitypen und -formate darzustellen. Ursprünglich wurden MIMETypes entwickelt, um per E-Mail auch andere als das ursprüngliche ASCII-Format austauschen zu können. Sie können bei der Internetorganisation IANA registriert und veröffentlicht werden und sind daher eindeutig.
523
magnum
Das neue Drucksystem CUPS
Ein MIME-Type wird im Schema Hauptkategorie/Nebenkategorie festgelegt; mit CUPS arbeiten zum Beispiel folgende MIME-Types zusammen:
쮿
text/plain –
쮿
text/html –
쮿
application/pdf –
쮿
image/gif –
eine Textdatei
eine HTML-Datei eine PDF-Datei
eine GIF-Format-Grafik
Bei CUPS werden in der Datei /etc/cups/mime.types Regeln festgelegt, nach denen unbekannte Formate in die MIME-Types-Kategorien eingeordnet werden. Wenn beim Drucken nur unleserliche Zeichen erscheinen, kann es daran liegen, dass die automatische Erkennung der MIME-Types nicht erfolgreich war.
11.3.3
Die Datei /etc/cups/cupsd.conf
Die Datei /etc/cups/cupsd.conf enthält verschiedene Einträge zur globalen Druckerkonfiguration für den Serverbetrieb und die Datei /etc/cups/client.conf die für den Clientbetrieb. Diese Datei sollte auf dem Server umbenannt werden, wenn es Probleme gibt, denn der Server liest auch diese Datei aus. Die Datei /etc/cups/cupsd.conf ist in verschiedene Abschnitte eingeteilt, in denen die Serveridentität und -optionen, Verschlüsselung, Filter-, Netzwerk- und Browsing-Optionen sowie Angaben zu Aktualisierungen, Sicherheitsoptionen und Administrationsverzeichnissen eingestellt werden können. # more /etc/cups/cupsd.conf ... # Sample configuration file for the Common UNIX Printing System (CUPS) scheduler. ######## Server Identity ... #ServerName myhost.domain.com ... ######## Server Options ... #AccessLog /var/log/cups/access_log ... # Classification: the classification level of the server. ... #Classification classified #Classification confidential ... # LogLevel: controls the number of messages logged to the ErrorLog file and can be one of the following: # debug2 Log everything. # debug Log almost everything. ... LogLevel info # Printcap: the name of the printcap file. # Default is /etc/printcap. Printcap /etc/cups/printcap ... # User/Group: the user and group the server runs under. ... User lp Group lp RunAsUser Yes
524
Kapitel 11 · Drucker verwalten
# Ports/addresses that we listen to. The default port 631 is ... Port 631 # BrowseAllow: specifies an address mask to allow for incoming browser packets. The default is to allow packets from all addresses. ... BrowseAllow @LOCAL BrowseDeny All ... Browsing On Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow From @LOCAL ... AuthType BasicDigest AuthClass Group AuthGroupName sys ... # End of "$Id: cupsd.conf.in,v 1.13 2003/04/10 20:14:04 mike Exp $".
Die Drucker selbst werden mit verschiedenen Dateien konfiguriert, die Datei /etc/ enthält zum Beispiel allgemeine Informationen zu allen Warteschlangen und die Datei /etc/cups/lpoptions diverse globale Druckoptionen, die auch durch den Befehl lpadmin eingestellt werden können.
cups/printers.conf
11.3.4
Der Daemon cupsd
Die Grundlage der CUPS-Software ist der CUPS-Daemon cupsd, der alle Druckabläufe steuert. Er nimmt lokale und Remote-Druckaufträge entgegen, speichert diese zwischen und veranlasst gegebenenfalls, dass die Aufträge gefiltert werden, reiht diese anschließend in die entsprechenden Warteschlangen ein und sendet schließlich den fertigen Druckauftrag zum gewünschten Drucker. Dazu sind in der Regel auch herkömmliche Drucksysteme in der Lage, aber CUPS bietet zusätzlich folgende neue Eigenschaften:
쮿
CUPS unterstützt das Internet Printing Protocol (IPP) und eine dazugehörige Webschnittstelle, so dass von jedem Browser aus auf Druck- und Verwaltungsfunktionen zugegriffen werden kann.
쮿
CUPS ermöglicht, dass Clients auf die auf dem Server eingerichteten Ausgabegeräte drucken, ohne dass diese Clients selbst einen Drucker einrichten müssen.
쮿
CUPS ist abwärtskompatibel und multiprotokollfähig, das heißt, es kann auch Clients unterstützen, die noch mit Microsoft Windows über Samba oder mit älteren UNIX-/Linux-Drucksystemen, wie zum Beispiel LPD, oder mit dem Apple MacOS-System NetATalk funktionieren.
Das Run Control-Skript für cupsd heißt /etc/init.d/cups. Mit diesem kann der Druck-Daemon auch direkt gestartet oder gestoppt werden, zum Beispiel: # /etc/init.d/cups start
525
Das neue Drucksystem CUPS
magnum
Bei Debian GNU/Linux heißt das Skript /etc/init.d/cupsys.
11.3.5
Druckerverwaltung über Webserver
CUPS ist am einfachsten und am unabhängigsten vom Linux-Derivat über den in CUPS eingebauten HTTP-Server zu verwalten, der über Port 631 erreichbar ist. Da das IPP (Internet Printing Protocol) auf HTTP 1.1 basiert, ähnelt die CUPS-Konfigurationsdatei /etc/cups/cupsd.conf der des Apache-Webservers. Es gibt viele verschiedene Einstellungsmöglichkeiten, wie zum Beispiel Servername, Name und Pfad der Protokolldateien, verwendeter Serverport, Absicherung mit Passwörtern usw. Um die Datei grafisch zu konfigurieren, geben Sie im Adressfeld eines Webservers (zum Beispiel Konqueror oder Mozilla) ein: http://localhost:631
Bild 11.2: CUPS über einen Webbrowser verwalten
Über diese grafische Schnittstelle können Drucker auf einfache Weise hinzugefügt, geändert oder gelöscht werden. Es ist auch möglich, Druckaufträge zu verwalten, alte Druckaufträge anzuzeigen und Druckerklassen anzulegen, zu ändern und zu löschen. In unserem Beispiel legen wir einen Drucker neu an. Klicken Sie auf EINRICHTUNGSAUFGABEN. Sie müssen sich autorisieren, bevor Sie Drucker einrichten dürfen:
526
Kapitel 11 · Drucker verwalten
Bild 11.3: Für das Drucksystem autorisieren
Bei einigen Distributionen ist root standardmäßig kein zulässiger CUPS-Administrator. Wenn Sie dort CUPS mit dem root-Account verwalten wollen, müssen Sie zuvor noch ein CUPS-spezifisches Passwort für root in die Datei /etc/cups/ passwd.md5 mit folgendem Befehl eintragen: # lppasswd -g sys -a root
Nun öffnet sich das Fenster EINRICHTUNGSAUFGABEN/ADMIN. Klicken Sie hier auf DRUCKER HINZUFÜGEN, um einen neuen Drucker einzurichten:
Bild 11.4: Einrichtungsaufgabe der CUPS-Webbrowser-Schnittstelle
Geben Sie den Namen, Standort und die Beschreibung des Druckers ein und klicken Sie auf WEITER:
527
Das neue Drucksystem CUPS
magnum
Bild 11.5: Name des neuen Druckers hinterlegen
Wählen Sie dann das Gerät für den neu hinzuzufügenden Drucker, das heißt, die serielle, parallele oder USB-Schnittstelle usw.:
Bild 11.6: Schnittstelle für den Drucker wählen
528
Kapitel 11 · Drucker verwalten
Im nächsten Schritt wählen Sie den Hersteller:
Bild 11.7: Druckerhersteller wählen
Im letzten Schritt suchen Sie das passende Druckermodell aus:
Bild 11.8: Druckermodell auswählen
Wenn Sie nun auf WEITER klicken, erhalten Sie die Meldung, dass der Drucker hinzugefügt wurde.
529
Das neue Drucksystem CUPS
magnum
Neue PPD-Dateien (PostScript Printer Description) können in /usr/share/ppd platziert werden und stehen nach einem Neustart von cupsd zur Verfügung.
11.3.6
KDE-Druckerverwaltung
Ab KDE 2.2 sind die Möglichkeiten beim Ausdruck bzw. beim Einrichten mit Hilfe der KDE-Druckerverwaltung wesentlich komfortabler geworden. Im Hauptmenü bei KDE von SUSE Linux finden Sie unter DIENSTPROGRAMME - DRUCKEN DRUCKERVERWALTUNG folgendes Tool: Bei Debian GNU/Linux finden Sie unter KDE 3.3.2 das Programm unter EINSTELLUNGEN - ANGESCHLOSSENE DRUCKER.
Dieses KDE-Tool ist unter Fedora Core Linux 4.0 standardmäßig nicht installiert.
Bild 11.9: KDE-Druckerverwaltungstool
Über die Registerkarte PROFILE kann die Schaltfläche EINSTELLUNGEN aktiviert werden, um grundsätzliche Einstellungen zum Drucker durchzuführen:
530
Kapitel 11 · Drucker verwalten
Bild 11.10: Drucker mit KDE einrichten
11.3.7
Grafische Druckerverwaltung mit YaST und CUPS
Installation lokaler Drucker Die Konfiguration von lokalen Druckern wird am einfachsten über das YASTModul für die automatische Druckererkennung vorgenommen. Dazu wählen Sie das Menü HARDWARE - DRUCKER. Nach einer kurzen Überprüfung werden die erkannten Drucker aufgelistet bzw. können mit der Schaltfläche KONFIGURIEREN eingerichtet werden:
Bild 11.11: Drucker mit YAST konfigurieren
531
Das neue Drucksystem CUPS
magnum
Im ersten Schritt wird der Druckertyp ausgewählt:
Bild 11.12: Druckertyp auswählen
In unserem Beispiel wählen Sie einen am Parallelport angeschlossenen Drucker und klicken auf WEITER. Der Anschluss kann dann im Detail konfiguriert oder getestet werden:
Bild 11.13: Parallelport testen
532
Kapitel 11 · Drucker verwalten
Klicken Sie dann auf WEITER. Der Name der Warteschlange ist gleichzeitig der Druckername im System:
Bild 11.14: Den Druckernamen eingeben
Wenn Sie auf WEITER klicken, können Sie im nächsten Schritt das Druckermodell wählen, um die richtigen Treiber bereitzustellen:
Bild 11.15: Druckermodell wählen
533
Das neue Drucksystem CUPS
magnum
Anschließend wird der neu eingerichtete Drucker angezeigt:
Bild 11.16: Anzeige des neu eingerichteten Druckers
Mit der Schaltfläche ÄNDERN kann nochmals die Liste der von CUPS verwalteten Drucker angezeigt und geändert werden:
Bild 11.17: Eingerichteten Drucker ändern
534
Kapitel 11 · Drucker verwalten
Mit der Schaltfläche BEARBEITEN können die Einstellungen zum Drucker verändert werden, zum Beispiel im Fenster BESCHRÄNKUNGEN:
Bild 11.18: Drucker nur für bestimmte Benutzer zulassen
Auch der Druckerstatus und die Möglichkeit, Bannerseiten am Beginn oder Ende jeden Druckauftrags auszugeben, können hier definiert werden:
Bild 11.19: Druckerstatus festlegen
Schließlich sind noch Konfigurationsoptionen, wie zum Beispiel im Querformat zu drucken, möglich:
535
Das neue Drucksystem CUPS
magnum
Bild 11.20: Konfigurationsoptionen festlegen
Abschließend wird durch BEENDEN die Konfiguration gespeichert und der Druckdienst mit den neuen Daten gestartet.
Zugriff auf Netzwerkdrucker Der Zugriff auf Netzwerkdrucker wird mit demselben YAST-Menü eingerichtet. Wählen Sie HARDWARE - DRUCKER: Drucken über SMB-Netzwerkserver
Aktivieren Sie wieder die Schaltfläche KONFIGURIEREN und wählen Sie dann den Druckertyp, zum Beispiel CUPS-NETZWERKSERVER, SMB-NETZWERKSERVER usw.:
Bild 11.21: Samba-Netzwerkdrucker installieren
536
Kapitel 11 · Drucker verwalten
In diesem Beispiel wird ein Drucker über einen Samba-Netzwerkserver eingerichtet. Sie müssen den Namen des Druckservers, die entfernte Warteschlange und die Arbeitsgruppe angeben:
Bild 11.22: Informationen zum Samba-Drucker hinterlegen
Die weiteren Schritte sind mit denen identisch, die bei der Installation eines lokalen Druckers beschrieben wurden:
쮿
Der Name der Warteschlange, das heißt der Druckername im System, und eine ausführliche Beschreibung zum Drucker müssen angegeben werden.
쮿
Der Druckerhersteller und das Druckermodell müssen gewählt werden.
쮿
Die Konfiguration kann noch überarbeitet werden.
Drucken über CUPS-Netzwerkserver
Auch das Drucken über einen CUPS-Netzwerkserver erfolgt über das YAST-Menü HARDWARE - DRUCKER und die anschließende Auswahl der Schaltfläche KONFIGURIEREN:
Bild 11.23: CUPS-Netzwerkserver einrichten
537
Das neue Drucksystem CUPS
magnum
Anschließend müssen Sie die Verbindungsart wählen, in diesem Beispiel CUPS NUR CLIENT:
Bild 11.24: Verbindungsart wählen
Sie erhalten in diesem Fall noch folgenden Warnhinweis, den Sie bestätigen müssen:
Bild 11.25: Warnhinweis für die Clientkonfiguration
Im nächsten Fenster ist es möglich, über die Schaltfläche LOOKUP nach einem CUPS-Server im Netzwerk zu suchen. Ist ein solcher vorhanden, wird er im Feld SERVERNAME angezeigt:
Bild 11.26: CUPS-Server suchen
538
Kapitel 11 · Drucker verwalten
Nach der Bestätigung mit OK wird der Drucker in der Konfiguration angezeigt:
Bild 11.27: Konfigurierte Drucker anzeigen
11.3.8
Grafische Druckerverwaltung bei Fedora
Auch Fedora Core Linux bietet ein recht einfaches grafisches Tool, um Drucker zu installieren und zu verwalten. Dazu wählen Sie das Menü SYSTEMEINSTELLUNGEN - DRUCKEREINRICHTUNG:
Bild 11.28: Grafische Druckerkonfiguration unter Fedora Core Linux
Klicken Sie auf NEU, um einen neuen Drucker zu konfigurieren:
Bild 11.29: Neuen Drucker konfigurieren
539
Das neue Drucksystem CUPS
magnum
Geben Sie den Namen des Druckers und eventuell eine Beschreibung ein:
Bild 11.30: Druckernamen eingeben
Wählen Sie im nächsten Fenster den Warteschlangentyp aus, das heißt, ob der Drucker ein lokaler Drucker ist, über einen Windows-Druckserver erreichbar oder ein Netzwerkdrucker mit JetDirect-Schnittstelle ist usw.:
Bild 11.31: Warteschlangentyp auswählen
In unserem Beispiel wurde LOKAL-VERBUNDEN gewählt. Nun muss das Druckermodell ausgewählt werden:
Bild 11.32: Druckermodell auswählen
540
Kapitel 11 · Drucker verwalten
Im letzten Fenster wird schließlich angezeigt, dass der Drucker erfolgreich installiert wird. Klicken Sie auf ABGESCHLOSSEN, um die Installation zu beenden:
Bild 11.33: Druckerwarteschlange wird erstellt
Mit der Schaltfläche BEARBEITEN kann die Druckerkonfiguration des markierten Druckers geändert, mit LÖSCHEN der Drucker entfernt werden. Wenn Sie auf STANDARD klicken, wird der markierte Drucker zum Standarddrucker.
Bild 11.34: Druckerkonfiguration – Anzeige der vorhandenen Drucker
Wenn Sie das Menü AKTION - WARTESCHLANGE BEARBEITEN wählen, haben Sie ebenfalls die Möglichkeit, die Druckerkonfiguration nochmals zu überarbeiten:
Bild 11.35: Druckerkonfiguration bearbeiten
541
Drucker auf der Befehlszeile einrichten
magnum
11.4 Drucker auf der Befehlszeile einrichten Einen Drucker auf der Befehlszeile einzurichten, ist recht mühsam. Der Vollständigkeit halber werden hier aber nochmals alle Befehle zusammengefasst.
Der Befehl lpadmin Mit Hilfe dieses allgemeinen Druckbefehls können Drucker und Druckerklassen installiert, konfiguriert und deinstalliert werden. Der Befehl ist sowohl bei älteren Drucksystemen als auch bei CUPS bekannt. Unter Unix und Linux kann ein einfacher Benutzer keinen Drucker installieren oder verwalten. Diese Aufgabe ist root oder einer ausgewählten Gruppe von Administratoren vorbehalten. Ein Benutzer kann nur drucken, die Druckerwarteschlange einsehen und seine eigenen Druckaufträge löschen. Die Syntax des Befehls lautet: $ lpadmin [–option(en)] [-d drucker | -p option(en) | -x drucker]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c klasse
Konfiguration einer Druckerklasse bzw. Hinzufügen eines Druckers zu einer Druckerklasse. Eine Druckerklasse ist ein Pool von gleichartigen Druckern, von denen der nächste freie Drucker die nächste anstehende Druckanforderung entgegennimmt. Dabei werden die Drucker in der Reihenfolge abgefragt, in der sie der Klasse hinzugefügt wurden, weshalb die leistungsfähigsten zuerst zugeordnet werden sollten.
-d drucker
Angabe des Zieldruckers
-D kommentar
Definition eines Kommentars für einen neu konfigurierten Drucker
-E
Aktiviert den Drucker und nimmt Druckaufträge entgegen. Diese Option entspricht der Eingabe der Befehle accept und enable für den Drucker. Wenn diese Option vor den Optionen -d, -p oder -x angegeben wird, wird eine Verschlüsselung bei der Verbindung mit dem Server erzwungen.
-h server
Angabe des Servernamens
-i interface
Definition eines Interface-Programms im System V-Stil für den neu konfigurierten Drucker. Diese Option kann nicht mit der Option -P verwendet werden (PPD-Datei).
-L lokation
Definition eines Kommentars für den Drucker, der die Lokation des Druckers angibt
-m modell
Legt ein standardmäßiges System V-Interface-Programm oder eine PPD-Datei aus dem Verzeichnis model fest
-p option
Angabe von Druckeroptionen
Tab. 11.4: Die Optionen des Befehls lpadmin
542
Kapitel 11 · Drucker verwalten
Option -o option
Beschreibung Definition von folgenden Optionen: name=wert
Definiert eine PPD- oder Serveroption für den Drucker. PPD-Optionen können mit der Option -l mit dem Befehl lpoptions aufgelistet werden. job-k-limit=wert Definiert das Limit in Kbyte für Quoten pro Benutzer. Der Wert ist eine ganze Zahl in Kbyte. job-page-limit=wert Definiert das Seitenlimit für Quoten pro Benutzer. Der Wert ist eine ganze Zahl für die zu druckenden Seiten. job-quota-period=wert Definiert die Berechnungsperiode für Quoten pro Benutzer. Der Wert ist eine ganze Zahl in Sekunden. 86.400 Sekunden sind ein Tag. protocol=name Definiert den binären Protokolltyp für die Netzwerkverbindung: none, bcp oder tbcp. None ist Standard. -P ppd-datei
Definiert eine Postscript Printer Description-Datei, um den Drucker zu verwenden. Wird die Definition verwendet, überschreibt sie die Option -i.
-r klasse
Entfernt den angegebenen Drucker aus der angegebenen Klasse. Wenn die Klasse leer ist, wird sie entfernt.
-u allow
Definition der zugelassenen (allow) oder nicht zugelassenen (deny) Benutzer eines Druckers. Namen, die mit dem Zeichen @ beginnen, sind Gruppen. Die beiden Optionen -u allow:all und -u deny:none deaktivieren die Benutzerkontrolle.
benutzer,benutzer, @gruppe -u deny benutzer,
benutzer,@gruppe -v geräte-uri
Definition der Gerätedatei-URI der Druckerwarteschlange. Wenn diese URI ein Dateiname ist, wird er automatisch in die Form file:/datei/name konvertiert.
-x drucker
Deinstallation einer Druckerkonfiguration
Tab. 11.4: Die Optionen des Befehls lpadmin (Forts.)
Im nächsten Beispiel wird ein Drucker mit der Bezeichnung hp1200 an die lokale Druckerwarteschlange angeschlossen. Der Druckertyp und der Dateityp sind PostScript: # lpadmin -E –i postscript –D "HP-Drucker" –d hp1200
Im folgenden Beispiel sollen nur die Benutzer her und doo auf den Drucker brother3050 drucken dürfen: # lpadmin –d brother3050 –u allow: her,doo
Mit folgendem Befehl können Sie die Drucker hplaser1 und hplaser2 zu einer Druckerklasse zusammenfassen: # lpadmin -E –d hplaser1 –c ps-klasse # lpadmin –d hplaser2 –c ps-klasse
Beachten Sie beim Anlegen von Druckerklassen, dass die Drucker vom gleichen Typ (zum Beispiel PostScript) und räumlich zusammengefasst sein sollten.
543
magnum
Drucker auf der Befehlszeile einrichten
Sie können einen Drucker auf folgende Weise wieder entfernen: # lpadmin –x hplaser1
Der Befehl lpmove Mit diesem Befehl kann ein Druckauftrag von einer Warteschlange in eine andere verschoben werden, zum Beispiel, weil eine Druckerwarteschlange deaktiviert wurde. Die Syntax des Befehls lautet: $ lpmove [–E] auftrag drucker
Die Option -E erzwingt eine Verschlüsselung bei einer Verbindung mit einem Server. Der folgende Befehl verschiebt den Druckauftrag 345 auf den Drucker hplaser2: # lpmove 345 hplaser2
Bei der System V-Version dieses Befehls ist es auch möglich, alle Druckaufträge einer Warteschlange komplett in eine andere Warteschlange zu verschieben.
Der Befehl lpc Der Befehl lpc stellt eine begrenzte Steuerung über Warteschlangen von Druckern und Klassen zur Verfügung, die von CUPS bereitgestellt werden. Er kann auch dazu verwendet werden, den Status von Warteschlangen abzufragen. Vor CUPS hatte der Befehl in einigen Unix- und Linux-Systemen einen wesentlich umfangreicheren Befehlssatz. Wird an der Befehlszeile kein Befehl angegeben, zeigt lpc ein Promptzeichen an und nimmt dort Eingaben entgegen. Die Syntax des Befehls lautet: # lpc [befehl [parameter] ]
Der Befehl kennt folgende Optionen: Option
Beschreibung
exit oder quit
Der Befehlsinterpreter wird beendet.
-help [befehl] oder -? [befehl]
Ausgabe einer Kurzhilfe zum angegebenen Befehl oder Ausgabe aller möglichen Befehle
-status [warteschlange]
Anzeige des Status einer oder mehrerer Warteschlangen eines Druckers oder einer Klasse
Tab. 11.5: Die Optionen des Befehls lpc
Im nachfolgenden Beispiel wird der Status der einzigen im System vorhandenen Drucker angezeigt: # lpc # lpc> status hplj1200ps: printer is on device 'smb' speed -1 queuing is enabled
544
Kapitel 11 · Drucker verwalten
printing is enabled no entries daemon present lp: printer is on device 'smb' speed -1 queuing is enabled printing is enabled 1 entries daemon present
Der Befehl accept Mit Hilfe des Befehls accept wird für einen neu konfigurierten Drucker oder eine Druckerklasse ermöglicht, dass Druckaufträge in dessen Warteschlange eingereiht werden. Er kann auch dazu verwendet werden, eine Druckerwarteschlange wieder zu aktivieren, wenn diese mit dem Befehl reject deaktiviert wurde. Die Syntax des Befehls lautet: $ accept drucker
Im Beispiel wird die Druckerwarteschlange mit der Bezeichnung hp1200 aktiviert: # accept hp1200
Der Befehl reject Mit dem Befehl reject deaktivieren Sie eine Druckerwarteschlange, so dass keine Druckaufträge mehr gespoolt werden können. Die Syntax des Befehls lautet: $ reject [–option(en)] drucker
Der Befehl kennt folgende Optionen: Option
Beschreibung
-E
Es wird eine Verschlüsselung bei der Verbindung mit dem Server erzwungen.
-h server
Angabe des Servernamens
-r grund
Angabe eines Grunds für die Deaktivierung der Druckerwarteschlange
Tab. 11.6: Die Optionen des Befehls reject
Es ist möglich, mit der Option –r einen Grund für die Deaktivierung der Druckerwarteschlange anzugeben, zum Beispiel: # reject –r "Drucker wird repariert" hp1200
Bei Statusabfragen erhält der Benutzer eine entsprechende Angabe: # lpstat –a hp1200 hp1200 not accepting requests since Wed Mar 31 18:33:40 MET 2004 – Drucker wird repariert
545
Drucker auf der Befehlszeile einrichten
magnum
Der Befehl enable Mit Hilfe des Befehls enable können Sie einen neu konfigurierten Drucker aktivieren oder einen mit dem Befehl disable deaktivierten Drucker wieder aktivieren. Die Syntax des Befehls lautet: $ /usr/bin/enable [–E] drucker
Beachten Sie, dass die Bourne-Again-Shell einen eingebauten, so genannten Built-in-Befehl hat, der auch enable lautet. Daher müssen Sie den Druckbefehl enable mit seinem vollständigen Pfadnamen aufrufen! Der Befehl kennt folgende Option: Option
Beschreibung
-E
Es wird eine Verschlüsselung bei der Verbindung mit dem Server erzwungen.
Tab. 11.7: Die Option des Befehls enable
In diesem Beispiel wird der Drucker brother3050 aktiviert: # enable brother3050
Der Befehl disable Mit dem Befehl disable deaktivieren Sie einen Drucker, so dass keine gespoolten Druckaufträge mehr an den Drucker gesendet werden können. Die Syntax des Befehls lautet: $ disable [–option(en)] drucker
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Löscht alle Druckaufträge des angegebenen Druckers
-E
Es wird eine Verschlüsselung bei der Verbindung mit dem Server erzwungen.
-h server
Angabe des Servernamens
-r grund
Angabe eines Grunds für die Deaktivierung der Druckers
Tab. 11.8: Die Optionen des Befehls disable
Es ist möglich, mit der Option –r einen Grund für die Deaktivierung des Druckers anzugeben, zum Beispiel: # disable –r "Toner wird gewechselt" brother3050
Diese Meldung wird ausgegeben, wenn sich Benutzer den Status des Druckers anzeigen lassen.
546
Kapitel 11 · Drucker verwalten
Der Befehl tunelp Mit dem Befehl tunelp können Sie verschiedene Parameter für die Geräte /dev/lp? (das Fragezeichen steht für die Ziffer des Geräts) einstellen, um die Leistungsfähigkeit zu verbessern. Ohne Parameter wird Ihnen angezeigt, ob und welche Interrupts das Gerät verwendet. Die Syntax des Befehls lautet: # tunelp gerät [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a [on|off]
Legt fest, ob das Programm beim Auftritt eines Druckerfehlers abgebrochen werden soll oder nicht. Standardmäßig wird nicht abgebrochen.
-c chars
chars ist die Anzahl von Versuchen, um ein Zeichen auf dem Drucker auszugeben, bevor die mit -t eingestellte »Ruhezeit« erreicht ist. Der Wert 1000 ist Standard.
-C [on|off]
Die Funktion, den Drucker sehr vorsichtig auf Fehler zu überprüfen, aktivieren oder deaktivieren
-i irq
Verwendet den angegebenen IRQ für den angegebenen Parallelport. Ist IRQ 0, wird der nicht durch Interrupts gesteuerte Zustand (Polling) wiederhergestellt.
-o [on|off]
Diese Option ähnelt der Option -a: sie legt fest, ob abgebrochen werden soll, wenn das Gerät nicht zu erreichen ist oder kein Papier hat, oder ob nicht.
-q [on|off]
Diese Option schaltet die Ausgabe der aktuellen Interrupt-Einstellungen ein oder aus.
-r
Diese Option setzt den Port zurück (ab Linux-Kernelversion 1.1.80 oder höher).
-s
Diese Option gibt den aktuellen Druckerstatus aus, sowohl als Dezimalzahl zwischen 0 und 255 als auch als Liste von aktiven Flags.
-t zeit
zeit ist die Zeitangabe in Hundertstelsekunden, die der Treiber wartet, wenn der Drucker ein Zeichen innerhalb der Anzahl von Versuchen, die mit der Option -c festgelegt wurde, nicht annimmt. Das schnellstmögliche Drucken kann mit einem Wert 0 erreicht werden, 500 (5 Sekunden) sind ein guter Wert für einen langsamen Drucker mit Puffer.
-T [on|off]
Diese Option informiert den Druckertreiber, ob er dem Interrupt vertrauen soll oder nicht.
-w zeit
zeit ist die Zeitangabe in Hundertstelsekunden, die gewartet wird, bevor ein Strobe-Signal nochmals gesendet wird. (Bei der parallelen Datenübertragung wird der Datenfluss über die beiden Steuerleitungen Strobe und Ack geregelt.)
Tab. 11.9: Die Optionen des Befehls disable
Im folgenden Beispiel wird der Interrupt zum Gerät
/dev/lp0 ausgegeben:
# /usr/sbin/tunelp /dev/lp0 /dev/lp0 using IRQ -1
547
magnum
Dateien drucken
11.4.1
Bestimmung des Druckziels
Im Allgemeinen wird ein spezieller Drucker als Standarddruckziel eingerichtet. Falls auf einen anderen Drucker ausgegeben werden sollte, gilt bei der Druckerauswahl die folgende Reihenfolge: 1. Beim Befehl lpr kann in der Kommandozeile mit der Option -P ein bestimmter Drucker für diesen Auftrag gewählt werden, beim Befehl lp verwenden Sie -d. 2. Jeder Benutzer kann sich über die Environment-Variable PRINTER oder LPDEST einen eigenen Standarddrucker einrichten. Die Variable PRINTER wird nur gelesen, wenn die Variable LPDEST nicht definiert wurde. 3. Falls die Punkte 1 und 2 nicht zutreffen, wird auf den eingestellten Standarddrucker zurückgegriffen, der bei der BSD-LPD-Druckerverwaltung durch einen Eintrag mit dem Befehl lp in /etc/printcap und bei LPRng durch den ersten Druckereintrag in /etc/printcap definiert wird.
11.5 Dateien drucken In den nächsten Abschnitten werden zuerst die System V- und dann die BSDDruckbefehle behandelt. Alle Befehle können auch für das Drucksystem CUPS angewandt werden. Unter SUSE und Fedora Core Linux ist standardmäßig bereits das Drucksystem CUPS implementiert. Ein Benutzer darf in der Regel nur seine eigenen Druckaufträge aus der Warteschlange löschen.
Mit dem Befehl lpoptions [-d drucker] -l können Sie herausfinden, wie ein Hersteller die Druckoptionen in eine PostScript Printer Description-Datei (PPD) hineincodiert hat. Die Ausgabe ist relativ lang, kombiniert mit einem Befehl grep können Sie aber einzelne Daten entnehmen, zum Beispiel lpotions -d drucker -l | grep uplex gibt Ihnen zurück, wie der doppelseitige Druck (duplex) eingestellt ist: TR-Duplex/Duplex: False *True, das heißt, Duplex-Druck ist möglich.
11.5.1
System V-Druckbefehle
Der Befehl lp Der System V-Druckbefehl lp reiht zu druckende Dateien in eine Warteschlange ein. Von der Befehlszeile aus können mit diesem Befehl sowohl ASCII-Textdateien als auch PostScriptdateien, aber keine Binärdateien oder von Anwendungen, wie zum Beispiel Framemaker, erzeugte Dateien gedruckt werden. Die Syntax des Befehls lautet: $ lp [–option(en)] datei(en)
548
Kapitel 11 · Drucker verwalten
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Diese Option steht nur aus Gründen der Abwärtskompatibilität zur Verfügung. Bei Systemen, die diese Option unterstützen, wird die auszudruckende Datei als Kopie im Spoolverzeichnis abgelegt, bevor sie gedruckt wird. Bei CUPS werden Druckdateien immer über IPP an den Scheduler gesandt, was denselben Effekt hat.
-d drucker
Angabe des Zieldruckers. Wird diese Option nicht verwendet, erfolgt der Ausdruck auf den Standarddrucker.
-E
Beim Verbinden mit dem Server wird eine Verschlüsselung verlangt.
-H key
Gibt mit key an, wann der Druckauftrag ausgedruckt wird. Gültige Schlüsselworte sind: hold immediate HH:MM resume restart
Einreihen des Auftrags in die Warteschlange, aber keine Abarbeitung. Der aktuelle Auftrag wird durch dieses Schlüsselwort abgebrochen und zurückgestellt. Zuteilung der höchsten Priorität 0 für einen Druckauftrag, wodurch dieser sofort ausgedruckt wird Ein Zeitwert hält den Druckjob bis zur angegebenen Zeit zurück. Freigabe eines mit dem Schlüsselwort hold gestoppten Druckauftrags; gemeinsame Verwendung mit der Option -i Wird dieses Schlüsselwort gemeinsam mit der Option -i verwendet, wird ein ausgeführter Druckauftrag neu gestartet.
-i jobid
Legt den zu ändernden Druckauftrag fest
-m
Versenden einer E-Mail an den Benutzer, dessen Druckauftrag abgeschlossen ist (wird von CUPS 1.1 nicht unterstützt)
-n zahl
Angabe der zu druckenden Kopien von 1 bis 100
-o option
Angabe von weiteren Optionen, zu diesen gehören: cpi=zahl
Veränderung der Zeichendichte pro Zoll für den Ausdruck. Alternative Optionen sind pica, elite und compressed. length=zahl Veränderung der Länge einer gedruckten Seite in Zeilen lpi=zahl Veränderung der Zeilendichte pro Zoll für den Ausdruck nobanner Ausdruck ohne Bannerseite nofilebreak Ausdruck der Dateien hintereinander ohne Seitenvorschub stty='optionen' Veränderung der Leitungsparameter width=zahl Veränderung der Breite einer gedruckten Zeile in Spalten -P seiten
Gibt an, welche Seiten des Dokuments gedruckt werden. Die Liste kann Zahlen und Bereiche enthalten, die durch Kommata getrennt werden, zum Beispiel 1,3–5,16.
-q zahl
Angabe der Druckpriorität von 1 bis 100 (höchste Priorität), wobei 50 die Standardpriorität ist
-s
Gibt die Druckauftragsnummern nicht aus (stiller Modus)
-t name
Angabe eines Druckauftragsnamen für den Ausdruck
Tab. 11.10: Die Optionen des Befehls lp
549
magnum
Dateien drucken
Im nachfolgenden Beispiel wird die Datei testdatei im Homeverzeichnis des Benutzers nicht auf den Standarddrucker, sondern auf den Drucker brother3050 gedruckt: $ lp -d brother3050 ~/testdatei request id is brother3050-1 (1 file(s))
Der Name des Druckers kann entweder beim Drucken angegeben werden oder das System sucht nach einem hinterlegten Standarddrucker.
Der Befehl cancel Mit Hilfe dieses System V-Befehls kann ein Benutzer einen Druckauftrag löschen, den er zuvor mit dem Befehl lp gestartet hat und der sich noch in der Druckerwarteschlange befindet. Die Syntax des Befehls lautet: $ cancel [–option(en)] [request-id(s)] [drucker]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Alle Druckaufträge des angegebenen Druckers löschen
-h rechnername
Legt den Rechnernamen des Printservers fest. Standard ist »localhost« oder der Wert der Variablen CUPS_SERVER.
-u username
Alle Druckaufträge des angegebenen Benutzers löschen
Tab. 11.11: Die Optionen des Befehls cancel
Eventuell muss mit Hilfe des Befehls lpstat (vergleiche nächster Abschnitt) die Nummer des Druckauftrags (request-ID) herausgefunden werden. Der im vorherigen Beispiel gestartete Druckauftrag kann mit dem folgenden Befehl storniert werden: $ lpstat brother3050 brother3050-1 her 551Jun 10 17:45 brother3050-2 her 632Jun 10 17:47 $ cancel brother3050-1 request " brother3050-1" cancelled
Mit Hilfe der Option -u können alle Druckaufträge des angegebenen Benutzers entfernt werden, zum Beispiel: $ cancel -u her request " brother3050-2" cancelled request " brother3050-3" cancelled
Der Befehl lpstat Dieser System V-Befehl zeigt den Status von Druckern und Druckerwarteschlangen an. $ lpstat [–option(en)]
550
Kapitel 11 · Drucker verwalten
Ohne Argument werden sämtliche Aufträge der Druckerwarteschlange ausgegeben. Der Befehl kennt folgende Optionen: Option
Beschreibung
-a [drucker]
Wenn kein Druckername angegeben wird, werden alle konfigurierten Drucker und ihr aktueller Status angezeigt. Bei Verwendung eines Druckernamens werden diese Informationen nur für diesen Drucker ausgegeben.
-c [klasse]
Wenn kein Druckername angegeben wird, werden alle konfigurierten Druckerklassen und ihr aktueller Status angezeigt. Bei Verwendung einer Druckerklasse werden diese Informationen nur für diese Druckerklasse ausgegeben.
-d
Ausgabe des Standarddruckers des Systems
-E
Beim Verbinden mit dem Server wird eine Verschlüsselung verlangt.
-h server
Angabe des CUPS-Servers, mit dem kommuniziert wird. Diese Option ist eine CUPS-Option.
-l
Ausführliche Ausgabe von Druckern, Klassen oder Druckaufträgen
-o [drucker]
Ausgabe des Status aller Druckaufträge aller definierten oder des angegebenen Druckers
-p [drucker]
Ausgabe des Druckstatus aller oder eines angegebenen Druckers
-r
Ausgabe, ob der Druckdienst gestartet ist
-R
Ausgabe der anstehenden Druckaufträge und ihrer Prioritäten
-s
Ausgabe einer zusammenfassenden Statusübersicht für alle Drucker des Systems, einschließlich des Standarddruckers und der Druckerklassen
-t [drucker]
Ausgabe einer vollständigen Statusinformation für alle oder den angegebenen Drucker
-u benutzer
Ausgabe aller Druckaufträge des angegebenen Benutzers. Auch mehrere Benutzer können hier spezifiziert werden. Wird kein Benutzer angegeben, werden die Druckaufträge des aktuellen Benutzers angezeigt.
-v [drucker]
Ausgabe der Gerätedatei, über die ein Drucker angeschlossen ist. Ohne Option werden diese Informationen für alle Drucker des Systems ausgegeben.
-W
Legt fest, welche Druckaufträge angezeigt werden: completed oder notcompleted (Standard). Diese Option muss vor der Option -o und/oder den jeweiligen Druckernamen stehen, sonst wird der Standardwert completed bei
welcher-job
der Anforderung an den Druckdienst verwendet. Diese Option ist eine CUPSOption.
Tab. 11.12: Die Optionen des Befehls lpstat
Mit folgendem Befehl wird der Status aller Druckaufträge angezeigt: $ lpstat –o brother3050-6doo491 Jun 10 18:30 on brother3050 lexmark-2her751Jun 10 18:34 filtered
Die Angabe filtered (gefiltert) bedeutet, dass der Druckauftrag gerade ausgedruckt wird.
551
magnum
Dateien drucken
Mit Hilfe des nachfolgenden Befehls werden nur die Druckaufträge einer bestimmten Druckerwarteschlange angezeigt: $ lpstat brother3050 brother3050-2 her521 Jun 10 17:45 brother3050-3 doo682 Jun 10 17:47
Mit dem nächsten Befehl erhalten Sie den Status aller konfigurierten Drucker am System angezeigt: $ lpstat –t scheduler is running system default destination: printerA system for brother3050: suso2 system for lexmark: suso5 brother3050 accepting requests since Fri Jun 8 09:21:00 EST 2001 lexmark accepting requests since Sat Jun 9 20:31 EST 2001
11.5.2
BSD-Druckbefehle
Der Befehl lpr Der BSD-Druckbefehl lpr reiht ebenfalls zu druckende Dateien in eine Warteschlange ein. Die Syntax des Befehls lautet: $ lpr [–option(en)] datei(en)
Der Befehl kennt folgende Optionen: Option
Beschreibung
-C name
Legt den Namen des Druckauftrags fest
-E
Beim Verbinden mit dem Server wird eine Verschlüsselung verlangt.
-J name
Legt den Namen des Druckauftrags fest
-l
Legt fest, dass die Datei bereits für den Zieldrucker formatiert ist und ohne weiteres Filtern gedruckt werden soll. Entspricht der Option -oraw
-# zahl
Angabe der zu druckenden Kopien
-o option
Angabe von weiteren Optionen, zum Beispiel raw = keine weitere Filterung
-p
Legt fest, dass die Datei mit einer schattierten Kopfzeile unter Angabe von Datum, Uhrzeit, Druckauftragsname und Seitenzahlen formatiert werden soll. Diese Option entspricht der Option -oprettyprint und ist nur beim Drucken von Textdateien sinnvoll.
-Pdrucker
Angabe des Zieldruckers. Wird diese Option nicht verwendet, erfolgt der Ausdruck auf den Standarddrucker.
-r
Legt fest, dass die angegebenen Druckdateien nach dem Ausdruck gelöscht werden sollen
-T name
Legt den Namen des Druckauftrags fest
Tab. 11.13: Die Optionen des Befehls lpr
552
Kapitel 11 · Drucker verwalten
Im nachfolgenden Beispiel wird die Datei bericht3 im aktuellen Verzeichnis des Benutzers nicht auf den Standarddrucker, sondern auf den Drucker hplj1200ps gedruckt: $ lpr -Phpls1200ps bericht
Der Name des Druckers kann entweder beim Drucken angegeben werden oder das System sucht nach einem hinterlegten Standarddrucker.
Der Befehl lprm Mit Hilfe dieses BSD-Druckbefehls kann ein Benutzer einen Druckauftrag löschen, den er zuvor mit dem Befehl lpr gestartet hat und der sich noch in der Druckerwarteschlange befindet. Die Syntax des Befehls lautet: $ lprm [–option(en)] [request-id(s)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-E
Beim Verbinden mit dem Server wird eine Verschlüsselung verlangt.
-Pdrucker
Angabe des Zieldruckers
-
Wenn keine Argumente angegeben werden, wird der aktuelle Druckauftrag auf dem Standarddrucker gelöscht. Sie können eine oder mehrere Druckauftragsnummern angeben, um diese Druckaufträge zu löschen, oder die Option verwenden, um alle Druckaufträge zu löschen.
Tab. 11.14: Die Optionen des Befehls lprm
Ein Druckauftrag kann zum Beispiel wie folgt storniert werden: $ lprm -Phplj1200ps 3
Der Druckauftrag mit der Nummer 3 auf dem Drucker hplj1200ps wird gelöscht.
Der Befehl lpq Dieser BSD-Befehl zeigt den Status von Druckern und Druckerwarteschlangen an. $ lpq [–option(en)]
Ohne Argument werden sämtliche Aufträge der Druckerwarteschlange ausgegeben. Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Mit dieser Option werden die Druckerwarteschlangen von allen konfigurierten Druckern angezeigt.
-E
Beim Verbinden mit dem Server wird eine Verschlüsselung verlangt.
-l
Ausführliche Ausgabe von Druckern, Klassen oder Druckaufträgen
Tab. 11.15: Die Optionen des Befehls lpq
553
magnum
Dateien drucken
Option
Beschreibung
-Pdrucker
Ausgabe des Druckstatus des angegebenen Druckers
+intervall
Diese Option ermöglicht es, dass Sie ständig über die Druckaufträge in der Warteschlange unterrichtet werden, bis diese leer ist. Die Liste der Druckaufträge wird im Intervall von intervall Sekunden angezeigt.
Tab. 11.15: Die Optionen des Befehls lpq (Forts.)
Mit folgendem Befehl wird der Status aller Druckaufträge angezeigt: $ lpq –a Rank Owner active her 1st her
Job 6 7
File(s) bericht total.png
Total Size 3072 bytes 43732 bytes
Eine wichtige Information dieser Ausgabe ist die Jobnummer, über die ein Druckauftrag angesprochen und gelöscht werden kann. Der Auftrag mit der Angabe active wird zurzeit gedruckt. Der Rang 1st kennzeichnet den nächsten anstehenden Auftrag.
554
12 Prozessverwaltung »Prozess: Eine Maschine, in die man als Schwein hineingeht, um als Wurst wieder herauszukommen.« – Ambrose Gwinnet Bierce Für jede Anwendung und jeden Befehl, die gestartet werden, wird ein Prozess erzeugt und nach Ablauf der Anwendung bzw. des Befehls wieder beendet. Einen aktiven Prozess können Sie auf verschiedene Weisen bearbeiten: anzeigen, anhalten, wieder starten und sogar zwangsweise stoppen. Es ist auch möglich, ein bestimmtes Programm zu einem regelmäßigen wiederkehrenden Termin automatisch ausführen zu lassen. Dieses Kapitel stellt Ihnen die verschiedenen Möglichkeiten vor.
12.1 Prozesse verwalten In diesem Abschnitt lernen Sie zunächst die Signale kennen, mit denen Sie Prozesse steuern können. Anschließend werden Sie erfahren, wie Sie mit Hilfe der Signale und verschiedener Befehle Prozesse steuern können.
12.1.1
Signale
Signale unter Linux sind eine Methode, um einen Prozess über das Eintreten eines bestimmten Systemereignisses zu informieren. Signale übermitteln dabei nicht direkt Informationen, sondern sie werden nur dazu verwendet, das Eintreten eines Ereignisses anzuzeigen. Sie werden auch als Softwareinterrupts bezeichnet und können auf verschiedene Weise entstehen:
쮿
Ein Prozess oder ein Benutzer verwendet den Befehl kill, um einer bestimmten Prozess-Id PID ein Signal zu senden.
쮿
Ein Benutzer kann ein Programm durch die Tastenkombination (Ctrl)+(c) beenden. Der Kernel erkennt diesen Vorgang und sendet dem Programm und der Shell das Signal INT zu.
쮿
Sie können von der Hardware ausgelöst werden. Wird zum Beispiel eine Division durch 0 versucht, dann wird das Signal FPE (arithmetischer Fehler) gesendet.
Ein Prozess, der ein Signal empfängt, kann auf unterschiedliche Weise darauf reagieren. Programme und Shells weisen hier zum Beispiel ein unterschiedliches Verhalten auf, wenn ein Signal eintrifft: Normalerweise bricht das Programm ab, während die Shell das Signal ignoriert. Die Reaktionen auf ein Signal können vordefiniert sein: Der Prozess kann es ignorieren, sich beenden oder anhalten. Alle Signale lassen sich mit dem Befehl trap abfangen, mit Ausnahme des Signals SIGKILL. Linux unterstützt sowohl standardmäßige POSIX-Signale als auch POSIX-Realtime-Signale. Die Verwendung von Signalen erfolgt über Namen, die in der Include-Datei signal.h hinterlegt sind. Mehrere Signale sind von der Architektur abhängig und haben daher in der nachfolgenden Tabelle in der Spalte »Wert« mehrere Werte zugewiesen. Wenn es drei Werte gibt, gilt der erste in der Regel für die Alpha-Architektur und die Sparc, der zweite für Intel- und PPC-Architekturen und der dritte für MIPSArchitekturen.
555
magnum
Prozesse verwalten
Zu den vordefinierten Signalbezeichnungen, die aber bei Bedarf vom Programmierer geändert werden können, gehören einmal die ursprünglichen POSIX.1-Standardsignale: Name
Wert
Aktion
Beschreibung
SIGHUP
1
Term
Hangup, zum Beispiel Terminalleitung unterbrechen. Wird in Pseudoterminalfenstern zum Neuaufbau des Fensterinhalts verwendet, zum Beispiel, wenn die Fenstergröße verändert wurde
SIGINT
2
Term
Programm unterbrechen (Interrupt), wie (Ctrl)+(c)
SIGQUIT
3
Core
Programm unterbrechen und Coredump erstellen
SIGILL
4
Core
Unzulässige Prozessoranweisung (illegal instruction)
SIGABRT
6
Core
Programm abbrechen (abort)
SIGFPE
8
Core
Arithmetischer Fehler
SIGKILL
9
Term
Programm zwingend abbrechen (killed)
SIGSEGV
11
Core
Fehler durch Zugriff auf ungültigen Speicherbereich
SIGPIPE
13
Term
Ausgabe in eine Datei, ohne dass ein Prozess daraus liest (unterbrochene Pipe)
SIGALRM
14
Term
Ablaufen der Signaluhr
SIGTERM
15
Term
Aufforderung an den Prozess, sich zu beenden. Das Standardsignal, das vom Befehl kill gesendet wird
SIGUSR1
30,10,16
Term
Benutzerdefiniertes Signal 1
SIGUSR2
31,12,17
Term
Benutzerdefiniertes Signal 2
SIGCHLD
20,17,18
Ignore
Prozessstatuswechsel des Kindprozesses; dieser wurde angehalten oder beendet
SIGCONT
19,18,25
SIGSTOP
17,19,23
Stop
Prozess durch Signal anhalten
SIGTSTP
18,20,24
Stop
Prozess durch Benutzer anhalten, wie (Ctrl)+(z)
SIGTTIN
21,21,26
Stop
Terminaleingabe für Hintergrundprozess
SIGTTOU
22,22,27
Stop
Terminalausgabe für Hintergrundprozess
Prozess fortsetzen
Tab. 12.1: Die wichtigsten POSIX-Standardsignale unter Linux
556
Kapitel 12 · Prozessverwaltung
Die nächsten Signale sind nicht im POSIX.1-Standard enthalten, werden aber in den Standards SUSv2 und SUSv3/POSIX 1003.1-2001 beschrieben: Name
Wert
Aktion
Beschreibung
SIGBUS
10,7,10
Core
Adressfehler (bus error), zum Beispiel bei einer Anweisung mit unzulässigem Datenzugriff
SIGPOLL
22
Term
Asynchrone Ein-/Ausgabe am Dateizeiger (entspricht SIGIO)
SIGPROF
27,27,29
Term
Prozessüberwachungstimer abgelaufen
SIGSYS
12,-,12
Core
Fehlerhafter Systemaufruf
SIGTRAP
5
Core
Unterbrechung von speziellen Debuggern
SIGURG
16,23,21
Ignore
Wichtige Änderung der Netzwerkverbindung (SocketZustand)
SIGVTALRM
26,26,28
Term
Virtuelle Alarmglocke
SIGXCPU
24,24,30
Core
CPU-Zeitlimit überschritten
SIGFSZ
25,25,31
Core
Maximale Dateigröße überschritten
Tab. 12.2: Weitere POSIX-Standardsignale unter Linux
Weitere Signale sind: Name
Wert
Aktion
Beschreibung
SIGIOT
6
Core
Programm abbrechen, entspricht SIGABRT
SIGEMT
7,-,7
Term
Emulator Trap
SIGSTKFLT
-,16,-
Term
Stackfehler des Coprozessors (wird nicht verwendet)
SIGIO
23,29,22
Term
Ein-/Ausgabe nicht möglich
SIGCLD
-,-,18
Ignore
Ein Synonym für SIGCHLD
SIGPWR
29,30,19
Term
Stromausfall (powerfail)
SIGINFO
29,-,-
SIGLOST
-,-,-
Term
Verlorene Dateisperre
SIGWINCH
28,28,20
Ignore
Veränderung der Fenstergröße
SIGUNUSED
-,31,-
Term
Nicht verwendetes Signal
Ein Synonym für SIGPWR
Tab. 12.3: Weitere Signale unter Linux
557
magnum
Prozesse verwalten
Die Aktionen haben folgende Bedeutung: Option
Beschreibung
Term
Als Standardaktion wird der Prozess beendet.
Ign
Als Standardaktion wird das Signal ignoriert.
Core
Als Standardaktion wird der Prozess beendet und eine Core-Datei erzeugt.
Stop
Als Standardaktion wird der Prozess gestoppt.
Tab. 12.4: Bedeutung der Aktionen der Signale
Die meisten Signale bewirken standardmäßig einen Programmabbruch, entsprechend dem Aufruf des Befehls exit für den betroffenen Prozess. Die Signale SIGUIT, SIGILL, SIGABRT, SIGSEGV, SIGBUS, SIGSYS, SIGTRAP, SIGXCPU, SIGFSZ, SIGIOT und SIGFPE bewirken dagegen ein etwas anderes Ende des Prozesses, da vor der Beendigung ein Speicherauszug des Prozesses auf Platte geschrieben wird. Das bietet die Möglichkeit, den aufgetretenen Fehler mit Hilfe eines passenden Werkzeugs zu analysieren.
12.1.2
Befehle für die Prozessverwaltung
Nachfolgend werden die wichtigsten Befehle für die Prozessverwaltung erklärt. Der Vollständigkeit halber wird an dieser Stelle nochmals kurz die Möglichkeit der Jobkontrolle im Hintergrund mit Hilfe des Ampersand-Zeichens & und der Befehle jobs, bg und fg erwähnt.
Der Befehl ps Dieser Befehl gibt Informationen über im Moment aktive Prozesse aus. In seiner einfachsten Form gibt er alle Prozesse in einer Shell aus. Die Syntax des Befehls lautet: # ps [-option(en) | option(en)] [pid]
Der Befehl ps kennt Optionen, die sowohl mit als auch ohne den Bindestrich angegeben werden. Der Befehl kennt sehr viele Optionen: Option
Beschreibung
a
Zeigt alle Prozesse eines Terminals an, einschließlich derer von anderen Benutzern
-a
Anzeige aller Prozesse, die von einem Terminalprozess kontrolliert werden, mit Ausnahme der kontrollierenden Prozesse
-A
Anzeige aller Prozesse, wie –e
c
Anzeige des wirklichen Befehlsnamens
C
Verwendet die »rohe« CPU-Zeit im Feld %CPU anstatt des abgeschwächten Mittelwerts
Tab. 12.5: Optionen des Befehls ps
558
Kapitel 12 · Prozessverwaltung
Option
Beschreibung
-c
Formatierte Anzeige, die Scheduler-Prioritäten wiedergibt, wie zum Beispiel Prozessklasse (gemeinsam mit -l)
-C
Die Auswahl erfolgt nach Befehlsnamen
--cols oder --columns
Die Ausgabebreite einstellen, zum Beispiel, wenn die Ausgabe in eine Datei geschrieben wird
--cumulative
Enthält auch einige Daten zu »toten« Kindprozessen (als Summe mit den Elternprozessen)
-d
Anzeige aller Prozesse mit Ausnahme der kontrollierenden Prozesse
e
Anzeige der Umgebungsvariablen nach dem Befehl
-e
Anzeige aller Prozesse
f
Anzeige einer Prozesshierarchie
-f
Ausführliche Ausgabe mit zusätzlichen Informationen
-F
Besonders ausführliche Ausgabe
--forest
Anzeige eines Prozessbaums
g
Zeigt wirklich alle Prozesse an, auch die kontrollierenden Prozesse
-g pid | gid oder --group
Anzeige aller Prozesse der Prozessgruppe, die zur PID pid gehört, oder alle Prozesse zum angegebenen Gruppennamen
-G gid oder --Group
Anzeige aller Prozesse mit einer realen GID, die in gid enthalten ist. Es können auch Gruppennamen verwendet werden
h
Es wird keine Überschrift angezeigt.
-H
Zeigt die Prozesshierarchie an
--headers
Wiederholt die Kopfzeilen, eine pro Ausgabeseite
j
Format der Jobkontrolle
-j
Anzeige mit Sitzungsnummer und Prozessgruppennummer
l
Ausführliches Format
-l
Ausführliche Ausgabe mit zusätzlichen Informationen
--lines
Bestimmt die Höhe des Bildschirms
m
Anzeige aller Threads
-m
Anzeige von Threads.
n
Numerische Ausgabe für die Spalten WCHAN und USER.
-N oder --deselect
Negiert die Selektion.
Tab. 12.5: Optionen des Befehls ps (Forts.)
559
magnum
Prozesse verwalten
Option
Beschreibung
--no-headers
Es werden überhaupt keine Kopfzeilen ausgegeben.
o
Spezifiziert das benutzerdefinierte Format
-o format oder --format
Formatierte Ausgabe wie in format angegeben, zum Beispiel durch die Argumente user, group, uid, gid, pid, ppid, sid usw. Vergleichen Sie dazu die Erklärung zur Ausgabe des Befehls.
p pid
Wählt Prozesse der angegebenen PID aus
-p pid oder --pid
Anzeige der Prozesse mit in pid enthaltenen Prozessidentifikationsnummern
--ppid
Auswahl nach der übergeordneten Prozess-ID
r
Beschränkt die Ausgabe auf laufende Prozesse
--rows
Bestimmt die Höhe des Bildschirms
s
Anzeige des Signalformats
S
Enthält einige Angaben zu »toten« Kindprozessen (aufgeführt in der Summe der Elternprozesse)
-s sid
Anzeige aller kontrollierenden Prozesse, die in sid enthalten sind
--sid
Auswahl nach der Sitzungsidentifikationsnummer (sid)
--sort
Definiert die Sortierreihenfolge
t term
Wählt Prozesse des angegebenen Terminals aus
T
Zeigt alle Prozesse des aktuellen Terminals an
-t term oder --tty
Anzeige aller Prozesse des durch term definierten Terminals
u
Anzeige eines benutzerorientierten Formats
U uid
Wählt Prozesse der angegebenen Benutzer aus
-u uid oder --user
Anzeige aller Prozesse, die dieselbe effektive UID wie in uid enthalten
-U uid oder --User
Anzeige aller Prozesse mit einer realen UID, die in uid enthalten ist. Es können auch Namen verwendet werden.
w
Breite Ausgabe
-w
Breite Ausgabe
--width
Bestimmt die Breite des Bildschirms
-y
Anzeige der Resident Set Size von Prozessen in Kilobyte, das heißt des im Hauptspeicher verbleibenden Teils des Prozesses. Die Option muss gemeinsam mit –l verwendet werden.
x
Zeigt Prozesse an, die keine steuernden Terminalfenster sind
Tab. 12.5: Optionen des Befehls ps (Forts.)
560
Kapitel 12 · Prozessverwaltung
Im ersten Beispiel wird der Befehl ps ohne Optionen aufgerufen: # ps PID 2018 2019 2297
TTY pts/2 pts/2 pts/2
TIME 00:00:00 00:00:00 00:00:00
CMD su bash ps
Sie erhalten in diesem Fall die Prozessnummer, das Gerät, auf dem der Prozess läuft, die durch den Prozess verbrauchte CPU-Zeit in Minuten und Sekunden und den Namen des Befehls. Ein Gerät kann entweder ein Terminalfenster, ein so genanntes Pseudoterminal, sein, zum Beispiel /dev/pts/5, oder die Konsole console oder es wird ein Fragezeichen angezeigt, wenn es sich um einen Daemonprozess handelt, der nicht mit einer Ausgabe verbunden ist. Im nächsten Beispiel bewirken die Optionen –f und –e eine recht ausführliche Ausgabe aller Prozesse. # ps UID root root root root ... her her her her
–ef PID PPID C STIME TTY 1 0 0 14:07 ? 2 1 0 14:07 ? 3 1 0 14:07 ? 4 1 0 14:07 ? 1941 1949 2019 2298
1931 1872 2018 2019
0 0 0 0
14:12 14:12 14:34 16:42
pts/1 ? pts/2 pts/2
TIME 00:00:04 00:00:00 00:00:00 00:00:00
CMD init [5] [keventd] [ksoftirqd_CPU0] [kswapd]
00:00:00 00:00:00 00:00:00 00:00:00
/bin/bash kdeinit: kio_file file /tmp/ksoc -bash ps -ef
Die Prozesse, die in eckigen Klammern [...] in der Prozessliste stehen, sind so genannte Kernelprozesse. Diese Prozesse befinden sich nicht auf der Festplatte oder werden geladen, sondern das Hauptprogramm der Prozesse ist der Kernel selbst. Sie werden beim Hochfahren des Betriebssystems gemeinsam mit dem Kernel aktiviert. Unter anderen gehören dazu die Prozesse khubd, eth0, kupdated, bdflush, nfsd, kreclaimd, kswapd, keventd, mdrecovery, xfslogd, xfsdatad, lvm-mpd usw. Die folgende Tabelle enthält einige Daemons, die standardmäßig unter Linux für die grafische Oberfläche benötigt werden. Daemon
Beschreibung
/usr/X11R6/bin/X
Der Treiber für die grafische Oberfläche (X-Server)
kdm
Der KDE-Anmeldebildschirm, der die grafische Oberfläche startet. Zeigt nach dem Abmelden von KDE wieder das Anmeldefenster an
kicker
Menüleiste des K-Menüs
Tab. 12.6: Daemons, die unter Linux als interaktive Prozesse laufen
Die Option –l macht die Ausgabe noch ausführlicher, zum Beispiel: # F 0 0 0 0
ps –el S UID S 0 S 0 S 0 S 0
PID PPID C PRI NI ADDR SZ 1 0 0 75 0 - 155 2 1 0 75 0 0 3 1 0 94 19 0 4 1 0 85 0 0
WCHAN schedu contex ksofti kswapd
TTY ? ? ? ?
TIME CMD 00:00:04 00:00:00 00:00:00 00:00:00
init keventd ksoftirqd_CPU kswapd
561
magnum
Prozesse verwalten
0 S 0 S 0 S ... 0 S 0 R
0 0 0
5 6 7
1 0 85 0 1 0 75 0 1 0 85 0 -
500 1999 1998 0 75 0 500 2321 2019 0 79 0 -
0 bdflus ? 0 schedu ? 0 kinode ?
00:00:00 bdflush 00:00:00 kupdated 00:00:00 kinoded
725 wait4 pts/2 920 pts/2
00:00:00 bash 00:00:00 ps
Die Spalten haben folgende Bedeutung: Spalte
Bedeutung
F
Mittlerweile veraltete Prozesskennzeichen oder Flags, die heute keine Bedeutung mehr haben.
S
Prozessstatus: D: S: R: Z: T: X: W:
Der Prozess befindet sich im nicht unterbrechbaren Zustand (normalerweise Ein-/Ausgabeverarbeitung). Der Prozess wartet auf ein Ereignis, das heißt, er schläft (»sleeping«). Der Prozess ist laufbereit und wartet auf CPU-Zuteilung (»runnable«). Zombieprozess Der Prozess ist angehalten; das ist zum Beispiel durch die Jobkontrolle der Shell möglich (»traced«). Der Prozess ist »gestorben«. Der Prozess ist ausgelagert.
UID
Die effektive UID, die den Prozess gestartet hat
PID
Die eindeutige Prozess-ID
PPID
Die Prozess-ID des Elternprozesses, also des Prozesses, der den aktuellen Prozess gestartet hat (Parent Prozess-ID)
C
Die CPU-Belastung durch den Scheduler, die heute keine Bedeutung mehr hat, das heißt, dieses Feld wird nicht mehr gepflegt
PRI
Die Priorität des Prozesses
NI
Der Wert für Timesharing-Prozesse, der in die Berechnung der Priorität eingeht
ADDR
Die Speicheradresse des Prozesses
SZ
Die Größe des belegten Speicherplatzes in Seiten (Pages)
WCHAN
Die Adresse des Prozesses, auf den der aktuelle Prozess wartet
TTY
Das kontrollierende Terminal, von dem aus der Prozess gestartet wurde. Ein Fragezeichen bedeutet, es handelt sich um einen Daemon.
TIME
Die verbrauchte CPU-Zeit des Prozesses in Minuten und Sekunden
CMD
Der vollständige Befehlsname
Tab. 12.7: Spaltenüberschriften bei der Ausgabe des Befehls ps
Ein Zombieprozess ist ein Prozess, der beendet wurde, aber seinen Elternprozess davon nicht mehr in Kenntnis setzen konnte. Das kann zum Beispiel vorkommen, wenn der Elternprozess abgestürzt ist. Ein Zombieprozess hat nur noch einen Eintrag in der Prozesstabelle, aber er belegt keinen Hauptspeicher mehr. Spätestens bei einem Neustart des Systems verschwinden solche Zombieprozesse.
562
Kapitel 12 · Prozessverwaltung
Der Befehl pstree Dieser Befehl gibt Prozesse in einer Baumdarstellung aus. Damit kann auf einfache Weise nachvollzogen werden, welcher Prozess von welchem Prozess gestartet wurde. Die Syntax des Befehls lautet: # kbdrate [-option(en)] [pid]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-a
Anzeige von Befehlszeilenargumenten
-c
Normalerweise werden identische Zweige kompakt dargestellt; diese Option verhindert eine kompakte Darstellung.
-G
Verwendet für die Darstellung der Linien VT100-Zeichen
-h
Markiert den aktuellen Prozess und seine Vorfahren
-H pid
Markiert den angegebenen Prozess
-l
Die Zeilen werden normalerweise nach 132 Zeichen Länge umbrochen; diese Option zeigt lange Zeilen an.
-n
Die Prozesse werden nach PID und nicht nach Namen sortiert.
-p
Die PIDs der Prozesse werden auch angezeigt.
-u
Wenn die UID eines Kindprozesses sich vom Elternprozess unterscheidet, wird dies angezeigt.
-U
Verwendet für die Darstellung der Linien UTF8-Zeichen
Tab. 12.8: Die Optionen des Befehls kbdrate
Im folgenden Beispiel wird der Befehl pstree ohne Optionen verwendet: # pstree init-+-atd(at) |-bdflush |-cron |-cupsd(lp)-+-foomatic-rip---foomatic-rip-+-foomatic-rip | | `-sh---cat | `-smb |-eth0 |-kalarmd |-kamix |-kdeinit-+-artsd | |-4*[kdeinit] | |-kdeinit---bash | |-kpat | `-kshisen |-8*[kdeinit] |-kdeinit---2*[appletproxy] |-kdm-+-X | `-kdm---kde-+-gpg-agent | |-kwrapper | `-ssh-agent
563
magnum
Prozesse verwalten
|-keventd |-khubd |-kinoded |-kjournald |-klogd |-ksoftirqd_CPU0 |-kswapd |-kupdated |-lockd |-lvm-mpd |-mdrecoveryd |-6*[mingetty] |-nscd---nscd---5*[nscd] |-portmap(bin) |-resmgrd |-rpciod |-sendmail |-sendmail(mail) |-ssh |-suseplugger |-susewatcher |-syslogd `-xinetd--in.telnetd--login--bash(her)--su(root)--bash--pstree
Der Befehl top Dieser Befehl gibt Informationen über die aktuellen aktiven Prozesse aus. Dabei aktualisiert der Befehl in bestimmten Zeitintervallen die Anzeige. Er gibt auch Statistiken über den Speicher, den Swap-Bereich, den CPU-Status und die Prozessgröße aus. Außerdem bietet er eine Anzahl von interaktiven Befehlen, mit denen zum Beispiel ein Prozess auch beendet werden kann. Die Syntax des Befehls lautet: # top [-option(en)] [pid]
Standardmäßig zeigt der Befehl Informationen zu allen Prozessen an. Der Befehl kann durch die Eingabe von (q) oder (Ctrl)+(c) abgebrochen werden. Es gibt folgende Optionen: Option
Beschreibung
-b
Startet den Befehl im Batchmodus, was nützlich ist, wenn die Ausgabe an andere Programme gesandt werden soll
-c
Umschalten zwischen Befehlszeile und Programmname
-d ss.tt
Angabe des Verzögerungszeitintervalls
-i
Umschalten zwischen dem Anzeigen von Leerlaufprozessen und keiner entsprechenden Anzeige
-n zahl
Anzahl der Iterationsgrenze
-p pid
Nur die Prozesse mit den angegebenen PIDs anzeigen
-u name
Nur Prozesse einer angegebenen effektiven Benutzer-ID oder eines Benutzernamens anzeigen
-U name
Nur Prozesse einer angegebenen effektiven oder realen Benutzer-ID oder eines Benutzernamens anzeigen
Tab. 12.9: Optionen des Befehls top
564
Kapitel 12 · Prozessverwaltung
Der Befehl kennt viele interaktive Kommandos, die durch Drücken der Taste (h) oder (?) angezeigt werden: Befehl
Beschreibung
(Leertaste)
Anzeige aktualisieren
Z, B
Z ändert die Farbzuweisungen der Ausgabe, B aktiviert oder deaktiviert Fettdruck
l, t, m
Umschalten zwischen verschiedenen Ansichten der zusammenfassenden Werte: l (Durchschnittslast), t (CPU-Statistiken) und m (Speicherinformationen)
1, I
Umschalten zwischen der SMP-Ansicht: 1 (einzelner/getrennter Zustand) und I (Irix/Solaris-Modus)
f, o
Anzeigesteuerung von Feldern/Spalten: f fügt Spalten hinzu oder entfernt sie, o ermöglicht es, die Reihenfolge festzulegen
F oder O
Auswahl des Felds, nach dem sortiert wird
Verschieben des Sortierfelds: < verschiebt nach links, > nach rechts
R
Umschalten zwischen normaler und umgekehrter Sortierung
c, i, S
Umschalten zwischen verschiedenen Anzeigen: c (langer Befehlsname), i (Leerlaufprozesse) und S (kumulative Zeit), um untätige Prozesse auszublenden
x, y
Umschalten zwischen dem Markieren: x (Sortierfeld) und y (laufende Prozesse – running)
z, b
Umschalten zwischen verschiedenen Anzeigen z (einfarbig/farbig) und b (fett/invertiert)
n oder #
Einstellen der maximalen Anzahl der anzuzeigenden Prozesse
k, r
Manipulieren von Prozessen: k (Beenden eines Prozesses) oder r (Ändern des Nice-Werts eines Prozesses)
d oder s
Einstellen des Aktualisierungsintervalls
W
Schreiben der Konfigurationsdatei (in ~/.toprc)
q
Beenden des Befehls
Tab. 12.10: Kommandos des Befehls top
Die Ausgabespalten des Befehls haben folgende Bedeutung: Spalte
Bedeutung
PID
Die Prozessidentifikationsnummer
PPID
Die Prozess-ID des Elternprozesses
USER
Der reelle Benutzername
TIME+
Die kumulierte Ausführungszeit
Tab. 12.11: Spaltenüberschriften des Befehls top
565
magnum
Prozesse verwalten
Spalte
Bedeutung
%CPU
Die verbrauchte CPU-Zeit in Prozent
%MEM
Der verbrauchte Speicherplatz
PR
Die Priorität des Prozesses
NI
Der Nice-Wert des Prozesses (vergleiche Befehl ps)
S
Der Status des Prozesses (vergleiche Befehl ps)
VIRT
Die Gesamtsumme des vom Prozess verbrauchten virtuellen Speichers
SWAP
Der ausgelagerte Teil eines gesamten virtuellen Speicherimages eines Prozesses
RES
Der nicht ausgelagerte physikalische Speicher, der von einem Prozess verwendet wird (Resident size)
COMMAND
Der Prozessname bzw. der Name der ausgeführten Datei
UID
Die Benutzeridentifikationsnummer
Tab. 12.11: Spaltenüberschriften des Befehls top (Forts.)
Eine Ausgabe des Befehls kann zum Beispiel wie folgt aussehen: $ top Tasks: 84 total, 2 running, 82 sleeping, 0 stopped, 0 zombie Cpu0: 1.4% user, 0.4% system, 0.0% nice, 98.1% idle Mem: 247720k total, 243088k used, 4632k free, 22552k buffers Swap: 514040k total, 0k used, 514040k free, 106832k cache PID 1734 1937 1931 1898 ...
PPID 1617 1872 1872 1
USER root root root root
TIME+ 1:53.88 0:22.38 0:08.63 0:00.35
%CPU 0.3 0.0 0.3 0.0
%MEM 4.4 7.2 6.5 6.2
PR 15 15 15 15
NI 0 0 0 0
S S S S S
VIRT SWAP RES UID COMMAND 19752 8768 10m 0 /usr/X1 17896 4 17m 0 kpat -s 16096 4 15m 0 kdeinit 15452 4 15m 0 kdeinit
Der Befehl pgrep Dieser Befehl ist eine Kombination der Befehle ps und grep. Er gibt Prozessidentifikationsnummern (PIDs) aus, die mit dem Suchmuster übereinstimmen. Dieses Suchmuster wird mit dem Prozessnamen verglichen, wenn nicht die Option –f verwendet wird. Die Syntax des Befehls lautet: # pgrep [-option(en)] [muster]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d delim
Angabe des Feldtrennzeichens zwischen den PIDs. Die Standardeinstellung ist das Zeilenvorschubzeichen.
-f
Das Suchmuster wird mit der gesamten Zeichenfolge eines Prozesses verglichen und nicht nur mit dem ausführbaren Prozessnamen.
Tab. 12.12: Optionen des Befehls pgrep
566
Kapitel 12 · Prozessverwaltung
Option
Beschreibung
-g groups
Suche nur nach Prozessen mit den übereinstimmenden Prozessgruppen
-G gids
Suche nur nach Prozessen mit übereinstimmenden realen GIDs
-l
Listet den Prozessnamen und die Prozess-ID auf
-n
Ausgabe des zuletzt gestarteten jüngsten Prozesses, der mit dem Suchmuster übereinstimmt
-o
Ausgabe des ältesten Prozesses, der mit dem Suchmuster übereinstimmt
-P ppids
Suche nur nach Prozessen mit den übereinstimmenden Elternprozess-IDs
-s sids
Suche nur nach Prozessen mit den übereinstimmenden Sitzungs-IDs
-t term
Suche nur nach Prozessen mit dem übereinstimmenden Terminal
-u euids
Suche nur nach Prozessen mit den übereinstimmenden effektiven UIDs
-U uids
Suche nur nach Prozessen mit den übereinstimmenden realen UIDs
-v
Umkehrung des Suchmusterbefehls, das heißt, nur die nicht dem Muster entsprechenden Prozesse werden ausgegeben
-x
Suche nur nach Prozessen, deren ausführbarer Name genau mit dem angegebenen Namen übereinstimmt
Tab. 12.12: Optionen des Befehls pgrep (Forts.)
Im folgenden Beispiel wird die PID des Prozesses Sendmail ausgegeben: # pgrep -l sendmail 1794 sendmail 1797 sendmail
Der Befehl free Dieser Befehl gibt eine Übersicht über die Auslastung des Arbeitsspeichers aus. Die Syntax des Befehls lautet: # free [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-b
Anzeige in Byte
-k
Anzeige in Kbyte
-m
Anzeige in Mbyte
-o
Deaktiviert die Anzeige der Pufferkorrektur
-s zeit
Wiederholt die Anzeige im angegebenen Zeitintervall in Sekunden
-t
Anzeige der Werte des gesamten Speichers
Tab. 12.13: Optionen des Befehls free
567
magnum
Prozesse verwalten
Im folgenden Beispiel werden die Angaben der Speichernutzung in Mbyte ausgegeben: # free -mt total Mem: 241 -/+ buffers/cache: 108 Swap: 501 Total: 743
used free shared buffers cached 235 6 0 22 104 133 0 501 235 508
Der Befehl kill Mit diesem Befehl können Sie Prozesse beenden bzw. spezielle Signale an die Prozesse senden, wenn Sie die PID des Prozesses mit Hilfe von ps ermittelt haben. Die Syntax des Befehls lautet: # kill [-signal] pid
Standardmäßig wird das Signal SIGTERM mit der Nummer 15 verwendet. Das Signal kann entweder mit seiner Nummer oder mit dem Namen angegeben werden. Dabei kann der Namensteil »SIG« des Signalnamens weggelassen werden. Die Signale werden in Abschnitt 12.1.1 ausführlich erläutert. Der Befehl kill ist aus zwei Gründen ein in der Shell eingebauter Befehl, ein so genanntes Shell-Builtin: einmal ist es möglich, anstelle von Prozess-IDs Job-IDs zu verwenden (vergleiche Abschnitt 12.1.4). Andererseits ist es nicht notwendig, einen weiteren Prozess zu starten, um einen anderen Prozess zu beenden, wenn Sie zum Beispiel das Limit der Anzahl der erzeugbaren Prozesse erreicht haben. Es gibt mehrere Möglichkeiten, mit Hilfe des Befehls den, zum Beispiel:
kill
einen Prozess zu been-
# kill 334
Auf diese Weise wird das standardmäßige Signal 15, das heißt TERM (»terminate«), dem Prozess mit der Prozess-ID 334 übermittelt. Weitere Möglichkeiten sind die Signale 2 (INT) oder 3 (QUIT). Im nächsten Beispiel wird das Signal INT, das die Signalnummer 2 hat, dem Prozess mit der PID 3861 gesandt, um ihn zu beenden: # kill –2 3861
Es ist auch möglich, statt der Signalnummer den Signalnamen zu verwenden. Im nachfolgenden Beispiel wird die grafische Anzeige einer Uhr mit Sekundenzeiger gestartet und mit Hilfe des Signals STOP angehalten: # /usr/X11R6/bin/xclock –update 1 & [1] 2112 # kill –STOP 2112
Der Sekundenzeiger und die Anzeige der Uhr können durch das Signal CONT (»continue«) auch wieder aktiviert werden: # kill –CONT 2112
568
Kapitel 12 · Prozessverwaltung
Ob ein Prozess noch läuft, können Sie testen, indem Sie der entsprechenden PID das Signal 0 senden. Das Signal 0 hat selbst keine Auswirkung, sondern der Befehl kill prüft nur, ob der Prozess existiert. Ein regulärer Benutzer darf aber nur die eigenen Prozesse abfragen. In folgendem Beispiel versucht die Benutzerin her, einen Prozess von root abzufragen: $ whoami her $ kill -0 2345 bash: kill: (2345) - Operation not permitted
Im nächsten Beispiel fragt dieselbe Benutzerin einen Prozess ab, der nicht (mehr) existiert: $ kill -0 1769 bash: kill: (1769) - No such prozess
Im letzten Beispiel fragt die Benutzerin her erfolgreich ab, ob ihr Prozess 3298 existiert: $ sleep 1000 & [1] 3298 $ kill -0 3298 $ echo $? 0
Mit Hilfe der Option –l erhalten Sie eine Liste der Signale, die mit dem Befehl verwendet werden können. # kill -l 1) SIGHUP 5) SIGTRAP 9) SIGKILL 13) SIGPIPE 18) SIGCONT 22) SIGTTOU 26) SIGVTALRM
2) 6) 10) 14) 19) 23) 27)
SIGINT SIGABRT SIGUSR1 SIGALRM SIGSTOP SIGURG SIGPROF
3) 7) 11) 15) 20) 24) 28)
SIGQUIT SIGBUS SIGSEGV SIGTERM SIGTSTP SIGXCPU SIGWINCH
4) 8) 12) 17) 21) 25) 29)
SIGILL SIGFPE SIGUSR2 SIGCHLD SIGTTIN SIGXFSZ SIGIO
Das Signal 9 oder KILL sollte nur in Notfällen verwendet werden, da es dem Prozess keine Möglichkeit mehr bietet, sich selbst ordnungsgemäß zu beenden und irgendwelche Daten zurückzuschreiben. Dadurch könnte zum Beispiel im Falle eines Datenbankprozesses die Datenbank zerstört werden.
Der Befehl killall Dieser Befehl sendet an alle Prozesse das standardmäßige Signal INT als Aufforderung, sich zu beenden. Dieser Befehl nimmt allerdings nicht die PID als Argument entgegen, sondern den Namen des Prozesses, und beendet dann alle Prozesse, die diesem Namen zugeordnet wurden. Die Syntax des Befehls lautet: # killall [-option(en)] prozess
569
magnum
Prozesse verwalten
Der Befehl kennt folgende Optionen: Option
Beschreibung
-e oder --exact
Verlangt eine exakte Übereinstimmung bei sehr langen Namen. Bei einem Befehlsnamen, der länger als 15 Zeichen ist, kann es vorkommen, dass der vollständige Namen ausgelagert wurde. In diesem Fall beendet der Befehl alle Prozesse, die mit den ersten 15 Zeichen übereinstimmen. Diese Option verhindert dieses Verhalten.
-g oder --process-group
Beendet die Prozessgruppe, zu der der angegebene Prozess gehört
-i oder --interactively
Verlangt vor dem Beenden eine Bestätigung des Vorgangs
-l oder --list
Listet alle bekannten Signalnamen auf
-q oder --quiet
Gibt keine Meldung aus, wenn keine Prozesse beendet wurden
-v oder --verbose
Ausführlicher Modus
-w oder --wait
Wartet darauf, dass alle beendeten Prozesse wirklich »sterben«. In diesem Fall kann es passieren, dass der Befehl endlos wartet, wenn es zum Beispiel Prozesse gibt, die das gesendete Signal ignorieren oder die zum Zombieprozess wurden.
Tab. 12.14: Optionen des Befehls killall
Im nachfolgenden Beispiel werden alle Prozesse mit dem Namen sendmail mit Hilfe des Signals INT beendet: # killall -v sendmail Killed sendmail(1787) with signal 15 Killed sendmail(1797) with signal 15
Der Befehl pkill Dieser Befehl beendet Prozesse, die mit einem angegebenen Suchmuster übereinstimmen. Er stellt eine Kombination der Befehle ps und kill dar. Die Syntax des Befehls lautet: # pkill [-option(en)] [muster]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-f
Das Suchmuster wird mit der gesamten Zeichenfolge eines Prozesses verglichen und nicht nur mit dem ausführbaren Prozessnamen.
-g groups
Suche nur nach Prozessen mit den übereinstimmenden Prozessgruppen
-G gids
Suche nur nach Prozessen mit übereinstimmenden realen GIDs
-n
Ausgabe des zuletzt gestarteten jüngsten Prozesses, der mit dem Suchmuster übereinstimmt
Tab. 12.15: Optionen des Befehls pkill
570
Kapitel 12 · Prozessverwaltung
Option
Beschreibung
-o
Ausgabe des ältesten Prozesses, der mit dem Suchmuster übereinstimmt
-P ppids
Suche nur nach Prozessen mit den übereinstimmenden Elternprozess-IDs
-s sids
Suche nur nach Prozessen mit den übereinstimmenden Sitzungs-IDs
-t term
Suche nur nach Prozessen mit dem übereinstimmenden Terminal
-u euids
Suche nur nach Prozessen mit den übereinstimmenden effektiven UIDs
-U uids
Suche nur nach Prozessen mit den übereinstimmenden realen UIDs
-v
Umkehrung des Suchmusterbefehls, das heißt, nur die nicht dem Muster entsprechenden Prozesse werden ausgegeben
-x
Suche nur nach Prozessen, deren ausführbarer Name genau mit dem angegebenen Namen übereinstimmt
-signal
Angabe des Signals, das an jeden gefundenen Prozess gesendet wird. Das Standardsignal ist TERM.
Tab. 12.15: Optionen des Befehls pkill (Forts.)
Im nachfolgenden Beispiel werden mit dem Signal 2 oder QUIT alle sendmail-Prozesse beendet: # pgrep -l 8723 sendmail # pkill -2 sendmail
Das nächste Beispiel zeigt, wie alle Prozesse eines bestimmten Benutzers mit der Nummer 375 beendet werden: # pkill –U 375
Der Befehl trap Dieser Befehl wird oft in Shellskripten verwendet, um Unterbrechungssignale abzufangen, die eventuell an das Skript gesendet werden. Auf diese Weise wird ein unerwünschter Abbruch der Skriptausführung verhindert und das Skript kann sich mit den richtigen Aktionen beenden. Das einzige Signal, das allerdings nicht abgefangen werden kann, ist das Signal KILL mit der Nummer 9. Die Syntax des Befehls lautet: # trap befehle signale
Der Befehl ist ein in die Shell eingebauter Befehl. Daher erhalten Sie die Man Pages unter Debian Linux zu diesem Befehl nur über den Aufruf man bash oder help trap. In einem Skript kann zum Beispiel der Befehl und 3 verwendet werden:
trap
zusammen mit den Signalen
trap "" 2 3
571
2
Prozesse verwalten
magnum
Durch die leere Zeichenkette »«, die als Befehl übergeben wird, ignoriert die Shell die Signale. Wird das Argument befehle weggelassen, wie es meist am Ende einer Routine der Fall ist, an deren Beginn der Befehl trap steht, dann werden die Signale auf ihre Standardwerte zurückgesetzt: trap 2 3
Wenn wie in diesem Beispiel das Signal INT mit der Nummer 2 abgefangen wird, dann lässt sich das Skript nicht durch die Tastenkombination (Ctrl)+(c) abbrechen. Das nächste Beispiel könnte eine Zeile eines Shellskripts sein. Die Befehle rm core und werden ausgeführt, wenn das Shellskript endet (Signal 0), der Benutzer sich abmeldet (Signal 1) oder die Tastenkombination (Ctrl)+(c) drückt (Signal 2): exit
trap "rm core;exit" 0 1 2
Der Befehl nohup Dieser Befehl verhindert einen »Hangup« eines Prozesses, das heißt, das Programm läuft weiter, auch wenn der Elternprozess beendet wird. Die Syntax des Befehls lautet: # nohup prozess
Von einem mit nohup gestarteten Prozess werden die Signale HUP, INT, WUIT und TERM ignoriert (vgl. Abschnitt Signale). Der Prozess init tritt an die Stelle des Elternprozesses. Standardmäßig wird die Ausgabe eines auf diese Weise gestarteten Prozesses in die Datei nohup.out umgeleitet. Der Befehl ist vor allem dann von Bedeutung, wenn ein Hintergrundprozess von einem Benutzer gestartet und nach seinem Abmelden weiter ausgeführt werden soll, zum Beispiel: $ nohup testskript1 & Sending output to nohup.out [1] 3561
Der Befehl nice Dieser Befehl startet einen Befehl und weist eine vorgegebene Priorität zu, um die CPU besser auszulasten. Ein einfacher Benutzer kann damit die Priorität seiner Prozesse sofort bei deren Aufruf herabstufen, root dagegen kann die Priorität von Prozessen mit Hilfe dieses Befehls erhöhen. Die Syntax des Befehls lautet: # nice [–n Priorität] befehl
Die Nice-Werte werden in 40 Stufen unterteilt, wobei der positive Bereich von 1 bis 19 und der negative Bereich von –1 bis –20 reicht. Positive Zahlen stufen die Priorität herab, negative Zahlen erhöhen die Priorität. Je höher also der Nice-Wert ist, desto niedriger ist die Prozesspriorität. Der Standardwert ist 10. # nice –n 20 sleep 1000 & [1] 616 # ps –lp 616 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY 0 S 0 2042 1949 0 99 19 - 560 schedu pts/0
TIME CMD 00:00:00 sleep
Der Prozess erhielt den höchstmöglichen Nice-Wert, das bedeutet die niedrigste Priorität.
572
Kapitel 12 · Prozessverwaltung
Die Prozesspriorität kann mit dem Befehl nice von einem normalen Benutzer nur herabgesetzt werden. Allein root kann den Befehl verwenden, um Prozessprioritäten zu erhöhen.
Der Befehl renice Dieser Befehl ändert die Priorität mit Hilfe des Nice-Werts für Prozesse, die bereits laufen. Einfache Benutzer können die Priorität wiederum nur herabstufen, während root die Prioritäten auch erhöhen darf. Nice steht für die »Nettigkeit« des Befehls gegenüber dem System, deshalb bedeutet ein höherer Nice-Wert eine niedrigere Priorität. Die Syntax des Befehls lautet: # renice [–Option(en)] befehl
Dieser Befehl kennt folgende Optionen: Option
Beschreibung
priorität
Erhöhen oder Herabsetzen der Priorität des Prozesses auf priorität
-g gid
Angabe einer Prozessgruppe gid, für die der Nice-Wert verändert werden soll
-p pid
Angabe einer Prozessidentifikationsnummer
-u uid
Angabe eines Benutzernamens oder einer UID
Tab. 12.16: Optionen des Befehls renice
Im folgenden Beispiel wird die Priorität des Prozesses mit der PID 417 der Benutzerin her herabgesetzt: # renice +3 –u her -p 417
Der Befehl time Dieser Befehl führt einen Befehl aus und zeigt dabei die Ausführungsdauer in Sekunden an. Die Syntax des Befehls lautet: # time befehl
Die Anzeige enthält die verstrichene Zeit sowie die vom Benutzer und vom System verbrauchten CPU-Zeiten, zum Beispiel: # time ... real user sys
ls 0m0.10s 0m0.01s 0m0.07s
Der Befehl lässt sich für einfache Performancemessungen verwenden.
573
magnum
Prozesse verwalten
Der Befehl pidof Dieser Befehl sucht die Prozess-ID eines laufenden Programms. Die Syntax des Befehls lautet: # pidof [-option(en)] programm
Der Befehl kennt folgende Optionen: Option
Beschreibung
-o
Prozesse mit dieser Prozess-ID werden weggelassen.
-s
Das Programm wird angewiesen, nur eine PID zurückzugeben.
-x
Das Programm gibt auch die PIDs der Shells zurück, die die angegebenen Skripte gestartet haben.
Tab. 12.17: Optionen des Befehls pidof
Im folgenden Beispiel werden die Angaben der Speichernutzung in Mbyte ausgegeben: $ pgrep -l kedit 2103 kedit $ pidof kedit 2103
12.1.3
Daemons starten oder beenden
Die Daemons der Systemverwaltung werden über so genannte Run-Control-Skripte im Verzeichnis /etc/init.d gestartet oder beendet (vergleiche Kapitel 12). In jedem Skript gibt es eine case-Anweisung (vergleiche Kapitel 9), mit der die Aktionen gesteuert werden, die beim Starten, Anhalten, Neustart usw. durchgeführt werden sollen. Es gibt auch eine Anweisung, die den Status des Daemons zurückgibt. SUSE Linux und Debian bieten Ihnen ein Vorlageskript mit dem Namen /etc/init.d/skeleton an, das Sie kopieren und für neue Skripte verwenden können. Ein Prozess der Systemverwaltung kann mit folgender Syntax beendet werden: $ /etc/init.d/daemon stop
Ein Prozess der Systemverwaltung kann mit folgender Syntax gestartet werden: $ /etc/init.d/daemon start
Ein Prozess der Systemverwaltung kann mit folgender Syntax nochmals gestartet werden: $ /etc/init.d/daemon restart
Unter SUSE Linux kann außerdem der Status eines Prozesses der Systemverwaltung mit folgender Syntax abgefragt werden: $ /etc/init.d/daemon status
574
Kapitel 12 · Prozessverwaltung
Ein Prozess der Systemverwaltung kann mit folgender Syntax zum Neuladen seiner Konfigurationsdaten veranlasst werden, ohne dass dazu der Dienst gestoppt und neu gestartet werden muss (nicht jeder Dienst beherrscht dies vollständig): $ /etc/init.d/daemon reload
In diesem Beispiel wird der Status des Druck-Daemons cupsd abgefragt: # /etc/init.d/cups status Checking for cupsd:
12.1.4
running
Jobkontrolle
Die Shell kann sehr viele Jobs gleichzeitig ausführen, wobei immer nur ein Job im Vordergrund, aber beliebig viele im Hintergrund ausgeführt werden können. Ein Job im Vordergrund hält Verbindung zu dem Terminal(fenster), von dem aus er gestartet wurde. Dabei wird dieses Terminal von dem Job belegt und eine erneute Befehlseingabe kann erst nach Beendigung des Jobs stattfinden. Ein Job wird gestartet, wenn zum Beispiel eine Anwendung geöffnet, ein Befehl aufgerufen oder ein Druckauftrag abgesendet wird. Es ist aber auch möglich, Jobs von der Shell im Hintergrund ausführen zu lassen. Dadurch steht sofort wieder die Eingabeaufforderung im Terminalfenster zur Verfügung, um zum Beispiel erneut einen Job im Vordergrund zu starten. Die Shell ordnet jedem Job eine so genannte Job-ID zu und übernimmt die Steuerung der Jobs. Ein Hintergrundprozess wird gestartet, indem an das Ende des Befehlsaufrufs ein Ampersand-Zeichen & angehängt wird: Im nachfolgenden Beispiel sucht der Befehl find im Hintergrund nach allen Dateien mit dem Namen a.out rekursiv im Verzeichnis /export und schreibt anschließend die Pfadnamen aller gefundenen Dateien in die Datei gefunden. $ find export -name a.out > gefunden & [1] 4201
Direkt nach der Eingabe des Befehls wird eine Job-ID-Nummer in eckigen Klammern und eine PID-Nummer für den Befehl ausgegeben. Es ist möglich, einen Job über seine Job-ID zu steuern. Nachfolgend erhalten Sie einen Überblick über die Befehle zur Jobsteuerung. Dabei müssen Sie die Befehle allerdings in dem Terminalfenster verwenden, in dem Sie den Job gestartet haben: Befehl
Wert
jobs
Alle im Moment aktiven Jobs ausgeben
fg
Den zuletzt in den Hintergrund gestellten Job in den Vordergrund stellen
fg %n
Einen Job mit der Job-ID n in den Vordergrund stellen
(Ctrl)+(z)
Einen Vordergrundjob stoppen
bg
Den zuletzt gestoppten Job im Hintergrund wieder starten
bg %n
Einen gestoppten Job mit der Job-ID n im Hintergrund starten
Tab. 12.18: Befehle für die Hintergrundjobverarbeitung
575
magnum
Prozesse verwalten
Befehl
Wert
stop %n
Einen Job mit der Job-ID n im Hintergrund stoppen
kill %n
Einen Job mit der Job-ID n im Hintergrund beenden
Tab. 12.18: Befehle für die Hintergrundjobverarbeitung (Forts.)
Das Beenden eines Hintergrundjobs wird nicht sofort angezeigt. Erst wenn Sie im Terminalfenster die (¢)-Taste drücken, wird eine entsprechende Nachricht ausgegeben. [1] + Done
find /export -name a.out > gefunden &
Mit dem Befehl jobs erhalten Sie alle im Moment gestarteten Hintergrundjobs: $ jobs [1] + Running find /export -name a.out > gefunden & [2] - Running sleep 2000 & [3] Running kedit &
In der ersten Spalte steht die laufende Hintergrundjobnummer, in der zweiten Spalte ein Pluszeichen für den zuletzt in den Hintergrund gestellten Job oder ein Minuszeichen für den davor in den Hintergrund gestellten Job. Mit dem Befehl fg - können Sie den Job mit dem Minuszeichen in den Vordergrund holen, mit fg + den mit dem Pluszeichen. Alle bereits früher im Hintergrund gestarteten Jobs haben kein Kennzeichen. Die dritte Spalte enthält den Status des Hintergrundjobs:
쮿
running:
쮿
terminated:
쮿
done:
쮿
stopped:
der Job läuft gerade der Job wurde abgebrochen
der Job ist fertig der Job wurde gestoppt
Die letzte Spalte enthält den Befehl, der als Hintergrundjob gestartet wurde. Die Befehle zur Hintergrundjobverwaltung sind in die Shell eingebaute Befehle. Daher erhalten Sie die Man Pages unter Debian Linux zu diesen Befehlen nur über den Aufruf man bash oder help jobs. Mit dem Befehl fg wird ein Hintergrundjob in den Vordergrund geholt: $ fg %2 sleep 2000
Nun ist das Terminalfenster blockiert, bis der Job beendet ist oder erneut in den Hintergrund gestellt wird. Ein Job muss zuerst angehalten werden, um wieder in den Hintergrund gestellt zu werden. Dazu wird die Tastenkombination (Ctrl)+(z) verwendet und anschließend der Befehl bg aufgerufen. sleep 2000 ^Z [2] + Stopped $ bg [2] sleep 2000 & $ jobs
576
sleep 2000 &
Kapitel 12 · Prozessverwaltung
[2] + Running sleep 2000 & [1] - Running find /export -name a.out > gefunden & [3] Running kedit &
12.2 Automatisches Starten von Prozessen Manchmal ist es notwendig, eine bestimmte Tätigkeit am System zu einer bestimmten Zeit auszuführen. Dazu gibt es den Befehl at, mit dessen Hilfe ein oder mehrere Befehle automatisch zur gewünschten Zeit ausgeführt werden. Wollen Sie einen oder mehrere Befehle immer wieder zu bestimmten Zeiten ausführen, dann verwenden Sie den Befehl crontab.
12.2.1
Prozesse einmalig einplanen
Der Befehl at Mit Hilfe dieses Befehls reihen Sie einen oder mehrere Befehle in eine Warteschlange ein. Diese werden dann zur angegebenen Zeit ausgeführt. Die Jobs werden im Verzeichnis /var/spool/atjobs gespoolt und in einer Subshell gestartet. Wenn eine Ausgabe des Befehls erfolgt und diese nicht umgelenkt wird, wird sie an den Anwender per E-Mail gesandt. Unter Debian GNU/Linux werden die Jobs im Verzeichnis gespoolt.
/var/spool/cron/at*
Die Syntax des Befehls lautet: # at [-option(en)] zeit
Der Befehl kennt folgende Optionen: Option
Beschreibung
-d jobid
Entfernen eines Jobs durch Angabe der Job-ID
-f datei
Einlesen der Befehle aus einer Datei statt von der Standardeingabe
-l
Anzeige aller eingeplanten Jobs
-m
Versenden einer E-Mail an den Benutzer nach Beendigung des Jobs
-q queue
Angabe der Warteschlange für den Job; möglich sind Warteschlangen mit den Buchstaben »a« bis »z«
-r jobid
Entfernen eines Jobs durch Angabe der Job-ID
-v
Zeigt die Zeit an, zu der der Job ausgeführt wird
Tab. 12.19: Die Optionen des Befehls at
577
Automatisches Starten von Prozessen
magnum
Die Angabe der Ausführungszeit kann auch ohne die Option –t erfolgen. Folgende Formate sind möglich:
쮿
Die Angabe in Stunde(n) oder Stunden und Minuten: H, HH, HH:MM. Diese Angabe kann im 24-Stunden-Format oder durch die Definition von am/AM oder pm/PM erfolgen.
쮿
Die Angabe now
쮿
Die Angabe noon
쮿
Die Angabe midnight
쮿
Die Angabe tomorrow
쮿
Die Angabe today
Ein Job kann zum Beispiel um 9:30 morgens eingeplant werden: # at 9:30 am warning: commands will be executed using /sbin/sh at> lp –d hp1200 /home/her/monatsbericht at> (Ctrl)+(d)
Sobald das Promptzeichen at erscheint, können Sie pro Zeile einen Befehl eingeben. Sie beenden die Eingabe mit der Tastenkombination (Ctrl)+(d). Wenn ein Job erfolgreich in die Warteschlange eingereiht wurde, erhalten Sie eine entsprechende Meldung: job 2 at 2004-05-14 09:30
Das nächste Beispiel führt einen Befehl morgen um dieselbe Zeit aus: # at now tomorrow testscript1
Den Befehl at dürfen nicht unbedingt alle Benutzer ausführen. Standardmäßig existiert unter Linux eine Datei namens /etc/at.deny, die alle Benutzer enthält, die den Befehl nicht verwenden dürfen. In der Regel handelt es sich dabei um Systemkonten. root kann dieser Datei pro Zeile einen weiteren Benutzer, der den Befehl nicht aufrufen darf, hinzufügen. Ist die Datei leer, dürfen alle Benutzer den Befehl starten. Alternativ kann eine Datei namens /etc/at.allow angelegt werden, in der root alle Benutzer erfasst, die den Befehl ausdrücklich verwenden dürfen. Existiert diese Datei, wird sie vor der Datei /etc/at.deny gelesen. In beiden Dateien aufgeführten Benutzern wird die Verwendung von at nicht gestattet. Existiert keine der beiden Dateien, so darf nur root diesen Befehl anwenden. Für atjobs gibt es einen eigenen Daemon atd mit der Aufgabe, die atjobs zu den angegebenen Zeiten auszuführen. Er überprüft, ob im Verzeichnis /var/spool/atjobs auszuführende Jobs stehen. Der Daemon wird mit Hilfe des Skripts /etc/init.d/atd gestartet.
Der Befehl batch Dieser Befehl funktioniert wie der Befehl at, mit der Ausnahme, dass Sie keine Zeitangabe machen und keine Optionen verwenden können. Der Job wird ebenfalls in eine Warteschlange im Verzeichnis /var/spool/atjobs eingereiht und zur Zeit der niedrigsten Systembelastung automatisch ausgeführt.
578
Kapitel 12 · Prozessverwaltung
Der Befehl atq Dieser Befehl zeigt alle Jobs an, die durch den Befehl at oder schlange gestellt wurden. Die Syntax des Befehls lautet:
batch
in die Warte-
batch
angelegt wur-
# at [-q queue]
Im folgenden Beispiel wird die Liste der Jobs ausgegeben: # atq 2 3
2004-05-14 21:30 a her 2004-05-15 00:00 a root
Die Ausgabe ist identisch mit der des Befehls at
–l:
# at -l 2 2004-05-14 21:30 a her 3 2004-05-15 00:00 a root
Der Befehl atrm Dieser Befehl entfernt Jobs, die zuvor mit dem Befehl den. Die Syntax des Befehls lautet:
at
oder
# atrm jobid
Der Befehl ist gleichbedeutend mit den Befehlen at
-d
jobid und at
-r
jobid.
Der im vorherigen Beispiel angelegte Job wird noch vor der Ausführung gelöscht: # atrm 3
12.2.2
Prozesse wiederholt einplanen
Die Datei /etc/crontab Der Daemon crond liest sowohl die crontab-Dateien der einzelnen Benutzer als auch die Datei /etc/crontab für die Systemjobs. Diese Datei sieht zum Beispiel bei SUSE Linux wie folgt aus: # more /etc/crontab SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root #-* * * * * root test -x /usr/sbin/atrun && /usr/sbin/atrun 0 21 * * * root test -x /usr/sbin/faxqclean && /usr/sbin/faxqclean 5 22 * * * root test -x /usr/sbin/texpire && /usr/sbin/texpire # check scripts in cron.hourly, cron.daily, cron.weekly and cron.monthly -*/15 * * * * 0 0 * * * 0 0 * * 6 0 0 1 * *
root root root root
test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons rm -f /var/cron/lastrun/cron.daily rm -f /var/cron/lastrun/cron.weekly rm -f /var/cron/lastrun/cron.monthly
Das Skript
/usr/lib/cron/run-crons bewirkt, dass die Skripte in den Verzeichnissen /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly regelmäßig ausgeführt werden.
579
Automatisches Starten von Prozessen
magnum
Eine reguläre crontab-Datei besteht aus sechs durch Leerzeichen oder Tabulatoren getrennten Spalten, wobei die ersten fünf Felder definieren, wann der Befehl der sechsten Spalte ausgeführt werden soll:
Bild 12.1: Aufbau der Datei crontab
In der Datei /etc/crontab steht als 6. Feld der Benutzer, mit dessen Benutzer-ID das Programm ausgeführt werden soll. Bei allen anderen regulären crontabDateien gibt es diesen Eintrag nicht, da die darin aufgeführten Befehle immer mit den Rechten des Besitzers der Datei aufgerufen werden. Umgebungsvariablen sind in einer crontab-Datei nur definiert, wenn sie explizit gesetzt werden, wie zum Beispiel die Variable PATH in der /etc/crontab. In diesem Beispiel wird jeden Montag bis Freitag um 17.30 Uhr die Meldung »Feierabend« auf dem Pseudoterminal pts/4 ausgegeben. In den einzelnen Spalten können folgende Werte stehen: Zeiteinheit
Mögliche Werte
Minute
0 bis 59 oder * als Platzhalter für jede Minute
Stunde
0 bis 23 oder * als Platzhalter für jede Stunde
Tag im Monat
1 bis 31 oder * als Platzhalter für jeden Tag des Monats
Monat
1 bis 12 oder Jan, Feb, Mar, ... oder * für jeden Monat
Wochentag
0 bis 7 (Sonntag 0 oder 7, Montag 1 usw.) oder Sun, Mon, Tue ... oder * für jeden Wochentag
Tab. 12.20: Werte der Datei crontab
In den Feldern kann entweder ein einzelner Wert stehen oder das Zeichen * als Platzhalter für alle Werte, oder es können mehrere Werte durch Komma getrennt (ohne Leerzeichen) für ein Feld aufgeführt werden (7,9,17 oder 2,5,21) und/oder es können Bereiche mit Hilfe des Bindestrichs angegeben werden (7–9 oder 13–22). Die einzelnen Feldeinträge werden durch UND-Verknüpfungen miteinander verbunden. Die einzige Ausnahme bilden die Spalten für den Monats- und den Wochentag – wenn beide gefüllt sind, bilden sie eine ODER-Verknüpfung.
Der Befehl crontab Im Gegensatz zum Befehl at kann dieser Befehl einen oder mehrere Befehle wiederholt und regelmäßig ausführen. Er verwaltet die crontab-Datei des Benutzers. Der cron-Daemon ist dafür zuständig, dass die Jobs dieser Dateien ausgeführt werden. Die Syntax des Befehls lautet:
580
Kapitel 12 · Prozessverwaltung
# crontab [-option]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-e
Editieren der crontab
-l
Anzeigen der crontab
-r
Löschen der crontab
-u benutzer
crontab eines bestimmten Benutzers aufrufen
Tab. 12.21: Optionen des Befehls crontab
Mit dem Befehl crontab –l werden alle Einträge der Datei Benutzerkennung angezeigt:
crontab
Ihrer aktuellen
# crontab –l 10 3 * * 0,4 /bin/lp hp1200 /home/buha/bericht-lang 10 7 * * * /bin/echo "Datensicherung starten" > /dev/console
In diesem Beispiel wird durch die erste Zeile jeden Sonntag und Donnerstag um 3.10 Uhr eine Buchhaltungsliste ausgedruckt. Jeden Tag um 7.10 Uhr erscheint die Meldung auf dem Konsolfenster, dass die Datensicherung gestartet werden soll. Wenn Sie versehentlich den Befehl crontab ohne eine Option eingeben, beenden Sie ihn mit (Ctrl)+(c). Wenn Sie stattdessen (Ctrl)+(d) drücken, löschen Sie die bestehenden Einträge. root kann auch die crontab von anderen Benutzern einsehen, indem er sie unter Angabe des Benutzernamens aufruft, zum Beispiel: # crontab –l -u doo 13 3 * * 0 cd /doo/berichte; if [ -f berichtneu ]; then if [ -f bericht.1 ]; then /bin/mv bericht.1 bericht.2; fi; /bin/cp berichtneu bericht.1; fi
Diese crontab des Benutzers doo enthält den Eintrag, dass jeden Sonntag um 3.13 Uhr ein Programm gestartet wird, das die Datei berichtneu in die Datei bericht.1 umbenennt usw. Um eine crontab-Datei zu bearbeiten, wird mit crontab –e die Datei geöffnet und Einträge hinzugefügt, geändert oder gelöscht. Der folgende hinzugefügte Eintrag würde zum Beispiel bedeuten, dass jeden Werktag um 23:00 Uhr eine Datensicherung gestartet wird: 0 23 * * 1-5 /home/her/meinbackup
Der Eintrag 0,10,20,30,40,50 6,18 * * * /home/her/testcheck
bewirkt, dass um 6.00, 6.10, 6.20, 6.30, 6.40, 6.50 Uhr und 18.00, 18.10, 18.20, 18.30, 18.40, 18.50 Uhr jeden Tag das Programm testcheck läuft. Der Eintrag * * * * * befehl
581
magnum
Automatisches Starten von Prozessen
führt dazu, dass der Befehl jeden Tag in jeder Minute ausgeführt wird. Ein solcher Eintrag kann gegebenenfalls die Performance des Systems sehr beeinträchtigen. In der crontab-Datei sollten die Befehle und gegebenenfalls Argumente immer mit den vollständigen Pfadangaben eingetragen werden, da crontab die Variable PATH nicht wie im System eingestellt auswertet. Alternativ kann der Pfad in der Datei /etc/crontab hinterlegt werden. Wenn Sie die crontab-Datei direkt unter ihrem Pfad /var/spool/cron/tabs/benutzername bzw. /var/spool/cron/crontabs/benutzername aufrufen und editieren, statt über den Befehl crontab –e, werden in älteren Linux- oder Unix-Varianten die Änderungen eventuell anschließend nicht vom cron-Daemon eingelesen und auch in neueren Varianten können Probleme auftreten. Im folgenden Beispiel wird eine komplette crontab-Datei von root gelöscht. # crontab –r benutzer
Die eigene crontab-Datei löschen Sie mit dem Befehl crontab
–r.
Auch den Befehl crontab dürfen nicht alle Benutzer ausführen. Standardmäßig existiert unter Linux eine Datei namens /var/spool/cron/deny, die alle Benutzer enthält, die den Befehl nicht verwenden dürfen. Standardmäßig handelt es sich dabei um den Gastbenutzer. root kann dieser Datei pro Zeile einen weiteren Benutzer hinzufügen, der den Befehl nicht aufrufen darf. Ist die Datei leer, dürfen alle Benutzer den Befehl starten. Alternativ kann eine Datei namens /var/spool/cron/allow angelegt werden, in der root alle Benutzer erfasst, die den Befehl ausdrücklich verwenden dürfen. Existiert diese Datei, wird sie vor der Datei /var/spool/cron/deny gelesen. In beiden Dateien aufgeführten Benutzern wird die Verwendung von cron nicht gestattet. Wenn keine der beiden Dateien existiert, darf nur root diesen Befehl anwenden. Unter Debian GNU/Linux werden für diesen Zweck die Dateien und /etc/cron.deny verwendet.
/etc/cron.allow
Der Daemon crond Der Daemon crond hat die Aufgabe, die crontab-Dateien der Benutzer und regelmäßige Systemaufgaben zu bestimmten Zeiten auszuführen. Die Systemaufgaben befinden sich in der Datei /etc/crontab, die der Daemon ausliest. Anschließend überprüft crond, ob im Verzeichnis /var/spool/cron persönliche crontab-Dateien von Benutzern stehen. Diese tragen als Dateinamen den Benutzernamen, zum Beispiel root. Der Daemon wird mit Hilfe des Skripts /etc/init.d/cron gestartet, wenn Linux hochgefahren wird, und überprüft jede Minute, ob ein Job gestartet werden soll.
582
Kapitel 12 · Prozessverwaltung
12.2.3
Cron-Jobs mit KDE einplanen
KDE bietet das Tool KCRON an, um Cron-Jobs grafisch einzuplanen. Dieses Tool ist nur ein grafisches Frontend für die Bearbeitung und Erstellung von cron-Jobs. Im Hintergrund werden die im vorherigen Abschnitt beschriebenen crontab-Dateien bearbeitet. Sie können das Programm aus dem Hauptmenü über SYSTEM - DIENSTKONFIGURATION - KCRON starten. Sie erhalten zuerst eine kurze Bedienungsanleitung, die Sie bestätigen müssen:
Bild 12.2: Aufgabenplaner KCron starten
Klicken Sie dann mit der rechten Maustaste auf AUFGABEN und anschließend auf NEU, um einen neuen Cron-Job anzulegen:
Bild 12.3: Neuen Cron-Job mit KCron anlegen
Genau wie in der Datei crontab können Sie nun auswählen, an welchem Wochentag oder Tag im Monat, in welchem Monat und um welche Uhrzeit ein Programm ausgeführt werden soll:
583
Automatisches Starten von Prozessen
magnum
Bild 12.4: Programm mit KCron einplanen
Klicken Sie anschließend auf OK. Der neu angelegte Cron-Job wird nun angezeigt:
Bild 12.5: Neu angelegter Cron-Job in KCron
Sie können ihn über das Menü BEARBEITEN verändern oder löschen bzw. einen neuen Job anlegen.
584
Kapitel 12 · Prozessverwaltung
Bild 12.6: Cron-Job in KCron bearbeiten
Die neuen Einstellungen müssen noch über die Schaltfläche SPEICHERN oder über das Menü DATEI - SPEICHERN gespeichert werden, bevor auch die Datei crontab den Cron-Job anzeigt:
Bild 12.7: Anzeige in der Datei crontab
12.3 Prozesse mit KDE überwachen Auch KDE bietet ein paar Tools an, um Prozesse grafisch zu überwachen. Im Hauptmenü finden Sie bei SUSE Linux unter SYSTEM - ÜBERWACHUNG - SYSTEMÜBERWACHUNG das Tool SYSTEMLAST: Bei Fedora Core Linux finden Sie das Tool unter SYSTEMWERKZEUGE – SYSTEMÜBERWACHUNG. Unter Debian GNU/Linux steht das Programm im Menü SYSTEM – SYSTEMÜBERWACHUNG.
585
Prozesse mit KDE überwachen
magnum
Bild 12.8: Systemlast mit KDE anzeigen
Sie können über die Registerblätter zwischen der Systemlastanzeige und der Prozesstabelle wechseln:
Bild 12.9: Prozesstabelle anzeigen
Ein weiteres Tool, XOSVIEW, können Sie über SYSTEM - ÜBERWACHUNG - XOSVIEW starten:
586
Kapitel 12 · Prozessverwaltung
Bild 12.10: Mit XOSVIEW die Systemlast anzeigen
Unter SYSTEM - WEITERE PROGRAMME - SYSTEMÜBERWACHUNG bei SUSE gibt es ein weiteres Systemüberwachungstool, das sowohl die Prozessliste als auch eine Ressourcenüberwachung anzeigen kann:
Bild 12.11: Prozesstabelle anzeigen
587
Prozesse mit KDE überwachen
Sie können wieder zwischen zwei Registerblätter wechseln:
Bild 12.12: Ressourcenauslastung anzeigen
588
magnum
13 Kernel-Verwaltung und Systemüberwachung »Willst du ein Geheimnis ergründen, suche den unverhüllten Kern der Dinge. « – © Karin Heinrich Im ersten Teil des Kapitels erfahren Sie, wie Sie den Kernel verwalten können. Dazu lernen Sie Befehle kennen, um Informationen zum Kernel auszugeben und den Kernel zu konfigurieren. Im zweiten Teil werden einige Befehle vorgestellt, um das System zu überwachen. Anschließend lernen Sie den Syslog-Daemon kennen, mit dessen Hilfe Sie Protokolle erstellen können, die auf Ihre eigenen Bedürfnisse zugeschnitten sind. Zuletzt werden noch die typischen Protokolldateien eines Linux-Betriebssystems besprochen.
13.1 Den Kernel verwalten Der Kernel ist unter Linux das Kernstück der Software, mit der Aufgabe, das System zu verwalten und zu steuern. Der Kernel ist für die Verwaltung von Hardwaregeräten, Speicher und Prozessen verantwortlich. Er ist das Hauptprogramm des Betriebssystems und stellt eine Schnittstelle zwischen Anwendersoftware und Hardware dar. Als das eigentliche Bindeglied zwischen Hardware und Dienst- bzw. Benutzerprogrammen des Systems stellt der Kernel die wesentlichen Leistungsmerkmale des Betriebssystems zur Verfügung. Dazu gehören:
쮿
Geräteverwaltung
쮿
Verwaltung der Dateisysteme
쮿
Virtuelle Speicherverwaltung (Swapping und Paging)
쮿
Prozessbehandlung (Timesharing etc.)
쮿
Interprozesskommunikation
쮿
Netzwerkanbindung
Der Kernel selbst ist ein ausführbares Programm und wird beim Systemstart in den Hauptspeicher geladen. Einige Teile des Kernels sind hardwareunabhängig, der hardwareabhängige Teil besteht aus den Gerätetreibern, mit deren Hilfe die Hardware angesteuert wird. Unter Linux gibt es zwei verschiedene Kernel-Typen:
쮿
Monolithischer Kernel: Bei einem monolithischen Kernel befinden sich alle Treiber direkt im Kernel und es werden keine zusätzlichen Kernel-Module unterstützt.
쮿
Modularisierter Kernel: Ein modularisierter Kernel enthält nur die wichtigsten Treiber und lädt im laufenden Betrieb bei Bedarf die notwendigen Module nach. Ein aktueller LinuxKernel ist in der Regel ein modularisierter Kernel.
589
magnum
Den Kernel verwalten
Bei den unterschiedlichen Distributionen wird immer mindestens ein einsatzfähiger Kernel mitgeliefert. In der Regel ist es nicht notwendig, an diesem Kernel Veränderungen vorzunehmen. Die Versionsnummern von Kerneln werden nach folgendem dreigeteiltem Schema vergeben:
쮿
Die erste Zahl erhöht sich nur, wenn eine grundlegende Änderung in der Systemarchitektur durchgeführt wurde.
쮿
Die zweite Zahl bezeichnet die aktuelle Kernel-Nummer. Lange Zeit hatten stabile Kernel-Versionen, die produktiv eingesetzt werden konnten, gerade Ziffern, wie zum Beispiel 2.2, 2.4 und 2.6, und die Entwickler-Kernel-Versionen immer ungerade Ziffern, wie zum Beispiel 2.3 und 2.5. Diese Trennung findet aber seit Juli 2004 nicht mehr statt, im Moment (Stand November/2005) gibt es keinen Entwickler-Kernel mit der Nummer 2.7.
쮿
Die dritte Zahl steht für das Patchlevel. Die Patchlevelnummer der stabilen Version erhöht sich in der Regel, wenn es Fehlerbereinigungen und Sicherheitsupdates gibt.
Mit der Version 2.6.8.1 wurde zum ersten Mal eine vierte Zahl eingeführt, um die Fehlerbereinigung eines kritischen NFS-Fehlers schneller herausgeben zu können. Diese Nummerierung wurde mit Kernel 2.6.11 im März 2005 offiziell übernommen. Mit Hilfe der vierten Ziffer sind schnelle Veröffentlichungen aufgrund wichtiger Fehlerkorrekturen möglich, aber die Kernel-Stabilität bleibt trotzdem erhalten: zum Beispiel eine Erhöhung von 2.6.12.1 auf 2.6.12.2. Die Patchlevelnummer erhöht sich nun nur noch, wenn neue Funktionen integriert werden. Sie können mit dem Befehl uname (vergleiche Abschnitt 13.3).
-a herausfinden,
welchen Kernel Sie verwenden
Früher waren alle Funktionen in einem Unix- oder Linux-Kernel durch den Kompilierungsvorgang fest eingebunden, wodurch der Kernel schnell und stabil war. Allerdings kamen immer mehr Funktionen dazu, wodurch der Kernel ständig größer wurde und mehr Platz im Hauptspeicher benötigte. Für jede neue zusätzliche Funktion musste auch ein Kompilierungsvorgang durchgeführt werden. Diese Nachteile wurden durch einen modular aufgebauten Kernel beseitigt. Hardwaretreiber können im laufenden Betrieb als Objektdatei zum Kernel im Bedarfsfall geladen oder wieder entladen werden. Auf diese Weise werden Module dynamisch in den aktiven Kernel durch einen Ladevorgang automatisch eingebunden. Es ist selten notwendig, Module manuell zu bearbeiten, aber es stehen dafür einige Befehle zur Verfügung, die in diesem Abschnitt vorgestellt werden. Nicht im Kernel integrierte Treiber werden also als Kernel-Module verwaltet. Das entsprechende Modul wird entweder vom Kernel-Daemon kerneld (bis Linux Version 2.0) bei Bedarf oder direkt vom Kernel (über die Kernel-Komponenten kmod, ab Version 2.0) automatisch nachgeladen. Die Moduldateien des Kernels liegen im Verzeichnis /lib/modules/kernelversion. Wenn mehrere Kernel-Versionen installiert wurden, gibt es entsprechend viele Modulverzeichnisse. Den Namen der KernelVersion können Sie mit Hilfe des folgenden Befehls ermitteln: # uname -r 2.4.21-99-default
590
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Eine Auflistung des Inhalts des Verzeichnisses mit den Kernel-Modulen kann zum Beispiel unter SUSE Linux 10.0 wie folgt aussehen: # ls -l /lib/modules/2.6.13-15-default total 1300 drwxr-xr-x 4 root root 512 Nov 7 drwxr-xr-x 5 root root 144 Nov 7 lrwxrwxrwx 1 root root 41 Nov 7 obj/i386/default drwxr-xr-x 2 root root 3560 Nov 7 drwxr-xr-x 10 root root 240 Nov 7 -rw-r--r-- 1 root root 281538 Nov 7 -rw-r--r-- 1 root root 69 Nov 7 -rw-r--r-- 1 root root 321203 Nov 7 -rw-r--r-- 1 root root 813 Nov 7 -rw-r--r-- 1 root root 627 Nov 7 -rw-r--r-- 1 root root 21487 Nov 7 -rw-r--r-- 1 root root 74 Nov 7 -rw-r--r-- 1 root root 226689 Nov 7 -rw-r--r-- 1 root root 967 Nov 7 -rw-r--r-- 1 root root 123527 Nov 7 -rw-r--r-- 1 root root 317482 Nov 7 lrwxrwxrwx 1 root root 24 Nov 7
22:15 . 20:51 .. 20:50 build -> /usr/src/linux-2.6.13-1520:54 20:51 22:15 22:15 22:15 22:15 22:15 22:15 22:15 22:15 22:15 22:15 22:15 20:51
extra kernel modules.alias modules.ccwmap modules.dep modules.ieee1394map modules.inputmap modules.isapnpmap modules.ofmap modules.pcimap modules.seriomap modules.symbols modules.usbmap source -> /usr/src/linux-2.6.13-15
Es gibt aber auch die Möglichkeit, manuell in die Modulverwaltung einzugreifen. Als Modulname wird dabei immer der Modul- bzw. Treiberdateiname ohne die Namenserweiterung »ko« eingesetzt (zum Beispiel fat für den Zugriff auf ein DOSDateisystem mit dem Treiber fat.ko). Vor der Kernel-Version 2.6 hatten diese Modulnamen die Endung »o«.
13.1.1
Der Befehl lsmod
Dieser Befehl zeigt eine Liste mit allen geladenen Modulen an. Die Syntax des Befehls lautet: # lsmod
Im folgenden Beispiel werden die geladenen Module mit Namen, Größe, der Anzahl der Verwendungen und verknüpften Module angezeigt: # lsmod Module Size Used by Not tainted ide-cd 29664 0 (autoclean) cdrom 26752 0 (autoclean) [ide-cd] snd-seq 36656 1 (autoclean) snd-mixer-oss 13400 0 (autoclean) isa-pnp 30664 0 (unused) usbserial 18620 0 (autoclean) (unused) parport_pc 26248 1 (autoclean) lp 6208 0 (autoclean) parport 22888 1 (autoclean) [parport_pc lp] ipv6 209824 -1 (autoclean) key 63256 0 (autoclean) [ipv6] snd-via82xx 13504 4 ... snd 35172 4 [snd-seq snd-mixer-oss snd-via82xx snd-pcm snd-timer snd-ac97-codec snd-mpu401-uart snd-rawmidi snd-seq-device] soundcore 3588 0 [snd] mousedev 4084 0 (unused) joydev 5120 0 (unused) evdev 3584 0 (unused)
591
magnum
Den Kernel verwalten
input usb-uhci usbcore raw1394 ieee1394 8139too mii lvm-mod ext3 jbd
13.1.2
3360 22224 58668 16592 183332 13932 2320 62628 79144 47008
0 0 1 0 0 1 0 0 1 1
[mousedev joydev evdev] (unused) [usbserial usb-uhci] (unused) [raw1394] [8139too] (autoclean) [ext3]
Der Befehl insmod
Mit diesem Befehl kann ein Modul in den aktiven Kernel eingebunden werden. Die Syntax des Befehls lautet: # insmod [-option(en)] modul
Der Befehl kennt folgende Optionen: Option
Beschreibung
-f oder --force
Erzwingt das Laden eines Moduls auch beim Auftreten von Problemen
-k oder --autoclean
Bewirkt, dass das Modul sich selbst bereinigt, also aus dem Kernel entfernt
-L oder --Lock
Verhindert, dass dasselbe Module mehrmals gleichzeitig geladen wird
-m oder --map
Generiert eine Ladetabelle, so dass Abstürze des Systems nachvollzogen werden können
-n oder --noload
Lädt nicht wirklich, sondern simuliert den Vorgang nur
-p oder --probe
Testmodus, der prüft, ob das Modul zum Kernel passt
-q oder --quiet
Zeigt keine unleserlichen Symbole an. Symbole sind Sprungverweise im Modul.
-r oder --root
Ermöglicht es root, auch Module zu laden, die nicht root gehören
-s oder --syslog
Gibt die Ergebnisse an syslogd weiter und nicht an der Standardausgabe aus
-v oder --verbose
Ausführlicher Modus
Tab. 13.1: Die Optionen des Befehls insmod
Im folgenden Beispiel wird unter Debian GNU/Linux 3.1 das Modul ntfs.o geladen, das ein Treiber für das Microsoft-Windows-Dateisystem ntfs ist und sich im Unterverzeichnis /lib/modules/kernelversion/kernel/fs befindet: # insmod ntfs Using /lib/modules/2.4.27-2-386/kernel/fs/ntfs/ntfs.o
592
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Bei einigen Linux-Distributionen findet der Befehl das Modul automatisch im Kernel-Baum, bei anderen Varianten, zum Beispiel SUSE Linux 10.0, muss in das entsprechende Unterverzeichnis verzweigt werden. Im folgenden Beispiel wird das Modul ufs geladen, das ein Treiber für das Solaris-Dateisystem ufs ist und sich im Unterverzeichnis /lib/modules/kernelversion/ kernel/fs befindet: # cd /lib/modules/2.6.13-15-default/kernel/fs/ufs # ls ufs.ko # insmod ufs.ko # lsmod | grep ufs ufs 71300 0
Wenn das Modul von einem anderen Modul abhängig ist, wird es nicht geladen, sondern eine Fehlermeldung ausgegeben. Zuerst müssen dann die Module geladen werden, von denen das Modul abhängig ist. Wenn mehrere Module voneinander abhängig sind, dann müssen alle Module in der richtigen Reihenfolge geladen werden. Der Befehl modprobe ist hier intelligenter.
13.1.3
Der Befehl modprobe
Mit diesem Befehl kann ebenfalls ein Modul in den aktiven Kernel eingebunden werden. Er bietet aber mehr Funktionen als der Befehl insmod und kann außerdem neben dem zu ladenden Modul auch die Module automatisch laden, die dafür notwendig sind. Die Syntax des Befehls lautet: # modprobe [-option(en)] modul(e) [parameter]
Der Befehl kennt folgende Optionen, mit deren Hilfe Sie die Voreinstellungen in der Konfigurationsdatei /etc/modprobe.conf übersteuern können: Option
Beschreibung
-a oder --all
Alle angegebenen Module und nicht nur das erste werden geladen.
-c oder --showconfig
Diese Option gibt den Inhalt der Konfigurationsdatei aus und beendet den Befehl.
-C oder --config
Diese Option verwendet eine andere Datei anstelle der Standardkonfigurationsdatei /etc/modprobe.conf. Wenn diese Datei nicht vorhanden ist, werden die Dateien im Verzeichnis /etc/modprobe.d verwendet.
-f oder --force
Versucht, alle Versionsinformationen aus dem Modul zu entfernen
-i oder --ignore-install oder --ignore-remove
Diese Option bewirkt, dass modprobe die Befehle install und remove in der Konfigurationsdatei ignoriert, falls diese dort vorhanden sind.
-l oder --list
Listet alle Module auf, die mit der angegebenen Wildcard oder »*«, falls keine Wildcard angegeben wird, übereinstimmen.
-n oder --dry-run
Lädt nicht wirklich, sondern simuliert den Vorgang nur
-o oder --name
Diese Option versucht, das Modul umzubenennen, das in den Kernel eingefügt wird, um zu verhindern, dass zwei Module mit demselben Namen geladen werden.
Tab. 13.2: Die Optionen des Befehls modprobe
593
magnum
Den Kernel verwalten
Option
Beschreibung
-q oder --quiet
Zeigt Meldungen an
-r oder --remove
Entfernt Module aus dem Kernel (ähnlich dem Befehl rmmod)
-s oder --syslog
Gibt die Ergebnisse an syslogd weiter und nicht an der Standardausgabe aus
--show-depends
Listet die Abhängigkeiten eines Moduls auf
-t oder --type
Beschränkt die Optionen -l oder -a auf Module in Verzeichnissen, die mit dem angegebenen Verzeichnisnamen übereinstimmen
-v oder --verbose
Ausführlicher Modus
Tab. 13.2: Die Optionen des Befehls modprobe (Forts.)
Im folgenden Beispiel wird das Modul ntfs, ein Treiber für das Microsoft-WindowsDateisystem ntfs, geladen, das sich im Unterverzeichnis /lib/modules/kernelversion/ kernel/fs befindet: # modprobe -v ntfs /sbin/insmod /lib/modules/2.4.21-99-default/kernel/fs/ntfs/ntfs.o Using /lib/modules/2.4.21-99-default/kernel/fs/ntfs/ntfs.o Symbol version prefix ''
Der Befehl modprobe ermittelt Abhängigkeiten eines Moduls zu anderen Modulen mit Hilfe der Datei /lib/modules/kernelversion/modules.dep.
13.1.4
Der Befehl rmmod
Mit diesem Befehl kann ein Modul aus dem aktiven Kernel wieder entfernt werden, wobei das Modul aber unbenutzt sein muss und andere Module auch nicht davon abhängig sein dürfen. Die Syntax des Befehls lautet: # rmmod [-option(en)] modul
Der Befehl kennt folgende Optionen: Option
Beschreibung
-f oder --force
Diese Option ist sehr gefährlich: Sie erzwingt das Entfernen eines Moduls, das noch verwendet wird. Die Option ist aber nur wirksam, wenn die Variable CONFIG_MODULE_FORCE_UNLOAD bei der Konfiguration des laufenden Kernels definiert wurde.
-s oder --syslog
Gibt die Ergebnisse an syslogd weiter und nicht an der Standardausgabe aus
-v oder --verbose
Ausführlicher Modus
-w oder --wait
Normalerweise entfernt der Befehl keine Module, die verwendet werden. Mit dieser Option wird das Modul isoliert und abgewartet, bis das Modul nicht länger in Verwendung ist.
Tab. 13.3: Die Optionen des Befehls rmmod
594
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Im folgenden Beispiel wird das Modul ntfs aus dem Kernel entfernt: # lsmod | grep ntfs ntfs 74924 0 (unused) # rmmode -v ntfs Checking ntfs for persistent data # lsmod | grep ntfs #
Wenn der Kernel ein Modul, das Sie zu entfernen versuchen, noch benötigt, erhalten Sie eine entsprechende Fehlermeldung.
13.1.5
Der Befehl modinfo
Dieser Befehl gibt Informationen über ein Modul aus der Moduldatei aus. Die Syntax des Befehls lautet: # modinfo [-option(en)] modul
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --author
Den Autor des Moduls anzeigen
-d oder --description
Die Modulbeschreibung anzeigen
-F oder --field
Gibt nur Feldwerte zurück und zwar einen pro Zeile. Eine nützliche Option für Skripte
-l oder --licence
Die Modullizenz anzeigen
-n oder --filename
Den Dateinamen des Moduls anzeigen
-p oder --parameters
Die Parameter des Moduls anzeigen
-0 oder --null
Verwendet das ASCII-Zeichen 0 anstatt einer neuen Zeile, um Feldwerte zu trennen. Diese Option ist auch für Skripte nützlich.
Tab. 13.4: Die Optionen des Befehls modinfo Im folgenden Beispiel werden die Informationen zum Modul ntfs angezeigt: # modinfo ntfs filename: /lib/modules/2.4.21-99-default/kernel/ fs/ntfs/ntfs.o description: "NTFS 1.2/3.x driver - Copyright (c) 2001-2003 Anton Altaparmakov" author: "Anton Altaparmakov " license: "GPL"
13.1.6
Der Befehl depmod
Dieser Befehl sucht die Abhängigkeiten zwischen Kernel-Modulen, die geladen werden können, und schreibt diese in die entsprechende Konfigurationsdatei /lib/ modules/kernelversion/modules.dep. Die Syntax des Befehls lautet: # depmod [-option(en)] [datei]
595
magnum
Den Kernel verwalten
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --all
Erstellt die Abhängigkeiten für alle Module, die sich in der Datei /etc/conf.modules befinden
-A
Entspricht der Option -a, führt aber nur eine Aktualisierung durch
-b basis oder --basedir
Definiert ein Basisverzeichnis
-C datei oder --config
Verwendet die angegebene Datei anstelle der Datei /etc/conf.modules
-e oder --errsyms
Zeigt alle nicht auflösbaren Symbole für das Modul an
-F symbole oder --filesyms
Angabe der passenden Symbole für einen nicht laufenden Kernel, wenn die Abhängigkeiten bestimmt werden
-n oder --show
Gibt die Abhängigkeiten nur an der Standardausgabe und nicht im Modulverzeichnis als Datei aus
-p oder --parameters
Die Parameter des Moduls anzeigen
-q oder --quiet
Meldet keine unbekannten Symbolverweise
-r oder --root
Ermöglicht es root, auch Module zu laden, die nicht root gehören
-s oder --syslog
Gibt die Ergebnisse an syslogd weiter und nicht an der Standardausgabe aus
-u oder --unresolved-error
Definiert einen Fehler-Rückgabewert für nicht aufgelöste Symbole
-v oder --verbose
Ausführlicher Modus
Tab. 13.5: Die Optionen des Befehls depmod Im folgenden Beispiel werden alle Abhängigkeiten auf den Bildschirm gelenkt, anstatt diese in die Konfigurationsdatei zu schreiben: # depmod -an | more /lib/modules/2.4.21-99-default/kernel/abi/ cxenix/abi-cxenix.o: /lib/modules/ 2.4.21-99-default/kernel/abi/svr4/abi-svr4.o \ /lib/modules/2.4.21-99-default/kernel/ arch/i386/kernel/lcall7.o /lib/modules/2.4.21-99-default/kernel/abi/ibcs/abi-ibcs.o: /lib/modules/ 2.4.21-99-default/kernel/ abi/svr4/abi-svr4.o \ /lib/modules/2.4.21-99-default/kernel/ arch/i386/kernel/lcall7.o /lib/modules/2.4.21-99-default/kernel/abi/isc/abi-isc.o: /lib/modules/ 2.4.21-99-default/kernel/ abi/svr4/abi-svr4.o \ /lib/modules/2.4.21-99-default/kernel/ arch/i386/kernel/lcall7.o /lib/modules/2.4.21-99-default/kernel/abi/sco/abi-sco.o: /lib/modules/ 2.4.21-99-default/kernel/ abi/svr4/abi-svr4.o \ /lib/modules/2.4.21-99-default/kernel/abi/ util/abi-util.o \ /lib/modules/2.4.21-99-default/kernel/arch/ i386/kernel/lcall7.o \ /lib/modules/2.4.21-99-default/kernel/abi/ cxenix/abi-cxenix.o license: "GPL" --More--
596
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Dieser Befehl wird in der Regel automatisch aufgerufen, zum Beispiel beim Bootvorgang oder durch Konfigurationstools wie YAST von SUSE Linux.
13.1.7
Die Datei modules.dep
Diese Datei steht im Verzeichnis /lib/modules/kernelversion und enthält Informationen über die Abhängigkeiten eines Kernel-Moduls von anderen Modulen. Sie wird vom Befehl modprobe ausgelesen und sieht zum Beispiel wie folgt aus: # more modules.dep /lib/modules/2.4.21-99-default/kernel/abi/cxenix/abi-cxenix.o: /lib/modules/ 2.4.21-99-default/kernel/abi/svr4/abi-svr4.o \ /lib/modules/2.4.21-99-default/kernel/arch/i386/kernel/lcall7.o ...
Die Zeilen sind folgendermaßen aufgebaut: modulname.ko:abhängigkeit1 abhängigkeit2 ...
Alle Module, die dem System zur Verfügung stehen, befinden sich in dieser Datei gemeinsam mit den Modulen, von denen sie abhängig sind. Module, die keine Abhängigkeiten aufweisen, sind trotzdem in der Datei enthalten. Wenn der Befehl modprobe ein Modul laden soll, liest er erst diese Datei und lädt zuerst die notwendigen Module. Erst wenn alle diese Module eingebunden wurden, wird auch das ursprünglich angeforderte Modul geladen.
13.1.8
Die Datei /etc/modules.conf
In älteren Linux-Distributionen (vor Kernel-Version 2.6) gibt es eine Datei /etc/ , die eine Liste der Module mit deren jeweiligen Parametern enthält, zum Beispiel für Hardwaremodule werden Parameter wie Interrupts oder I/OAdressen geführt. Der Befehl modprobe wird bei diesen Linux-Distributionen durch die Einstellungen dieser Datei gesteuert. modules.conf
# more /etc/modules.conf ... # Configuration file for loadable modules; used by modprobe ################################################### Aliases - specify your hardware ################################################### # alias eth0 alias eth1 alias tr0 alias scsi_hostadapter alias fb0 ...
off off off off off
In älteren Linux-Systemen heißt diese Datei häufig noch /etc/conf.modules.
597
magnum
Den Kernel verwalten
Die Schlüsselwörter der Datei haben folgende Bedeutung: Schlüsselwort
Beschreibung
alias
Aliase ordnen speziellen Modulen generische Namen zu
depfile=pfad
Angabe der Datei für die Modulabhängigkeiten
install modul befehl
Der Befehl für das Einbinden des Moduls wird durch den angegebenen Befehl ersetzt.
keep
Wenn dieser Parameter vor einer Pfadanweisung steht, wird der Standardpfad zu jedem angegebenen Pfad hinzugefügt.
options modul opt1=wert1 opt2=wert2
Es werden Optionen für die Module in Form eines oder mehrerer Wertepaare mitgegeben.
...
post-install modul befehl Nach dem Einfügen des angegebenen Moduls wird der angegebene
Befehl ausgeführt. post-remove modul befehl
Nach dem Löschen des angegebenen Moduls wird der angegebene Befehl ausgeführt.
pre-install modul befehl
Vor dem Einfügen des angegebenen Moduls wird der angegebene Befehl ausgeführt.
pre-remove modul befehl
Vor dem Löschen des angegebenen Moduls wird der angegebene Befehl ausgeführt.
remove modul befehl
Der Befehl zum Löschen eines Moduls wird durch den angegebenen Befehl ersetzt.
Tab. 13.6: Schlüsselwörter der Konfigurationsdatei modules.conf
13.1.9
Die Datei /etc/modprobe.conf
In Linux-Distributionen ab Kernel-Version 2.6 gibt es anstelle der Datei /etc/modudie Datei /etc/modprobe.conf. Der Befehl modprobe wird bei neueren LinuxDistributionen durch die Einstellungen dieser Datei gesteuert. Nachfolgend ein Auszug der Datei auf einem SUSE-Linux-System:
les.conf
# more /etc/modules.conf ... ############################################################# # Aliases - specify your hardware ############################################################# install eth0 /bin/true install eth1 /bin/true install tr0 /bin/true install scsi_hostadapter /bin/true install fb0 /bin/true ... ############################################################### # Options; these are examples; uncomment and modify the lines you need ############################################################### # options cdu31a cdu31a_port=0x340 cdu31a_irq=0 # options ne io=0x300 irq=5 ... install dummy0 /sbin/modprobe -o dummy0 --ignore-install dummy install dummy1 /sbin/modprobe -o dummy1 --ignore-install dummy
598
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
remove dummy0 /sbin/modprobe -r -o dummy0 --ignore-remove dummy remove dummy1 /sbin/modprobe -r -o dummy1 --ignore-remove dummy ... ############################################################## # block dev aliases ############################################################## alias block-major-1 rd alias block-major-2 floppy ...
Die Datei enthält so genannte install-Anweisungen mit Befehlen, die ausgeführt werden sollen, wenn ein Modul geladen wird. Es ist mit einer install-Anweisung auch möglich, eine Alternative anzugeben, zum Beispiel ein alternativ zu ladendes Modul für eine Ethernetkarte, wenn das erste Modul nicht geladen werden kann: install eth0 /sbin/modprobe e100 || /sbin/modprobe eepro100
13.2 Kernel konfigurieren Wenn Sie den Kernel konfigurieren möchten, müssen Kernel-Quelldateien, ein entsprechender Compiler und die notwendigen Übersetzungstools installiert sein. Bei den meisten Distributionen müssen dazu einfach einige Pakete und die Kernel-Quellen installiert werden, bei manchen Distributionen werden die Kernel-Quellen sogar standardmäßig installiert. Die Distributionen besitzen in der Regel eigene Kernel-Quellen, die verschiedene Erweiterungen und Patches zu den ursprünglichen Kernel-Quellen aufweisen. Ursprüngliche Kernel finden Sie im Internet unter http://www.kernel.org. KernelQuelldateien befinden sich im Allgemeinen im Verzeichnis /usr/src/linux. Sie müssen keine Programmierkenntnisse besitzen, um einen Kernel zu konfigurieren, sollten dabei aber immer sehr sorgfältig vorgehen. Es gibt mehrere Möglichkeiten, um einen Kernel zu konfigurieren. Bei der ersten Methode wird der Kernel an der Befehlszeile ohne Menü konfiguriert. Rufen Sie dazu folgende Befehle auf: # cd /usr/src/linux # make config
Alternativ ist es möglich, den Kernel über ein ASCII-Konfigurationsmenü zu erstellen: # cd /usr/src/linux # make menuconfig
Die dritte Möglichkeit ist eine grafische Konfiguration: # cd /usr/src/linux # make xconfig
Wenn Sie beim Aufruf des Befehls make eine Fehlermeldung erhalten, weil noch Pakete fehlen, liegt es in der Regel am Paket qt2-devel, eventuell noch an den Kernel-Quelldateien, die noch nicht installiert sind. In Kapitel 5 sehen Sie, wie Sie fehlende Pakete nachinstallieren.
599
Kernel konfigurieren
magnum
Einen Debian-Kernel sollten Sie in der Regel mit dem Befehl make-kpkg generieren! Die Konfiguration ist am einfachsten über die grafische Variante (make
xconfig):
Bild 13.1: Grafische Konfiguration des Kernels
In der linken Fensterhälfte können Sie die Hauptmenüpunkte auswählen. Anschließend wird oben rechts der aktivierte Unterpunkt angezeigt. Klicken Sie auf diesen, um die Informationen zu dieser Auswahl unten rechts anzeigen zu lassen. Sie können Optionen im Fenster oben rechts durch Anklicken (»Haken setzen«) aktivieren bzw. deaktivieren (»Haken entfernen«).
13.2.1
Kernel übersetzen und installieren
Wenn Sie den Kernel mit einem der oben genannten Befehle konfiguriert haben, können Sie ihn mit folgenden Befehlen neu übersetzen. Der erste make-Befehl überprüft die Abhängigkeiten, der zweite löscht alte Objektdateien und der dritte kompiliert den neuen Kernel: # # # #
cd /usr/src/linux make dep make clean make bzImage
Der neue Kernel wird nach diesen Befehlen in komprimierter Form als bzImageDatei im Verzeichnis /usr/src/linux/arch/i386/boot/bzImage abgelegt. Wenn Sie den Kernel anschließend aktivieren möchten, müssen Sie ihn noch in das Verzeichnis /boot kopieren. Sichern Sie zuerst aber den aktuellen Kernel /boot/
600
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
vmlinuz (zum
Beispiel unter /boot/vmlinuz.old), bevor Sie den neu übersetzten Kernel entsprechend umbenennen und das System neu starten:
# mv /boot/vmlinuz /boot/vmlinuz.old # mv /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz
Einige Distributionen bieten auch die Möglichkeit, den Befehl make install aufzurufen, um den Kernel automatisch umzukopieren. Es ist allerdings empfehlenswert, beim ersten Mal diesen Vorgang manuell durchzuführen. Bevor Sie nun das System neu starten, müssen Sie noch den Bootloader aktualisieren (zum Beispiel durch Aufruf von lilo, vergleiche Kapitel 12). # lilo # reboot
Sie sollten auf jeden Fall in den Bootloader auch noch eine Möglichkeit integrieren, den alten Kernel zu verwenden (vergleiche Kapitel 12), falls der neue Kernel beim Booten des Systems Probleme macht.
13.2.2
Module übersetzen und installieren
Die Kernel-Komponenten, die als Module vorliegen, werden unabhängig vom Kernel übersetzt. Der erste make-Befehl kompiliert und der zweite installiert die Module: # cd /usr/src/linux # make modules # make modules_install
Der Kernel greift auf die Moduldateien mit der Bezeichnung .ko zu, die sich im Verzeichnis /lib/modules// befinden.
13.3 Das System überwachen Es gibt eine Anzahl von einfachen Befehlen, mit denen Sie einige Informationen über das System und die darin angemeldeten Benutzer erhalten. Die gebräuchlichsten werden in diesem Abschnitt aufgeführt.
Der Befehl hostname Dieser Befehl gibt den Namen des aktuellen Rechners aus oder weist ihn neu zu. Die Syntax des Befehls lautet: $ hostname [neuer-hostname]
Nachfolgend wird der Hostname für den aktuellen Rechner ausgegeben: # hostname pcsli3
Der Befehl uname Mit Hilfe des Befehls uname erhalten Sie detailliertere Informationen über die Hardware und die Betriebssystemversion des Systems. Ohne Option wird nur der Name des Betriebssystems ausgegeben: Die Syntax des Befehls lautet:
601
magnum
Das System überwachen
$ uname [-option(en)]
Mögliche Optionen des Befehls sind: Option
Bedeutung
-a oder --all
Alle Informationen ausgeben
-m oder --machine
Nur Maschinen-Hardwarenamen anzeigen
-n oder --nodename
Nur Netzwerkknotennamen des Rechners anzeigen
-r oder --kernel-release
Nur Releasenummer des Kernels anzeigen
-o oder --operating-system
Nur Betriebssystemname anzeigen
-s oder --kernel-name
Nur den Kernel-Namen ausgebe
-v oder --kernel-version
Nur Versionsnummer des Kernels anzeigen
Tab. 13.7: Optionen des Befehls uname
Alle verfügbaren Optionen erhalten Sie mit der Option –a: $ uname -a Linux pclsu7 2.4.21-99-default #1 Wed Sep 24 13:30:51 UTC 2003 i686 i686 i386 GNU/Linux
Die Ausgabe zeigt den Kernel-Namen (Linux), den Rechnernamen (pclsu7), die Kernel-Releasenummer (2.4.21-99-default), die Kernel-Version (#1 Wed Sep 24 13:30:51 UTC 2003), den Hardwarenamen der Maschine (i686), den Prozessortyp (i686), die Hardwareplattform (i386) und das Betriebssystem (GNU/Linux) an.
Der Befehl date Dieser Befehl gibt das Datum und die Uhrzeit des Systems aus. Als Systemadministrator ist es auch möglich, die Uhrzeit damit neu einzustellen, vorausgesetzt, diese wird nicht automatisch von einem Timeserver bezogen. Die Syntax des Befehls lautet: $ date [-option(en)] [+format] [datum]
Der Befehl kennt folgende Optionen: Option
Bedeutung
-d oder --date=datum
Anzeige der Zeit, wie sie durch die Zeichenkette datum beschrieben wird
-f oder --file=datei
Analog zur Option -d, wird aber einmal für jede Zeile der Datei ausgeführt
--iso-8601=[zeitangabe]
Ausgabe der Zeit und des Datums im ISO 8601-Format. Die Angabe zeitangabe kann dabei entweder date, hours, minutes oder seconds lauten.
-R oder --rfc-822
Ausgabe eines Datums, das zu RFC-822 kompatibel ist
Tab. 13.8: Optionen des Befehls date
602
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Option
Bedeutung
-s oder --set=datum
Einstellen der Zeit, wie sie durch die Zeichenkette datum beschrieben wird
-u oder --utc oder --universal
Setzt die Uhrzeit nach Greenwich Mean Time (GMT) bzw. der koordinierten Weltzeit (UTC) oder gibt sie aus. Voraussetzung dazu ist die Eingabe von Lokalisierungsdaten bei der Installation.
+format
Steuerung des Ausgabeformats mit folgenden Möglichkeiten: Format Bedeutung %% %a %A %b %B %c %C %d %D %e %F %g %G %h %H %I %j %k %l %m %M %n %N %p %P %r %R %s %S %t %T %u %U %w %W %x %X %y %Y %z %Z
das Zeichen % ausgeben abgekürzter Wochentagsname, zum Beispiel Sun, Mon usw. ausgeschriebener Wochentagsname, zum Beispiel Sunday, Monday usw. abgekürzter Monatsname, zum Beispiel Jan, Feb usw. ausgeschriebener Monatsname, zum Beispiel January, February usw. Datum und Uhrzeit in landesüblicher Darstellung Jahrhundert (das Jahr geteilt durch 100, auf zwei Stellen abgeschnitten, 00–99) Tag des Monats (01–31) Datum in der Form mm/dd/yy Tag des Monats, ohne führende Nullen (1–31) entspricht der Darstellung yyyy-mm-dd zweistellige Darstellung des Jahres vierstellige Darstellung des Jahres entspricht %b Stunde (00–23) Stunde (01–12) Tag des Jahres (001–366) Stunde (0–23) Stunde (1–12) Monat (1–12) Minute (00–59) neue Zeile Nanosekunden (000000000–999999999) Anzeige von AM oder PM Anzeige von am oder pm Zeit im 12-Stunden-Format (hh:mm:ss [AP]M) Zeit im 24-Stunden-Format (hh:mm) Sekunden seit dem 1.1.1970, 00:00:00 Sekunden (00–60) horizontaler Tabulator Zeit im 24-Stunden-Format (hh:mm:ss) Wochennummer des Jahres, beginnend mit dem Sonntag als erstem Tag der Woche (00–53) Wochennummer des Jahres, beginnend mit dem Montag als erstem Tag der Woche (00–53) Tag der Woche (0–6); die 0 steht für Sonntag Wochennummer des Jahres, beginnend mit dem Montag als erstem Tag der Woche (00–53) Datum in landesüblicher Darstellung (mm/dd/yy) Uhrzeit in landesüblicher Darstellung (HH:MM:SS) zweistellige Jahreszahl (00–99) vierstellige Jahreszahl (1900 …) eine numerische Zeitzone im RFC 822-Stil Zeitzone, zum Beispiel MET
Tab. 13.8: Optionen des Befehls date (Forts.)
603
Das System überwachen
magnum
Im ersten Beispiel werden die aktuelle Uhrzeit und das aktuelle Datum unformatiert ausgegeben: $ date Sun Mar 7 16:05:36 MEST 2004
Sie können das Ausgabeformat mit Hilfe der Option +format beeinflussen. Im nachfolgenden Beispiel wird das Datum im Format »zweistellige Tages- und Monatsund vierstellige Jahresangabe« ausgegeben: $ date +"%d.%m.%Y" 07.03.2003
Im nächsten Beispiel wird mit Hilfe des Befehls die Systemzeit umgestellt. Dazu muss das Format mmddHHMM (zweistellige Monats-, Tages-, Stunden- und Minutenangabe) eingehalten werden: # date 03071605 Sun Mar 7 16:05:36 MEST 2004
Die Änderung der Systemzeit ist allein dem Benutzer root vorbehalten.
Der Befehl cal Der Befehl gibt den aktuellen Monatskalender zurück. Die Syntax des Befehls lautet: $ cal [-option(en)] [[monat] jahr]
Mögliche Optionen des Befehls sind: Option
Bedeutung
-1
Nur einen einzigen Monat ausgeben (Standardverhalten)
-3
Den vorherigen, aktuellen und nächsten Monat ausgeben
-j
Julianische Daten anzeigen, das heißt die Tage des Jahres werden durchgehend gezählt von 1–365
-m
Montag als ersten Tag der Woche anzeigen
-s
Sonntag als ersten Tag der Woche anzeigen (Standardverhalten)
-y
Einen Kalender fürs aktuelle Jahr ausgeben
Tab. 13.9: Optionen des Befehls cal
Im ersten Beispiel wird der aktuelle Monat ausgegeben: $ cal May 2004 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
604
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Als Optionen kennt der Befehl die Monats- und die Jahresangabe, so gibt zum Beispiel der nächste Befehl den Monatskalender vom Februar 1999 aus: $ cal 2 1999 February 1999 Su Mo Tu We Th Fr 1 2 3 4 5 7 8 9 10 11 12 14 15 16 17 18 19 21 22 23 24 25 26 28
Sa 6 13 20 27
Wenn Sie als Option nur die Jahreszahl mitgeben, erhalten Sie einen Jahreskalender. So gibt zum Beispiel der folgende Befehl den Jahreskalender für das Jahr 2004 aus: $ cal 2004
Der Kalender reicht von Januar im Jahre 1 bis zum Dezember im Jahre 9999 und berücksichtigt auch die Schaltjahre entsprechend. Auch die Kalenderregulierung im September 1752 ist enthalten. Wenn Sie als Option das Jahr 99 mitgeben, erhalten Sie daher eine andere Ausgabe, als wenn Sie die Option 1999 verwenden.
Der Befehl who Dieser Befehl zeigt an, welche Benutzer am System angemeldet sind. Die Syntax des Befehls lautet: $ who [-option(en)]
Der Befehl kennt folgende Optionen: Option
Bedeutung
-a oder --all
Ausführliche Ausgabe
-b oder --boot
Zeit des letzten Systemstarts
-d oder --dead
Nur die Prozesse anzeigen, die einmal vom Prozess init gestartet und inzwischen beendet sind
-H oder --heading
Spaltenüberschriften ausgeben
-i oder --idle
Fügt der Ausgabe die Leerlaufzeit im Format Stunden:Minuten hinzu
-l oder --lookup
Versucht, kanonische Hostnamen über DNS zu ermitteln
--login
Zeigt die Anmeldeprozesse am System an
-m
Nur Informationen des aktuellen Terminals ausgeben
-p oder --process
Nur die Prozesse anzeigen, die aktiv sind und vom Prozess init wieder gestartet werden, falls sie beendet werden
-q oder --count
Nur Anzeige der Anmeldenamen und der Anzahl aller angemeldeten Benutzer
Tab. 13.10: Optionen des Befehls who
605
magnum
Das System überwachen
Option
Bedeutung
-r oder --runlevel
Nur aktuellen Runlevel ausgeben
-s oder --short
Standardausgabe, kann auch weggelassen werden
-t oder --time
Anzeigen, wann die Systemzeit zuletzt geändert wurde
-T oder -w oder --mesg
Fügt den Nachrichtenstatus der Benutzer hinzu (in Form von +, - oder ?)
-u oder --users
Anzeige aller angemeldeten Benutzer
Tab. 13.10: Optionen des Befehls who (Forts.)
Im ersten Beispiel werden alle am System angemeldeten Benutzer ausgegeben: $ who doo doo bay her
:0 pts/4 pts/5 pts/7
Jul Jul Jul Jul
7 7 7 7
15:25 15:25 16:22 15:39
(console) (pc9sl.hertzog-edv.de) (pc2w2k.hertzog-edv.de)
Die erste Spalte enthält den Benutzernamen und die zweite die Bezeichnung des Geräts, an dem sich der Benutzer angemeldet hat. Mögliche Geräte sind :0 oder console (der physikalische Rechner), pts (das Pseudoterminal, zum Beispiel ein Terminalfenster der KDE) und term (ein physikalisch angeschlossenes Terminal). Die dritte und die vierte Spalte enthalten Datum und Uhrzeit der Anmeldung und die letzte Spalte zeigt an, ob ein Benutzer sich von einem Remote-System aus angemeldet hat, wie zum Beispiel die Benutzer bay und her. Mit dem folgenden Befehl erhalten Sie eine ausführlichere Ausgabe: # who -a
LOGIN LOGIN LOGIN LOGIN LOGIN LOGIN root doo doo her
+ + +
May run-level 5 May May tty1 May tty2 May tty3 May tty4 May tty5 May tty6 May :0 May pts/0 May pts/1 May pts/2 May
12 12 12 12 12 12 12 12 12 12 12 12 12
12:39 13 id=si term=0 exit=0 12:39 last=S 12:39 660 id=l5 term=0 exit=0 12:39 1789 id=1 12:39 1790 id=2 12:39 1791 id=3 12:39 1792 id=4 12:39 1793 id=5 12:39 1794 id=6 12:49 old 1795 (console) 12:50 03:33 1943 12:50 01:29 1961 13:46 . 2068 (pcw2k.hertzog-edv.de)
Im letzten Beispiel ermitteln Sie Ihren aktuellen Benutzernamen: $ who am i her pts/7
Jul 7 15:25
Ihren Benutzernamen können Sie auch mit dem Befehl id ermitteln bzw. mit echo $LOGNAME oder echo $USER.
606
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Der Befehl whoami Dieser Befehl zeigt nur an, als welcher Benutzer man im Moment am System angemeldet ist. $ whoami her
Der Befehl whoami gibt den aktuellen Benutzernamen (effektive UID) an, während der Befehl who am i den ursprünglichen Anmeldenamen (reale UID) zeigt. Daher kann es nach einem Wechsel der Benutzeridentität mit dem Befehl su zu unterschiedlichen Ausgaben kommen.
Der Befehl last Dieser Befehl zeigt an, welche Benutzer sich am System angemeldet und abgemeldet haben und wann das System erneut gestartet wurde. Die Syntax des Befehls lautet: $ last [-option(en)]
Der Befehl kennt folgende Optionen: Option
Bedeutung
-zahl oder --nzahl
Die Anzahl der angezeigten Einträge begrenzen
-a
Den Rechnernamen in der letzten Spalte anzeigen
-d
Bei nicht lokalen Anmeldungen speichert Linux nicht nur den Hostnamen eines Remote-Rechners, sondern auch dessen IP-Adresse. Diese Option übersetzt die IP-Adresse zurück in einen Rechnernamen.
-i
Diese Option ist der Option -d ähnlich, aber sie gibt die IP-Adresse in einer anderen Notation aus.
-o
Liest eine Datei wtmp des alten Typs
-R
Unterdrückt die Anzeige des Felds mit dem Hostnamen
-x
Zeigt die Einträge für das Herunterfahren des Systems und das Wechseln der Runlevel an
Tab. 13.11: Optionen des Befehls last
Im ersten Beispiel wird der Befehl ohne Optionen verwendet: $ last her root doo doo reboot her doo doo reboot ...
pts/2 pcw2k.hertzog-e Wed May 12 pts/1 Wed May 12 pts/0 Wed May 12 :0 console Wed May 12 system boot 2.4.21-99-defaul Wed May 12 pts/2 pcw2k.hertzog-e Tue May 11 pts/1 Tue May 11 :0 console Tue May 11 system boot 2.4.21-99-defaul Tue May 11
13:46 still logged in 12:50 still logged in 12:50 still logged in 12:49 still logged in 12:39 (03:55) 20:38 - 21:02 (00:24) 20:27 - 21:08 (00:41) 20:26 - 21:08 (00:41) 20:23 (00:44)
607
magnum
Das System überwachen
Die erste Spalte enthält den Benutzernamen oder die Reboot-Information und die zweite wiederum die Bezeichnung des Geräts, an dem sich der Benutzer angemeldet hat. Die dritte Spalte enthält den Rechnernamen, von dem sich der jeweilige Benutzer angemeldet hat (0 steht für lokal) und die vierte und fünfte Spalte enthalten Datum und Uhrzeit der Anmeldung. Die letzte Spalte zeigt an, wie lange ein Benutzer angemeldet war. Mit der Angabe reboot werden nur die Zeiten der Systemstarts angezeigt: $ last reboot reboot system reboot system reboot system reboot system reboot system reboot system reboot system reboot system reboot system reboot system reboot system reboot system
boot boot boot boot boot boot boot boot boot boot boot boot
2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul 2.4.21-99-defaul
Wed Tue Tue Mon Sun Sun Sun Sun Sat Fri Thu Wed
May May May May May May May May May May May May
12 11 11 10 9 9 9 9 8 7 6 5
12:39 20:23 09:37 17:27 18:52 18:05 16:31 10:30 09:21 15:58 21:12 19:08
(04:00) (00:44) (09:18) (01:09) (02:04) (02:51) (01:12) (05:58) (13:04) (01:10) (01:57) (02:26)
Der Befehl finger Der Befehl gibt Informationen zu einem oder mehreren Benutzern aus und kann für lokale und Remote-Abfragen von Benutzerkennungen verwendet werden. Bei Remote-Abfragen wird dem angefragten Benutzernamen noch das Zeichen @ gefolgt vom Rechnernamen hinzugefügt, zum Beispiel user@pcw2k. Die Syntax des Befehls lautet: $ finger [-option(en)] [benutzer]
Mögliche Optionen des Befehls sind: Option
Bedeutung
-h
Bei gleichzeitiger Verwendung der Option -s wird der Name des Remote-Rechners anstelle des Inhalts des Kommentarfelds der Datei /etc/passwd angezeigt.
-l
Ausführliches Format
-m
Verhindert die genaue Übereinstimmung von Benutzernamen. Statt des Anmeldenamens werden die richtigen Namen der Benutzer überprüft.
-M
Aktiviert die genaue Übereinstimmung von Benutzernamen
-o
Wird die Option -s verwendet, dann werden die Informationen des Kommentarfelds anstelle des Remote-Rechners angezeigt.
-p
Die Ausgabe der Dateien .plan und .project unterdrücken, wenn die Option -l verwendet wird
-s
Kurzausgabe
Tab. 13.12: Optionen des Befehls finger
608
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Wenn ein Benutzer eine ASCII-Datei mit dem Namen .plan oder .project in seinem Homeverzeichnis erstellt und allen darauf das Leserecht einräumt, wird der Inhalt einer solchen Datei durch den Befehl finger angezeigt. Im ersten Beispiel wird der Befehl ohne Option verwendet: $ finger Login Name her Ute Hertzog doo Oliver Dorsch doo Oliver Dorsch
Tty Idle Login Time Where pts/2 - Wed 13:46 pcwk2.hertzog-edv.de :0 231d Wed 12:49 console pts/0 4:00 Wed 12:50
Die erste Spalte enthält den Benutzernamen, die zweite Spalte weitergehende Informationen zum Benutzer, die dem Kommentarfeld der Datei /etc/passwd entnommen werden. Die nächste Spalte enthält das Gerät, an dem der Benutzer angemeldet ist. Die vierte Spalte enthält die Zeit in Minuten, seit der Benutzer keine Aktionen mehr durchgeführt hat. Die fünfte Spalte zeigt an, wann er sich angemeldet hat, und die letzte Spalte enthält den Namen des Systems, von dem aus der Benutzer sich angemeldet hat. Die Informationen für die Ausgabe des Befehls finger können Sie mit dem Befehl chfn einstellen (vergleiche Kapitel 11). Es ist auch möglich, gezielt Informationen zu einzelnen Benutzerkonten abzurufen, indem der Benutzername als Argument verwendet wird: $ finger her Login: her Name: Ute Hertzog Directory: /home/her Shell: /bin/bash Office Phone: x9-9999 On since Wed May 12 13:46 (CEST) on pts/2 from pc4w2k.hertzog-edv.de Mail last read Mon Mar 11 16:31 2004 (CEST) No Plan.
Der Befehl finger verwendet den Netzwerkdienst fingerd. Aus Sicherheitsgründen wird dieser Dienst oft deaktiviert, da dadurch Daten über Anmeldenamen und die Lokalisation der Benutzer ermittelt werden können.
609
magnum
Das System überwachen
Der Befehl w Dieser Befehl zeigt ebenfalls an, wer am System angemeldet ist und welche Prozesse die angemeldeten Benutzer ausführen. Die Syntax des Befehls lautet: # w [-option(en)] [benutzer]
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-f
Aktiviert oder deaktiviert (je nach Voreinstellung) die Ausgabe des Felds, in dem der Remote-Rechnername angezeigt wird, das standardmäßig nicht angezeigt wird
-h
Gibt die Überschriftzeile nicht aus
-s
Verwendet das kurze Format
-u
Ignoriert den Benutzernamen und stellt den aktuellen Prozess und die CPU-Zeiten dar
Tab. 13.13: Die Optionen des Befehls w
Im folgenden Beispiel werden mit dem Befehl die angemeldeten Benutzer mit ihren aktuellen Prozessen ausgegeben. Es werden der Benutzername, das verwendete Terminal, die Anmeldezeit, die Leerlaufzeit, die von allen Prozessen gemeinsam verbrauchte CPU-Zeit, die vom aktuellen Prozess verbrauchte CPU-Zeit und der Befehlsname des aktuellen Prozesses angezeigt: # w 17:45:34 up USER TTY root :0 root pts/0 root pts/1 her pts/2
5:06, LOGIN@ 12:49 12:50 12:50 13:46
4 users, load IDLE JCPU ?xdm? 5:47 4:55m 0.00s 2:50m 0.07s 0.00s 0.25s
average: 0.00, 0.02, 0.01 PCPU WHAT 0.04s -:0 0.53s kdeinit: kwrited 0.07s /bin/bash 0.04s login -- her
Der Befehl lastlog Dieser Befehl gibt den Inhalt der Protokolldatei /var/log/lastlog aus, die anzeigt, welche Benutzer wann zuletzt oder überhaupt noch nicht am System angemeldet waren. Die Syntax des Befehls lautet: # lastlog [-option(en)] [benutzer]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-u oder --user benutzer
Es wird nur die letzte Anmeldung des angegebenen Benutzers angezeigt.
-u oder --time tage
Es werden nur die letzten Anmeldungen angezeigt, die in den durch die angegebene Anzahl Tagen stattfanden.
Tab. 13.14: Die Optionen des Befehls lastlog
610
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Im folgenden Beispiel werden die letzten Anmeldungen aller Benutzer angezeigt: # lastlog Username root bin daemon lp ... privoxy her doo bmerker hpiffke
Port :0
From console
2 :0 :0 :0
pcw2k.hertzog-e console console console
Latest Wed May **Never **Never **Never
12 12:49:43 +0200 2004 logged in** logged in** logged in**
**Never logged in** Wed May 12 13:46:53 +0200 2004 Sun Dec 28 19:53:53 +0100 2003 Sun Dec 28 19:49:27 +0100 2003 Sun Dec 28 18:52:28 +0100 2003
13.4 Das System protokollieren Unter Linux ist eine zentrale Systemprotokollierung mit Hilfe des Daemons syslogd und seiner Konfigurationsdatei /etc/syslog.conf möglich.
13.4.1
Der Dienst syslogd
Der Daemon syslogd übernimmt die Aufgabe, die Systemaktivitäten mitzuloggen. Er wird normalerweise durch die rc-Konfigurationsdateien gestartet, wenn das System bootet. Wenn der Daemon startet, wird die Datei /etc/syslog.conf ausgelesen, in der die Optionen für die Ausführung des Daemons syslogd stehen. Unter Linux verwaltet der Daemon zur Systemprotokollierung syslogd zentral alle Fehler-, Protokoll- und sonstigen Systemmeldungen. Er kann diese je nach Priorität an die richtigen Protokolldateien oder Benutzer senden. Der Dienst wird automatisch durch ein Run Control-Skript beim Hochfahren des Systems gestartet. Die Meldungen können in eine systemweite Protokolldatei, wie zum Beispiel in die Datei /var/log/messages, geschrieben, an der Systemkonsole bzw. an bestimmte Benutzer ausgegeben oder über das Netz an einen syslogd eines anderen Rechners gesendet werden. Sie können den Dienst durch das manuelle Editieren der Datei /etc/ syslog.conf konfigurieren. Unter Debian GNU/Linux heißt das Run Control-Skript zum Starten des Daemons /etc/init.d/sysklogd und die Protokollierung erfolgt standardmäßig in die Datei /var/log/syslog. SUSE Linux verwendet ab der Version 10.0 standardmäßig nicht mehr den syssondern den syslog-ng. Dieser enthält nicht nur alle Funktionen des traditionellen syslog-Daemons, sondern besitzt zusätzlich noch flexible Möglichkeiten, um Nachrichten zu filtern und die Protokollierung auf ein Remote-System über TCP zu unterstützen. Die dazugehörige Konfigurationsdatei ist /etc/ syslog-ng/syslog-ng.conf. log-Daemon,
611
Das System protokollieren
13.4.2
magnum
Die Datei /etc/syslog.conf
Die Einträge der Datei /etc/syslog.conf haben folgende Syntax:
Bild 13.2: Einträge der Datei /etc/syslog.conf
Einträge in der Datei bestehen aus jeweils zwei durch einen Punkt getrennten Feldern: die Facility und die Priorität. Mit Hilfe von Semikolons können beliebig viele Einträge aneinander gereiht werden. Nach den Einträgen wird die Aktion aufgeführt, die aber hinter einem Tabulatorzeichen eingegeben werden muss. Die Facility kann als Nachrichtenquelle, die Priorität als Nachrichtentyp und die Aktion als Nachrichtenempfänger betrachtet werden. Facilities können auch als Gruppen betrachtet werden, die Meldungen nach ihrer Art zusammenfassen: Facility
Beschreibung
auth
Vom Autorisierungssystem erzeugte Meldungen, das heißt Mitteilungen, die durch die Befehle su und login erzeugt werden
authpriv
Von Sicherheitsdiensten erzeugte vertrauliche Meldungen
cron
Vom cron-System erzeugte Meldungen
daemon
Von Systemhintergrundprozessen erzeugte Meldungen
kern
Vom Kernel erzeugte Meldungen
local0-7
Diese Facilities können frei verwendet werden.
lpr
Vom Druckdienst erzeugte Meldungen
mail
Vom Mailsystem erzeugte Meldungen
news
Vom USENET-Nachrichtensystem erzeugte Meldungen
security
Entspricht auth
syslog
Von syslog selbst erzeugte Meldungen
uucp
Vom UUCP-Dienst erzeugte Meldungen
user
Von Benutzerprozessen erzeugte Meldungen
Tab. 13.15: Die Facilities der Datei /etc/syslog.conf
612
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Facility
Beschreibung
*
Der Stern steht stellvertretend für alle Facilities gemeinsam, außer mark.
mark
Ermöglicht die Ausgabe eines Zeitstempels. Die Intervalle des Zeitstempels werden beim Aufruf von syslogd mit Hilfe der Option –m definiert, das Standardintervall beträgt 20 Minuten.
Tab. 13.15: Die Facilities der Datei /etc/syslog.conf (Forts.)
Die Prioritäten der Datei /etc/syslog.conf können folgende Werte enthalten: Priorität
Beschreibung
emerg
Panikmeldungen höchster Wichtigkeit, die in der Regel an alle Benutzer gemeldet werden
alert
Alarmmeldung von Fehlern, die den Systembetrieb behindern können
crit
Warnmeldung von kritischen Zuständen, wie zum Beispiel einem Gerätefehler
err
Weitere Fehlermeldungen, die nicht zu den oben genannten Meldungen gehören
warning
Allgemeine Warnmitteilungen des Systems
notice
Mitteilungen, die beachtet werden sollten, aber keine Fehlermeldungen sind
info
Informative Mitteilungen des Systems
debug
Meldungen von Debug-Informationen
none
Meldungen der entsprechenden Facility werden verhindert
Tab. 13.16: Die Prioritäten der Datei /etc/syslog.conf
Die Priorität nimmt in aufsteigender Reihenfolge von none bis emerg an Bedeutung zu. Zu den möglichen Aktionen, die in der Datei /etc/syslog.conf konfiguriert werden können, gehören: Aktionen
Beschreibung
/pfad/dateiname
Protokollierung der Meldungen in der angegebenen Datei
benutzer,benutzer
Protokollierung der Meldungen an die angegebenen Benutzer
@hostname
Weiterleitung der Meldungen an den syslog-Daemon des angegebenen Rechners
*
Weiterleiten der Meldungen an alle angemeldeten Benutzer
Tab. 13.17: Die Aktionen der Datei /etc/syslog.conf
Die Datei
/etc/syslog.conf ist
zum Beispiel wie folgt aufgebaut:
# more /etc/syslog.conf # /etc/syslog.conf - Configuration file for syslogd(8) ...
613
magnum
Das System protokollieren
kern.warning;*.err;authpriv.none kern.warning;*.err;authpriv.none *.emerg
/dev/tty10 |/dev/xconsole *
# enable this, if you want that root is informed # immediately, e.g. of logins #*.alert root # # all email-messages in one file mail.* -/var/log/mail mail.info -/var/log/mail.info mail.info -/var/log/mail.info mail.warning -/var/log/mail.warn mail.err /var/log/mail.err ... # Warnings in one file *.=warning;*.=err -/var/log/warn *.crit /var/log/warn # # save the rest in one file *.*;mail.none;news.none -/var/log/messages ...
Die Zeile *.emerg ... * bedeutet zum Beispiel, dass bei Notfallmeldungen aller Facilities alle benachrichtigt werden. Ein Minuszeichen vor dem Namen einer Protokolldatei bedeutet, dass die Nachrichten nicht sofort auf die Festplatten geschrieben werden, sondern erst bei der nächsten routinemäßigen Synchronisation von RAM und Platte. Das Gleichheitszeichen bedeutet, dass die Nachrichtenpriorität exklusiv in einer Datei mitgeloggt wird (dies kann die Performance des Systems beeinträchtigen, aber sinnvoll sein, um Informationen zu schreiben, kurz bevor das System vielleicht komplett ausfällt). Ein Ausrufungszeichen bewirkt eine Negation. Sollen zum Beispiel überhaupt keine Nachrichten der Facility mail mit protokolliert werden, kann mail.!* oder mail.none verwendet werden. Die Datei wird bei jedem Systemstart gelesen. Der Daemon kann aber auch gestoppt: # /etc/init.d/syslog stop
und neu gestartet werden: # /etc/init.d/syslog start
Beim syslog-Daemon kann das Problem auftreten, dass er die Protokolldateien dauerhaft geöffnet lässt. Das führt zum Beispiel dazu, dass keine neue Datei /var/ log/messages angelegt, wenn die alte gelöscht wird, und der entsprechende Festplattenplatz auch nicht freigeben wird. Dieses Problem kann durch ein erneutes Laden des syslog-Daemons gelöst werden: # /etc/init.d/syslog reload
614
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
13.4.3
Befehle der Systemprotokollierung
Der Befehl logger Dieser Befehl, der vor allem in Shellskripts oder zum Testen von Einträgen in die Datei /etc/syslog.conf verwendet wird, lässt sich zur manuellen Erzeugung von Protokolleinträgen verwenden. Die Syntax des Befehls lautet: # logger [-option(en)] [meldung]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-f datei
Angabe einer Datei, in die protokolliert werden soll
-i
Die PID des Befehls logger wird mitprotokolliert.
-p priorität
Angabe der Facility und Priorität einer Meldung, zum Beispiel kernel.error
-s
Die Meldung wird sowohl an die Standardausgabe als auch in das Systemprotokoll geschrieben.
-t kennzeichen
Angabe eines beliebigen Fehlerkennzeichens, das dem Protokolleintrag hinzugefügt werden soll
-u socket
An das angegebene Socket schreiben anstatt an die eingebauten syslogRoutinen
Tab. 13.18: Die Optionen des Befehls logger
Im folgenden Beispiel wird mit dem Befehl logger in der Datei neuer Eintrag erzeugt:
/var/log/messages ein
# logger +++++ System neu gestartet +++++
Nun erscheint in der Datei /var/log/messages die Zeile: May 12 18:43:53 pc7lsu her: +++++ System neu gestartet +++++
Der Befehl logrotate Dieser Befehl rotiert oder entfernt oder komprimiert Systemprotokolldateien. Damit ist es möglich, große Protokolldateien leicht zu administrieren. Sie können täglich, wöchentlich oder monatlich automatisch bearbeitet werden oder einfach dann, wenn sie zu groß werden. Um die automatische Bearbeitung zu gewährleisten, wird der Befehl normalerweise automatisch von cron in einem Cron-Job gestartet (vergleiche Kapitel 15). Die Syntax des Befehls lautet: # logrotate [-option(en)] konfigurationsdatei
Normalerweise wird als Konfigurationsdatei /etc/logrotate.conf verwendet, aber es ist auch möglich, andere Dateien zu nehmen, z.B. die Dateien im Verzeichnis /etc/ logrotate.d. Die Statusinformationen befinden sich in /var/lib/logrotate.status.
615
magnum
Das System protokollieren
Der Befehl kennt verschiedene Optionen: Option
Beschreibung
-d
Aktiviert den Debug-Modus. In diesem Modus werden die Protokolldateien nicht verändert.
-f oder --force
Erzwingt die Rotation, auch wenn der Befehl sie nicht für notwendig hält
-m oder --mail
Informiert logrotate, welcher Befehl verwendet werden soll, wenn Protokolle per E-Mail versendet werden. Der Standardbefehl ist /bin/mail -s.
befehl -s oder --state
datei
Speichert die Statusinformationen in der angegebenen Datei. Die Datei /var/lib/logrotate/status wird dazu standardmäßig verwendet.
Tab. 13.19: Die Optionen des Befehls logrotate
Der Befehl logrotate liest alles über die zu bearbeitenden Protokolldateien aus den an der Befehlszeile angegebenen Konfigurationsdateien. Jede Konfigurationsdatei kann globale Optionen definieren, die für jede Protokolldatei gelten und lokale Optionen überschreiben, und eine Protokolldatei zum Rotieren festlegen. Eine einfache Konfigurationsdatei kann zum Beispiel wie folgt aussehen: # sample logrotate configuration file compress /var/log/messages { rotate 5 weekly postrotate /sbin/killall -HUP syslogd endscript } "/var/log/httpd/access.log" /var/log/httpd/err.log { rotate 5 mail
[email protected] size=100k sharedscripts postrotate /sbin/killall -HUP httpd endscript } /var/log/news/news.crit { monthly rotate 2 olddir /var/log/news/old missingok postrotate kill -HUP `cat /var/run/inn.pid` endscript nocompress }
Die ersten Zeilen definieren globale Optionen und veranlassen die Komprimierung der Protokolldateien. Der zweite Abschnitt legt fest, wie die Datei /var/log/messages bearbeitet wird. Diese Protokolldatei wird fünf Mal wöchentlich rotiert, bevor sie gelöscht wird. Der nächste Abschnitt definiert sowohl für /var/log/httpd/access.log
616
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
als auch für /var/log/httpd/err.log Parameter. Diese Dateien rotieren, wenn sie über 100 Kbyte groß werden und alte Protokolldateien werden an
[email protected] per E-Mail versandt. Nach fünf Rotationen werden sie auch gelöscht. Der letzte Abschnitt definiert die Parameter für alle Dateien im Verzeichnis /var/log/news, die monatlich rotiert werden. Die Befehle für die Konfigurationsdateien bedeuten: Option
Beschreibung
compress
Verwendet den Befehl gzip zur Komprimierung von alten Dateien
compresscmd befehl
Angabe des Befehls, mit dem komprimiert wird. Standardmäßig wird der Befehl gzip verwendet.
compressext
Definiert, welche Namenserweiterung komprimierte Protokolldateien erhalten sollen
compressoptions
Es können dem Komprimierungsprogramm Befehlszeilenoptionen übergeben werden. Standardmäßig wird gzip die Option -9 (maximale Komprimierung) übergeben.
copy
Erstellt eine Kopie der Protokolldatei, aber ändert das Original nicht. Diese Option kann zum Beispiel zum Erstellen eines aktuellen Schnappschusses der Protokolldatei verwendet werden.
copytruncate
Kopiert die Protokolldatei und verkleinert anschließend die alte Protokolldatei
group
create mode owner
Verwendet die angegebenen Rechte für die neue Protokolldatei. Wenn keine Rechte angegeben wurden, werden die Rechte der alten Protokolldatei verwendet.
daily
Die Protokolldateien rotieren täglich.
dateext
Archiviert alte Versionen von Protokolldateien, indem eine Namenserweiterung hinzugefügt wird, die den Tag repräsentiert, wie zum Beispiel 20040308 (Format YYYYMMDD)
delaycompress
Komprimierung findet erst bei der nächsten Rotation statt
extension ext
Fügt Protokolldateien die angegebene Namenserweiterung hinzu
ifempty
Auch leere Protokolldateien werden rotiert.
include datei
Die angegebene Datei wird in die Konfigurationsdatei eingebunden.
mail mailadresse
Die Protokolldateien werden an die angegebene Adresse per E-Mail gesandt, wenn sie gelöscht werden.
mailfirst
Wird der Befehl mail verwendet, wird die soeben rotierte Datei per E-Mail versandt und nicht die abgelaufene Datei.
maillast
Wird der Befehl mail verwendet, wird die abgelaufene Datei per E-Mail versandt und nicht die soeben rotierte Datei.
maxage anzahl
Löscht rotierte Protokolldateien, die älter als die angegebene Anzahl von Tagen sind
Tab. 13.20: Die Befehle für Konfigurationsdateien von logrotate
617
magnum
Das System protokollieren
Option
Beschreibung
missingok
Wenn die Protokolldatei nicht vorhanden ist, wird die nächste weiterbearbeitet, ohne eine Fehlermeldung auszugeben.
monthly
Die Protokolldateien rotieren monatlich.
nocompress
Keine Komprimierung der alten Protokolldateien
nocopy
Die originale Protokolldatei wird nicht kopiert und an ihrem Platz belassen.
nocopytruncate
Protokolldateien werden nicht kopiert und verkleinert.
nocreate
Keine neuen Protokolldateien werden erzeugt.
nodelaycompress
Alte Protokolldateien werden sofort komprimiert.
nomail
Keine alten Protokolldateien werden per E-Mail versandt.
nomissingok
Wenn eine Protokolldatei nicht vorhanden ist, wird eine Fehlermeldung erzeugt.
noolddir
Alte Protokolldateien werden nicht in ein anderes Verzeichnis verlagert.
nosharedscripts
Die prerotate- und postrotate-Skripte werden für jedes rotierte Skript gestartet.
notifempty
Leere Protokolldateien werden nicht rotiert.
olddir verzeichnis
Angabe des Verzeichnisses, in das alte Protokolldateien verschoben werden
postrotate/ endscript
Nach der Rotation wird das Skript gestartet, das in den Zeilen zwischen postrotate und endscript hinterlegt ist.
prerotate/ endscript
Vor der Rotation wird das Skript gestartet, das in den Zeilen zwischen prerotate und endscript hinterlegt ist.
rotate anzahl
Festlegen der Anzahl für die alten Protokolldateien, die archiviert werden sollen
size größe
Wenn die Protokolldatei die angegebene Größe erreicht hat, wird sie rotiert (die Angabe k steht für Kbyte und m für Mbyte).
sharedscripts
Normalerweise werden prescript- und postscript-Skripte für jede rotierte Protokolldatei gestartet. Wird diese Option aber verwendet, werden die Skripte nur einmal aufgerufen.
start zahl
Angabe der Zahl, die als Basisangabe für die Rotation verwendet wird. Wenn Sie zum Beispiel 0 angeben, werden die Protokolldateien beginnend mit einer Namenserweiterung .0 erzeugt.
tabooext [+] liste
Die aktuelle Tabu-Erweiterungsliste wird verändert. Zu Beginn besteht diese Liste aus .rpmorig, rpmsave, .v, .swp, .rpmnew und ~.
uncompresscmd befehl
Definiert, mit welchem Befehl Protokolldateien dekomprimiert werden sollen. Standard ist der Befehl gunzip.
weekly
Die Protokolldateien rotieren wöchentlich.
Tab. 13.20: Die Befehle für Konfigurationsdateien von logrotate (Forts.)
618
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Der Befehl dmesg Dieser Befehl zeigt den Kernel-Puffer mit den letzten syslog-Einträgen ausführlich an und gibt Meldungen aus, die beim Starten des Systems und während des Systembetriebs auftreten, wobei der Kernel-Puffer ständig aktualisiert wird. Die Syntax des Befehls lautet: # dmesg [-option]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Löscht die Inhalte des Ring-Puffers nach der Ausgabe
-s bufgröße
Verwendet einen Puffer der angegebenen Größe, um den Ring-Puffer des Kernels abzufragen. Standardmäßig beträgt dieser Wert 16392.
-n level
Definiert, auf welchem Level die Protokollierung von Nachrichten an die Konsole stattfinden soll. Das Level -n 1 verhindert zum Beispiel die Ausgabe fast aller Nachrichten mit Ausnahme von Panikmeldungen.
Tab. 13.21: Die Optionen des Befehls kbdrate
In diesem Beispiel findet eine Ausgabe des Kernel-Ring-Puffers ohne Optionen statt: # dmesg | more Linux version 2.4.21-99-default (
[email protected]) (gcc version 3.3.1 (SUSE Linux)) #1 Wed Sep 24 13:30:51 UTC 2003 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000000f7f0000 (usable) BIOS-e820: 000000000f7f0000 - 000000000f7f3000 (ACPI NVS) BIOS-e820: 000000000f7f3000 - 000000000f800000 (ACPI data) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) 765MB vmalloc/ioremap area available. 0MB HIGHMEM available. 247MB LOWMEM available. On node 0 totalpages: 63472 zone(0): 4096 pages. zone(1): 59376 pages. zone(2): 0 pages. ACPI: RSDP (v000 VIA601 ) @ 0x000f7530 ACPI: RSDT (v001 VIA601 MSI ACPI 16944.11825) @ 0x0f7f3000 ACPI: FADT (v001 VIA601 MSI ACPI 16944.11825) @ 0x0f7f3040 ACPI: MADT (v001 VIA601 AWRDACPI 16944.11825) @ 0x0f7f5e80 ACPI: DSDT (v001 VIA601 AWRDACPI 00000.04096) @ 0x00000000 --More--
619
Das System protokollieren
13.4.4
magnum
Protokolldateien
Jede von syslogd gesendete Nachricht wird als eine Zeile mit Angabe der Quelle, Datum und der Nachricht in eine Protokolldatei geschrieben. Sie können selbst Protokolldateien mit dem Befehl touch erzeugen und mit Meldungen des syslogd füllen oder bereits vorhandene Systemprotokolldateien verwenden. In der Regel erzeugt syslogd die Protokolldateien selbst, aber bei älteren Unixoder Linux-Systemen können Sie dies sicherheitshalber selbst durchführen.
Die Datei /var/log/messages oder /var/log/syslog Die Datei /var/log/messages ist die wichtigste Protokolldatei bei SUSE- und FedoraLinux-Systemen, während Debian die Datei /var/log/syslog verwendet, um die meisten Meldungen zu protokollieren.
Die Datei /var/log/wtmp In dieser Datei werden die Anmeldezeiten und die Anmeldedauer von Benutzern mit protokolliert. Der Befehl last verwendet für seine Ausgabe diese Datei.
Die Datei /var/run/utmp Diese Protokolldatei enthält die Informationen über alle aktuell angemeldeten Benutzer. Die Befehle finger, w und who greifen auf diese Datei zu.
Die Datei /var/log/lastlog Diese Datei speichert die Anmeldezeiten der Benutzer. Die Datei wird von den Befehlen lastlog und last verwendet. Die Dateien /var/log/wtmp, /var/run/utmp und /var/log/lastlog sind Binärdateien.
13.4.5
Grafische Anzeige von Protokolldateien mit YAST
Sie können sich die wichtigsten Protokolldateien mit Hilfe von YAST von SUSE Linux auch grafisch anzeigen lassen. Wählen Sie dazu SICHERHEIT UND BENUTZER - SYSTEMPROTOKOLL ANZEIGEN. Standardmäßig wird der Inhalt der Datei /var/ log/boot.msg, die alle Bootvorgänge aufzeichnet, angezeigt:
620
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
Bild 13.3: Inhalt der Datei /var/log/messages
Über das Pulldown-Menü können Sie zu anderen Protokolldateien wechseln:
Bild 13.4: Weitere über YAST einsehbare Protokolldateien
Sie können auch den Inhalt der Datei /var/log/boot.msg hier anzeigen. Alternativ können Sie diese Datei über SICHERHEIT UND BENUTZER - STARTPROTOKOLL ANZEIGEN direkt aufrufen:
621
Das System protokollieren
magnum
Bild 13.5: Startprotokoll mit YAST aufrufen
Das Startprotokoll wird auf dieselbe Weise wie die anderen Protokolle angezeigt:
Bild 13.6: Startprotokoll der Datei /var/log/boot.msg anzeigen
622
Kapitel 13 · Kernel-Verwaltung und Systemüberwachung
13.4.6
Grafische Anzeige von Protokolldateien mit KDE
Auch KDE besitzt ein Tool, um Protokolldateien einzusehen. Rufen Sie dazu das Menü SYSTEM - ÜBERWACHUNG - SYSTEMPROTOKOLL auf:
Bild 13.7: Protokolldateien mit KDE einsehen
Dieses Tool steht bei KDE 3.3.2 unter Debian GNU/Linux im Menü SYSTEM SYSTEM LOG und bei Fedora Core Linux mit KDE 3.4.0 standardmäßig nicht zur Verfügung. Zwischen den Protokolldateien können Sie über das Menü DATEI - ÖFFNEN wechseln:
Bild 13.8: Protokolldatei wechseln
623
14 Datensicherung und -wiederherstellung »Sicher ist, dass nichts sicher ist, selbst das nicht. « – Joachim Ringelnatz Dieses Kapitel ist dem Thema Datensicherung gewidmet. Sie erfahren die Gründe für eine Datensicherung und -wiederherstellung und lernen verschiedene Strategien zur Datensicherung kennen. Es wird außerdem erläutert, wie Sie komplette Dateisysteme mit Hilfe der Befehle dump und restore sichern und wiederherstellen können. Schließlich lernen Sie allgemeine Benutzerbefehle zum Archivieren und Komprimieren von Daten kennen, wie zum Beispiel tar und compress. Die Daten eines Unternehmens sind in der Regel wertvoller als die Rechneranlagen. Verloren gegangene Daten können nur mit großem Aufwand oder überhaupt nicht mehr wiederhergestellt werden, je nachdem, wie häufig und auf welche Art gesichert wurde. Daher ist es eine sehr wichtige Aufgabe des Systemadministrators, für regelmäßige Datensicherung zu sorgen und zu überprüfen, ob mit diesen Sicherungen eine Wiederherstellung jederzeit möglich ist. Daten gehen häufig durch versehentliches Löschen, Systemabstürze oder Programmfehler verloren. Dieser Art Datenverlust kann nur durch entsprechende Datensicherungen vorgebeugt werden. Je mehr Festplatten Sie in Ihren Rechneranlagen verwenden, desto höher wird die Wahrscheinlichkeit, dass ein Festplattencrash zu Datenverlust führt. Um dieses Risiko zu vermindern, werden RAID-Systeme (Redundant Array of Independent/Inexpensive Disks) eingesetzt, mit deren Hilfe die Datensicherheit erhöht werden kann. Das Thema Datensicherung kann ganze Bücher füllen. Es gibt unzählige Tools und Programme, die einzelne Dateien und Verzeichnisse oder ganze Partitionen oder Festplatten sichern können, bis hin zur Möglichkeit der Desaster Recovery oder Baremetal Recovery, die ganze Systeme wieder in den ursprünglichen Zustand herstellen können. Viele dieser Tools werden allerdings standardmäßig nicht mit einem Linux-System ausgeliefert oder sind sogar kommerzielle Produkte, die käuflich erworben werden müssen. Dieses Kapitel beschränkt sich auf die standardmäßigen Linux-Programme, die zur Datensicherung und -wiederherstellung verwendet werden können. Die folgenden Abschnitte sollen Ihnen einige Anregungen dazu geben, welche Sicherungsarten, welche Strategien und welche Medien es für Datensicherungen gibt. Sie sollten aber auch Überlegungen treffen, was Sie sichern wollen bzw. müssen. Wenn Sie Disaster Reovery- oder Baremetal Recovery-Tools einsetzen, reicht es in der Regel, die Daten zu sichern, die sich zum Beispiel in den Verzeichnissen /etc, /home, /var/lib usw. befinden.
625
Sicherungsarten und -strategien
magnum
14.1 Sicherungsarten und -strategien Wenn Sie eine Datensicherung oder ein so genanntes Backup erstellen, legen Sie Kopien von Dateien und Verzeichnissen für den Fall an, dass die ursprünglichen Daten verloren gehen oder beschädigt werden. Dazu verwendet man meist bewegliche Datenträger, wie zum Beispiel Magnetbänder. Datensicherungen zu erstellen ist eine der wichtigsten Aufgaben eines Systemadministrators, die eine gute Planung erfordert und regelmäßig durchgeführt werden muss. Folgende Gründe können eine Datensicherung erforderlich machen:
쮿
Daten werden versehentlich durch einen Benutzer oder Administrator gelöscht.
쮿
Durch einen Stromausfall kann zum Beispiel ein Systemabsturz erfolgen, wobei das Dateisystem beschädigt werden kann und Daten verloren gehen können.
쮿
Probleme oder Fehler der Hardware, wie zum Beispiel der Festplatte, können zu Datenverlusten führen.
쮿
Hacker oder Einbrecher, die im System mutwillig Daten zerstören.
쮿
Umweltkatastrophen, wie zum Beispiel ein Erdbeben, Überschwemmungen oder ein Brand.
Datensicherungen sollten vor allem wegen des zuletzt genannten Grunds außerhalb des Firmengeländes aufbewahrt werden. Auch Privatleute sollten bezüglich der Lagerung ihrer Datensicherungen ähnliche Überlegungen treffen.
14.1.1
Sicherungsarten
Datensicherungen lassen sich nach dem Umfang der gesicherten Daten unterscheiden, indem zum Beispiel nur Dateien und/oder Verzeichnisse oder aber ganze Partitionen, Dateisysteme oder die komplette Festplatte gesichert werden.
Logische und physikalische Sicherung Datensicherungen lassen sich nach logischer und physikalischer Sicherung unterscheiden:
쮿
626
Die physikalische Sicherung umfasst entweder die vollständige Sicherung einer Partition oder einer Festplatte: Bei vollständiger Sicherung einer Partition wird das Dateisystem auf einem Datenträger gespeichert, wodurch die komplette Struktur des Dateisystems gesichert wird, also nicht nur die Dateiinhalte, sondern auch die Pfade, die Inodes, die Betriebssystemkonfiguration usw. Diese Methode ist sehr schnell, da das Dateisystem während der Sicherung sequentiell gelesen wird. Die Rücksicherung kann allerdings nur auf einer identischen Partition und nur komplett erfolgen. Das bedeutet, einzelne Dateien können nicht separat wiederhergestellt werden. Eine physikalische Sicherung eines Dateisystems auf CD-ROM oder DVD kann allerdings loopback gemountet werden, so dass ein Zugriff auf einzelne Dateien möglich ist. Bei der vollständigen Sicherung einer Festplatte wird eine komplette physikalische Kopie erstellt, einschließlich aller Systemdateien und Bootblöcke. Diese Sicherung kann als kompletter Ersatz einer Festplatte dienen, wobei auf eine identische Festplatte zurückgesichert werden muss.
Kapitel 14 · Datensicherung und -wiederherstellung
쮿
Die logische Sicherung umfasst die vollständige Sicherung von Dateien oder deren inkrementelle Sicherung: Wenn alle Dateien und Verzeichnisse eines Dateisystems gesichert werden, spricht man von einer Vollsicherung, wobei die physikalische Struktur des Dateisystems nicht berücksichtigt wird, denn jede Datei und jedes Verzeichnis wird einzeln gesichert. Auf diese Weise ist aber eine Wiederherstellung einzelner Dateien ohne großen Aufwand möglich. Die Basis für eine inkrementelle Sicherung bildet eine in bestimmten Zeitabständen durchgeführte Vollsicherung eines Systems. Danach werden nur noch die Daten gesichert, die sich seit der letzten Sicherung verändert haben. Diese Art der Datensicherung ist schneller und benötigt weniger Speichermedien. Der Zeitaufwand bei der Wiederherstellung von Daten wächst allerdings, da zuerst die Vollsicherung und im Anschluss alle inkrementellen Sicherungen wieder eingespielt werden müssen. Eine Ausnahme bildet hier eine Datensicherung auf Festplatte, bei der mit Hard Links gearbeitet wird, zum Beispiel mit dem Tool backuppc.
Unterscheidung der Sicherung nach Zweck und Umfang Datensicherungen können auch nach Umfang und Zweck unterschieden werden:
쮿
Vollsicherung
쮿
Inkrementelle Sicherung
쮿
Selektive Sicherung
쮿
Differentielle Sicherung
Die Vollsicherung bzw. das Vollbackup wird auch Level-0-Backup genannt und sichert den kompletten Inhalt einer Festplatte oder Partition oder bestimmter Verzeichnisse. Auch einzelne Dateien können einfach wiederhergestellt werden, wobei der Nachteil im großen Verbrauch an Speichermedien und im hohen Zeitaufwand besteht. Eine regelmäßige Vollsicherung muss jedoch in jedem System durchgeführt werden. Inkrementelle Sicherungen verwenden die Level >= 1 und sichern nur die Daten, die seit der letzten Voll- oder inkrementellen Sicherung verändert oder neu erzeugt wurden. Bei einer Wiederherstellung der Daten müssen zuerst die Vollsicherung und dann in der richtigen Reihenfolge alle nachfolgenden inkrementellen Sicherungen zurückgespielt werden. Bei einer selektiven Sicherung werden nicht alle Dateien gesichert, sondern nur die, die für den Betrieb des Systems oder für einen bestimmten Benutzer von Bedeutung sind. Differentielle Sicherungen sichern alle seit der letzten Vollsicherung veränderten oder erzeugten Daten, wobei bei einer Rücksicherung nur die letzte Vollsicherung und die letzte differentielle Sicherung notwendig sind.
14.1.2
Sicherungsstrategien
Ein möglicher Datenverlust ist umso kleiner, je öfter Sie Ihre Daten gesichert haben. Da Datensicherungen aber einen Zeitaufwand und Systemressourcen kosten, müssen Sie eine Sicherungsstrategie finden, die ausreichend Sicherheit, aber relativ wenig Aufwand bedeutet. Am einfachsten ist es, alle Dateien eines Systems auf ein oder mehrere Medien komplett zu sichern. Dies ist aber in der Regel auch mit dem größten Aufwand
627
Sicherungsarten und -strategien
magnum
verbunden und häufig reicht es aus, nur die seit der letzten Sicherung veränderten Dateien zu sichern, das heißt, eine so genannte inkrementelle Sicherung durchzuführen. Unix und Linux können mit Hilfe von Backupleveln komplette und inkrementelle Sicherungen unterscheiden, wobei eine Komplettsicherung in der Regel das Backuplevel 0 verwendet. Höhere Backuplevel sichern dagegen immer alle Dateien, die sich seit dem letzten nächstniedrigeren Backuplevel geändert haben. Bei einer Level-2-Sicherung werden also alle Dateien gesichert, die sich seit der letzten Level-1-Sicherung geändert haben. Existiert keine Level-1-Sicherung, werden alle Dateien seit dem letzten Level-0-Backup gesichert. Die Kombination von Backuplevel-Sicherungen ermöglicht verschiedene Datensicherungsstrategien, um mit möglichst wenig Aufwand eine höchstmögliche Sicherheit zu erreichen. Sie sollten Ihre Backupstrategie unbedingt vor der ersten Datensicherung genau planen und dabei die aufzuwendende Zeit sowohl für die durchzuführenden Datensicherungen als auch für die eventuellen Rücksicherungen berücksichtigen. Auch die Menge der zu verwendenden Sicherungsmedien muss vorher fest- und bereitgestellt werden. Sie sollten Ihre Datensicherungen immer zu Zeiten durchführen, in denen wenig oder am besten keine Benutzer am System arbeiten. Testen Sie auch unbedingt regelmäßig, ob die Sicherungsmedien korrekt beschrieben wurden und eine Rücksicherung möglich ist. Wenn Sie die gesicherten Daten wieder ins System einspielen, müssen Sie dieselbe Reihenfolge wie beim Erstellen der Sicherungen verwenden. Das heißt, Sie beginnen mit der Vollsicherung und kopieren dann nacheinander die Level-1-, Level-2Sicherungen usw. zurück. Damit wird das System wieder in den Zustand versetzt, in dem es sich vor dem Datenverlust befand. Allerdings befinden sich jetzt auch die in der Zwischenzeit von Ihnen und Ihren Benutzern gelöschten Dateien wieder im System. Nachfolgend werden zwei Beispiele für eine Sicherungsstrategie unter der Annahme beschrieben, dass eine Sicherung auf ein Magnetband passt. Dabei werden zwei Magnetbandsätze zu je sechs Bändern verwendet, so dass im Fehlerfall in der aktuellen Sicherungswoche auch noch die Bänder der Vorwoche zur Verfügung stehen.
Strategie mit geringerem Zeitaufwand Im ersten Beispiel erfolgt jeden Freitag eine differentielle Sicherung (Level 1) auf die monatliche Vollsicherung (Level 0). Diese bildet die Basis für die inkrementellen Sicherungen (Level 2–5) der folgenden Woche, wobei jeden Tag nur die seit dem Vortag veränderten Daten gesichert werden. Diese Strategie lässt sich mit den zwei Datenträgersätzen so durchführen, dass nur alle vier Wochen eine komplette Vollsicherung notwendig wird. Jeden Freitag erfolgt eine differentielle Sicherung auf die Vollsicherung (Level 1) und an den übrigen Wochentagen werden inkrementelle Sicherungen der Level 2–5 durchgeführt:
628
Kapitel 14 · Datensicherung und -wiederherstellung
Freitag Vormonat
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Level 0
Level 2
Level 3
Level 4
Level 5
Level 1
Level 2
Level 3
Level 4
Level 5
Level 1
Level 2
Level 3
Level 4
Level 5
Level 1
Level 2
Level 3
Level 4
Level 5
Level 1
Tab. 14.1: Sicherungsstrategie mit geringerem Zeitaufwand
Diese Methode hat folgende Vorteile:
쮿
Bei inkrementellen Sicherungen wird Zeit gespart.
쮿
Bei großen Datenmengen sind weniger Datenträger erforderlich.
Die Nachteile dieser Methode sind:
쮿
Die Rücksicherung erfordert viel Zeit, da eine große Menge von Bändern zurückzusichern ist. Am Freitag der zweiten Woche sind sechs Bänder zur Wiederherstellung notwendig.
쮿
Die Datenwiederherstellung ist sehr umständlich, was zu Fehlern führen kann.
Alternativ könnte auch jeden Samstag eine Vollsicherung durchgeführt werden.
Strategie mit geringerem Rücksicherungsaufwand Im nächsten Beispiel erfolgt jeden Tag eine differentielle Sicherung auf die monatliche Vollsicherung in der ersten Woche. In den folgenden drei Wochen wird täglich eine inkrementelle Sicherung auf die differentielle Sicherung des vorangegangenen Freitags gestartet. Diese Strategie kann ebenfalls mit zwei Datenträgersätzen so durchgeführt werden, dass nur alle vier Wochen eine komplette Vollsicherung notwendig ist. Dazu erfolgt eine Vollsicherung (Level 0) pro Monat und jeden Freitag eine Level-1Sicherung auf die Vollsicherung oder die inkrementelle Sicherung des vorangegangenen Freitags. An den übrigen Wochentagen erfolgen Level-2-Sicherungen auf die Vollsicherung oder die inkrementelle Sicherung des vorangegangenen Freitags. Freitag Vormonat
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Level 0
Level 2
Level 2
Level 2
Level 2
Level 1
Level 2
Level 2
Level 2
Level 2
Level 1
Level 2
Level 2
Level 2
Level 2
Level 1
Level 2
Level 2
Level 2
Level 2
Level 1
Tab. 14.2: Sicherungsstrategie mit geringerem Rücksicherungsaufwand
629
Medien für Datensicherungen
magnum
Diese Methode hat folgende Vorteile:
쮿
Bei einer eventuellen Rücksicherung sind weniger Bänder erforderlich, wodurch Zeit gespart wird.
쮿
Die Datenwiederherstellung ist relativ einfach.
Der Nachteil dieser Methode ist:
쮿
Das tägliche Sicherungsvolumen vergrößert sich pro Tag.
Neben diesen beiden Beispielen gibt es unzählige weitere Backupstrategien, wie zum Beispiel die Großvater-Vater-Sohn-Methode oder die Methode »Türme von Hanoi«, deren Erläuterung den Rahmen des Buchs sprengen würde.
14.2 Medien für Datensicherungen Es gibt sehr viele verschiedene Medien für Datensicherungen, die sich im Preis, in der Kapazität und in der Zugriffsgeschwindigkeit oder Datenübertragungsrate unterscheiden. Die Leistungsfähigkeit dieser Medien wird ständig verbessert. Zu den wichtigsten Datensicherungsmedien gehören:
쮿
Diskettenlaufwerke, die nur für sehr kleine Datenmengen verwendet werden können.
쮿
Schnelle Festplatten, deren Einsatz für Datensicherungszwecke allerdings relativ gesehen höhere Kosten pro Speichereinheit als bei anderen Speichermedien verursacht. Es ist aber auch möglich, nur die Festplatten mit den Benutzerdaten zu spiegeln oder regelmäßig komplette Kopien zu ziehen.
쮿
Wechselplatten, zum Beispiel »Jaz-« oder »Zip-Drives«, waren als Backupmedium recht beliebt. Die Vorteile dieser Wechselplatten liegen in ihrer hohen Sicherungsgeschwindigkeit und der möglichen getrennten räumlichen Aufbewahrung.
쮿
Bandlaufwerke oder so genannte Streamer oder Tape Devices.
Weitere Backupmedien sind:
630
쮿
MO-Datenträger (magnetooptische Datenträger), die aufgrund ihrer relativ hohen Kosten seltener eingesetzt werden, wobei der Zugriff darauf ähnlich wie bei Wechselplatten erfolgt. Der große Vorteil von MO-Disks ist die lange Haltbarkeit der gespeicherten Daten.
쮿
Wiederbeschreibbare oder einmal beschreibbare CD-ROMs können auch für Datensicherungszwecke verwendet werden.
쮿
WORM-Geräte (write-once, read many) werden eher zu Archivierungszwecken verwendet, da sie nur einmal beschrieben, aber beliebig oft gelesen werden können.
쮿
DVD-Geräte vereinen sowohl relativ schnelle Zugriffszeiten als auch hohe Speicherkapazitäten.
Kapitel 14 · Datensicherung und -wiederherstellung
14.3 Tools zur Datensicherung Es gibt mehrere Tools, um Dateien unter Linux zu sichern. Der Befehl dump kann ganze Dateisysteme sichern und der Befehl restore diese wieder komplett herstellen, während die anderen Tools zur Archivierung und Komprimierung von Dateien verwendet werden können. Tool
Sicherungsart Differenzsicherung
Sicherungsumfang
dump/restore
logisch
eingebaute Funktion
komplette ext2-Dateisysteme
xfsdump/xfsrestore
logisch
eingebaute Funktion
komplette xfs-Dateisysteme
tar
logisch
indirekt möglich
beliebige Dateien und Verzeichnisse
cpio
logisch
ja
beliebige Dateien und Verzeichnisse
dd
physikalisch
nein
eine Datei oder ein Gerät
gzip/gunzip
logisch
nein
beliebige Dateien und Verzeichnisse
gzexe
logisch
nein
beliebige Dateien und Verzeichnisse
zip/unzip
logisch
nein
beliebige Dateien und Verzeichnisse
Tab. 14.3: Tools zur Datensicherung
14.3.1
Die Befehle dump und restore
Die Befehle dump und restore verwenden den internen Aufbau des ext2-Dateisystems und greifen direkt auf die Inode-Tabellen zu, um zu entscheiden, welche Dateien gesichert werden. Allerdings können diese beiden Befehle im Moment nur den Dateisystemtyp ext2 sichern. Für das Dateisystem xfs gibt es die Tools xfsdump und xfsrestore.
Der Befehl dump Wenn Sie ext2-Dateisysteme in der Datei /etc/fstab entsprechend markieren, werden beim Aufruf des Befehls dump nur diese Dateisysteme berücksichtigt. Standardmäßig verwendet der Befehl das erste Bandlaufwerk /dev/st0 für eine Datensicherung, was aber mit der Option -f gerät überschrieben werden kann. Über das Backuplevel (0–9) steuern Sie, was gesichert werden soll. Der Befehl hinterlegt die letzten Sicherungszeiten eines Levels in der Datei /etc/dumpdates (wenn Sie die Option -u verwenden) und entscheidet mit deren Hilfe, ob ein erneutes Backup dieses Levels durchgeführt werden muss. Die Syntax des Befehls lautet: # dump -option(en) [argument(e)] dateisystem/datei(en)
631
magnum
Tools zur Datensicherung
Zu den wichtigsten Optionen des Befehls gehören: Option
Beschreibung
-0, 1,..., 9
Backuplevel: Level 0 ist eine Vollsicherung, bei der alle Dateien gesichert werden.
-a
Die Sicherung wird aufs Band geschrieben, bis das Ende des Mediums gemeldet wird.
-A archivdatei
Archiviert eine Inhaltsliste eines Dumps in die angegebene Datei, die vom Befehl verwendet werden kann, um zu entscheiden, ob eine wiederherzustellende Datei sich in einer bestimmten Dump-Datei befindet.
-f [[user@]host:]
Der Befehl archiviert auf oder in das angegebene gerät (Band oder Datei), standardmäßig wird /dev/st0 verwendet. Es ist mit user@host eine Umleitung auf einen Remote-Rechner möglich, zum Beispiel -f root@sicherung:/dev/nst2.
-Q datei
Aktiviert die Quick-File-Access-Unterstützung, bei der die Bandpositionen für jeden Inode in die Datei gespeichert werden, die vom Befehl restore verwendet wird (wenn dieser mit dem Parameter -Q und dem Dateinamen aufgerufen wird). Diese Bandpositionen werden verwendet, um das Band direkt auf die Datei zu positionieren, die restore im Moment bearbeitet.
-u
Die Sicherung mit dem entsprechenden Level und Zeitpunkt wird in /etc/dumpdates hinterlegt.
-T datum
Verwendet das angegebene Datum als Startzeit des Dumps anstelle der Zeit, die durch ein Überprüfen der Datei /etc/dumpdates ermittelt wird.
-W
Ausgabe einer Liste mit Hilfe der Dateien /etc/fstab und /etc/dumpdates, welche Dateisysteme zu welchem Zeitpunkt mit welchem Level gesichert wurden und ob eine erneute Sicherung notwendig ist.
gerät
Tab. 14.4: Optionen des Befehls dump
In diesem Beispiel wird eine Vollsicherung des Dateisystems führt: # dump -0uaf /dev/nst1 /dev/hda3 DUMP: Date of this level 0 dump: Wed Aug 17 22:15:31 2005 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/hda3 to /dev/nst1 DUMP: Label: none DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 227953 tape blocks. DUMP: Volume 1 started at: Wed Aug 17 22:15:31 2005 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] DUMP: 43.19% done, finished in 0:06 DUMP: 69.53% done, finished in 0:03 DUMP: DUMP: 227953 tape blocks on 1 volumes(s) DUMP: finished in 256 seconds, throughput 352 KBytes/sec DUMP: Volume 1 completed at: Wed Aug 17 22:25:17 2005 DUMP: Volume 1 took 0:15:02 DUMP: Volume 1 transfer rate: 352 KB/s DUMP: level 0 dump on Wed Aug 7 21:05:30 2005 DUMP: DUMP: Date of this level 0 dump: Wed Aug 17 22:15:31 2005
632
/dev/hda3
durchge-
Kapitel 14 · Datensicherung und -wiederherstellung
DUMP: DUMP: DUMP: DUMP:
DUMP: Date this dump completed: Wed Aug 17 22:25:17 2005 DUMP: Average transfer rate: 352 KB/s Closing /dev/nst1 DUMP IS DONE
Der Befehl berechnet den Gesamtumfang und meldet regelmäßig, wie weit die Sicherung fortgeschritten ist und wie viel Zeit sie noch benötigt. Wenn notwendig, erfolgt die Aufforderung, das Band zu wechseln, und wenn die Sicherung erfolgreich beendet wurde, wird dies in der Datei /etc/dumpdates festgehalten. Die Anzeige der Informationen in der Datei möglich:
/etc/dumpdates
ist folgendermaßen
# dump -W Last dump(s) done (Dump '>' file systems): /dev/hda3 ( ) Last dump: Level 0, Date Wed Aug 17 22:15
Die zu sichernden Dateisysteme sollten, wenn möglich, vorher ungemountet und das root-Dateisystem im Single-User-Modus gesichert werden.
Der Befehl restore Eine mit dem Befehl dump durchgeführte Sicherung kann mit dem Befehl restore wieder zurückgespielt werden. Die zurückgesicherten Dateien werden dabei relativ zu dem Verzeichnis wieder angelegt, in dem der Befehl aufgerufen wurde. Die Syntax des Befehls lautet: # restore -option(en) [argument(e)] [datei(en)]
Die wichtigsten Optionen von restore sind: Option
Beschreibung
-f [[user@]host:]
Der Befehl liest das Archiv auf das angegebene gerät (Band oder Datei), standardmäßig wird /dev/st0 verwendet. Mit user@host ist eine Umleitung auf einen Remote-Rechner möglich, zum Beispiel -f root@sicherung:/dev/nst2.
-i
restore wird im interaktiven Modus gestartet.
-Q datei
Verwendet die angegebene Datei, um die Bandposition zu lesen, die mit Hilfe des Quick-File-Access-Modus gespeichert wurde
-r
Der vollständige Inhalt des Bands wird wieder eingespielt. Diese Option ist bei leeren und neu anzulegenden Dateisystemen sinnvoll.
-t
Zeigt alle auf einem Band vorhandenen Dateien an. Es ist auch möglich, einzelne Dateien oder Verzeichnisse anzugeben, die aufgelistet werden sollen.
-v
Ausführlicher Modus
-x
Die angegebenen Dateien und Verzeichnisse werden rekursiv extrahiert.
gerät
Tab. 14.5: Optionen des Befehls restore
633
Tools zur Datensicherung
magnum
In diesem Beispiel wird das Inhaltsverzeichnis einer Bandsicherung aufgelistet: # restore –tvf /dev/nst1 Verify tape and initialize maps Tape block size is 32 Dump date: Wed Aug 17 22:15:31 2005 Extract directories from tape Initialize symbol table. dir 2 . dir 2049 ./home/her dir 4097 ./home/her/kapitel1.txt leaf 2050 ./home/her/kapitel2.txt leaf 2051 ./home/her/kapitel3.txt leaf 2052 ./home/her/kapitel4.txt leaf 2053 ./home/her/kapitel5.txt leaf 2054 ./home/her/kapitel6.txt leaf 2055 ./home/her/abb2-3.tif leaf 2059 ./home/her/abb4-7.tif ...
Mit folgendem Befehl kann das Verzeichnis /home/her und sein Inhalt vom Bandlaufwerk /dev/nst1 in das Verzeichnis /backup extrahiert werden: # cd /backup # restore -xvf /dev/nst1 /home/her Verify tape and initialize maps Tape block size is 32 Dump date: Tue Wed Aug 17 22:15:31 2005 Dumped from: the epoch Level 0 dump of an unlisted file system on pc3:/dev/hda3 Label: none Extract directories from tape Initialize symbol table. Make node ./home Make node ./home/her Extract requested files You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 extract file ./home/her/kapitel1.txt extract file ./home/her/kapitel2.txt extract file ./home/her/kapitel3.txt extract file ./home/her/kapitel4.txt extract file ./home/her/kapitel5.txt extract file ./home/her/kapitel6.txt extract file ./home/her/abb2-3.tif extract file ./home/her/abb4-7.tif Add links Set Verzeichnis mode, owner, and times. set owner/mode for '.'? [yn] n
Es ist auch möglich, interaktiv eine einzelne Datei zu extrahieren: # restore -if /dev/nst1 restore > help Available commands are: ls [arg] - list Verzeichnis cd arg - change Verzeichnis pwd - print current Verzeichnis add [arg] - add `arg' to list of files to be extracted delete [arg] - delete from list of files to be extracted
634
Kapitel 14 · Datensicherung und -wiederherstellung
extract - extract requested files setmodes - set modes of requested directories quit - immediately exit program what - list dump header information verbose - toggle verbose flag (useful with ``ls'') help or `?' - print this list If no `arg' is supplied, the current Verzeichnis is used restore > ls .: home/her/ var/ test/ restore > cd home/her restore > ls ./home/her: kapitel1.txt kapitel2.txt kapitel3.txt kapitel4.txt kapitel5.txt kapitel6.txt abb2-3.tif abb4-7.tif restore > add kapitel6.txt restore > ls ./boot: kapitel1.txt kapitel2.txt kapitel3.txt kapitel4.txt kapitel5.txt *kapitel6.txt abb2-3.tif abb4-7.tif restore > verbose verbose mode on restore > extract Extract requested files You have not read any tapes yet. Unless you know which volume your file(s) are on you should start with the last volume and work towards the first. Specify next volume #: 1 extract file ./home/her/kapitel6.txt Add links Set Verzeichnis mode, owner, and times. set owner/mode for '.'? [yn] n restore > quit
14.3.2
Der Befehl mt
Dieser Befehl wird zur Steuerung des Bandgeräts verwendet, wobei allerdings nicht alle Bandgeräte den Befehl unterstützen. Die Syntax des Befehls lautet: $ mt [-f gerätename] befehl
Der Befehl kann unter anderem mit folgenden Kommandos verwendet werden: Kommando
Beschreibung
fsf zähler
Das Band wird auf das durch den angegebenen Zähler definierte EOF-Zeichen vorgespult und vor dem nachfolgenden Datensatz positioniert.
fsr zähler
Das Band wird auf die durch den angegebenen Zähler definierte Anzahl von Dateien vorgespult.
bsf zähler
Das Band wird auf das durch den angegebenen Zähler definierte EOF-Zeichen zurückgespult und vor der EOF-Marke positioniert.
nbsf zähler
Das Band wird auf das durch den angegebenen Zähler definierte EOF-Zeichen zurückgespult und vor dem Anfang der Datei positioniert.
bsr zähler
Das Band wird auf die durch den angegebenen Zähler definierte Anzahl von Dateien zurückgespult.
Tab. 14.6: Die Kommandos des Befehls mt
635
Tools zur Datensicherung
magnum
Kommando
Beschreibung
eof
Schreiben einer Endemarke an der aktuellen Position des Bands
eom
Das Band wird bis zum Ende des bereits verwendeten Bereichs vorgespult, so dass an dieser Stelle weitere Datensicherungen problemlos angehängt werden können.
erase
Das gesamte Band wird gelöscht.
offline
Das Magnetband wird zurückgespult und das Band ausgeworfen.
retension
Das Magnetband wird vor- und zurückgespult. Das ist sinnvoll bei Bändern, die lange gelagert wurden.
rewind
Das Magnetband wird zurückgespult.
status
Anzeige von Statusinformationen über das Bandgerät
Tab. 14.6: Die Kommandos des Befehls mt (Forts.)
Im folgenden Beispiel wird ein Magnetband, auf dem sich vier Datensicherungen befinden, auf die dritte Datensicherung positioniert, nachdem das Band nach der letzten Datensicherung zurückgespult wurde: $ mt –f /dev/nst1 fsf 2
14.3.3
Dateien archivieren und komprimieren
Der Befehl tar Dieser Befehl archiviert und extrahiert Dateien in eine oder aus einer Datei, die als tar-Archiv bezeichnet wird. Ein tar-Archiv kann ein Magnetband, aber auch eine beliebige Datei sein. Die Syntax des Befehls lautet: $ tar -option(en) archiv dateiname(n)
Als erste Option sollte der Befehl eine Aktion erhalten, zum Beispiel c für Erstellen eines Archivs, x für das Extrahieren des Archivs oder t für die Auflistung des Archivinhalts. Anschließend können Sie weitere Optionen verwenden, wie zum Beispiel v für eine ausführliche Ausgabe. Wenn Sie die Dateien nicht unbedingt an dieselbe Stelle zurückkopieren möchten, müssen Sie sie mit relativem Pfad archivieren. Dadurch kann der Befehl tar die Dateien in das aktuelle Verzeichnis zurückspielen. Dieses relative Sichern ist beim GNU-tar sogar Standard und muss bei Bedarf abgeschaltet werden.
636
Kapitel 14 · Datensicherung und -wiederherstellung
Die drei Hauptoptionen sind: Option
Beschreibung
-c
Erstellt ein neues tar-Archiv
-t oder --list
Gibt das Inhaltsverzeichnis der Archivdatei aus
-x oder --extract oder --get
Extrahiert die Dateien der Archivdatei
Tab. 14.7: Die Hauptoptionen des Befehls tar
Der Befehl kennt folgende weitere Optionen: Option
Beschreibung
--atime-preserve
Verändert die Zugriffszeit bei gesicherten Dateien nicht. Das ist insbesondere bei Datensicherungen wichtig.
-A oder --catenate oder --concatenate
Hängt Dateien an das Archiv an
-b oder --block-size=n
Definiert den Blockungsfaktor in n * 512-Byte-Blöcken für das Schreiben auf blockorientierte Magnetträger. Standard ist 20.
-B oder --read-full-blocks
Option, um Pipes des BSD-Systems 4.2 zu lesen
--block-compress
Blockt die Ausgabe eines Komprimierungsprogramms für Magnetbänder
-C dir oder --directory=dir
Wechselt in das angegebene Verzeichnis
--checkpoint
Ausgabe von Verzeichnisnamen beim Lesen des Archivs
-d oder --diff oder --compare
Sucht Unterschiede zwischen dem Archiv und dem Dateisystem
--delete
Löscht aus dem Archiv (nicht möglich bei Magnetbändern)
--exclude datei
Schließt die Datei datei aus
-f oder --file=[hostname:]F
Verwendet die Archivdatei oder das Gerät F (Standard ist /dev/rmt0)
--force-local
Die Archivdatei ist lokal, auch wenn sie einen Doppelpunkt enthält.
-F oder --info-script=F oder --new-volume-script=F
Startet ein Skript am Ende jedes Magnetbands (setzt die Option -M voraus)
-G oder --incremental
Erstellt oder zeigt an oder extrahiert ein inkrementelles Backup im alten GNU-Format
-g oder --listed-incremental=F
Erstellt oder zeigt an oder extrahiert ein inkrementelles Backup im neuen GNU-Format
-h oder --dereference
Sichert keine symbolischen Links, sondern die Dateien, auf die diese zeigen
Tab. 14.8: Die Optionen des Befehls tar
637
magnum
Tools zur Datensicherung
Option
Beschreibung
-i oder --ignore-zeros
Blöcke mit Nullen werden im Archiv ignoriert (sie bedeuten normalerweise EOF).
-j oder --bzip2 oder --bunzip2
Filtert das Archiv mit dem Befehl bzip2
--ignore-failed-read
Endet nicht mit einem Returncode ungleich null bei nicht lesbaren Dateien
-k oder --keep-old-files
Bewahrt vorhandene Dateien auf und überschreibt diese nicht mit Dateien aus dem Archiv
-K oder --starting-file=F
Startet mit Datei F im Archiv
-l oder --one-file-system
Bleibt im lokalen Dateisystem beim Erzeugen eines Archivs
-L oder --tape-length=n
Fordert einen Bandwechsel an, nachdem n * 1.024 Byte geschrieben wurden
-m oder --modification-time
Die geänderte Zeit der Dateien wird nicht extrahiert.
-M oder --multi-volume
Erzeugt oder zeigt an oder extrahiert Archive auf mehreren Datenträgern
-N oder --after-date= datum oder --newer=datum
Sichert nur Dateien, deren Datum aktueller ist als datum
-o oder --old-archive oder -- Schreibt ein Archiv im V7-Format anstatt im ANSI-Format portability -O oder --to-stdout
Extrahiert Dateien in die Standardausgabe
-p oder --same-permissions oder --preserve-permissions
Extrahiert alle Informationen, die zum Zugriffsschutz gehören
-P oder --absolute-paths
Entfernt führende Schrägstriche »/« nicht von Dateinamen
--preserve
Entspricht den Optionen -p -s
-r oder --append
Speichert neuere Dateien am Ende der Archivdatei
-R oder --record-number
Zeigt die Datensatznummer innerhalb des Archivs bei jeder Meldung an
--remove-files
Löscht Dateien, nachdem diese dem Archiv hinzugefügt wurden
-P oder --same-order oder --preserve-order
Die zu extrahierende Dateiliste wird sortiert, um mit dem Archiv übereinzustimmen.
--same-owner
Erzeugt die extrahierten Dateien mit demselben Besitzer
-S oder --sparse
Behandelt zerstreute Dateien auf effiziente Weise
-T oder --files-from=F
Bezieht die Namen der zu extrahierenden oder zu erzeugenden Dateien aus der Datei F
Tab. 14.8: Die Optionen des Befehls tar (Forts.)
638
Kapitel 14 · Datensicherung und -wiederherstellung
Option
Beschreibung
--totals
Gibt die Summe der geschriebenen Bytes zusammen mit der Option --create aus
-u oder --update
Die angegebenen Dateien werden nur dann an das Ende der Archivdatei angehängt, wenn sie aktueller als die im Archiv vorhandenen Kopien sind.
--use-compress-program=prog
Filtert das Archiv mit Hilfe des Komprimierungsprogramms prog
-v oder --verbose
Ausführliche Ausgabe bei der Ausführung
-V oder --label=name
Erzeugt ein Archiv mit dem Namen name
-w oder --interactive oder -- Jede Aktion muss bestätigt werden. confirmation -W oder --verify
Versucht das Archiv nach dem Erstellen auf Übereinstimmung mit den Quelldateien zu überprüfen
-X oder --exclude-from=datei
Schließt die in der Datei datei aufgeführten Dateien aus
-z oder --gzip oder --gunzip
Filtert das Archiv mit Hilfe des Befehls gzip
-Z oder --compress oder --uncompress
Filtert das Archiv mit Hilfe des Befehls compress
-[0-7][lmh]
Definiert das Bandgerät einschließlich dessen Speicherdichte. Dabei bedeutet l = low, m = medium, h = high. Das 3. Bandgerät am System mit einer hohen Speicherdichte wird zum Beispiel mit 3h bezeichnet.
Tab. 14.8: Die Optionen des Befehls tar (Forts.)
Im nachfolgenden Beispiel wird vom Verzeichnis projekt1 eine Archivdatei im ausführlichen Meldemodus erzeugt: $ tar cvf archiv.tar . ./projekt1 ./projekt1/bericht1 ./projekt1/besprechung ./projekt1/protokoll ...
Sichern Sie Ihre Dateien und Unterverzeichnisse immer relativ zum aktuellen Verzeichnis, denn wenn Sie mit absoluten Pfaden sichern, müssen auf dem Zielsystem ebenfalls alle übergeordneten Verzeichnisse bereits vorhanden sein, um die Dateien wieder auspacken zu können. Der folgende Befehl extrahiert alle Dateien aus einem Magnetbandarchiv archiv.tar und zeigt diese an: $ tar vxf archiv.tar
639
magnum
Tools zur Datensicherung
Standardmäßig schreibt der Befehl in die Standardausgabe stdout. Sie können den Befehl tar auch dazu verwenden, Dateien auf einem Magnetband zu sichern, zum Beispiel auf das Bandgerät /dev/nst0: $ tar cvf /dev/nst0 bericht1 bericht2 bericht3 ./bericht1 ./bericht2 ./bericht3
Der Befehl cpio Mit Hilfe des Befehls cpio (copy in/copy out) bearbeiten Sie Dateiarchive, wobei die Dateizugriffsrechte beibehalten werden. Der Befehl archiviert oder extrahiert Dateien auf Magnetbänder oder in eine Archivdatei. Der Befehl bietet einige Vorteile gegenüber anderen Befehlen, wie zum Beispiel dem Befehl tar:
쮿
Die Daten werden effizienter auf das Magnetband als mit Hilfe des Befehls tar gepackt.
쮿
Beim Wiederherstellen der Daten werden eventuell beschädigte Stellen des Magnetbands übersprungen.
쮿
Es können Dateien mit verschiedenen Header-Formaten erzeugt werden, um die Portabilität zwischen verschiedenen Systemtypen zu ermöglichen.
쮿
Er kann mit Dateien auf Remote-Systemen umgehen, das ist sinnvoll beim Kopieren/Sichern von einem System über das Netzwerk auf ein anderes System.
Die Syntax des Befehls lautet: $ cpio -option(en) dateiname(n)
Die drei Hauptoptionen sind: Option
Beschreibung
-i [-option(en)] [muster] oder --extract
Extrahieren der Archivdatei vom Bandgerät oder aus der Archivdatei und Beibehalten der Dateizugriffsrechte. Wenn der Benutzer root ist, werden auch der Besitzer und die Gruppe der Datei beibehalten. Die Dateien können mit Hilfe von angegebenen Mustern selektiert werden.
-o [-option(en)] oder --create
Erzeugen einer Archivdatei, indem eine Liste von Dateien oder Pfadnamen auf das Bandgerät oder in die Datei kopiert werden
-p [-option(en)] oder --pass-through
Lesen einer Liste von Pfadnamen und Kopieren der entsprechenden Dateien und Verzeichnisse an die angegebene Stelle
Tab. 14.9: Die Hauptoptionen des Befehls cpio
Sie müssen immer eine der Optionen -o, cpio verwenden.
640
-i oder -p angeben,
wenn Sie den Befehl
Kapitel 14 · Datensicherung und -wiederherstellung
Der Befehl kennt folgende Optionen: Option
Beschreibung
-0 oder --null
In den Modi copy-out und copy-pass wird eine Dateinamensliste gelesen, die durch Null-Zeichen anstelle von Zeilenschaltungen beendet wird. Auf diese Weise können Dateien archiviert werden, deren Namen Zeilenschaltungen enthalten.
-a oder --reset-access-time
Zurücksetzen der Zugriffszeiten für kopierte Dateien
-A oder --append
Hinzufügen von Dateien zu einer Archivdatei. Nur im Modus copy-out möglich. Das Archiv muss eine Datei sein, die mit der Option -O oder -F angegeben wird.
-b oder --swap
Im Modus copy-in ist es möglich, mit dieser Option 32-Bit-Integerzahlen zwischen Rechnern mit Big-Endian- und Little-Endian-Systemen zu konvertieren.
-B
Angabe des Blockungsfaktors in 5.120 Byte pro Aufzeichnung für die Ein- und Ausgabe. Der Standardblockungsfaktor beträgt 512 Byte.
--block-size=n
Angabe des Blockungsfaktors in einer Größe von n * 512 Byte
-c
Entspricht der Option -H newc und verwendet das neue SVR4portable Format. Das alte portable ASCII-Format kann mit der Option -H odc erhalten werden.
-C größe oder --io-size=größe
Angabe der Größe des Zwischenspeichers für die Ein- und Ausgabe mit dem Wert größe in Bytes
-d oder --make-directories
Anlegen von Verzeichnissen, wenn notwendig
-E datei oder --pattern-file=datei
Angabe eines Dateinamens, aus dem die Liste der zu extrahierenden Dateien gelesen wird. Diese Liste kann auch Muster enthalten, die auf die Dateinamen hinweisen. Die Option ist für den Modus copy-in möglich.
-f oder --nonmatching
Nur Dateien, die nicht mit dem angegebenen Muster übereinstimmen, werden kopiert.
-F oder --file=archiv
Angabe des Archivnamens, der anstelle der Standardein- oder -ausgabe verwendet wird
--force-local
Der Archivname der Datei wird als lokale Datei behandelt, auch wenn die Datei einen Doppelpunkt enthält, was normalerweise auf einen Remote-Hostnamen verweist. Diese Option kann gemeinsam mit den Optionen -F, -I oder -O verwendet werden.
Tab. 14.10: Die Optionen des Befehls cpio
641
magnum
Tools zur Datensicherung
Option
Beschreibung
-H format oder --format=format
Das Archivformat format wird verwendet. Die gültigen Formate sind (Standard im Modus copy-in ist, das Archivformat automatisch herauszufinden, im Modus copy-out ist es das Format bin): bin odc newc crc tar ustar hpbin hpodc
das Binärformat, das nicht angegeben werden muss das alte POSIX.1-portable Format das neue SVR4-portable Format, das Dateisysteme mit mehr als 65.536 Inodes unterstützt das neue SVR4-portable Format mit einer zusätzlichen Prüfsumme das alte tar-Format das POSIX.1-tar-Format. Es erkennt auch GNU-tarArchive, die zwar ähnlich, aber nicht identisch sind. das Binärformat, das vom HP-UX-Befehl cpio verwendet wird das portable Format, das vom HP-UX-Befehl cpio verwendet wird
-I datei
Lesen des Inhalts einer Archiv- oder Gerätedatei (Bandarchiv) als Eingabearchiv
-k
Wird ignoriert; ist nur aus Kompatibilitätsgründen mit anderen Versionen des Befehls cpio vorhanden
-l oder --link
Erzeugen von symbolischen Links anstelle der von Kopien
-L oder --dereference
Auflösen der symbolischen Links und Kopieren der Originaldateien
-m oder --preservemodification-time
Beibehalten der Änderungszeiten von Dateien
-M nachricht oder --message=nachricht
Definiert eine Nachricht für den Medienwechsel
-n oder --numeric-uid-gid
Anzeige der numerischen UID und GID anstelle der Benutzer- und Gruppennamen beim Auflisten des Inhaltsverzeichnisses
--no-absolute-filenames
Im Modus copy-in werden alle Dateien relativ zum aktuellen Verzeichnis erzeugt, auch wenn sie eine absolute Pfadangabe besitzen.
--no-preserve-owner
Im Modus copy-in wird der Besitzer der Dateien nicht verändert, sondern dem Benutzer angepasst, der die Dateien extrahiert.
-O datei
Umlenken der Ausgabe von cpio in die angegebene Datei oder das angegebene Gerät
--only-verify-crc
Wenn ein Archiv im CRC-Format im Modus copy-in gelesen wird, werden nur die CRCs jeder Datei im Archiv geprüft und die Dateien nicht tatsächlich extrahiert.
--quiet
Die Anzahl der kopierten Blöcke wird nicht ausgegeben.
-r oder --rename
Interaktives Umbenennen von Dateien durch den Benutzer möglich
-R [benutzer][:.Z] [gruppe] oder --owner [benutzer][:.][gruppe]
Erneutes Zuweisen des Besitzers und der Gruppe für jede Datei in den Modi copy-out und copy-pass. Nur root darf diese Option ausführen.
Tab. 14.10: Die Optionen des Befehls cpio (Forts.)
642
Kapitel 14 · Datensicherung und -wiederherstellung
Option
Beschreibung
-s oder --swap-bytes
Im Modus copy-in werden die Bytes von jedem Bytepaar ausgelagert.
-r oder --rename
Im Modus copy-in werden die Bytepaare von jedem Wort (bestehend aus 4 Byte) ausgelagert.
--sparse
In den Modi copy-in und copy-pass werden Dateien mit großen Null-Blöcken als zerstreute Dateien geschrieben.
-t oder --list
Ausgabe eines Inhaltsverzeichnisses des Dateiarchivs
-u oder --unconditional
Alle Dateien werden ersetzt, ohne nachzufragen, ob vorhandene aktuellere Dateien durch ältere Dateien ersetzt werden sollen.
-v oder --verbose
Ausführliche Ausgabe einer Liste der bearbeiteten Dateinamen in einem dem Befehl ls –l ähnlichen Format
-V oder --dot
Besondere Ausgabe: Anstelle der Dateinamen werden nur Punkte ausgegeben, um anzuzeigen, dass der Befehl noch arbeitet
Tab. 14.10: Die Optionen des Befehls cpio (Forts.)
Wenn Sie die Dateien nicht nur an dieselbe Stelle zurückkopieren möchten, müssen Sie sie mit relativem Pfad archivieren. Dadurch kann der Befehl cpio die Dateien in das aktuelle Verzeichnis zurückspielen. Mit GNU-cpio und einigen anderen cpioVarianten ist es erst beim Zurückkopieren möglich, die Pfade relativ anzugeben. Der Befehl cpio sichert nicht rekursiv, sondern nur die angegebenen Dateien oder das angegebene Verzeichnis. Um ganze Verzeichnisbäume zu sichern, wird der Befehl gemeinsam mit dem Befehl find verwendet. Wenn Sie die beiden Befehle kombinieren, können Sie sehr genau angeben, welche Dateien gesichert werden sollen, zum Beispiel alle ab einem bestimmten Datum. Im nächsten Beispiel wird die Option -newer verwendet, um Dateien eines bestimmten Zeitraums zu sichern. Zuerst wird vor einer Vollsicherung mit dem Befehl touch eine Datei als eine Art »Zeitstempel« angelegt. Bei der nächsten inkrementellen Sicherung kann diese Datei verwendet und können nur noch Dateien gesichert werden, die jünger als diese Datei sind. # touch /sicherung/projekt.level0 # find /projekt –print0 | cpio –oc >/dev/nst1
Am Tag darauf findet eine inkrementelle Sicherung mit Hilfe dieser Datei statt: # touch /sicherung/projekt.level1 # find /projekt –newer /sicherung/projekt.level0 –print0 | \
cpio –oc >/dev/nst0
Dateien oder Verzeichnisse mit Leerzeichen oder anderen Sonderzeichen im Namen können bei der Kombination der Befehle find und cpio problematisch sein, da cpio in diesem Fall den Anfang und das Ende eines solchen Pfads nicht erkennen kann, wodurch die Sicherung misslingt. Neuere und die GNU-Versionen der Befehle find und cpio verwenden daher die Methode, dass find die einzelnen Dateien nicht durch eine Newline, sondern durch Nullbytes trennt. Dadurch ist es dem Befehl cpio möglich, die einzelnen Dateien voneinander zu unterscheiden, da ein Nullbyte nie in einem Dateinamen vorkommt, zum Beispiel: # find . –print0 | cpio –o0c >/dev/nst1
643
Tools zur Datensicherung
magnum
Im folgenden Beispiel wird der Befehl find gemeinsam mit dem Befehl cpio verwendet, um ein Archiv aus dem Inhalt des aktuellen Verzeichnisses zu erstellen und es in die Datei verz.cpio zu kopieren. $ find . | cpio -ocv -O verz.cpio
Sie können den Befehl find auch mit dem Befehl cpio kombinieren, um alle Dateien, die in den letzten vier Tagen geändert wurden, in einer Archivdatei sich.cpio abzulegen: $ find . -mtime -4 | cpio -ocv -O sich.cpio
Sie können eine Archivdatei wie folgt anzeigen lassen: $ cpio -ivt -I verz.cpio
Im nächsten Beispiel werden mit Hilfe des Befehls cpio Dateien und Verzeichnisse des Homeverzeichnisses der Benutzerin her auf ein Magnetband kopiert: $ cd /home/her $ ls -R | cpio -oc -O /dev/nst0 45 blocks
Den Inhalt eines Magnetbands können Sie folgendermaßen auflisten lassen: $ cpio -civt -I /dev/nst0
Um alle auf einem Magnetband enthaltenen Dateien wieder zu extrahieren, wechseln Sie in das Verzeichnis, in dem die Dateien wiederhergestellt werden sollen. Dann führen Sie folgenden Befehl aus: $ cpio -icv -I /dev/nst0
Der Befehl dd Dieser Befehl wird dazu verwendet, Dateien zu kopieren und zu konvertieren. Das Programm ist besonders beim Kopieren auf Magnetbänder nützlich, da die Blockgrößen der Eingabe- und Ausgabedatenströme konvertiert werden können. Der Befehl kann aber auch von einer Gerätedatei auf eine andere kopieren und damit zum Beispiel zum Kopieren einer Festplatte auf eine baugleiche andere Festplatte verwendet werden. Die Syntax des Befehls lautet: $ dd operand=wert ...
Folgende Werte können als Operand verwendet werden: Operand
Beschreibung
bs=zahl
Zuweisung der Blockgröße in Bytes für Ein- und Ausgabe
cbs=zahl
Definition der Konvertierungsblockgröße (im Zusammenhang mit ASCII- und EBCDIC-Konvertierungen)
Tab. 14.11: Die Operanden des Befehls dd
644
Kapitel 14 · Datensicherung und -wiederherstellung
Operand
Beschreibung
conv=
Konvertierung der Eingabe unter Verwendung eines der folgenden Konvertierungsformate: ascii Konvertierung von EBCDIC nach ASCII block Datensätze, die durch Zeilenumbrüche beendet werden, werden mit Leerzeichen aufgefüllt. ebcdic Konvertierung von ASCII nach EBCDIC ibm Konvertierung von ASCII nach IBM-EBCDIC lcase Konvertierung von Groß- in Kleinschreibung noerror Fehler werden ignoriert. notrunc Die Ausgabedatei wird nicht abgeschnitten. swab Vertauschen von jedem Paar von Eingabebytes sync Eingabeblöcken wird durch das Anhängen von Nullen die Größe des angegebenen Puffers zugewiesen. ucase Konvertierung von Klein- in Großschreibung unblock Entfernen von nachfolgenden Leerzeichen in Datensätzen und Hinzufügen von abschließenden Zeilenvorschüben
konvertierung
count=zahl
Angabe der Anzahl der zu kopierenden Eingabeblöcke
ibs=zahl
Angabe der Blockgröße der Eingabe in Bytes
if=datei
Angabe der Datei, aus der die Eingabe gelesen werden soll. Der Standardwert ist die Standardeingabe.
obs=zahl
Angabe der Blockgröße der Ausgabe in Bytes
of=datei
Angabe der Datei, in die die Ausgabe geschrieben werden soll. Der Standardwert ist die Standardausgabe.
seek=zahl
Die angegebene Anzahl von Blöcken am Anfang der Ausgabe überspringen
skip=zahl
Die angegebene Anzahl von Blöcken am Anfang der Eingabe überspringen
Tab. 14.11: Die Operanden des Befehls dd (Forts.)
Im nachfolgenden Beispiel wird ein im ASCII-Zeichenformat beschriebenes Magnetband in eine EBCDIC-Datei konvertiert: $ dd if=/dev/nst0 of=ausgabe conv=ebcdic
Im nächsten Beispiel wird ein Magnetband im ersten Bandlaufwerk auf ein Magnetband im zweiten Bandlaufwerk des Systems kopiert: $ dd if=/dev/nst0 of=/dev/rmt1
Der Befehl gzip Mit Hilfe des Befehls gzip können Sie Dateien komprimieren, wobei aber jede Datei einzeln komprimiert wird. Dem Dateinamen wird jeweils die Erweiterung .gz hinzugefügt. Die Syntax des Befehls lautet: $ gzip [-option(en)] datei datei datei ...
645
magnum
Tools zur Datensicherung
Die Optionen des Befehls lauten: Option
Beschreibung
-a oder --ascii
ASCII-Textmodus: konvertiert Zeilenenden mit Hilfe von lokalen Konventionen. Die Option wird nur von wenigen Nicht-UnixSystemen unterstützt. Unter MS-DOS wird CR LF in LF bei der Komprimierung konvertiert und LF in CR LF bei der Dekomprimierung.
-c oder --stdout oder --to-stdout
Schreibt die Ausgabe auf die Standardausgabe und lässt die ursprünglichen Dateien unverändert. Wenn es mehrere Eingabedateien gibt, besteht die Ausgabe aus einer Reihe von unabhängig komprimierten Dateien.
-d oder --decompress oder --uncompress
Dekomprimiert
-f oder --force
Erzwingt die Komprimierung oder Dekomprimierung, auch wenn die Datei mehrere Links hat oder die entsprechende Datei bereits existiert
-l oder --list
Für jede komprimierte Datei werden die folgenden Felder angezeigt: compressed size uncompressed size ratio uncompressed name
Größe der komprimierten Datei Größe der nicht komprimierten Datei Kompressionsrate Name der nicht komprimierten Datei
Zusammen mit der Option folgende Felder angezeigt: method crc
date & time
werden außerdem
Komprimierungsmethode; die zurzeit unterstützten Komprimierungsmethoden sind deflate, compress, lzh und pack das 32-Bit-CRC der nicht komprimierten Daten; die Angabe ffffffff erfolgt für eine Datei, die nicht im gzip-Format ist Zeitstempel für die nicht komprimierte Datei
-L oder --license
Zeigt die Lizenz von gzip an und beendet das Programm
-n oder --no-name
Bei der Komprimierung werden standardmäßig nicht der ursprüngliche Dateiname und Zeitstempel gespeichert. Beim Dekomprimieren werden der ursprüngliche Dateiname und Zeitstempel nicht wiederhergestellt, wenn sie schon vorhanden sind. Diese Option ist Standard beim Dekomprimieren.
-N oder --name
Bei der Komprimierung werden standardmäßig immer der ursprüngliche Dateiname und Zeitstempel gespeichert. Beim Dekomprimieren werden der ursprüngliche Dateiname und Zeitstempel wiederhergestellt, wenn sie schon vorhanden sind. Diese Option ist nützlich bei Systemen, die eine Begrenzung für die Dateinamenslänge haben oder wenn der Zeitstempel nach einem Dateitransfer verloren ging.
-q oder --quiet
Unterdrückt alle Warnmeldungen
Tab. 14.12: Die Optionen des Befehls gzip
646
--verbose
Kapitel 14 · Datensicherung und -wiederherstellung
Option
Beschreibung
-r oder --recursive
Durchläuft die Verzeichnisstruktur rekursiv. Wenn sich unter den angegebenen Dateinamen Verzeichnisse befinden, begibt sich gzip in das Verzeichnis und komprimiert bzw. dekomprimiert alle darin befindlichen Dateien.
-S .suffix oder --suffix .suffix
Verwendet das angegebene Suffix anstelle von .gz. Das Suffix kann zwar beliebig gewählt werden, aber alle Suffixe außer .z und .gz sollten nicht verwendet werden, um Verwirrung über die Dateiart zu vermeiden.
-t oder --test
Prüft die Integrität der komprimierten Datei
-v oder --verbose
Ausführliche Ausgabe der Informationen; Anzeige des Namens und der Reduzierungsrate für jede komprimierte oder dekomprimierte Datei
-# oder --fast oder --best
Reguliert die Komprimierungsgeschwindigkeit mit Hilfe der angegebenen Zahl #, wobei -1 oder --fast die schnellste Komprimierungsmethode (wenig Kompression) bedeutet und -9 oder --best die langsamste (beste Kompression). Standard ist 6.
Tab. 14.12: Die Optionen des Befehls gzip (Forts.)
Im nachfolgenden Beispiel werden vier Dateien komprimiert: $ gzip bericht1 bericht2 bericht3 bericht4 $ ls bericht1.gz bericht2.gz bericht3.gz bericht4.gz
Der Befehl gunzip Mit Hilfe des Befehls gunzip können Sie Dateien dekomprimieren. Vom Dateinamen wird in der Regel jeweils die Erweiterung .gz entfernt. Die Syntax des Befehls lautet: $ gzip [-option(en)] datei datei datei ...
Der Befehl gunzip, der ein symbolischer Link auf gzip ist, kennt dieselben Optionen wie der Befehl gzip, wobei die Komprimierungsrate keine sinnvolle Verwendung ist. Mit dem Befehl gunzip wird eine mit gzip komprimierte Datei wiederhergestellt: $ gunzip bericht1.gz
Der Befehl zcat Mit Hilfe dieses Befehls ist es ebenfalls möglich, den Inhalt einer Datei anzusehen, die mit dem Befehl gzip komprimiert wurde. Der Befehl zeigt den Inhalt der komprimierten Dateien an, als wären sie nicht komprimiert, wobei die komprimierte Datei nicht verändert wird. Die Syntax des Befehls lautet: $ zcat [-option(en)] datei
647
magnum
Tools zur Datensicherung
Die Optionen des Befehls lauten: Option
Beschreibung
-f oder --force
Erzwingt die Komprimierung oder Dekomprimierung, auch wenn die Datei mehrere Links hat oder die entsprechende Datei bereits existiert
-L oder --license
Zeigt die Lizenz von gzip an und beendet das Programm
Tab. 14.13: Die Optionen des Befehls zcat
Der folgende Befehl zeigt den Inhalt der Datei sich.tar.Z an: $ zcat sich.gz
Der Befehl gzexe Dieser Befehl komprimiert Programmdateien. Diese dekomprimieren sich selbstständig, wenn sie aufgerufen werden, was bei Systemen mit wenig Festplattenplatz von Vorteil ist oder in dem Fall, wenn die Programme über ein langsames Netzwerk verteilt werden müssen. Der Befehl erstellt Backupdateien von den komprimierten Dateien, deren Dateiname mit einer Tilde (~) enden und die nach erfolgreichem Komprimieren gelöscht werden können. Die Syntax des Befehls lautet: $ gzexe [-option] datei(en)
Der Befehl kennt folgende Option: Option
Bedeutung
-d
Dekomprimieren der angegebenen Programmdateien, anstatt sie zu komprimieren
Tab. 14.14: Option des Befehls gzexe
Im Beispiel wird das Programm rechne komprimiert: $ gzexe rechne rechne: 81,7%
Die Befehle zip/unzip Der Befehl zip komprimiert Dateien in einem einzigen Archiv und erzeugt für die Archivdatei die Namenserweiterung .zip. Mit dem Befehl unzip können Sie die auf diese Weise komprimierten Archivdateien wieder entpacken. Die Syntax des Befehls lautet: $ zip [-option(en)]archivdatei datei datei ...
Die mit diesem Befehl gepackten Archivdateien lassen sich auch problemlos unter Microsoft Windows mit Tools wie WINZIP, PKZIP oder IZARC wieder entpacken. Die Optionen der Befehle zip und unzip werden aufgelistet, wenn Sie einen der Befehle ohne Option an der Befehlszeile eingeben. Die wichtigsten Optionen lauten:
648
Kapitel 14 · Datensicherung und -wiederherstellung
Option
Beschreibung
-0
Nur speichern, nicht komprimieren
-1
Schneller komprimieren
-9
Effizienter komprimieren
-a
Für Systeme, die EBCDIC verwenden: Übersetzen der Datei in ASCII-Format
-A
Eine selbst extrahierende Exe-Datei erstellen
-b pfad
Den angegebenen Pfad für das temporäre zip-Archiv verwenden
-c
Einzeiligen Kommentar hinzufügen
-d
Einträge in der zip-Datei löschen
-D
Keine Verzeichniseinträge hinzufügen
-e
Den Inhalt des zip-Archivs mit Hilfe eines Passworts verschlüsseln.
-f
Nur geänderte Dateien erneuern
-F
Das zip-Archiv bereinigen. Diese Option kann verwendet werden, wenn Teile des Archivs fehlen. Es ist aber nicht sichergestellt, dass die Option erfolgreich ist. Sie stellt auch keine Archive wieder her, die fälschlicherweise im ASCII- anstatt im binären Modus übertragen wurden.
-g
Anhängen an das angegebene zip-Archiv, anstatt ein neues zu erzeugen
-h
Alle Optionen auflisten
-i dateien
Nur die angegebenen Dateien hinzufügen
-i
Speichert nur den Namen der gesicherten Datei und lässt die Pfadangabe weg
-J
Entfernt alle vorangestellten Daten aus dem Archiv
-l
Das Zeichen LF (Linefeed) in CR LF (Carriage Return Linefeed) umwandeln
-ll
Die Zeichen CR LF (Carriage Return Linefeed) in LF (Linefeed) umwandeln
-m
Verschiebt die angegebenen Dateien in das zip-Archiv und löscht dabei die Quelldateien und -verzeichnisse
-n
suffixe
Versucht Dateien mit den angegebenen Suffixen nicht zu komprimieren, sondern nur zu speichern
-o
Der zip-Datei das Datum des letzten Eintrags zuweisen
-q
Stiller Modus: keine Ausgabe von Meldungen
-r
Durchläuft die Verzeichnisstruktur rekursiv unterhalb des angegebenen Verzeichnisses und speichert alle Unterverzeichnisse und darin befindlichen Dateien ebenfalls im zip-Archiv
-R
Verzweigt rekursiv in das angegebene Verzeichnis und sichert dessen Inhalt sowie das seiner Unterverzeichnisse
Tab. 14.15: Die Optionen des Befehls zip
649
magnum
Tools zur Datensicherung
Option
Beschreibung
-t
Ignoriert Dateien, die vor dem angegebenen Datum verändert wurden
mmddyy -T
Die Integrität der zip-Datei testen
-u
Nur geänderte Dateien aktualisieren oder neue Dateien hinzufügen
-v
Ausführlicher Modus mit zusätzlichen Informationsausgaben
-x dateien
Die angegebenen Dateinamen ausschließen
-y
Den symbolischen Link anstatt der referenzierten Datei speichern
-z
Kommentar zur zip-Datei hinzufügen
Tab. 14.15: Die Optionen des Befehls zip (Forts.)
Im folgenden Beispiel werden drei Dateien in einer Archivdatei miert:
archiv
kompri-
$ zip archiv bericht2 bericht3 bericht4 adding: bericht2 bericht3 bericht4 (deflated 65%) $ ls bericht2 bericht3 bericht4 archiv.zip
Die gepackte und komprimierte Datei hat nach dem Vorgang den Namen archiv.zip. Mit dem Befehl unzip extrahieren Sie die Dateien aus einem zip-Archiv, wobei dieses nach der Archivierung weiterhin existiert: $ unzip archiv.zip
650
Kapitel 14 · Datensicherung und -wiederherstellung
14.4 Datensicherung und -wiederherstellung mit YaST YAST von SUSE Linux bietet auch eine Möglichkeit, Datensicherungen auf der grafischen Ebene durchzuführen. Wählen Sie dazu im Menü SYSTEM die Option SICHERUNGSKOPIE DER SYSTEMBEREICHE. Für eine Datensicherung mit YAST muss zunächst ein neues Profil angelegt werden:
Bild 14.1: Profilverwaltung für Datensicherungen
Im ersten Schritt wird ein Sicherungsprofil hinzugefügt, klicken Sie dazu auf die Schaltfläche PROFILVERWALTUNG und dann auf HINZUFÜGEN:
Bild 14.2: Profilverwaltungsmenü
Mit dem Profilverwaltungsmenü ist es auch möglich, Profile zu kopieren, zu ändern, zu löschen und eine automatische Durchführung der Datensicherung einzustellen. Vergeben Sie dem Profil einen sprechenden Namen:
Bild 14.3: Profil benennen
651
Datensicherung und -wiederherstellung mit YaST
magnum
In diesem Beispiel soll die Datensicherung in eine lokale Datei erfolgen. Es ist aber auch über NFS auf einem anderen Rechner im Netzwerk möglich. Außerdem können Sie den Archivtyp an dieser Stelle auswählen:
Bild 14.4: Archiv einrichten
Anschließend werden Angaben zur Datei-Auswahl definiert:
Bild 14.5: Dateien auswählen
Im nächsten Schritt werden Verzeichnisse und Dateisysteme von der Sicherungskopie bewusst ausgenommen. Klicken Sie dazu auf die Schaltfläche EXPERTEN:
652
Kapitel 14 · Datensicherung und -wiederherstellung
Bild 14.6: Expertenoptionen einstellen
Wenn Sie auf OPTIONEN klicken, können Sie festlegen, welche Systembereiche gesichert werden sollen:
Bild 14.7: Zu sichernde Systembereiche einstellen
Anschließend können die von der Suche ausgenommenen Bereiche geändert werden, das heißt, Sie können Bereiche hinzufügen, entfernen oder ändern:
653
Datensicherung und -wiederherstellung mit YaST
magnum
Bild 14.8: Suchoptionen einstellen
Das neu angelegte Sicherungsprofil wird schließlich in YAST angezeigt und kann über die Profilverwaltung bearbeitet werden:
Bild 14.9: Angelegtes Sicherungsprofil
Wenn Sie auf PROFILVERWALTUNG und AUTOMATISCHE SICHERUNGSKOPIE klicken, können Sie eine automatische Datensicherung einrichten. Dazu legen Sie fest, ob die Sicherung täglich, wöchentlich oder monatlich und zu welchen Zeiten erfolgen soll:
654
Kapitel 14 · Datensicherung und -wiederherstellung
Bild 14.10: Automatische Sicherungskopie anlegen
Alternativ können Sie über die Schaltfläche SICHERUNGSKOPIE diesem Profil eingestellte Datensicherung manuell aktivieren:
STARTEN
die mit
Bild 14.11: Sicherungskopie manuell starten
Über YAST ist auch eine Wiederherstellung der auf diese Weise gesicherten Daten möglich. Wählen Sie dazu das Menü SYSTEM - SYSTEM WIEDERHERSTELLEN:
655
Datensicherung und -wiederherstellung mit YaST
magnum
Bild 14.12: System wiederherstellen mit YAST
In diesem Fall müssen Sie angeben, in welchem Archiv und an welchem Ort sich die Datensicherung befindet:
Bild 14.13: Datensicherung zurückspielen
656
Kapitel 14 · Datensicherung und -wiederherstellung
14.5 KDE-Tools zur Datensicherung Es gibt verschiedene KDE-Tools, um Daten zu archivieren und zu sichern. In diesem Abschnitt werden zwei vorgestellt.
14.5.1
Daten mit Ark archivieren
Dieses Tool archiviert Daten im komprimierten tar-Format. Es ist ein grafisches Frontend für die Befehle tar und gzip. Mit ARK gepackte Archive können auch auf der Befehlszeile wieder entpackt werden. Die Inhalte einer Archivdatei können Sie problemlos anzeigen lassen, indem Sie im KONQUEROR mit der rechten Maustaste auf die Archivdatei klicken. Starten Sie unter SUSE Linux das Tool über DIENSTPROGRAMME - ARCHIVIERUNG – ARK. Unter KDE 3.3.2 von Debian GNU/Linux 3.1 steht dieses Tool unter Dienstprogramme - Archivprogramm zur Verfügung.
Unter Fedora Core Linux finden Sie das Tool im KDE-Menü Zubehör.
Bild 14.14: Das Archivierungsprogramm Ark
Klicken Sie auf DATEI - NEU oder das entsprechende Symbol, um ein neues Archiv anzulegen:
Bild 14.15: Neues Archiv anlegen
657
KDE-Tools zur Datensicherung
magnum
Geben Sie den Archivnamen ein. Die Endung .tar.gz wird automatisch ergänzt. Fügen Sie dem Archiv Dateien oder Verzeichnisse über das Menü AKTION DATEIEN HINZUFÜGEN oder AKTION - VERZEICHNISSE HINZUFÜGEN oder die entsprechenden Schaltflächen hinzu:
Bild 14.16: Dateien dem Archiv hinzufügen
Die Dateien können mit Hilfe des Menüs BEARBEITEN oder der Schaltflächen entpackt oder angezeigt werden:
Bild 14.17: Archivierte Dateien anzeigen
14.5.2
Datensicherung mit KDar
Es ist auch möglich, eine Datensicherung mit KDE durchzuführen. Dazu können Sie zum Beispiel KDAR verwenden, das ein dar-Format für die Datensicherungen erzeugt. Starten Sie das Programm unter SUSE Linux über SYSTEM – DATENSICHERUNG – KDAR. Dieses Tool steht unter KDE 3.3.2 von Debian GNU/Linux 3.1 und Fedora Core Linux standardmäßig noch nicht zur Verfügung.
658
Kapitel 14 · Datensicherung und -wiederherstellung
Bild 14.18: Wiederherstellungsfenster
KDAR beginnt mit dem Vorschlag, gesicherte Dateien wiederherzustellen. Klicken Sie einfach auf NEXT, wenn Sie keine gesicherten Dateien haben:
Bild 14.19: Daten mit KDar sichern
659
KDE-Tools zur Datensicherung
magnum
Wählen Sie dann das Menü ARCHIVE - CREATE oder die entsprechende Schaltfläche, um ein neues Archiv anzulegen. Zuerst müssen Sie ein Backup-Verzeichnis auswählen:
Bild 14.20: Backup-Verzeichnis auswählen
Anschließend vergeben Sie einen Archivnamen, die Endung dar sowie eine laufende Nummer für das Backuplevel werden automatisch ergänzt:
Bild 14.21: Archivnamen vergeben
660
Kapitel 14 · Datensicherung und -wiederherstellung
Anschließend wählen Sie das Verzeichnis, das rekursiv gesichert werden soll:
Bild 14.22: Archivverzeichnis wählen
Mit KDAR sind inkrementelle Backups gegen ein Referenzarchiv möglich. Beim ersten Sichern ignorieren Sie diese Option einfach und klicken auf NEXT:
Bild 14.23: Inkrementelles Backup durchführen
661
KDE-Tools zur Datensicherung
magnum
Im nächsten Fenster können Sie über die Schaltfläche CONFIGURE OPTIONS verschiedene Optionen für die Sicherung einstellen:
Bild 14.24: Konfigurationsoptionen festlegen
Sie können zum Beispiel den Kompressionstyp einstellen:
Bild 14.25: Kompressionstyp einstellen
662
CREATION
Kapitel 14 · Datensicherung und -wiederherstellung
Im letzten Fenster können Sie das Sicherungsprofil mit der Schaltfläche SAVE PROFILE unter einem Namen Ihrer Wahl abspeichern:
Bild 14.26: Profil speichern
Anschließend klicken Sie auf FINISH. Das Archiv wird nun erstellt:
Bild 14.27: Das Archiv wird erstellt
663
KDE-Tools zur Datensicherung
magnum
Wenn Sie auf das Pluszeichen vor dem Archivnamen klicken, wird der Archivinhalt angezeigt:
Bild 14.28: Anzeige des Archivinhalts
Sie können jederzeit die Dateien aus dem Archiv wiederherstellen. Klicken Sie dazu auf das Menü ARCHIVE - RESTORE und geben Sie ein Verzeichnis ein, in das Sie die Dateien kopieren möchten:
Bild 14.29: Archiv zurückkopieren
664
Kapitel 14 · Datensicherung und -wiederherstellung
Im unteren Fensterbereich wird das erfolgreiche Kopieren angezeigt:
Bild 14.30: Dateien in ein Verzeichnis zurückspielen
665
magnum
Teil 3 Netzwerk
15 Netzwerkgrundlagen »Der Kriminalschriftsteller ist eine Spinne, die die Fliege bereits hat, bevor sie das Netz um sie herum webt.« – Arthur Conan Doyle Dieses Kapitel befasst sich zunächst mit Netzwerkgrundlagen. Dazu gehören die Arten, Elemente und Topologien von Netzwerken. Das OSI-Referenzmodell und der Aufbau von IP-Adressen werden kurz erläutert. Anschließend lernen Sie alle Dateien kennen, die von Bedeutung für die Netzwerkkonfiguration sind. Die wichtigsten Netzwerkprozesse und -befehle werden vorgestellt, mit deren Hilfe Sie eine Netzwerkverbindung herstellen, überprüfen oder konfigurieren können.
15.1 Netzwerkgrundlagen In der Regel werden die Rechner eines Unternehmens oder einer Institution miteinander vernetzt, um Daten austauschen und Ressourcen, wie zum Beispiel Dateien oder Drucker, teilen zu können. Die Aufgabenverteilung im Netzwerk erfolgt häufig nach dem Client-Server-Prinzip. Das bedeutet, dass bestimmte Rechner (Server) anderen Rechnern (Clients) Dienste anbieten. So gibt es zum Beispiel Fileserver, Proxyserver, Mailserver, Datenbankserver, Bootserver, Lizenzserver oder NIS-Server (vergleiche Kapitel 20). Dabei kann ein Rechner auch mehrere Dienste zugleich anbieten. Um die Kommunikation zwischen zwei oder mehreren Rechnern zu ermöglichen, sind bestimmte Voraussetzungen notwendig. In der Vergangenheit mussten dazu die Rechner einerseits über Netzwerkkarten verfügen und über Netzwerkkabel miteinander verbunden sein, heute gibt es auch kabellose Netzwerke, so genannte WirelessLANs oder WLANs. Andererseits müssen Vereinbarungen über die Art und Weise des Informationsaustauschs getroffen werden. Dieser Austausch von Daten im Netzwerk erfolgt mit Hilfe von Netzwerkprotokollen, die mittels Zusatzprogrammen auch Verschlüsselungsfunktionen anbieten, wie zum Beispiel Kerberos oder SecureNFS.
15.1.1
Netzwerkkarten
Netzwerke können räumlich unterschieden werden:
쮿
Ein LAN (Local Area Network) ist ein lokales Netzwerk in einem örtlich begrenzten Bereich, wie zum Beispiel einem Gebäude oder Firmengelände. Die Verbindung von LAN-Segmenten erfolgt über Elemente wie Hubs, Switches, Bridges oder Router.
쮿
Ein WAN (Wide Area Network) wird auch Weitverkehrsnetz genannt und erstreckt sich über große Entfernungen, zum Beispiel über Städte oder Länder hinweg. Die einzelnen Netze werden hier über Router oder Gateways miteinander verbunden und nutzen auch öffentliche Kommunikationsnetze.
Eine weitere Unterscheidung erfolgt aufgrund der Netzwerktopologie:
쮿
Bei der Stern-Topologie werden die Netzwerkrechner sternförmig um die zentrale Komponente, zum Beispiel einen Hub, angeordnet.
669
magnum
Netzwerkgrundlagen
쮿
Bei der Ring-Topologie befinden sich alle Rechner in einer in sich geschlossenen, ringförmigen Netzwerkleitung.
쮿
Bei der Bus-Topologie werden alle Rechner an eine zentrale Netzwerkleitung angeschlossen, die zwei Enden hat.
Die dritte Unterscheidung orientiert sich an der Art, wie ein Netzwerk aufgebaut ist:
쮿
Ein homogenes Netzwerk besteht aus Rechnern, auf denen dasselbe Betriebssystem installiert ist, zum Beispiel Unix.
쮿
Ein heterogenes Netzwerk verbindet Rechner mit unterschiedlichen Betriebssystemen, zum Beispiel Unix-, Microsoft Windows- und Novell-Rechner.
15.1.2
Netzwerkkomponenten
Ein Netzwerk kann folgende Hardwarekomponenten enthalten: Komponente
Beschreibung
Server
Ein Rechner, der anderen Rechnern Dienste anbietet, zum Beispiel Fileserver, Mailserver, Datenbankserver etc.
Client
Ein Rechner, der die Dienste eines Servers in Anspruch nimmt. Es gibt außerdem so genannte Autoclients, die das ganze Betriebssystem und alle Anwendungen über das Netzwerk vom Server beziehen. Ähnlich funktionieren auch so genannte Diskless und Dataless Workstations, wobei die Dataless Workstation eine Festplatte mit einem eigenen root- und swap-Dateisystem besitzt. Auch X-Terminals, JavaStations und SunRays verhalten sich wie Clients.
Bridge
Eine Verbindung zwischen Teilen eines logischen Netzwerks, um den Datenverkehr auf Teilnetzwerke zu begrenzen und die Netzwerkleistung zu erhöhen
Router
Eine Verbindung zwischen unterschiedlichen physikalischen Netzwerken mit gleichen Protokollen, um die Datenpakete entsprechend zu konvertieren und weiterzuleiten
Hub
Ein Konzentrator, der eine Verbindungsstelle in einem Netzwerk darstellt, an der die Netzwerkanbindungen von Rechnern zusammengeführt werden, um die Ausfallsicherheit zu erhöhen und die Netzwerkverwaltung zu verbessern
Switch
Eine intelligente Verbindung zwischen Teilsegmenten von Netzwerken, um die gesamte Bandbreite der Netzwerkhardware zu erhöhen
Repeater
Eine Verbindung zwischen mehreren Ethernetsegmenten, deren Aufgabe es ist, Signale zu empfangen und inhaltlich unverändert, aber physikalisch verstärkt in ein anderes Segment weiterzuleiten
Gateway
Ein Rechner oder Gerät, um unterschiedliche Netzwerktopologien zu verbinden, die eigentlich nicht miteinander kompatibel sind. Die Protokolle der Netzwerke sind meist unterschiedlich, weshalb ein Gateway-Rechner notwendig wird.
Tab. 15.1: Netzwerkkomponenten
670
Kapitel 15 · Netzwerkgrundlagen
15.1.3
Das OSI-Referenzmodell
Um unterschiedliche Rechnerarchitekturen und Betriebssysteme zusammenschalten zu können, war eine Schematisierung und Gliederung des Kommunikationsprozesses in hierarchische Schichten erforderlich. Dabei werden die einzelnen Kommunikationsfunktionen bestimmten logischen Schichten zugeordnet. Von Vorteil ist, dass Änderungen in einer Schicht keinen Einfluss auf die anderen Schichten haben. Die International Standard Organization (ISO) entwickelte für offene Netzwerke ein 7-Schichten-Modell, das so genannte OSI-Modell (Open Systems Interconnection). Auf diesem Modell basieren heute fast alle Kommunikationsgeräte und -verfahren. Die grundsätzlichen Funktionen der einzelnen Schichten und die Schnittstellen zwischen den Ebenen sind im OSI-Modell festgelegt und stellen eine universell anwendbare logische Struktur für alle Anforderungen der Datenkommunikation verschiedener Systeme dar. Die Zerlegung in einzelne Schichten strukturiert komplexe Aufgaben hierarchisch und überschaubar. Die Aufgaben jeder Schicht werden mit bestimmten Funktionen ausgeführt, die als Protokolle implementiert sind. Die Datenkommunikation findet parallel in jeder Schicht mit einem eigenen Protokoll statt, unabhängig von der Kommunikation der darüber befindlichen oder darunter liegenden Schichten. Die folgende Abbildung soll einen Überblick über das OSI-Modell und die damit verbundenen Protokolle geben:
Bild 15.1: Das OSI-Referenzmodell
Protokolle sind formale Verhaltensregeln in der Datenkommunikation. Offene Protokolle sind einerseits für alle zugänglich und andererseits unabhängig von Betriebssystemen, Hardware und Herstellern. Die Schichten 1 bis 4 werden der Transportfunktion und die Schichten 5 bis 7 den Anwendungsfunktionen zugeordnet. In nachfolgender Tabelle werden die Funktionen der einzelnen Schichten erläutert:
671
magnum
Netzwerkgrundlagen
Schicht (Layer)
Funktion
1. Physical Layer (Bitübertragungsschicht)
Regelt die physikalische Übertragung von Daten als Bitstrom, wobei Übertragungsgeschwindigkeit und -art (duplex, simplex usw.) und Bitdarstellung geregelt werden. Verschiedene Transportmedien können in dieser Schicht verwendet werden, wie zum Beispiel Koaxial-, Glasfaser- oder Kupferkabel. Auf dieser Ebene arbeitet ein Repeater.
2. Data Link Layer (Sicherungsschicht)
Die Daten werden in dieser Schicht in Übertragungsblöcken (Frames) zusammengefasst und auf Übertragungsfehler überprüft. Auf dieser Ebene arbeitet eine Bridge oder ein Switch. Die MAC-Adresse ist ebenfalls auf dieser Ebene anzusiedeln.
3. Network Layer (Vermittlungsschicht)
Diese Schicht errichtet virtuelle Pfade zwischen Knotenrechnern und sorgt für einen optimierten Übertragungsweg zwischen den Systemen. Die Adressierung von Rechnern erfolgt auf der Basis der IP-Adresse. Auf dieser Ebene arbeitet ein Router.
4. Transport Layer (Transportschicht)
Diese Schicht übernimmt den Transport von Nachrichten und die Steuerung des Verbindungsab- und -aufbaus. Außerdem steuert sie den Datenfluss und stellt die Integrität der übermittelten Daten sicher.
5. Session Layer (Kommunikationssteuerschicht)
Diese Schicht steuert den Austausch von Nachrichten, wie zum Beispiel den Neustart einer abgebrochenen Sitzung. Hier wird auch gesteuert, welche der verbundenen Anwendungen Daten sendet und welche Daten empfängt.
6. Presentation Layer (Darstellungsschicht)
Diese Schicht legt fest, wie Datentypen kodiert werden, damit ein Austausch zwischen unterschiedlichen Systemen möglich ist.
7. Application Layer (Anwendungsschicht)
In dieser Schicht wird eine allgemeine Schnittstelle für Anwendungen zur Verfügung gestellt, wie zum Beispiel für den Datentransfer, Terminalsitzungen usw.
Tab. 15.2: Die Schichten des OSI-Modells
15.1.4
Aufbau von IP-Adressen und Subnetting
IP-Adressen bestehen aus einer 32 Bit langen Zahl, die in 4 Byte zu je 8 Bit unterteilt wird. Bei diesen Bytes handelt es sich um durch Punkte getrennte Dezimalzahlen, wie zum Beispiel 142.184.201.7 oder 193.102.139.11. Die Adresse besteht aus zwei Teilen, der Netzwerkadresse und der Rechneradresse, wobei für die Adressteile unterschiedlich viele Bits verwendet werden. Die Bereiche für eine Netzwerkadresse werden durch das erste Byte wie folgt zugeordnet: Netzklasse
Erstes Byte enthält
Erstes Byte als Binärzahl
Netzwerkadresse
Rechneradresse
Class A
1–126
0xxx xxxx
Byte 1
Byte 2–4
Class B
128–191
10xx xxxx
Byte 1–2
Byte 3–4
Class C
192–223
110x xxxx
Byte 1–3
Byte 4
Class D
224–239
1110 xxxx
Tab. 15.3: Aufbau von IP-Adressen
672
Hostgruppe
Kapitel 15 · Netzwerkgrundlagen
Die Tabelle fasst folgende Informationen zu IP-Adressen zusammen: Bei einer Class-A-Adresse ist das erste Bit im ersten Byte auf 0 gesetzt, wodurch der Rest des ersten Bytesdem Netzwerkanteil der Adresse zugeordnet wird. Durch die übrigen 7 Bit können 126 verschiedene Netzwerke adressiert werden und innerhalb dieser Netzwerke bis zu 16.888.214 Rechner. Ein Beispiel für eine solche Adresse wäre 124.100.7.12. Die Subnetzmaske lautet hier 255.0.0.0. Die Subnetzmaske wird vom Rechner intern verwendet, um den Netzwerkteil und Hostteil der IP-Adresse zuordnen zu können. Bei einer Class-B-Adresse sind die ersten beiden Bits auf 10 gesetzt, wodurch die ersten beiden Bytes abzüglich dieser beiden Bits für die Netzwerkadresse verwendet werden können. Es sind also bis zu 16.382 Class-B-Netzwerke möglich und pro Netzwerk lassen sich 65.534 Rechner adressieren. Der Adressbereich reicht von 128 bis 191. Entsprechend lautet eine Class-B-Adresse zum Beispiel 132.102.7.14 und die komplementäre Netzwerkmaske 255.255.0.0. Bei einer Class-C-Adresse sind die ersten drei Bits des ersten Byte auf 110 gesetzt, so dass die ersten 3 Byte abzüglich der ersten drei Bits für die Netzwerkadresse verwendet werden können. Daher lassen sich sehr viele Class-C-Netzwerkadressen vergeben, aber pro Netzwerk können maximal 254 Rechner adressiert werden. Der Adressbereich reicht von 192 bis 223. Eine Class-C-Adresse lautet zum Beispiel 193.103.139.5 und hat die Subnetzmaske 255.255.255.0. Die Netzadressen der Class D reichen von 224.x.x.x bis 239.x.x.x und werden für besondere Zwecke verwendet, wie zum Beispiel 224.x.x.x für Multicast-Anwendungen. Die Adressen über 239.x.x.x gehören zur Class E und sind für die Hersteller reserviert. Grundsätzlich gilt, dass alle Rechner mit derselben Netzwerkadresse zu einem Netzwerk gehören und sich gegenseitig erreichen können. Um Netzwerke mit unterschiedlichen Adressen zu verbinden, benötigt man einen Router. Lokale Netze lassen sich auch ohne Internetanbindung mit TCP/IP betreiben und ohne dafür IP-Nummern beantragen zu müssen oder einzelne Rechnerverbindungen zu testen. Man verwendet einfach einen »privaten« Nummernkreis, der nicht von einem Router nach außen gegeben wird. Dazu wurden ein Class-A-Netz, 16 Class-B-Netze und 255 Class-C-Netze festgelegt:
쮿
Class-A-Netz:
10.0.0.0 bis 10.255.255.255
쮿
Class-B-Netze:
172.16.0.0 bis 172.31.255.255
쮿
Class-C-Netze:
192.168.0.0 bis 192.168.255.255
Um das Routing (vergleiche Abschnitt 15.7) innerhalb von großen Teilnetzwerken zu ermöglichen, wird der Rechneranteil der IP-Adresse weiter in eine so genannte Subnetznummer und eine Stationsnummer unterteilt.
673
magnum
Netzwerk einrichten
15.2 Netzwerk einrichten Bei den meisten Linux-Systemen sind nach der Installation die Netzwerkdienste standardmäßig schon gestartet und die Netzwerkkarte wurde bereits erkannt. In der Regel sind dazu nur wenige Schritte notwendig, um einen Rechner in ein bestehendes Netzwerk einzubinden, zum Beispiel durch die Vergabe der IP-Adresse und des Rechnernamens. Dieser Abschnitt erläutert Ihnen zuerst die Befehle zur Netzwerkkonfiguration und anschließend werden die grafischen Methoden zur Einrichtung eines Netzwerks beschrieben. Die Netzwerkdienste werden in der Regel erst nach der Vergabe einer IP-Adresse gestartet.
15.2.1
Netzwerkkonfiguration zur Bootzeit
Das Netzwerk wird bei den meisten Linux-Derivaten bereits zur Bootzeit aktiviert. Bei SUSE Linux erfolgt die Konfiguration mit dem Bootskript /etc/init.d/network, in dem der Befehl /sbin/ifup verwendet wird (vergleiche folgende Abschnitte). Die Netzwerkschnittstelle wird mit der Datei /etc/sysconfig/ifcfg-netzwerkschnittstelle-id-macadresse konfiguriert. Der Name der ersten Ethernetschnittstelle lautet zum Beispiel meist eth0, in diesem Fall heißt die Datei /etc/sysconfig/ifcfg-eth-id00:c0:26:8e: 7b:00. Deren Inhalt kann zum Beispiel wie folgt aussehen: BOOTPROTO='static' BROADCAST='192.168.172.255' IPADDR='192.168.172.71' MTU='' NETMASK='255.255.255.0' NETWORK='192.168.172.0' REMOTE_IPADDR='' STARTMODE='auto' UNIQUE='WL76.IQxIdIhhuH7' USERCONTROL='no' _nm_name='bus-pci-0000:00:09.0'
In älteren SUSE-Versionen heißt die Datei /etc/sysconfig/ifcfg-netzwerkschnittstelle. Bei Fedora Core Linux wird während der Bootzeit das Skript /etc/rc.d/rc2.d/ S10network gelesen, das einen Link zu /etc/init.d/network darstellt und das Skript /etc/sysconfig/network-scripts/ifup aufruft. Die grundlegende Konfiguration findet in der Datei /etc/sysconfig/network statt. Konfigurationsdaten, wie zum Beispiel die IP-Adresse, Netzmaske usw., finden Sie in /etc/sysconfig/network-scripts/ifcfgnetzwerkschnittstelle. Bei Debian GNU/Linux heißt das Skript /etc/init.d/networking und die Netzwerkschnittstelle wird mit der Datei /etc/network/interfaces konfiguriert.
674
Kapitel 15 · Netzwerkgrundlagen
15.2.2
Befehle zur Netzwerkkonfiguration
Der Befehl ifconfig Mit Hilfe dieses Befehls können Sie die Netzwerkschnittstellen konfigurieren. TCP/IP wird unter Linux durch Shellskripte konfiguriert und die Initialisierung von Netzwerkschnittstellen erfolgt meist durch diesen Befehl. Die Syntax des Befehls lautet: # ifconfig interface option(en)
Es gibt verschiedene Arten von Schnittstellen:
쮿
Das Loopback-Interface, das eine spezielle zum lokalen System zurückführende Schnittstelle darstellt, so dass alle über die Loopback-Schnittstelle versendeten Daten wieder im lokalen System empfangen werden. Dadurch ist eine Kommunikation von lokalen Prozessen über TCP/IP möglich. Das Loopback-Interface wird mit Hilfe des Befehls ifconfig lo0 127.0.0.1 initialisiert.
쮿
Broadcast-Interfaces sind Schnittstellen zu lokalen Netzwerken, über die Nachrichten an alle versendet werden können. Zur Initialisierung des Broadcast-Interface müssen die IP-Adresse, die Netzmaske und die BroadcastAdresse angegeben werden, zum Beispiel: ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
쮿
Die Point-to-Point-Schnittstellen sind notwendig, um ein anderes System zu erreichen, wie zum Beispiel das Point-to-Point-Protokoll (PPP). Sie lassen WAN-Verbindungen über die serielle Schnittstelle oder per Modem oder ISDN-Karte zu und werden folgendermaßen initialisiert: ifconfig ppp0 192.168.1.1 192.168.1.2 netmask 255.255.255.240
Für DSL oder Kabelmodem benötigen Sie keine Point-to-Point-Schnittstelle. Die wichtigsten Optionen des Befehls ifconfig fasst die folgende Tabelle zusammen: Option
Beschreibung
add adr/prefix
Eine IPv6-Adresse einer Netzwerkschnittstelle hinzufügen
[-]allmulti
Aktiviert oder deaktiviert den All-Multicast-Modus der Schnittstelle. Wenn dieser ausgewählt ist, werden alle Multicast-Pakete des Netzwerks von dieser Netzwerkschnittstelle empfangen.
[-]arp
Aktiviert das Address Resolution Protocol (ARP) für die Adressumsetzung. Es lässt sich mit –arp deaktivieren. Mit dem ARP kann eine IP-Adresse auf die MAC-Adresse umgesetzt werden.
[-]broadcast
Aktivieren oder Deaktivieren der IP-Adresse für einen allgemeinen Rechneraufruf im gleichen Netzwerk mit Angabe des Netzwerk- und Rechneranteils der Adresse. Durch diese Option können alle im Netzwerk angeschlossenen Rechner gleichzeitig angesprochen werden.
adresse
del adr/prefix
Eine IPv6-Adresse von einer Netzwerkschnittstelle entfernen
down
Deaktiviert eine Netzwerkschnittstelle
Tab. 15.4: Die Optionen des Befehls ifconfig
675
magnum
Netzwerk einrichten
Option
Beschreibung
hw klasse adresse
Definiert die Hardwareadresse dieser Netzwerkschnittstelle, wenn der Gerätetreiber die Option unterstützt. Nach der Option müssen die Hardwareklasse und das ASCII-Gegenstück der Hardwareadresse stehen. Hardwareklassen können ether (Ethernet), ax25 (AMPR AX.25), ARCnet und netrom (AMPR NET/ROM) sein.
io_addr adresse
Definiert die Startadresse im Ein-/Ausgabebereich für dieses Gerät
irq adresse
Definiert die von diesem Gerät verwendete Interruptzeile. Nicht alle Geräte können ihre IRQ-Einstellung dynamisch ändern.
media type
Definiert den physikalischen Port oder Medientyp, der vom Gerät verwendet werden soll. Typische Werte für type sind: 10baseT (Twisted-Pair 10 Mbps Ethernet), 10base2 (Thin Ethernet), AUI (Externer Transceiver) usw.
metric zahl
Festlegen des Routingwerts für eine Netzwerkschnittstelle
mtu zahl
Definiert die Maximalgröße des Übertragungsrahmens (MTU = Maximum Transfer Unit) einer Netzwerkschnittstelle
multicast
Legt das Multicast-Kennzeichen für die Netzwerkschnittstelle fest. Dies geschieht normalerweise automatisch durch den Treiber.
netmask maske
Definiert die Netzmaske bei IPv4
[-]pointopoint [adresse]
Dieses Schlüsselwort aktiviert den Punkt-zu-Punkt-Modus einer Netzwerkschnittstelle, das heißt, es gibt nur eine direkte Verbindung zwischen zwei Maschinen.
tunnel aa.bb.cc.dd
Eine neues SIT-Gerät (IPv6-nach-IPv4) erzeugen und zum angegebenen Ziel tunneln
txqueuelen länge
Definiert die Länge der Übertragungswarteschlange des Geräts
up
Aktiviert eine Netzwerkschnittstelle
Tab. 15.4: Die Optionen des Befehls ifconfig (Forts.)
Mit ifconfig Optionen.
--help
erhalten Sie einen schnellen Überblick über die möglichen
Im nachfolgenden Beispiel wird mit dem Befehl ifconfig die aktuelle Konfiguration der Netzwerkschnittstelle ausgegeben: # ifconfig eth0 Link encap:Ethernet HWaddr 00:C0:26:8E:7B:0C inet addr:192.168.60.74 Bcast:192.168.60.255 Mask:255.255.255.0 inet6 addr: fe80::2c0:26ff:fe8e:7b0c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:40739 errors:0 dropped:0 overruns:0 frame:0 TX packets:4650 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2720874 (2.5 Mb) TX bytes:632968 (618.1 Kb) Interrupt:11 Base address:0x3000
676
Kapitel 15 · Netzwerkgrundlagen
lo
Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:68 errors:0 dropped:0 overruns:0 frame:0 TX packets:68 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5120 (5.0 Kb) TX bytes:5120 (5.0 Kb)
Der Befehl gibt folgende Informationen aus: Information
Beschreibung
HWaddr
Die MAC-Adresse der Schnittstelle
inet addr
Konfigurierte IPv4-Adresse der Schnittstelle
inet6 addr
Konfigurierte IPv6-Adresse der Schnittstelle
Bcast
Broadcast-Adresse der Schnittstelle, Standard ist Netzwerkanteil + jeweils Hostanteil auf 255 gesetzt
Mask
Netzmaske der Schnittstelle
UP
Schnittstelle ist aktiviert
BROADCAST
Broadcast-Meldungen werden entgegengenommen.
RUNNING
Schnittstelle wurde vom Kernel erkannt
MULTICAST
Multicast-Meldungen werden entgegengenommen.
MTU
(Maximum Transfer Unit) Maximale, unfragmentierte Größe eines Datenpakets
Metric
Metrik der Schnittstelle; manche Betriebssysteme wie zum Beispiel Linux verwenden sie, um die Routenauswahl zu kalkulieren
RX
RX (receive) zeigt an, wie viele Pakete empfangen wurden und wie viele
Fehler dabei vorkamen.
TX
TX (transmit) zeigt an, wie viele Pakete gesendet wurden und wie viele Fehler dabei vorkamen.
Tab. 15.5: Die Ausgabe des Befehls ifconfig
677
magnum
Netzwerk einrichten
Der Befehl ifup Mit Hilfe dieses Befehls können Sie eine vorkonfigurierte Netzwerkschnittstelle aktivieren. Die Syntax des Befehls lautet: # ifup konfiguration [interface] [-o option(en)]
Dieser Befehl ist nicht bei allen Distributionen verfügbar. Der Befehl kennt u. a. folgende Optionen: Option
Beschreibung
auto oder [on]boot
Setzt die Netzwerkschnittstelle nur auf, wenn die Konfiguration die Einstellung STARTMODE=onboot oder STARTMODE=auto hat
hotplug
Konfiguration mit der Einstellung STARTMODE=hotplug – sie entspricht der Einstellung auto, führt aber noch ein paar Aufgaben zusätzlich aus, zum Beispiel das Starten und Stoppen des ifplugd-Daemons
quiet
Unterdrückt die normale Ausgabe
debug
Ausführliche Ausgabe
rc
Spezielle Option für die Verwendung in der Datei /etc/init.d/network
Tab. 15.6: Die Optionen des Befehls ifup
Der Befehl nimmt die als Konfiguration übergebene Zeichenkette nicht wörtlich, sondern versucht, die am besten passende Konfiguration zu finden. Dazu prüft er, ob es eine entsprechende Konfigurationsdatei gibt. Wenn es zum Beispiel die Konfigurationsdateien ifcfg-eth0, ifcfg-eth-usb, ifcfg-pcmcia-1 gibt, dann wählt der Befehl je nach Aufruf: Aufruf
Konfigurationsdatei
ifup eth0
ifcfg-eth0
ifup usb-o-5 eth1
ifcfg-eth-usb
ifup eth-pcmcia-1 eth1
ifcfg-pcmcia-1
ifup eth-pcmcia-0 eth1
ifcfg-eth0
Tab. 15.7: Aufrufe und Konfigurationsdateien
Die Konfigurationsdateien befinden sich im Verzeichnis /etc/sysconfig/network.
678
Kapitel 15 · Netzwerkgrundlagen
Folgende Variablen können in den Konfigurationsdateien verwendet werden: Variable
Beschreibung
STARTMODE (onboot|manual|hotplug)
Legt fest, wann die Konfiguration aktiviert wird
BOOTPROTO (static|dhcp|bootp|6to4)
Stellt das Protokoll ein. Fehlt es oder ist es static, dann wird eine feste Adresse verwendet.
IPADDR (ipadresse) oder IPADDR (ipadresse-v6)
IP-Adresse, entweder IPv4 oder IPv6
NETMASK (netzmaske)
Netzwerkmaske
BROADCAST (adresse)
Netzwerk-Broadcast-Adresse
REMOTE_IPADDR (adresse)
Die Remote-IP-Adresse einer Punkt-zu-Punkt-Verbindung
Tab. 15.8: Die wichtigsten Variablen des Befehls ifup
Im nachfolgenden Beispiel wird die Netzwerkschnittstelle eth0 aktiviert: # ifup eth0
Der Befehl ifdown Mit Hilfe dieses Befehls können Sie eine vorkonfigurierte Netzwerkschnittstelle deaktivieren. Die Syntax des Befehls lautet: # ifdown konfiguration [interface] [-o option(en)] Der Befehl kennt dieselben Parameter und Optionen wie der Befehl ifup.
Der Befehl ifstatus Mit Hilfe dieses Befehls können Sie Statusinformationen zu einer Netzwerkschnittstelle ausgeben. Die Syntax des Befehls lautet: # ifstatus konfiguration [interface] [-o option(en)] Im folgenden Beispiel wird der Befehl für die Netzwerkschnittstelle eth0 verwendet: # ifstatus eth0 eth0 is up 2: eth0: mtu 1500 qdisc pfifo_fast qlen 100 link/ether 00:c0:26:8e:7b:0c brd ff:ff:ff:ff:ff:ff inet 192.168.60.74/24 brd 192.168.60.255 scope global eth0 inet6 fe80::2c0:26ff:fe8e:7b0c/64 scope link Configured routes for interface eth0: default 192.168.60.200 - Active routes for interface eth0: 192.168.60.0/24 proto kernel scope link src 192.168.60.74 default via 192.168.60.200 0 of 1 configured routes for interface eth0 up
Diesen Befehl kennt Debian Linux nicht.
679
magnum
Netzwerk einrichten
15.2.3
Netzwerk mit YaST einrichten
Sie können die Netzwerkkarte bei SUSE auch mit YAST aktivieren und das Netzwerk entsprechend einrichten. Wählen Sie dazu im YAST-Menü die Punkte NETZWERKGERÄTE - NETZWERKKARTE. YAST initialisiert zuerst die Netzwerkkonfiguration, das heißt, die Daten der vorhandenen Konfigurationsdateien werden eingelesen:
Bild 15.2: Netzwerkkonfiguration initialisieren
In der Regel erkennt Linux gängige Netzwerkkarten automatisch, diese werden hier angezeigt. Im unteren Fensterbereich werden BEREITS KONFIGURIERTE GERÄTE angezeigt:
Bild 15.3: Konfigurierte Netzwerkkarten
680
Kapitel 15 · Netzwerkgrundlagen
Wenn Sie auf ÄNDERN klicken, können Sie die Konfiguration einer Netzwerkkarte anzeigen:
Bild 15.4: Anzeige einer konfigurierten Netzwerkkarte
Die Konfiguration der Netzwerkkarte kann über BEARBEITEN geändert bzw. eine neue mit HINZUFÜGEN eingerichtet oder mit der Schaltfläche LÖSCHEN entfernt werden. Im folgenden Beispiel wird die Konfiguration bearbeitet, zum Beispiel kann die IP-Adresse geändert werden:
Bild 15.5: Netzwerkadresse konfigurieren
Wenn Sie auf RECHNERNAME UND NAMESERVER klicken, können Sie den Hostnamen des Rechners einstellen und einen Nameserver zuweisen:
681
Netzwerk einrichten
magnum
Bild 15.6: Rechnername und Nameserver eintragen
Bestätigen Sie Ihre Einstellungen mit OK oder kehren Sie mit ZURÜCK ins vorherige Menü zurück, ohne die Einstellungen zu speichern. Klicken Sie dann auf ROUTING, um Routinginformationen zu hinterlegen:
Bild 15.7: Routingeinstellungen definieren
Kehren Sie mit OK ins vorherige Fenster zurück. Die Schaltfläche ERWEITERT bietet mehrere Optionen:
Bild 15.8: Schaltfläche ERWEITERT
682
Kapitel 15 · Netzwerkgrundlagen
Die Option HARDWAREDETAILS zeigt ausführliche Informationen zur Netzwerkkarte an, zum Beispiel den Modulnamen:
Bild 15.9: Hardwaredetails der Netzwerkkarte
Die Auswahl OPTIONEN FÜR DHCP-CLIENT bietet die Möglichkeit, die Netzwerkkarte so einzustellen, dass sie automatisch eine IP-Adresse vom DHCP-Server bezieht:
Bild 15.10: Optionen für DHCP-Client
Mit BESONDERE EINSTELLUNGEN können ifconfig) der Netzwerkkarte festlegen:
Sie den MTU-Wert (vergleiche Befehl
683
Netzwerk einrichten
magnum
Bild 15.11: MTU-Wert der Netzwerkkarte einstellen
Mit der letzten Option ZUSÄTZLICHE ADRESSEN können Sie für eine Netzwerkkarte zusätzliche Adressen hinterlegen. Klicken Sie dazu auf HINZUFÜGEN. Mit BEARBEITEN können die Eingaben geändert und mit LÖSCHEN entfernt werden:
Bild 15.12: Zusätzliche Adresse zur Netzwerkkarte hinterlegen
Wenn Sie in das Startfenster zur Bearbeitung der Netzwerkkarten zurückkehren und auf KONFIGURIEREN klicken, können Sie eine Netzwerkkarte manuell konfigurieren:
684
Kapitel 15 · Netzwerkgrundlagen
Bild 15.13: Netzwerkkarte manuell konfigurieren
Geben Sie den Gerätetyp und die laufende Nummer (Konfigurationsname) der Netzwerkkarte und gegebenenfalls das Kernel-Modul an:
Bild 15.14: Gerätetyp auswählen
Sie können auch die Schaltfläche AUSWAHL werkkarte direkt zu wählen:
AUS
LISTE verwenden, um die Netz-
685
Netzwerk einrichten
magnum
Bild 15.15: Netzwerkkarte manuell wählen
Klicken Sie dann auf OK und anschließend auf WEITER. Im nächsten Fenster können Sie wieder die IP-Adresse statisch oder mit DHCP vergeben:
Bild 15.16: Netzwerkkarte konfigurieren
686
Kapitel 15 · Netzwerkgrundlagen
Mit dem YAST-Menü NETZWERKDIENSTE - HOSTNAMEN können Sie dem Rechner ebenfalls einen Hostnamen zuweisen:
Bild 15.17: Hostnamen zuweisen
Klicken Sie dazu auf HINZUFÜGEN bzw. BEARBEITEN, um den Hostnamen zuzuweisen oder zu ändern:
Bild 15.18: Hostnamen zuweisen oder ändern
687
magnum
Netzwerk einrichten
15.2.4
Netzwerk mit Fedora Linux grafisch einrichten
Auch Fedora Core Linux bietet ein grafisches Tool zur Netzwerkkonfiguration. Wählen Sie dazu im KDE-Menü die Optionen SYSTEMWERKZEUGE - NETZWERKGERÄT-KONFIGURATION. Hier wird eine bereits konfigurierte Netzwerkschnittstelle angezeigt, die aktiviert bzw. deaktiviert werden kann:
Bild 15.19: Netzwerkgerät-Kontrolle unter Fedora Linux
Wenn Sie auf Konfigurieren klicken, erscheint das Fenster NETZWERK-KONFIGURATION. Alternativ können Sie es aber auch über das KDE-Menü SYSTEMEINSTELLUNGEN - NETZWERK STARTEN aktivieren. Im ersten Fenster wird die konfigurierte Netzwerkkarte angezeigt. Ist noch keine Netzwerkkarte konfiguriert, klicken Sie auf NEU, um die Konfiguration durchzuführen.
Bild 15.20: Netzwerkkarte konfigurieren
688
Kapitel 15 · Netzwerkgrundlagen
Im nächsten Fenster wird die Hardwarebeschreibung einer konfigurierten Netzwerkkarte angezeigt.
Bild 15.21: Hardwarebeschreibung der Netzwerkkarte
Im Fenster DNS kann ein Domain Name Server zugewiesen werden:
Bild 15.22: DNS-Server zuweisen
Im Fenster HOSTS wird die Loopback-Adresse des Rechners angezeigt:
689
magnum
Wireless LAN
Bild 15.23: Loopback-Adresse anzeigen
15.3 Wireless LAN In diesem Abschnitt wird erläutert, wie Sie Ihre WLAN-Karte einrichten können, falls diese nicht automatisch erkannt wird. Es werden dafür grafische Tools verwendet, KWIFIMANAGER für KDE-Anwender und YAST für SUSE-Linux-Benutzer.
15.3.1
WLAN mit KWiFiManager einrichten
Mit der KWIFIMANAGER-Suite können Sie Ihre Wireless-LAN-PC-Karte konfigurieren und überwachen. Sie zeigt Informationen über die aktuelle Verbindung an und ermöglicht es Ihnen, vier verschiedene unabhängige Konfigurationen einzustellen, die automatisch geladen werden, wenn KDE gestartet wird. KWIFIMANAGER unterstützt jede Wireless-LAN-Karte, die die Wireless-Erweiterungen verwendet, dazu gehören auch viele vom wlan-ng-Projekt unterstützte Karten. Dieses Programm ist unter KDE 3.3.2 bei Debian GNU/Linux im Menü Debian - Apps - Net verfügbar. Bei Fedora Core Linux 4.0 finden Sie das Programm im KDE-Menü Internet. Starten Sie das KDE-Programm unter SUSE Linux aus dem Hauptmenü über die Optionen INTERNET - DATENÜBERTRAGUNG - KWIFI-VERWALTUNG:
690
Kapitel 15 · Netzwerkgrundlagen
Bild 15.24: KWIFIMANAGER-Hauptfenster
KWIFIMANAGER scannt nach Netzwerken und sucht automatisch eine Verbindung. Wenn keine gefunden wird, wird der Zustand auf NOT CONNECTED gesetzt. Das Hauptfenster besteht aus vier Teilen:
쮿
Die Anzeige der Signalqualität (SIGNAL STRENGTH), die die Qualität und den Typ der aktiven Verbindung widerspiegelt. Darüber wird der Zustand der Verbindung mit einem Piktogramm angezeigt: –
Eine PC-Karte mit einem Fragezeichen bedeutet, dass keine Karte gefunden wurde.
–
Ein einzelner Laptop heißt, dass eine PC-Karte vorhanden und einsatzbereit ist, aber es kein Signal von einem Accesspoint gibt. Die Karte befindet sich außerhalb eines Netzwerkbereichs.
–
Eine Box und ein Laptop bedeuten, dass eine Verbindung zu einem Accesspoint besteht.
–
Zwei Laptops bedeuten, dass sich Ihr System in einem Ad-hoc-Modus ohne Accesspoints befindet.
쮿
Die Verbindungsgeschwindigkeit wird im rechten Fensterbereich angezeigt.
쮿
Der Status der aktiven Verbindung wird ebenfalls auf der rechten Seite angezeigt. Bei einer zustande gekommenen Verbindung wird hier das Netzwerk angezeigt, mit dem die Karte verbunden ist bzw. sich zu verbinden versucht. Dann wird die MAC-Adresse des Accesspoints angezeigt, mit dem sich die Karte verbunden hat, und falls vorhanden, Ihre lokale IP-Adresse. Wenn Sie das Programm als root gestartet haben, wird auch noch der Verschlüsselungsstatus angezeigt.
쮿
Ganz unten werden nochmals Informationen über den Accesspoint angezeigt.
Das Programm positioniert automatisch ein Symbol in die linke Seite Ihrer Kontrollleiste. Wenn Sie auf das Symbol mit der linken Maustaste klicken, können Sie das Programm direkt starten.
691
Wireless LAN
magnum
Wenn Sie das Menü CONFIG - CONFIGURATION EDITOR öffnen, können Sie mit Hilfe des root-Passworts die Konfiguration für das Programm durchführen:
Bild 15.25: Konfiguration des KWIFIMANAGERS
Hier können Sie die vier verschiedenen Konfigurationen hinterlegen und auswählen, welche Konfiguration beim Starten verwendet werden soll. Alternativ ist es möglich, eine Verschlüsselung zu aktivieren. Dieselben Einstellungsmöglichkeiten sind auch über das KDE-Kontrollzentrum im Menü INTERNET & NETZWERK DRAHTLOSES NETZWERK vorzunehmen:
Bild 15.26: Drahtloses Netzwerkwerk mit KDE-Kontrollzentrum konfigurieren
692
Kapitel 15 · Netzwerkgrundlagen
15.3.2
WLAN mit YaST einrichten
Auch YAST von SUSE Linux bietet Ihnen die Möglichkeit, Ihre WLAN-Karte zu konfigurieren. Öffnen Sie dazu das YAST-Menü NETZWERKGERÄTE - NETZWERKKARTE. Die Konfiguration stimmt weitestgehend mit der Konfiguration einer nicht drahtlosen Netzwerkkarte überein (vergleiche Abschnitt 15.2.3), deshalb werden hier nur die Abweichungen erläutert. Wenn Ihre WLAN-Karte nicht automatisch erkannt wurde, klicken Sie auf KONFIGURIEREN. Wählen Sie nun als Gerätetyp DRAHTLOS aus:
Bild 15.27: WLAN-Karte mit YAST konfigurieren
Klicken Sie dann auf AUSWAHL AUS LISTE, um die Netzwerkkarte manuell aus der Typenliste zu wählen:
Bild 15.28: WLAN-Karte manuell auswählen
693
magnum
Das Netzwerk überprüfen
Klicken Sie dann auf OK und konfigurieren Sie die Karte entsprechend den Anleitungen in Abschnitt 15.2.3.
15.4 Das Netzwerk überprüfen Der Befehl ping Dieses Programm, das das Internet Control Message Protocol (ICMP) verwendet, überprüft, ob ein Remote-Rechner im Netzwerk erreichbar ist. Dazu werden Datenpakete ausgetauscht. Das Programm erzeugt ICMP-Echo-Request-Pakete, die mit ICMP-Echo-Response-Paketen beantwortet werden, wenn das angegebene System aktiv ist. Sie können den Systemnamen oder die IP-Adresse des Zielsystems angeben. Die Syntax des Befehls lautet: # ping [-option(en)] [rechnername | ip-adresse]
Die wichtigsten Optionen des Befehls sind: Option
Beschreibung
-a
Hörbarer Befehl ping
-b
Ermöglicht es, den Befehl ping auf eine Broadcast-Adresse abzusetzen
-c anzahl
Es wird nur die angegebene Anzahl von ECHO_REQUEST-Paketen gesendet und empfangen.
-f
Für jedes gesendete ECHO_REQUEST-Paket wird ein Punkt und für jedes empfangene ECHO_REPLY ein (æ__) ausgedruckt. Auf diese Weise gibt es einen schnellen Überblick darüber, wie viele Pakete verloren gingen, sofern nicht gezielt das Intervall hochgesetzt wurde. Dieser so genannte »Flood Ping« sollte nur mit Bedacht eingesetzt werden.
-i zahl
Angabe des zu wartenden Zeitintervalls in Sekunden, bevor das nächste Paket versendet wird. Standardmäßig wird eine Sekunde gewartet.
-I schnittstelle
Angabe der für ausgehende Pakete zu verwendenden Schnittstelle
-l anzahl
Der Befehl sendet die angegebene Anzahl von Paketen ab, ohne auf eine Antwort zu warten.
-L
Es erfolgt kein Loopback von Multicast-Paketen.
-n
Anzeige von IP-Adressen anstelle von DNS-Namen
-p muster
Es kann ein bis zu 16 Byte großes Muster angegeben werden, um das zu sendende Paket zu füllen. Damit können datenabhängige Probleme im Netzwerk untersucht werden. Die Bytes werden hexadezimal angegeben, die Option -p ff sendet zum Beispiel Pakete, die nur mit Einsen gefüllt sind.
-q
Stiller Modus
-r
Routingtabellen werden übersprungen und Pakete direkt an den Rechner gesendet.
-R
Die Route des Pakets wird in der IP-Kopfzeile gespeichert.
Tab. 15.9: Die Optionen des Befehls ping
694
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
-s paketgröße
Definiert die Anzahl von Bytes, die gesendet werden sollen. Die Standardeinstellung sind 56 Byte.
-t lebenszeit
Angabe der Lebenszeit der Pakete, das heißt, über wie viele Router hinweg ein Paket geroutet werden soll
-T zeitstempel option
Definiert spezielle IP-Zeitstempel-Optionen, zum Beispiel tsonly (nur Zeitstempel), tsandaddr (Zeitstempel und Adressen) oder tsprespec host1 host2 ... (Zeitstempel mit vorgegebener Anzahl von Hops)
-v
Ausführliche Ausgabe, die alle empfangenen ICMP-Pakete auflistet
-w deadline
Definiert einen Timeout in Sekunden, nach dem sich der Befehl beendet, unabhängig davon, wie viele Pakete gesendet oder empfangen wurden
-W timeout
Definiert die Zeit in Sekunden, in der auf eine Antwort gewartet wird
Tab. 15.9: Die Optionen des Befehls ping (Forts.)
Im nachfolgenden Beispiel werden 3 Pakete an den Rechner suso2 gesandt: $ ping –c 3 suso2 PING suso2.hertzog-edv.de (192.165.171.134) 56(84) bytes of data. 64 bytes from pclsu3.hertzog-edv.de (192.165.171.134): icmp_seq=1 ttl=64 time=0.1 47 ms 64 bytes from suso2.hertzog-edv.de (192.165.171.134): icmp_seq=2 ttl=64 time=0.1 79 ms 64 bytes from suso2.hertzog-edv.de (192.165.171.134): icmp_seq=3 ttl=64 time=0.1 88 ms --- suso2.hertzog-edv.de ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.147/0.171/0.188/0.020 ms
Der Befehl traceroute Dieser Befehl verfolgt den Weg eines IP-Pakets von einem Rechner zu einem anderen Rechner. Damit lässt sich feststellen, welchen Weg die Datenpakete zu einem Remote-Rechner nehmen, die Geschwindigkeit dieser Route und welche »Lebensdauer« die Pakete haben. Es werden nur der Rechnername oder die IP-Adresse als Parameter übergeben. Die Syntax des Befehls lautet: # traceroute [-option(en)] [rechnername | ip-adresse]
Die Optionen des Befehls sind: Option
Beschreibung
-6 oder -4
Das Tracerouting für IPv6 bzw. IPv4 explizit erzwingen. Standardmäßig wählt der Befehl IPv4.
-F
Die Fragmentierung von Netzpaketen wird unterdrückt.
-f firsthop
Überschreibt den Wert, ab welchem Zwischensystem das Routing angezeigt werden soll, der standardmäßig auf 1 gesetzt ist
Tab. 15.10: Die Optionen des Befehls traceroute
695
magnum
Das Netzwerk überprüfen
Option
Beschreibung
-g gateway
Definiert die Verwendung eines zusätzlichen Gateways. Nicht sehr nützlich, da die meisten Router das Source-Routing aus Sicherheitsgründen deaktiviert haben
-I interface
Definiert die Schnittstelle, über die der Befehl die Pakete senden soll
-m maxhop
Die Standardeinstellung für die maximale Restlebenszeit mit einem Wert von 30 wird ignoriert und neu definiert.
-n
IP-Adressen werden nicht in Namen umgesetzt.
-p port
Definiert den Basis-UDP-Port, der beim Testen verwendet wird und dessen Standardwert 33.434 lautet
-q abfragen
Angabe der Anzahl von Abfragen beim Testen, die standardmäßig 3 ist
-r
Die Routingtabellen werden übersprungen und die Pakete direkt an den Rechner im Netzwerk gesendet.
-S quelladresse
Definiert die Quelladresse für das Senden von Paketen
-t diensttyp
Definiert den Typ des Dienstes für ausgehende Pakete mit einem Wert zwischen 16 (niedrig) und 8 (hoch)
-w sekunden
Angabe der Zeit, um auf eine Antwort eines Testpakets zu warten. Der Standardwert ist 5.
Tab. 15.10: Die Optionen des Befehls traceroute (Forts.)
Im folgenden Beispiel wird traceroute verwendet, um den Weg zu einem URL nachzuvollziehen: $ traceroute www.linux.org traceroute to www.linux.org (198.182.196.56), 30 hops max, 1 dsl.hertzog-edv.de (192.165.171.200) 1.723 ms 0.473 2 217.5.98.83 68.737 ms 72.070 ms 75.860 ms 3 217.237.154.102 80.160 ms 85.891 ms 91.962 ms 4 was-e4.WAS.US.net.DTAG.DE (62.154.14.134) 198.360 ms ms 5 62.156.139.22 217.990 ms * * ... 13 www.linux.org (198.182.196.56) 584.957 ms 300.612 ms
40 byte packets ms 0.501 ms 204.090 ms
210.317
380.004 ms
Der Befehl arp Das Address Resolution Protocol (ARP) ordnet IP-Adressen MAC-Adressen oder Ethernetadressen zu. Dafür wird eine Adressumwandlungstabelle verwendet, die das Protokoll ARP normalerweise selbständig aktualisiert. Mit dem Befehl arp kann diese Tabelle manuell verändert werden. Die Syntax des Befehls lautet: # arp [-option(en)] [rechnername]
696
Kapitel 15 · Netzwerkgrundlagen
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a [hostname] oder --all [hostname]
Ausgabe des aktuellen Inhalts der ganzen Tabelle oder zum angegebenen Rechnernamen
-d hostname oder --delete hostname
Löschen des angegebenen Rechners aus der Tabelle
-f datei oder --file datei
Einlesen der Einträge aus der angegebenen Datei
-H typ oder --hw-type typ
Beim Lesen oder Schreiben des ARP-Caches wird dem Befehl die Information gegeben, welche Eintragsklassen überprüft werden sollen. Der Standardtyp ist ether für Ethernet.
-i interface oder --device interface
Wählt eine Schnittstelle aus. Bei der Ausgabe des ARP-Caches werden in diesem Fall nur Einträge für diese Schnittstelle ausgegeben.
-n oder --numeric
Anzeige von numerischen Adressen, anstatt diese in Namen aufzulösen
-s hostname adresse
Hinzufügen eines manuellen Eintrags für einen Rechner
oder
--set hostname -v oder --verbose
Ausführlicher Modus
Tab. 15.11: Die Optionen des Befehls arp
Im nachfolgenden Beispiel wird der aktuelle Inhalt der Tabelle ausgegeben: # arp -a pc3w2k.hertzog-edv.de (192.165.171.141) at 00:0C:76:98:3E:5C [ether] on eth0 pclsu3.hertzog-edv.de (192.165.171.134) at 00:0A:E6:63:AD:9C [ether] on eth0
Der Befehl netstat Dieser Befehl gibt aktuelle Netzwerkinformationen des lokalen Rechners aus und kann dazu verwendet werden, alle Netzwerkverbindungen des lokalen Systems, Routingtabellen und Informationen der Netzwerkschnittstelle anzuzeigen. Die Syntax des Befehls lautet: # netstat [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --all
Anzeige aller Informationen zu aktiven und nicht aktiven Socketverbindungen
-c oder --continuous
Diese Option bewirkt, dass die ausgewählten Informationen jede Sekunde ununterbrochen ausgegeben werden.
-C
Anzeige der Routinginformationen aus dem Route-Cache
Tab. 15.12: Die Optionen des Befehls netstat
697
magnum
Das Netzwerk überprüfen
Option
Beschreibung
-e oder --extend
Anzeige von zusätzlichen Informationen
-g oder --groups
Anzeige der Tabellen mit den eingetragenen Multicast-Mitgliedern für jede Schnittstelle
-i interface oder --interface=interface
Anzeige des Status der angegebenen Schnittstelle oder aller Netzwerkschnittstellen
-l oder --listening
Nur aktive Sockets anzeigen
-M oder --masquerade
Anzeige von Liste von maskierten Verbindungen
-n oder --numeric
Numerische Adressen wie Hostnamen, Portnummern oder Benutzernamen werden nicht in symbolische Namen umgesetzt.
--numeric-hosts
Numerische Hostadressen werden nicht in Hostnamen umgesetzt.
--numeric-prots
Numerische Portnummern werden nicht in symbolische Namen umgesetzt.
--numeric-users
Numerische Benutzer-IDs werden nicht in Benutzernamen umgesetzt.
-o oder --timers
Auch Informationen anzeigen, die sich auf die Netzwerk-Timer beziehen
-p oder --programm
Anzeige der Programm-ID und des Programmnamens, zu dem jeder Socket gehört
-A protokoll oder --protocol=protokoll
Anzeige der Statistiken nur für die angegebenen Adressfamilien, zum Beispiel inet, unix, ipx usw.
-r oder --route
Anzeige der aktuellen Routingtabelle des Kernels
-s oder --statistics
Anzeige von Statistiken für Protokoll, wie zum Beispiel tcp oder udp
-v oder --verbose
Ausführliche Ausgabe von Informationen
Tab. 15.12: Die Optionen des Befehls netstat (Forts.)
Der Befehl netstat überprüft, welche Remote-Rechner mit dem lokalen System verbunden sind, und gibt das Netzwerkprotokoll aus: # netstat | more Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 2 pclsu7.hertzog-e:telnet pc3w2k.hertzog-edv.:vfo ESTABLISHED tcp 0 0 pclsu7.hertzog-ed:32978 pclsu3.hert:netbios-ssn TIME_WAIT Active UNIX domain sockets (w/o servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ] DGRAM 1308 /var/lib/dhcp/dev/log unix 2 [ ] DGRAM 1310 /var/lib/named/dev/log unix 10 [ ] DGRAM 1297 /dev/log ...
698
Kapitel 15 · Netzwerkgrundlagen
Der Status eines TCP-Sockets (Kommunikationsports) kann einen der folgenden Werte annehmen: Status
Beschreibung
CLOSED
Der Socket ist geschlossen und wird nicht verwendet.
CLOSE_WAIT
Der Remote-Rechner hat die Verbindung beendet und der lokale Rechner wartet auf das Schließen des Sockets.
CLOSING
Der Socket ist geschlossen und die Remote-Verbindung beendet, aber der Socket wartet noch auf die Bestätigung.
ESTABLISHED
Eine TCP/IP-Verbindung wurde aufgebaut und ist aktiv.
FIN_WAIT_1
Der Socket wurde erfolgreich geschlossen und wartet auf das Beenden der Verbindung.
FIN_WAIT_2
Der Socket wurde geschlossen und wartet auf das Beenden der Verbindung durch den Remote-Rechner.
LAST_ACK
Die Verbindung des Remote-Rechners wurde geschlossen und beendet und der Rechner wartet auf die Bestätigung.
LISTEN
Der Socket horcht im Moment, das heißt, es werden von Daemons und Servern Prozesse gestartet, die Sockets öffnen.
SYN_SENT
Der Socket versucht, eine Verbindung mit einem Remote-Rechner herzustellen.
SYN_RECEIVED
Auf eine Synchronisationsanfrage wurde eine Antwort gesendet und die Verbindung wird hergestellt.
TIME_WAIT
Der Socket wurde geschlossen und wartet auf die Rückmeldung des Remote-Rechners, dass dieser die Verbindung beendet hat.
UNKNOWN
Der Status ist unbekannt.
Tab. 15.13: Status der TCP-Sockets
Der Befehl rpcinfo Dieser Befehl verwendet RPC-Aufrufe, um RPC-Informationen für den lokalen und den Remote-Rechner anzuzeigen. Er kann die Ports der rpcbind-Dienste abfragen und verändern oder die Verfügbarkeit eines Dienstes überprüfen. RPC (Remote Procedure Call) ist ein Netzwerkprotokoll, mit dessen Hilfe Funktionsaufrufe über ein Netzwerk an Remote-Rechner gesendet werden können. Die Syntax des Befehls lautet: # rpcinfo [–option(en)] hostname dienst
oder: # rpcinfo [–option(en)] dienst version
699
magnum
Das Netzwerk überprüfen
Der Befehl kennt folgende Optionen: Option
Beschreibung
-b dienst version
Versenden eines Broadcasts an alle Rechner im Netzwerk mit der Anfrage nach dem angegebenen Dienst und seiner Versionsnummer
-d dienst version
Löscht die Registrierung des RPC-Dienstes, dessen Programm- und Versionsnummer angegeben wird
-n portnummer
Verwendet die angegebene Portnummer bei den Optionen -t und -u
-p hostname
Testet den Portmapper für den angegebenen Rechner und gibt eine Liste aller registrierten RPC-Dienste aus. Wird der Rechnername nicht angegeben, wird der Befehl auf den Rechnernamen angewandt, der durch den Befehl hostname ausgegeben wird.
-t
Führt einen RPC-Aufruf über TCP an das angegebene Programm und den angegebenen Rechner durch. Anschließend wird ausgegeben, ob eine Antwort empfangen wurde.
-u
Führt einen RPC-Aufruf über UDP an das angegebene Programm und den angegebenen Rechner durch. Anschließend wird ausgegeben, ob eine Antwort empfangen wurde.
Tab. 15.14: Die Optionen des Befehls rpcinfo
Im folgenden Beispiel wird der Befehl den aktuellen Rechner zu testen:
rpcinfo
verwendet, um den Portmapper für
# rpcinfo -p program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100021 1 udp 32768 nlockmgr 100021 3 udp 32768 nlockmgr 100021 4 udp 32768 nlockmgr 100021 1 tcp 32768 nlockmgr 100021 3 tcp 32768 nlockmgr 100021 4 tcp 32768 nlockmgr
Der Befehl tcpdump Dieser Befehl analysiert die im Netzwerk versendeten Pakete und protokolliert den Netzwerkverkehr mit. Die Syntax des Befehls lautet: # tcpdump [–option(en)]
Der Befehl kennt folgende wichtige Optionen: Option
Beschreibung
-a
Konvertiert Netzwerk- und Broadcast-Adressen in Namen
-c anzahl
Der Befehl endet nach dem Erhalt von anzahl Paketen.
Tab. 15.15: Die Optionen des Befehls tcpdump
700
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
-C dateigröße
Überprüft vor dem Schreiben eines Raw-Pakets in eine Datei, ob die Datei im Moment größer als die Angabe dateigröße ist und schließt in diesem Fall die Datei und öffnet eine neue. dateigröße wird in Millionen Byte (1.000.000) angegeben.
-d
Gibt den kompilierten, mit dem Paket übereinstimmenden Code in visueller Form an der Standardausgabe aus
-f
Gibt »fremde« Internetadressen numerisch und nicht symbolisch aus
-F datei
Verwendet datei als Eingabe für den Filterausdruck
-i interface
Horcht an der Schnittstelle. Wird diese nicht angegeben, sucht der Befehl die mit der niedrigsten Nummer konfigurierte Schnittstelle.
-l
Puffert die Zeilen der Standardausgabe, wodurch die Daten besser überprüft werden können, zum Beispiel: tcpdump -l | tee dat oder tcpdump -l > dat & tail -f dat
-m modul
Lädt SMI-MIB-Moduldefinitionen aus dem Dateimodul
-n
Konvertiert Adressen nicht in Namen (Hostadressen, Portnummern etc.)
-N
Gibt keine Domänennamenqualifikation des Hostnamens aus. Wenn Sie diese Option verwenden, gibt der Befehl zum Beispiel nic statt nic.ddn.mil aus.
-O
Startet den optimierenden Code zu Paketübereinstimmung nicht
-p
Stellt die Schnittstelle nicht in den Promiscuous-Modus
-q
Schnelle, stille Ausgabe. Gibt weniger Protokollinformationen aus, so dass die Ausgabezeilen kürzer sind
-r datei
Liest Pakete aus datei (die mit der Option -w erstellt wurde)
-S
Gibt die absoluten anstelle der relativen TCP-Sequenznummern aus
-T typ
Erzwingt, dass Pakete, die durch den ausdruck gewählt wurden, mit dem angegebenen Typ interpretiert werden, zum Beispiel: cnfp (Cisco NetFlow protocol), rpc (Remote Procedure Call), rtp (Real-Time Applications protocol), rtcp (Real-Time Applications control protocol), snmp (Simple Network Management Protocol), vat (Visual Audio Tool) und wb (distributed White Board)
-t
Gibt keinen Zeitstempel in jeder Zeile aus
-v
Etwas ausführlicherer Modus
-vv
Noch ausführlicherer Modus
-vvv
Ausführlichster Modus
-w datei
Schreib die Raw-Pakete in die Datei anstatt sie zu analysieren und auszugeben
Tab. 15.15: Die Optionen des Befehls tcpdump (Forts.)
701
magnum
Das Netzwerk überprüfen
Im folgenden Beispiel wird der Befehl tcpdump ohne Optionen verwendet # tcpdump tcpdump: listening on eth0 21:14:11.138434 pc3lsu.hertzog-edv.de.telnet > pc4w2k.hertzog-edv.de.dif-port: 3483918839:3483918867(28) ack 627197292 win 5840 (DF) [tos 0x10] 21:14:11.295999 pc4w2k.hertzog-edv.de.1038 > pc3lsu.hertzog-edv.de.netbios-ssn:. 1522285694:1522287154(1460) ack 1747988824 win 64553 NBT Packet (DF) 21:14:11.296098 pc4w2k.hertzog-edv.de.1038 > pc3lsu.hertzog-edv.de.netbios-ssn:. 1460:2920(1460) ack 1 win 64553 NBT Packet (DF) 21:14:11.296129 pc3lsu.hertzog-edv.de.netbios-ssn > pc4w2k.hertzog-edv.de.1038:. ack 2920 win 62780 (DF) [tos 0x10] 21:14:11.296222 pc4w2k.hertzog-edv.de.1038 > pc3lsu.hertzog-edv.de.netbios-ssn:. 2920:4380(1460) ack 1 win 64553 NBT Packet (DF) 21:14:11.296346 pc4w2k.hertzog-edv.de.1038 > pc3lsu.hertzog-edv.de.netbios-ssn:. 4380:5840(1460) ack 1 win 64553 NBT Packet (DF) ...
Im nächsten Beispiel werden alle Pakete von und zum Rechner pc3lsu mitprotokolliert, aber nur Host- und keine qualifizierten Domänennamen werden ausgegeben: # tcpdump -N host pc3lsu tcpdump: listening on eth0 21:17:20.570761 pc4w2k.dif-port 21:17:20.570831 pc3lsu.telnet > [tos 0x10] 21:17:20.789557 pc4w2k.dif-port 21:17:20.789630 pc3lsu.telnet > (DF) [tos 0x10] ...
15.4.1
> pc3lsu.telnet: . ack 3483934999 win 64322 (DF) pc4w2k.dif-port: P 1:29(28) ack 0 win 5840 (DF) > pc3lsu.telnet: . ack 29 win 64294 (DF) pc4w2k.dif-port: P 29:204(175) ack 0 win 5840
Grafische Netzwerktools
Es gibt grafische Alternativen, um das Netzwerk zu überwachen.
Das Programm ethereal Das Programm ethereal analysiert und protokolliert den Netzwerkverkehr auf übersichtliche Weise. Rufen Sie den Befehl ethereal & in einem Terminalfenster auf:
Bild 15.29: Das Programm ethereal
702
Kapitel 15 · Netzwerkgrundlagen
Über die Menüfolge CAPTURE - START oder die entsprechende Schaltfläche können Sie die Protokollierung aktivieren. Gegebenenfalls, zum Beispiel wenn Sie mehrere Netzwerkkarten haben, müssen Sie zuerst über die Option CAPTURE - OPTIONS die Einstellungen öffnen und die gewünschte Netzwerkkarte auswählen. Legen Sie dann die gewünschten Einstellungen fest und klicken Sie auf OK:
Bild 15.30: Optionen für ethereal festlegen
In einem kleinen Fenster protokolliert bis Sie auf STOP klicken:
ethereal
nun alle Netzwerkaktivitäten mit,
Bild 15.31: Netzwerkaktivitäten mit ethereal überwachen
703
Das Netzwerk überprüfen
magnum
Die mitprotokollierten Daten werden nun angezeigt und können von Ihnen ausgewertet werden:
Bild 15.32: Protokoll von ethereal
Das Programm iptraf Das Programm iptraf analysiert ebenfalls den Netzwerkverkehr, allerdings in einem Terminal ohne grafische Elemente. Rufen Sie den Befehl iptraf in einem Terminalfenster auf:
Bild 15.33: Das Programm iptraf starten
704
Kapitel 15 · Netzwerkgrundlagen
Sie können das Programm mit Hilfe der hervorgehobenen Buchstaben für die Menüpunkte oder über die Pfeiltasten steuern. In unserem Beispiel wählen wir den Menüpunkt IP TRAFFIC MONITOR:
Bild 15.34: Netzwerkverkehr mit iptraf überwachen
Wenn Sie aus dem Hauptmenü DETAILED INTERFACE STATISTICS für Ihre Netzwerkkarte zum Beispiel eth0 wählen, erhalten Sie eine Übersicht:
Bild 15.35: Detaillierte Übersicht mit iptraf
Auch iptraf lässt es zu, dass Sie anschließend die protokollierten Daten filtern und analysieren.
705
Das Netzwerk überprüfen
15.4.2
magnum
Im Netzwerk arbeiten
Der Befehl telnet Mit diesem Befehl lassen sich sehr einfach Verbindungen zwischen Rechnern herstellen, deren Betriebssysteme unterschiedlich sein können. Er meldet sich mit dem telnet-Protokoll an einem Remote-Rechner an. Mit Hilfe dieses Befehls kann man auch einen ausgewählten Port oder Dienst mit einem Remote-Rechner verbinden. Die Syntax des Befehls lautet: # telnet [-option(en)][rechner [port]]
Es wird nicht empfohlen, den Befehl telnet für das Einrichten von Remote-Verbindungen zu verwenden, wenn der Befehl ssh zur Verfügung steht. telnet überträgt alle Angaben, auch Passwörter, unverschlüsselt über das Netzwerk, so dass es jemandem, der das Netzwerk abhorcht, möglich ist, an die unverschlüsselten Passwörter zu gelangen. Der Befehl kennt folgende Optionen. Diese Optionen sind allerdings nicht bei allen Distributionen standardmäßig vorhanden: Option
Beschreibung
-8
Aktivieren des 8-Bit-Betriebs
-a
Eine automatische Anmeldung wird versucht. Diese Option sendet die Variable USER der Option ENVIRON, wenn dies vom Remote-System unterstützt wird.
-b hostalias
Der lokale Socket wird an eine Alias-Adresse gebunden oder an die Adresse einer anderen Schnittstelle als die bei der Verbindung ausgewählte Adresse.
-c
Die Konfigurationsdatei .telnetrc wird nicht gelesen. Diese Option steht nicht bei allen Distributionen zur Verfügung.
-d
Aktivieren des Debug-Modus
-e zeichen
Definition des Escape-Zeichens. Diese Option steht nicht bei allen Distributionen zur Verfügung.
-E
Unterdrücken aller Escape-Sequenzen
-f
Wenn die Kerberos V5-Authentifizierung verwendet wird, werden die lokalen Berechtigungsnachweise aufgrund dieser Option an das Remote-System weitergeleitet. Diese Option steht nicht bei allen Distributionen zur Verfügung.
-F
Wenn die Kerberos V5-Authentifizierung verwendet wird, werden die lokalen Berechtigungsnachweise aufgrund dieser Option an das Remote-System weitergeleitet, einschließlich aller Berechtigungsnachweise, die bereits an die lokale Umgebung weitergeleitet wurden.
-K
Verhindert ein automatisches Anmelden am Remote-System
-L
Aktivieren des 8-Bit-Betriebs für die Ausgabe
-l benutzer
Definition des aktuellen Benutzernamens für die Anmeldung
Tab. 15.16: Die Optionen des Befehls telnet
706
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
-n datei
Angabe der Protokolldatei für die Sitzung
-r
Definiert eine Benutzerschnittstelle, die der des Befehls rlogin ähnlich ist. Diese Option steht nicht bei allen Distributionen zur Verfügung.
-S servicetyp
Definiert die IP-Option TOS (type-of-service) für die Verbindung mit telnet auf den angegebenen Typ
-x
Aktiviert die Verschlüsselung des Datenstroms, wenn dies möglich ist
-X auth-typ
Deaktiviert den angegebenen Authentifizierungstyp
Tab. 15.16: Die Optionen des Befehls telnet (Forts.)
Für die Kommunikation gibt es folgende Befehle: Befehl
Beschreibung
?
Anzeige aller verfügbaren Befehle. Nach dem Fragezeichen kann man auch den Namen des Befehls eingeben, zu dem Hilfe benötigt wird.
auth arg
Dieser Befehl bearbeitet die Informationen, die über die Option TELNET AUTHENTICATE versandt werden. Gültige Argumente sind: disable typ enable typ status
deaktiviert den angegebenen Authentifizierungstyp aktiviert den angegebenen Authentifizierungstyp gibt den aktuellen Status der verschiedenen Authentifizierungstyp aus
close
Die aktuelle Sitzung wird geschlossen und das Programm beendet.
display arg
Anzeige der definierten Parameterwerte
encrypt arg
Dieser Befehl bearbeitet die Informationen, die über die Option TELNET ENCRYPT versandt werden. Gültige Argumente sind: disable typ [input|output] enable typ [input|output] input bzw. -input
deaktiviert den angegebenen Verschlüsselungstyp aktiviert den angegebenen Verschlüsselungstyp entspricht dem Befehl encrypt start input bzw. encrypt stop input
output bzw. -output
entspricht dem Befehl encrypt start output bzw. encrypt stop output
start [input|output] status stop [input|output] type typ environ arg
Dieser Befehl bearbeitet die Informationen, die über die Option TELNET ENVIRON versandt werden. Gültige Argumente sind: define var wert undefine var export var unexport var list
logout
versucht, die Verschlüsselung zu starten gibt den aktuellen Verschlüsselungsstatus aus beendet die Verschlüsselung definiert den Standardtyp der Verschlüsselung
Definition einer Variablen Löschen einer Variablen Exportieren einer Variablen an den Remote-Rechner Die Variable wird nicht exportiert, wenn der Remote-Rechner diese nicht explizit anfordert. gibt alle aktuell gesetzten Variablen aus
Beendet die Sitzung, wenn der Remote-Rechner den Befehl logout unterstützt
Tab. 15.17: Die Befehle für eine Verbindung mit telnet
707
Das Netzwerk überprüfen
magnum
Befehl
Beschreibung
mode typ
Der Status der aktuellen telnet-Sitzung kann durch verschiedene Typen beeinflusst werden: character deaktiviert den TELNET LINEMODE aktiviert den TELNET LINEMODE line versucht, den EDIT-Modus der Option LINEMODE [-]edit zu aktivieren bzw. zu deaktivieren [-]isig versucht, den TRAPSIG-Modus der Option LINEMODE zu aktivieren bzw. zu deaktivieren [-]softtabs versucht, den SOFT_TAB-Modus der Option LINEMODE zu aktivieren bzw. zu deaktivieren [-]litecho versucht, den LIT_ECHO-Modus der Option LINEMODE zu aktivieren bzw. zu deaktivieren
open rechner
Öffnen einer Verbindung mit dem angegebenen Rechner
quit
Siehe close
send arg
Senden von Steuersequenzen an den Remote-Rechner; send ip zum Beispiel bricht Prozesse auf einem blockierten Terminal ab. Weitere Steuersequenzen sind: escape, synch, brk, ip, abort, ao, ayt, ec, el, eof, eor, ga, getstatus, nop, susp
set arg wert
Setzt zum Beispiel eines der folgenden Argumente: Echo Aktivieren des lokalen Echos Escape definiert das Escape-Zeichen Interrupt definiert das Interrupt-Zeichen Quit definiert das Zeichen zum Beenden Erase definiert das Zeichen zum Löschen Eof definiert das EOF-Zeichen Start definiert das Start-Zeichen Stop definiert das Stopp-Zeichen Tracefile definiert die Protokolldatei
status
Anzeige des Status von telnet
toggle arg
Aktiviert oder deaktiviert die folgenden Parameter: autoflush, autosynch, binary, inbinary, outbinary, crlf, crmode, debug, localchars, netdata, options, prettydump, skiprc, termdata
Mit dem Befehl toggle ? werden alle verfügbaren Parameter angezeigt. unset arg
Löscht eines der mit set definierten Argumente
z
Stellt telnet in den Hintergrund und ermöglicht die Arbeit mit einer Shell (funktioniert nur in der C-Shell und Bourne-Again-Shell)
Tab. 15.17: Die Befehle für eine Verbindung mit telnet (Forts.)
Im nachfolgenden Beispiel wird eine Verbindung zum Rechner suso2 hergestellt: $ telnet suso2 Trying 192.168.6.1... Connected to suso2. Escape character is '^]'. login:
708
Kapitel 15 · Netzwerkgrundlagen
Der Befehl ftp Das File Transfer Protocol (FTP) kann Dateien über das Netzwerk zwischen Rechnern übertragen, wobei auf dem Remote-Server der Daemon in.ftpd aktiviert sein muss. Die Syntax des Befehls lautet: # ftp [-option(en)][rechner]
Es wird nicht empfohlen, den Befehl ftp für das Übertragen von Dateien zu verwenden, wenn der Befehl scp zur Verfügung steht. ftp überträgt alle Angaben, auch Passwörter, unverschlüsselt über das Netzwerk, so dass es jemandem, der das Netzwerk abhorcht, möglich ist, an die unverschlüsselten Passwörter zu gelangen. Eine Ausnahme bildet das so genannte Anonymous FTP, das kein oder ein beliebiges Passwort verlangt. Der Befehl kennt folgende Optionen, die aber nicht bei allen Distributionen in diesem Umfang zur Verfügung stehen: Option
Beschreibung
-A
Erzwingt den aktiven Modus des Befehls. Standardmäßig wird der passive Modus verwendet, der allerdings auf alten Servern nicht immer implementiert ist.
-a
Die normale Anmeldeprozedur wird übersprungen und stattdessen eine anonyme Anmeldung durchgeführt.
-d
Aktivieren des Debug-Modus
-e
Deaktiviert die Editiermöglichkeit der Befehlszeile
-f
Erzwingt, dass der Cache bei Übertragungen, die über FTP- oder HTTP-Proxys gehen, neu geladen wird
-g
Deaktiviert die Dateinamenserweiterung
-i
Keine interaktive Abfrage für jede Datei beim Übertragen von mehreren Dateien
-n
Die automatische Anmeldung wird gesperrt, das heißt, die Datei .netrc wird nicht gelesen.
-o output
Wenn Dateien automatisch geholt werden, werden die Inhalte in der angegebenen Ausgabedatei gespeichert
-p
Aktiviert den passiven Modus, der hinter Firewalls verwendet wird, die Verbindungen filtern
-P port
Weist dem Port die angegebene Nummer zu
-r sekunden
Wartet die angegebene Zeit in Sekunden, bevor versucht wird, eine abgebrochene Verbindung wiederherzustellen
-t
Aktiviert das Nachverfolgen von Paketen
Tab. 15.18: Die Optionen des Befehls ftp
709
magnum
Das Netzwerk überprüfen
Option
Beschreibung
-T richtung,
Setzt die maximale Übertragungsrate auf den angegebenen Maximalwert in Byte/Sekunden und, wenn angegeben, das Inkrement ebenfalls auf Byte/Sekunden
-u url datei
Lädt Dateien an der Befehlszeile auf die angegebene URL hoch, wenn die URL von der Option des automatischen Hochladens unterstützt wird
-v
Aktiviert den ausführlichen Modus
-V
Deaktiviert den ausführlichen Modus
maximum [,inkrement]
Tab. 15.18: Die Optionen des Befehls ftp (Forts.)
Im Homeverzeichnis eines Benutzers lässt sich eine Datei .netrc erstellen, um die Datenübertragung mit ftp zu automatisieren. Diese Datei muss Informationen über den Rechnernamen, den Anmeldenamen und das Passwort enthalten. Um zu vermeiden, dass andere Benutzer diese Datei lesen, sollten die Zugriffsrechte auf den Wert 600 gesetzt werden. Für eine FTP-Sitzung können verschiedene Befehle verwendet werden. Zu den wichtigsten gehören: Befehl
Beschreibung
? befehl
Siehe help
! befehl
Ausführung des angegebenen Befehls in einer Shell bzw. ohne Angabe eines Befehls Verzweigen in eine Shell und anschließendes Beenden mit exit
account [passwd]
Liefert ein zusätzliches Passwort, das vom Remote-System benötigt wird
append datei1 datei2
Anhängen einer lokalen Datei an eine Remote-Datei
ascii
Einstellen des Übertragungsmodus auf ASCII
bell
Senden eines Signaltons nach jeder Dateiübertragung
binary
Einstellen des Übertragungsmodus auf binär
bye
Schließen der Sitzung und Beenden des Programms
case
Aktiviert die Unterscheidung von Groß- und Kleinschreibung. Standardmäßig ist die Unterscheidung ausgeschaltet (off).
cd verzeichnis
Wechseln in das angegebene Verzeichnis auf dem Remote-Rechner
cdup
Wechseln in das übergeordnete Verzeichnis auf dem Remote-Rechner
chmod modi datei
Ändert die Berechtigungen einer Datei auf dem Remote-System
close
Schließen der FTP-Sitzung
Tab. 15.19: Befehle des FTP-Protokolls
710
Kapitel 15 · Netzwerkgrundlagen
Befehl
Beschreibung
cr
Aktiviert die Unterdrückung der Zeilenschaltung (carriage return) beim ASCII-Modus
debug
Aktivieren des Debug-Modus. Die Standardeinstellung ist off.
delete datei
Löscht eine Datei auf dem Remote-Rechner
dir
Anzeige des Inhalts eines Verzeichnisses
disconnect
Siehe close
get datei [dateineu]
Kopiert eine Datei vom Remote-Rechner auf den lokalen Rechner, gegebenenfalls auf einen neuen Dateinamen, wenn dieser angegeben wird
help befehl
Ausgabe einer Hilfe zu einem Befehl bzw. ohne Angabe eines Befehls Ausgabe der Liste mit den möglichen Befehlen
lcd verzeichnis
Wechseln in das angegebene Verzeichnis auf dem lokalen Rechner
ls
Anzeige des Inhalts eines Verzeichnisses
mdelete dateien
Löschen aller angegebenen Dateien
mdir dateien
Auflisten aller angegebenen Dateien oder Verzeichnisse
mget dateien
Herunterladen aller angegebenen Dateien vom Remote-Rechner
mkdir verzeichnis
Erstellen eines Verzeichnisses auf dem Remote-Rechner
mls dateien
Auflisten aller angegebenen Dateien oder Verzeichnisse
more datei
Listet den Inhalt der angegebenen Datei auf
mput dateien
Kopieren aller angegebenen Dateien auf den Remote-Rechner
put datei [dateineu]
Kopiert eine Datei auf den Remote-Rechner. Wenn ein weiterer Dateiname angegeben wird, wird die Datei beim Kopieren in diesen Dateinamen umbenannt.
pwd
Anzeige des aktuellen Arbeitsverzeichnisses auf dem Remote-Rechner
quit
Siehe bye
rename datei1 datei2
Umbenennen einer Datei
rmdir verzeichnis
Löschen des angegebenen Verzeichnisses auf dem Remote-Rechner
status
Anzeige des aktuellen Status
verbose
Aktivieren des ausführlichen Modus
Tab. 15.19: Befehle des FTP-Protokolls (Forts.)
711
Das Netzwerk überprüfen
magnum
Der Befehl wird ebenfalls gemeinsam mit einem Rechnernamen aufgerufen: $ ftp suso2 Connected to suso2. 220 suso2 FTP server ready. Name (suso2:her):
Der Benutzer muss dann wie bei telnet den Benutzernamen und sein Passwort angeben. Bei erfolgreicher Verbindung erscheint ein Promptzeichen des RemoteRechners. FTP kann auch funktionieren, wenn man auf dem fernen Rechner keine Benutzerberechtigung hat, denn viele Rechner bieten einen Zugang über so genanntes »anonymes« FTP an. Es gibt auch eine vereinfachte Variante von ftp mit der Bezeichnung tftp, die vor allem bei der Übertragung von Bootdateien zum Starten des Betriebssystems von Diskless Clients verwendet wird.
Der Befehl rlogin Mit diesem Befehl können Sie sich an einem Remote-Rechner in einem homogenen Linux- bzw. Unix-Netzwerk anmelden, statt telnet zu verwenden. In einer Trusted Host-Umgebung ist durch die Verwendung der Dateien $HOST/.rhosts oder /etc/hosts.equiv gegebenenfalls keine Angabe des Passworts notwendig. Bei einigen Distributionen sind die Befehle rlogin, rcp usw. Links auf die Befehle ssh, scp usw. Die Syntax des Befehls lautet: # rlogin [-option(en)] rechner
Es wird nicht empfohlen, den Befehl rlogin für das Einrichten von Remote-Verbindungen zu verwenden, wenn der Befehl ssh zur Verfügung steht. rlogin überträgt alle Angaben, auch Passwörter, unverschlüsselt über das Netzwerk, so dass es jemandem, der das Netzwerk abhorcht, möglich ist, an die unverschlüsselten Passwörter zu gelangen. Besonders gefährlich ist die Verwendung der Dateien .rhosts und hosts.equiv. Der Befehl kennt folgende Optionen: Option
Beschreibung
-8
Aktivieren des 8-Bit-Betriebs
-d
Aktivieren des Debug-Modus
-e zeichen
Definition des Escape-Zeichens
Tab. 15.20: Die Optionen des Befehls rlogin
712
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
-E
Unterdrücken aller Escape-Sequenzen
-l benutzer
Definition des aktuellen Benutzernamens für die Anmeldung
-x
Aktiviert die DES-Verschlüsselung für alle Daten, die während der Sitzung übertragen werden
Tab. 15.20: Die Optionen des Befehls rlogin (Forts.)
Der Befehl lässt sich mit der Option –l aufrufen, wenn auf dem Remote-System ein anderer Benutzername verwendet werden soll. So kann sich zum Beispiel der Benutzer doo als Benutzerin her auf dem Rechner suso2 anmelden, sofern er das entsprechende Passwort kennt. $ rlogin -l her suso2
Der Befehl rcp Mit Hilfe dieses Befehls können zwischen zwei Rechnern einer homogenen LinuxUmgebung Dateien kopiert werden, wobei die Funktion des Befehls der von ftp entspricht. Dieser Befehl benötigt eine Trusted Host-Umgebung, da er kein Passwort übergeben kann. Die Syntax des Befehls lautet: # rcp [-option(en)] rechner
Der Befehl kennt folgende Optionen: Option
Beschreibung
-p
Den kopierten Dateien oder Verzeichnissen werden wenn möglich die Eigenschaften der Originale zugewiesen, wie zum Beispiel dieselben Zugriffsrechte, Änderungsdatum und Zugriffsdatum und gegebenenfalls dieselben ACLs.
-r
Das Verzeichnis wird rekursiv kopiert, also einschließlich seiner Unterverzeichnisse.
-x
Aktiviert die DES-Verschlüsselung für alle Daten, die während der Sitzung übertragen werden
Tab. 15.21: Die Optionen des Befehls rcp
In diesem Beispiel wird die Datei /etc/passwd vom lokalen Rechner auf den Rechner suso2 in das Verzeichnis /tmp kopiert: $ rcp /etc/passwd suso2:/tmp
Im nächsten Beispiel wird die Datei /home/her/test11 vom Rechner suso2 auf den Rechner sun10 in das Verzeichnis /test kopiert: $ rcp suso2:/home/her/test11 sun10:/test
713
Das Netzwerk überprüfen
magnum
Der Befehl rsh Dieser Befehl erzeugt eine Shell auf einem Remote-Rechner in einer homogenen Linux-Umgebung, wobei die Ausgabe über die lokale Shell erfolgt. Die Remote-Shell kann Befehle auf einem Remote-Rechner über das Netzwerk ausführen. Ohne Angabe eines Befehls verhält sich rsh wie rlogin und meldet den Anwender am Remote-Rechner an. Auch dieser Befehl verwendet gegebenenfalls die Dateien $HOME/ .rhosts oder /etc/hosts.equiv, wenn eine Trusted Host-Umgebung implementiert wurde. Die Syntax des Befehls lautet: # rsh [-option(en)] rechner [befehl]
Die Optionen des Befehls lauten: Option
Beschreibung
-d
Aktivieren des Debug-Modus
-K
Deaktiviert die komplette Kerberos V5-Authentifizierung
-l benutzer
Anmeldung mit dem angegebenen Benutzernamen statt des aktuellen Benutzernamens
-n
Die Standardausgabe von rsh wird unterdrückt und die Ausgabe wird nach /dev/null gesendet.
-x
Aktiviert die DES-Verschlüsselung für alle Daten, die während der Sitzung übertragen werden
Tab. 15.22: Die Optionen des Befehls rsh
Im nachfolgenden Beispiel wird eine Textdatei des Remote-Rechners angezeigt: $ rsh suso2 more /home/her/bericht.txt
Der Befehl ssh Der Befehl telnet wurde viele Jahre lang verwendet, um sich über das Netzwerk auf einem anderen Rechner anzumelden. In den letzten Jahren hat sich aber die Secure Shell (ssh) stark verbreitet, da sie eine wesentlich höhere Sicherheit bietet, denn im Gegensatz zu den Befehlen telnet und rlogin werden die über das Netzwerk gesendeten Passwörter vom Befehl ssh verschlüsselt. Das ist äußerst wichtig, denn es ist möglich, dass das Netzwerk von Passwort-Sniffer-Programmen abgehorcht wird. Ein solches Programm kann ein im Klartext übertragenes Passwort problemlos lesen. Außerdem fehlt die Sicherung von Authentizität und Integrität der übertragenen Daten bei den älteren Befehlen, das heißt, dass Daten mit einer fremden Identität gesendet oder manipuliert werden könnten. Riskant sind vor allem auch die Befehle rlogin und rsh, denn diese könnten gefälschten Datenpaketen vertrauen, die vorgeben, von einem vertrauenswürdigen Rechner zu kommen, der zum Beispiel in der Datei .rhosts aufgeführt ist. Die Secure Shell dagegen hat optional einen Sicherungsmechanismus, der dafür sorgt, dass sich kein Rechner als ein anderer authentifizieren kann. Daten werden auch niemals unverschlüsselt übertragen.
714
Kapitel 15 · Netzwerkgrundlagen
Mit dem Befehl ssh können Befehle einem Remote-Rechner übergeben und eine Sitzung mit einem Rechner im Netzwerk gestartet werden. Der Befehl kann also sowohl rsh als auch rlogin ersetzen. Die Syntax des Befehls lautet: $ ssh [-option(en)] hostname | [benutzer@]hostname [befehl]
Die Optionen des Befehls lauten: Option
Beschreibung
-a
Deaktiviert die Weiterleitung der Verbindung des Authentifizierungsagenten
-A
Aktiviert die Weiterleitung der Verbindung des Authentifizierungsagenten
-b adresse
Legt die Netzwerkschnittstelle fest, mit der übertragen wird, bei einem Rechner mit mehreren Netzwerkkarten oder Alias-Adressen
-c blowfish| 3des|des
Wählt die Chiffrierung für die Verschlüsselung der Sitzung. Standardmäßig wird 3des verwendet.
-C
Komprimiert alle Daten
-e ch|^ch|none Legt das Escape-Zeichen für Sitzungen mit einem Pseudoterminal fest. Stan-
dard ist das Zeichen ~. -f
Stellt den Befehl ssh in den Hintergrund, bevor die Befehle ausgeführt werden
-F datei
Definiert eine alternative Konfigurationsdatei pro Benutzer. In diesem Fall wird die systemweite Konfigurationsdatei /etc/ssh/ssh_config ignoriert und stattdessen standardmäßig die Datei ~/.ssh/config gelesen.
-g
Erlaubt es dem Remote-Rechner, eine Verbindung an lokalen Weiterleitungsports einzurichten
-i id-datei
Wählt eine Datei, aus der die Identität (der private Schlüssel) für RSA- oder DSA-Authentifizierung gelesen wird. Standard ist ~/.ssh/identity bei der Version 1 und ~/.ssh/id_rsa und ~/.ssh/id_dsa bei der Version 2.
-I gerät
Legt fest, welches Smartcard-Gerät verwendet werden soll
-k
Deaktiviert die Weiterleitung von Kerberos-Tickets
-l benutzer
Anmeldung mit dem angegebenen Benutzernamen statt des aktuellen Benutzernamens
-L port:host: hostport
Definiert, dass der angegebene Port des lokalen Rechners an den angegebenen Remote-Rechner und -Port weitergeleitet wird
-m mac-spez
Bei Version 2 kann zusätzlich eine durch Kommata getrennte Liste mit MAC-Algorithmen (message authentication code) definiert werden.
-n
Die Standardausgabe von rsh wird unterdrückt und die Ausgabe wird nach /dev/null gesendet.
-N
Führt keinen Remote-Befehl aus
-o option
Übergibt Optionen an die Konfigurationsdatei
-p port
Angabe des Ports, mit dem die Verbindung zum Remote-Host eingerichtet wird
Tab. 15.23: Die Optionen des Befehls ssh
715
Das Netzwerk überprüfen
magnum
Option
Beschreibung
-q
Stiller Modus
-R port:host:
hostport
Definiert, dass der angegebene Port des Remote-Rechners an den angegebenen lokalen Rechner und Port weitergeleitet wird
-s
Fordert den Aufruf eines Subsystems auf dem Remote-Rechner an
-t
Erzwingt die Allokierung eines Pseudoterminals
-T
Deaktiviert die Allokierung eines Pseudoterminals
-v
Ausführlicher Modus
-x
Deaktiviert die X11-Weiterleitung
-X
Aktiviert die X11-Weiterleitung
-1
Erzwingt, dass ssh nur Protokoll Version 1 versucht
-2
Erzwingt, dass ssh nur Protokoll Version 2 versucht
-4
Erzwingt, dass ssh nur IPv4-Adressen verwendet
-6
Erzwingt, dass ssh nur IPv6-Adressen verwendet
Tab. 15.23: Die Optionen des Befehls ssh (Forts.)
Im folgenden Beispiel meldet sich die Benutzerin als her mit dem Befehl dem Rechner pclsu3 an:
ssh
auf
$ ssh her@pclsu3 her@pclsu3's password: Have a lot of fun ... $
Der Befehl scp Der Befehl scp (secure copy) hat dieselbe Funktion wie der Befehl rcp: Dateien auf oder vom Remote-Rechner zu übertragen. Er arbeitet aber im Gegensatz zu rcp u. a. mit verschlüsselter Passwortabfrage. Die Syntax von scp lautet: $ scp [-option(en)] [[benutzer@]hostname:]datei ... [[benutzer@]hostname:]datei
Beim ersten Anmelden an einem Netzwerkrechner wird gefragt, ob zu diesem eine Verbindung geöffnet werden soll. Diese Frage entfällt bei späteren Anmeldungen, weil die Secure Shell sich diese Verbindung merkt. Die Optionen des Befehls lauten: Option
Beschreibung
-B
Wählt den Batch-Modus (verhindert das Abfragen von Passwörtern)
-c chiffre
Wählt die Chiffrierung für die Verschlüsselung der Datenübertragung. Diese Option wird direkt dem Befehl ssh übergeben.
Tab. 15.24: Die Optionen des Befehls scp
716
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
-C
Komprimiert alle Daten
-F datei
Definiert eine alternative Konfigurationsdatei pro Benutzer. Diese Option wird direkt dem Befehl ssh übergeben.
-g
Erlaubt es dem Remote-Rechner, eine Verbindung an lokalen Weiterleitungsports einzurichten
-i id-datei
Wählt eine Datei, aus der die Identität (der private Schlüssel) für RSA- oder DSA-Authentifizierung gelesen wird. Diese Option wird direkt dem Befehl ssh übergeben.
-l limit
Begrenzt die verwendete Bandbreite in Kbps
-o option
Übergibt Optionen an die Konfigurationsdatei. Diese Option wird direkt dem Befehl ssh übergeben.
-p
Behält die Änderungs-, Zugriffszeiten und Modi der ursprünglichen Datei bei
-P port
Angabe des Ports, mit dem die Verbindung zum Remote-Host eingerichtet wird
-q
Deaktiviert die Fortschrittsanzeige
-r
Kopiert rekursiv vollständige Verzeichnisbäume
-S
programm
Angabe des Namens des Programms, das für die verschlüsselte Verbindung verwendet wird
-v
Ausführlicher Modus
-1
Erzwingt, dass scp nur Protokoll Version 1 verwendet
-2
Erzwingt, dass scp nur Protokoll Version 2 verwendet
-4
Erzwingt, dass scp nur IPv4-Adressen verwendet
-6
Erzwingt, dass scp nur IPv6-Adressen verwendet
Tab. 15.24: Die Optionen des Befehls scp (Forts.)
In diesem Beispiel wird von einem Benutzer die Datei bild.png des Benutzers doo in sein Homeverzeichnis auf dem Rechner pclsu7 übertragen: $ scp bild.png doo@pclsu7:~ doo@pclsu7's password: bild.png 100% |*******************| 34921
00:00
717
Das Netzwerk überprüfen
15.4.3
magnum
FTP mit KBear durchführen
FTP lässt sich auch grafisch mit einem KDE-Tool, KBEAR, durchführen. Starten Sie dazu unter SUSE Linux im Hauptmenü die Optionen INTERNET - DATENÜBERTRAGUNG - KBEAR:
Bild 15.36: KBEAR starten
KBEAR lässt Sie mit Hilfe eines Assistenten die Einstellungen durchführen. Es werden mehrere Fenster angezeigt, in dem Sie die Konfiguration vornehmen können, zum Beispiel die Einstellung der Ansicht:
Bild 15.37: Ansicht in KBEAR einstellen
718
Kapitel 15 · Netzwerkgrundlagen
Auch die Fensterpositionen usw. können festgelegt werden:
Bild 15.38: Fenster in KBEAR einstellen
Wenn alle Einstellungen durchgeführt wurden, wird das Startfenster von KBEAR angezeigt:
Bild 15.39: KBEAR-Startfenster
Wenn Sie das Menü FTP - VERBINDUNG ÖFFNEN wählen oder auf die entsprechende Schaltfläche klicken, können Sie eine neue FTP-Verbindung festlegen:
719
Das Netzwerk überprüfen
magnum
Bild 15.40: FTP-Verbindung einrichten
Aktivieren Sie die Option IM SEITENMANAGER SPEICHERN, damit Sie die Verbindung später nicht nochmals hinterlegen müssen. Jetzt kann sie jederzeit über SEITENMANAGER - KBEAR SEITENMANAGER wieder aufgerufen werden. Die Daten auf dem FTP-Server werden in der rechten Fensterhälfte angezeigt, in der linken Fensterhälfte sehen Sie Ihre lokalen Daten:
Bild 15.41: FTP-Verbindung starten
Sie können die Daten nun durch Ziehen mit gedrückter Maustaste auf den FTPServer laden bzw. von diesem herunterkopieren. Mit der rechten Maustaste erhalten Sie ein Menü, um zum Beispiel eine Datei zu löschen.
720
Kapitel 15 · Netzwerkgrundlagen
15.5 Das Netzwerk verwalten Zur Netzwerkwerkverwaltung gehören einige Dateien und Daemons, die in diesem Abschnitt besprochen werden. Außerdem werden die grafischen Möglichkeiten der Netzwerkverwaltung mit YAST gezeigt.
15.5.1
Die Netzwerkkonfigurationsdateien
Die Datei /etc/hosts Diese Datei enthält Verknüpfungen zwischen den Rechnernamen und deren IPAdressen. Auf diese Weise muss ein Rechner nicht über die IP-Adresse angesprochen werden. Wenn kein Nameserver verwendet wird, müssen hier alle Rechner des Netzwerks eingetragen werden, zu denen eine IP-Verbindung mittels eines Namens anstelle der IP-Adresse aufgebaut werden soll: # cat /etc/hosts ... 127.0.0.1 localhost # special IPv6 addresses ::1 localhost ipv6-localhost ipv6-loopback ... 192.162.060.2 linux-laptop 192.162.060.74 pclsu7.hertzog-edv.de pclsu7
Jede Zeile enthält einen Eintrag für einen Rechner, wobei zwei Zeilen für den lokalen Rechner vorgesehen sein können. Die erste Zeile lautet in der Regel 127.0.0.1 und wird für Loopback-Zwecke verwendet, wenn also der Rechner sich selbst adressiert. Daneben existiert ein zweiter Eintrag für den lokalen Rechner mit seiner eigentlichen IP-Adresse. In der ersten Spalte jeder Zeile steht immer die IP-Adresse, die zweite Spalte enthält den Rechnernamen und die folgenden Spalten gegebenenfalls einen Aliasnamen. Der Aliasname loghost bedeutet zum Beispiel, dass der Dienst syslogd Meldungen in Dateien auf diesem Rechner protokolliert.
Die Datei /etc/networks Diese Datei wurde für die Umsetzung von Netzwerk-IP-Adressen in aussagekräftigere Netzwerknamen verwendet. Der Aufbau der Datei besteht aus den beiden Spalten Netzwerkname und Netzwerkanteil der IP-Adresse: # cat /etc/networks loopback 127.0.0.1 localnet 192.168.060.0
Diese Datei ist häufig nicht mehr sehr nützlich, da sie das Classless Inter-Domain Routing (CIDR) nicht unterstützt, ein Verfahren, um den vorhandenen 32-BitIP-Adressbereich besser zu nutzen.
721
Das Netzwerk verwalten
magnum
Die Datei /etc/sysconfig/network/ifcfg-interface Diese Datei endet mit dem Gerätenamen der Netzwerkkarte, zum Beispiel /etc/sysconfig/network/ifcfg-eth0, oder mit der Hardwarebeschreibung einer Netzwerkkarte. Sie kann zum Beispiel wie folgt aufgebaut sein: # cat /etc/sysconfig/network/ifcfg-eth0 BOOTPROTO='static' BROADCAST='192.168.060.255' IPADDR='192.168.060.174' MTU='' NETMASK='255.255.255.0' NETWORK='192.168.060.0' REMOTE_IPADDR='' STARTMODE='onboot' UNIQUE='WL76.IQxIdIhhuH7' WIRELESS='no'
In der Datei wird festgelegt, ob eine feste IP-Adresse (BOOTPROTO='static') oder eine dynamische DHCP-Adresse (BOOTPROTO='dhcp') verwendet wird. Des Weiteren können eine Broadcast-, Netzwerk- oder eine Remote-IP-Adresse sowie die Subnetzmaske definiert werden. Diese Datei ist nicht bei allen Distributionen vorhanden. Bei Fedora Core Linux finden Sie diese Datei einmal im Verzeichnis /etc/sysconfig/networking/devices und einmal im Verzeichnis /etc/sysconfig/networking/profiles/default. Debian Linux konfiguriert die Netzwerkkarte mit Hilfe der Datei etc/netHier kann eingetragen werden, ob der Rechner über DHCP oder über eine statische IP-Adresse in das Netzwerk eingebunden wird. Die Datei /etc/network/interfaces wird entweder bei der Installation entsprechend erzeugt oder kann hinterher mit einem Editor bearbeitet werden. Die dynamische Konfiguration mit DHCP erfolgt durch diesen Eintrag: auto eth0 iface eth0 inet dhcp Die Informationen über das Loopback-Gerät lo sollten auf jeden Fall vorhanden sein, was man folgendermaßen zusammenfassen kann: auto lo eth0 iface lo inet loopback work/interfaces.
Eine statische Konfiguration kann zum Beispiel wie folgt aussehen: auto eth0 iface eth0 inet static address 192.165.172.10 network 192.165.172.0 netmask 255.255.255.0 broadcast 192.165.172.255 gateway 192.165.172.1
Mit Hilfe des Befehls ifup eth0 kann die Netzwerkkarte aktiviert werden, was allerdings bei entsprechender Installation schon automatisch beim Booten erfolgt.
722
Kapitel 15 · Netzwerkgrundlagen
Die Datei /etc/sysconfig/network/config In dieser Datei stehen allgemeine Einstellungen, wie sich die Befehle und ifstatus verhalten sollen.
ifup, ifdown
Die Dateien /etc/sysconfig/network/dhcp und /etc/sysconfig/network/wireless enthalten ebenfalls allgemeine Einstellungen von DHCP und Funknetzwerkkarten. Variablen, die in diesen Dateien stehen, können ebenso in den Dateien /etc/sysconfig/network/ifcfg-interface konfiguriert werden und werden dort vorrangig behandelt. Fedora Core Linux und Debian GNU/Linux kennen diese drei Dateien nicht.
Die Datei /etc/HOSTNAME Diese Datei darf nur den Rechnernamen des Systems enthalten, das heißt den Hostnamen ohne Domänennamen. Sie wird beim Booten von mehreren Run Control-Skripten gelesen. Unter Fedora Core Linux existiert diese Datei nicht. Hier werden die Informationen zum Rechnernamen der Datei /etc/hosts entnommen. Unter Debian Linux heißt diese Datei wie bei vielen Unix-Systemen auch /etc/hostname.
Die Datei /etc/host.conf Diese Datei steuert die Namensauflösung, das heißt, sie übersetzt Rechner- und Netzwerknamen mit Hilfe der resolver-Bibliothek. # cat ... order # # The # multi
/etc/host.conf hosts, bind following options are used by the resolver library: on
Die Datei ist nur für Programme relevant, die libc4 oder libc5 verwenden. Aktuelle glibc-Programme verwenden die Datei /etc/nsswitch.conf.
Die Datei /etc/nsswitch.conf In der Regel fragen Programme die notwendigen Benutzer- oder Rechnerinformationen über lokale Konfigurationsdateien ab (vergleiche Kapitel 21). Diese lokalen Dateien können aber durch den Einsatz eines Namensdienstes ersetzt werden, wobei die Datei /etc/nsswitch.conf als zentrale Steuerdatei definiert, welcher Namensdienst bzw. in welcher Reihenfolge Namensdienste verwendet werden: # more /etc/nsswitch.conf ... passwd: compat group: compat shadow: compat
723
magnum
Das Netzwerk verwalten
hosts: networks:
files dns files dns
services: rpc: ethers: netgroup: publickey: ...
files files files files files
Die Datei ist wie folgt aufgebaut: schlüsselwort:namensdienst [parameter] namensdienst [parameter] namensdienst [parameter]
Es können pro Schlüsselwort beliebig viele Namensdienste angegeben werden, die dann nacheinander abgefragt werden können. Mögliche Schlüsselwörter sind: Schlüsselwort
Beschreibung
aliases
Abfrage von Abkürzungen von Mailadressen
ethers
Abfrage von MAC- bzw. Ethernetadressen für RARP
group
Abfrage von Gruppennamen
hosts
Abfrage von Rechnernamen und deren IP-Adressen
netgroup
Abfrage einer netzwerkweiten Liste von Hosts und Benutzern, die für Zugriffsregeln verwendet wird
networks
Abfrage von Netzwerknamen
passwd
Abfrage von Benutzerkonten und Passwörtern
publickey
Abfrage von Passwörtern für Secure RPC
rpc
Abfrage von Programmnummern zu RPCs
services
Abfrage von Netzwerkdiensten
shadow
Abfrage von Benutzerpasswörtern
Tab. 15.25: Schlüsselwörter der Datei /etc/nsswitch.conf
Als Namensdienste können folgende Angaben verwendet werden: Namensdienst
Beschreibung
dns
Abfrage von Informationen über DNS (ausschließlich für den Eintrag hosts: gültig)
compat
Dient der Abwärtskompatibilität
db
Abfrage der Datenbank /var/db
files
Abfrage der lokalen Dateien
Tab. 15.26: Namensdienste der Datei /etc/nsswitch.conf
724
Kapitel 15 · Netzwerkgrundlagen
Namensdienst
Beschreibung
nis
Abfrage von Informationen über NIS
nisplus
Abfrage von Informationen über NIS+
Tab. 15.26: Namensdienste der Datei /etc/nsswitch.conf (Forts.)
Wenn auf die Namensdienste zugegriffen wird, können verschiedene Ergebnisse zustande kommen. Eventuell ist ein Dienst nicht verfügbar oder die benötigte Information ist nicht vorhanden, daher kann ein entsprechender Parameter definiert werden, der das Verhalten in einem solchen Fall definiert. Jeder der nachfolgend erläuterten Status kann entweder den Wert continue, das bedeutet, dass die nächste Quelle abgefragt werden kann, oder return annehmen, das heißt, die Suche soll abgebrochen werden. Die möglichen Status lauten: Status
Beschreibung
NOTFOUND
Die abgefragte Quelle enthält die gewünschte Information nicht. Das Standardverhalten lautet continue.
SUCCESS
Die abgefragte Quelle enthielt die gewünschte Information, das heißt, die Abfrage war erfolgreich. Das Standardverhalten lautet return.
TRYAGAIN
Die abgefragte Quelle ist verfügbar, aber antwortet nicht innerhalb der vorgegebenen Zeit, da sie beschäftigt ist. Das Standardverhalten lautet continue.
UNAVAIL
Die abgefragte Quelle ist nicht verfügbar. Das Standardverhalten lautet continue.
Tab. 15.27: Status der Namensdienste der Datei /etc/nsswitch.conf
Im nachfolgenden Beispiel wird zuerst nach der Datei /etc/hosts auf einem NISServer gesucht, wenn dieser nicht erreichbar ist, soll als Nächstes ein DNS-Server konsultiert werden. Findet dieser die gewünschte Information nicht, dann soll eine entsprechende Fehlermeldung ausgegeben werden. Ist er nicht erreichbar oder beschäftigt, dann soll die lokale Datei gelesen werden: hosts: nis [UNAVAIL=continue] dns [NOTFOUND=return] files
Die Datei /etc/inetd.conf Daemons können in Bootskripte eingetragen und beim Booten gestartet oder über die Daemons inetd oder xinetd aufgerufen werden. Anstatt diese Dienste bereits beim Systemstart zu aktivieren, wird nur ein Daemon gestartet, um Systemressourcen zu sparen. Bei Bedarf werden dann über diesen Daemon die benötigten Dienste aufgerufen. Bei älteren Linux-Systemen liest der Daemon inetd die Datei /etc/inet/inetd.conf, um herauszufinden, für welchen Port welches Programm gestartet werden soll. Bei neueren Linux-Systemen kann inetd durch xinetd ersetzt werden (vergleiche nächster Abschnitt). Wenn Sie zum Beispiel einen neuen FTP-Server einsetzen, dann müssen Sie nur den entsprechenden Eintrag in der Datei /etc/inetd.conf ändern und den Daemon inetd neu starten. Sie können auch Zeilen in der Datei mit dem Hashzeichen # auskommentieren, um nicht benötigte Netzdienste zu sperren und auf diese Weise den Rechner gegen Hacker sicherer zu machen.
725
magnum
Das Netzwerk verwalten
Die Datei kann wie folgt aussehen: # cat /etc/inetd.conf ... # ftp stream tcp # ftp stream tcp
nowait root nowait root
/usr/sbin/tcpd in.ftpd /usr/sbin/tcpd vsftpd
# If you want telnetd not to "keep-alives" (e.g. if it runs over a ISDN uplink), add "-n". See 'man telnetd' for more details. # telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd # nntp stream tcp nowait news /usr/sbin/tcpd /usr/sbin/leafnode ...
In der ersten Spalte steht der Name des Dienstes und die zweite Spalte enthält den Sockettyp, den der Dienst verwendet. Die dritte Spalte enthält das Transportprotokoll, das für die Kommunikation verwendet wird. In der vierten Spalte steht der Wait-Status:
쮿
wait lässt
쮿
nowait lässt
jeweils nur eine Verbindung zu mehrere eingehende Verbindungsanfragen zu
In der fünften Spalte befindet sich der Name des Benutzers, dem der laufende Serverprozess gehört. Die sechste Spalte enthält den Namen des Daemons einschließlich des Pfadnamens und die letzte Spalte kann Befehlszeilenargumente zur korrekten Bearbeitung der Anfrage enthalten.
Die Datei /etc/xinetd.conf Der neuere Internet Service Daemon xinetd liest die Datei /etc/xinetd.conf und bietet gegenüber inetd verbesserte Sicherheitsleistungsmerkmale, so können Zugriffe vom Host zum Beispiel beschränkt und beim Überprüfen der Ports erkannt werden. Die meisten Unix- und Linux-Derivate benutzten bis vor kurzem inetd, seit SUSE 8 wird xinetd verwendet. Debian GNU/Linux 3.1 verwendet immer noch inetd, Fedora Core Linux xinetd. Die Datei sieht folgendermaßen aus: # more /etc/xinetd.conf ... defaults { log_type log_on_success log_on_failure # only_from instances cps ... # interface }
= = = = = =
= 127.0.0.1
includedir /etc/xinetd.d
726
FILE /var/log/xinetd.log HOST EXIT DURATION HOST ATTEMPT localhost 30 50 10
Kapitel 15 · Netzwerkgrundlagen
Im Abschnitt defaults werden Standardeinstellungen beschrieben. Der Eintrag logtype gibt an, in welche Datei protokolliert wird, standardmäßig wird dazu /var/log/xinetd.log verwendet. Die Angaben log_on-success und log_on_failure legen fest, wohin Informationen bei erfolgreichen bzw. erfolglosen Versuchen geschrieben werden. Die Definition only_from bestimmt, woher die Verbindungen aufgebaut werden. Der Eintrag instances enthält die Anzahl der Server, die pro Eintrag gestartet werden können, und cps enthält die Anzahl der möglichen Verbindungen pro Sekunde bzw. die Anzahl der Sekunden, die gewartet wird, wenn bei zu vielen Verbindungen eine Deaktivierung vorgenommen wird. Der Eintrag interface kann den Dienst auf bestimmte Ports einschränken. Die Angabe
includedir ermöglicht, dass alle Konfigurationsdateien im Verzeichnis /etc/xinetd.d gelesen werden. Dateien, die mit einem Punkt oder einem Tildezeichen beginnen, werden allerdings nicht gelesen. Im Verzeichnis /etc/xinetd.d befin-
den sich zum Beispiel in einem SUSE-Linux-System folgende Dateien: # ls /etc/xinetd.d . daytime-udp .. echo chargen echo-udp chargen-udp fam cups-lpd i4l-vbox cvs imap daytime nagios-nrpe
netstat qpopper rsync sane-port servers services swat
systat tftp time time-udp vnc vsftpd
In diesen Konfigurationsdateien stehen die Einstellungen, mit denen die entsprechenden Dienste gestartet werden, zum Beispiel tftp: # default: off # description: tftp service is provided primarily for booting or when # a router need an upgrade. Most sites run this only on machines # acting as "boot servers". service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = yes }
Standardmäßig ist der tftp-Dienst deaktiviert. Durch die Angabe disable er aktiviert werden.
= no kann
Im Verzeichnis /etc/xinetd.d sind die Dienste ftp und telnet nicht enthalten, da sie keine sicheren Dienste sind. Sie können über inetd aktiviert werden.
Die Datei /etc/services Diese Datei wird für die Zuordnung der Portnummern zu den einzelnen Diensten, wie zum Beispiel Telnet, FTP, WWW, Mail, verwendet. Eine entsprechende Liste in Form der Datei /etc/services ist auf fast jedem Unix- oder Linux-System zu finden, denn damit können Dienstnamen in Nummern umgewandelt werden. Die Datei enthält den Namen des Dienstes, die Portnummer, das Transportprotokoll (UDP oder TCP) und eine Kurzbeschreibung des Dienstes.
727
magnum
Das Netzwerk verwalten
Ein Eintrag wird in folgender Form hinterlegt: Service-Name Portnummer/Protokoll Aliase Die Portnummer bestimmt, welcher Port für den Dienst verwendet wird, und das Protokoll legt fest, ob als Transportprotokoll tcp oder udp verwendet wird. Ein Dienst kann für beide Protokolle angeboten werden. Es werden die Portnummern für alle TCP- und UDP-Dienste definiert, die für beide Transportprotokolle unabhängig voneinander sind. Es ist aber üblich, dieselben Portnummern für beide Protokolle zu verwenden, wenn ein Dienst über beide Transportprotokolle zur Verfügung steht. Aliase enthält alternative Bezeichnungen für einen Dienst. Die Datei muss in der Regel nicht geändert werden, sondern kann standardmäßig eingesetzt werden. Nachfolgend ein Ausschnitt der Datei: ... chargen chargen ftp-data ftp-data ftp fsp ssh ssh telnet telnet # # smtp smtp ... login # # # # who # # # shell # syslog printer printer ...
19/tcp 19/udp 20/tcp 20/udp 21/tcp 21/udp 22/tcp 22/udp 23/tcp 23/udp 24/tcp 24/udp 25/tcp 25/udp
# Character Generator # Character Generator # File Transfer [Default Data] # File Transfer [Default Data] # File Transfer [Control] # File Transfer [Control] # SSH Remote Login Protocol # SSH Remote Login Protocol # Telnet # Telnet any private mail system any private mail system mail # Simple Mail Transfer mail # Simple Mail Transfer
513/tcp
# remote login a la telnet; automatic authentication performed based on priviledged port numbers and distributed data bases which identify "authentication domains" 513/udp # maintains data bases showing who's logged in to machines on a local net and the load average of the machine 514/tcp # cmd like exec, but automatic authentication is performed as for login server 514/udp 515/tcp # spooler 515/udp # spooler
Die Dienste telnet und smtp werden zum Beispiel sowohl für TCP als auch für UDP über Port 23 bzw. 25 angeboten. Port 514 dagegen wird für zwei verschiedene Dienste verwendet, für who und login, aber beide verwenden ein unterschiedliches Transportprotokoll.
Die Datei /etc/protocols Die Protokollnamen der Datei /etc/services müssen in Protokollnummern übersetzt werden. Diese Zuordnungen finden in der Datei /etc/protocols statt, die die über IP arbeitenden Protokolle in folgender Form enthält: Protokollname
728
Protokollnummer
Protokollaliase ...
Kapitel 15 · Netzwerkgrundlagen
Hier stehen die erforderlichen Einträge, um das Protokoll im Header von Netzwerkpaketen zu kennzeichnen. Die Datei ist folgendermaßen aufgebaut: # protocols This file describes the various protocols that are # available from the TCP/IP subsystem. It should be # consulted instead of using the numbers in the ARPA # include files, or, worse, just guessing them. # This list could be found on: # http://www.iana.org/assignments/protocol-numbers # ip 0 IP # internet protocol v4 hopopt 0 HOPOPT # Hop-by-hop optons for IPv6 icmp 1 ICMP # internet control message protocol igmp 2 IGMP # internet group multicast protocol ggp 3 GGP # gateway-gateway protocol #ip 4 IP # internet protocol v4 st 5 ST # Stream tcp 6 TCP # transmission control protocol cbt 7 CBT # CBT egp 8 EGP # exterior gateway protocol igp 9 IGP # any private interior gateway bbn-rcc-mon 10 BBN-RCC-MON # BBN RCC monitoring nvp-ii 11 NVP-II # Network Voice Protocol pup 12 PUP # PARC universal packet protocol argus 13 ARGUS # ARGUS emcon 14 EMCON # EMCON xnet 15 XNET # Cross Net Debugger chaos 16 CHAOS # Chaos udp 17 UDP # user datagram protocol mux 18 MUX # Mulitplexing dcn-meas 19 DCN-MEAS # DCN Measurement Subsystems hmp 20 HMP # host monitoring protocol prm 21 PRM # Packet Radio Measurement xns-idp 22 XNS-IDP # XEROX NS IDP trunk-1 23 TRUNK-1 # Trunk-1 trunk-2 24 TRUNK-2 # Trunk-2 leaf-1 25 LEAF-1 # Leaf-1 leaf-2 26 LEAF-2 # Leaf-2 rdp 27 RDP # "reliable datagram" protocol irtp 28 IRTP # Internet Reliable Transaction ...
Die Datei /etc/nscd.conf Diese Datei steuert das Cachen von Name-Service-Informationen für den nscd (Name Service Cache Daemon), wie zum Beispiel der Dateien passwd und group. Wenn das Caching für die Datei passwd aktiviert ist, ist ein neu angelegter Benutzer normalerweise innerhalb von 20 Sekunden im System bekannt: # cat /etc/nscd.conf ... enable-cache positive-time-to-live negative-time-to-live suggested-size check-files ...
passwd passwd passwd passwd passwd
yes 600 20 211 yes
729
magnum
Das Netzwerk verwalten
nscd ist
nicht bei allen Distributionen standardmäßig installiert.
Die Datei /etc/named.conf Diese Datei enthält alle Einstellungen, die den Nameserver BIND betreffen, wenn dieser installiert ist. In verschiedenen Dateien des Verzeichnisses /var/lib/named befinden sich die Zonendaten, Rechnernamen, IP-Adressen usw. Die Datei kann in zwei Abschnitte unterteilt werden: den Abschnitt options, der allgemeine Einstellungen beinhaltet, und den Abschnitt zone mit den Einträgen für die einzelnen Domänen: # cat /etc/named.conf ... options { ... directory "/var/lib/named"; ... dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; ... zone "hertzog-edv.de" in { type master; file "master/hertzog-edv.de"; }; zone "171.162.192.in-addr.arpa" in { type master; file "master/171.162.192.in-addr.arpa"; };
Bei Debian Linux heißt die Datei /etc/bind/named.conf.
Die Datei /etc/exports Diese Datei enthält die Angaben, welche Dateisysteme an welche Rechner freigegeben werden. Diese Datei kann zum Beispiel wie folgt aussehen: # cat /etc/exports /home/network/ 192.162.060.0/255.255.255.0(rw,root_squash,sync)
Jede Zeile enthält ein zu exportierendes Verzeichnis und die Angabe, welche Rechner mit welchen Optionen darauf zugreifen dürfen. Zu den wichtigsten Optionen gehören: Option
Beschreibung
ro
Dateisystem ist nur lesbar freigegeben (Standardeinstellung)
rw
Dateisystem ist mit Lese- und Schreibrechten freigegeben
root_squash
Der Benutzer root des angegebenen Rechners hat keine root-Rechte auf dem freigegebenen Dateisystem.
no_root_squash
root-Rechte bleiben erhalten.
Tab. 15.28: Optionen der Datei /etc/exports
730
Kapitel 15 · Netzwerkgrundlagen
Option
Beschreibung
all_squash
Ordnet alle UIDs und GIDs dem anonymen Benutzer zu. Nützlich für NFS-exportierte öffentliche FTP-Verzeichnisse, neue Spoolverzeichnisse usw. Das Gegenteil ist die standardmäßig gesetzte Option no_all_squash.
anonuid
Diese Option setzt die UID explizit auf den Anonymous Account und ist vor allem für PC/NFS-Clients nützlich, bei denen Sie möchten, dass alle Anfragen scheinbar von einem einzigen Benutzer kommen.
anongid
Diese Option setzt die GID explizit auf den Anonymous Account.
link_relative
Symbolische Links mit einer absoluten Pfadangabe »/« werden in eine Angabe »../« umgesetzt.
link_absolute
Symbolische Links werden nicht verändert.
map_identity
Der Client verwendet dieselben Benutzer-IDs wie der Server (Standardeinstellung).
map_daemon
Der Client verwendet nicht dieselben Benutzer-IDs wie der Server. nfsd erstellt in diesem Fall eine Umsetzungstabelle, wenn der Dienst ugidd gestartet wurde.
Tab. 15.28: Optionen der Datei /etc/exports (Forts.)
Die Datei /etc/dhcpd.conf Diese Datei konfiguriert den DHCP-Daemon (Dynamic Host Configuration Protocol Daemon). Dieser Systemprozess vergibt an Rechner im Netzwerk IP-Adressen. Die Datei kann zum Beispiel wie folgt aufgebaut sein: # cat /etc/dhcpd.conf ... # option definitions common to all supported networks... option domain-name "hertzog.org"; option domain-name-servers 192.165.171.3, 192.165.171.4; option broadcast-address 192.165.171.255; option routers 192.165.171.254; option subnet-mask 255.255.255.0 default-lease-time 600;# 10 Minuten max-lease-time 7200;# 2 Stunden ... subnet 192.165.171.0 netmask 255.255.255.0 { range 192.165.171.10 192.165.171.20; range 192.165.171.100 192.165.171.200 } ...
Die Datei kann in drei Abschnitte unterteilt werden. Im ersten Abschnitt stehen grundsätzliche Netzwerkparameter, zum Beispiel die Standarddomäne des Netzwerks (option domain-name) oder die Broadcast-Adresse, die ein anfragender Rechner verwenden soll (option broadcast-address). Der zweite Abschnitt legt fest, wie viele Sekunden eine IP-Adresse standardmäßig an einen Rechner vergeben werden soll, bevor dieser die Vergabe verlängern muss (default-lease-time). Eine andere Einstellung definiert, wie lange ein Rechner höchstens eine Adresse belegen darf, ohne diese verlängern zu lassen (max-lease-time).
731
Das Netzwerk verwalten
magnum
Der dritte Abschnitt definiert ein Netzwerk einschließlich der Subnetzmaske. Hier wird auch festgelegt, aus welchem IP-Adressenbereich die IP-Adressen vom DHCP-Server vergeben werden.
Die Datei /etc/sysconfig/network/routes Diese Datei kann verwendet werden, um alle statischen Routen zu hinterlegen, die notwendig sind, zum Beispiel die Route zu einem bestimmten Rechner oder zu einem Netzwerk. In diesem Beispiel wurde nur der Standardrouter hinterlegt: # more /etc/sysconfig/network/routes default 192.165.171.200 - -
Diese Datei gibt es unter Fedora Core Linux und Debian Linux nicht.
Die Datei /etc/sysconfig/network/ifroute-interface Diese Datei kann für alle Netzwerkkarten angelegt werden, für die ein individuelles Routing eingerichtet werden soll. Sie endet mit dem Namen der Netzwerkkarte, zum Beispiel /etc/sysconfig/network/ifroute-eth0. Sie kann wie folgt aufgebaut sein: # cat /etc/sysconfig/network/ifroute-eth0 DESTINATIONGATEWAYNETMASK INTERFACE [TYPE] [OPTIONS] DESTINATIONPREFIXLENNETMASK INTERFACE [TYPE] [OPTIONS] DESTINATION/PREFIXLEN-NETMASK INTERFACE [TYPE] [OPTIONS]
In der ersten Spalte steht das Ziel einer Route, das kann die IP-Adresse oder voll qualifizierte Adresse eines Netzwerks oder eines Rechners sein. In der zweiten Spalte steht das Standardgateway oder ein Gateway, über das ein Netzwerk oder Rechner erreichbar ist. In der dritten Spalte steht die Netzmaske für Rechner oder Netzwerke, die über ein Gateway erreichbar sind. In der letzten Spalte steht der Gerätename, was für die am lokalen Rechner angeschlossenen Netzwerke von Bedeutung ist (Ethernet, Loopback usw.). Diese Dateien gibt es unter Fedora Core Linux und Debian Linux nicht.
15.5.2
Konfiguration von inetd/xinetd mit YaST
xinetd bzw. inetd können ebenfalls mit YAST unter SUSE Linux konfiguriert werden. Verwenden Sie dazu das Menü NETZWERKDIENSTE - NETZWERKDIENSTE STARTEN. Die Netzwerkdienste werden angezeigt. Nur Dienste mit dem Status AN sind aktiviert. Es ist möglich, mit der Schaltfläche STATUS FÜR ALLE DIENSTE den Status für alle Dienste gleichzeitig zu starten oder zu stoppen.
732
Kapitel 15 · Netzwerkgrundlagen
Bild 15.42: Anzeige der Netzwerkdienste mit YAST
Unten in der Liste befinden sich die nicht installierten Dienste mit dem Status NI. Wenn Sie zum Beispiel telnet aktivieren möchten, müssen Sie den Dienst markieren und auf die Schaltfläche STATUS WECHSELN (»AN ODER AUS«) klicken:
Bild 15.43: Nicht installierte Dienste anzeigen
Sie erhalten die Meldung, dass das Paket zuerst installiert werden muss. Bestätigen Sie die Meldung mit WEITER und installieren Sie das Paket (vergleiche Kapitel 5):
733
Das Netzwerk verwalten
magnum
Bild 15.44: Paket installieren
Anschließend befindet sich telnet in der Liste der installierten Dienste und kann nun über die Schaltfläche STATUS WECHSELN (»AN ODER AUS«) gestartet werden:
Bild 15.45: Der installierte Dienst telnet
Der aktivierte Dienst telnet hat den Status AN:
Bild 15.46: Der aktivierte Dienst telnet
734
Kapitel 15 · Netzwerkgrundlagen
Es ist mit dieser Funktion auch möglich, eigene Netzwerkdienste hinzuzufügen. Klicken Sie dazu auf die Schaltfläche HINZUFÜGEN und definieren Sie Ihren Dienst:
Bild 15.47: Eigenen Dienst hinzufügen
15.5.3
Netzwerk-Daemons
Um den reibungslosen Ablauf des Netzwerkbetriebs zu gewährleisten und auf Anforderungen im Netzwerk reagieren zu können, werden bereits beim Hochfahren des Systems wichtige Netzwerkprozesse oder -Daemons automatisch gestartet. Zu den wichtigsten Netzwerk-Daemons gehören die im Folgenden beschriebenen.
Der Daemon inetd/xinetd Der Internet-Daemon steuert die vom System angebotenen Internetdienste. Der Start des Daemons inetd bzw. xinetd auf neueren Linux-Systemen erfolgt normalerweise, sobald das System in einen Runlevel mit Netzwerkdiensten gestartet wird. Es wird dazu das Run-Control-Skript /etc/init.d/inetd bzw. /etc/init.d/xinetd verwendet. Beim Starten wird die Konfigurationsdatei /etc/inetd.conf bzw. /etc/xinetd.conf gelesen.
Der Daemon in.ftpd Dieser Daemon für das File Transfer Protocol (FTP) bearbeitet von FTP-Clients gesendete Übertragungsanfragen. Er wird vom Daemon inetd gestartet. Standardmäßig können nur Benutzer mit gültigem Anmeldenamen und Passwort FTPAnfragen an das System stellen. Den in der Datei /etc/ftpusers aufgeführten Benutzern wird der Zugang verweigert. Dieser Daemon sollte deaktiviert werden, wenn er nicht unbedingt benötigt wird. Es werden dabei Passwörter unverschlüsselt im Netzwerk übertragen, die sich mit entsprechenden Tools abfangen lassen. Stattdessen sollte man sichere Alternativen wie Secure Shell (ssh) oder Secure Copy (scp) verwenden, die über die Website http://www.ssh.com heruntergeladen werden können.
735
Das Netzwerk verwalten
magnum
Der Daemon in.tftpd Dieser Daemon steuert das Trivial File Transfer Protocol (TFTP) und wird für eine einfache Art der Datenübertragung zwischen Rechnern verwendet.
Der Daemon in.fingerd Dieser Daemon verarbeitet Anfragen nach Informationen des Befehls finger an einem bestimmten Port. Standardmäßig werden solche Anfragen nicht mitprotokolliert und es können dabei Informationen an nicht autorisierte Dritte weitergegeben werden. Die Aktivierung dieses Daemons stellt daher ein Sicherheitsrisiko dar und sollte nur sehr überlegt erfolgen. Sie deaktivieren den Daemon, indem Sie die entsprechende Zeile in der Datei /etc/inetd.conf auskommentieren.
Der Daemon in.telnetd Dieser Daemon ermöglicht es Benutzern, sich mit Hilfe des Befehls telnet über das Netzwerk im System anzumelden. Er horcht dazu an einem bestimmten Port nach Verbindungsanfragen. Auch dieser Daemon sollte deaktiviert werden, wenn er nicht unbedingt benötigt wird. Es werden Passwörter unverschlüsselt im Netzwerk übertragen, die sich mit entsprechenden Tools abfangen lassen. Stattdessen sollte eine sichere Alternative wie Secure Shell (ssh) verwendet werden.
Der Daemon named Dieser Daemon wird für einen DNS-Server im Netzwerk oder im Internet verwendet.
Der Daemon pppd Dieser Daemon steht für Point-to-Point-Protokoll und kann Datagramme über eine serielle Verbindung übertragen.
Der Daemon tcpd Dieser Daemon überwacht eingehende TCP/IP-Anfragen, wie zum Beispiel von den Befehlen telnet, ftp, finger usw.
Der Daemon rpc.nfsd Dieser Daemon prüft die Anforderungen von Clients nach Dateisystemen im Netzwerk. Der Daemon läuft auch auf NFS-Servern.
Der Daemon rpc.mountd Dieser Daemon läuft ebenfalls auf NFS-Servern und überprüft, welche Dateisysteme auf anderen Rechnern zum Einhängen zur Verfügung stehen sollen und welcher Client welches Dateisystem gemountet hat. Er greift auf die Datei /etc/exports zu.
736
Kapitel 15 · Netzwerkgrundlagen
Der Daemon statd Dieser Daemon kann in Verbindung mit dem Daemon lockd verwendet werden, um den Status eines Systems zu überwachen. Der Prozess informiert andere Systeme, wenn ein System wieder erfolgreich hochgefahren wurde.
Der Daemon sshd Dieser Daemon ist der Dienst für den Befehl ssh, der die Befehle rlogin und rsh ersetzt, und stellt eine sichere, verschlüsselte Kommunikationsverbindung zwischen zwei Rechnern über ein unsicheres Netzwerk, wie zum Beispiel das Internet, zur Verfügung.
Der Daemon rpc.portmap Dieser Daemon ist ein Serverprogramm, das RPC-Programmnummern in IP-Portnummern konvertiert. Er muss laufen, damit RPC-Aufrufe gestartet werden können.
15.6 Trusted Host-Umgebung Remote-Befehle der homogenen Unix-Umgebung werden auch als »R-Kommandos« bezeichnet, weil sie mit dem Buchstaben »r« beginnen. Sie ermöglichen im Prinzip auf Befehlszeilenebene eine komfortable Kommunikation zwischen UnixRechnern auf der Grundlage von TCP/IP. Es werden zwei Dateien verwendet, um die Berechtigung für die Befehle rlogin, rsh und rcp zu überprüfen: $HOST/.rhosts und /etc/hosts.equiv. In diesen können sich Einträge befinden, die Remote-Zugriffe der genannten Befehle steuern. Wenn sich ein Benutzer normalerweise auf einem anderen Rechner anmelden möchte, muss er sich durch Angabe des Benutzernamens und Passworts authentifizieren. Bei einer Trusted Host-Umgebung ist dies nicht notwendig. Allerdings muss der Benutzer sowohl auf dem lokalen als auch auf dem Remote-Rechner über ein Benutzerkonto verfügen.
15.6.1
Dateien der Trusted Host-Umgebung
Die Dateien ~/.rhosts und /etc/hosts.equiv umgehen den standardmäßigen Passwortmechanismus, wobei zuerst nach der Datei /etc/hosts.equiv und anschließend nach der Datei ~/.rhosts gesucht wird. Wenn eine dieser Dateien existiert, wird der Zugriff aufgrund der darin enthaltenen Informationen zugelassen oder verweigert. Die Einträge der Dateien können folgendermaßen aussehen: rechnername rechnername benutzername + + benutzername
쮿
Wenn nur der Rechnername verwendet wird, dann wird allen Benutzern dieses Rechners vertraut, wenn diese auch auf dem lokalen Rechner bekannt sind.
쮿
Wenn der Rechner- und der Benutzername verwendet werden, dann kann mit der Option –l auf jeden beliebigen Benutzer ohne Passwortangabe auf dem lokalen Rechner zugegriffen werden.
737
Trusted Host-Umgebung
magnum
쮿
Wenn nur ein Pluszeichen + angegeben wird, dann darf jeder Benutzer von jedem Rechner im Netzwerk ohne Passwortangabe auf den lokalen Rechner zugreifen.
쮿
Wenn das Pluszeichen gemeinsam mit einem Benutzernamen verwendet wird, darf dieser Benutzer von jedem Rechner aus auf den lokalen Rechner zugreifen.
Die Trusted Host-Umgebung sollte wirklich nur in einem begrenzten, abgeschlossenen Netzwerk verwendet werden, da sie ein großes Sicherheitsrisiko darstellt. Sie sollten beachten, dass diese beiden Dateien zu den Hauptursachen für Sicherheitsrisiken zählen. Wenn Sie die Trusted Host-Umgebung verwenden müssen, berücksichtigen Sie unbedingt die folgenden Punkte:
쮿
Verwenden Sie niemals die Form rechnername benutzername, sondern geben Sie immer entweder einen Anwender- oder einen Rechnernamen an.
쮿
Verwenden Sie niemals das Pluszeichen als Eintrag.
쮿
Tragen Sie nur Rechner in die Dateien ein, die absolut vertrauenswürdig und sehr sicher sind.
쮿
Überprüfen Sie die Dateien regelmäßig dahingehend, ob sie irgendwie geändert wurden oder ob auf sie ein unberechtigter Zugriff erfolgte.
쮿
Bedenken Sie, dass es recht einfach ist, einen Rechnernamen oder eine IPAdresse nachzuahmen. Wenn das Netzwerk »öffentlich« zugänglich ist, bietet dieser Identifikationsmechanismus deshalb nur geringen Schutz.
Die Datei /etc/hosts.equiv Die Datei /etc/hosts.equiv ist für das gesamte System gültig und enthält Rechnernamen und Benutzernamen, denen »vertraut« werden soll. Die Datei wird allerdings nicht geprüft, wenn root einen Zugriff auf das lokale System verlangt. Ein Remote-Anwender, der sich auf Basis dieser Datei anmelden kann, muss auch als lokaler Anwender einen Eintrag in der Datei /etc/passwd haben, sonst wird der Zugriff verweigert. Die Datei ist standardmäßig nur mit Kommentaren gefüllt.
Die Datei ~/.rhosts Diese Datei befindet sich im Homeverzeichnis eines Benutzers und kann alle Rechner und Benutzer enthalten, die die Erlaubnis haben, sich an diesem lokalen Benutzerkonto anzumelden. Die Datei hat normalerweise auch Einträge in der Form rechnername benutzername. Ohne Angabe des Benutzernamens haben alle Benutzer des angegebenen Rechners Zugriffsrechte. Diese Datei existiert standardmäßig nicht.
15.6.2
Trusted Host-Umgebung mit Secure Shell
Sie können auch mit der Secure Shell ssh eine Trusted Host-Umgebung einrichten. Dazu benötigen Sie die beiden Dateien ~/.shosts und ~/.ssh/known_hosts. Die Datei ~/.shosts hat dieselbe Syntax wie die Datei ~/.rhosts. Die Einträge der Datei können also auch folgendermaßen aussehen:
738
Kapitel 15 · Netzwerkgrundlagen
rechnername benutzername
Die Datei ~/.ssh/known_hosts hat folgenden Aufbau: rechnername public-key
Den öffentlichen Schlüssel public-key kopieren Sie einfach aus der Datei /etc/ssh/ssh_host_key.pub des Clients. Diese hat folgenden Aufbau: bits exponent module kommentar
Am einfachsten ist es, Sie kopieren diese Datei auf ~/.ssh/known_hosts und schreiben den Rechnernamen davor: pc5lsu 1024 35 13383366562556316268535755752348586667277378607615415714458274757527255436563829 48498064306268394073865094102283252092535657189624094302401489635049291030129883 09984756763337433699905008877144010325366911694730604178564426761957118478586805 781902338212929716668690187810592941875567058262157714682845462159493 root@pc5lsu
Der Rechnername lautet in diesem Beispiel pc5lsu, die Bitzahl 1024 und der Exponent 35. Der öffentliche Schlüssel beginnt mit der Zahlenfolge 1338336 und der Kommentar lautet root@pc5lsu.
15.7 Routing Das Betriebssystem Linux kann Datenpakete über verschiedene Netzwerke hinweg vermitteln und damit Routingfunktionen übernehmen. Rechner führen Routingtabellen, die bestimmen, auf welchem Weg ein Datenpaket weitergeleitet werden soll. Wenn sich der Absender- und Zielrechner im gleichen Netzwerk befinden, ist Routing nur im Absenderrechner notwendig. Routing ist unbedingt erforderlich, wenn beide Rechner sich in unterschiedlichen Netzwerken befinden, da in diesem Fall ein Datenpaket über Zwischennetze weitergeleitet werden muss. Diese Aufgabe übernimmt ein Router, der in der Regel mehrere Netzwerkkarten enthält, um die verschiedenen Netzwerke zu erreichen. Rechner verwenden die Dienste eines Routers durch Einträge in ihre Routingtabellen. Der Pfad zum nächsten (Default-)Router wird unter Linux fast immer durch einen statischen Eintrag oder DHCP ermittelt. Zwischen Routern wird das spezielle Routingprotokoll RIP (Routing Information Protocol) verwendet. Die Informationen der Router werden von den Rechnern abgehört und für einen dynamischen Eintrag in den eigenen Routingtabellen verwendet. Beim Versenden eines IP-Pakets wird die im Kernel befindliche Routingtabelle nach einem Eintrag des Zielrechners durchsucht. Ist ein solcher Eintrag vorhanden, wird das Paket auf der hinterlegten Route dorthin versandt, andernfalls wird eine Fehlermeldung ausgegeben, dass der Zielrechner nicht erreichbar sei. Die Routingtabelle kann entweder durch statisches Routen mit dem Befehl route oder durch dynamisches Routen mit Daemonprozessen ergänzt werden.
Der Befehl route Mit dem Befehl route kann die Routingtabelle manuell geändert werden, wobei der Befehl über Schlüsselwörter gesteuert wird. Die Einträge der Routingtabelle lassen sich hinterher mit netstat –r ausgeben. Der Befehl hat folgende Syntax: # route [–option(en)] schlüsselwort [-net|-host] rechner
739
magnum
Routing
Es können folgende Optionen verwendet werden: Option
Beschreibung
-A
Verwendet die angegebene Adressfamilie, zum Beispiel inet
familie -C
Arbeitet mit dem Routingcache des Kernels
-e
Verwendet das Format des Befehls netstat, um die Routingtabelle anzuzeigen
-F
Arbeitet mit der FIB(Forwarding Information Base)-Routingtabelle des Kernels. Diese Option ist Standardeinstellung.
-n
Unterdrückung der Umsetzung von IP-Adressen in Netzwerk- oder Rechnernamen
-v
Ausgabe von zusätzlichen Informationen
Tab. 15.29: Die Optionen des Befehls route
Der Befehl kennt folgende Schlüsselwörter: Schlüsselwort
Beschreibung
add
Hinzufügen einer Route
del
Löschen einer Route
dev interface
Erzwingt, dass die Route mit der angegebenen Netzwerkschnittstelle verknüpft wird
gw gateway
Pakete werden über das angegebene Gateway geroutet.
-host
Das Ziel ist ein Rechner.
irtt i
Setzt die anfängliche Rundlaufzeit (Round Trip Time) für TCP-Verbindungen über diese Route auf i Millisekunden
metric m
Setzt das metrische Feld in der Routingtabelle, das von den Routing-Daemons verwendet wird, auf den Wert m
mss m
Setzt die maximale TCP-Segmentgröße für Verbindungen über diese Route auf m Bytes
-net
Das Ziel ist ein Netzwerk.
netmask netmask
Beim Hinzufügen einer Netzwerkroute wird die angegebene Netzmaske verwendet.
reject
Installiert eine blockierende Route, die eine Routensuche zum Abbruch bringt
window w
Setzt die TCP-Fenstergröße für Verbindungen über diese Route auf w Bytes
Tab. 15.30: Die Schlüsselwörter des Befehls route
740
Kapitel 15 · Netzwerkgrundlagen
Im folgenden Beispiel wird eine Route vom eigenen Netzwerk zum Netzwerk 192.56.76.x über die Netzwerkschnittstelle eth0 hinzugefügt und anschließend die Routingtabelle mit dem Befehl route oder netstat -r angezeigt: # route add -net 192.56.76.0 gw 192.56.76.50 netmask 255.255.255.0 dev eth0 # route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.172.0 * 255.255.255.0 U 0 0 0 eth0 10.3.0.0 * 255.255.0.0 U 0 0 0 eth0 default dsl.hertzog-edv 0.0.0.0 UG 0 0 0 eth0
15.7.1
Routingprozesse
Dynamisches Routing wird mit den Daemonprozessen routed, gated und rdisc durchgeführt. Diese Prozesse geben auf Routern in der Regel die Routinginformationen weiter an andere Router oder Rechner, während auf Endrechnern mit diesen Informationen die Routingtabellen ergänzt werden. Auf vielen Unix- und Linux-Derivaten werden dafür die Daemons routed, gated und rdisc verwendet.
Der Daemon routed Dieser Daemon wird beim Hochfahren des Systems gestartet, wenn kein Defaultrouter im System konfiguriert ist. Er prüft die System-Routingtabellen auf Netzwerkaktivität und den Port 520/udp nach Routingpaketen ab. Wird der Rechner als Routingrechner eingesetzt, werden auch anderen Rechnern Kopien der Routingtabelle zur Verfügung gestellt. Der Daemon sucht sofort nach seinem Aufruf nach konfigurierten Netzwerkschnittstellen und nimmt bei der Existenz von zwei Netzwerkkarten an, dass Pakete zwischen den beiden Schnittstellen und damit zwischen zwei Netzwerken weitergeleitet werden sollen. Bei Bedarf werden die Routingtabellen aktualisiert und nicht verwendete Einträge werden ca. alle 5 Minuten gelöscht. Zur Konfiguration werden die Dateien /etc/gateways und /etc/networks eingesetzt. Der Daemon kann mit folgenden Optionen verwendet werden: Option
Beschreibung
-g
Definition eines Standardeintrags für einen Router, wenn kein dynamisches Routing durchgeführt wird, zum Beispiel für den Einsatz eines Standardgateways
-q
Der Rechner liefert keine Routingtabellen, auch wenn er mehrere Netzwerkschnittstellen hat.
-s
Ausgabe von Routinginformationen in alle angeschlossenen Netzwerke
-S
Verwendung einer abgespeckten Routingtabelle mit Standardrouten, um Ressourcen zu sparen
-t datei
Protokollierung aller Routinginformationen in die angegebene Datei oder an der Standardausgabe
-v datei
Protokollierung von Veränderungen der Routingtabelle einschließlich der Uhrzeit in die angegebene Datei
Tab. 15.31: Die Optionen des Prozesses in.routed
741
magnum
Routing
Die Man Pages empfehlen den Einsatz von routed nicht unbedingt, sondern verweisen darauf, dass gated oder zebra verwendet werden soll. gated ist allerdings nur für große Sites zum Beispiel mit mehreren redundanten Internetanbindungen gedacht und aus Lizenzgründen auch nicht für jede Distribution verfügbar.
Der Daemon rdisc Dieser Daemon nimmt Einträge in die Netzwerk-Routingtabellen vor, wenn das System mit Hilfe des ICMP Router Discovery-Protokoll gestartet wurde. Er sucht über die Multicast-Adresse ALL_HOSTS (224.0.0.1) nach anderen Routern und trägt Router mit der höchsten Priorität in die Routingtabelle ein. Handelt es sich bei einem Rechner um einen Routingrechner, dann wird anderen Systemen die Information über die Anwesenheit des Routers ca. alle 10 Minuten über die Multicast-Adresse ALL_HOSTS mitgeteilt. Der Daemon kann mit folgenden Optionen gestartet werden. Option
Beschreibung
-a
Alle entdeckten Routen werden unabhängig von ihrer Priorität in die Routingtabelle übernommen.
-b
Das Gegenteil von -a, installiert nur Router mit der besten Priorität
-d
Sendet Debugging-Informationen an syslog
-f
Der Daemon bleibt auch aktiv, wenn keine Router entdeckt wurden.
-s
Der Daemon wird beim Hochfahren des Systems nach drei Versuchen beendet, wenn keine anderen Router gefunden werden.
-t
Testmodus
-v
Ausführliche Ausgabe
Tab. 15.32: Die Optionen des Prozesses rdisc
Der Daemon mrtd Dieser Daemon (Multithreaded Routing Toolkit Daemon) wird von SUSE Linux verwendet und unterstützt im Moment BGP (Border Gateway Protocol), RIP (Routing Information Protocol) und RIPng. Er kann mit Hilfe der Datei /etc/mrtd.conf konfiguriert werden. Der Daemon kennt folgende Optionen: Option
Beschreibung
-f
Verwendet eine alternative Konfigurationsdatei anstelle von /etc/mrtd.conf
-n
Legt fest, dass mrtd die Kernel-Routingtabelle nicht ändert
-p
Verwendet eine andere Portnummer anstelle von 5674 oder mrt in /etc/services
-v
Zeigt an, dass alle Debugging-Optionen aktiv sind
Tab. 15.33: Die Optionen des Prozesses mrtd
742
Kapitel 15 · Netzwerkgrundlagen
Die Funktion des Daemons mrtd kann mit dem Befehl telnet überprüft werden:
Bild 15.48: mrtd mit telnet überprüfen
Der Daemon radvd Dieser Daemon ist der Router-Advertisement-Daemon für IPv6. Er horcht nach Routerangeboten und versendet Routerbekanntmachungen. Mit Hilfe dieser Bekanntmachungen können Rechner automatisch ihre Adressen und einige andere Parameter konfigurieren. Sie können auch einen Standardrouter auf der Basis dieser Bekanntmachungen vornehmen. Sein IPv4-Gegenstück ist der Daemon rdisc.
Der Daemon gated Dieser Daemon kann verschiedene Routingprotokolle verarbeiten und auf eines oder mehrere dieser Protokolle eingestellt werden. Damit ersetzt er den Daemon routed. Er verwendet die Konfigurationsdatei /etc/gated.conf.
743
magnum
Routing
15.7.2
Routing mit YaST einrichten
Wählen Sie unter SUSE Linux in YAST das Menü NETZWERKDIENSTE - WEITERLEITUNG. Hinterlegen Sie das Standardgateway und gegebenenfalls Ihre Routingtabelle:
Bild 15.49: Standardgateway und Routingtabelle hinterlegen
744
16 Internetdienste einrichten »Das Internet bringt Menschen so zusammen, dass sie bleiben können, wo sie wollen.« – © Klaus Klages In diesem Kapitel erfahren Sie, welche Voraussetzungen Sie für einen Internetanschluss unter Linux erfüllen müssen und wie Sie die Internetverbindung mit der grafischen Oberfläche KDE einrichten. Außerdem werden Ihnen einige Browser kurz vorgestellt und mit diesen im World Wide Web gesurft. Anschließend lernen Sie die E-Mail-Funktion einrichten und Messenger-Dienste kennen.
16.1 Internet-Zugang einrichten Der Begriff Internet setzt sich aus International und Network zusammen und bezeichnet ein weltumspannendes Netzwerk. Genau genommen ist das Internet aber nicht ein einziges Netzwerk, sondern der Zusammenschluss von vielen kleinen Netzwerken weltweit. Im Internet selbst tauschen sich nicht nur die Rechner einer einzigen Firma, sondern in der ganzen Welt aus. Über das Internet kann ein Rechner in Sydney problemlos und rasch Daten mit Rechnern in Berlin, Kiew und Boston austauschen. Anstelle einer direkten Datenleitung zwischen den Rechnern in Form von Netzkabeln werden das Telefonnetz und Satellitenverbindungen verwendet. Am Anfang nahmen nur einige Rechner von Universitäten am Internet teil. Der Ursprung des Internets findet sich im ArpaNet, das 1969 vom US-amerikanischen Verteidigungsministerium gegründet wurde, um einen schnellen, einfachen und ausfallsicheren Datenaustausch zu ermöglichen. Heute besteht das Internet aus vielen tausend Rechnern, so genannten Servern oder Webservern, und Millionen von Teilnehmern. Nicht jeder besitzt einen eigenen Webserver, kann trotzdem am Internet teilnehmen, indem er sich an einen Provider wendet. Dieser bietet einen in der Regel kostenpflichtigen Zugriff aufs Internet als Dienstleistung an. Außer den Providerkosten fallen noch Telefongebühren an, wenn Sie sich ins Internet einwählen, da Sie dazu das öffentliche Telefonnetz benutzen. Diese Variante ist für Internetnutzer geeignet, die sich nicht so häufig ins Internet einwählen. Alternativ ist es möglich, einen Pauschaltarif zu wählen, eine so genannte Flatrate. Neben einem Benutzerkonto (auch Account genannt) und einem Passwort bei einem Provider sind für den Internetzugang noch die entsprechende Software und Hardware notwendig. An Hardware benötigen Sie entweder ein Modem, das die Verbindung zwischen Telefonanschluss und PC herstellt, im Falle eines analogen Telefonanschlusses, oder eine ISDN-Karte, wenn Sie über einen ISDN-Anschluss verfügen, oder eine DSL-Verbindung oder ein Kabelmodem. Ein Kabelmodem ist ein Gerät, das Daten über TV-Kabelnetze überträgt und sich zwischen dem Kabelanschluss und dem Computer befindet. Die Verbindung zum Computer kann entweder über Ethernet, den USB-Port oder bei einem so genannten Wireless Cable Modem Gateway auch über einen Wireless Access Point per Funkverbindung erfolgen.
745
Internet-Zugang einrichten
magnum
An Software benötigen Sie für einen Internetzugang einen Internetbrowser. Die beiden am weitesten verbreiteten Browserprogramme sind der Microsoft Internet Explorer (der aber nur für das Betriebssystem Microsoft Windows geschrieben wurde) und Firefox oder Mozilla (entstanden aus dem Netscape Communicator), die kostenlos mit Ihrem Linux-Paket ausgeliefert werden. Wenn Sie die Standardinstallation (siehe Kapitel 5) gewählt haben, sollte einer der beiden Browser bei Ihnen bereits auf dem Rechner installiert sein. Wenn Sie sich über Ihren vom Provider zur Verfügung gestellten Internetzugang ins Internet einwählen, dann surfen Sie in der Regel im World Wide Web. Dies ist der vor allem von Privat- und Firmenkunden am häufigsten benutzte Internetdienst. Dazu geben Sie in einem Browserfenster eine Ihnen bekannte Internetadresse ein oder klicken auf einen angezeigten Hyperlink. Die Adresse für ein Dokument oder einen Webserver im Internet wird als URL (Uniform Resource Locator) bezeichnet und ist immer in dieser Form aufgebaut: Internetdienst://netzname.domänenname.länderkennzeichen Der Internetdienst ist in der Regel das Protokoll http. Es ist der Standarddienst und muss deshalb im Adressfeld des Browsers nicht extra eingegeben werden. Der Netzname ist sehr häufig die Bezeichnung www für das World Wide Web. Unternehmen und Privatpersonen, die einen festen Bereich im Internet möchten, kaufen sich einen Domänennamen, unter dem sie zu finden sind. Das Länderkennzeichen oder auch: Top-Level-Domain kann zum Beispiel de für Deutschland oder uk für Großbritannien sein. Die USA weichen von diesen Bezeichnungen in ihrer Rolle als Interneturheber ab: Hier gibt es Bezeichnungen wie com (kommerziell), mil (militärisch), GOV (Regierung), edu (Education) usw. Der URL des Verlags Markt+Technik lautet zum Beispiel http://www.mut.de.
16.1.1
Voraussetzungen für einen Internetanschluss
Um ins Internet zu kommen, müssen Sie die dazu notwendige Hardware und Software installiert und einen Internetzugang über einen Provider haben. Ein Provider ist ein Dienstleistungsunternehmen, das Ihnen einen Internetzugang gegen Gebühr vermietet. Zu den großen Providern gehören so genannte Online-Dienste, wie zum Beispiel T-Online, AOL usw. Es gibt auch häufig regionale Anbieter, an die Sie sich wenden können und die in der Regel recht günstige Zugänge anbieten. Die notwendige Hardware bedeutet, Sie besitzen entweder ein an Ihrem PC angeschlossenes Modem oder eine ISDN-Karte oder eine DSL-Karte bzw. einen DSLRouter. Wenn Sie nur über einen herkömmlichen analogen Telefonanschluss verfügen, müssen Sie sich ein Modem besorgen und an den Rechner anschließen. Wenn Sie über einen ISDN-Telefonanschluss verfügen, dann müssen Sie sich für den Internetanschluss eine ISDN-Karte in Ihren Rechner einbauen und installieren lassen. Das Surfen im Internet über einen ISDN-Anschluss ist in der Regel komfortabler als per Modem, da die Einwahl per ISDN schneller geht und die Webseiten per ISDN schneller übertragen werden. Es ist auch möglich, eine ISDN-Karte über eine externe Schnittstelle an den Computer anzuschließen, zum Beispiel eine USBSchnittstelle, eine Netzwerkverbindung oder Bluetooth. Der Industriestandard Bluetooth stellt eine drahtlose Vernetzung (per Funk) für Geräte über kurze Entfernungen zur Verfügung, zum Beispiel für Computer und Maus bzw. Tastatur.
746
Kapitel 16 · Internetdienste einrichten
Die schnellste Möglichkeit ist eine DSL-Karte oder ein DSL-Router. Außer Wählleitungen gibt es auch Standleitungen, wie zum Beispiel DSL, um eine Verbindung zum Internet aufzubauen. Diese bieten zum einen eine ständige Verbindung zum Internet und besitzen außerdem eine größere Bandbreite, wodurch sie schneller Daten übertragen können. Bei der Auswahl des Providers bzw. Online-Dienstes sollten Sie folgende Auswahlkriterien beachten: Bietet Ihnen der Online-Dienst einen Einwahlknoten ins Internet zum günstigeren Ortstarif? Einwahlmöglichkeiten zum Ortstarif bieten sehr große Online-Dienste wie zum Beispiel T-Online oder regionale Anbieter oder Hochschulen. Das zweite Auswahlkriterium sollten die Gebühren sein, die der Provider Ihnen in Rechnung stellt. Dazu gehören sowohl eine einmalige Einrichtungsgebühr für den Internetanschluss als auch monatliche Grundgebühren und Gebühren für die tatsächliche Nutzung des Anschlusses. Diese Gebühren setzen sich häufig aus Minutenkosten und aus der Menge der übertragenen Daten zusammen. Ein drittes Auswahlkriterium, das aber vorab sehr schwer einzuschätzen ist, ist die Verfügbarkeit und Geschwindigkeit des Internetanschlusses. Überlegen Sie sich außerdem, wie häufig Sie Ihren Internetanschluss nutzen möchten. Vergleichen Sie die Kosten der Online-Dienste mit diesen Voraussetzungen, um den für Sie günstigsten Anbieter zu finden. Eventuell kommt für Sie auch eine so genannte Internet-by-Call-Verbindung in Frage, wenn Sie das Internet nicht häufig nutzen. Im Gegensatz zu den anderen Online-Diensten mieten Sie sich bei dieser Möglichkeit keinen festen Internetzugang, sondern entrichten nur eine Gebühr, wenn Sie tatsächlich im Internet surfen. Surfen Sie dagegen häufig im Internet, kann für Sie eine Flatrate die günstigste Lösung sein. Nachfolgend werden zwei grafische Methoden erläutert, um mit SUSE Linux und Fedora Core Linux einen Internetzugang einzurichten. Alternativ können Sie unter SUSE Linux und anderen Linux-Distributionen, die KDE als grafische Oberfläche verwenden, die KDE-Tools KPPP für das Einrichten des Modems und KISDN für das Einrichten der ISDN-Karte verwenden. Kisdn ist im Umfang von neueren SUSE-Linux-Distributionen allerdings nicht mehr enthalten.
16.1.2
Internet mit YaST einrichten
Per Modem ins Internet Eine Modemverbindung ist kein Problem unter Linux. In der Regel wird das angeschlossene Modem automatisch erkannt. Falls nicht, verwenden Sie bei SUSE YaST, um das Modem einzurichten bzw. die Providerangaben zu ergänzen. Starten Sie dazu das Menü NETZWERKDIENSTE - MODEM. Wenn Ihr Modem bereits erkannt wurde, wird es im unteren Bereich der konfigurierten Modems aufgelistet. Wenn nicht, klicken Sie auf KONFIGURIEREN:
747
Internet-Zugang einrichten
magnum
Bild 16.1: Modem manuell konfigurieren
Zuerst können Sie Modemparameter einstellen, wie zum Beispiel Tonwahl aktivieren und den Modemgerätenamen wählen:
Bild 16.2: Modemparameter einstellen
748
Kapitel 16 · Internetdienste einrichten
Wenn Sie auf DETAILS klicken, können Sie weitere Einzelheiten zum Modem festlegen, wie zum Beispiel die Baudrate oder den Initialisierungsstring des Modems:
Bild 16.3: Details zu Modemparametern festlegen
Wenn Sie anschließend auf OK und dann auf WEITER klicken, können Sie Ihren Internet Service Provider aus einer Liste wählen:
Bild 16.4: Provider auswählen
749
Internet-Zugang einrichten
magnum
In unserem Beispiel wurde ARCOR ausgewählt. Alternativ können Sie auf NEU klicken, um selbst einen Provider zu hinterlegen:
Bild 16.5: Provider einrichten
Wenn Sie einen Provider aus der Liste gewählt haben und auf WEITER klicken, werden die Providerdaten automatisch angezeigt und Sie müssen noch Ihren Benutzernamen und das Passwort hinterlegen, die Sie vom Provider erhalten haben:
Bild 16.6: Automatische Anzeige der Providerdaten
Im nächsten Fenster können Sie die Verbindungsparameter festlegen:
750
Kapitel 16 · Internetdienste einrichten
Bild 16.7: Verbindungsparameter festlegen
DIAL-ON-DEMAND bedeutet, dass bei Bedarf (zum Beispiel dem Öffnen eines Browsers) eine Einwahl ins Internet erfolgt, ohne dass diese Einwahl manuell angestoßen werden muss. Diese Option sollten Sie auf keinen Fall aktivieren, wenn Ihr Internetzugang nach Einwahl und Zeitdauer abgerechnet wird. Bei einer Flatrate hingegen ist diese Option zu empfehlen. Das neu konfigurierte Modem wird nun im Bereich BEREITS GERÄTE angezeigt:
KONFIGURIERTE
Bild 16.8: Anzeige des konfigurierten Modems
751
Internet-Zugang einrichten
magnum
Wenn Ihr Modem bereits erkannt wurde und Sie nur noch den Provider erfassen möchten, klicken Sie im unteren Fensterbereich einfach auf ÄNDERN:
Bild 16.9: Modemkonfiguration ändern
Mit den Schaltflächen BEARBEITEN können Sie nun den Modemtyp oder den Provider ändern bzw. mit HINZUFÜGEN neue Modemtypen oder Provider hinzufügen.
Per ISDN ins Internet Auch eine ISDN-Verbindung ist unter Linux einfach konfigurierbar. Die angeschlossene ISDN-Karte wird normalerweise auch automatisch erkannt. Falls nicht, verwenden Sie bei SUSE YaST, um ISDN einzurichten bzw. die Providerangaben zu ergänzen. Starten Sie dazu das Menü NETZWERKDIENSTE - ISDN. Wenn Ihre ISDN-Karte bereits erkannt wurde, wird sie im unteren Bereich der konfigurierten ISDN-Karten aufgelistet. Wenn nicht, klicken Sie auf KONFIGURIEREN:
Bild 16.10: ISDN manuell konfigurieren
752
Kapitel 16 · Internetdienste einrichten
Zuerst können Sie die ISDN-Karte manuell über den Hersteller und das Fabrikat wählen:
Bild 16.11: ISDN-Karte auswählen
Anschließend können Sie die ISDN-Karte konfigurieren, zum Beispiel, dass sie beim Booten aktiviert werden soll:
Bild 16.12: ISDN-Karte konfigurieren
Im nächsten Schritt fügen Sie den Netzwerkdienst hinzu, indem Sie auf die entsprechende Schaltfläche klicken. In der Regel werden Sie SyncPPP verwenden:
753
Internet-Zugang einrichten
magnum
Bild 16.13: SyncPPP-Schnittstelle hinzufügen
Das Point-to-Point-Protocol (PPP) ist ein Protokoll zum Verbindungsaufbau über Wählleitungen (in der Regel über Modem oder ISDN) und kann verschiedene Netzwerkprotokolle übertragen. Synchrones PPP verpackt die Rohdaten der jeweiligen Verbindungsart im Gegensatz zu asynchronem PPP in HDLC (High-Level Data Link Control), das ist ein von der ISO normiertes Netzwerkprotokoll, das von ISDN (Integrated Services Digital Network) verwendet wird. Anschließend können Sie die SyncPPP-Schnittstelle konfigurieren:
Bild 16.14: SyncPPP-Schnittstelle konfigurieren
754
Kapitel 16 · Internetdienste einrichten
Im nächsten Fenster können Sie eine IP-Adresse hinterlegen, für den Fall, dass Ihr Provider Ihnen eine feste Adresse zugewiesen hat. In der Regel werden Sie aber eine dynamische IP-Adresse erhalten:
Bild 16.15: ISDN-IP-Adresse einstellen
Wenn Sie anschließend auf OK und dann auf WEITER klicken, können Sie Ihren Internet Service Provider aus einer Liste wählen.
Bild 16.16: Provider auswählen
In unserem Beispiel wurde GERMANY.NET ausgewählt. Alternativ können Sie auf NEU klicken, um selbst einen Provider zu hinterlegen. Ansonsten klicken Sie auf WEITER, um die Providerparameter einzustellen:
755
Internet-Zugang einrichten
magnum
Bild 16.17: Provider einrichten
Im nächsten Fenster können Sie die Verbindungsparameter festlegen:
Bild 16.18: Verbindungsparameter festlegen
756
Kapitel 16 · Internetdienste einrichten
Die neu konfigurierte ISDN-Karte wird nun im Bereich BEREITS GERÄTE angezeigt:
KONFIGURIERTE
Bild 16.19: Anzeige der konfigurierten ISDN-Karte
Wenn Ihre ISDN-Karte bereits erkannt wurde und Sie nur noch den Provider erfassen möchten, klicken Sie im unteren Fensterbereich einfach auf ÄNDERN:
Bild 16.20: ISDN-Konfiguration ändern
Mit den Schaltflächen BEARBEITEN können Sie nun die ISDN-Karte oder den Provider ändern bzw. mit HINZUFÜGEN neue ISDN-Karten oder Provider hinzufügen.
757
Internet-Zugang einrichten
magnum
Per DSL ins Internet In diesem Abschnitt wird eine DSL-Verbindung unter Linux konfiguriert. Die angeschlossene DSL-Karte wird in der Regel automatisch erkannt. Falls nicht, verwenden Sie bei SUSE YaST, um DSL einzurichten bzw. die Providerangaben zu ergänzen. Starten Sie dazu das Menü NETZWERKDIENSTE - DSL. Wenn Ihre DSLKarte bereits erkannt wurde, wird sie im unteren Bereich der konfigurierten DSLKarten aufgelistet. Wenn nicht, klicken Sie auf KONFIGURIEREN:
Bild 16.21: DSL manuell konfigurieren
Zuerst müssen Sie DSL konfigurieren, zum Beispiel den PPP-Modus und die Geräte-Aktivierung:
Bild 16.22: DSL konfigurieren
758
Kapitel 16 · Internetdienste einrichten
Wenn Sie anschließend auf OK und dann auf WEITER klicken, können Sie Ihren Internet Service Provider aus einer Liste wählen:
Bild 16.23: Internet Service Provider wählen
In unserem Beispiel wurde 1&1 ausgewählt. Alternativ können Sie auf NEU klicken, um selbst einen Provider zu hinterlegen. Ansonsten klicken Sie auf WEITER, um die Providerparameter einzustellen:
Bild 16.24: Provider einrichten
759
Internet-Zugang einrichten
magnum
Im nächsten Fenster können Sie die Verbindungsparameter festlegen:
Bild 16.25: Verbindungsparameter festlegen
Die neu konfigurierte DSL-Verbindung wird nun im Bereich BEREITS RIERTE GERÄTE angezeigt:
KONFIGU-
Bild 16.26: Anzeige der konfigurierten DSL-Verbindung
Wenn Ihre DSL-Karte bereits erkannt wurde und Sie nur noch den Provider erfassen möchten, klicken Sie im unteren Fensterbereich einfach auf ÄNDERN:
760
Kapitel 16 · Internetdienste einrichten
Bild 16.27: DSL-Konfiguration ändern
Mit den Schaltflächen BEARBEITEN können Sie nun das DSL-Gerät oder den Provider ändern bzw. mit HINZUFÜGEN neue DSL-Geräte oder Provider hinzufügen. Wenn Sie einen DSL-Router haben, genügt es, in YaST mit dem Menü NETZWERKDIENSTE - NETZWERKKARTE diesen Router zu konfigurieren. Klicken Sie auf KONFIGURIEREN im Fenster der angezeigten Netzwerkkarte und anschließend auf BEARBEITEN und ROUTING. Stellen Sie dann das Standardgateway ein:
Bild 16.28: Standardgateway für DSL-Router einstellen
761
Internet-Zugang einrichten
16.1.3
magnum
Internet mit Fedora Core Linux grafisch einrichten
Per Modem ins Internet Eine Modemverbindung ist kein Problem unter Linux. In der Regel wird das angeschlossene Modem automatisch erkannt. Falls nicht, verwenden Sie bei Fedora im KDE-Hauptmenü die Option SYSTEMWERKZEUGE - WIZARD ZUR INTERNETKONFIGURATION, um das Modem einzurichten bzw. die Providerangaben zu ergänzen.
Bild 16.29: Modem manuell konfigurieren
Wählen Sie MODEM-VERBINDUNG und klicken Sie auf VOR. Zuerst können Sie Modemeigenschaften einstellen, wie zum Beispiel Tonwahl aktivieren und den Modemgerätenamen wählen:
Bild 16.30: Modemparameter einstellen
Wenn Sie auf VOR klicken, können Sie den Provider wählen. Die Liste auf der linken Fensterhälfte können Sie aufklappen, indem Sie auf die Pluszeichen klicken.
762
Kapitel 16 · Internetdienste einrichten
Bild 16.31: Provider auswählen
Im nächsten Fenster können Sie die IP-Einstellungen durchführen.
Bild 16.32: IP-Einstellungen festlegen
Das neu konfigurierte Modem wird zum Abschluss angezeigt. Klicken Sie auf ANWENDEN, um die Einstellungen zu bestätigen.
Bild 16.33: Anzeige des konfigurierten Modems
763
Internet-Zugang einrichten
magnum
Per ISDN ins Internet Auch eine ISDN-Verbindung ist unter Linux einfach konfigurierbar. Die angeschlossene ISDN-Karte wird normalerweise auch automatisch erkannt. Falls nicht, verwenden Sie bei Fedora im KDE-Hauptmenü die Option SYSTEMWERKZEUGE WIZARD ZUR INTERNETKONFIGURATION, um ISDN einzurichten bzw. die Providerangaben zu ergänzen.
Bild 16.34: ISDN manuell konfigurieren
Wählen Sie ISDN-VERBINDUNG und klicken Sie auf VOR. Legen Sie dann die Daten zu Ihrer ISDN-Karte fest:
Bild 16.35: ISDN-Karte konfigurieren
Anschließend legen Sie die IP-Einstellungen fest.
764
Kapitel 16 · Internetdienste einrichten
Bild 16.36: IP-Einstellungen definieren
Klicken Sie auf VOR, um Ihren Internet Service Provider aus einer Liste zu wählen:
Bild 16.37: Provider auswählen
Die neu konfigurierte Internetverbindung per ISDN wird nun angezeigt. Klicken Sie auf ANWENDEN, um die Einstellungen zu bestätigen.
Bild 16.38: Anzeige der konfigurierten ISDN-Karte
765
Internet-Zugang einrichten
magnum
Per DSL ins Internet In diesem Abschnitt wird eine DSL-Verbindung unter Linux konfiguriert. Die angeschlossene DSL-Karte wird in der Regel automatisch erkannt. Falls nicht, verwenden Sie bei Fedora im KDE-Hauptmenü die Option SYSTEMWERKZEUGE WIZARD ZUR INTERNETKONFIGURATION, um DSL einzurichten bzw. die Providerangaben zu ergänzen.
Bild 16.39: DSL manuell konfigurieren
Zuerst müssen Sie die DSL-Verbindung konfigurieren und den Provider eingeben:
Bild 16.40: DSL konfigurieren
Die neu konfigurierte DSL-Verbindung wird nun angezeigt. Klicken Sie auf ANWENDEN, um die Einstellungen zu bestätigen.
766
Kapitel 16 · Internetdienste einrichten
Bild 16.41: Anzeige der konfigurierten DSL-Verbindung
16.1.4
Den Internetzugang starten
Wenn Sie die Internetverbindungen eingerichtet haben, erscheint in Ihrer Kontrollleiste auf der rechten Seite ein neues Symbol in Form eines Steckers (ausgenommen, Sie verwenden einen DSL-Router). Dieses Symbol wurde von YaST oder Kppp oder Kisdn mit dem Befehl Kinternet gestartet und ermöglicht es Ihnen, sich im Internet anzuwählen bzw. die Verbindung wieder zu treten. Zum Anwählen klicken Sie einfach auf das Symbol oder öffnen mit der rechten Maustaste das KINTERNET-Menü und wählen den entsprechenden Menüpunkt aus: Unter KDE 3.3.2 bei Debian GNU/Linux gibt es das Programm KPPP im KDEMenü Internet, um eine Internetverbindung einzurichten.
Bei Fedora Core Linux finden Sie das Programm KPPP im KDE-Menü INTERNET. Das Programm KISDN ist standardmäßig nicht installiert.
Bild 16.42: Kinternet-Menü
767
Internet-Zugang einrichten
magnum
Sie können auch verschiedene Einstellungen vornehmen, den Provider oder die Schnittstelle ändern und einen Einblick ins Protokoll nehmen. Während des Verbindungsaufbaus erscheint ein gelber Blitz aus dem Stecker und wenn die Verbindung aufgebaut ist, rastet der Stecker ein. Jetzt können Sie einen Webbrowser öffnen, um im Internet zu surfen. Falls der erste Verbindungsaufbau mit einem Modem nach der Installation einfach abgebrochen wird, schalten Sie das Modem einfach aus und erneut ein. Starten Sie Kinternet wieder und das Problem sollte behoben sein. Falls Sie das Symbol in der Kontrollleiste versehentlich einmal schließen, dann sollten Sie es entweder im Hauptmenü über die Menüfolge INTERNET - KINTERNET oder mit dem Befehl kinternet & in einem Terminalfenster wieder starten. Sie haben sonst keine Kontrolle darüber, ob Ihre ISDN-Karte gerade eine Telefonverbindung offen hält oder nicht.
16.1.5
Webbrowser unter Linux
In der Regel stehen Ihnen unter Linux bereits nach der Installation mehrere Webbrowser zur Verfügung. SUSE Linux 10.0 installiert standardmäßig zum Beispiel FIREFOX und natürlich KONQUEROR. Es gibt viele verschiedene Webbrowser für Linux, auch Opera bietet eine Linux-Version an. Die Webbrowser können Sie im KDE-Menü über den Menüpunkt INTERNET WEB-BROWSER starten oder den entsprechenden Befehl, zum Beispiel mozilla & direkt in ein Terminalfenster eingeben. Wenn Sie bisher keinen Webbrowser oder einen anderen verwendet haben, dann gehen Sie folgendermaßen vor, um im Internet zu surfen: Geben Sie im Adressfeld des Browsers die Adresse einer Ihnen bekannten Website ein, zum Beispiel http:// www.mut.de. Sie können den ersten Teil der Adresse, nämlich http://, auch weglassen, dieser Teil wird von den Browsern automatisch ergänzt. Drücken Sie dann die (¢)-Taste. Es wird nun die Website des Verlags Markt+Technik angezeigt. Auf diese Weise können Sie jede Ihnen bekannte Homepage besuchen. Auf untergeordnete Seiten gelangen Sie, wenn Sie auf einen so genannten Hyperlink klicken oder wie in der Abbildung ein Suchformular auf der Seite verwenden. Hyperlinks sind in der Regel dadurch gekennzeichnet, dass sie unterstrichen sind. Außerdem verändert Ihr Mauszeiger seine Form, wenn Sie die Maus auf einem Hyperlink positionieren: Astelle des Pfeils sehen Sie dann eine Hand. Klicken Sie dann einmal mit der linken Maustaste auf den Hyperlink, so gelangen Sie auf die im Hyperlink hinterlegte Seite. Wenn Sie zu einer vorherigen Seite zurückkehren wollen, dann verwenden Sie die Schaltfläche ZURÜCK in Form eines grünen Pfeils nach links in der Symbolleiste oder den Menüpunkt GEHE ZU. Hier werden die von Ihnen zuletzt besuchten Seiten aufgelistet.
768
Kapitel 16 · Internetdienste einrichten
Bild 16.43: Firefox verwenden
Wenn Sie auf besonders interessante Seiten stoßen, können Sie mit Hilfe der Schaltfläche LESEZEICHEN und dann der Option LESEZEICHEN HINZUFÜGEN ein Lesezeichen darauf setzen. Gesetzte Lesezeichen erhalten Sie wieder durch Anklicken der Schaltfläche LESEZEICHEN ANGEZEIGT. Bereits angelegte Lesezeichen können bearbeitet oder gelöscht werden, wenn Sie im Menü LESEZEICHEN die Option LESEZEICHEN-MANAGER aktivieren.
16.1.6
Dateien/Grafiken aus dem Internet herunterladen
Der Inhalt einer Internetseite kann nicht nur gedruckt, sondern auch direkt auf Ihrem eigenen Rechner abgespeichert werden. Dabei wird allerdings nur Text im so genannten HTML-Format gespeichert. Die meisten Dokumente des WWW sind standardmäßig im HTML-Format verfasst. Diese Sprache definiert, wie Text und Grafiken einer Webseite im Browser angezeigt werden. Grafiken werden standardmäßig mit abgespeichert, wenn Sie den Menüpunkt DATEI - SEITE SPEICHERN UNTER und den Dateityp WEBSEITE, KOMPLETT verwenden. Diese landen dann in einem Unterverzeichnis. Sie können aber auch getrennt abgespeichert werden, indem Sie mit der rechten Maustaste auf das Bild klicken und BILD SPEICHERN UNTER wählen. Bei Verwendung von heruntergeladenen Texten und Grafiken aus dem Internet sollten Sie aber unbedingt das Urheberrecht berücksichtigen.
769
Internet-Zugang einrichten
magnum
Manche Webseiten bieten Ihnen auch Textdokumente oder Programme zum so genannten Download an, das bedeutet, dass Sie die Datei vom Internetrechner auf Ihren eigenen PC herunterladen und dort speichern und weiterverwenden können. Im folgenden Beispiel wird das E-Mail-Programm Thunderbird von Mozilla heruntergeladen (http://www.mozilla.org). Klicken Sie mit der linken Maustaste auf DOWNLOAD THUNDERBIRD 1.0.6 und Sie erhalten ein Fenster, um den Download zu steuern:
Bild 16.44: Thunderbird aus dem Internet herunterladen
Ein Download ist auch mit der rechten Maustaste auf den Link möglich. Wählen Sie dann ZIEL SPEICHERN UNTER.
16.1.7
Im Internet suchen
Sie können entweder Ihnen bereits bekannte Website-Adressen verwenden oder einfach versuchen, solche Adressen, auch URL genannt, selbst zusammenzubauen, wie zum Beispiel www.linux.de, um an Linux-Informationen zu gelangen, oder www.wetter.de, um etwas über das Wetter zu erfahren. Website-Adressen setzen sich in der Regel zusammen aus dem Kürzel www (World Wide Web) + Domänenname (meist der Name der Firma/Institution oder des Produkts) + Länderkennzeichen (zum Beispiel de für Deutschland oder gr für Griechenland; eine Ausnahme bilden US-amerikanische Websites mit den Kennzeichen com für kommerziell, edu für Bildungseinrichtungen usw.). Wenn Sie aber die URL eines Unternehmens nicht kennen oder eine bestimmte Information im Internet suchen, dann sollten Sie eine Suchmaschine verwenden.
770
Kapitel 16 · Internetdienste einrichten
Suchmaschinen sind sehr leistungsfähige Rechner im Internet, die mit Hilfe von speziellen Programmen regelmäßig das Internet durchforsten, um einen Index über die durchsuchten Seiten zu erstellen. Dieses Indexverzeichnis bauen sie in der Regel anhand von bestimmten Suchverfahren auf. Zum Beispiel ermitteln sie die Stichwörter entweder aus den Begriffen, die direkt auf der Seite stehen, oder aus den so genannten Metatags, die im HTML-Code der Webseiten vom Ersteller der Homepage eingetragen werden. Die Anzahl der Suchmaschinen im Internet ist sehr groß, nachfolgend eine Auswahl der bekanntesten. Die Liste erhebt aber keinen Anspruch auf Vollständigkeit:
쮿
http://www.google.de oder http://www.google.com
쮿
http://www.altavista.com oder http://www.altavista.de
쮿
http://www.allesklar.de
쮿
http://www.freenet.de
쮿
http://www.dino-online.de
쮿
http://www.fireball.de
쮿
http://www.infoseeker.de
쮿
http://www.lycos.com oder http://www.lycos.de
쮿
http://www.searchengine.com
쮿
http://www.web.de
쮿
http://www.yahoo.com oder http://www.yahoo.de
쮿
http://www.excite.com oder http://www.excite.de
쮿
http://www.hotbot.com oder http://www.hotbot.de
쮿
http://www.webcrawler.com oder http://www.webcrawler.com
쮿
http://www.infoseek.com
쮿
http://meta.rrzn.uni-hannover.de
Geben Sie eine dieser Internetadresse in das Adressfeld ein. Tragen Sie auf der nun angezeigten Webseite im Suchfeld einen oder mehrere beliebige Suchbegriffe Ihrer Wahl ein. Wenn Sie mehr als einen Suchbegriff verwenden, dann trennen Sie die einzelnen Begriffe durch ein Leerzeichen. Wenn Sie nach einem Ausdruck suchen, der ein Leerzeichen oder eine feste Wortfolge enthält, dann fassen Sie den Suchausdruck in Hochkommata (»«). Wenn Sie möchten, dass ein bestimmter Begriff nicht in der zu suchenden Website enthalten sein soll, dann führen Sie diesen im Suchfeld mit einem vorangestellten Minuszeichen auf. Klicken Sie dann auf die Schaltfläche SUCHEN oder SEARCH. Nach einer gewissen Zeit werden die Treffer, also Webseiten, in denen die Suchbegriffe enthalten sind, als Hyperlinks mit einer Kurzbeschreibung angezeigt und können durch Anklicken aufgerufen werden.
771
E-Mails schreiben und versenden
magnum
Ist die Anzahl der Treffer zu groß, dann verwenden Sie entweder nur die ersten Treffer für Ihre Suche oder starten Sie die Suche erneut mit zusätzlichen Suchbegriffen. Dadurch wird das Ergebnis entsprechend eingeschränkt.
16.2 E-Mails schreiben und versenden Hier haben Sie wiederum die Möglichkeit, entweder einen festen Provider wie zum Beispiel T-Online oder einen der vielen kostenlosen Maildienste im Internet zu wählen. Eine E-Mail wird mit einem E-Mail-Programm, wie zum Beispiel Outlook Express von Microsoft, Pegasus Mail, Thunderbird oder KMAIL von KDE usw., erstellt. Sie besteht aus drei Hauptteilen: Empfängeradresse, Betreff und Textteil. Sie wird an das elektronische Postfach eines Internetteilnehmers gesendet. Im nächsten Abschnitt wird gezeigt, wie Sie den E-Mail-Dienst eines Providers mit KMAIL nutzen.
16.2.1
E-Mail-Dienst eines Providers nutzen
Um elektronische Post empfangen und versenden zu können, müssen Sie ein E-Mail-Programm einrichten, zum Beispiel KMail, im Hauptmenü unter SUSE Linux über INTERNET - E-MAIL - KMAIL. Unter Debian GNU/Linux KDE 3.3.2 finden Sie das Programm KMail im Menü Internet.
Bild 16.45: KMail aufrufen
Legen Sie dazu die folgenden Informationen Ihres E-Mail-Providers bereit:
772
쮿
Name des Posteingangsservers (in der Regel ein POP3-Server)
쮿
Name des Posteingangsservers (in der Regel ein SMTP-Server)
Kapitel 16 · Internetdienste einrichten
쮿
Name Ihres E-Mail-Kontos, zum Beispiel
[email protected] 쮿
Passwort Ihres E-Mail-Kontos
Öffnen Sie dann das Menü EINSTELLUNGEN - KMAIL EINRICHTEN:
Bild 16.46: Neues E-Mail-Konto einrichten oder ändern
Klicken Sie nun auf die Schaltfläche NEU, um ein neues Konto einzurichten, bzw. auf ÄNDERN, um das bestehende Standardkonto zu ändern:
Bild 16.47: Neues Konto einrichten
Geben Sie Ihren Namen und Ihre E-Mail-Adresse ein. Alle anderen Angaben sind optional. Klicken Sie dann auf OK und wählen Sie anschließend im linken Fensterbereich die Option NETZWERK:
773
E-Mails schreiben und versenden
magnum
Bild 16.48: Anzeige des geänderten E-Mail-Kontos
Klicken Sie in der Registerkarte VERSAND auf HINZUFÜGEN und wählen Sie dann die Versandart für ausgehende E-Mails. Diese teilt Ihnen in der Regel auch Ihr Provider mit, meistens ist es SMTP:
Bild 16.49: Versandart für ausgehende E-Mails wählen
Geben Sie dann einen Namen Ihrer Wahl und den Postausgangsserver Ihres Providers, außerdem den Benutzernamen und das Passwort ein. Wenn Sie hier die Option SMTP-PASSWORT IN KONFIGURATIONSDATEI SPEICHERN aktivieren, müssen Sie beim späteren E-Mail-Versand das Passwort nicht jedes Mal angeben:
774
Kapitel 16 · Internetdienste einrichten
Bild 16.50: SMTP-Server hinterlegen
Diese Vorgehensweise ist zwar bequem, kann aber anderen Personen, die Ihren Rechner rechtmäßig oder unrechtmäßig verwenden, Zugang zu Ihrem E-MailKonto bzw. zu Ihren Kontendaten geben, die direkt auf dem Rechner gespeichert werden. Die Änderungen werden im Fenster EINRICHTEN - KMAIL angezeigt. Klicken Sie dann auf die Registerkarte EMPFANG:
Bild 16.51: Postausgangsserver einrichten
Klicken Sie dort auf HINZUFÜGEN und wählen Sie den Postfachtyp aus. In der Regel wird Ihr Provider einen POP3-Server als Posteingangsserver verwenden:
775
E-Mails schreiben und versenden
magnum
Bild 16.52: Posteingangspostfach definieren
Geben Sie dann die Daten zum Posteingang ein, das heißt einen Namen Ihrer Wahl, Ihren Benutzernamen und das Passwort sowie den POP3-Server Ihres Providers.
Bild 16.53: Posteingangsserver definieren
776
Kapitel 16 · Internetdienste einrichten
Anschließend wird das angelegte Eingangspostfach angezeigt:
Bild 16.54: Eingangspostfach anzeigen
16.2.2
E-Mails empfangen
Elektronische Post zu versenden ist nun kein Problem mehr. Stellen Sie sicher, dass in der linken Fensterhälfte der Ordner POSTEINGANG angewählt (also blau markiert) ist, der alle empfangenen Nachrichten standardmäßig enthält.
Bild 16.55: Leeres Posteingangsverzeichnis
Wenn Sie nun auf die Schaltfläche NACH E-MAIL SEHEN IN klicken, können Sie die eventuell auf dem Mailserver vorhandenen neuen Nachrichten abholen.
777
E-Mails schreiben und versenden
magnum
Das System fragt Sie nach Ihrem Passwort, wenn Sie es zuvor nicht hinterlegt haben. Geben Sie in diesem Fall das von Ihrem Provider zur Verfügung gestellte Passwort ein und klicken Sie dann auf OK. Die elektronischen Nachrichten werden nun vom Server Ihres Providers auf Ihren Rechner geladen und bei Ihnen unter der Kategorie POSTEINGANG in der rechten Fensterhälfte aufgelistet. Wenn Sie auf eine der Nachrichten klicken, wird deren Inhalt unterhalb der Liste angezeigt.
Bild 16.56: Eingegangene E-Mails auflisten und lesen
In der linken Fensterhälfte sehen Sie die verschiedenen Kategorien des E-Mail-Systems. Standardmäßig sind die Ordner POSTEINGANG für eingegangene und VERSANDTE NACHRICHTEN für versendete E-Mails bereits vorhanden. Gelöschte EMails landen und verbleiben im Papierkorb MÜLLEIMER, bis Sie die Menüpunkte DATEI - ALLE MÜLLEIMERORDNER LEEREN aktivieren. Um eine der eingegangenen E-Mails zu beantworten, klicken Sie auf diese und dann auf die Schaltfläche ANTWORTEN. Das nun geöffnete Fenster enthält den Absender des eingegangenen E-Mails als Empfänger und übernimmt auch den Betreff automatisch. Der Text der ursprünglichen E-Mail wird im Textfeld zitiert. Im Feld AN oder CC (Kopieempfänger) können weitere Empfänger genannt werden. Bei Bedarf löschen Sie die übernommenen Daten und geben sie neu ein oder ergänzen sie. Zum Weiterleiten verwenden Sie die Schaltfläche WEITERLEITEN. In unserem Beispiel wird eine neue E-Mail geschrieben. Klicken Sie dazu auf die Schaltfläche NEUE NACHRICHT: Erfassen Sie die Eingaben Ihrer neuen E-Mail, wie zum Beispiel den Empfänger, den Betreff und den Text. Durch Anklicken der Schaltfläche SENDEN versenden Sie die geschriebene bzw. eine beantwortete oder weiterzuleitende E-Mail.
778
Kapitel 16 · Internetdienste einrichten
Bild 16.57: Neue E-Mail schreiben
Vergessen Sie den Betreff nie. Eine E-Mail ohne Betreff ist nicht sehr aussagekräftig für den Empfänger! Da in unserem Beispiel beim Einrichten des Postausgangsservers die Option SMTP-PASSWORT IN KONFIGURATIONSDATEI SPEICHERN nicht aktiviert wurde, wird hier nach dem Passwort des E-Mail-Kontos gefragt:
Bild 16.58: Passwortabfrage beim E-Mail-Versand
779
E-Mails schreiben und versenden
magnum
Ihre E-Mail-Ablage ist individuell verwaltbar, Sie können neue Ordner anlegen und anschließend die entsprechenden E-Mails dorthin verschieben. Dazu verwenden Sie im Menü ORDNER die Option NEUER ORDNER und geben einen Namen für den Ordner ein, zum Beispiel kunde1. Klicken Sie dann auf OK. Versendete Nachrichten werden allerdings standardmäßig im Ordner VERSANDTE NACHRICHTEN hinterlegt. Sie können eine oder mehrere Nachrichten aber markieren und dann durch Ziehen mit der Maustaste in einen anderen Ordner verschieben.
Bild 16.59: Versendete Nachrichten
16.2.3
Kostenloses E-Mail-Konto aktivieren
Wenn Sie die Call-by-Call-Lösung für das Surfen im Internet gewählt (zum Beispiel über Mannesmann Arcor) und keinen festen Provider haben, müssen Sie trotzdem nicht auf eine E-Mail-Adresse verzichten. Es gibt unzählige kostenlose Angebote dafür, nachfolgend eine kleine Liste zur Auswahl:
780
쮿
http://www.freenet.de/
쮿
http://www.hotmail.de
쮿
http://www.altavista.de
쮿
http://www.gmx.de
쮿
http://www.extended.de
쮿
http://www.yahoo.de
Kapitel 16 · Internetdienste einrichten
Diese Anbieter unterhalten auf ihren Seiten spezielle Links, unter denen Sie einen persönlichen E-Mail-Zugang einrichten können. Dieser befindet sich dann in der Regel nicht auf Ihrem PC wie bei KMail, sondern auf dem Server des Providers direkt im Internet. Es ist aber bei diesen Accounts meist möglich, sie mit einem lokalen Mailprogramm zu verknüpfen, wie im vorherigen Abschnitt mit GMX beschrieben. Sie müssen bei dem E-Mail-Provider Ihrer Wahl in der Regel Ihre gewünschte EMail-Kennung, ein Passwort und einige persönliche Angaben wie Name und Adresse hinterlegen. Die E-Mail-Kennung kann ein frei erfundener Name oder Ihr eigener Name sein, also zum Beispiel
[email protected] oder
[email protected] – vorausgesetzt, er wurde noch nicht vergeben. Die persönlichen Angaben werden in erster Linie deswegen verlangt, weil in der Vergangenheit mit anonymen E-MailAccounts sehr viel Missbrauch getrieben wurde. Wenn Ihnen keiner der oben genannten E-Mail-Provider zusagt, dann finden Sie eine fast grenzenlose Auswahl unter der URL http://www.emailaddresses.com.
16.3 Im Internet chatten Sie stoßen im Internet vermutlich oft auf den Begriff Chatten oder Chat, das bedeutet ganz einfach, dass sich Personen an einer bestimmten Internetadresse, hinter der sich ein so genannter Chatserver oder IRC-Server verbirgt, anmelden und dann miteinander »reden«. Sie geben dabei an andere aktive Teilnehmer des so genannten Chatraums einfach Texte ein, die wiederum von diesen beantwortet werden. Die Teilnehmer unterhalten sich also schriftlich. Eigentlich ist diese Kommunikationsform recht zeitintensiv und erfordert einen hohen Aufwand an Tipparbeit, aber sie erfreut sich größter Beliebtheit. Es gibt sehr viele Chatmöglichkeiten im Internet, viele Zeitschriften, wie zum Beispiel »Freundin« oder »Spiegel«, oder Rundfunksender, wie zum Beispiel »SWR3«, unterhalten eigene Chatrooms. Dieses Chatten wird in der Regel über den Browser mit Hilfe von JavaScript ausgeführt. Sie können dafür aber auch einen eigenen Internetdienst nutzen. Es gibt mehrere KDE-Programme, um im Internet zu chatten. In diesem Abschnitt wird das Chatten mit KVIRC3 beschrieben. Starten Sie das Programm im Hauptmenü über die Menüfolge INTERNET - CHATTEN: Dieses Programm steht bei KDE 3.3.2 unter Debian GNU/Linux und Fedora Core Linux 4.0 standardmäßig nicht zur Verfügung. Das Programm führt Sie mit einem Assistenten durch die Einstellungen. Zuerst müssen Sie einen Spitznamen für das Chatten wählen:
781
Im Internet chatten
Bild 16.60: Chatprogramm KVIRC3 einrichten
Bild 16.61: Spitznamen wählen
782
magnum
Kapitel 16 · Internetdienste einrichten
Im nächsten Schritt regeln Sie, wo Dateien und Konfigurationsdaten gespeichert werden sollen:
Bild 16.62: Einstellungen zur Dateiablage festlegen
Dann können Sie sich ein Design für das Programm aussuchen:
Bild 16.63: Design auswählen
783
Im Internet chatten
magnum
Anschließend ist es möglich, eine Verknüpfung auf dem Desktop einzurichten:
Bild 16.64: Verknüpfung auf dem Desktop einrichten
Schließlich öffnet sich die Arbeitsfläche von KVIrc3 und Sie können einen Server zum Chatten auswählen:
Bild 16.65: Server auswählen
784
Kapitel 16 · Internetdienste einrichten
Klicken Sie anschließend auf JETZT VERBINDEN. Es öffnet sich ein Fenster, in dem Sie bereits besuchte Kanäle auswählen können.
Bild 16.66: Kanäle auswählen
Alternativ können Sie sich aber auch nach einer zustande gekommenen Verbindung mit dem Befehl /list die Kanäle anzeigen lassen:
Bild 16.67: Verbindung mit Chatserver herstellen
Wenn die Verbindung hergestellt ist, können Sie einfach im unteren Bereich des Verbindungsfensters Ihre Beiträge zum Chatroom eintippen. Auf der rechten Seite sehen Sie, wer im Chatroom aktiv ist.
785
Im Internet chatten
magnum
Bild 16.68: Am Chat teilnehmen
Einige Chatrooms verlangen auch wieder ein paar persönliche Angaben oder eine Registrierung, damit das Risiko des Missbrauchs verkleinert wird. Befolgen Sie die Angaben zur Registrierung, dann können Sie sich anschließend mit dem neuen Namen am Chat anmelden und am Bildschirm verfolgen, was gerade »geredet« wird. Meist unterhalten sich zwei oder mehrere der Teilnehmer über ein Thema, so dass der Einstieg ein wenig schwierig ist. Lesen Sie mit, bis Sie verstehen, worum es geht, und stellen Sie sich dann kurz vor, bevor Sie sich an einem Gespräch beteiligen. Im Fenster KANALLISTE werden die verfügbaren Kanäle angezeigt. Sie können mit dem Befehl /join #kanalname in den Kanal Ihrer Wahl wechseln.
Bild 16.69: Kanäle anzeigen
786
Kapitel 16 · Internetdienste einrichten
Die einzelnen Teilfenster von KVIRC3 legen sich übereinander, lassen sich aber wie gewohnt verschieben, verkleinern oder schließen.
Bild 16.70: Teilfenster von KVIRC3
Sie verlassen einen Chatroom und beenden das Chatten mit dem Befehl /quit. KVIRC3 merkt sich aber die zuletzt besuchten Server und Kanäle, so dass ein erneuter Einstieg schnell möglich ist. Verwenden Sie dazu die entsprechenden Schaltflächen oder das Menü KVIRC - NEUE VERBINDUNG ZU.
16.4 Messenger-Dienste Das Chatten im Internet wird immer beliebter, verwendet werden dazu so genannte Instant-Messenger-Programme. Ein solches Tool zeigt dem Benutzer an, welche Freunde oder Bekannten im Moment auch online sind, so dass er ihnen eine Nachricht senden kann. Diese trifft sofort beim Empfänger ein, der durch ein Symbol oder sogar durch das Öffnen eines Fensters davon benachrichtigt wird und im gleichen Fenster seine Antwort schreiben kann. Da es aber viele verschiedene Messenger-Protokolle gibt, wie zum Beispiel MSN, ICQ, Yahoo, AIM, IRC oder Jabber, die jeweils einen eigenen Client starten, wird das Ganze recht unübersichtlich. Es war auch notwendig, dass der Empfänger dasselbe Programm benutzte, da die verschiedenen Anbieterprotokolle nicht kompatibel waren bzw. noch sind. Die verschiedenen Server der jeweiligen Dienste sind außerdem nicht miteinander verbunden. Aus diesem Grund wurden MessengerDienste entwickelt, wie zum Beispiel GAIM. GAIM war ursprünglich nur ein Client für AIM, aber es wurde mit Hilfe von verschiedenen Plug-Ins so erweitert, dass es nun die meisten gängigen MessengerDienste unterstützen kann.
787
Messenger-Dienste
magnum
Dieses Programm bietet dem Benutzer die Möglichkeit, verschiedene MessengerDienste parallel zu verwenden und trotzdem den Überblick zu behalten. Alle Kontakte können zum Beispiel in eine einzige Liste, die so genannte »Buddylist«, eingetragen werden. Vor jedem Kontakt wird ein Symbol angezeigt, das den Status und das Protokoll des Kontakts ausweist. Ausführliche Informationen finden Sie unter http://gaim.sourceforge.net. Sie können GAIM unter SUSE Linux über das KDE-Hauptmenü und die Optionen INTERNET - CHATTEN - GAIM INTERNET MESSENGER starten: Sollte das Programm bei Ihnen unter Fedora Core Linux 4.0 oder Debian GNU/ Linux 3.1 nicht im KDE-Menü vorhanden sein, starten Sie es aus der Befehlszeile mit dem Aufruf gaim &.
Bild 16.71: GAIM-Konten anlegen
Wenn Sie GAIM zum ersten Mal starten, erhalten Sie ein leeres Fenster KONTEN. Mit der Schaltfläche HINZUFÜGEN können Sie Ihre einzelnen Messenger-Konten hinzufügen. Diese Konten müssen Sie zuvor allerdings bei den einzelnen Messenger-Diensten schon angelegt haben. GAIM fügt die einzelnen, bereits bestehenden Konten zusammen. Beim Registrieren müssen Sie einige Daten angeben, deren Umfang und Korrektheit Sie aber selbst bestimmen können. Bei vielen Messenger-Diensten reicht sogar ein Spitzname aus. Geben Sie die bereits registrierten Daten ein. Die unterstützten Protokolle können Sie über die Auswahlliste PROTOKOLL anzeigen lassen:
788
Kapitel 16 · Internetdienste einrichten
Bild 16.72: Konto bearbeiten oder hinzufügen
Wenn Sie GAIM zukünftig starten, bietet es immer die Auswahlliste zu den hinterlegten Konten in dieser Form an:
Bild 16.73: GAIM starten
Sie können über die Schaltfläche KONTEN neue Konten hinzufügen oder die bestehenden ändern oder löschen, mit EINSTELLUNGEN können Sie GAIM einrichten und mit ANMELDUNG das ausgewählte Konto starten:
789
Messenger-Dienste
magnum
Bild 16.74: Messenger-Dienst über GAIM starten
Die Anzeige der Kontaktliste können Sie mit Hilfe des Menüs BUDDIES einstellen:
Bild 16.75: Kontaktliste einrichten
Sie können bei den meisten Messenger-Diensten problemlos herausfinden, ob Bekannte oder Freunde dort registriert sind (falls diese ihren eigenen Namen oder einen Ihnen bekannten Spitznamen verwenden), da diese Mitgliederverzeichnisse bieten. Yahoo bietet zum Beispiel http://members.yahoo.com und ICQ http://web.icq.com/whitepages an. Ein weiteres interessantes KDE-basiertes Instant Messenger Tool ist KOPETE, siehe http://kopete.kde.org. Es wird bei einigen Distributionen standardmäßig mit ausgeliefert.
790
17 Netzwerke mit NFS oder Samba verbinden »Hinter den Dingen die Dinge und vor den Dingen die Dinge sind in Verbindung.« – © Dr. phil. Manfred Hinrich In diesem Kapitel erhalten Sie einen Überblick über das Network File System und seine Bedeutung. Sie erfahren, wie NFS funktioniert, welche Hintergrundprozesse für NFS notwendig sind und wie ein NFS-Server konfiguriert wird. Dabei werden die notwendigen Befehle und die Konfigurationsdateien beschrieben. Im Anschluss folgt eine Erklärung, wie ein NFS-Client eingerichtet wird und welche Befehle und Dateien auf Clientseite notwendig sind. Im zweiten Teil erfahren Sie, was der Automounter ist und wie er arbeitet. Sie lernen das Dateisystem autofs kennen und wie Sie auf ein autofs-Verzeichnis zugreifen. Die für den Automounter notwendigen Prozesse werden erläutert und es wird gezeigt, mit welchen Befehlen Sie den Automounter konfigurieren bzw. welche Einstellungen zum Automounter Sie anzeigen können. Anschließend werden die Konfigurationsdateien des Automounters und die unterschiedlichen Arten von AutomounterMaps, wie zum Beispiel die Master-Map, beschrieben.
17.1 NFS einrichten NFS ist ein verteiltes Dateisystem (Distributed Filesystem), über das ein Rechner auf das Dateisystem eines anderen Rechners im Netzwerk zugreifen kann. NFS wurde von der Firma Sun Microsystems entwickelt und kann unabhängig von der Hardware eingesetzt werden, wenn das TCP/IP-Protokoll entsprechend portiert wird. Die Grundlage von NFS bildet wie bei jedem verteilten Dateisystem das Client-ServerPrinzip, wobei der Server in diesem Fall seine Dateisysteme den Clients verfügbar macht.
17.1.1
Überblick über NFS
Zur NFS-Umgebung gehören immer die Komponenten NFS-Server, der die Ressourcen bereitstellt und freigibt, und NFS-Client, der auf die freigegebenen Ressourcen über das Netzwerk zugreift. Durch NFS lässt sich eine beliebige exportierte Festplattenpartition eines anderen Rechners in das lokale Dateisystem einbinden und die exportierten Daten lesen und verändern, selbst wenn der andere Rechner ein anderes Betriebssystem verwendet. Wenn ein Client auf ein Verzeichnis oder eine Datei des NFS-Servers zugreift, wird ein so genanntes Filehandle vom Server erzeugt, und über das Sperren von Dateien werden Inkonsistenzen vermieden. Client und Server müssen beim NFS-Protokoll nicht über eine feste Kommunikationsverbindung verfügen, das heißt, sie sind »zustandslos«. Dies hat den Vorteil, dass der Client von einem Verbindungsproblem, wie zum Beispiel einem kurzfristigen Serverausfall, nur eine zeitliche Verzögerung bemerkt und ein nicht beantwortetes Datenpaket einfach erneut sendet. Für den Server wiederum ist der Ausfall eines Clients ohne Bedeutung, da sich dieser mit einer Anfrage beim Server melden muss.
791
NFS einrichten
magnum
Die folgende Abbildung soll ein Mounten per NFS verdeutlichen. Der NFS-Server gibt ein lokales Dateisystem frei, das der NFS-Client in seinen Verzeichnisbaum einhängt:
Bild 17.1: Mounten per NFS
Zu den Vorteilen von NFS gehören:
쮿
Die zentrale Datenverwaltung, da sich alle Dateien auf einem zentralen Server befinden, wodurch zum Beispiel die Verwaltung und Datensicherung der Homeverzeichnisse erleichtert werden.
쮿
Die zentralisierte Softwareverwaltung, die dazu führt, dass weniger Festplattenplatz auf den Clients benötigt wird, was ebenfalls den Verwaltungsaufwand verringert (zum Beispiel Handbücher etc.). Dies verringert auch die Datenredundanz.
쮿
Die Transparenz für den Benutzer, der sich mit den gewohnten Befehlen im Verzeichnisbaum bewegen kann und für den zwischen einer lokalen und einer NFS-Ressource kein Unterschied besteht.
쮿
Ein NFS-Server kann gleichzeitig Server und Client sein. NFS ist trotzdem leicht verwaltbar und hat eine große Leistungsfähigkeit. Da es auf TCP/IP basiert, ist es auch herstellerunabhängig.
쮿
Clients greifen über RPC (Remote Procedure Call) auf den Server zu, um dort Funktionen auszuführen. RPC übersetzt maschinenabhängige Datenformate mit External Data Representation (XDR) in ein Standardformat, das von allen Netzwerkrechnern verwendet wird. Mit secure RPC ist außerdem eine erhöhte Sicherheit gegeben.
Auf der NFS-Serverseite müssen nur die Freigaben in die Datei /etc/exports eingetragen und gegebenenfalls die NFS-Daemonen gestartet werden. Auf der NFS-Clientseite werden die Freigaben dann einfach in gewohnter Weise gemountet (vergleiche Abschnitt 17.1.4).
792
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
17.1.2
NFS-Prozesse
Wenn der Rechner in den Default-Runlevel gefahren wird, wird ein Run-ControlSkript ausgeführt, um NFS-Clientdienste für den Rechner zu aktivieren. Unter SUSE Linux 10.0 handelt es sich um das Run-Control-Skript /etc/init.d/rc3.d/S10nfs. Debian GNU/Linux 3.1 startet das Run-Control-Skript common.
/etc/init.d/rc3.d/S21nfs-
Unter Fedora Core Linux 4.0 muss ein symbolischer Link im Default-RunlevelVerzeichnis auf das Run-Control-Skript /etc/init.d/nfs erzeugt werden. Dazu können Sie zum Beispiel den Befehl chkconfig verwenden (vergleiche Kapitel 12). Es müssen außerdem die Dienste portmap und nfslock gestartet werden, für die aber standardmäßig im Verzeichnis /etc/rc3.d Links zu den entsprechenden Run-Control-Skripten vorhanden sind. Es ist nun möglich, NFS-Dateisysteme in den Verzeichnisbaum einzuhängen. Außerdem werden RPC-Server beim Booten gestartet, da sie im Fall von NFS dauerhaft laufen müssen, um nicht für jeden Aufruf eines NFS-Daemons inetd aufrufen zu müssen. Um die Leistung zu erhöhen, werden sogar zwei oder mehr Threads eines RPC-Daemons aufgerufen. Unter SUSE Linux 10.0 werden NFS-Serverprozesse vom Skript /etc/init.d/nfsserver gestartet (vergleiche Abschnitt 17.1.3). Debian GNU/Linux 3.1 verwendet das Skript /etc/rc3.d/S20nfs-kernel-server. Bei Fedora Core Linux 4.0 werden dieselben Skripte wie für den Client verwendet.
Der Daemon portmap Dieser Daemon ist ein Server, der RPC-Programmnummern in IP-(UDP-)Portnummern konvertiert. Er muss laufen, damit RPC-Aufrufe durchgeführt werden können. Wenn ein RPC-Server gestartet wird, benachrichtigt er portmap, welche Portnummer er abhört und welche RPC-Programmnummern er bedienen soll. Wenn ein Client einen RPC-Aufruf für eine angegebene Programmnummer starten möchte, wird zuerst portmap auf dem Server kontaktiert, um die Portnummer zu bestimmen, über die RPC-Pakete gesendet werden sollen. portmap muss auf dem Server gestartet werden, bevor irgendwelche RPC-Server aufgerufen werden können. Der Prozess kann mit folgenden Optionen gestartet werden: Option
Beschreibung
-d
Verhindert, dass der Prozess als Daemon läuft, und gibt Fehler- und Debugging-Informationen aus
-v
Ausführliche Ausgabe
Tab. 17.1: Die Optionen des Prozesses portmap
793
magnum
NFS einrichten
In der Datei /etc/rpc werden RPC-Programme und Programmnummern zugeordnet (vergleiche Kapitel 18).
Der Daemon nfsd Dieser Daemon prüft die Anforderungen von Clients nach Dateisystemen im Netzwerk. Er ist nur auf NFS-Servern notwendig und muss gegebenenfalls mehrmals gestartet werden, um Clients optimal zu unterstützen. Unter Linux unterstützt nfsd das Multithreading, wodurch der Prozess effizienter arbeitet. Bei SUSE Linux werden zum Beispiel standardmäßig vier nfsd-Daemons gestartet. Der Prozess kann mit folgenden Optionen gestartet werden: Option
Beschreibung
nproc
Legt die Anzahl der NFS-Server-Threads fest. Standardmäßig wird nur ein Thread gestartet, um die Leistung aber zu optimieren, sollten mehrere Threads verwendet werden.
-p port
Definiert einen anderen Port, an dem nach NFS-Anfragen gehorcht werden soll. Standardmäßig wird Port 2049 verwendet.
Tab. 17.2: Die Optionen des Prozesses nfsd
Der Daemon rpc.mountd Dieser Daemon läuft ebenfalls auf Servern und überprüft die Anforderungen von Clients, die Dateisysteme des Servers zu mounten oder zu unmounten. Der Prozess liefert einen so genannten Filehandle zurück, wenn eine Mountanforderung erfolgt. Dazu werden die Einträge der Datei /etc/exports gelesen, ob eine entsprechende Freigabe vorgesehen ist. Eine eindeutige Referenz auf ein Verzeichnis oder eine Datei eines NFS-Servers wird als Filehandle bezeichnet. Der Daemon verwaltet außerdem in der Datei /var/lib/nfs/rmtab eine Liste aller Clients, die eine Freigabe des Servers gemountet haben. Wenn ein Dateisystem ungemountet wird, wird der entsprechende Eintrag aus der Datei entfernt. Es ist möglich, dass ein Eintrag weiterhin in der Liste verbleibt, wenn der Client ausfällt. In diesem Fall ist es zulässig, die Datei manuell zu bearbeiten und den Eintrag zu entfernen. Der Prozess rpc.mountd auf NFS-Clients wiederum speichert den erhaltenen Filehandle gemeinsam mit weiteren Informationen zur gemounteten Ressource in der Datei /etc/mtab. Der Daemon kann mit folgenden Optionen gestartet werden:
794
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Option
Beschreibung
-d art
Debugging in einer bestimmten Art deaktivieren, zum Beispiel all, auth, call, gerneral oder parse
-F
Im Vordergrund, nicht als Daemon starten
-f
Diese Option gibt die Datei exports an und listet die Clients auf, für die der Server eingerichtet wurde. Standardmäßig wird die Datei /etc/exports verwendet.
-o nummer
Setzt das Limit für die Anzahl der offenen Dateizeiger auf die angegebene Nummer
-N
Mit dieser Option wird bewirkt, dass rpc.mountd keine bestimmten Versionen von NFS anbietet. Die aktuelle Version kann sowohl NFS Version 2 als auch die neuere Version 3 unterstützen. Wenn das NFS-Kernel-Modul so kompiliert wurde, dass es NFSv3 nicht unterstützt, muss rpc.mountd mit der Option -N 3 aufgerufen werden.
-n
Verwendet kein TCP zum Mounten
-p nummer
Zwingt den Daemon, sich an den angegebenen Port zu binden, statt an der zufällig durch den Portmapper zugewiesenen Portnummer
-V
Diese Option bewirkt, dass rpc.mountd bestimmte NFS-Versionen anbietet.
Tab. 17.3: Die Optionen des Prozesses rpc.mountd
Der Daemon statd Dieser Daemon kann in Verbindung mit dem Daemon lockd verwendet werden, um den Status eines Systems zu überwachen. Der Prozess informiert andere Systeme, wenn ein System wieder erfolgreich hochgefahren wurde. Anschließend wird versucht, alle Sperren wiederherzustellen und den Betrieb fortzusetzen. Er kennt folgende Optionen: Option
Beschreibung
-d
Standardmäßig sendet statd Protokollmeldungen über syslog. Mit dieser Option werden diese Meldungen stattdessen an die Standardfehlerausgabe umgelenkt.
-F
Standardmäßig gabelt sich der Prozess und stellt sich selbst nach dem Starten in den Hintergrund. Mit dieser Option bleibt er im Vordergrund, was bei Debugging sinnvoll ist.
-n name
Gibt einen Namen an, der als lokaler Hostname verwendet werden soll. Das kann bei Rechnern mit mehreren Schnittstellen sinnvoll sein.
-o port
Definiert für statd den Port, über den ausgehende Statusanfragen gesendet werden sollen. Standardmäßig wird dieser Port von portmap zugewiesen.
-p port
Definiert für statd einen Port, an dem er horcht. Standardmäßig wird dieser von portmap zugewiesen.
Tab. 17.4: Die Optionen des Prozesses statd
795
magnum
NFS einrichten
Option
Beschreibung
-P
Definiert ein Verzeichnis, in das Statusinformationen abgelegt werden. Standardmäßig wird /var/lib/nfs verwendet.
verzeichnis -N
Startet den Daemon in einem Modus, in dem das Programm sein Statusverzeichnis prüft, Nachrichten an überwachte Knoten sendet und sich anschließend beendet.
Tab. 17.4: Die Optionen des Prozesses statd (Forts.)
Der Daemon lockd Eigentlich kann bei NFS kein gesperrter Zugriff erfolgen, da eine zustandslose Verbindung zwischen Client und Server besteht. Dies wird aber durch den Daemon lockd dennoch ermöglicht, der eine überwachte Sperrung durchführt. Dabei kommunizieren immer zwei Prozesse lockd im Netzwerk, wenn sie zum Beispiel eine Datei über das Netzwerk verfügbar machen. Der Daemon auf dem NFS-Client leitet die von Anwendungen angeforderten Dateisperren an den Daemon des NFS-Servers weiter, der wiederum eine lokale Sperre auf die Datei aktiviert.
17.1.3
Einen NFS-Server konfigurieren
Ein NFS-Server wird dadurch konfiguriert, dass die Freigaben von Dateisystemen in die Datei /etc/exports eingetragen werden und anschließend der Befehl exportfs gestartet wird.
Die Datei /etc/exports Diese Datei enthält die Angaben, welche Dateisysteme an welche Rechner freigegeben werden. Jede Zeile enthält ein zu exportierendes Verzeichnis und die Angabe, welche Rechner mit welchen Optionen darauf zugreifen dürfen. Die in der Datei /etc/exports enthaltenen statischen Informationen über die Freigabe von Dateisystemen werden mit dem Befehl exportfs dem Kernel und dem Daemon rpc.mountd mitgeteilt. Die Datei ist folgendermaßen aufgebaut: verzeichnis client[(mountoption)] [client[(mountoption)]] Das zu exportierende Verzeichnis muss immer angegeben werden. Anschließend können Clientrechner aufgeführt werden, die dieses Verzeichnis verwenden dürfen. Als Client kann entweder der Rechnername oder eine Netzgruppe (die aber in der Datei /etc/netgroup hinterlegt werden muss) oder ein Namensmuster mit Wildcards definiert werden. Mit den Mountoptionen ist es möglich, den Zugriff auf die Daten für einen Client einzuschränken oder zu erweitern.
796
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Mögliche Mountoptionen sind: Mountoption
Bedeutung
secure
Anfragen von Clients werden nur von vertrauenswürdigen Ports entgegengenommen, das sind Portnummern kleiner als 1024 (Standardeinstellung).
insecure
Anfragen von Clients werden auch von Ports mit Nummern größer als 1024 entgegengenommen.
ro
Das Dateisystem ist nur lesbar freigegeben (Standardeinstellung).
rw
Das Dateisystem ist mit Lese- und Schreibrechten freigegeben.
async
Der Schreibvorgang wird dem Client erst mitgeteilt, wenn die Daten auf die Platte geschrieben wurden (Standardeinstellung).
sync
Der Schreibvorgang wird dem Client sofort mitgeteilt.
wdelay
Die Option wdelay wird nur gemeinsam mit sync verwendet. Der Server bestätigt den Schreibvorgang in diesem Fall zeitverzögert, wenn mehrere Schreibvorgänge für einen Client gleichzeitig stattfinden (Standardeinstellung).
no_wdelay
Der Schreibvorgang erfolgt nicht zeitverzögert, wenn mehrere Schreibvorgänge für einen Client stattfinden.
hide
Wenn ein Verzeichnis freigegeben wird, in dem ein anderes Dateisystem gemountet ist, wird dieses mit der Standardeinstellung hide nicht an den Client freigegeben.
nohide
Mit dieser Option wird ein freigegebenes Verzeichnis, in dem ein anderes Dateisystem gemountet ist, auch an den Client freigegeben.
subtree_check
Wenn ein Dateisystem nur zum Teil freigegeben wurde, prüft der Server bei der Standardeinstellung subtree_check, dass nur auf Dateien in diesem Teilverzeichnis zugegriffen wird. Das ist sicherer, aber macht den Zugriff auch langsamer.
no_subtree_check
Mit dieser Option erfolgt die Prüfung nicht, ob auf Dateien des nicht freigegebenen Teilverzeichnisses zugegriffen wird.
root_squash
Der Benutzer root erhält standardmäßig die UID von nobody. Damit wird vermieden, dass root des Clientrechners root-Rechte auf dem vom Server freigegebenen Verzeichnis hat.
no_root_squash
root-Rechte bleiben erhalten.
all_squash
Ordnet alle UIDs und GIDs dem anonymen Benutzer nobody zu. Nützlich für NFS-exportierte öffentliche FTP-Verzeichnisse, neue Spoolverzeichnisse usw.
no_all_squash
Bei der Standardeinstellung no_all_squash behalten die Benutzer ihre eigene UID bzw. die des anonymen Benutzers, wenn sie auf dem System nicht bekannt sind.
anongid=gid
Die GID wird für alle anonymen Benutzer, die auf dem Server arbeiten, auf gid gesetzt.
Tab. 17.5: NFS-Mountoptionen
797
magnum
NFS einrichten
Mountoption
Bedeutung
anonuid=uid
Die UID wird für alle anonymen Benutzer, die auf dem Server arbeiten, auf uid gesetzt. Diese Option ist vor allem für PC/NFS-Clients nützlich, bei denen Sie möchten, dass alle Anfragen scheinbar von einem einzigen Benutzer kommen.
link_relative
Symbolische Links mit einer absoluten Pfadangabe »/« werden in eine Angabe »../« umgesetzt.
link_absolute
Symbolische Links werden nicht verändert.
map_identity
Der Client verwendet dieselben Benutzer-IDs wie der Server (Standardeinstellung).
map_daemon
Der Client verwendet nicht dieselben Benutzer-IDs wie der Server. nfsd erstellt in diesem Fall eine Umsetzungstabelle, wenn der Dienst ugidd gestartet wurde.
Tab. 17.5: NFS-Mountoptionen (Forts.)
Die Optionen, um die GID oder UID eines Benutzers zu ändern, werden auch als »Squashing« bezeichnet. Sie sollen verhindern, dass Benutzer eines Clientsystems auf der Freigabe des Servers plötzlich andere Rechte erhalten. Das ist möglich, weil Linux nicht mit den Benutzernamen, sondern den UIDs und GIDs arbeitet. Wenn auf dem Server im freigegebenen Verzeichnis zum Beispiel eine Datei xyz mit Schreibrechten für den Benutzer doo existiert, der die UID 777 hat, und Benutzerin her vom Clientsystem dieselbe UID auf dem Clientsystem hat, könnte sie auf die Datei xyz zugreifen. Dies kann mit »Squashing« verhindert werden, denn die UIDs und GIDs der Benutzer, die auf die Freigabe zugreifen, werden einfach mit der Option all_squash auf eine neutrale UID gesetzt, und zwar den Pseudouser nobody mit UID -2 und GID nogroup mit GID -2. Einträge in der Datei /etc/exports können zum Beispiel folgendermaßen aussehen: $ more /etc/exports home/data/ 192.162.175.0/255.255.255.0(rw,root_squash,sync) /home *.hertzog-edv.de(rw,no_subtree_check,insecure) /usr/share *.sol.de(ro,all_squash)
Es können nur lokale Dateisysteme freigegeben werden. Es ist auch nicht ratsam, zwei Verzeichnisse freizugeben, von denen das eine sich im anderen befindet, zum Beispiel /usr und /usr/share.
798
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Der Befehl exportfs Der Befehl exportfs kann Einträge in der Datei /etc/exports löschen, ändern und hinzufügen. Die Freigaben in dieser Datei bzw. die an der an der Befehlszeile eingegebenen werden in die Datei /var/lib/nfs/xtab eingetragen. Der Befehl muss normalerweise nur beim Testen des NFS-Servers oder bei einer einmaligen Freigabe eines Verzeichnisses verwendet werden oder wenn die Datei /etc/exports geändert wurde, damit die Daemons rpc.nfsd und rpc.mountd die Konfiguration neu einlesen. Der Befehl kennt die Mountoptionen der Datei /etc/exports und hat folgende Syntax: # exportfs [-option(en)] [-o
mountoption(en)] [client:/pfad...]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a
Exportiert alle Verzeichnisse
-f
Leert im »neuen« Modus die Kernel-Exporttabelle. Alle aktiven Clients werden von mountd neu eingetragen, sobald sie die nächste Anfrage stellen.
-i
Die Datei /etc/exports wird ignoriert und nur die an der Befehlszeile übergebenen Optionen werden verwendet.
-o
Angabe der Mountoptionen wie in der Datei /etc/exports
optionen -r
Exportiert alle Verzeichnisse erneut und synchronisiert /var/lib/nfs/xtab mit /etc/exports. Die Option entfernt die Einträge in /var/lib/nfs/xtab, die in /etc/exports gelöscht wurden, und entfernt alle Einträge der Kernel-Exporttabelle, die nicht mehr gültig sind.
-u[a]
Nimmt bestimmte bzw. alle Exportierungen zurück
-v
Ausführlicher Modus
Tab. 17.6: Die Optionen des Befehls exportfs
Folgender Befehl exportiert zum Beispiel die Freigabe /home/her für den Rechner sol: # exportfs sol.hertzog-edv.de:/home/her
Im nächsten Beispiel wird das Verzeichnis wieder vom Export ausgenommen: # exportfs -u sol.hertzog-edv.de:/home/her
NFS-Server mit YaST einrichten Unter SUSE Linux können Sie YaST verwenden, um einen NFS-Server einzurichten. Starten Sie dazu in YaST das Menü NETZWERKDIENSTE - NFS-SERVER. Wählen Sie anschließend die Option NFS-SERVER STARTEN und wenn Sie eine Firewall eingerichtet haben (vergleiche Kapitel 22), öffnen Sie einen Firewall-Port:
799
NFS einrichten
magnum
Bild 17.2: NFS-Server starten
Im Fenster ZU EXPORTIERENDE VERZEICHNISSE geben Sie das Verzeichnis ein, das Sie für andere Rechner auf diesem Rechner freigeben möchten. Sie können Ihren Verzeichnisbaum auch mit DURCHSUCHEN anzeigen lassen und nach dem Verzeichnis suchen:
Bild 17.3: Verzeichnis freigeben
Wenn Sie auf OK geklickt haben, müssen Sie als Nächstes die Rechner eingeben, die auf die Freigabe zugreifen dürfen. Mit der Wildcard * gilt die Freigabe für alle Rechner im Netzwerk. Sie können außerdem Optionen für die Freigabe definieren, wie sie in der Datei /etc/exports verwendet werden:
800
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Bild 17.4: Der Freigabe Rechner und Optionen zuweisen
Anschließend werden die freigegebenen Verzeichnisse und ihre Optionen angezeigt und können mit Hilfe der Schaltfläche BEARBEITEN und ENTFERNEN geändert bzw. gelöscht werden. Mit HINZUFÜGEN können Sie weitere lokale Verzeichnisse auf Ihrem NFS-Server freigeben:
Bild 17.5: Anzeige der Freigabe
Wenn Sie auf BEENDEN klicken, wird die NFS-Serverkonfiguration in die Datei /etc/exports geschrieben und die notwendigen Dienste werden neu gestartet:
801
NFS einrichten
magnum
Bild 17.6: NFS-Serverkonfiguration schreiben
Wenn Sie die Datei /etc/exports manuell mit Einträgen versehen haben, können Sie die NFS-Dienste ebenfalls mit YaST über die Menüpunkte SYSTEM - RUNLEVELEDITOR starten. Anschließend aktivieren Sie den EXPERTENMODUS und suchen die NFS-Dienste nfs und nfsserver und starten diese in den von Ihnen gewünschten Runleveln:
Bild 17.7: NFS-Dienste starten
802
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
17.1.4
Konfiguration eines NFS-Clients
Ein NFS-Client bindet eine NFS-Ressource unter Angabe des Server- und Verzeichnisnamens entweder durch den Befehl mount an der Befehlszeile ein oder permanent in der Datei /etc/fstab.
Der Befehl mount Die Befehle mount und umount werden nicht nur für lokale Mountvorgänge verwendet, sondern auch, um Freigaben eines NFS-Servers in den Verzeichnisbaum ein- oder auszuhängen. Wie bereits beschrieben, wird eine Tabelle der gemounteten Dateisysteme in der Datei /etc/mtab abgelegt. Auch die Optionen des Befehls mount wurden bereits ausführlich erläutert. Es gibt allerdings Optionen, die nur für das Mounten von NFS-Dateisystemen verwendet werden. Zu den wichtigsten gehören: Option
Beschreibung
ac
Daten oder Attribute werden zwischengespeichert.
acdirmax=zahl
Attribute werden nur die angegebene Anzahl von Sekunden nach einer Verzeichnisaktualisierung zwischengespeichert. Der Standardwert ist 60.
acdirmin=zahl
Attribute werden die angegebene Anzahl von Sekunden nach einer Verzeichnisaktualisierung zwischengespeichert. Der Standardwert ist 30.
acregmax=zahl
Attribute werden nur die angegebene Anzahl von Sekunden nach einer Dateiänderung zwischengespeichert. Der Standardwert ist 60.
acregmin=zahl
Attribute werden die angegebene Anzahl von Sekunden nach einer Dateiänderung zwischengespeichert. Der Standardwert ist 30.
actimeo= zahl
Definiert sowohl die Mindest- als auch die Maximalzeiten für Dateien und Verzeichnisse. Die Zeiten werden durch die angegebene Zahl in Sekunden spezifiziert.
bg
Ist der erste Mountversuch erfolglos, wird im Hintergrund gemountet. Dadurch wird vermieden, dass der aufrufende Prozess die in der Datei /etc/vfstab anschließend aufgeführten Mountvorgänge blockiert.
fg
Das Dateisystem wird im Vordergrund gemountet.
hard
Die Mountversuche werden wiederholt, auch wenn der Server beim ersten Mal nicht antwortet.
intr
Ein Mountversuch lässt sich durch einen Keyboard-Interrupt mit (Ctrl)+(C) abbrechen. Dies ist eine Standardeinstellung.
noac
Daten oder Attribute werden nicht zwischengespeichert.
nointr
Es ist nicht erlaubt, einen Mountversuch durch einen Keyboard-Interrupt mit (Ctrl)+(C) abzubrechen.
noquota
Deaktivierung von Benutzerquoten
nosuid
Setuid-Programme dürfen nicht ausgeführt werden.
Tab. 17.7: NFS-Mountoptionen
803
magnum
NFS einrichten
Option
Beschreibung
port=zahl
Definition der IP-Portnummer des NFS-Servers. Der Standardport für NFS ist 2049.
posix
Das Serverdateisystem muss POSIX.1-konform sein.
quota
Aktivierung von Benutzerquoten
remount
Ein Dateisystem wird erneut mit geändertem Zugriffsrecht gemountet, zum Beispiel rw (read-write) anstelle von ro (read-only).
retrans=zahl
Definition der Anzahl von Übertragungswiederholungen, bevor eine Fehlermeldung ausgegeben werden soll
retry=zahl
Anzahl von Wiederholungen nach einem misslungenen Mountversuch
ro
Mounten mit Read-only-Zugriff (nur lesen)
rsize=zahl
Definition der Puffergröße für Lesevorgänge mit der angegebenen Anzahl von Bytes. Die Standardeinstellung sind 32 Kbyte bei NFS-Version 3 und 8 Kbyte bei NFS-Version 2.
rw
Mounten mit Read-write-Zugriff (lesen und schreiben)
soft
Eine Fehlermeldung wird nach einer bestimmten Anzahl von erfolglosen Mountversuchen ausgegeben.
suid
Die Ausführung von setuid-Programmen wird zugelassen.
timeo=zahl
Definition der Wartezeit in Zehntelsekunden für Wiederholungsversuche eines Zugriffs auf den Server
wsize=zahl
Definition der Puffergröße für Schreibvorgänge mit der angegebenen Anzahl von Bytes. Die Standardeinstellung sind 32 Kbyte bei NFS-Version 3 und 8 Kbyte bei NFS-Version 2.
Tab. 17.7: NFS-Mountoptionen (Forts.)
Im nachfolgenden Beispiel wird ein Dateisystem des Remote-Rechners suso2 auf dem lokalen Rechner unter dem Verzeichnis /testmount nur lesend gemountet: # mount -t nfs –o ro suso2:/home/her /testmount
Die Datei /etc/fstab Wenn ein NFS-Dateisystem jedes Mal beim Hochfahren des Systems automatisch gemountet werden soll, müssen Sie einen entsprechenden Eintrag in die Datei /etc/fstab hinzufügen. In diesem Beispiel werden NFS-Dateisysteme von suso2 und sun11 gemountet. # more /etc/fstab /dev/hda1 / /dev/hda3 /home /dev/hda2 swap devpts /dev/pts proc /proc usbdevfs /proc/bus/usb
804
ext3 ext3 swap devpts proc usbdevfs
defaults defaults pri=42 mode=0620,gid=5 defaults noauto
1 1 0 0 0 0
1 2 0 0 0 0
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
/dev/cdrom /dev/dvd /dev/fd0 suso2:/home/data sun11:/projekt
/media/cdrom /media/dvd /media/floppy /data /projekt99
auto auto auto nfs nfs
ro,noauto,user,exec ro,noauto,user,exec noauto,user,sync rw,intr rw,bg,soft
0 0 0 0 0
0 0 0 0 0
NFS-Client mit YaST einrichten Unter SUSE Linux können Sie YaST auch verwenden, um einen NFS-Client einzurichten. Starten Sie dazu in YaST das Menü NETZWERKDIENSTE - NFS-CLIENT. Geben Sie anschließend den Hostnamen oder die IP-Adresse des NFS-Servers, das dort freigegebene Dateisystem und den lokalen Mountpoint, unter dem die Freigabe eingebunden werden soll, an. Wenn Sie auf WÄHLEN klicken, werden Sie bei der Suche nach vorhandenen NFS-Servern bzw. Freigaben auf NFS-Servern unterstützt. Den lokalen Mountpoint können Sie ebenfalls mit Durchsuchen ermitteln. Geben Sie noch die Mountoptionen ein, wenn Sie nicht die standardmäßigen Vorgaben verwenden möchten:
Bild 17.8: NFS-Server und Freigabe festlegen
Anschließend werden die per NFS gemounteten Verzeichnisse und ihre Optionen angezeigt und können mit Hilfe der Schaltfläche BEARBEITEN und ENTFERNEN geändert bzw. gelöscht werden. Mit HINZUFÜGEN können Sie weitere Verzeichnisse von NFS-Servern mounten (Bild 17.9). Wenn Sie die Datei /etc/fstab manuell mit NFS-Einträgen versehen haben, können Sie die notwendigen NFS-Dienste wiederum mit YaST über die Menüpunkte SYSTEM - RUNLEVEL-EDITOR starten.
805
magnum
NFS einrichten
Bild 17.9: Anzeige der gemounteten NFS-Freigaben
17.1.5
Weitere NFS-Befehle
Der Befehl showmount Dieser Befehl gibt auch eine Liste von Clients aus, die auf einem Server Ressourcen gemountet haben. Der Befehl hat folgende Syntax: # showmount [–option(en)] [rechner]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-a oder --all
Anzeige der Namen der Clients und der von ihnen gemounteten Ressourcen
-d oder --directories
Nur Anzeige der verwendeten Dateisystemverzeichnisse
-e oder --exports
Ausgabe einer Liste aller in der Datei exports freigegebenen Ressourcen
--no-headers
Unterdrückt die Beschreibungskopfzeile der Ausgabe
Tab. 17.8: Die Optionen des Befehls showmount
806
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Im folgenden Beispiel wird ausgegeben, welche Rechner Ressourcen des Rechners pclsu3 gemountet haben: # showmount Hosts on pclsu3: 192.165.171.194 pclsu7.hertzog-edv.de
Im nächsten Beispiel werden alle exportierten Dateisysteme angezeigt: # showmount -e sol Export list for sol: /usr/share /home/daten /var/spool pc3rhl,pc4del
Der Befehl nfsstat Dieser Befehl gibt statistische Informationen über das NFS-System aus, wobei die Informationen direkt dem Kernel des Kernel-NFS-Servers entnommen werden. Der Befehl hat folgende Syntax: # nfsstat [–option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Nur Ausgabe von Informationen des Clients
-n
Eingeschränkte Ausgabe mit Informationen über das NFS-Protokoll. Standardmäßig werden auch Informationen über RPC ausgegeben.
-o facility
Anzeige von Statistiken für die angegebene Facility: fh net nfs rc rpc
Informationen über den Filehandle-Cache des Servers Statistiken über die Netzwerkschichten, wie zum Beispiel empfangene Pakete NFS-Protokoll-Informationen Informationen über den Cache des Servers, der Anfragen beantwortet Allgemeine RPC-Informationen
-r
Eingeschränkte Ausgabe mit Informationen über das RPC-Protokoll
-s
Nur Ausgabe von Informationen des Servers
Tab. 17.9: Die Optionen des Befehls nfsstat
Die Ausgabe der Clientstatistiken umfasst alle RPC-Aufrufe und gibt anschließend Einzelheiten zu den RPC-Aufrufen aus, die NFS betreffen, zum Beispiel: # nfsstat –c Client rpc stats: calls retrans authrefrsh 0 0 0 Client nfs v2: null getattr setattr root lookup readlink 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% ...
807
magnum
Der Automounter
17.1.6
Überprüfen von NFS-Funktionen
Die Ursache von Problemen im Netzwerk ist häufig sehr schwer zu finden. Die nachfolgend aufgeführten Schritte zur Fixierung des Problems können bei der Suche eventuell hilfreich sein: 1. Setzen Sie den Befehl ping auf den Rechner ab, bei dem Sie nicht mehr sicher sind, ob er im Netzwerk erreichbar ist. Wenn dieser Befehl keine positive Rückmeldung bringt, kann auch die Netzwerkhardware ein Problem haben. 2. Überprüfen Sie mit Hilfe des Befehls nen auf dem Server laufen.
ps
oder
pgrep,
ob die benötigten Daemo-
3. Testen Sie mit Hilfe des Befehls rpcinfo, ob der Daemon mountd noch läuft, zum Beispiel rpcinfo –t rechner 100005 3. Wenn Sie die Meldung ready and waiting erhalten, ist alles in Ordnung. 4. Überprüfen Sie mit Hilfe des Befehls rpcinfo, ob der Daemon lockd noch arbeitet, zum Beispiel rpcinfo –t rechner 100021 1. Wenn Sie die Meldung ready and waiting erhalten, ist alles in Ordnung. 5. Überprüfen Sie mit Hilfe des Befehls nen auf dem Client laufen.
ps
oder
pgrep,
ob die benötigten Daemo-
6. Verwenden Sie den Befehl showmount auf dem Client und auf dem Server, um zu sehen, ob die Freigaben korrekt sind, und dann, ob das richtige Mountverzeichnis auf dem Client verwendet wurde. 7. Überprüfen Sie anschließend die Zugriffsrechte und die Benutzerkennung auf ihre Richtigkeit hin. 8. Eine weitere Möglichkeit ist, dass der Server zu stark belastet ist. Dies können Sie mit dem Befehl nfsstat überprüfen. Parallel dazu können Sie untersuchen, ob die Netzwerklast zu hoch ist. 9. Testen Sie, wie und ob Ihre Router und/oder Firewalls NFS-Pakete weiterleiten.
17.2 Der Automounter Der Automounter wurde von der Firma Sun Microsystems entwickelt und erfüllt den Zweck, dass ein Dateisystem nur bei Bedarf und dann automatisch in den Verzeichnisbaum eingehängt wird. In der Regel wird der Automounter für nfs-Dateisysteme eingesetzt, aber er kann auch für einige andere Dateisysteme, wie zum Beispiel ufs oder iso9660, verwendet werden. Daher können auch Wechselmedien wie zum Beispiel CD-ROM oder Diskette per Automounter gesteuert werden.
17.2.1
Funktion und Zugriff des Automounters
Das Dateisystem autofs wird vom Run-Control-Skript /etc/init.d/autofs gestartet. Es überwacht die als Mountpoints für autofs konfigurierten Verzeichnisse und erkennt eine Anforderung der von ihm kontrollierten Ressourcen, sobald darauf zugegriffen wird. Die angeforderte Ressource wird automatisch gemountet. Dazu sind Informationen notwendig, welche Ressourcen und welcher Server an einer Mountanforderung beteiligt sind, die in den automount-Konfigurationsdateien eingetragen sind (vergleiche Abschnitt 17.2.4).
808
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Ein automatisches Mounten kann zum Beispiel durch die Anmeldung eines Benutzers oder durch den Befehl cd in ein automatisch gemountetes Verzeichnis angestoßen werden. Dadurch ist es möglich, in ein Verzeichnis zu verzweigen, das zuvor zum Beispiel mit dem Befehl ls noch nicht sichtbar war. Erst beim Aktivieren des Automounters wird es in den Verzeichnisbaum eingehängt. Es wird auch ein Eintrag in die Datei /etc/mtab vorgenommen und eine Anzeige mit den Befehlen mount oder df ist möglich. Der Mountpoint bleibt auch nach dem automatischen Unmounten erhalten und wird bei Bedarf wieder verwendet, bis das System heruntergefahren wird. Nach einem Neustart werden die benötigten Freigaben wieder neu unter den entsprechenden Mountpoints eingebunden, sobald darauf zugegriffen wird. Die Vorteile des Automounters gegenüber statischen Mounts sind:
쮿
Dateisysteme werden erst gemountet, wenn ein Bedarf besteht.
쮿
Dateisysteme werden wieder ungemountet, wenn sie nicht mehr benötigt werden.
쮿
Es ist möglich, alternative Mountressourcen zu verwenden.
쮿
Die Verwaltung von Mountvorgängen kann mit Hilfe von Namensdiensten wie NIS oder LDAP auch zentral im Netzwerk durchgeführt und die Konfigurationsdateien des Automounters können zentral verwaltet werden.
Der Automounter setzt sich im Prinzip aus dem Dateisystem gramm/Prozess automount zusammen.
autofs
und dem Pro-
Bild 17.10: Aktivierung des Automounters
809
magnum
Der Automounter
17.2.2
Das Dateisystem autofs
Dieses Dateisystem bildet die Grundlage des Automounters in Form eines KernelModuls, das ein virtuelles Dateisystem bietet. Wenn ein bestimmtes Ereignis eintritt, der Benutzer wechselt zum Beispiel in ein Verzeichnis des vom Automounter verwalteten Dateisystems, dann wird ein Mountvorgang durchgeführt. Das angesprochene Dateisystem wird in diesem Fall per NFS in das als Mountpoint verwendete Verzeichnis lokal eingebunden. Durch diese Automatisierung muss der Administrator nicht mehr manuell mounten oder unmounten oder einen entsprechenden Eintrag in der Datei /etc/fstab vornehmen. Der Hintergrundprozess automount (vergleiche Abschnitt 17.2.3) mountet erst, wenn eine entsprechende Anforderung gestellt wird. Solange auf die Ressource zugegriffen wird, bleibt das Dateisystem mit dem lokalen Rechner verbunden. Erfolgt länger als 5 Minuten kein Zugriff mehr darauf, wird das Dateisystem automatisch wieder ausgehängt. Das ermöglicht eine flexible Handhabung der Zuteilung einer Ressource. Trotz des Automounters ist es weiterhin möglich, manuell zu mounten oder zu unmounten. Dies sollte allerdings nicht auf die Dateisysteme, die der Automounter verwaltet, angewendet werden, da der Automounter in diesem Fall keine entsprechenden Aktualisierungsmeldungen über den Zustand des Dateisystems erhält. Die Dateisysteme / und /usr können – auch bei Diskless Clients – nicht per Automounter gemountet werden, da diese zu den für den Betrieb von Linux unbedingt notwendigen Dateisystemen gehören. Auf nfs-Dateisysteme kann nur per Automounter gemountet werden, wenn auf dem Server entsprechende Freigaben erfolgt sind (vergleiche Abschnitt 17.1.3). Es ist auch möglich, lokale Dateisysteme per Automounter zu mounten, wenn in der entsprechenden Konfigurationsdatei (vergleiche Abschnitt »Die MasterMap«) eine Gerätedatei anstelle der NFS-Ressource eingetragen wird. Ein Mountpoint des autofs-Dateisystems wird normalerweise als leeres Verzeichnis angezeigt, da erst bei tatsächlichem Zugriff gemountet wird. autofs kennt
vier Optionen:
Option
Beschreibung
start
Diese Option startet den Prozess. autofs sucht nach Maps in der Konfigurationsdatei /etc/auto.master und startet anschließend den Befehl automount für jeden einzelnen Mountpoint.
stop
Stoppt autofs und alle von automount gestarteten Mountvorgänge
status
Zeigt die aktuelle Konfiguration und alle von automount gestarteten Mountvorgänge an
reload
Liest die Map auto.master neu ein und beendet alle nicht mehr notwendigen Mountvorgänge von automount bzw. startet neu eingetragene Mountvorgänge
Tab. 17.10: Die Optionen von autofs
810
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
17.2.3
Das Programm automount
Das Dateisystem autofs aktiviert das Programm automount, wenn auf ein vom autofs kontrolliertes Verzeichnis zugegriffen oder längere Zeit nicht mehr zugegriffen wird. Das Programm bearbeitet die Mount- und Unmountanforderungen des Dateisystems autofs, indem es die entsprechenden Konfigurationsdateien (vergleiche Abschnitt 17.2.4) liest, um festzustellen, welche Dateisysteme auf welchen Servern gemountet oder ungemountet werden sollen. Das Programm hat folgende Syntax: # automount [-option(en)] automount kann
mountpoint maptyp[,format] map [mapoption(en)]
mit verschiedenen Optionen gestartet werden:
Option
Beschreibung
-p pid-datei
Schreibt die PID des Daemons in die angegebene Datei
-t oder --timeout
Angabe der Zeit in Sekunden, bis ein nicht mehr benötigtes Dateisystem ausgehängt werden soll. Der Standardwert beträgt 5 Minuten. Wird der Wert auf 0 gesetzt, wird das Unmounten vollständig deaktiviert.
-v
Ausgabe von zusätzlichen Meldungen
Tab. 17.11: Die Optionen des Programms automount automount verarbeitet mindestens drei Argumente. Erforderlich sind die Angabe des Mountpoints, des Maptyps und der Map. Zu den erforderlichen und optionalen Argumenten gehören:
Argument
Beschreibung
mountpoint
Basisablageort für Dateisysteme, die per autofs gemountet und eingehängt werden sollen. Der Verzeichnisname muss bereits vorhanden sein.
maptyp
Typ der Map, die für diesen Aufruf verwendet wird. Folgende sind gültige Maptypen: file Die Map ist eine reguläre Textdatei. program Die Map ist ein ausführbares Programm, dem ein Schlüssel an der Befehlszeile übergeben wird und das bei Erfolg einen Eintrag an die Standardausgabe zurückgibt. yp Die Map ist eine NIS-Datenbank. nisplus Die Map ist eine NIS+-Datenbank. hesiod Die Map ist eine Hesiod-Datenbank (mit Hesiod können Informationen über Benutzer und Gruppen im DNS in großen Netzwerken veröffentlicht werden). ldap Mapnamen werden in der Form [servername:]basedn angegeben, wobei der optionale Servername der Name des angefragten LDAPServers und basedn die DN ist, unter der eine Subtree-Suche durchgeführt wird.
format
Format der Map-Daten. Im Moment gibt es nur die Formate sun, eine Untermenge der Sun-Automounter-Mapformate, und hesiod, für Hesiod-FilesysEinträge. Standardmäßig wird sun verwendet.
Tab. 17.12: Die Argumente des Programms automount
811
magnum
Der Automounter
Argument
Beschreibung
map
Ablageort der zu verwendenden Map-Datei in Form eines absoluten Pfadnamens für Maps vom Typ file oder program und in Form eines Datenbanknamens für Maps vom Typ yp, nisplus oder hesiod
option(en)
Weitere Befehlszeilenargumente ohne vorangestellten Bindestrich werden als Mountoptionen behandelt. Argumente mit vorangestelltem Bindestrich werden als Optionen für die Maps betrachtet.
Tab. 17.12: Die Argumente des Programms automount (Forts.) automount wird in der Regel nicht von Hand, sondern autofs aufgerufen. Ein Aufruf könnte folgendermaßen
über das Skript aussehen:
/etc/init.d/
# /usr/sbin/automount -t3 /vol file /etc/auto.vol
Der Befehl df -a (vergleiche Kapitel 13) zeigt alle gemounteten Dateisysteme an. Auch die vom autofs-Dateisystem kontrollierten Dateisysteme werden aufgeführt.
17.2.4
Die Konfigurationsdateien des Automounters
Diese Dateien werden als Maps bezeichnet und bestimmen, welche Mountpoints das autofs-Dateisystem verwenden und welche Mountvorgänge durchgeführt werden sollen. Unter Linux gibt es zwei verschiedene Arten von Maps:
쮿
Die Master-Map wird zuerst gelesen und muss den Namen auto.master haben. Sie enthält die Bezüge zu den anderen Maps.
쮿
Die indirekte Map enthält die Mountpoints des autofs als relative Pfade.
In der Datei /etc/fstab sind keine Einträge mehr notwendig und die Verwaltung kann auch zentral über NIS oder LDAP erfolgen. Falls Sie den Automounter bereits auf anderen Unix-Systemen, zum Beispiel Solaris, konfiguriert haben, müssen Sie beachten, dass es unter Linux keine Möglichkeit gibt, direkte Maps mit absoluten Pfadangaben oder spezielle Maps zu verwenden.
Die Master-Map Die Datei /etc/auto.master enthält alle Mountpoints von autofs. Sie wird beim Start des Daemons automount gelesen. Standardmäßig enthält die Datei folgende Informationen und einen auskommentierten Eintrag: # cat /etc/auto.master # $Id: auto.master,v 1.1 2001/04/17 11:43:02 arvin Exp arvin $ # Sample auto.master file # Format of this file: # mountpoint map options # Also see variable AUTOFS_OPTIONS in /etc/sysconfig/autofs # For details of the format look at autofs(8). #/misc /etc/auto.misc
Eine aktivierte Datei auto.master enthält in jeder Zeile einen Mountpoint, der mit dem Namen einer weiteren Map verbunden sein kann. Die erste Spalte enthält den Pfadnamen des Mountpoints in Form eines bereits vorhandenen Verzeichnisses,
812
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
die zweite den Namen einer Map, die die eigentlichen Informationen zum Mounten enthält, und die letzte optionale Spalte kann die Mountoptionen der Map angeben. Die Syntax lautet also: Mountpoint Map [Option(en)] Eine überarbeitete Master-Map kann zum Beispiel wie folgt aussehen: # cat /etc/auto.master /volumes /etc/auto.devices /home /etc/auto.homes /dienste /etc/auto.dienste
--timeout 100
In diesem Beispiel sollen das lokale CD-ROM- und das Diskettenlaufwerk unterhalb des Verzeichnisses /volumes gemountet und nach 100 Sekunden automatisch ungemountet werden. Die Homeverzeichnisse sollen unterhalb von /home automatisch gemountet werden.
Die indirekte Map Der Name für indirekte Maps ist frei wählbar, muss aber mit dem in der Datei /etc/auto.master angegebenen Namen übereinstimmen. Der Mountpoint ist in diesem Fall zweistufig, da der erste Teil in der Master-Map vorgegeben wird und der zweite Teil in der indirekten Map. Der Eintrag in der Master-Map kann zum Beispiel wie folgt aussehen: # cat /etc/auto.master /dienste /etc/auto.dienste
Die Datei auto.dienste muss dann im Verzeichnis /etc angelegt werden. Sie enthält den relativen Pfadnamen in der ersten Spalte, dem Schlüsselfeld, dann gegebenenfalls spezifische Mountoptionen und die gemounteten Ressourcen in der Form rechnername:verzeichnisname. Im Folgenden sehen Sie ein Beispiel: # cat /etc/auto.dienste appl -rw suso2:/dienste/appl
Aus den beiden Teilen der Pfadangabe /dienste und appl wird der absolute Pfadname /dienste/appl gebildet. Auch in diesem Fall muss der Daemon mit Hilfe des Befehls automount neu aktiviert werden. Die Konfigurationsdateien zu den in der Master-Map angegebenen Mountpoints enthalten also für jedes zu mountende Dateisystem eine eigene Zeile in folgender Syntax: <Mountpoint> <Mountoption(en)> [Rechner]:
Der Mountpoint ist das Verzeichnis, das unterhalb des in der Master-Map angegebenen Mountpoints das Dateisystem enthält. Die Mountoptionen sind dieselben, die der Befehl mount kennt. Bei lokalen Dateisystemen folgt dann der Name der Gerätedatei ohne den Rechnernamen bzw. bei von anderen Rechnern freigegebenen Dateisystemen die entsprechende Freigabe. Die nächsten Beispiele beziehen sich auf folgende Einträge in der Master-Map: # cat /etc/auto.master /volumes /etc/auto.devices /home /etc/auto.homes
--timeout 100
813
magnum
Der Automounter
Der vollständige Mountpoint für das CD-ROM-Laufwerk lautet dann /voluund für das Diskettenlaufwerk /volumes/floppy aufgrund der Angaben in der indirekten Map /etc/auto.devices: mes/cdrom
# cat /etc/auto.devices cdrom -fstype=iso9660,ro,user floppy -fstype=auto,rw,user
:/dev/cdrom :/dev/fd0
Durch die Konfiguration der Datei /etc/auto.homes werden die Homeverzeichnisse der Benutzer von einem NFS-Server automatisch gemountet: # cat /etc/auto.homes anna -fstype=nfs,rw,no_squash_all berta -fstype=nfs,rw,no_squash_all
pc2rdl:/home/anna pc5del:/home/berta
Wenn sich die Homeverzeichnisse auf einem Server befinden, wäre es recht aufwändig, jedes einzelne Homeverzeichnis anzugeben. Daher ist es möglich, in einem solchen Fall mit den Metazeichen * und & zu arbeiten: # cat /etc/auto.homes anna -fstype=nfs,rw,no_squash_all berta -fstype=nfs,rw,no_squash_all * -fstype=nfs,rw,no_squash_all
pc2rdl:/home/anna pc5del:/home/berta sol:/home/&
In diesem Fall werden zuerst die Konfigurationen zum Automounten für die Benutzerinnen anna und berta eingelesen und für alle anderen Benutzer (hier wird die Wildcard * verwendet) wird das entsprechende Homeverzeichnis auf dem Rechner sol unterhalb des freigegebenen Verzeichnisses /home gemountet. Das heißt, die Wildcard & wird durch den jeweiligen Benutzernamen ersetzt, so dass ein vollständiges Homeverzeichnis entsteht.
17.2.5
Automounter starten und anwenden
Wenn Sie die Maps für das Automounten erstellt haben, müssen Sie diese Konfiguration dem autofs-Dateisystem bekannt geben. Dazu rufen Sie einfach das entsprechende Run-Control-Skript mit dem Parameter start bzw. reload auf, wenn Sie es neu oder noch einmal starten möchten: # /etc/init.d/autofs start Starting service automounter
done
Den aktuellen Status des Automounters können Sie mit demselben Skript ermitteln: # /etc/init.d/autofs status Checking for service autofs: OK Configured Mount Points: -----------------------automount -t 300 /volumes file /etc/auto.devices -timeout 100 automount -t 300 /home file /etc/auto.homes Active Mount Points: -------------------automount -t 300 /volumes file /etc/auto.devices -timeout 60
Wenn der Automounter standardmäßig bei jedem Bootvorgang gestartet werden soll, müssen in den entsprechenden Runlevel-Verzeichnissen Links angelegt werden.
814
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Wenn Sie jetzt den Inhalt des Verzeichnisses wäre das Verzeichnis leer:
/volumes
anzeigen, sieht es aus, als
# ls /volumes
Die Mountpoints sind dem Kernel zwar bereits bekannt, aber das Dateisystem wird erst bei einem tatsächlichen Zugriff gemountet, zum Beispiel: # ls /volumes/cdrom beispiel.txt ust89.tar.gz # ls /volumes cdrom
prs712.tar.gz
README.txt
Das setzt aber voraus, dass man den Namen des Mountpoints kennen muss, um auf die Ressource zugreifen zu können. Sie sollten auch beachten, dass bestimmte Befehle, wie zum Beispiel find, das Verzeichnis erst nach einem Mountvorgang durchsuchen können.
autofs mit YaST starten Wenn Sie den Automounter mit Hilfe von YaST starten möchten, öffnen Sie in YaST die Menüpunkte SYSTEM - RUNLEVEL-EDITOR. Anschließend aktivieren Sie den EXPERTENMODUS und suchen den Automounter-Dienst autofs und starten diesen in den von Ihnen gewünschten Runleveln:
Bild 17.11: Automounter-Dienst starten
815
magnum
Samba einrichten
17.3 Samba einrichten NFS kann verwendet werden, um Freigaben in einer homogenen Unix- und LinuxRechnerumgebung einzurichten. Samba sollte verwendet werden, wenn in einem Netzwerk sowohl Microsoft-Windows- als auch Linux- oder Unix-Systeme betrieben und Dateien und Drucker gemeinsam genutzt werden. Samba wird auf einem der Linux- oder Unix-Systeme installiert und ermöglicht es Microsoft Windows, auf freigegebene Ressourcen auf dem Linux-System zuzugreifen, während LinuxAnwender auf freigegebene Dateien und Drucker der Microsoft-Windows-Systeme zugreifen können. Samba verwendet das SMB-Protokoll, um Dateien und Drucker in einer heterogenen Netzwerkumgebung gemeinsam zu nutzen. Außer dem Betriebssystem Microsoft Windows werden auch OS/2 und Linux bzw. Unix unterstützt. Samba kann in einem Windows-Netzwerk sogar nicht nur als Datei -und Druckserver dienen, sondern auch die Aufgaben eines Primary oder Backup Domain Controllers, eines Windows-Authentifizierungsservers, eines lokalen sowie eines Domain-MasterBrowsers und eines primären WINS-Servers übernehmen. Samba verwendet zwei Daemonen und die Konfigurationsdatei /etc/samba/smb.conf, die alle Einstellungen zu Samba-Freigaben enthält, also zu Dateien, Druckern usw. Darüber hinaus gibt es mehrere Befehle, um Samba zu steuern, oder die Möglichkeit, grafische Tools wie zum Beispiel YAST oder SWAT zu verwenden. Dieser Abschnitt soll nur einen ersten Überblick und ersten Einstieg in Samba verschaffen. Alle Einzelheiten zu Samba zu besprechen würde den Rahmen des Buchs sprengen, da bereits ganze Bücher ausschließlich zu diesem Thema geschrieben wurden.
17.3.1
Samba-Daemonen
Damit Samba korrekt funktioniert, müssen die beiden Daemonen smbd und nmbd laufen. Diese können zu Testzwecken manuell oder permanent über ein Run-ControlSkript beim Booten oder über den Internetdienst inetd bzw. xinetd gestartet werden. Die letzte Methode sollte aber nur verwendet werden, wenn auf Samba selten zugegriffen wird. Wenn Benutzer und Gruppen auf einem Windows-NT-Server authentifiziert werden sollen, muss außerdem noch der Daemon winbind bzw. winbindd beim Booten gestartet werden.
Der Daemon smbd Dieser Daemon ist für Sambas Datei- und Druckerdienste zuständig und wird von der standardmäßigen Konfigurationsdatei /etc/samba/smb.conf gesteuert. Diese Datei wird minütlich automatisch neu gelesen, so dass die darin ausgeführten Änderungen automatisch wirksam werden, was auf bereits verbundene Clients aber keine Auswirkung hat. Alternativ können Sie den Daemon auch manuell mit folgendem Befehl starten: # /usr/sbin/smbd -D
816
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Unter SUSE Linux befinden sich die Daemons und einige Befehle zu Samba im Verzeichnis /var/lib/samba/bin. Bei anderen Linux- oder Unix-Derivaten können Sie die Befehle auch im Verzeichnis /usr/local/samba/bin oder anderen Verzeichnissen finden. Der Befehl hat folgende Syntax: # smbd [-option(en)]
Zu den wichtigsten Optionen des Befehls gehören: Option
Beschreibung
-a
Durch diese Option werden bei jeder neuen Verbindung zum Samba-Server die Protokollmeldungen an die Protokolldatei angehängt. Diese Option ist standardmäßig gesetzt und stellt das Gegenteil zu -o dar.
-D
Durch diese Standardoption wird das Programm smbd als Daemon ausgeführt.
-d
Definiert den Debug-Level in einem Bereich von 0 bis 10. Bei Debug-Level 0 werden nur die wichtigsten Meldungen protokolliert, Stufe 1 ist Standard und Stufe 3 und höher sollten aus Leistungsgründen nur bei der Fehlersuche verwendet werden.
debuglevel
-F
Der Daemon läuft im Vordergrund.
-h
Ausgabe der Hilfe zu smbd
-i
smbd wird interaktiv und nicht als Daemon ausgeführt.
-l verzeichnis
-O
socketoptionen
Die Protokollmeldungen werden in ein anderes Verzeichnis in die Datei
log.smbd geschrieben, wenn das Verzeichnis existiert. Sonst wird das Standardverzeichnis verwendet, normalerweise /usr/local/samba/var, /usr/samba/var oder /var/log.
Definiert die TCP/IP-Socket-Optionen. Sinnvoll aus Gründen der Leistungssteigerung oder zu Testzwecken
-o
Die Protokolldateien werden überschrieben. Diese Funktion ist das Gegenteil von -a.
-p
Definiert die TCP/IP-Portnummer für die Anfragen. Microsoft-Clients verwenden den Standardport 139, außer Windows 2000 und XP, die Port 445 verwenden können.
portnummer -P
smbd läuft im passiven Modus, das heißt, der Daemon horcht nur an den Ports und erzeugt keinen Netzwerkverkehr. Sinnvoll bei der Fehlersuche
-S
Es wird an die Standardausgabe protokolliert.
-s konfdatei
Definiert, wo die Samba-Konfigurationsdatei abgelegt ist
-V
Ausgabe der Versionsnummer
Tab. 17.13: Die Optionen des Prozesses smbd
817
magnum
Samba einrichten
Der Daemon nmbd Dieser Daemon ist für Sambas NetBIOS-Namensdienst zuständig. Es beantwortet Broadcast-Anfragen von Samba-Clients, die Namen der vom Samba-Client benötigten Adressen zuordnen. Auch Suchprotokollanfragen der Windows-Netzwerkumgebung werden von diesem Daemon beantwortet. Sie können den Daemon manuell mit folgendem Befehl starten: # /usr/sbin/nmbd -D
Unter SUSE Linux befinden sich die Daemons und einige Befehle zu Samba im Verzeichnis /var/lib/samba/bin. Bei anderen Linux- oder Unix-Derivaten können Sie die Befehle auch im Verzeichnis /usr/local/samba/bin oder anderen Verzeichnissen finden. Der Befehl hat folgende Syntax: # nmbd [-option(en)]
Zu den wichtigsten Optionen des Befehls gehören: Option
Beschreibung
-a
Durch diese Option werden bei jeder neuen Verbindung zum Samba-Server die Protokollmeldungen an die Protokolldatei angehängt. Diese Option ist standardmäßig gesetzt und stellt das Gegenteil zu -o dar.
-D
Durch diese Standardoption wird das Programm nmbd als Daemon ausgeführt.
-d
Definiert den Debug-Level in einem Bereich von 0 bis 10. Bei Debug-Level 0 werden nur die wichtigsten Meldungen protokolliert, Stufe 1 ist Standard und Stufe 3 und höher sollten aus Leistungsgründen nur bei der Fehlersuche verwendet werden.
debuglevel
-F
Der Daemon läuft im Vordergrund.
-H
Definiert, wo die Datei lmhosts für die Namensauflösung gespeichert wird. Diese Datei löst Namen für den lokalen Server auf, aber beantwortet keine Anfragen von Remote-Rechnern. Standardmäßig heißt die Datei /usr/local/samba/lib/lmhosts, /usr/samba/lib/lmhosts oder /etc/lmhosts.
lmhosts-datei
-h
Ausgabe der Hilfe zu nmbd
-i
nmbd wird interaktiv und nicht als Daemon ausgeführt.
-l verzeichnis
-n
Die Protokollmeldungen werden in ein anderes Verzeichnis in die Datei
log.nmbd geschrieben, wenn das Verzeichnis existiert. Sonst wird das Standardverzeichnis verwendet, normalerweise /usr/local/samba/var, /usr/samba/var oder /var/log.
Überschreibt den NetBios-Name mit dem angegebenen Namen
NetBios-Name -O
socketoptionen
Definiert die TCP/IP-Socket-Optionen. Sinnvoll aus Gründen der Leistungssteigerung oder zu Testzwecken
Tab. 17.14: Die Optionen des Prozesses nmbd
818
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Option
Beschreibung
-o
Die Protokolldateien werden überschrieben. Diese Funktion ist das Gegenteil von -a.
-p
Definiert die TCP/IP-Portnummer für die Anfragen. Microsoft-Clients verwenden den Standardport 139, außer Windows 2000 und XP, die Port 445 verwenden können.
portnummer -S
Es wird an die Standardausgabe protokolliert.
-s konfdatei
Definiert, wo die Samba-Konfigurationsdatei abgelegt ist
-V
Ausgabe der Versionsnummer
Tab. 17.14: Die Optionen des Prozesses nmbd (Forts.)
17.3.2
Die Konfigurationsdatei smb.conf
Sambas Konfigurationsdatei heißt /etc/samba/smb.conf. Änderungen an der Konfigurationsdatei werden nur wirksam, wenn der Samba-Daemon neu gestartet wird. Die Syntax der Datei ist transparent. Sie besteht aus Sektionen, deren Namen in eckigen Klammern stehen, und innerhalb der Sektionen stehen Optionen, denen Werte zugeordnet werden: [sektion] option = wert
Vor und nach dem Gleichheitszeichen eines Optionen-Werte-Paars können, müssen aber keine Leerzeichen stehen. Groß- und Kleinschreibung wird in der Datei allerdings unterschieden, ausgenommen bei booleschen Werten, die zum Beispiel yes oder Yes lauten können. Standardmäßig besitzt die Datei smb.conf folgende Sektionen: [global] workgroup = hertzog-edv.de printing = cups ... [homes] comment = Home Directories ... [profiles] comment = Network Profiles Service ... [users] comment = All users [groups] comment = All groups ... [printers] comment = All Printers ...
Die wichtigsten Sektionen werden in diesem Abschnitt behandelt. Außer der Sektion global werden in allen anderen Sektionen Freigaben, so genannte Shares, definiert. Zuerst betrachten wir aber die häufigsten Optionen und Variablen der Datei smb.conf im Detail.
819
magnum
Samba einrichten
Optionen der Datei smb.conf Die Konfigurationsdatei kennt folgende häufig verwendete Optionen, die entweder in der Sektion global oder in den Freigabe-Sektionen verwendet werden können. In der folgenden Tabelle steht hinter dem Optionsnamen die Anmerkung (G) für global oder (S) für share. Die Liste erhebt keinen Anspruch auf Vollständigkeit: Option
Beschreibung
admin users (S)
Diese Option enthält eine Liste der Benutzer, die root-Rechte erhalten.
allow trusted domains (G)
Die Option ist bei den Sicherheitsleveln server und domain relevant. Wenn sie auf no gesetzt ist, werden nur Anfragen von Rechnern aus der Domäne des Samba-Servers erlaubt. Standard ist yes.
browseable (S)
Dieser boolesche Wert bestimmt, ob die Freigabe angezeigt wird oder nicht. Vorgabe ist yes.
comment (S)
Legt einen Kommentar zu einer Freigabe fest
create mask (S)
Dieser numerische Wert definiert die Rechte-Maske für von Samba erstellte Dateien. Die Vorgabe ist 0744.
cups options (S)
Diese Option ist nur gemeinsam mit der Option printing = cups wirksam. Sie kann eine beliebige Kombination aus Druckoptionen enthalten, die Samba direkt an CUPS weiterleitet. Die Optionen können im CUPS-Handbuch eingesehen werden.
directory mask (S)
Dieser numerische Wert setzt die Rechte-Maske für von Samba erstellte Verzeichnisse. Die Vorgabe ist 0755.
encrypt passwords (G)
Dieser boolesche Wert aktiviert verschlüsselte Passwörter. Standardmäßig enthält die Option no.
force group (S)
Diese Option setzt für einen Benutzer, der auf die Freigabe zugreift, die angegebene effektive Gruppe.
force user (S)
Diese Option setzt für einen Benutzer, der auf die Freigabe zugreift, den angegebenen effektiven Benutzer.
guest ok/public (S)
Wenn diese Option auf yes gesetzt ist, kann auf die Freigabe ohne Authentifikation zugegriffen werden. Vorgabe ist no.
guest account (S)
Diese Option enthält den Benutzernamen für einen guestAccount, standardmäßig ist das nobody.
host allow/ allow host (S)
Diese Option kann eine Liste von Rechnern enthalten, die sich mit Samba verbinden dürfen.
host deny/ deny host (S)
Diese Option kann eine Liste von Rechnern enthalten, die sich mit Samba nicht verbinden dürfen.
include (G)
Definiert weitere Konfigurationsdateien, die für die Konfiguration verwendet werden sollen
interfaces (G)
Enthält eine Liste von Netzwerkschnittstellen, denen Samba antwortet
Tab. 17.15: Optionen der Datei smb.conf
820
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Option
Beschreibung
invalid users (S)
Diese Option enthält eine Liste von Benutzern, die nicht auf eine Freigabe zugreifen dürfen.
logon drive (G)
Enthält den Laufwerksbuchstaben für das Anmelden zu einem Homeverzeichnis (nur für NT gültig)
logon home (G)
Enthält den Server- und Freigabenamen, um das Homeverzeichnis eines Windows 95/98/Me- oder NT/2000/ XP-Benutzers zu setzen. Vorgabe ist \\%N\%U.
logon path (G)
Enthält den Server- und Freigabenamen, um den Pfad des Verzeichnisses anzugeben, in dem Windows NT/2000/ XP-Roaming-Profile abgespeichert werden. Vorgabe ist \\%N\%U\profile.
map to guest (G)
Wenn die Option auf Bad User gesetzt ist, darf jeder Benutzer sich als guest am Samba-System anmelden, um zum Beispiel öffentliche Freigaben jedem zugänglich zu machen. Wenn die Option auf Bad Password gesetzt ist, wird jeder Benutzer als guest am SambaSystem angemeldet, wenn er sich bei der Eingabe seines Passworts verschrieben hat. Der Vorgabewert Never bewirkt, dass sich Benutzer ohne eigenen Zugang nicht anmelden können.
null passwords (G)
Steht dieser boolesche Wert auf yes, erlaubt Samba einen Zugriff für Benutzer, die kein Passwort besitzen. Vorgabe ist no.
path (S)
Definiert das Verzeichnis, das für die Freigabe einer Festplatte oder für eine Druckerwarteschlange verwendet werden soll
password server (G)
Die Option ist bei den Sicherheitsleveln server und domain relevant und enthält eine Liste der Passwort- oder Domainserver.
print command (S)
Definiert den Befehl, mit dem gedruckt werden soll
printable/print ok (S)
Dieser boolesche Wert kennzeichnet eine Freigabe als Druckerfreigabe. Vorgabe ist no.
printcap name (G)
Enthält den Ablageort der Druckerkonfigurationsdatei
printcap cache time (G)
Diese Option steuert, wie oft Samba die Datei printcap einliest, um Änderungen in der Druckerliste festzustellen. Vorgabe ist 0.
printer/ printer name (S)
Definiert das Drucksystem für den Client. Mögliche Namen sind sysv, aix, hpux, qnx, plp, lprng, softq, cups, nt und os2.
printer admin (S)
Legt fest, welche Benutzer einen Drucker über die Administrationsschnittstelle des Windows-Systems verwalten dürfen. Vorgabe ist root.
printing (S)
Definiert den Drucksystemtyp. Mögliche Werte sind bsd, sysv,
hpux, aix, qnx, plp, softq oder lprng. read only (S)
Dieser boolesche Wert erlaubt, dass auf eine Freigabe nur lesend zugegriffen wird, wenn er auf die Vorgabe yes eingestellt ist.
read list (S)
Enthält eine Liste von Benutzern, die Leserecht für eine read-only-Freigabe haben
Tab. 17.15: Optionen der Datei smb.conf (Forts.)
821
magnum
Samba einrichten
Option
Beschreibung
revalidate (S)
Der Benutzer muss sich jedes Mal neu authentifizieren, wenn er auf eine Freigabe zugreifen will.
security (G)
Diese Option gibt den Sicherheitstyp an, der vom SambaServer verwendet wird. Mögliche Werte sind domain, server, share, oder user. Standard ist user.
store dos attributes (S)
Wenn dieser boolesche Wert gesetzt ist, versucht Samba nicht mehr, DOS-Attribute, wie zum Beispiel HIDDEN oder ARCHIVE, Linux-Berechtigungen zuzuordnen. Stattdessen werden DOS-Attribute in ein erweitertes Attribut im LinuxDateisystem im Zusammenhang mit der Datei oder dem Verzeichnis gespeichert. Vorgabe ist no.
smb passwd file (G)
Definiert den Namen der verschlüsselten Passwortdatei. Die Vorgabe ist /usr/local/samba/private/smbpasswd.
username/user (S)
Enthält eine Liste mit Benutzern, die durchprobiert werden, wenn auf Freigabe-Ebene Sicherheitsmaßnahmen durchgeführt wurden
username map (G)
Enthält den Namen einer Datei mit Unix-zu-Windows-Namenszuordnungen, die verwendet wird, um unterschiedliche Schreibweisen von Zugangsnamen und Windows-Benutzernamen mit mehr als acht Zeichen einander zuzuordnen
valid users (S)
Diese Option enthält eine Liste von Benutzern, die auf eine Freigabe zugreifen dürfen.
veto files (S)
Enthält eine Liste von Dateien, die der Client nicht sieht, wenn er den Inhalt eines Verzeichnisses anzeigt
workgroup (G)
Definiert die NETBIOS-Arbeitsgruppe oder Domäne, zu der der Samba-Server gehört
writeable/write ok (S)
Wenn diese boolesche Option auf no gesetzt ist, ist nur ein Lesezugriff auf die Freigabe erlaubt. Standardwert ist no.
write list (S)
Enthält eine Liste von Benutzern, die das Schreib-/Leserecht für eine read-only-Freigabe haben
Tab. 17.15: Optionen der Datei smb.conf (Forts.)
Variablen der Datei smb.conf Für Einträge in die Datei smb.conf können verschiedene Variablen verwendet werden, um die Merkmale des Samba-Servers und seiner Clients zu definieren. Eine solche Variable beginnt mit einem Prozentzeichen, gefolgt von einem einzelnen Großoder Kleinbuchstaben, zum Beispiel: [global] ... logon home = \\%L\%U\.9xprofile
Die Variable L steht hier für den Rechnernamen des Samba-Servers und U für den Benutzernamen. In der folgenden Tabelle werden die wichtigsten Variablen erklärt:
822
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Variable
Beschreibung
%a
Architektur des Clients (zum Beispiel Samba, WfWg, WinNT, Win95 oder UNKNOWN)
%d
Aktuelle Identifikationsnummer des Serverprozesses (PID)
%f
Name der zu druckenden Datei ohne Pfadangabe
%g
Primäre Gruppe des aktuellen Benutzers (%u)
%G
Primäre Gruppe des vom Client übermittelten Benutzernamens (%U)
%H
Homeverzeichnis des aktuellen Benutzers (%u)
%h
DNS-Rechnername des Samba-Servers
%I
IP-Adresse des Clientrechners
%j
Anzahl der Druckaufträge
%L
NetBIOS-Name des Samba-Servers
%m
NetBIOS-Name des Clientrechners
%M
DNS-Name des Clientrechners
%N
Homeverzeichnisserver der Datei auto.map (bei Einsatz des Automounters)
%p
In einer Sektion, die Drucker festgelegt, enthält diese Variable den Namen des Druckers, ansonsten den Pfad des Automounters zum root-Verzeichnis der Freigabe, wenn diese vom aktuellen root-Verzeichnis der Freigabe abweicht.
%P
Aktuelles root-Verzeichnis der Freigabe
%R
Die SMB-Protokoll-Ebene
%s
Vollständiger Pfadname der zu druckenden Datei
%S
Aktueller Freigabename
%T
Aktuelles Datum und Uhrzeit
%u
Aktueller Benutzername
%U
Vom Client übermittelter Benutzername
%v
Samba-Version
Tab. 17.16: Variablen der Datei smb.conf
Die Sektion global In dieser Sektion werden globale Optionen hinterlegt, die für die allgemeine Funktionalität von Samba wichtig und für alle in der Datei definierten Freigaben gültig sind. Es ist aber möglich, in den einzelnen Sektionen die in Sektion global vorgegebenen Werte wieder zu überschreiben.
823
Samba einrichten
magnum
Eine solche Sektion kann zum Beispiel wie folgt aussehen: [global] workgroup = hertzog-edv.de printing = cups printcap name = cups printcap cache time = 750 cups options = raw printer admin = @ntadmin, root, administrator username map = /etc/samba/smbusers map to guest = Bad User include = /etc/samba/dhcp.conf logon path = \\%L\profiles\.msprofile logon home = \\%L\%U\.9xprofile logon drive = P: security = user encrypt passwords = yes
Als Drucksystem wird hier cups angegeben und den Drucker darf der Administrator der Windows-Systeme bzw. root der Linux-Systeme verwalten. Unbekannte Benutzer erhalten das Konto guest und es wird eine weitere Konfigurationsdatei mit dem Namen dhcp.conf eingelesen. Des Weiteren wurden der Anmeldepfad und das Homeverzeichnis sowie der Laufwerksbuchstabe, unter dem die Freigabe erscheint, hinterlegt. Es wird mit verschlüsselten Passwörtern gearbeitet.
Die Sektion homes Wenn ein Clientrechner sich mit einer Freigabe zu verbinden versucht, die nicht in der Datei smb.conf enthalten ist, wird die Freigabe homes verwendet. Der nicht gefundene Freigabename wird als ein Linux-Benutzername betrachtet und die Passwortdatenbank des Samba-Servers danach durchsucht. Ist der Benutzername darin enthalten, wird der Clientrechner wie ein Linux-Benutzer behandelt, der auf sein Homeverzeichnis auf dem Samba-Server zugreifen möchte. Wenn also zum Beispiel ein Client sich auf einem Samba-Server mit einer Freigabe [her] verbinden möchte und diese in der Konfigurationsdatei nicht definiert ist, verwendet er die Freigabe [homes]. Samba durchsucht dann die Passwortdatenbank und findet dort ein Benutzerkonto her. Dann wird das vom Client angegebene Passwort mit dem des Benutzers her in der Datei passwd überprüft: bei unverschlüsselten Passwörtern mit der Passwortdatenbank, ansonsten mit der Datei smbpasswd. Ist das angegebene Passwort korrekt, verbindet der Samba-Server den Client mit dem Homeverzeichnis des Benutzers her und erzeugt eine Freigabe dafür. Auf diese Weise ist es nicht notwendig, für jeden einzelnen Benutzer eine entsprechende Freigabe zu erzeugen. Es genügt, wenn der Benutzer auf dem Samba-Server bekannt ist und dort ein Homeverzeichnis besitzt. Die Sektion homes kann zum Beispiel wie folgt aussehen: [homes] comment = Home Directories valid users = %S browseable = Yes read only = No inherit acls = Yes
Die Option valid users hat den Wert des aktuellen Freigabenamens. ACLs werden vererbt und der Inhalt des Verzeichnisses kann gelesen, geschrieben und angezeigt werden.
824
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Die Sektion printers Diese dritte spezielle Sektion ist ähnlich wie homes. Hier überprüft Samba, ob es sich um eine Druckerfreigabe handelt, wenn ein Clientrechner sich mit einer nicht in smb.conf vorhandenen Freigabe verbinden möchte, deren Name nicht in der Passwortdatei steht. Samba liest dazu die Druckerkonfigurationsdatei, zum Beispiel /etc/printcap, um den Namen der Freigabe zu finden. Ist diese dort vorhanden, erstellt Samba eine Freigabe mit dem Druckernamen. Da für eine nicht bekannte Freigabe immer zuerst nach einem Benutzer gesucht wird, sollten Benutzer- und Druckernamen auf einem Samba-Server unbedingt unterschiedlich sein. Die Sektion printers kann zum Beispiel wie folgt aussehen: [printers] comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No
Benutzerdefinierte Sektionen Alle übrigen Sektionen in einer Datei smb.conf sind benutzerdefiniert. Der Systemadministrator kann eine Sektion für einen bestimmten Dienst anlegen, indem er den Namen des Dienstes als Sektionsnamen verwendet und anschließend die benötigten Optionen mit den entsprechenden Werten in die Sektion einträgt. Im folgenden Beispiel wird eine Freigabe für ein Projekt eingerichtet. Die Benutzer anna, berta, chris und denis können auf das Verzeichnis /home/projekt_xy zugreifen und darin Dateien erstellen. Es ist aber nicht öffentlich zugänglich: [projekt_xy] comment = Share für das Projekt xy path = /home/projekt_xy/ valid users = anna berta chris denis public = no writable = yes printable = no create mask = 0765
Häufig wird auch eine so genannte angelegt:
public-Sektion
für den öffentlichen Zugriff
[public] comment = Share für nicht registrierte Benutzer path = /home/public/ read only = no public = yes hide files = /home/public/interna/*
Auch die Homeverzeichnisse werden oft mit einer eigenen Sektion freigegeben. Die Sektion könnte genauso gut homes heißen: [users] comment = All users path = /home read only = no inherit acls = yes veto files = /aquota.user/groups/shares/
825
magnum
Samba einrichten
Die Konfigurationsdatei testen Mit dem Befehl testparm ist es möglich, die Konfiguration von smb.conf auf Syntaxfehler zu überprüfen, zum Beispiel: # testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[network]" Processing section "[print$]" Unknown parameter encountered: "broseable" Ignoring unknown parameter "broseable" Processing section "[hplj1200ps]" ERROR: Badly formed boolean in configuration file: "ys". Processing section "[lp]" Loaded services file OK. WARNING: You have some share names that are longer than 8 chars These may give errors while browsing or may not be accessible to some older clients Press enter to see a dump of your service definitions # Global parameters [global] coding system = client code page = 850 code page directory = /usr/share/samba/codepages workgroup = HERTZOGEDV ...
In diesem Beispiel wurden in der Sektion print$ zwei Tippfehler gefunden: »broseable« und »ys«. testparm kennt
verschiedene Optionen:
Option
Beschreibung
-L
Setzt den Wert des %L-Makros auf Servername. Dies ist beim Testen von include-Dateien, die mit dem %L-Makro angegeben wurden, nützlich.
servername -s
Ohne diese Option verlangt der Befehl, dass nach der Ausgabe der Dienstenamen die (¢)-Taste gedrückt wird.
-x
Gibt nur Parameter zurück, die keine Vorgabewerte haben
Tab. 17.17: Die Optionen des Programms testparm
17.3.3
Passwortsicherheit unter Samba
Zu Beginn wurden vom Windows-SMB-Protokoll (bis Windows 95) von Samba unverschlüsselte Passwörter verwendet. Für Windows 95 gibt es inzwischen ein Update für die Verwendung von verschlüsselten Passwörtern und alle neueren Windows-Versionen verwenden grundsätzlich verschlüsselte Passwörter. Der SambaServer und die Clients können folgende Authentifizierungsmöglichkeiten verwenden:
826
쮿
Die Datei smbpasswd mit den verschlüsselten Passwörtern.
쮿
LDAP zur Passwortadministration.
쮿
Keine verschlüsselten Passwörter verwenden; dies kann in der Microsoft Windows Registry eingestellt werden und vermindert die Sicherheit.
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Standardmäßig enthält die Datei smb.conf in der Sektion global den Eintrag encrypt passwords = yes, wodurch Samba die von Windows verschlüsselten Passwörter interpretieren kann. Dadurch wird Samba auch sicherer, denn das Netzwerk kann von so genannten Packet-Sniffern-Programmen abgehört werden, die im Klartext übertragene Passwörter ausfindig machen. Gegebenenfalls können Sie in der Konfigurationsdatei auch noch folgenden Eintrag hinterlegen: smb passwd file = /etc/samba/smbpasswd.
Benutzer und Passwörter für Samba mit smbpasswd anlegen Unter SUSE Linux können mit Hilfe des Befehls smbpasswd neue Benutzer und ihre Passwörter in die Datei /etc/samba/smbpasswd eingetragen werden. Die Syntax des Befehls lautet: # smbpasswd -option(en) benutzername
Der Befehl kennt folgende wichtige Optionen: Option
Beschreibung
-a
Diese Option legt fest, dass der angegebene Benutzername in die Datei smbpasswd mit dem eingegebenen Passwort eingetragen werden soll. Der Benutzer muss aber bereits auf dem System angelegt sein.
-d
Diese Option legt fest, dass der angegebene Benutzername in der Datei smbpasswd deaktiviert werden soll.
-D
Dieser Wert legt fest, wie viele Einzelheiten über die Aktivitäten von smbpasswd in die Protokolldateien geschrieben werden. Je höher der Wert, desto mehr Einträge. Der Wert kann zwischen 0 und 10 liegen, 0 ist Standard und speichert nur kritische Fehler und ernste Warnungen.
debuglevel
-e
Diese Option legt fest, dass der angegebene Benutzername in der Datei smbpasswd wieder aktiviert werden soll, wenn das Konto zuvor deaktiviert wurde.
-L
Lokaler Modus
-n
Diese Option legt fest, dass für den angegebenen Benutzernamen das Passwort in der Datei smbpasswd auf ein leeres Passwort zurückgesetzt werden soll.
-r
Mit dieser Option kann ein Benutzer festlegen, auf welchem Rechner er sein Passwort ändern möchte. Standardmäßig geht smbpasswd vom lokalen Host aus.
remote-host -R
resolve-order
-s
Mit dieser Option kann der Benutzer festlegen, welche Dienste bei der Namensauflösung verwendet werden, wenn der NetBIOS-Name des zu verbindenden Rechners gesucht wird. Mögliche Werte sind lmhosts, host, wins und bcast. Stiller Modus
Tab. 17.18: Die Optionen des Befehls smbpasswd
827
magnum
Samba einrichten
Option
Beschreibung
-U
Diese Option kann nur zusammen mit der Option -r verwendet werden. Wenn ein Passwort auf einem Remote-Rechner geändert wird, kann mit ihrer Hilfe der Benutzername auf diesem Rechner definiert werden, dessen Passwort geändert wird. Auf diese Weise können Benutzer mit verschiedenen Benutzernamen auf verschiedenen Systemen ihre Passwörter ändern.
benutzername
-x
Diese Option legt fest, dass der angegebene Benutzername aus der Datei smbpasswd entfernt werden soll.
Tab. 17.18: Die Optionen des Befehls smbpasswd (Forts.)
Zum Beispiel: # smbpasswd -a ger New SMB password: Retype new SMB password: Added user ger.
Das Ergebnis sieht wie folgt aus: # more /etc/samba/smbpasswd # This file is the authentication source for samba. You add password # information with the smbpasswd or smbadduser command. ... anna:500:D75D9A0BA671B4E9:DE3E9E5D19BFED7F49634D5BA96B679D75B8A7AE8D29FFFB:[UX ]:LCT-4288E618: berta:501:D75D9A0BA678A7AE89:DE3E9E5D19BFED7F49634D5B1B4E96B679D75B AD29FFFB:[UX ]:LCT-4288E626: root:0:D75D9B8A7AE89:DE3E9E5D19BFED7F49634D5BAD29 A0BA671B4E96B679D75FFFB:[DUX ]:LCT-4288E601: ger:502:7725B5B51404EE:527C7EAB2044A186F03212C14B1E9EAAD3B43531FE52F4D883:[UX ]:LCT-431DBE86:
Beachten Sie, dass die Benutzer, die für Samba angelegt werden, bereits als Benutzer auf dem Samba-Serversystem vorhanden sein müssen. Unter SUSE Linux wird durch die Konfigurationsdatei /etc/sysconfig/samba bestimmt, welcher Authentifizierungsmechanismus, ldap oder classic, verwendet wird: # cat /etc/sysconfig/samba ## Path: Network/File systems/Samba ## Description: Samba configuration ## Type: list(classic,ldap) ## Default: classic ## Config: samba ## ServiceRestart: nmb, winbind, smb # Set the Samba Security Authentication Mechanism to "classic" or "ldap". # Classic in this context is authentication via /etc/samba/smbpasswd. SAMBA_SAM="classic"
828
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Sambas Sicherheitslevel Samba kennt vier verschiedene Sicherheitslevel, um Benutzer zu authentifizieren. Jeder Benutzer benötigt ein Passwort, um sich mit einer Freigabe zu verbinden, die keinen Gastzugang anbietet. Die Sicherheitslevel legen fest, wie Samba mit einem Passwort umgeht. Das Sicherheitslevel wird mit der Option security in der Datei smb.conf hinterlegt, zum Beispiel security = user. Die vier Sicherheitslevel sind:
쮿
share: Für jede Freigabe kann unter Windows ein eigenes Passwort festgelegt werden und jeder Benutzer, der das Passwort kennt, kann auf die Freigabe zugreifen. Wenn zum Beispiel eine Freigabe buchhaltung existiert, muss bei diesem Sicherheitslevel auf dem Samba-Server ein Benutzer vorhanden sein, der entsprechende Rechte auf die Freigabe hat und ein Passwort besitzt. Wenn ein Windows-Benutzer nun das Passwort kennt, kann er mit den Rechten des angelegten Benutzers auf die Freigabe zugreifen, zum Beispiel:
[buchhaltung] comment = Buchhaltungsverzeichnis path = /abteilung/buchhaltung guest ok = no writeable = yes username = konto
쮿
user: Dieses Sicherheitslevel ist Standard. In diesem Fall wird für jede Freigabe festgelegt, dass die in einer Liste aufgeführten Benutzer auf die Freigabe zugreifen können. Wenn im folgenden Beispiel einer der Benutzer anna, berta oder chris auf die Freigabe einkauf zugreift, prüft Samba, ob der vom Client verwendete Benutzername und das Passwort mit dem Linux-Benutzer übereinstimmen. Es ist auch möglich, Gastbenutzer zuzulassen oder Benutzer bewusst auszusperren, zum Beispiel denis und emil:
[einkauf] comment = Einkaufsverzeichnis path = /abteilung/einkauf guest ok = yes writeable = yes valid users = anna, berta, chris invalid users = denis, emil
쮿
server: Dieses Sicherheitslevel ist eine Variante von user, aber die Benutzer werden in diesem Fall nicht vom Samba-Server authentifiziert, sondern dieser befragt stattdessen einen Passwort-Server. Dazu ist folgender Eintrag in der Datei smb.conf notwendig, um zum Beispiel die Passwort-Server sol und luna festzulegen:
[global] security = server password server = sol luna
쮿
domain: Dieses Sicherheitslevel verwendet wie server zur Authentifizierung einen anderen Server, in diesem Fall einen Domain Controller. Wenn zum Beispiel der Rechner windows der Primary Domain Controller der Domäne hertzog-edv.de
829
magnum
Samba einrichten
ist, wird er mit dem Befehl smbpasswd -j windows -r hertzog-edv.de in diese Domäne eingebunden. Die Datei smb.conf muss dann noch folgenden Eintrag enthalten: [global] workgroup = hertzog-edv.de security = domain domain logins = yes password server = windows
17.3.4
Samba-Server starten und anhalten
Unter SUSE Linux können Sie den Samba-Server manuell zu Testzwecken über die Run-Control-Skripte smb und nmb starten, anhalten und sich den Status ausgeben lassen, zum Beispiel: # /etc/init.d/smb start Starting Samba SMB daemon # /etc/init.d/nmb start Starting Samba NMB daemon # /etc/init.d/smb status Checking for Samba SMB daemon # /etc/init.d/nmb status Checking for Samba NMB daemon # /etc/init.d/smb stop Shutting down Samba SMB daemon # /etc/init.d/nmb stop Shutting down Samba NMB daemon
done done running running done done
Fedora Core Linux startet und stoppt gleichzeitig mit dem smb-Daemon auch den nmb-Daemon, das heißt, Sie müssen hier nur den smb-Daemon starten und stoppen. Bei Fedora Core Linux können Sie den Samba-Server manuell zu Testzwecken auch starten, anhalten und sich den Status ausgeben lassen, zum Beispiel: # /sbin/service smb start # /sbin/service smb stop # /sbin/service smb status Unter Debian GNU/Linux heißt das Run-Control-Skript /etc/init.d/samba. Wenn Sie Samba permanent betreiben möchten, sollten Sie die Daemonen bereits beim Booten über Run-Control-Skripte starten. Dies können Sie mit dem Befehl chkconfig oder über die grafischen Oberflächen der Linux-Derivate einrichten (vergleiche Kapitel 12).
17.3.5
Samba-Client und Samba-Server verbinden
Linux-Rechner können sowohl Samba-Server als auch Samba-Clients sein. Auf dem Samba-Client gemountete Freigaben werden unter Linux wie jeder Mountvorgang transparent in den Verzeichnisbaum integriert und die normalen Unix-Befehle können darauf ausgeführt bzw. grafische Dateimanager verwendet werden. Wenn ein Windows-Rechner der Samba-Client ist, müssen Sie nur im Windows Explorer im Menü EXTRAS - NETZWERKLAUFWERK VERBINDEN die Samba-Freigabe unter einem Laufwerksbuchstaben einbinden, zum Beispiel:
830
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
LAUFWERKSBUCHSTABE: ORDNER:
E: //servername/freigabe
Der Befehl smbmount Um eine Samba-Freigabe zu mounten, verwenden Sie den Befehl smbmount. Die Syntax des Befehls lautet: # smbmount freigabe mountpoint [-o option(en)]
Die Optionen des Befehls werden als durch Kommata getrennte Liste von Wertepaaren angegeben. Die wichtigsten sind: Option
Beschreibung
credentials
Definiert eine Datei, die einen Benutzernamen und/oder ein Passwort enthält. Das Dateiformat ist: Benutzername = wert Passwort = wert
Das ist sicherer, als Passwörter im Klartext in einer Datei wie zum Beispiel /etc/fstab zu speichern, denn Sie können sie mit den entsprechenden Rechten
absichern. debug
Definiert die Debug-Ebene, um Probleme mit Samba-Verbindungen ausfindig zu machen. Standard ist 4.
dmask
Definiert die Dateimaske, die die Rechte von entfernten Verzeichnissen im lokalen Dateisystem haben. Sie entspricht nicht der umask, sondern legt die wirklichen Rechte für die Verzeichnissen fest. Der Vorgabewert leitet sich von der aktuellen umask ab.
fmask
Definiert die Dateimaske, die die Rechte von entfernten Dateien im lokalen Dateisystem haben. Sie entspricht nicht der umask, sondern legt die wirklichen Rechte für die Dateien fest. Der Vorgabewert leitet sich von der aktuellen umask ab.
gid
Definiert die UID für alle Dateien des gemounteten Dateisystems
guest
Definiert, dass nicht nach einem Passwort gefragt wird
ip
Definiert den Zielrechner oder die IP-Adresse des Zielrechners
netbiosname
Definiert den NetBIOS-Namen. Standardmäßig ist das der lokale Rechnername.
password
Definiert das Samba-Passwort. Standardmäßig wird die Umgebungsvariable PASSWD benutzt. Wird kein Passwort gefunden, fragt smbmount nach einem Passwort, wenn nicht die Option guest verwendet wird.
port
Definiert die Remote-Samba-Portnummer. Standard ist 139.
ro
Definiert, dass nur lesbar gemountet wird
rw
Definiert, dass lesbar und schreibbar gemountet wird
uid
Definiert die UID für alle Dateien des gemounteten Dateisystems
Tab. 17.19: Optionen des Befehls smbmount
831
magnum
Samba einrichten
Option
Beschreibung
username
Definiert den Benutzernamen für die Verbindung. Standardmäßig wird die Umgebungsvariable USER verwendet.
workgroup
Definiert die Arbeitsgruppe
Tab. 17.19: Optionen des Befehls smbmount (Forts.)
Im folgenden Beispiel wird die Freigabe projekt auf dem Samba-Server sol für den Benutzer ger in dem Verzeichnis projekt-xy gemountet: # smbmount //sol/projekt /projekt-xy -o username=ger%passwd
Alternativ ist das auch mit dem Befehl mount möglich: # mount -t smbfs //sol/projekt /projekt-xy -o username=ger%passwd
Ab Samba 3 gibt es den Befehl smbmnt, der von smbmount aufgerufen wird, wobei das SetUID-Bit gesetzt ist. Auf diese Weise kann auch ein normaler Benutzer Freigaben per Samba mounten.
Der Befehl smbumount Ein per Samba gemountetes Verzeichnis kann mit dem Befehl ungemountet werden. Die Syntax des Befehls lautet:
smbumount
wieder
# smbumount mountpoint
Alternativ können Sie natürlich auch den Befehl umount verwenden.
Der Befehl smbstatus Der Befehl zeigt an, welche Verbindungen aktuell zu einem Samba-Server aufgebaut sind. Die Syntax des Befehls lautet: # smbstatus [-option(en)]
Die wichtigsten Optionen des Befehls lauten: Option
Beschreibung
-b oder --brief
Kurze Ausgabe
-d oder --debug=debuglevel
smbpasswd in die Protokolldateien geschrieben werden. Je höher der
-L oder --locks
Es werden nur Sperren aufgelistet.
-l oder --logfile=logfile
Definiert den Namen der Protokoll- bzw. Debugging-Datei, wobei die Dateierweiterung .client angefügt wird
-p oder --processes
Der Befehl gibt eine Liste von smbd-Prozessen aus und beendet sich.
Dieser Wert legt fest, wie viele Einzelheiten über die Aktivitäten von Wert, desto mehr Einträge. Der Wert kann zwischen 0 und 10 liegen, 0 ist Standard und speichert nur kritische Fehler und ernste Warnungen.
Tab. 17.20: Optionen des Befehls smbstatus
832
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Option
Beschreibung
-s konfdatei
Gibt die Datei an, die die Konfigurationsangaben für den Server enthält
-S oder --shares
Nur Freigaben werden aufgelistet.
-u oder --user=benutzername
Nur Informationen zum angegebenen Benutzernamen werden angezeigt.
-V
Ausgabe der Versionsnummer
-v oder --verbose
Ausführliche Ausgabe
Tab. 17.20: Optionen des Befehls smbstatus (Forts.)
Im folgenden Beispiel wird der Befehl ohne Optionen verwendet: # smbstatus Samba version 3.0.7-5-SUSE Service uid gid pid machine ---------------------------------------------IPC$ nobody nobody 2318 pc3w2k 21:03:19 2005 network her users 2318 pc3w2k 10:43:13 2005 IPC$ her users 2318 pc3w2k 11:45:02 2005 network her users 2318 pc3w2k 21:03:19 2005
(192.162.175.141) Tue Sep 6 (192.162.175.141) Tue Sep 6 (192.162.175.141) Tue Sep 6 (192.162.175.141) Tue Sep 6
Locked files: Pid DenyMode Access R/W Oplock Name -------------------------------------------------------------2318 DENY_NONE 0x2019f RDWR EXCLUSIVE+BATCH /home/networkdata//Firma/her/autor/mut/magnum-linux/~WRL1098.tmp 18:21:37 2005 2318 DENY_NONE 0x2019f RDWR EXCLUSIVE+BATCH /home/networkdata//Firma/her/autor/mut/magnum-linux/~WRL3080.tmp 20:01:10 2005 ...
Tue Sep 6 Tue Sep 6
Der Befehl smbclient Der Befehl ist der Samba-Client unter Linux, das heißt, Sie können damit auf Dateidienste zugreifen, die Samba-Server anbieten. Die Syntax des Befehls lautet: # smbclient [-option(en)]
Die wichtigsten Optionen des Befehls lauten: Option
Beschreibung
Dienstname
Definiert den Namen des Dienstes, der auf dem Server verwendet werden soll, in der Form //server/dienst
Passwort
Definiert das Passwort, das für den Zugriff auf den angegebenen Dienst auf dem angegebenen Server notwendig ist
Tab. 17.21: Optionen des Befehls smbclient
833
magnum
Samba einrichten
Option
Beschreibung
-R resolve-order
Mit dieser Option wird festgelegt, welche Dienste bei der Namensauflösung verwendet werden, wenn der NetBIOS-Name des zu verbindenden Rechners gesucht wird. Mögliche Werte sind lmhosts, host, wins und bcast.
-p port
Definiert die TCP-Portnummer für Verbindungen zum Server. Standard ist 139.
-I ip-adresse
Definiert die IP-Adresse des Servers, mit dem eine Verbindung aufgebaut wird
-E
Definiert, dass Meldungen auf die Standardfehlerausgabe (stderr) anstatt auf die Standardausgabe (stdout) geschrieben werden
-L server
Zeigt an, welche Dienste auf einem Samba-Server zur Verfügung stehen
-V
Ausgabe der Versionsnummer
-s konfdatei
Gibt die Datei an, die die Konfigurationsangaben für den Server enthält
-d oder --debug=debuglevel
Dieser Wert legt fest, wie viele Einzelheiten über die Aktivitäten von smbpasswd in die Protokolldateien geschrieben werden. Je höher der Wert, desto mehr Einträge. Der Wert kann zwischen 0 und 10 liegen, 0 ist Standard und speichert nur kritische Fehler und ernste Warnungen.
-l oder --logfile=logfile
Definiert den Namen der Protokoll- bzw. Debugging-Datei, wobei die Dateierweiterung .client angefügt wird.
-N
Unterdrückt die normale Passwortabfrage des Clients beim Benutzer. Sinnvoll bei Diensten, die keine Passwörter brauchen
-A oder --authfile=filename
Gibt eine Datei an, aus der der Benutzername und das Passwort für eine Verbindung entnommen werden, in folgendem Dateiformat: username = wert password = wert domain = wert
Die Dateirechte sollten so gesetzt werden, dass nicht autorisierte Zugriffe verhindert werden. -U oder --user= benutzername[%passwort]
Definiert den Samba-Benutzernamen bzw. den Benutzernamen und das Passwort. Wird das Passwort an dieser Stelle nicht angegeben, wird danach gefragt.
-W oder --workgroup=domäne
Definiert die Samba-Domäne für den Benutzernamen.
Tab. 17.21: Optionen des Befehls smbclient (Forts.)
In folgendem Beispiel wird überprüft, welche Dienste ein Samba-Server anbietet: # smbclient -U% -L localhost added interface ip=192.165.174.134 bcast=192.165.174.255 nmask=255.255.255.0 Domain=[HERTZOGEDV] OS=[Unix] Server=[Samba 3.0.7-5-SUSE] Sharename Type Comment -----------------network Disk Hertzog EDV Networkdata print$ Disk Printer Drivers hplj1200ps Printer HP Laserjet 1200 Series Postscript Server lp Printer hplj1200raw Printer
834
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
IPC$ ADMIN$
IPC Disk
IPC Service (Samba Server Suse Linux (PDC)) IPC Service (Samba Server Suse Linux (PDC))
Server --------PC43SLI11SMB PC7W2K
Comment ------Samba Server on Suse Linux (PDC)
Workgroup --------HERTZOG-EDV.DE HERTZOGEDV
Master ------PC9LSU PC4SLI11SMB
17.3.6
Grafische Konfiguration mit SWAT
Um mit dem grafischen Tool SWAT Samba zu konfigurieren, muss der Dienst zuerst aktiviert werden. Anschließend muss xinetd die Konfiguration neu einlesen: # cd /etc/xinet.d # vi swat # SWAT is the Samba Web Administration Tool. service swat { socket_type = stream protocol = tcp wait = no user = root server = /usr/sbin/swat only_from = 127.0.0.1 log_on_failure = USERID disable = no } # pkill -HUP xinetd
Debian GNU/Linux 3.1 verwendet standardmäßig noch den Dienst inetd. Hier muss in der Datei /etc/services der Eintrag swat 901/tcp und in der Datei /etc/inetd.conf der Eintrag swat stream tcp nowait.400 root /usr/bin/swat swat ergänzt werden. Anschließend muss inetd mit dem Befehl pkill -1 inet seine Konfiguration neu einlesen. Anschließend kann SWAT in einem Webbrowser über die Adresse http://localhost:901 gestartet werden. Zuerst werden Sie nach dem Benutzernamen und dem Passwort gefragt:
Bild 17.12: Authentifizierung bei SWAT
835
Samba einrichten
magnum
Dann wird Ihnen die SWAT-Oberfläche angezeigt. SWAT kann entweder über die angezeigten Schaltflächen oder über die Hyperlinks der Startseite konfiguriert werden:
Bild 17.13: Begrüßungsbildschirm von SWAT
Wenn Sie auf die Schaltfläche GLOBAL klicken, können Sie die Sektion global konfigurieren:
Bild 17.14: Globale Samba-Parameter einstellen
836
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Wenn Sie das Menü mit der Schaltfläche SHARES wechseln, können Sie bestehende Freigaben bearbeiten bzw. löschen oder mit CREATE SHARE eine neue Freigabe anlegen:
Bild 17.15: Freigaben bearbeiten oder anlegen
Wenn Sie auf die Schaltfläche PRINTERS klicken, können Sie die Sektion oder pdf bearbeiten oder neue Freigaben zu diesen anlegen:
printer
Bild 17.16: Drucker mit SWAT konfigurieren
837
Samba einrichten
magnum
Der Samba-Konfigurationsassistent entfernt alle Kommentare und Standardvorgaben. Er kann über SAMBA CONFIGURATION WIZARD aktiviert werden:
Bild 17.17: Samba Configuration Wizard von SWAT
Mit der Schaltfläche STATUS können Sie sich den aktuellen Samba-Status anzeigen lassen und die für Samba notwendigen Daemonen starten oder anhalten:
Bild 17.18: Samba-Status anzeigen mit SWAT
838
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Über VIEW können Sie sich die Konfigurationsdatei lassen:
smb.conf
im Original anzeigen
Bild 17.19: Anzeige der Konfigurationsdatei smb.conf
Mit Hilfe der Schaltfläche PASSWORD können Sie für Samba-Benutzer Passwörter festlegen oder ändern bzw. Benutzer anlegen oder löschen:
Bild 17.20: Benutzer- und Passwortverwaltung unter SWAT
SWAT kann auch von normalen Benutzern aufgerufen werden. Diese haben eingeschränkte Möglichkeiten, können aber zum Beispiel ihr Passwort selbst ändern.
839
magnum
Samba einrichten
17.3.7
Grafische Konfiguration mit YaSt
Unter YaST können Sie die Samba-Konfiguration mit Hilfe des Menüs NETZWERKDIENSTE - SAMBA-SERVER einrichten. In der Registerkarte START können Sie angeben, dass die Samba-Daemonen beim Booten gestartet werden sollen:
Bild 17.21: Samba-Konfiguration unter YaST
Wenn Sie in die Registerkarte SHARES wechseln, können Sie sich die vorhandenen Freigaben anzeigen lassen. Über HINZUFÜGEN ist es möglich, neue Freigaben anzulegen, mit BEARBEITEN oder LÖSCHEN können Sie die markierte Freigabe ändern bzw. löschen:
Bild 17.22: Samba-Freigaben mit YaST bearbeiten
840
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Mit der Schaltfläche FILTER können Sie auswählen, ob die System-Freigaben angezeigt werden sollen oder nicht. Wenn nicht, wählen Sie DO NOT SHOW SYSTEM SHARES:
Bild 17.23: Filterfunktion bei der Anzeige der Samba-Freigaben
Wenn Sie auf BEARBEITEN klicken, können Sie die Einstellungen der markierten Freigabe anzeigen und ändern:
Bild 17.24: Samba-Freigabe ändern
Jede Option kann über die Schaltfläche BEARBEITEN verändert und mit LÖSCHEN entfernt werden. Neue Optionen können mit HINZUFÜGEN ergänzt werden:
841
Samba einrichten
magnum
Bild 17.25: Optionen ändern, löschen oder ergänzen
Mit der Schaltfläche STATUS WECHSELN ist es möglich, Freigaben vorübergehend zu deaktivieren und später wieder zu aktivieren:
Bild 17.26: Samba-Freigaben deaktivieren und aktivieren
In der Registerkarte IDENTITÄT können Sie zunächst Grundeinstellungen durchführen, wie zum Beispiel den Namen für die Arbeitsgruppe/Domäne oder den Domain Controller angeben:
842
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Bild 17.27: Grundeinstellungen des Samba-Servers durchführen
Die Schaltfläche ERWEITERTE EINSTELLUNGEN bietet folgende Möglichkeiten:
Bild 17.28: Schaltfläche ERWEITERTE EINSTELLUNGEN
Wenn Sie GLOBALE EINSTELLUNGEN FÜR EXPERTEN wählen, wird die Konfiguration der Sektion global angezeigt und kann verändert werden:
Bild 17.29: Sektion global bearbeiten
843
Samba einrichten
magnum
Wenn Sie LDAP-EINSTELLUNGEN wählen, können Sie die Konfiguration mit LDAP einrichten:
Bild 17.30: LDAP-Samba-Server einrichten
Wenn Sie QUELLEN FÜR DIE BENUTZER-AUTHENTIFIKATION wählen, können Sie andere Server zur Authentifizierung der Benutzer auswählen:
Bild 17.31: Quellen für die Benutzerauthentifizierung auswählen
844
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
17.3.8
Grafische Konfiguration mit Fedora Core Linux
Unter Fedora Core Linux können Sie die Samba-Konfiguration ebenfalls grafisch durchführen. Dazu rufen Sie in einem Terminalfenster den Befehl system-configsamba & auf.
Bild 17.32: Grafische Samba-Konfiguration mit Fedora Core Linux
Wenn Sie auf SHARE HINZUFÜGEN klicken, können Sie eine neue Freigabe einrichten. Wenn Sie eine bereits angelegte Freigabe markieren, klicken Sie auf EIGENSCHAFTEN, um sie zu bearbeiten, bzw. auf LÖSCHEN, um sie zu entfernen.
Bild 17.33: Samba-Freigabe bearbeiten oder neu anlegen
Nach den Basisangaben, wie zum Beispiel dem Freigabenamen, klicken Sie auf die Registerkarte ZUGANG, um festzulegen, welche Benutzer auf die Freigabe zugreifen dürfen:
845
Samba einrichten
magnum
Bild 17.34: Benutzer für die Freigabe zulassen
Im Menü EINSTELLUNGEN - SERVER-EINSTELLUNGEN können Sie noch einige Basiseinstellungen definieren, wie zum Beispiel den Namen der Arbeitsgruppe:
Bild 17.35: Basiseinstellungen festlegen
Wenn Sie auf die Registerkarte SICHERHEIT klicken, können Sie die Authentifizierungsmethode, die Passwortverschlüsselung und den Gastzugang definieren:
Bild 17.36: Sicherheitseinstellungen festlegen
846
Kapitel 17 · Netzwerke mit NFS oder Samba verbinden
Über das Menü EINSTELLUNGEN - SAMBA-BENUTZER können Sie neue Benutzer anlegen und bestehende Benutzer ändern oder löschen:
Bild 17.37: Samba-Benutzer bearbeiten
Wenn Sie auf BENUTZER HINZUFÜGEN klicken, müssen Sie für einen neuen SambaBenutzer den Unix- und Windows-Benutzernamen sowie das Samba-Passwort festlegen:
Bild 17.38: Neuen Samba-Benutzer anlegen
847
18 Namensdienste »Name ist Schall und Rauch.« – Johann Wolfgang von Goethe Dieses Kapitel beschreibt, was Namensdienste oder so genannte Name Services oder Directory Services sind und welche Arten von Namensdiensten es gibt. Sie erhalten jeweils einen kurzen Überblick über die Namensdienste DNS und NIS. Sie lernen außerdem die Datei /etc/nsswitch.conf kennen, die den Zugriff auf Namensdienste regelt. Auch dieses Kapitel kann wiederum nur eine Einführung zu Namensdiensten darstellen. Zu den Themen NIS+ und LDAP, die hier nicht behandelt werden, existiert eine umfangreiche Literatur. NIS+ ist ein proprietärer Namensdienst der Firma Sun Microsystems, für den unter Linux nur Clients angelegt werden können. LDAP (Lightweight Directory Access Protocol) ist ein standardisierter Directory Service, der den Verwaltungsaufwand in einem Netzwerk deutlich verringert, indem gemeinsame Regeln für Objektzugriffe, Namensraumstrukturierung, Autorisierung, Authentifizierung und Konfiguration von zusätzlichen Attributen für alle beteiligten Systeme definiert werden. Weitere Informationen finden Sie unter http://www.openldap.org.
18.1 Einführung Mit Hilfe von Namensdiensten lassen sich Informationen über in einem Netzwerk zusammengefasste Rechner zentral verwalten. Der Verwaltungsaufwand wird dabei erheblich verringert, wenn administrative Daten, wie zum Beispiel Benutzerkonten, IP-Adressen oder Automounter-Informationen, auf einem einzigen Rechner, dem so genannten Nameserver, zur Verfügung gestellt werden. Dadurch ist es nicht mehr notwendig, auf jedem einzelnen Rechner des Netzwerks dieselben Informationen zu pflegen. Der Einsatz eines Namensdienstes bietet folgende Vorteile:
쮿
Die Datenbanken lassen sich einfacher verwalten, da diese nur auf einem Rechner administriert werden müssen und auf diese Weise auch die Informationen im Netzwerk konsistent bleiben.
쮿
Die Änderungen der Datenbanken werden für alle Clients gleichzeitig wirksam und auch von allen Clients wahrgenommen.
쮿
Die Fehleranfälligkeit bzw. die Nichtverfügbarkeit kann durch den Einsatz von Replica- oder Backupservern verringert werden, die jeweils eine Kopie der Datenbank des Master-Servers verwalten und auf diese Weise auch gleichzeitig die Netzwerklast besser verteilen.
Die Netzwerkclients stellen Anfragen nach den Informationen der Datenbanken der Nameserver. Die Antworten werden entweder aus den Daten des Cache-Speichers oder lokal von der Festplatte beantwortet. Eine zentrale Rolle spielt dabei die Datei /etc/nsswitch.conf (vergleiche Abschnitt 18.1.3), die den Zugriff auf die Informationen der Namensdienste steuert. Die folgende Abbildung zeigt den Ablauf von Anfragen an einen Nameserver:
849
magnum
Einführung
Bild 18.1: Anfragen an einen Nameserver
18.1.1
Arten von Namensdiensten
Es gibt unter Linux vier verschiedene Arten von Namensdiensten, die im weiteren Verlauf des Kapitels zum Teil ausführlicher erläutert werden:
쮿
den Domain Name Service (DNS), der in einem TCP/IP-Netzwerk verwendet wird, um die Rechnernamen in IP-Adressen und umgekehrt aufzulösen.
쮿
den Network Information Service (NIS), der die verschiedenen Daten eines Netzwerks, wie zum Beispiel Benutzerkonten, IP- und Rechneradressen, Drucker und Automounter-Informationen, zentral verwaltet.
쮿
den Network Information Service Plus (NIS+), der eine Erweiterung zu NIS darstellt, indem er eine hierarchische Organisation des Namensraums und eine Verteilung der Administration anbietet. Außerdem stehen bei NIS+ Möglichkeiten zur Authentifizierung zur Verfügung.
쮿
das Lightweight Directory Access Protocol (LDAP), das den Namensdienst durch einen Directory Service ergänzt. Normalerweise werden bei einem Namensdienst die Objekte immer über ihre Namen referenziert, während ein Directory Service auch die Verwaltung von Attributen einzelner Objekte und damit die Referenzierung über Attribute ermöglicht.
18.1.2
Der Befehl getent
Mit Hilfe des Befehls getent können Sie Informationen, die über Namensdienste hinterlegt sind, abfragen. Der Vorteil dieses Befehls liegt darin, dass Sie nicht mehr namensdienstspezifische Tools, wie zum Beispiel ypcat, niscat oder ldaplist, verwenden müssen. Darüber hinaus durchsucht der Befehl die Informationsquellen genau in der durch die Datei nsswitch.conf festgelegten Reihenfolge (vergleiche Abschnitt 18.1.3). Dabei werden gleichzeitig die definierten Codes und Aktionen der Statusmeldungen der Datei getestet, das heißt, der Befehl kann auch nicht ordnungsgemäß gesetzte Aktionen feststellen.
850
Kapitel 18 · Namensdienste
Der Befehl hat folgende Syntax: # getent datenbank [schlüssel]
Die Angabe datenbank ist der Name der zu prüfenden Datenbank, das heißt die Dateien passwd, group, hosts, services, protocols oder networks. Die Angabe schlüssel muss in einem geeigneten Format angegeben werden, damit die entsprechende Datenbank durchsucht werden kann, zum Beispiel kann sie der Name oder die UID eines Benutzers sein, wenn passwd durchsucht wird. Im folgenden Beispiel könnte der Befehl getent zuerst die lokalen Dateien und dann die NIS-Datenbank durchsuchen: # getent passwd root root:x:0:0:root:/root:/bin/bash # getent group 1003 einkauf::1003: # getent hosts suso1 192.168.174.41 suso1.hertzog-edv.de
18.1.3
Die Datei /etc/nsswitch.conf
In der Regel fragen Programme die notwendigen Benutzer- oder Rechnerinformationen über lokale Konfigurationsdateien ab. Diese lokalen Dateien können aber durch den Einsatz eines Namensdienstes ersetzt werden, wobei die Datei /etc/nsswitch.conf als zentrale Steuerdatei definiert, welcher Namensdienst bzw. in welcher Reihenfolge Namensdienste verwendet werden: # more /etc/nsswitch.conf # /etc/nsswitch.conf # An example Name Service Switch config file. This file should be # sorted with the most-used services at the beginning. # The entry '[NOTFOUND=return]' means that the search for an # entry should stop if the search in the previous entry turned # up nothing. Note that if the search failed due to some other reason # (like no NIS server responding) then the search continues with the # next entry. # Legal entries are: # compat Use compatibility setup # nisplus Use NIS+ (NIS version 3) # nis Use NIS (NIS version 2), also called YP # dns Use DNS (Domain Name Service) # files Use the local files # db Use the /var/db databases # [NOTFOUND=return] Stop searching if not found so far # For more information, please read the nsswitch.conf.5 manual page. # passwd: files nis # shadow: files nis # group: files nis ... passwd: compat group: compat shadow: compat hosts: networks:
files dns files dns
851
magnum
Einführung
services: rpc: ethers: netgroup: publickey: ...
files files files files files
Die Datei ist wie folgt aufgebaut: schlüsselwort:namensdienst [parameter] namensdienst [parameter] namensdienst [parameter]
Es können pro Schlüsselwort beliebig viele Namensdienste angegeben werden, die dann nacheinander abgefragt werden können. Mögliche Schlüsselwörter sind: Schlüsselwort
Beschreibung
aliases
Abfrage von Abkürzungen von Mailadressen
ethers
Abfrage von MAC- bzw. Ethernetadressen für RARP
group
Abfrage von Gruppennamen
hosts
Abfrage von Rechnernamen und deren IP-Adressen
netgroup
Abfrage einer netzwerkweiten Liste von Hosts und Benutzern, die für Zugriffsregeln verwendet wird
networks
Abfrage von Netzwerknamen
passwd
Abfrage von Benutzerkonten und Passwörtern
publickey
Abfrage von Passwörtern für Secure RPC
rpc
Abfrage von Programmnummern zu RPCs
services
Abfrage von Netzwerkdiensten
shadow
Abfrage von Benutzerpasswörtern
Tab. 18.1: Schlüsselwörter der Datei /etc/nsswitch.conf
Als Namensdienste können folgende Angaben verwendet werden: Namensdienst
Beschreibung
dns
Abfrage von Informationen über DNS (ausschließlich für den Eintrag hosts: gültig)
compat
Dient der Abwärtskompatibilität
db
Abfrage der Datenbank /var/db
files
Abfrage der lokalen Dateien
Tab. 18.2: Namensdienste der Datei /etc/nsswitch.conf
852
Kapitel 18 · Namensdienste
Namensdienst
Beschreibung
nis
Abfrage von Informationen über NIS
nisplus
Abfrage von Informationen über NIS+
Tab. 18.2: Namensdienste der Datei /etc/nsswitch.conf (Forts.)
Wenn auf die Namensdienste zugegriffen wird, können verschiedene Ergebnisse zustande kommen. Eventuell ist ein Dienst nicht verfügbar oder die benötigte Information ist nicht vorhanden, daher kann ein entsprechender Parameter definiert werden, der das Verhalten in einem solchen Fall definiert. Jeder der nachfolgend erläuterten Status kann entweder den Wert continue, das bedeutet, dass die nächste Quelle abgefragt werden kann, oder return annehmen, das heißt, die Suche soll abgebrochen werden. Die möglichen Status lauten: Status
Beschreibung
NOTFOUND
Die abgefragte Quelle enthält die gewünschte Information nicht. Das Standardverhalten lautet continue.
SUCCESS
Die abgefragte Quelle enthielt die gewünschte Information, das heißt, die Abfrage war erfolgreich. Das Standardverhalten lautet return.
TRYAGAIN
Die abgefragte Quelle ist verfügbar, aber antwortet nicht innerhalb der vorgegebenen Zeit, da sie beschäftigt ist. Das Standardverhalten lautet continue.
UNAVAIL
Die abgefragte Quelle ist nicht verfügbar. Das Standardverhalten lautet continue.
Tab. 18.3: Status der Namensdienste der Datei /etc/nsswitch.conf
Im nachfolgenden Beispiel wird zuerst nach der Datei /etc/hosts auf einem NISServer gesucht, wenn dieser nicht erreichbar ist, soll als Nächstes ein DNS-Server konsultiert werden. Findet dieser die gewünschte Information nicht, dann soll eine entsprechende Fehlermeldung ausgegeben werden. Ist er nicht erreichbar oder beschäftigt, dann soll die lokale Datei gelesen werden: hosts: nis [UNAVAIL=continue] dns [NOTFOUND=return] files
18.1.4
Der Name Service Cache Daemon (nscd)
Der Name Service Cache Daemon stellt für die Anfragen der meisten gebräuchlichen Namensdienste, nämlich für die Dateien passwd, group und hosts, einen Cache zur Verfügung. Er wird im Multiuser-Modus gestartet und kann mit Hilfe der Datei /etc/nscd.conf konfiguriert werden. Dort kann zum Beispiel für alle CacheDaten eine eigene Lebensdauer, die so genannte Time-to-Live, definiert werden. Wenn die lokale Datenbank, zum Beispiel /etc/resolv.conf, geändert wird (vergleiche Absatz 18.2.1), wird der Cache beim nächsten Aufruf von nscd ungültig. Die Datei shadow wird grundsätzlich nicht gecacht. Der Cache des nscd liegt im Hauptspeicher und nicht auf der Festplatte. Daher sollten Sie beachten, dass der Name Service Cache Daemon sehr viele Ressourcen verbrauchen kann, wenn Sie einen stark frequentierten Webserver betreiben.
853
magnum
Einführung
Der Daemon nscd wird nicht von jeder Linux-Distribution genutzt und ist daher nicht bei allen Distributionen standardmäßig installiert. Der Name Service Cache Daemon funktioniert gleichzeitig als sein eigenes Verwaltungstool. Wenn eine Instanz des nscd bereits läuft, werden Befehle der laufenden Version transparent übergeben. Der Daemon kann mit folgender Syntax gestartet werden: nscd [-f konfigdatei] [-g] [-e cachename, yes| no] [-i cachename]
Die Optionen haben folgende Bedeutung: Option
Beschreibung
-d oder --debug
Gabelt sich nicht und zeigt Meldungen auf dem aktuellen tty an
-f konfdatei
Veranlasst den nscd, seine Konfigurationsdaten aus der angegebenen Datei zu lesen
-g oder --statistic
Gibt die aktuelle Konfiguration und Statistiken an der Standardausgabe aus. Dies ist die einzige Option, die auch von normalen Anwendern ausgeführt werden kann.
-i oder --invalidate=tabelle
Macht den angegebenen Cache ungültig
-K oder --shutdown
Fährt den Server herunter
-S oder --secure=tabelle,yes
Verwendet einen separaten Cache für jeden Benutzer
Tab. 18.4: Optionen des nscd
Sie können den Name Service Cache Daemon jederzeit manuell dazu veranlassen, seinen Cache neu aufzubauen, indem Sie den Daemon stoppen und anschließend neu starten: # /etc/init.d/nscd stop # /etc/init.d/nscd start
Die Datei /etc/nscd.conf Diese Datei steuert das Cachen von Name-Service-Informationen für den nscd (Name Service Cache Daemon), und zwar der Dateien hosts, passwd und group. Die Datei sieht unter SUSE Linux zum Beispiel standardmäßig wie folgt aus: # # # # # # # # # # # #
854
cat /etc/nscd.conf /etc/nscd.conf An example Name Service Legal entries are: logfile debug-level threads max-threads server-user server-user is ignored stat-user reload-count
Cache config file. This file is needed by nscd. <maximum #threads to use> <user to run server as instead of root> if nscd is started with -S parameters <user who is allowed to request statistics> unlimited|
Kapitel 18 · Namensdienste
# paranoia # restart-interval # enable-cache <service> # positive-time-to-live <service> # negative-time-to-live <service> # suggested-size <service> <prime number> # check-files <service> # persistent <service> # shared <service> # Currently supported cache names (services): passwd, group, hosts ... enable-cache passwd yes positive-time-to-live passwd 600 negative-time-to-live passwd 20 suggested-size passwd 211 check-files passwd yes persistent passwd yes shared passwd yes enable-cache positive-time-to-live negative-time-to-live suggested-size check-files persistent shared
group group group group group group group
yes 3600 60 211 yes yes yes
enable-cache positive-time-to-live negative-time-to-live suggested-size check-files persistent shared
hosts hosts hosts hosts hosts hosts hosts
yes 600 0 211 yes no yes
Die Datei nscd.conf enthält die Konfigurationsinformationen für den nscd. Jede Zeile definiert entweder ein Attribut und einen Wert oder ein Attribut, einen CacheNamen und einen Wert. Die Felder werden entweder durch ein Leerzeichen oder einen Tabulatorsprung getrennt. Das Hashzeichen # leitet einen Kommentar ein. Wenn wie im oben gezeigten Beispiel das Caching für die Datei passwd aktiviert ist, ist ein neu angelegter Benutzer normalerweise innerhalb von 20 Sekunden im System bekannt. Die Angaben haben folgende Bedeutung: Option
Beschreibung
logfile debug-dateiname
Gibt den Namen der Datei an, in die DebuggingInformationen geschrieben werden sollen
debug-level wert
Setzt den gewünschten Debugging-Level. Die Angaben können von 0 (Standard) bis 10 reichen. Wenn diese Option verwendet wird, läuft der nscd im Vordergrund und nicht als Daemon.
enable-cache cachename wert
Aktiviert oder deaktiviert den angegebenen Cache. Der Wert kann entweder yes oder no lauten.
Tab. 18.5: Optionen des nscd
855
magnum
Domain Name Service (DNS)
Option
Beschreibung
positive-time-to-live cachename wert
Definiert die Time-to-Live für erfolgreiche Anfragen für den angegebenen Cache. Der Wert wird in ganzen Sekunden angegeben. Größere Werte erhöhen die Trefferquoten des Caches und reduzieren die Antwortzeiten, aber gleichzeitig wachsen Probleme mit der Cache-Kohärenz.
negative-time-to-live cachename wert
Definiert die Time-to-Live für erfolglose Anfragen für den angegebenen Cache. Der Wert wird in ganzen Sekunden angegeben. Dies kann zu deutlicher Performanceverbesserung führen, wenn es mehrere Dateien gibt, die zu UIDs gehören, die nicht in Systemdatenbanken stehen. Der Wert sollte niedrig gehalten werden, um Cache-Koheränz-Probleme zu vermeiden.
suggested-size cachename wert
Definiert die vorgeschlagene Anzahl von Hash-Zugriffen für den angegebenen Cache. Dieser Parameter sollte nur geändert werden, wenn die Anzahl von Einträgen im Cache die vorgeschlagene Größe um mehr als das Vier- oder Fünffache übersteigt. Da dies die interne Hash-Tabellengröße ist, sollte der Wert eine Primzahl bleiben, um eine optimale Effizienz zu gewährleisten.
check-files cachename wert
Aktiviert oder deaktiviert die Überprüfung nach Änderungen der Datei, die zum angegebenen Cache gehört. Wenn die Option aktiviert ist (Standard), dann veranlasst sie, dass der Cache innerhalb von 10 Sekunden ungültig wird. Diese Option kann deaktiviert werden, wenn Dateien niemals geändert werden, wodurch besonders bei NFS eine leichte Performanceverbesserung erreicht werden kann. Der Wert kann entweder yes oder no lauten.
Tab. 18.5: Optionen des nscd (Forts.)
18.2 Domain Name Service (DNS) DNS wird hauptsächlich für die Verwaltung von Rechnernamen eingesetzt, wobei die Verwaltungseinheiten Domains genannt werden. Er hat einen hierarchisch aufgebauten Namensraum mit einer baumartigen Struktur. Die Rechner werden in Domains eingeordnet und die Administration dieser Domains erfolgt durch einen oder mehrere Server. Einem Domain Name Server sind die Rechnernamen und IPAdressen von allen untergeordneten und übergeordneten Rechnern bekannt und er kann darüber Informationen an andere Rechner liefern. DNS wird häufig mit dem BIND-Daemon (Berkeley Internet Name Daemon) verwendet und im Internet eingesetzt. Wenn ein Netzwerk direkt an das Internet angebunden werden soll, muss DNS verwendet werden. Dazu verwendet man eine Internetadresse und einen DNS-Server. Eine Domain ist eine Rechnergruppe, die zu einer Verwaltungseinheit gehört. Die Namensbildung von Domainnamen erfolgt durch Punkte getrennt, wobei der Rechnername dem Domainnamen vorangestellt wird. Die Wurzel des Namensraums ist die root-Domain, die durch einen Punkt dargestellt wird. Darunter befinden sich die Top-Level-Domains, die durch die InterNIC verwaltet werden und wiederum Subdomains enthalten. Top-Level-Domains haben sowohl eine organisatorische Gliederung, zum Beispiel com, org, gov, mil, edu usw., als auch eine geografische Aufteilung, zum Beispiel de, fr, it usw. Im nachfolgenden Beispiel wird der Rechnername suso2.reutlingen.germany.xyz.com aufgelöst:
856
Kapitel 18 · Namensdienste
Bild 18.2: Hierarchischer Domainaufbau
Dieses hierarchische System ist eine große verteilte Datenbank, in der jeder Server einen Teil verwaltet. Es geht von den Root-Servern der Top Level Domains aus, die Informationen der darunter liegenden Domains bereitstellen. Es ist möglich, dass DNS-Server Namen cachen, DNS-Server, die die Informationen tatsächlich besitzen, werden daher autoritativ genannt. Ein Top-Level-Domain-Server ist für eine Top Level Domain (fr zum Beispiel) autoritativ, während dagegen ein Root-Server für die Root-Domain (».«) autoritativ ist. Die Root-Server delegieren weiter an die Top-Level-Domain-Server, diese wiederum an Second-Level-Domain-Server, diese an Third-Level-Domain-Server usw. Unterhalb der Top Level Domains gibt es dann beliebig viele weitere Domains, wobei eine Domain auch in Subdomains oder Hostrechner aufgeteilt werden kann. Auf Unix-/Linux-Systemen ist BIND (Berkeley Internet Name Domain) als DNS implementiert. Die neuere Version ist BIND9, die aber keine großen Syntaxunterschiede zu BIND8 aufweist. DNS besteht im Wesentlichen aus drei Komponenten:
쮿
dem Resolver, der einen Hostnamen bei einem Nameserver abfragt.
쮿
den Nameservern, die die Fragen nach Host- oder Domainnamen beantworten. Sie verwenden dazu entweder die eigene Datenbank, verweisen auf andere Nameserver oder fragen diese selbst ab.
쮿
dem Domänennamensraum
Wenn ein Resolver eine Anfrage an einen DNS-Server stellt, beginnt der DNS-Server, den angefragten Namen von hinten aufzulösen. Lautet die Anfrage zum Beispiel www.hertzog-edv.de, wird zuerst ein Root-Server nach den für de autoritativen DNS-Servern gefragt. Einer der angegebenen DNS-Server wird wiederum nach DNS-Servern für hertzog-edv.de gefragt und diese wiederum nach www.hertzogedv.de. Der jeweils weiterreichende DNS-Server ist der Forwarder, und falls irgendeine Antwort aus dem Cache eines Servers stammt, wird sie als nichtautoritativ markiert. DNS-Server, die zum Beispiel aus Belastungsgründen keine solchen rekursiven Resolver-Anfragen auflösen, können zu diesem Zweck nicht verwendet werden, wie zum Beispiel die Root-Server.
857
Domain Name Service (DNS)
magnum
Da jeder Nameserver für eine bestimmte Rechnergruppe zuständig ist, die Zone (oder Zone of Authority) genannt wird, gibt es drei verschiedene Arten von Nameservern:
쮿
Der Master-Server hält die Daten für die eigene Zone in Dateien auf der Festplatte.
쮿
Der Slave-Server fordert die Daten für die eigene Zone beim Master-Server an und speichert sie für eine bestimmte Zeit auf der Festplatte.
쮿
Der Caching-Only-Server ist für keine eigene Zone zuständig, sondern speichert Anfragen nur und sorgt so dafür, dass die Netzlast verringert wird und die Antworten schneller erfolgen.
In jeder Zone muss sich ein Master-Server und sollten sich mehrere Slave-Server befinden.
18.2.1
DNS-Konfigurationsdateien
Um DNS einzurichten, werden mehrere Konfigurationsdateien verwendet.
Die Datei /etc/nsswitch.conf Die Datei /etc/nsswitch.conf (vergleiche Abschnitt 18.1.3) wird verwendet, um die Reihenfolge der Methoden zur Namensauflösung festzulegen. Für DNS wird nur die Option hosts in dieser Datei verwendet. Standardmäßig wird diese Option konfiguriert, wenn kein NIS verwendet wird: # cat /etc/nsswitch.conf ... hosts: files dns ...
In diesem Fall wird zuerst die lokale Datei /etc/hosts nach den angefragten Informationen durchsucht, dann DNS verwendet.
Die Datei /etc/resolv.conf Diese Datei ist wie die Datei /etc/host.conf für die Auflösung von Rechnernamen durch die resolver-Bibliothek verantwortlich. Hier können die Nameserver, die DNS-Domain und eine Suchliste eingetragen werden. Es sollten immer mehrere Nameserver angegeben werden, wobei aber immer der erste Nameserver angefragt wird, außer dieser fällt aus. Bei Fedora Core Linux finden Sie diese Datei im Verzeichnis
/etc/sysconfig/net-
working/profiles/default.
Bei einigen Distributionen wird die Datei dynamisch verändert, daher sollten Sie beim Editieren vorsichtig sein. Die Datei enthält eine Liste von Schlüsselwörtern, die verschiedene Arten von Resolver-Informationen zur Verfügung stellen, dazu gehören folgende Konfigurationsanweisungen:
858
Kapitel 18 · Namensdienste
Anweisung
Bedeutung
nameserver
Definiert die IP-Adresse eines Nameservers (in Punktnotation), den der Resolver befragt. Es können bis zu drei Nameserver angegeben werden, die vom Resolver in der genannten Reihenfolge abgefragt werden. Wenn keine Nameserver-Einträge vorhanden sind, versucht der Resolver so lange einen Nameserver zu finden, bis die Abfragezeit endet.
domain
Definiert den lokalen Domänennamen. Die meisten Namensanfragen in dieser Domäne können kurze Namen verwenden, die sich auf die lokale Domäne beziehen.
search
Definiert die Suchliste für die Hostnamenssuche. Diese Liste wird normalerweise durch den lokalen Domänennamen bestimmt. Standardmäßig enthält er nur den Domänennamen. Dieses Standardverhalten können Sie ändern, indem Sie die gewünschten Domänensuchpfade auflisten, gefolgt von dem SuchSchlüsselwort, wobei die Angaben durch Leerzeichen oder Tabulatoren getrennt sind. Die meisten Resolver-Anfragen versuchen, jede Komponente des Suchpfads hintereinander zu verwenden, bis ein Treffer erzielt wurde. Die Suche wird abgebrochen, wenn kein Server für eine der Domänen zur Verfügung steht. Die Suchliste ist im Moment auf sechs Domänen und insgesamt 256 Zeichen begrenzt.
sortlist
Ermöglicht, dass die vom Resolver zurückgegebenen Adressen sortiert werden. Eine Sortierungsliste wird durch Paare von IP-Adressen-Netzwerkmasken definiert. Die Netzwerkmaske ist optional und standardmäßig die ursprüngliche Netzwerkmaske. Die IP-Adresse und die optionalen Netzwerkmaskenpaare werden durch Schrägstriche getrennt. Es können bis zu 10 Paare definiert werden, zum Beispiel: sortlist 130.155.160.0/255.255.240.0 130.155.0.0.
Tab. 18.6: Konfigurationsanweisungen von resolv.conf
Diese Datei enthält die Informationen, welcher Domäne der Rechner angehört (Zuordnung über das Schlüsselwort search), und die Adresse des Nameservers. Es ist möglich, mehrere Domänen anzugeben und mehrere Nameserver in einer jeweils separaten Zeile, die mit dem Schlüsselwort nameserver beginnt, aufzuführen. Wenn ein nicht voll qualifizierter Name aufgelöst werden soll, werden die einzelnen Einträge hinter dem Schlüsselwort search an diesen Namen angehängt, um eine voll qualifizierte Adresse zu erhalten. Die Datei /etc/resolv.conf kann zum Beispiel wie folgt aufgebaut sein: # more /etc/resolv.conf domain hertzog-edv.de nameserver 192.168.3.11 nameserver 192.168.4.17 search train.hertzog-edv.de transl.hertzog-edv.de hertzog-edv.de de
Zuerst wird in diesem Beispiel die DNS-Domain angegeben. Dann werden die zu verwendenden Nameserver in der Syntax nameserver ip-adresse einfach untereinander in jeweils einer Zeile aufgelistet. Sie können die IP-Adressen von bis zu drei DNS-Master-, Slave- oder Cache-only-Nameservern auflisten, die der Resolver befragen kann, um Anfragen aufzulösen. Zuletzt kommt eine Suchliste. Die Angabe search legt fest, welche Domänennamen an relative Hostnamen angehängt werden. Wenn ein Name nicht gefunden wird, wird zunächst der erste Teil der Suchliste angefügt, in diesem Beispiel train.hertzog-edv.de, dann der zweite Teil usw.
859
magnum
Domain Name Service (DNS)
18.2.2
Einen DNS-Nameserver konfigurieren
Auf einem Nameserver muss der Daemon named laufen, um Anfragen für Hosts in der eigenen Zone zu beantworten. Dieser Prozess weiß auch, wo sich die dazugehörigen Datenbankdateien befinden und wo Informationen außerhalb der eigenen Zone erhältlich sind. Dazu liest named seine Konfigurationsdatei named.conf, wenn er gestartet wird.
Die Datei /etc/named.conf Der Daemon named wird durch die Datei /etc/named.conf konfiguriert, sie enthält also alle Einstellungen, die den Nameserver BIND betreffen. Die Syntax der Datei orientiert sich an der Programmiersprache C, so wird zum Beispiel jede Anweisung durch einen Strichpunkt beendet. In verschiedenen Dateien des Verzeichnisses /var/lib/named befinden sich die Zonendaten, Rechnernamen, IP-Adressen usw. Die Datei kann in zwei Abschnitte unterteilt werden: den Abschnitt options, der allgemeine Einstellungen beinhaltet, und den Abschnitt zone mit den Einträgen für die einzelnen Domänen. Bei Debian Linux heißt die Datei /etc/bind/named.conf. Die wichtigsten Konfigurationsoptionen der Datei lauten: Option
Beschreibung
allow-query { any; };
Jeder darf eine Abfrage starten.
allow-transfer { 1.2.3/24; };
Nur Rechner des Netzbereichs 1.2.3.0/24 dürfen Zonentransfers durchführen.
allow-update { 1.2.3.4; };
Nur der Rechner 1.2.3.4 darf aktualisieren.
allow-update { none; };
Niemand darf aktualisieren.
check-names master fail;
Wenn die Zone fehlerhaft ist, wird abgebrochen.
check-names master warn;
Wenn die Zonen-Resource-Records falsch sind, wird nicht abgebrochen, sondern es wird nur eine Warnmeldung ausgegeben.
listen-on port 53 { 1.2.3.4; };
Es soll Port 53 der genannten Schnittstelle verwendet werden. Das ist zum Beispiel bei Dialup-Schnittstellen empfehlenswert, da diese nicht von Clients verwendet werden sollen.
notify yes;
Wenn die Datenbanken geändert werden, sollen die Slave-Server informiert werden.
query-source address * port 53;
Es soll Port 53 beim Senden verwendet werden. Dies ist hinter Firewalls empfehlenswert.
recursion no;
Keine rekursiven Abfragen möglich, bei Master-Servern empfehlenswert
Tab. 18.7: Optionen der Datei /etc/named.conf
860
Kapitel 18 · Namensdienste
Ein Ausschnitt der Datei kann zum Beispiel bei SUSE Linux wie folgt aufgebaut sein: # more /etc/named.conf options { # The directory statement defines the name server's working directory directory "/var/lib/named"; # Write dump and statistics file to the log subdirectory. The # pathenames are relative to the chroot jail. dump-file "/var/log/named_dump.db"; statistics-file "/var/log/named.stats"; # Enable the next entry to prefer usage of the name server declared # in the forwarders section. # forwarders { 217.5.100.129; 194.25.2.129; }; # forwarders { 194.25.2.129; 217.5.100.129; }; forwarders { 192.168.172.200; }; # forward first; forward only; ... }; # To configure named's logging remove the leading '#' characters of # the following examples. logging { ... # # Or log this kind alternatively to syslog. channel syslog_queries { syslog user; severity info; }; #
# Log general name server errors to syslog. channel syslog_errors { syslog user; severity error; }; category default { syslog_errors; }; ... }; # The following zone definitions don't need any modification. The # first one is the definition of the root name servers. The second # one defines localhost while the third defines the reverse lookup for # localhost. zone "." in { type hint; file "root.hint"; }; zone "localhost" in { type master; file "localhost.zone"; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0.zone"; }; # Include the meta include file generated by SuSEconfig.named. This # includes all files as configured in NAMED_CONF_INCLUDE_FILES from # /etc/sysconfig/named
861
Domain Name Service (DNS)
magnum
include "/etc/named.conf.include"; # You can insert further zone records for your own domains below or # create single files in /etc/named.d/ and add the file names to # NAMED_CONF_INCLUDE_FILES. zone "hertzog-edv.de" in { type master; file "master/hertzog-edv.de"; }; zone "172.165.193.in-addr.arpa" in { type master; file "master/172.165.193.in-addr.arpa"; };
Im Bereich options wird unter anderem angegeben, in welchem Verzeichnis die Zonendateien zu finden sind, wo sich die Statistik- und Dumpdateien befinden und welcher Rechner als Forwarder dient. Im Bereich logging wird festgelegt, wohin was protokolliert wird. Es folgt die Definition der Zonen, wobei jede Definition festlegt, welche Rolle der entsprechende Server für die Zone hat, zum Beispiel master. Auf einem Slave-Server muss eine Zonendefinition daher zum Beispiel wie folgt aussehen: zone "hertzog-edv.de" in { masters {193.165.172.17}; type slave; };
Der erste Zoneneintrag ».« legt die Root-Domain im Internet fest und verwendet den Typ .hint. Die Datei root.hint enthält also die Hinweise für die Root-Server. Sie ist in der Regel standardmäßig bei den meisten Linux-Distributionen bereits hinterlegt. Es folgt die Definition der Zone localhost vom Typ master, deren Datenbankdatei localhost.zone standardmäßig ebenfalls mit den meisten Linux-Distributionen ausgeliefert wird. Dasselbe gilt für die inverse Zone 0.0.127-in-addr.arpa mit der Datenbankdatei 127.0.0.zone. Diese ist für Namensauflösungen von IP-Adressen zuständig, die mit 127.0.0 beginnen. Die IP-Adressen werden umgekehrt geschrieben, um den inversen Namensraum nach Unternetzen strukturieren zu können. Im Abschnitt include werden dann eigene Zonen definiert, zum Beispiel hertzogedv.de als Typ master mit der Datenbankdatei in master/hertzog-edv.de. Außerdem ist eine weitere inverse Zone 172.165.193.in-addr.arpa definiert.
Die Datenbankdateien mit Resource Records Die verteilte DNS-Datenbank ist also in Zonen unterteilt, die von DNS-Servern versorgt werden. Eine in einer Datenbankdatei beschriebene Zone ist wiederum aus so genannten Resource Records aufgebaut und enthält die wirklichen Informationen über die Domain oder das Subnetz. Ein Resource Record hat folgenden Aufbau: [schlüssel] [zeit]
klasse typ inhalt
Als Schlüsselobjekt werden der Name der Domain oder des Hostrechners und dann die Zeitperiode angegeben, wie lange andere Server die erhaltenen Informationen zwischenspeichern dürfen. Es folgen die Klasse, die fast immer IN für Internet lautet, und der Typ des Records. Folgende Record-Typen sind möglich:
862
Kapitel 18 · Namensdienste
Typ
Beschreibung
SOA
Start of Authority; dieser Typ legt den Nameserver, die Mailadresse und die Vorgaben für die Lebenszeit von Schlüsselobjekten fest
NS
Nameserver; dieser Typ legt die Nameserver der Zone und von Subdomains fest
A
Address; dieser Typ legt die IP-Adresse der aufgeführten Hostnamen fest
CNAME
Canonical Name; dieser Typ legt den Alias für einen Host fest
MX
Mail Exchanger; dieser Name legt den Mailserver für einen Host fest
PTR
Pointer; dieser Typ legt einen Hostnamen für eine aufgeführte IP-Adresse fest (Zeiger auf einen Reverse Record)
Tab. 18.8: Record-Typen einer DNS-Datenbankdatei
Die Datenbankdatei für die Zone hertzog-edv.de kann nun zum Beispiel wie folgt aussehen: pc3li:/var/lib/named/master # more hertzog-edv.de $TTL 2W @ IN SOA pc3li.hertzog-edv.de. root.localhost. ( 2004021519 ; serial 2D ; refresh 4H ; retry 6W ; expiry 1W ) ; minimum IN NS pc3lsu.hertzog-edv.de. pc3li IN A 192.168.172.34 nb5lsu IN A 192.168.172.54 pc1w2k IN A 192.168.172.17 pc2lsu IN A 192.168.172.24 pc4w2k IN A 192.168.172.41 pc7xph IN A 192.168.172.72 rt200 IN A 192.168.172.200 printserver IN CNAME pc3li sambaserver IN CNAME pc3li nfs IN CNAME pc3li dsl IN CNAME rt200 www IN A 212.227.1.187 ftp IN A 212.227.1.187
Der erste Eintrag legt fest, wie lange andere Server die erhaltenen Informationen cachen dürfen, in diesem Beispiel zwei Wochen (2W). Der zweite Eintrag und erste richtige Resource Record ist Start of Authority (SOA), der definiert, dass der Daemon named dieses Rechners für diese Domain autoritativ ist. Durch das Zeichen @ wird festgelegt, dass der SOA-Record für die Domain in /etc/named.conf gültig ist. Es ersetzt den Namen der Domain, in unserem Beispiel ist @ = hertzog-edv.de. Das Objekt gehört zur Klasse Internet. @
IN SOA
pc3li.hertzog-edv.de. root.localhost. ( 2004021519 ; serial 2D ; refresh 4H ; retry 6W ; expiry 1W ) ; minimum
863
magnum
Domain Name Service (DNS)
Es folgen der Name des primären Nameservers pc3li.hertzog-edv.de und die Mailadresse des Zuständigen, wobei hier statt des Zeichens @ ein Punkt (.) verwendet wird: root.localhost = root@localhost. In Klammern folgen diese Angaben:
쮿
Die Seriennummer (serial) der Zonenversion, anhand der die Slave-Server feststellen können, wenn sich etwas geändert hat. Da die Seriennummer bei jeder Änderung aktualisiert werden muss, bietet es sich an, das Datumsformat JJJJMMTT und anschließend eine fortlaufende zweistellige Nummer zu verwenden bzw. mit einem bestimmten Datum in diesem Format zu beginnen und bei jeder Aktualisierung um eins hochzuzählen.
쮿
Die Informationen, wann von den Slave-Servern eine Aktualisierung stattfinden soll (refresh).
쮿
Nach welcher Zeit diese Slave-Server einen neuen Versuch starten sollen, wenn diese Aktualisierung nicht möglich ist (retry).
쮿
Wann die Informationen ungültig werden (expire).
쮿
Wie lange der Datensatz mindestens gültig ist (minimum).
Nach dem SOA-Record folgt der Nameserver-Record, der einen Nameserver für die Zone festlegt. Es sind auch mehrere NS-Records möglich: IN NS
pc3lsu.hertzog-edv.de.
Es folgen die so genannten Name-to-Address-Mappings, das heißt, Rechnernamen werden IP-Adressen zugeordnet. Ein A-Satz weist einem Domainnamen eine IPAdresse zu. Es ist auch möglich, dass einem Rechnernamen mehrere IP-Adressen mit mehreren A-Sätzen zugewiesen werden. pc7xph rt200
IN A IN A
192.168.172.72 192.168.172.200
Ein CNAME-Record dagegen weist einem Rechner einen Alias zu. Wenn in unserem Beispiel ein Nameserver nach printserver.hertzog-edv.de sucht und den CNAMERecord findet, wird printserver durch pc3li ersetzt und eine neue Anfrage für pc3li.hertzog-edv.de gestartet. printserver sambaserver
IN CNAME IN CNAME
pc3li pc3li
Nicht nur Rechnernamen müssen in IP-Adressen aufgelöst werden können, sondern auch umgekehrt. Man spricht hier vom so genannten Reverse-Mapping. Dazu werden PTR-Records verwendet. Daher muss es noch eine zweite selbst definierte Datensatzdatei geben, die diesen Teil übernimmt. In unserem Beispiel ist es die Datei master/172.168.192.in-addr.arpa: pc3li:/var/lib/named/master # more 172.168.192.in-addr.arpa $TTL 1W @ IN SOA pc3lsu.hertzog-edv.de. root.pc3lsu.hertzog-edv.de. ( 2004020833 ; serial 2D ; refresh 4H ; retry 6W ; expiry 1W ) ; minimum IN NS pc3li.hertzog-edv.de. 1 IN PTR pc3li.hertzog-edv.de. 200 IN PTR dsl66.hertzog-edv.de. 54 IN PTR nb5lsu.hertzog-edv.de. 53 IN PTR nb5sol.hertzog-edv.de. 50 IN PTR nb5w98.hertzog-edv.de.
864
Kapitel 18 · Namensdienste
Auch diese Datei beginnt mit der Angabe der Cache-Zeitspanne und dem SOADatensatz. Anschließend folgen die PTR-Datensätze, die für das Reverse-Mapping verwendet werden. Hinter dem Rechnernamen, zum Beispiel dsl66.hertzog-edv.de., muss unbedingt noch ein Punkt stehen, denn sonst würde automatisch der Name der Domain angehängt werden.
Vorgegebene Datenbankdateien Wie bereits erwähnt, werden mehrere Datenbankdateien bereits standardmäßig von den meisten Linux-Distributionen mitgeliefert. Zwei davon sind notwendig, damit localhost auch bei einer Anfrage nach dem Rechnernamen zur IP-Adresse 127.0.0.1 aufgelöst wird und umgekehrt. Es gibt im Internet keinen Nameserver für das Netz 127.0.0, daher ist dafür der eigene Nameserver zuständig. Eine dieser Dateien ist localhost.zone: pc3li:/var/lib/named # more localhost.zone $TTL 1W @ IN SOA localhost. 2004020846 2D 4H 6W 1W ) IN NS localhost. localhost. IN A 127.0.0.1
root.localhost. ( ; serial (d. adams) ; refresh ; retry ; expiry ; minimum
Die Datenbankdatei 127.0.0.zone ist für Namensauflösungen von IP-Adressen zuständig, die mit 127.0.0 beginnen: pc3li:/var/lib/named # more 127.0.0.zone $TTL 1W @ IN SOA localhost. 2004020804 2D 4H 6W 1W ) IN NS localhost. 1 IN PTR localhost.
root.localhost. ( ; serial ; refresh ; retry ; expiry ; minimum
Aber auch die Information, welche Nameserver für Anfragen außerhalb der eigenen Domain zuständig sind, ist sehr wichtig. Die Datei root.hint enthält die Hinweise für die Root-Server, nachfolgend ein Ausschnitt aus der Datei: pc3li:/var/lib/named # more root.hint ; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . " ; configuration file of BIND domain name servers). ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; -ORRS.INTERNIC.NET ; ; last update: Jan 29, 2004 ; related version of root zone: 2004012900 ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET.
865
magnum
Domain Name Service (DNS)
A.ROOT-SERVERS.NET. ; ; formerly NS1.ISI.EDU ; . B.ROOT-SERVERS.NET. ; ; formerly C.PSI.NET ; . C.ROOT-SERVERS.NET. ; ; formerly TERP.UMD.EDU ; . D.ROOT-SERVERS.NET. ; ; formerly NS.NASA.GOV ...
3600000
A
198.41.0.4
3600000 3600000
NS A
B.ROOT-SERVERS.NET. 192.228.79.201
3600000 3600000
NS A
C.ROOT-SERVERS.NET. 192.33.4.12
3600000 3600000
NS A
D.ROOT-SERVERS.NET. 128.8.10.90
Einen DNS-Server grafisch mit Webmin konfigurieren Es ist auch möglich, einen DNS-Server mit einem komfortablen grafischen Tool zu konfigurieren. WEBMIN kann für verschiedene Unix- und Linux-Derivate unter http://www.webmin.com/download.html als rpm-Paket (vergleiche Kapitel 5) heruntergeladen werden. WEBMIN steht unter anderem für SUSE und Fedora Core Linux, aber noch nicht für Debian Linux im Archiv »stable« (aber bereits im Archiv »testing«) zur Verfügung. Installieren Sie das Tool nach dem Download mit dem Befehl: # rpm -i webmin-1.220-1.noarch.rpm Operating system is SUSE Linux Webmin install complete. You can now login to https://pc7lsu:10000/ as root with your root password.
Starten Sie anschließend einen Webbrowser und geben Sie die genannte Adresse ein. Zunächst müssen Sie sich als root authentifizieren:
Bild 18.3: Sich an WEBMIN als root anmelden
866
Kapitel 18 · Namensdienste
Dann erscheint ein Menüfenster des Tools WEBMIN. Mit dem Menü CHANGING LANGUAGE können Sie zur deutschen Sprache wechseln:
Bild 18.4: Hauptmenü des Programms WEBMIN
Klicken Sie dann im WEBMIN-Menü im oberen Bildschirmbereich auf SERVER:
Bild 18.5: Möglichkeiten der Serverkonfiguration mit WEBMIN
867
Domain Name Service (DNS)
magnum
Klicken Sie nun auf BIND DNS-SERVER:
Bild 18.6: BIND DNS-Server einrichten mit WEBMIN
Klicken Sie dann auf NEUE MASTER-ZONE ANLEGEN:
Bild 18.7: Neue Master-Zone anlegen
Anschließend kann die neu erstellte Master-Zone bearbeitet werden: Das Tool ist recht einfach zu bedienen und meldet sofort, wenn Sie Einträge vergessen oder falsch eingeben. Anschließend können Sie die neu angelegte Zonendatei unter /var/lib/named einsehen.
868
Kapitel 18 · Namensdienste
Bild 18.8: Neue Master-Zone bearbeiten
Einen DNS-Server grafisch mit YaST konfigurieren Unter SUSE Linux ist es auch möglich, einen DNS-Server mit YaST zu konfigurieren. Öffnen Sie dazu in YaST das Menü NETZWERKDIENSTE - DNS SERVER. Im ersten Installationsschritt können Sie einen oder mehrere Forwarder einstellen. Geben Sie dessen IP-Adresse ein und klicken Sie dann auf HINZUFÜGEN.
Bild 18.9: Forwarder einstellen
869
Domain Name Service (DNS)
magnum
Forwarding bedeutet, dass die Anfragen genau an die in den Optionen angegebenen Nameserver weitergeleitet werden. Ein Forwarder kann häufig auch ein Nameserver eines größeren Unternehmens bzw. Providers mit einer hohen Bandbreite für den Zugriff auf die Root-Server sein. Klicken Sie dann auf WEITER. Jetzt können Sie neue Zonen hinzufügen und auswählen, ob es sich um eine Master- oder Slave-Zone handelt. Klicken Sie nach jedem eingegebenen Zonennamen auf HINZUFÜGEN:
Bild 18.10: Neue Zonen hinzufügen
Die einzelnen Zonen können Sie über die Schaltfläche ZONE BEARBEITEN verändern. Klicken Sie am besten zuerst auf die Registerkarte SOA, um den SOARecord einzurichten:
Bild 18.11: Zone bearbeiten
870
Kapitel 18 · Namensdienste
Klicken Sie dann auf die Registerkarte NS-EINTRÄGE, um Nameserver hinzuzufügen:
Bild 18.12: Nameserver einer Zonendatei hinzufügen
In der Registerkarte MX-EINTRÄGE können Sie Mailserver hinzufügen:
Bild 18.13: Mail Exchanger hinzufügen
Mit der Registerkarte EINTRÄGE ist es möglich, außer und CNAME-Records zu hinterlegen:
NS-
und
MX-Records
auch A-
871
Domain Name Service (DNS)
magnum
Bild 18.14: A- und CNAME-Records hinterlegen
Klicken Sie auf OK, wenn Sie die Bearbeitung der Zonendatei abschließen wollen, und anschließend auf WEITER. Jetzt können Sie den Assistenten beenden, aber zuvor noch den DNS-Server sofort starten und so einrichten, dass er bei jedem Booten automatisch gestartet wird:
Bild 18.15: DNS-Server starten
Sie können auch die Schaltfläche EXPERTENKONFIGURATION FÜR DNS-SERVER verwenden, um aus verschiedenen Startoptionen des DNS-Servers auszuwählen:
872
Kapitel 18 · Namensdienste
Bild 18.16: DNS-Server-Startoptionen
Beenden Sie die DNS-Server-Konfiguration mit der Schaltfläche BEENDEN.
18.2.3
Einen DNS-Client konfigurieren
Wenn die Namensauflösung in einer Domäne eingesetzt werden soll, ist auch clientseitig ein so genannter Resolver notwendig. Der Resolver ist eine Reihe von Routinen, die Zugang zum Internet Domain Name System bieten. Die Datei /etc/resolv.conf ist die Konfigurationsdatei, die die Informationen enthält, die von den Resolver-Routinen gelesen werden, wenn diese zum ersten Mal von einem Prozess aufgerufen werden (vergleiche Abschnitt 18.2.1). Verändern Sie im nächsten Schritt die Datei /etc/nsswitch.conf, indem Sie diese Ihren Namensdiensten anpassen (vergleiche Abschnitt 18.1.3). Unter SUSE Linux können Sie einen DNS-Client mit dem YaST-Menü Netzwerkdienste - DNS- und Hostname einrichten.
18.2.4
DNS-Befehle
Der Befehl dnsdomainname Dieser Befehl gibt den Domänennamen für den DNS (Domain Name Service) aus. Die Syntax des Befehls lautet: $ dnsdomainname [-v] [-f filename]
Der Befehl kennt die Optionen -f filename, um den Hostnamen aus der angegebenen Datei zu lesen, und -v für eine ausführlichere Ausgabe: $ dnsdomainname -v gethostname()=`pclsu3' Resolving `pclsu3' ...
873
Domain Name Service (DNS)
magnum
Result: h_name=`pclsu3.hertzog-edv.de' Result: h_addr_list=`192.165.171.134' hertzog-edv.de
Der Befehl host Dieser Befehl führt die Suche nach DNS-Servern durch. Die Syntax des Befehls lautet: $ host [-option(en)] name [server]
Die wichtigsten Optionen des Befehls lauten: Option
Beschreibung
-a
Alle DNS-Server suchen
-c klasse
Bewirkt, dass eine DNS-Anfrage nach Klassen durchgeführt wird
-C
Der Befehl versucht, die SOA-Datensätze für den Zonennamen für alle Server dieser Zone anzuzeigen
-d
Ausführliche Ausgabe
-l
Es wird eine Zonenübertragung für den Zonennamen durchgeführt.
-N ndots
Legt die Anzahl von Punkten fest, die sich in dem Namen befinden müssen, damit er als absolut betrachtet wird
-r
Führt nicht rekursive Anfragen aus
-R zahl
Legt die Anzahl von UDP-Versuchen für eine Suche fest
-t typ
Wählt den Anfragetyp aus, zum Beispiel SOA, SIG usw.
-w
Gibt die Wartezeit an
-W zeit
Gibt ebenfalls die Wartezeit an
-v
Ausführlicher Modus
Tab. 18.9: Die Optionen des Befehls host
In diesem Beispiel werden die DNS-Angaben zum Rechner pclsu3 abgefragt: # host pclsu3 pclsu3.hertzog-edv.de has address 192.165.171.134
Der Befehl dig Der Befehl dig (domain information groper) ist ein flexibles Tool, um DNS-Nameserver abzufragen. Er führt DNS-Suchen durch und zeigt die Antworten an, die von den angefragten Nameservern zurückgegeben werden. Das Tool kann auch für die Fehlersuche eingesetzt werden. Die Syntax des Befehls lautet: dig [@server] [- option(en)] [name] [@typ]
874
Kapitel 18 · Namensdienste
Der Befehl kennt folgende wichtige Optionen: Option
Bedeutung
server
Der Name oder die IP-Adresse des abzufragenden Nameservers
name
Der Name des Resource Records, der gesucht wird
typ
Gibt an, welcher Abfragetyp erforderlich ist: ANY, A, MX, SIG etc. Der Typ kann ein beliebiger gültiger Abfragetyp sein. Wenn kein Typ angegeben wird, führt der Befehl eine Suche nach einem A-Record durch.
-b adresse
Diese Option setzt die Quell-IP-Adresse der Suche auf die angegebene Adresse, die eine gültige Adresse einer der Netzwerkschnittstellen des Hosts sein muss.
-c klasse
Bewirkt, dass eine DNS-Anfrage nach Klassen durchgeführt wird, zum Beispiel IN für Internet
-f datei
Mit dieser Option arbeitet der Befehl im Batchmodus und liest eine Liste von Suchanfragen, die bearbeitet werden sollen, aus der angegebenen Datei.
-t typ
Wählt den Anfragetyp aus, zum Beispiel SOA, SIG usw. Standard ist A, wenn nicht die Option -x verwendet wird, um eine umgekehrte Suche durchzuführen.
-x adresse
Führt eine Reverse-Suche durch, bei der die Adressen den Namen zugeordnet werden. Dazu muss eine IP-Adresse als Argument angegeben werden.
Tab. 18.10: Optionen des Befehls dig
Ohne Optionen oder Argumente gibt der Befehl folgende DNS-Informationen zurück: # dig ; DiG 9.2.2 ;; global options: printcmd ;; Got answer: ;; ->>HEADERHEADER /root/iptables.save
Der Befehl iptables-restore wird verwendet, um die erstellten Ketten und Regeln wiederherzustellen. Sie müssen die Eingabeumlenkung verwenden, um die Informationen aus einer Datei zu lesen. Der Befehl hat folgende Syntax: # iptables-restore [-option(en)]
Der Befehl kennt folgende Optionen: Option
Beschreibung
-c
Stellt die aktuellen Werte aller Pakete und Bytezähler wieder her
-n
Löscht die vorherigen Inhalte der Tabelle nicht. Wenn die Option nicht angegeben wird, löscht der Befehl die bisherigen Inhalte von iptables.
Tab. 19.6: Optionen des Befehls iptables-save
Um die Informationen wiederherzustellen, die in einer Datei gespeichert wurden, verwenden Sie den Befehl zum Beispiel wie folgt: # iptables-restore < /root/iptables.save
19.4 Die Firewall Eine Firewall ist ein Programm oder ein Rechner sowie das dazugehörige Sicherheitskonzept, um einen Rechner oder ein Netzwerk vor unbefugten Zugriffen zu schützen. Eine Firewall bildet eine Schnittstelle zwischen einzelnen Netzwerkwerken oder Rechnersystemen, indem es ein internes Netzwerk von einem externen Netz trennt, und überwacht und steuert den Datenverkehr. Dazu gehört nicht nur, dass ungewollter Datenverkehr von außen in das geschützte lokale Netzwerk unterbunden wird, sondern auch das Unterbinden von nicht autorisiertem Datenverkehr aus dem geschützten lokalen Netzwerk nach außen. Eine Firewall reicht im Gegensatz zum Router nicht nur Pakete weiter, sondern bearbeitet auch an das eigene System adressierte Pakete. Im Prinzip führt eine Firewall zwei wichtige Aufgaben durch:
쮿
Sie lässt keinen ungewollten Datenverkehr von externen Systemen zum geschützten internen Netzwerk zu.
쮿
Sie lässt keinen ungewollten Datenverkehr aus dem geschützten internen Netzwerk zu externen Systemen zu.
Das vorliegende Buch kann auch zu Firewalls keinen ausführlichen Beitrag leisten. Aber zu diesem Thema existieren viele Bücher, zum Beispiel »Linux Firewalls mit iptables« von Ralf Spenneberg im Verlag Addison-Wesley. Sowohl SUSE Linux 10 als auch Debian GNU/Linux 3.1 und Fedora Core Linux 4.0 bieten bei der Installation bereits an, eine Firewall einzurichten.
915
magnum
Die Firewall
Da ein Hacker das System hinter der Firewall nicht erreichen kann, muss er die Firewall angreifen. Aus diesem Grund muss gerade eine Firewall besonders geschützt sein, wobei es in der Regel auch einfacher ist, ein einzelnes statt vieler Systeme zu schützen. Ein Firewall-System muss bestimmte Funktionalitäten bereitstellen:
쮿
Weiterleitung von E-Mails in und aus dem lokalen Netzwerk, ohne interne Anmelde- und Rechnernamen herauszugeben
쮿
Kontrolle, Einschränkung und Protokollierung des Datenverkehrs zwischen Netzwerken
쮿
Blockieren oder Zulassen von Netzwerkzugriffen auf Rechner oder Dienste im lokalen Netzwerk
쮿
Manipulation des Netzwerkverkehrs, zum Beispiel auf andere Rechner oder Proxys umleiten
Man sollte sich aber darüber im Klaren sein, dass eine Firewall nicht alle Sicherheitslücken im Netzwerk schließen, keine Schwachstellen im System erkennen (wie zum Beispiel unsichere Passwörter) und auch keine Fehler in der Konfiguration oder der Installation beseitigen kann.
19.4.1
Bestandteile einer Firewall
Der Paketfilter ist Bestandteil einer Firewall, da mit diesem der Datenverkehr zwischen dem lokalen und einem externen Netzwerk gesteuert werden kann. Mit Hilfe der durch den Paketfilter definierten Regeln werden Datenpakete gefiltert, manipuliert, gelöscht und protokolliert. Ein Paketfilter arbeitet auf einer vergleichsweise niedrigen Ebene und macht daher allein noch keine Firewall aus. Komplexere Aufgaben können von einem so genannten Content-Filter durchgeführt werden, der auch die Paketinhalte und nicht nur die Header mit Quell- und Zieladressen überprüft. Ein Content-Filter kann aus übermittelten HTML-Seiten zum Beispiel ActiveX- und JavaScript-Bestandteile herausfiltern, Spam-E-Mails kennzeichnen oder filtern, mit Viren infizierte E-Mails löschen und bestimmte sensible Firmeninformationen herausfiltern. Auch bei Content-Filtern müssen Regeln definiert werden, die oft recht einfach sind, aber komplexe Sachverhalte abdecken sollen. Dies ist nicht immer durchführbar, so lassen sich gerade sensible Firmendaten nicht so einfach herausfiltern, da es dafür keine eindeutigen Erkennungsregeln gibt. Das Erkennen von E-Mails, die mit Viren infiziert wurden, wird in der Regel Virenscannerprogrammen überlassen und die Kennzeichnung von Spam-E-Mails entsprechenden Spam-Filtern. Zu Firewallsystemen gehören häufig auch ein oder mehrere Proxy, die zwischen Client und Server geschaltet von der Firewall und für bestimmte Verbindungen verwendet werden. Proxys werden manchmal auch als Application Level Gateway bezeichnet, da sie auf der Applikationsebene arbeiten. Sie sind mit den dort verwendeten Protokollen, wie zum Beispiel HTTP, FTP, IRC usw., vertraut. Wenn Proxys eingesetzt werden, verbindet sich ein Client nicht direkt mit einem Server, sondern mit dem Proxy und lässt diesen die Verbindung zum Server herstellen. Der Proxy sendet, empfängt und filtert die Daten vom Server, bevor er sie an den Client weiterleitet oder verwirft. Das Proxy-Konzept umfasst die Authentifizierung und Autorisierung, so dass nur bestimmte Benutzer bestimmte Dienste verwenden dürfen, das Zwischenspeichern von Daten und außerdem das Filtern der Datenin-
916
Kapitel 19 · Sicherheit
halte, zum Beispiel auf Viren oder unzulässige Informationen. Bei einem so genannten transparenten Proxy-Konzept wird die Client-Server-Verbindung mit Hilfe eines Paketfilters so über einen Proxy weitergeleitet, dass der Client sich dessen nicht bewusst ist. Beispiele für Proxys sind SOCKS, squid, exim. Einige Beispiele für Firewall-Tools unter Linux sind BBIAgent.Net (http://www.bbiagent.net), Firestarter (http://www.fs-security.com), IPCop (http://www.ipcop.org), Smoothwall (http://www.smoothwall.org), Guarddog (http://www.simonzone.com/ software/guarddog) und Wolverine Firewall (http://www.coyotelinux.com/downloads).
19.4.2
Eine Firewall mit YaST für SUSE Linux einrichten
SUSE Linux liefert ein Tool mit, um eine Firewall für einen Rechner einzurichten. Starten Sie YaST und wählen Sie das Menü SICHERHEIT UND BENUTZER - FIREWALL. Im ersten Fenster können Sie wählen, ob Sie eine Firewall konfigurieren oder anhalten möchten:
Bild 19.2: SUSE Firewall mit YaST konfigurieren
In unserem Beispiel wählten wir die Neukonfiguration einer Firewall. Im ersten Schritt müssen Sie die externe und, falls vorhanden, die interne Schnittstelle wählen, die abgesichert werden soll: Anschließend müssen die Dienste angekreuzt werden, die auf dem Server trotz der Firewall erreichbar sein sollen. Wählen Sie die Dienste sorgfältig aus, damit Sie diese trotz Firewall weiterhin in Anspruch nehmen können. Sollten Sie einen Dienst vergessen, können Sie die Firewall-Option von YaST einfach nochmals starten und diesen nachträglich aktivieren – allerdings nur lokal und nicht per Remote-Zugriff:
917
Die Firewall
magnum
Bild 19.3: Schnittstelle wählen
Bild 19.4: Dienste auswählen
Sollten Sie Dienste auf dem Server aktiviert haben, die hier nicht angeboten werden, klicken Sie auf die Schaltfläche EXPERTEN. Tragen Sie die Portnummern dieser Dienste dann im nächsten Fenster ein, es sind auch Bereiche durch Doppelpunkt getrennt möglich:
918
Kapitel 19 · Sicherheit
Bild 19.5: Zusätzliche Dienste wählen
Nun können Sie die Eigenschaften der Firewall genauer festlegen. Wählen Sie DATEN WEITERLEITEN UND MASQUERADING DURCHFÜHREN, wenn Sie nur eine IPAdresse besitzen, über die mehrere Rechner Internetzugang haben. Externe Rechner sollen damit den Eindruck erhalten, dass die Internetdienste von der Firewall und nicht von internen Rechnern zur Verfügung gestellt werden. Aktivieren Sie die Option VOR INTERNEM NETZWERK SCHÜTZEN, wenn interne Rechner nur auf ausdrücklich erlaubte Dienste des Rechners zugreifen dürfen. Wählen Sie TRACEROUTE ERLAUBEN, wenn über die Firewall ICMP-Meldungen mit einer Gültigkeitsdauer übermittelt werden dürfen. Sie verhindern mit der Option ALLE LAUFENDEN DIENSTE SCHÜTZEN jeden Netzwerkzugriff auf Dienste in Form von TCP und UDP auf diesem Rechner. Zugelassen sind nur die zuvor von Ihnen erlaubten. Die letzte Option IPSEC-PAKETTRANSFER ALS INTERN BEHANDELN bewirkt, dass erfolgreich entschlüsselte IPsec-Pakete wie Pakete aus dem internen Netzwerk behandelt werden. Aktivieren Sie nun die für Ihre Firewall erforderlichen Optionen:
Bild 19.6: Zusätzliche Eigenschaften der Firewall
919
magnum
Die Firewall
Im letzten Schritt entscheiden Sie, ob als kritisch verworfene oder akzeptierte Pakete oder alle verworfenen bzw. akzeptierten Pakete protokolliert werden sollen. Die zweite Möglichkeit führt zu einer großen Datenmenge in den Protokollen. Klicken Sie auf die Auswahl, die Sie für Ihre Firewall benötigen:
Bild 19.7: Protokollierungsoptionen einstellen
Wenn Sie jetzt auf BEENDEN klicken, werden die Einstellungen gespeichert und die Firewall aktiviert:
Bild 19.8: Einstellungen speichern
19.4.3
Eine Firewall für Fedora Core Linux einrichten
Auch Fedora Core Linux liefert ein Tool mit, um eine Firewall für einen Rechner einzurichten. Wählen Sie das KDE-Menü SYSTEMEINSTELLUNGEN - SICHERHEITSSTUFE. Im ersten Fenster können Sie wählen, ob Sie eine Firewall konfigurieren oder anhalten möchten. Wenn Sie als Sicherheitsstufe FIREWALL AKTIVIEREN gewählt haben, können Sie im unteren Fensterbereich die für Sie sicheren Dienste ankreuzen, indem Sie sie mit der Maus anklicken. Anschließend können pro aktiviertem Dienst die sicheren Geräte und gegebenenfalls zusätzliche Ports definiert werden:
920
Kapitel 19 · Sicherheit
Bild 19.9: Firewall mit Fedora Linux aktivieren
Im zweiten Registerblatt SELINUX können Sie spezielle SELinux-Sicherheitseinstellungen auswählen oder SELinux-Sicherheit generell deaktivieren:
Bild 19.10: SELinux-Sicherheit aktivieren
SELinux ist eine Kernel-Erweiterung, um Linux noch sicherer zu machen. Wenn SELinux aktiviert ist, wird die Allmacht von root beschnitten, Benutzer müssen sich authentifizieren, Programme werden untereinander und vom System abgekapselt und Richtlinien regeln alle Zugriffe im System.
921
Intrusion-Detection-Systeme (IDS)
magnum
19.5 Intrusion-Detection-Systeme (IDS) Netzwerke, speziell von Unternehmen, werden immer häufiger das Ziel von Angriffsversuchen. Es ist sehr wichtig, diese Angriffe zu erkennen, um ausreichende Gegenmaßnahmen treffen zu können. Intrusion-Detection-Systeme haben die Aufgabe, Methoden zur rechtzeitigen Erkennung von Angriffen zu entwickeln. Ein IDS funktioniert also wie eine Alarmanlage: Wenn ein Hacker zum Beispiel in eine Firewall oder ein Netzwerk einbricht, müssen automatisch Meldungen an den Administrator gesendet und bestimmte Gegenmaßnahmen getroffen werden, zum Beispiel attackierte Dienste beendet oder Ports geschlossen werden. Genauso wichtig ist es, dass alle Informationen über den Angriff protokolliert werden, so dass sie dem Administrator zur Verfügung stehen. Eine Firewall und ein IDS sollten sich gegenseitig ergänzen und damit die Sicherheit eines Netzwerks erhöhen. Auch Intrusion-Detection-Systeme können in diesem Kapitel nur gestreift werden. Ein ausführliches Werk zu diesem Thema ist das Buch »Intrusion Detection und Prevention mit Snort 2 & Co.« von Ralf Spenneberg, erschienen beim Verlag Addison-Wesley.
19.5.1
Typen von IDS
Es gibt verschiedene Typen von Intrusion-Detection-Systemen:
922
쮿
Logfile-Analysatoren: Diese einfachste Form eines IDS untersucht Systemprotokolldateien auf anomale Ereignisse mit Hilfe von Mustererkennung. Da sie nicht echtzeitfähig ist, können damit keine komplexeren Angriffe erkannt oder bekämpft werden.
쮿
Hostbasierte IDS (HIDS): Diese ältere Form eines IDS überwacht Daten und Prozesse eines einzelnen Rechners, auf dem auch die Überwachungssoftware läuft, wobei aber die Protokollierung, Analyse und zu ergreifenden Gegenmaßnahmen nicht unbedingt auf diesen Rechner beschränkt bleiben müssen. Ein HIDS unterstützt das Betriebssystem, entnimmt seine Informationen Protokolldateien, Kernel-Daten, anderen Systemdateien und offenen Netzwerkverbindungen. Wird ein vermeintlicher Angriff aufgedeckt, werden entsprechende Alarmmeldungen versendet. Es kann sehr spezifische Angaben über die Attacke machen und ein System sehr detailliert überwachen, aber es ist möglich, ein HIDS durch eine Denial-of-Service-Attack auszuschalten. Da es mit dem System verbunden ist, auf dem es läuft, wird ein HIDS zwangsläufig auch mit dem entsprechenden System deaktiviert. System Integrity Verifiers (SIV) sind eine Unterform eines HIDS. Diese legen mit Hilfe von Prüfsummen fest, ob das System verändert wurde, und finden auf diese Weise u. a. Viren, Trojanische Pferde usw. Die Tools TRIPWIRE (http://www.tripwire.com), AIDE (http://sourceforge.net/projects/aide) und SAMHAIN (http://www.la-samhna.de/samhain) gehören zu den System Integrity Verifiers. Als HIDS kann auch LIDS (Linux Intrusion Detection System) bezeichnet werden, ein Kernel-Patch, der Mandatory Access Control (MAC) und andere Sicherheitserweiterungen dem Linux-Kernel hinzufügt. LIDS kann auch die Macht des root-Accounts begrenzen und verwendet Access Control Lists (ACLs), um den Zugriff auf Dateien, Prozesse und Netzwerkressourcen zu kontrollieren. Diese Berechtigungen können auch von root nicht abgeändert werden (weitere Informationen zu LIDS finden Sie unter http://www.lids.org).
Kapitel 19 · Sicherheit
쮿
Netzwerkbasierte IDS (NIDS): Diese Systeme sind nicht nur auf einen Rechner beschränkt, sondern überwachen den Netzwerkverkehr, indem sie alle Pakete eines Netzwerks protokollieren, analysieren und verdächtige Ereignisse melden. NIDS-Systeme suchen im Netzwerk nach bekannten Angriffsmustern und -merkmalen, wobei sie einen Sensor verwenden, mit dem ein ganzes Netzwerksegment überwacht werden kann. Die Funktion des Sensors ist nicht davon betroffen, wenn ein Zielsystem deaktiviert wird. Allerdings kann die Datenmenge eines heute üblichen 1Gbit-LANs dazu führen, dass die Bandbreite des Sensors überschritten wird, so dass keine lückenlose Überwachung des Netzwerks mehr möglich ist. Ein typisches NIDS-Tool ist SNORT (http://www.snort.org).
쮿
Deception-Systeme (so genannte Honeypots): Diese Art von Systemen täuscht einem Angreifer vor, bedeutende, sensible Daten zu besitzen (»Honigtöpfe«), um die eigentlichen sicherheitsrelevanten Systeme zu schützen. Ein Angriff wird detailliert mitprotokolliert, um den Hacker schnell ausfindig machen zu können, wobei vermieden wird, dass dieser tatsächlich an sicherheitskritische Daten gelangt.
Ein weiteres Sicherheitssystem, das so genannte Network Intrusion Prevention System (NIPS oder IPS), löst nicht nur einen Alarm bei einem Einbruchsversuch aus, sondern kann sogar Datenpakete löschen, die Verbindung unterbrechen oder die übertragenen Daten verändern. Ein IPS funktioniert häufig in der Kombination Zustandserkennung, Mustererkennung und Anomalieerkennung. Debian GNU/Linux bietet standardmäßig bei der Installation ein IDS mit dem Namen AIDE (Advanced Intrusion Detection System) in einer Beta-Version an.
19.5.2
Möglichkeiten eines IDS
Ein IDS bewertet Systemanomalien als Merkmal dafür, dass ein Einbruch erfolgt ist. Dabei spielen folgende Merkmale eine Rolle:
쮿
Anomalien des Betriebs- und Dateisystems: •
Auffällige Aktivitäten im Bereich der Anmeldung am System, wie zum Beispiel neue unbekannte Benutzerkonten, Verwendung lange unbenutzter Konten, Anmeldungen zu ungewöhnlichen Zeiten (Wochenende, nachts)
•
Auffälliges Systemverhalten, wie zum Beispiel außergewöhnlich hohe Hauptspeicher- und/oder CPU-Auslastung, Systemabstürze, Rebooten des Systems
•
Seltsame Kernel-Module oder Systemprozesse
•
Neue unbekannte SetUID- und SetGID-Dateien
•
Anomalien bei Protokolldateien, wie zum Beispiel Zeitlücken, veränderte Zugriffs- und Besitzrechte
•
Anomalien bei Konfigurationsdateien, Systemsoftware sowie Cron- und at-Jobs, wie zum Beispiel veränderte Zugriffs- und Besitzrechte, veränderte Inhalte, Dateigröße
•
Neue unbekannte Programme und Dateien
•
Verschwundene, gelöschte Dateien
923
Intrusion-Detection-Systeme (IDS)
쮿
magnum
Anomalien im Netzwerkbereich: •
Anfragen, die auf Portscanner und Sniffer-Programme hinweisen
•
Anfragen nach selten benutzten, unbenutzten oder sogar geschlossenen Ports
•
Anomalien bei Netzwerkverbindungen, wie zum Beispiel zu ungewöhnlichen IP-Adressen, zu ungewohnten Zeiten und/oder ungewohnten Standorten, offene Verbindungen
•
Ungewöhnlich hohe Netzlast, die schließlich zu einer Denial-of-ServiceAttack führen könnte
HIDS-Systeme kümmern sich um Anomalien der ersten Art, dazu werden vor allem System Integrity Verifiers verwendet. NIDS-Systeme konzentrieren sich auch auf Anomalien der zweiten Gruppe.
19.5.3
Aufbau eines IDS
Es gibt zwei Methoden, um Einbrüche in ein System zu erkennen. Einmal ist es möglich, bekannte Angriffsmerkmale zu vergleichen, und zum anderen kann eine statistische Analyse durchgeführt werden. Ein IDS verwendet in der Regel Filter und Signaturen, die eine Beschreibung von bekannten Angriffsmustern enthalten, was bei neuen Angriffsmustern allerdings von Nachteil ist. Signaturbasierte IDS sind zurzeit am häufigsten anzutreffen, da ihr Verhalten gut eingeschätzt werden kann. Es gibt auch IDS, die heuristische Methoden verwenden, um bisher unbekannte Angriffe aufdecken zu können. Alle im Moment eingesetzten IDS-Systeme haben allerdings das Problem, dass sie oft viele falsche Warnmeldungen erzeugen oder Angriffe einfach nicht erkennen. Ein IDS führt seine Aufgabe in drei Phasen durch:
924
쮿
Datensammlungs- oder Wahrnehmungsphase: In dieser Phase werden bei HIDS-Systemen Informationen aus speziellen Systemmerkmalen, wie zum Beispiel Dateiprüfsummen, -größen, Zugriffsrechten, Besitzern usw., sowie Daten über CPU, Hauptspeicher, Protokolldateien usw., und bei NIDS-Systemen Informationen über Pakete, die über das Netzwerk versandt werden, gesammelt.
쮿
Datenanalyse- bzw. Mustererkennungsphase: In dieser Phase werden die gesammelten Daten überprüft und mit Signaturen aus der Musterdatenbank verglichen. Ein Einbruch kann aufgrund eines vordefinierten Musters erkannt werden, wenn Abweichungen zum Normalbetrieb auftreten. Eine Anomalie kann mit Methoden der künstlichen Intelligenz aufgedeckt werden: Das IDS lernt zunächst den Normalzustand eines Systems kennen und verwendet dessen Profil als Vergleichsmuster für Abweichungen. Alternativ kann auch die zeitliche und logische Abfolge von Ereignissen als Vergleichsbasis herangezogen werden, das heißt, wenn ein bestimmtes Ereignis eintritt, müssen bei diesem Vergleich bestimmte weitere Ereignisse stattfinden. Ist das nicht der Fall, liegt eine Anomalie vor.
쮿
Reaktions- oder Gegenmaßnahmenphase: Die standardmäßige Reaktion ist in der Regel, dass das IDS Alarm schlägt, wenn es eine Anomalie erkennt. Dieser Alarm kann eine E-Mail an den Systemadministrator sein oder der Versuch, einen potenziellen Hacker zu sperren oder zu isolieren.
Kapitel 19 · Sicherheit
19.5.4
Fazit
Dieses Kapitel stellt nur einen kurzen Absriss über unendlich viele Möglichkeiten dar, ein Linux-System und -Netzwerk sicherer zu machen. Viele Themen konnten dabei nicht behandelt werden, weil sie den Umfang des Buchs gesprengt hätten. Dazu gehören zum Beispiel die chroot-Umgebung, Tunneling-Protokolle (PPTP, L2TP), Kerberos, Verschlüsselung (GnuPG, PGP), NIS-Sicherheit, NFS-Sicherheit, VPN (Virtual Private Network), LIDS (Linux Intrusion Detection System), PAMModule, RAS-Sicherheit (RADIUS/TACACS), Wireless Security und Sicherheit auf IP-Ebene (IPSEC und IPv6).
925
A Inhalt der DVD-ROM Auf der beigefügten DVD-ROM finden Sie die Linux-Distribution Linux SUSE 10 OSS. Diese Distribution verwendet als grafische Oberfläche KDE und bietet viele verschiedene Programme aus den Bereichen Multimedia, Internet, Grafikbearbeitung, Administrationstools, Software-Entwicklungstools und Programmiersprachen sowie das vollständige OpenOffice-Paket für Büroanwendungen wie Textverarbeitung, Tabellenkalkulation und Präsentationen. Im Vergleich zu der im Handel erhältlichen SUSE Linux-Distribution enthält SUSE Linux 10 OSS nur die unter GNU Public License (GPL, siehe Kapitel 1) stehenden Softwarepakete. Nichtsdestotrotz ist SUSE Linux 10 OSS eine vollwertige, voll funktionsfähige Distribution, mit der Sie dieses Buch von A bis Z durcharbeiten können. Lesen Sie Kapitel 2, um mehr über die Installation des Systems zu erfahren (die dort für das kommerzielle SUSE Linux beschriebenen Schritte gelten auch für SUSE Linux 10 OSS).
927
Stichwortverzeichnis ! ■■■■■■■■■■ .bash_profile 246 .bashrc 246 .kshrc 246, 343 .profile 246 ~/.bash_login 343 ~/.bash_logout 246, 343 ~/.bash_profile 343 ~/.bashrc 343 ~/.cshrc 255, 343 ~/.exrc 168 ~/.kshrc 346 ~/.login 343 ~/.logout 255, 343 ~/.profile 207, 246, 343, 345 ~/.rhosts 712, 737, 738 ~/.sh_history 252
A ■■■■■■■■■■ accept 545 Access Control Lists 220 Account 745 ACL-Einträge erzeugen 223, 224 löschen 224 ACLs 220 Address Resolution Protocol Aktive Benutzer 605 Alias-Funktion 253, 258 alsaconf 273 alsamixer 275 AlsaPlayer 285 amaroK 284 Ampersand-Zeichen 235 Änderungsdatum 109 Anmeldename 322 Anmeldeshell 323, 329 apropos 98 apsfilter 520 apt-get 88
696
aptitude 83 Argument 94 Ark 657 ARP 696 arp 696 ArpaNet 745 at 577 AT&T 28 atq 579 atrm 579 Audio-CD abspielen 280 brennen 292 erzeugen 296 Audiodatei abspielen 283 erzeugen 292 Aufbau von Befehlen 93 Aufgaben der Shell 42 des Kernels 41 Ausführrecht 201 Ausgabebefehl 139, 140 Ausgabeumlenkung 239 autofs 438, 791, 808, 810 automount 811, 812 Automounter 438, 791, 808, 809 Konfiguration 812 YaST 815 awk 174
B ■■■■■■■■■■ Backquotes 237 Backslash 236 Backup 626 Backup-Superblock 439 badblocks 469 Bandgeräte steuern 635 Bandlaufwerk 415, 630 base-config 513
929
Stichwortverzeichnis
basename 154 bash 245 batch 578 Befehl accept 545 alsaconf 273 apropos 98 apt-get 88 aptitude 83 Argumente 94 arp 696 at 577 atq 579 atrm 579 Aufbau 93 automount 811 awk 174 badblocks 469 base-config 513 basename 154 bash 245 batch 578 Besitz ändern 215 cal 604 cancel 550 case 269 cat 115 cd 109, 249, 262 cdparanoia 292 cdrecord 293 cfdisk 430 chage 339 chattr 215 chfn 216 chgrp 218 chkconfig 398 chmod 203 chown 217 chpasswd 337 chroot 338 chsh 337 cmp 135 col 139 colcrt 139 colrm 140 column 140
930
magnum comm 135 command 250 configure 90 cp 128 cpio 640 crontab 262, 263, 580, 582 cut 140 date 602 Dateiverwaltung 115 dd 644 debugfs 470 df 474, 812 diff 131, 133 dig 874 dirname 154 disable 546 dmesg 619 dnsdomainname 873 domainname 883 du 475 dump 631 dump2fs 467 e2fsck 464 echo 124 egrep 194 enable 546 env 261 ethereal 702 exec 249 exit 250, 270 expand 141 export 260 exportfs 799 fc 251 fdformat 481 fdisk 427 fgrep 194 file 151 find 186 finger 608, 736 fmt 142 fold 142 free 567 fsck 424, 463 fsck.ext2 464 ftp 709
Stichwortverzeichnis
function 255 fuser 462 gawk 174 getent 850 getfacl 222 gpasswd 321 grep 192 groff 136 groupadd 316 groupdel 317 groupmod 317 groups 219, 319 grpck 320 grpconv 331 grpunconv 332 grub 379 Gruppe ändern 215 guessfstype 455 gunzip 647 gzexe 648 gzip 645 halt 407 hash 250 hashstat 256 hdparm 422 head 123 Hilfe 98 history 252, 257 host 874 hostname 601 id 333 if 266 ifconfig 675 ifdown 679 ifstatus 679 ifup 678 in die Shell eingebaute init 406 insmod 592 insserv 397 iptables 909 iptables-restore 915 iptables-save 914 iptraf 704 joe 168 kbd_mode 505
249, 256
kbdrate 506 kill 555, 568 killall 569 last 607, 610 less 117 lilo 369 ln 444 logger 615 logname 332 logout 256 logrotate 615 lp 548 lpadmin 542 lpc 544 lpmove 544 lpr 552 lprm 553 lpstat 550, 553 ls 110 lsattr 114 lsmod 591 lspci 418 lsusb 419 make 90, 883 makedbm 884 MAKEDEV 417 man 96, 98 mcopy 483 md5sum 155 mdel 484 mdeltree 485 mdir 484 mformat 485 mkdir 107, 444 mke2fs 446 mkefs.ext3 446 mkfs 445 mkfs.ext2 446 mkisofs 291 mknod 416, 444 mkswap 477 mmd 486 modinfo 595 modprobe 593 more 116 mount 456, 460, 803
931
magnum
Stichwortverzeichnis
mt 635 mv 130 nawk 174 netstat 697 newgrp 219, 320 nfsstat 807 nice 572 nmdb 818 nohup 572 nslookup 876 od 153 Optionen 94 Pfadangabe 150 pgrep 566 pidof 574 ping 694 pkill 570 poweroff 407 pr 143 printf 145 ps 558 pstree 563 pwck 332 pwconv 331 pwd 110, 250 pwunconv 331 rcp 713 reboot 408 rehash 256 reject 545 renice 573 restore 633 rlogin 712 rm 127 rmd 486 rmdir 126 rmmod 594 route 739 rpcinfo 699 rpm 73 rsh 714 SaX 492 scp 716 sed 170 set 247, 259, 264 setenv 264
932
setfacl 220 setfdprm 481 sg 321 showmount 806 shutdown 405 smartctl 420 smbclient 833 smbmount 831 smbpasswd 827 smbstatus 832 smbumount 832 smdb 816 sort 146 ssh 714 stty 504 su 333 Suchbefehle 186, 192 sudo 335 sum 154 SuSEconfig 512 swapoff 479 swapon 478 swsusp 408 sync 476 Syntax 93 Systeminformation 601 tac 125 tail 123 tar 636 tcpdump 700 tee 126 telinit 406 telnet 706 test 267 testparm 826 time 573 top 564 touch 108, 444 tr 148 traceroute 695 trap 250, 571 tty 504 tune2fs 449 tunelp 547 type 250 typeset 251, 255
Stichwortverzeichnis
ulimit 250 umask 207, 250 umount 461, 803 uname 601 unexpand 149 unhash 256 uniq 150 unset 260, 264 unzip 648 update-rc.d 397, 398 useradd 323, 324 userdel 328 usermod 327 Verzeichnisverwaltung 107 vi 164 vidmode 491 w 610 wc 152 whatis 99 whereis 156 which 150 who 605 whoami 607 xargs 156 xf86config 486 ypcat 885 ypinit 883 ypmatch 886 yppasswd 886 yppoll 884 yppush 884 ypset 885 ypwhich 885 ypxfr 884 zcat 647 zip 648 Zugriffsrechte ändern 215 Befehle iptables 907 Befehlssubstitution 237 Benutzer 200, 315 ändern 327 anlegen 55, 322, 324 löschen 328 Benutzer anlegen Standardwerte 323
Benutzeridentifikation 333 Benutzerinformationen 608 Benutzerkategorien 200 Benutzername 322, 329, 330, 606 Benutzerverwaltung Fedora 363 KDE 346 YaST 350, 353 Besitzer 200 Betriebssysteminformationen 601 /bin 424 Bookmarks 769 /boot 424 Bootblock 439, 440 Bootloader 369 GRUB 377 Bootprozess 367 Bootsektor sichern 386 wiederherstellen 386 Bourne-Again-Shell 231, 245 Dateiergänzungsfunktion 252 Bourne-Shell 231, 245, 246 Optionen 247 Bridge 670 Browser 746 BSD Fast-File-System 436 BSD-LPD 516
C ■■■■■■■■■■ cal 604 cancel 550 cat 115 cd 109, 249, 262 CD-Brenner 289 testen 290 cdparanoia 292 CD-Player 280 cdrecord 293 CD-ROM 630 CD-ROM-Laufwerke CD-Spieler 280 cfdisk 430 chage 339 Chat(ten) 781
414
933
magnum
Stichwortverzeichnis
Chatroom 786 chattr 215 chfn 216 chgrp 218 chkconfig 398 chmod 203 chown 217 chpasswd 337 chroot 338 chsh 337 Client 669, 670 Client-Server-Prinzip 669, 791 cmp 135 col 139 colcrt 139 colrm 140 column 140 comm 135 command 250 configure 90 Content-Filter 916 cp 128 cpio 640 crontab 262, 263, 580, 582 C-Shell 231, 255, 257 Alias-Funktion 258 Dateiergänzungsfunktion 257 File Completion Mechanismus 257 History-Funktion 257 Optionen 256 CUPS 522 Webbrowser 526 cupsd 525 cut 140
D ■■■■■■■■■■ Daemons automount 812 beenden 574 gated 743 in.fingerd 736 in.ftpd 709, 735 in.telnetd 736 in.tftpd 736 inetd 725, 735
934
lockd 796 mrtd 742 named 736, 860 nfsd 794 nmdb 818 portmap 793 pppd 736 radvd 743 rdisc 742 routed 741 rpc.mountd 736, 794 rpc.nfsd 736 rpc.portmap 737 rpc.yppasswdd 887 smdb 816 sshd 737 starten 574 statd 737, 795 tcpd 736 xinetd 726, 735 ypbind 887 ypserv 886 ypxfrd 887 date 602 Datei 444 */.profile 207 .bash_profile 246 .bashrc 246 .kshrc 246 .profile 246 ~/.bash_logout 246 ~/.bash_profile 246 ~/.cshrc 255 ~/.exrc 168 ~/.kshrc 346 ~/.login 207 ~/.logout 255 ~/.profile 345 ~/.rhosts 712, 737, 738 ~/.sh_history 252 anzeigen 115, 116, 117 Daten konvertieren 153 Datum ändern 108 drucken 548 durchsuchen 192 editieren 164
Stichwortverzeichnis
erzeugen 108 /etc/.login 207, 255, 344 /etc/at.allow 578 /etc/at.deny 578 /etc/auto.master 812 /etc/conf.modules 597 /etc/crontab 579 /etc/csh.cshrc 344 /etc/csh.login 344 /etc/cups/cupsd.conf 524 /etc/default/useradd 323 /etc/dhcpd.conf 731 /etc/exports 730, 794, 796 /etc/fstab 459, 477, 804, 810 /etc/gateways 741 /etc/group 318 /etc/gshadow 319 /etc/host.conf 723 /etc/HOSTNAME 723 /etc/hosts 721 /etc/hosts.equiv 712, 737, 738 /etc/inetd.conf 725, 735, 736 /etc/init.d/rc 393 /etc/inittab 390 /etc/login.defs 207, 340 /etc/modprobe.conf 598 /etc/modules.conf 597 /etc/mtab 460, 794, 803 /etc/named.conf 730, 860 /etc/netgroup 882 /etc/networks 721, 741 /etc/nscd.conf 729, 853, 854 /etc/nsswitch.conf 723, 849, 851, 858, 878 /etc/passwd 199, 329 /etc/profile 207, 246, 344 /etc/protocols 728 /etc/resolv.conf 858 /etc/samba/smb.conf 819 /etc/securetty 342 /etc/services 727 /etc/shadow 199, 326, 330 /etc/shells 342 /etc/sysconfig/network/config 723 /etc/sysconfig/network/dhcp 723 /etc/sysconfig/network/ifcfg-eth0 722
/etc/sysconfig/network/ ifroute-eth0 732 /etc/sysconfig/network/routes 732 /etc/sysconfig/network/wireless 723 /etc/syslog.conf 611 /etc/X11/XF86Config 490 /etc/xinetd.conf 726, 735 Inhalt vergleichen 131, 133, 135 joe 168 kopieren 128 löschen 127 Makefile 90 Mandatory Locking-Bit 212 modules.dep 597 named.conf 860 SetGID-Bit 211 SetUID-Bit 210 smb.conf 819 smbpasswd 826 suchen 186 Typ ermitteln 151 umbenennen 130 /var/lib/nfs/rmtab 794 /var/log/messages 611 /var/spool/cron/allow 582 /var/spool/cron/deny 582 /var/yp/Makefile 880, 881 /var/yp/nicknames 882 /var/yp/securenets 882 verketten 115 verschieben 130 Worte zählen 152 Zeichen zählen 152 Zeilen zählen 152 Dateiausgabe 136 Dateiergänzungsfunktion 252, 257 Dateiinhalte vergleichen 131, 133, 135 Dateiname 95 Dateirechte 199 umask 207 Dateisystem 436 anlegen 445 autofs 438, 791, 808, 810 cachefs 791 dos 437 ext2 438
935
Stichwortverzeichnis
ext3 436 FAT 437 Größe ändern 453 hpfs 437 iso9660 437 jfs 437 lokal 436 mounten 455, 456, 460 netzwerkbasierend 437 ntfs 437 procfs 438 Pseudo-Dateisystem 438 RAM-basiert 438 swap 438 sysfs 438 tmpfs 438 überprüfen 463, 464 udf 437 ufs 437 unmounten 461 vxfs 437 Dateityp 200 ermitteln 151 Dateiverwaltung Konqueror 158, 185, 196 Dateiverwaltungsbefehle 115 Dateizeiger 239 Daten konvertieren 153 Datenblock 439, 443 Daten-CD-ROM erstellen 291 Datenrettung Knoppix 386 Datensicherung 625 Befehle 636 differentiell 627 Gründe 626 inkrementell 627 logisch 627 Medien 630 physikalisch 626 selektiv 627 Sicherungsarten 626 Sicherungsstrategien 628
936
magnum Strategien 626 Tools 631 Vollsicherung 627 YaST 651 Datenumlenkung 41 Datum ändern 108 Datumsausgabe 602 dd 644 Debian GNU/Linux 34 Hilfe 104 Installation 65 Software deinstallieren 88 Software installieren 88 debugfs 470 Denial-of-Service-Attack 901 /dev 410, 412, 424 Device Files 410 /dev/pts 460 df 474, 812 DHCP 51, 63, 683 Dienstprogramme 43 diff 131, 133 dig 874 Directory Services 849 dirname 154 disable 546 Diskettenlaufwerke 415, 630 Distributed Filesystem 40, 791 Distributionsquellen 39 DMA-Modus 422 dmesg 619 DNS 849, 850, 856 Konfigurationsdateien 858 Resource Records 862 Webmin 866 Yast 869 DNS-Client einrichten 873 dnsdomainname 873 DNS-Server 856 Dollarzeichen 236 Domain 856 Domain Name Server 876 Domain Name Service 850, 856 domainname 883 dos 437
Stichwortverzeichnis
Druckauftrag löschen 550, 553 starten 548 Status anzeigen 550, 553 verschieben 544 Drucker aktivieren 546 deaktivieren 546 entfernen 542 konfigurieren 542 verwalten 542 Druckertreiberfilter 520 Druckerverwaltung 515, 531, 539 Fedora Linux 539 Webbrowser 526 YaST 531 Druckerwarteschlange 550, 553 aktivieren 545 deaktivieren 545 verschieben 544 Drucksysteme 515 CUPS 522 Druckziels 548 DSL Fedora Linux 766 SUSE Linux 758 DSL einrichten Fedora Linux 766 YaST 758 du 475 dump 631 dumpe2fs 467 Dumplevel 627 DVD-Geräte 630 DVD-Laufwerke 414
E ■■■■■■■■■■ e2fsck 464 echo 124 egrep 194 Eigenschaften von Linux 40 Eingabeumlenkung 239
E-Mail 772 einrichten 772 empfangen 777 KMail 772 Ordner anlegen 780 schreiben 778 E-Mail-Adresse kostenlose 780 enable 546 Encoden 272 env 261 Erstellungsdatum 108 Erweiterte Partition 427 /etc 424 /etc/ sysconfig/network/config 723 /etc/ sysconfig/network/dhcp 723 /etc/ sysconfig/network/ifcfg-eth0 722 /etc/ sysconfig/network/ifroute-eth0 732 /etc/ sysconfig/network/routes 732 /etc/ sysconfig/network/wireless 723 /etc/.login 255, 344 /etc/apsfilterrc 520 /etc/at.allow 578 /etc/at.deny 578 /etc/auto.master 812 /etc/conf.modules 597 /etc/crontab 579 /etc/csh.cshrc 344 /etc/csh.login 344 /etc/cups 523 /etc/cups/cupsd.conf 524 /etc/default/useradd 323 /etc/dhcpd.conf 731 /etc/exports 730, 794, 796 /etc/fstab 459, 477, 804, 810 /etc/gateways 741 /etc/group 318 /etc/gshadow 319 /etc/host.conf 723 /etc/HOSTNAME 723 /etc/hosts 721 /etc/hosts.equiv 712, 737, 738 /etc/hosts.lpd 517, 519 /etc/inetd.conf 725, 735, 736 /etc/init.d 394
937
Stichwortverzeichnis
/etc/init.d/rc 393 /etc/init.d/rc?.d 393 /etc/inittab 390 /etc/login.defs 207, 340 /etc/lpd.conf 517 /etc/lpd.perms 517, 519 /etc/modprobe.conf 598 /etc/modules.conf 597 /etc/mtab 460, 794, 803 /etc/named.conf 730, 860 /etc/netgroup 882 /etc/networks 721, 741 /etc/nscd.conf 729, 853, 854 /etc/nsswitch.conf 723, 849, 851, 858, 878 /etc/passwd 199, 329 /etc/printcap 517 /etc/profile 207, 246, 343, 344 /etc/protocols 728 /etc/rc?.d 393 /etc/resolv.conf 858 /etc/samba/smb.conf 819 /etc/securetty 342 /etc/services 727 /etc/shadow 199, 326, 330 /etc/shells 342 /etc/skel 323 /etc/syslog.conf 611 /etc/X11/XF86Config 490 /etc/xinetd.conf 726, 735 ethereal 702 exec 249 exit 250 expand 141 export 260 exportfs 799 exportierte Variable 258 ext2 436, 438 ext3 436, 443
F ■■■■■■■■■■ FAT 437 fc 251 fdformat 481 fdisk 427
938
magnum Fedora Core Linux 36 Hilfe 103 Fedora Linux Druckerverwaltung 539 DSL einrichten 766 Hardware-Browser 433 Infozentrum 433 Installation 57 ISDN einrichten 764 Modem einrichten 762 Netzwerkkonfiguration 688 Paketverwaltung 82 Run-Control-Skripte 404 Samba einrichten 845 Soundkarte 279 Festplatte 630 Festplatten Partitionierung 426 verwalten 434 Festplattencontroller 411 IDE-Controller 411 Festplattenlaufwerke 413 Festplattenverwaltung 409 fgrep 194 file 151 File Completion Mechanismus 252, 257 File Descriptor 239 File Transfer Protocol 709, 735 Filehandle 791 Filter umask 207 find 186 finger 608, 736 fips 46 Firefox 768 Firewall 915 Bestandteile 916 Ketten 907 YaST 917, 920 fmt 142 fold 142 Fragezeichen 232 free 479, 567 fsck 424, 463 fsck.ext2 464 FTP 709, 712, 735 ftp 709
Stichwortverzeichnis
function 255 Funktionen 254 fuser 462
G ■■■■■■■■■■ Gaim 787 gated 743 Gateway 670 gawk 174 Gerätedateien 410, 424 blockorientiert 444 zeichenorientiert 444 Gerätenamen 410 Gerätetreiber 410, 589 getent 850 getfacl 222 GhostScript 520 GID 318, 329 Gnoppix 38 GNU-Projekt 30 gpasswd 321 Grafikkarte einrichten 492 Grafische Hilfe 100 grep 192 grip 306 groff 136 Groß- und Kleinschreibung 94 groupadd 316 groupdel 317 groupmod 317 groups 219, 319 grpck 320 grpconv 331 grpunconv 332 GRUB 377 YaST 384 grub 379 Gruppe 200, 315 ändern 317 anlegen 316 anzeigen 219 löschen 317 primäre Gruppe 201, 317 wechseln 219
Gruppenname 318 Gruppenpasswort 318 Gruppenverwaltung Fedora 363 KDE 346 YaST 350 guessfstype 455 gunzip 647 gzexe 648 gzip 645
H ■■■■■■■■■■ halt 407 Hard Link 444 Hardware 746 Hardwareanforderungen 45 Hardware-Browser Fedora Linux 433 Hardware-Informationen anzeigen 432 Hardwarekompatibilität 45 Hardwareverwaltung 40 hash 250 hashstat 256 head 123 Header-Formate 640 Hexadezimale Darstellung 153 Hierarchischer Verzeichnisbaum 40 Hilfe 100 Hilfebefehle 95, 96, 98 Hintergrundverarbeitung 41 Historie von Unix 27 history 252, 257 History-Funktion 252, 257 History-Liste 251, 252, 257 Hochkommata 237 /home 424 Homeverzeichnis 323, 329 host 874 hostname 601 hpfs 437 Hub 670 Hyperlink 768
939
magnum
Stichwortverzeichnis
I ■■■■■■■■■■ ICMP 694 ICMP Router Discovery 742 IDE-Controller 411 IDS 922 Aufbau 924 Möglichkeiten 923 ifconfig 675 ifdown 679 ifstatus 679 ifup 678 Imagefile erstellen 291 in.fingerd 736 in.ftpd 709, 735 in.telnetd 736 in.tftpd 736 Indirect Map 813 Indirektes Map 813 inetd 735 YaST 732 Infozentrum Fedora Linux 433 init 406 Initialisierungsdatei 246 ~/.bash_profile 246 ~/.cshrc 255 ~/.kshrc 346 ~/.profile 345 /etc/.login 255, 344 /etc/csh.cshrc 344 /etc/csh.login 344 /etc/profile 344 Inkrementelle Sicherung 627 Inode 114, 439, 441 Inodetabelle 439, 441 insmod 592 insserv 397 Installation Debian Linux 65 Fedora Linux 57 SUSE Linux 47 Vorbereitung 45
940
Internet 745 Chat(ten) 781 Downloads 769, 770 Herunterladen von Bildern 769 Herunterladen von Texten 769 suchen 770 URL 746 Internet Control Message Protocol 694 Internet Daemon 735 Internetzugang 746 Intrusion-Detection-Systeme 922 Typen 922 IP-Adresse 672, 721 iptables 907, 909 Targets 910 iptables-restore 915 iptables-save 914 iptraf 704 ISDN Anschluss 745 Fedora Linux 764 Karte 746 SUSE Linux 752 ISDN einrichten Fedora Linux 764 YaST 752 iso9660 437
J ■■■■■■■■■■ Jaz-Drives 630 jfs 437 Jobkontrolle 575
K ■■■■■■■■■■ K3b 296 Kaffeine 286 Kalenderausgabe 604 Kanotix 35, 38 KAudioCreator 310 kbd_mode 505 kbdrate 506 KBear 718 KCron 583 KDar 658
Stichwortverzeichnis
KDE Konqueror 158, 185, 196 Paketverwaltung 75 Kdiskfree 476 Kernel 41, 229 Aufgaben 41 Konfiguration 599 Module 589, 601 Kfloppy 482 kill 555, 568 killall 569 Kisdn 767 Klammern 233, 234, 236 KMail E-Mail einrichten 772 E-Mail empfangen 777 E-Mail schreiben 778 E-Mail-Ordner anlegen 780 kmix 276 kmLinux 33 Knopper, Klaus 37 Knoppix 35, 37, 386 Kommandointerpreter 229 Kommentarzeichen 235 Kompilieren 89 Konfigurationsdatei 94 DNS 858 Konqueror 158, 185, 196, 225, 768 Zugriffsrechte 225 Korn-Shell 245, 246 File Completion Mechanismus 252 History-Funktion 252 Kppp 767 KsCD 282 Kubuntu 33, 35 KWiFIManager 690
L ■■■■■■■■■■ Large File Support last 607 lastlog 610 Lautstärke 275 LDAP 850 Leserecht 201 Lesezeichen 769
436
less 117 LFS 436 Lightweight Directory Access Protocol 850 LILO YaST 375 lilo 369 Link Hard 444 symbolischer 444 Linux Bestandteile 41 Distribution 33, 41 Erhältlichkeit 39 Hardwareanforderungen 45 Historie 27 Kernel 41 LinuxPPC 33 ln 444 Local Area Network (LAN) 669 lockd 796 logger 615 Logische Partitionen 427 logname 332 logout 256 logrotate 615 Lokale Variable 258 Loopback 675, 721 /lost+found 424 lp 548 lpadmin 542 lpc 521, 544 lpd 517 lpdfilter 520 lpmove 544 lpr 552 lprm 553 LPRng 516 lp-Spooler 516 lpstat 550, 553 ls 110 lsattr 114 lsmod 591 lspci 418 lsusb 419
941
magnum
Stichwortverzeichnis
M ■■■■■■■■■■ MAC-Adresse 696 Major-Device-Number 411 make 90, 883 makedbm 884 MAKEDEV 417 Makefile 90 man 96 Mandatory Locking-Bit 210, 212 Mandrake Linux 36 Mandriva Linux 36 Manual Pages 95, 98 Master-Server 888 mcopy 483 md5sum 155 mdel 484 mdeltree 485 mdir 484 /media 425 Messenger-Dienste 787 Metatag 771 Metazeichen 232 mformat 485 Microsoft Windows 46 MIME 522 Minix 27, 32 Minor-Device-Number 411 Minuszeichen 238 mkdir 107, 444 mke2fs 446 mkefs.ext3 446 mkfs 445 mkfs.ext2 446 mkisofs 291 MkLinux 33 mknod 416, 444 mkreiserfs 452 mkswap 477 mmd 486 /mnt 425 MO-Datenträger 630
942
Modem 745, 746 Fedora Linux 762 SUSE Linux 747 Modem einrichten Fedora Linux 762 YaST 747 modinfo 595 modprobe 593 modules.dep 597 Monitor einrichten 492 more 116 Morphix 38 mount 456, 460, 803 Mounten 456, 460 Mountoption 457 Mountpoint 456 Mozilla 768 Bookmarks 769 Lesezeichen 769 MP3-Dateien 271 mrtd 742 mt 635 Mtools 483 muLinux 33 Multitasking 40 Multithreading 794 Multiuser-Fähigkeit 40 Murdock, Ian 34 mv 130
N ■■■■■■■■■■ Name Information Service Daemonen 886 Name Service Cache Daemon 853 Name Services 849 named 736, 860 named.conf 860 Namensauflösung 873 Namensdienste 725, 849, 850, 853 Namenskonvention 94 nawk 174 netstat 697 Network Filesystem 437, 791, 792
Stichwortverzeichnis
Network Information Service 850, 877 Befehle 883 Clients 890 Master-Server 888 Slave-Server 889 Network Information Service Plus 850 Netzmaske 673 Netzwerk 669, 745 Arten 669 Befehle 694 Daemons 735 Dateisystem 437 Drucker 519 Fähigkeit 40 heterogen 670 homogen 670 Informationen 697 Komponenten 670 Prozesse 735 Routing 739, 742 Scanner 899 Topologie 669 Netzwerkkonfiguration Fedora Linux 688 YaST 680 newgrp 219, 320 NFS 437, 791, 792 Dienste 793 Funktionen 808 Informationen 807 Konfiguration 803 Protokoll 791 Prozesse 793 Server 791, 794 NFS-Client 791, 794, 803 YaST 805 nfsd 794 NFS-Server einrichten YaST 799 nfsstat 807 nice 572 NIS 849, 850, 877 Befehle 883 Clients 890 Daemonen 886 Dateien 878
Datenbank 877 Domain 877 Maps 878, 880, 883 Master-Server 888 Slave-Server 889 YaST 891 NIS+ 850 nmdb 818 Noatun 288 nohup 572 nscd 854 nslookup 876 ntfs 437
O ■■■■■■■■■■ od 153 Offene Systeme 28 OGG-Vorbis 272 Oktalmethode 205 Online-Dienst 747 Open Source 32 /opt 425 Option 94 OSI-Referenzmodell 669, 671 Other 201
P ■■■■■■■■■■ Paging 476 Paketfilter 906, 916 iptables 907 Paketverwaltung 83, 88 Fedora Linux 82 KDE 75 YaST 79 Partition verändern 46 Partition Magic 46 Partitionierung 426 Partitionsnummer 411 Passwort 319, 323, 325, 330 Änderungsdatum 330 Maximumtage 330 Mindesttage 330 Warntage 330
943
Stichwortverzeichnis
Passwortablauf 325 Passwortsicherheit 902 Passwortvergabe 325 Passwortverschlüsselung 357 pdflush 476 Perens, Bruce 32 Pfadname 95 pgrep 566 Pharming 900 Phishing 900 pidof 574 ping 694 Pipe-Mechanismus 41, 241 pkill 570 Plattenlabel 439 Portabilität 40 portmap 793 Portnummer 727 Portscanner 899 POST 367 PostScript 520 poweroff 407 PPD 522 pppd 736 pr 143 Primäre Gruppe 201 Primäre Partition 427 printf 145 /proc 425, 460 procfs 438 Programm alsamixer 275 AlsaPlayer 285 amaroK 284 Ark 657 CD-Player 280 CD-Spieler 280 fips 46 Gaim 787 grip 306 K3B 296 Kaffeine 286 KAudioCreator 310 KBear 718 KCron 583 Kdar 658
944
magnum Kdiskfree 476 Kfloppy 482 Kisdn 767 kmix 276 Kppp 767 KsCD 282 KVirc3 781 KWiFIManager 690 Noatun 288 RealPlayer 287 SetGID-Bit 211 SetUID-Bit 210 Sticky-Bit 213 SWAT 835 Systemlast 585 Webmin 866 Xmms 283 xosview 587 Programmiersprache C 27, 255 Promptzeichen 93 Provider 745, 746, 747 Proxy 916 Prozess 425, 476 automatisch ausführen 577, 580 automount 811, 812 Dateisystem 460 gated 743 in.fingerd 736 in.ftpd 709, 735 in.telnetd 736 in.tftpd 736 inetd 725, 735 lockd 796 mrtd 742 named 736, 860 nfsd 794 nmdb 818 Paging 476 pdflush 476 portmap 793 pppd 736 radvd 743 rdisc 742 routed 741 rpc.mountd 736, 794 rpc.nfsd 736
Stichwortverzeichnis
rpc.portmap 737 rpc.yppasswdd 887 Signale 555 smdb 816 sshd 737 statd 737, 795 Swapping 476 tcpd 736 Verwaltung 558 xinetd 726, 735 ypbind 887 ypserv 886 ypxfrd 887 Zombieprozess 562 ps 558 Pseudo-Dateisystem 438 pstree 563 Public-Domain-Korn-Shell pwck 332 pwconv 331 pwd 110, 250 pwunconv 331
231
Q ■■■■■■■■■■ Quellcode kompilieren
89
R ■■■■■■■■■■ radvd 743 RAM-Speicher 476 Raymond, Eric 32 rcp 713 rdisc 742 RealPlayer 287 reboot 408 Rechnername 601 Red Hat Linux 36, 38 Redirektion 41 Reguläre Ausdrücke 167, 174, 179 rehash 256 reiserfs 436, 444 reiserfsck 466 reject 545 Rekursive Suche 186 Remote-Shell 714
renice 573 Repeater 670 resize_reiserfs 454 resize2fs 454 Resolver 873 Resource Records 862 restore 633 RIP 739 Ritchie, Dennis 27 R-Kommandos 737 rlogin 712 rm 127 rmd 486 rmdir 126 rmmod 594 /root 425 route 739 routed 741 Router 670 Routing 739, 742 Prozesse 741 Tabelle 739 YaST 744 Routing Information Protocol 739 RPC 699 rpc.mountd 736, 794 rpc.nfsd 736 rpc.portmap 737 rpc.yppasswdd 887 rpcinfo 699 rpm 73 RPM-Pakete installieren 73 rsh 714 Run Control-Skripte 393, 517, 793, 808 Aufbau 395 /etc/init.d/rc 393 Fedora Linux 404 neu erstellen 400 Runlevel 387 Überblick 388 Runlevel-Editor YaST 400
945
Stichwortverzeichnis
S ■■■■■■■■■■ Samba 437 Client 830 Daemonen 816 einrichten 816 Fedora Linux 845 Passwortsicherheit 826 Server einrichten 816 starten 830 Sicherheitslevel 829 SWAT 835 YaST 840 SaX 492 Grafikkarte einrichten 492 Monitor einrichten 492 /sbin 425 Schreibrecht 201 Schutzmaßnahmen 902 scp 716 Secure Shell 714 sed 170 Semikolon 235 Server 669, 670 set 247, 259, 264 setenv 264 setfacl 220 setfdprm 481 SetGID-Bit 210, 211 SetUID-Bit 210 sg 321 Shell 41, 42, 229, 230, 245 Alias-Funktion 253 Aufgaben 42 Funktionen 254 Skripte 265 Sonderzeichen 242 Variable 265 Shelloptionen 247, 256 noclobber 248 Shellvariable 259, 261, 264 anzeigen 259 COLUMNS 263 cwd 264 EDITOR 252, 262
946
magnum ENV 346 exportieren 260 exportierte Variable 258 filec 264 HISTFILE 252, 263 history 257 HISTSIZE 252, 263 HOME 262 home 264 IFS 262 LANG 262 LINES 263 LOGNAME 262 lokale Variable 258, 264 MAIL 262 MAILCHECK 262 MAILPATH 262 OLDPWD 263 PATH 262, 264 PPID 263 PS1 262 PS2 262 PS3 263 PS4 263 PWD 262 RANDOM 263 SECONDS 263 SHELL 262 shell 264 TERM 263, 264 term 264 TMOUT 263 Umgebungsvariable 258, 264 user 264 VISUAL 252, 263 showmount 806 shutdown 405 Sicherheit 897 Bedrohungen 898 Denial-of-Service-Attack 901 Netzwerk-Scanning 899 Paketfilter 906 Pharming 900 Phishing 900 Portscanner 899 Schutzmaßnahmen 902
Stichwortverzeichnis
Sniffer 899 Spoofing 900 Trojaner 898 Virus 898 Würmer 898 Sicherheitseinstellungen 359 Sicherheitskonzept 897 Sicherungslevel 627 Sicherungsstrategien 627, 628 Signale 555, 568 Skolelinux 33 Slackware 38 Slave-Server 889 smartctl 420 Smartmontools 420 smb.conf 819 smbclient 833 smbfs 437 smbmount 831 smbpasswd 826, 827 smbstatus 832 smbumount 832 smdb 816 Sniffer 899 Software deinstallieren 72 installieren 72 Sonderzeichen 95 quotieren 237 Sonderzugriffsrechte 210 sort 146 Soundkarte einrichten 272 Lautstärke regeln 275 YaST 277, 279 Spezielle Zugriffsrechte 210 Spoofing 900 Spracheinstellung 362 /srv 425 ssh 714 sshd 737 Stallman, Richard 31 Standardausgabe 239 Standardeingabe 239 Standardfehlerausgabe 239 statd 737, 795
Stern 233 Sticky-Bit 210, 213 Streameditor 170 Streamer 630 Strichpunkt 235 stty 504 su 333 Subnetzmaske 673 Subshell 236 Suchbefehle 186 Suchkriterien 186 Suchmaschinen 771 Suchmuster 180, 192 sudo 335 sum 154 Superblock 439, 440 SUSE Linux 33 Hilfe 100 Installation 47 SuSEconfig 512 Swap 438 grafisch verwalten 480 swapoff 479 swapon 478 Swap-Partition 50, 62, 69, 438, 477 Swapping 476, 477 SWAT 835 Switch 670 swsusp 408 Symbolische Methode 204 Symbolischer Link 444 sync 476 /sys 425 sysfs 438 Systembenutzer anzeigen 607 Systeminformationsbefehle 601 Systemlast 585 Systemmeldung 611 Systemprotokollierung 611
T ■■■■■■■■■■ tac 125 tail 123 Tanenbaum, Andrew Tape Devices 630
32
947
magnum
Stichwortverzeichnis
tar 636 Tastatur Maus einrichten 507 tcpd 736 tcpdump 700 TCP/IP 791 TC-Shell 231 tee 126 telinit 406 telnet 706 Terminalname 504 testparm 826 Texteditor joe 168 Texteditor vi 164 TFTP 736 The Open Group 29 Thompson, Ken 27 Tildezeichen 238 time 573 Timesharing 40 /tmp 425 tmpfs 438 Tools 43 top 564 Top-Level-Domain siehe Länderkennzeichen Torvalds, Linus 27 touch 108, 444 tr 148 traceroute 695 trap 250, 571 Treiber 589 Trivial File Transfer Protocol 736 T-Shell 231 tty 504 tune2fs 449 tunelp 547 type 250 typeset 251, 255
948
U ■■■■■■■■■■ Ubuntu 35 UCB 28 udf 437 ufs 437 Uhrzeitausgabe 602 UID 329 ulimit 250 umask 207, 250 Umgebungsvariable 258 Umlaut 95 Umlenkungszeichen 239 umount 461, 803 uname 601 UND-Verknüpfung 235 unexpand 149 unhash 256 uniq 150 University of California in Berkeley Unix Historie 27 Unmounten 461 unset 260, 264 unzip 648 update-rc.d 397, 398 URL 746 USB-Geräte 419 USB-Stick 386 useradd 323, 324 userdel 328 usermod 327 /usr/src/linux 599
28
Stichwortverzeichnis
V ■■■■■■■■■■ /var 425 Variable 265 /var/lib/nfs/rmtab 794 /var/log/messages 611 /var/mail 262 /var/spool/atjobs 577 /var/spool/cron/allow 582 /var/spool/cron/deny 582 /var/spool/cron/tabs 582 /var/yp 878 /var/yp/Makefile 880, 881 /var/yp/nicknames 882 /var/yp/securenets 882 Versteckte Datei 94, 232 Verteiltes Dateisystem 40, 791 Verzeichnis 444 / 424 anlegen 107 anzeigen 110 /bin 424 /boot 424 /dev 410, 424 /etc 424 /etc/cups 523 /etc/init.d 394 /etc/init.d/rc?.d 393 /etc/rc?.d 393 /etc/skel 323 /home 424 kopieren 128 löschen 126, 127 /lost+found 424 Mandatory Locking-Bit 212 /media 425 /mnt 425 /opt 425 /proc 425 /root 425 /sbin 425 SetGID-Bit 211 /srv 425 Sticky-Bit 213 /sys 425 /tmp 425
umbenennen 130 /usr 425 /var 425 /var/mail 262 /var/spool/atjobs 577 /var/spool/cron/tabs 582 /var/yp 878 verschieben 130 wechseln 109 Verzeichnisbaum 424 Verzeichnisverwaltungsbefehle 107 vfat 437 vi 164, 168 Videodatei abspielen 286 vidmode 491 Virtuelle Speicherverwaltung 40 Vollsicherung 627 vxfs 437
W ■■■■■■■■■■ w 610 Warteschlange 517 WAV -Dateien 271 wc 152 Webbrowser 768 Webmin 866 Website 768 Wechselmedien 808 Wechselplatte 630 whatis 99 whereis 156 which 150 who 605 whoami 607 Wide Area Network (WAN) WLAN einrichten 690 Karte einrichten 690 YaST 693 World Wide Web 746 WORM-Geräte 630 Worte zählen 152
669
949
magnum
Stichwortverzeichnis
X ■■■■■■■■■■ Xandros 35 xargs 156 xf86config 486 xfs 437 xinetd 735 YaST 732 Xmms 283 X/Open 28 xosviewn 587
Y ■■■■■■■■■■ YaST Automounter 815 Datensicherung 651 DMA-Modus 423 DNS einrichten 869 Druckerverwaltung 531 DSL einrichten 758 Festplatten verwalten 434 Firewall 917, 920 Grafikkarte einrichten 492 Hardware-Informationen 432 inetd 732 ISDN einrichten 752 Maus einrichten 507 Modem einrichten 747 Monitor einrichten 492 Netzwerkkonfiguration 680 NFS-Client einrichten 805 NFS-Server einrichten 799 NFS-Server starten 802 NIS einrichten 891 Paketverwaltung 79 Routing 744 Runlevel-Editor 400 Samba einrichten 840 Sicherheitseinstellungen 359 Soundkarte 277 Swap verwalten 480 WLAN einrichten 693 xinetd 732
950
Yoper 33 ypbind 887 ypcat 885 ypinit 883 ypmatch 886 yppasswd 886 yppoll 884 yppush 884 ypserv 886 ypset 885 ypxfr 884 ypxfrd 887
Z ■■■■■■■■■■ zcat 647 Zeichen zählen 152 Zeilen zählen 152 zip 648 Zip-Drives 630 Zombieprozess 562 Z-Shell 231 Zugriffsdatum 108 Zugriffsrechte 199, 201 Access Control Lists (ACLs) 220 anzeigen 200 Mandatory Locking Bit 210 SetGID-Bit 210 SetUID-Bit 210 setzen 203 Sonderzugriffsrechte 210 Sticky Bit 210 überprüfen 202 umask 207 Zugriffsrechte setzen Oktalmethode 205 symbolische Methode 203 Zylindergruppe 439, 440 Zylindergruppenblock 439, 440
Copyright Daten, Texte, Design und Grafiken dieses eBooks, sowie die eventuell angebotenen eBook-Zusatzdaten sind urheberrechtlich geschützt. Dieses eBook stellen wir lediglich als persönliche Einzelplatz-Lizenz zur Verfügung! Jede andere Verwendung dieses eBooks oder zugehöriger Materialien und Informationen, einschliesslich •
der Reproduktion,
•
der Weitergabe,
•
des Weitervertriebs,
•
der Platzierung im Internet, in Intranets, in Extranets,
•
der Veränderung,
•
des Weiterverkaufs
•
und der Veröffentlichung
bedarf der schriftlichen Genehmigung des Verlags. Insbesondere ist die Entfernung oder Änderung des vom Verlag vergebenen Passwortschutzes ausdrücklich untersagt! Bei Fragen zu diesem Thema wenden Sie sich bitte an:
[email protected] Zusatzdaten Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei. Die Zurverfügungstellung dieser Daten auf unseren Websites ist eine freiwillige Leistung des Verlags. Der Rechtsweg ist ausgeschlossen. Hinweis Dieses und viele weitere eBooks können Sie rund um die Uhr und legal auf unserer Website
http://www.informit.de herunterladen