X.systems.press ist eine praxisorientierte Reihe zur Entwicklung und Administration von Betriebssystemen, Netzwerken und Datenbanken.
Christine Wolfinger
Christine Wolfinger arbeitet seit 1983 im Umfeld von Unix/Linux. Nach dem Aufbau einer Abteilung für Dokumentation von Unix-Systemen übernahm sie die Leitung des Seminar-Centers eines Münchner Systemhauses. Mit didaktischem Gespür entwickelte sie in Zusammenarbeit mit Fachleuten erste UnixSeminare und führte diese erfolgreich durch. Aus den Schulungserfahrungen entstand ihr erstes Buch Keine Angst vor Unix, das stets aktualisiert, dann um Linux erweitert wurde und inzwischen in der 10. Auflage vorliegt. Seit einigen Jahren arbeitet Frau Wolfinger freiberuflich als Fachautorin und führt Seminare für Firmen, Ministerien und Institute im In- und Ausland durch. Das Spektrum reicht dabei von Anwendersoftware über Unix/Linux, Entwicklungsumgebungen und Systemverwaltung bis hin zu Netzwerken. Ferner arbeitet sie immer wieder in IT-Projekten mit. Jürgen Gulbins
Jürgen Gulbins studierte Informatik an der TU Karlsruhe. Nach einer Tätigkeit an der Universität ist er seit 1983 in der Industrie als Entwicklungsleiter für Unix, Produktmanager und Berater tätig. Nach dem Aufbau des IXOS CompetenceCenters in Walldorf arbeitete er als DMS-Berater, danach im Bereich der Produktdefinition und Architektur. Nach zwei Jahren bei einem Internet-Startup, zuständig für IT-Security und die interne IT, ist er seit Anfang 2002 selbständiger Berater für DMS und Sicherheitsfragen – und freier Autor. Das Spektrum seiner Bücher reicht von Unix/Linux bis zu FrameMaker, Typographie, DMS und digitale Fotografie. Carsten Hammer
Carsten Hammer studierte Informatik an der TU Braunschweig. Seit seiner Promotion arbeitet er in Research- and Development-Abteilungen großer Technologie-Unternehmen. Er war als Entwickler und Projektleiter in einer Vielzahl von Softwareprojekten tätig und ebenso als Gutachter für die Europäische Gemeinschaft. Seit über 15 Jahren ist er für Softwareentwicklungen auf Unix-Systemen mit den Schwerpunkten Parallelität und Simulation zuständig. Ab Mitte der 90er gehört dazu mit zunehmender Bedeutung auch Linux.
Christine Wolfinger Jürgen Gulbins Carsten Hammer
LinuxSystemadministration Grundlagen, Konzepte, Anwendung
Mit 111 Abbildungen und 24 Tabellen
123
Christine Wolfinger
Jürgen Gulbins
Ortlindestr. 6 81927 München
[email protected] www.ChristineWolfinger.de
Kapellenstr. 15 75210 Keltern
[email protected] www.gulbins.de
Carsten Hammer Schwedensteinstr. 26 A 81827 München
Bibliografische Information der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.
ISBN 3-540-20399-0 Springer-Verlag Berlin Heidelberg New York Dieses Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere die der Übersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfilmung oder der Vervielfältigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfältigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der jeweils geltenden Fassung zulässig. Sie ist grundsätzlich vergütungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. Haftungshinweis: Trotz sorgfältiger Prüfung übernehmen weder Springer noch die Autoren eine Haftung für die Inhalte der in diesem Buch zitierten Internet-Seiten. Für den Inhalt der zitierten Seiten und auch der mit diesen Seiten wieder verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich. Alle Abbildungen und Texte in diesem Buch sind mit größter Sorgfalt erstellt worden. Trotzdem können Fehler nicht ausgeschlossen werden. Weder Springer noch die Autoren übernehmen irgendeine Haftung für direkte, indirekte, zufällige Schäden oder Folgeschäden, die sich im Zusammenhang mit der Anwendung der in diesem Buch gegebenen Sachinformationen ergeben. Springer ist ein Unternehmen von Springer Science+Business Media springer.de © Springer-Verlag Berlin Heidelberg 2005 Printed in Germany Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daß solche Namen im Sinne der Warenzeichen- und Markenschutzgesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Umschlaggestaltung: KunkelLopka, Heidelberg Satzerstellung durch die Autoren mit FrameMaker Herstellung: LE-TEX Jelonek, Schmidt & Vöckler GbR, Leipzig Gedruckt auf säurefreiem Papier 33/3142YL - 5 4 3 2 1 0
Vorwort Dieses Buch bietet einen praxisorientierten Einstieg in die Systemadministration von Linux. Da SUSE Linux-Technologieführer in Deutschland ist und vor allem auch über eine deutsche Benutzerführung verfügt, wurde diese Distribution zugrunde gelegt. Sollten Sie selbst mit einer anderen Distribution arbeiten, bietet dieses Buch trotzdem wertvolle Hinweise, und Sie erlernen die Grundlagen, die Sie befähigen, auch andere Linux-Systeme zu verstehen und zu verwalten. Die Grafiktools sind bei den unterschiedlichen Linux-Anbietern, zum Teil auch bei unterschiedlichen Versionen, zwar verschieden in der Darstellung, doch die den Tools zugrundeliegenden Kommandos sind weitgehend gleich. Da Linux immer mehr von Privatpersonen und in kleinen und mittleren Unternehmen eingesetzt wird, hier aber die Mittel für teure Administrationskurse oft eingeschränkt sind, entstand die Idee zu diesem Buch. Es basiert auf einer Kursserie von etwa 20 Tagen, die eine Einführung in die Systemverwaltung, Administration und Netzwerkgrundlagen unter Linux beinhaltet. Die Kurse wurden von der Hauptautorin ausgearbeitet und viele Male erfolgreich gehalten. Systemverwaltung/Administration baut auf dem Einführungskurs für Anwender auf, zu dem auch das Buch ›Keine Angst vor Linux/Unix‹ im Springer-Verlag erschienen ist. Das Buch ›Linux‹ vom Co-Autor Jürgen Gulbins empfiehlt sich als Ergänzung und als umfangreiches deutsches Nachschlagewerk. Mit Linux als Anwender zu arbeiten ist mindestens genauso leicht zu erlernen wie das Arbeiten unter Windows oder Macintosh. Wer etwas Erfahrung mit grafischen Oberflächen hat (also mit Maus und Desktop zurechtkommt), wird mit einer gewissen Neugier und Mut sich selbst relativ zügig einarbeiten können. Doch bei der Administration reicht es nicht aus, mutig zu sein, dies könnte sogar gefährlich werden! Hierfür ist ein gesundes Grundwissen erforderlich und dieses Buch soll Ihnen dabei helfen. Die begleitenden Unterlagen bzw. die Online-Dokumentation der Distributoren, speziell auch von SUSE, sind zwar gut aufbereitet und sehr hilfreich, doch durch die mannigfachen Möglichkeiten, einen Rechner zu installieren und zu administrieren, für den Einsteiger oft erdrückend. Mit der grafischen Oberfläche und den hilfreichen Tools unter YaST – dem Standard-Administrationswerkzeug des SUSE Linux-Systems – sind für den Systemverwalter viele Stolpersteine und Fehlerquellen aus dem Weg geräumt, doch in diesem Buch wird auch auf die direkte Kommandoeingabe über Terminal eingegangen. Sie ist manchmal die schnellere Methode und für einige Aufgaben sogar unverzichtbar. Zwar sollte bei der Verwaltung eines Rechners nicht die Geschwindigkeit, sondern die Sorgfalt und Gewissenhaftigkeit an erster Stelle stehen – doch wenn Sie z.B. 100 neue Benutzer anlegen wollen, dann ist die Eingabe über die grafische Oberfläche ineffizient und zu zeitaufwendig gegenüber einem kleinen selbstgeschriebenen Skript von etwa fünf Zeilen.
V
Am besten lernen Sie den Umgang mit der Systemverwaltung, wenn Sie selbst einen PC umrüsten/aufrüsten auf Linux. Linux lässt sich bequem parallel zu anderen Betriebssystemen (z.B. Windows) installieren – am besten auf einer zusätzlichen Festplatte. Schwierigkeiten machen eigentlich nur PCs mit brandneuen oder nicht so gebräuchlichen Geräten, deren Treiber unter Linux noch nicht verfügbar sind. Doch meist finden sich auch hierfür Lösungen. Hinweise dazu erhalten Sie über die Support-Datenbank von Linux oder im Internet. Die Linux-Gemeinde ist zwischenzeitlich enorm angewachsen und hilft in Foren und im Internet mit bereitgestellten Hinweisen – als Linux-Anwender werden Sie nie allein gelassen. Auch einige Zeitschriften bringen immer wieder hervorragende Artikel und gute Tipps für die Verwaltung von Linux-Systemen. Im Anhang finden Sie hierzu wichtige Webadressen. Dieses Buch wird Ihnen das nötige Wissen vermitteln, Systemverwalter zu sein. Sie werden sehen, es macht Spaß, mit Linux zu arbeiten. Die Autoren wünschen Ihnen hierzu Geduld, Zuversicht, die nötige Neugier und natürlich viel Erfolg. Auch dieses Buch wird – wie die anderen Bücher von Christine Wolfinger und Jürgen Gulbins – von dem Unix-Wurm Wunix begleitet, der zeigen soll, dass vielleicht auch in Linux manchmal ein wenig der Wurm drin ist. Die Wunix-Zeichnungen stammen von der Grafikerin Angela Amon. Besonderen Dank möchten wir an dieser Stelle der Firma SUSE aussprechen, die uns verschiedene Versionen zu Testzwecken zur Verfügung gestellt hat. Hier auch herzlichen Dank an Dr. Oliver Wittenburg, der uns viele Fachfragen beantworten konnte. Ganz besonderer Dank gilt auch Herrn Hans Peter Dittler von der Firma BRAINTEC, der uns in Fragen bezüglich des Netzwerks kompetente und ausführliche Informationen gab. Auch möchte sich die Autorin bei der Firma soluzione bedanken, die oft Spezialfragen während ihrer Kurse schnell und kompetent beantwortete, hier im besondern bei Herrn Gabriel Lobstein und Herrn Frank Thomas Drews. Sollten einige Kapitel oder Teile nicht klar verständlich sein oder gar Fehler aufweisen, würden wir uns freuen, wenn Sie uns dies mitteilen. Unsere E-Mail-Adresse:
[email protected]. Nachträge und Berichtigungen finden Sie unter www.ChristineWolfinger.de. Auch wenn Ihnen unser Buch gefallen hat, freuen wir uns über ein Feedback. Vielen Dank im voraus. Die Autoren Christine Wolfinger, Jürgen Gulbins, Carsten Hammer München, Niebelsbach, Oktober 2004 VI
Inhaltsverzeichnis
1 1.1 1.2 1.3
Einleitung ........................................................................................1 Voraussetzungen für den Systemverwalter .........................................2 Wechseln in den Systemverwaltermodus............................................4 Verantwortung, Rechte und Aufgaben...............................................8
2 2.1 2.2 2.3
Was Linux bietet, was Linux braucht ...........................................11 Warum Linux? .................................................................................12 Einsatzmöglichkeiten von Linux........................................................14 Linux-Systemvoraussetzungen ..........................................................16
3 3.1 3.2 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.3.7 3.3.8 3.4 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.5 3.6 3.7
Installation .....................................................................................19 Was geschieht bei der Installation?...................................................20 Die Wahl der Distribution.................................................................20 Vorbereitung ...................................................................................21 Sicherung bestehender Systeme/Dateien.....................................22 Systemvoraussetzungen..............................................................23 Parallelinstallation zu bestehenden Systemen ..............................24 Platz schaffen .............................................................................25 Platten, Partitionen und Bootrecords...........................................27 Wahl des Dateisystems ...............................................................33 Krypto-Dateisysteme...................................................................34 Bootmanager: LILO oder GRUB? .................................................37 Installation – ein Beispiel ..................................................................48 Installation von CD/DVD .............................................................49 Start der Installation....................................................................50 Anpassung .................................................................................51 Start der eigentlichen Installation ................................................56 Konfiguration .............................................................................57 Notebooks .......................................................................................58 Deinstallation ...................................................................................61 Zusammenfassung in Stichworten....................................................64
4 4.1 4.2 4.3 4.4 4.5 4.6 4.7
Der Bootvorgang...........................................................................65 Was passiert beim Hochfahren eines Rechners?................................66 /etc/inittab .......................................................................................68 Runlevel unter Linux.........................................................................70 Der init-Befehl..................................................................................74 Startprotokoll...................................................................................75 Runlevel-Editor.................................................................................77 Zusammenfassung in Stichworten....................................................78
VII
Inhaltsverzeichnis
VIII
5 5.1 5.1.1 5.2 5.3 5.3.1 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 5.5 5.6 5.7 5.8 5.9 5.10 5.11
Benutzerverwaltung .....................................................................79 Was passiert beim Anmelden eines Benutzers?.................................80 Vorbereiten der Arbeitsumgebung für den Benutzer...................81 Voreinstellungsdateien für den Benutzer ..........................................83 Das Linux-Einwohnermeldeamt ........................................................84 /etc/passwd, /etc/shadow und /etc/group....................................84 Neue Benutzer anlegen....................................................................89 Anlegen und Ändern von Benutzern über YaST ..........................89 Das Vorlagenverzeichnis /etc/skel ................................................91 Benutzer anlegen per useradd ....................................................91 Passwortverschlüsselung .............................................................93 Passwort ändern .........................................................................93 Benutzereinstellungen ändern per usermod......................................94 Benutzer löschen per userdel ...........................................................94 Neue Gruppen anlegen, ändern, löschen .........................................95 Überlegungen zur Benutzerverwaltung ............................................96 Kommandos zur Bearbeitung von Benutzern und Gruppen ..............97 Dateien und Verzeichnisse für die Benutzerverwaltung.....................97 Rückblick in Stichworten ..................................................................98
6 6.1 6.2 6.2.1 6.2.2 6.2.3 6.3 6.3.1 6.3.2 6.3.3 6.4 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.5.5 6.5.6 6.6 6.6.1 6.6.2 6.7
Umgang mit Dateisystemen .........................................................99 Linux-Dateisysteme ........................................................................100 Wichtige Dateisystemoperationen ..................................................108 Automatisches Mounten beim Hochfahren...............................110 Manuelles Ein- und Aushängen von Dateisystemen...................113 Kommandos über Informationen zum Dateisystem ...................117 Der Linux-Dateibaum .....................................................................120 Das Root-Verzeichnis ›/‹ ............................................................120 Verzeichnisse unter /usr ............................................................124 Der Verzeichnisbaum in /var .....................................................126 Dateiverwaltung mit grafischen Tools.............................................126 Unterschiedliche Dateitypen und Zugriffsrechte..............................128 Verändern von Zugriffsrechten..................................................132 Voreinstellung über umask .......................................................133 Sonderrechte durch das Sticky-Bit .............................................134 Sonderrechte durch das SUID- und SGID-Bit..............................135 Verfeinerte Zugriffsrechte – ACLs..............................................135 Besitzer- und Gruppenwechsel..................................................137 Allgemeine Hinweise zu Dateien ....................................................139 Dateizuordnungen....................................................................140 Bedeutung häufiger Dateiendungen (Suffixe) ...........................141 Wissenszweig Dateiverwaltung ......................................................145
7 7.1 7.2 7.3 7.4 7.5
Geräte unter Linux ......................................................................147 Eigenschaften von Gerätedateien...................................................148 Informationen über Hardware........................................................150 Neue Hardware hinzufügen ...........................................................151 Einrichten eines Druckers ...............................................................153 Zusammenfassung in Stichworten..................................................156
Inhaltsverzeichnis
8 8.1 8.1.1 8.2 8.2.1 8.3 8.3.1 8.3.2 8.4 8.5 8.6
Das Linux-Drucksystem................................................................157 Linux-Print-Spooling .......................................................................158 Basismechanismen des Unix-/Linux-Print-Spoolings....................162 Das CUPS-Print-Spooling-System ....................................................166 Zugang zum CUPS-System ........................................................167 Kommandos zum Drucken und zur Spooling-Verwaltung ...............168 Druckaufträge starten ...............................................................168 Kommandos zur Spooling-Verwaltung ......................................172 CUPS-Administration......................................................................174 Die Konfigurationsdateien zu CUPS ................................................182 Rückblick in Stichworten zum Thema Drucken................................184
9 9.1 9.2 9.3 9.4 9.4.1 9.4.2 9.5 9.5.1 9.6 9.6.1 9.6.2 9.6.3 9.7 9.8 9.9
Datensicherung............................................................................185 Überlegungen zur Datensicherung .................................................186 Sicherungsmedien ..........................................................................188 Vollsicherungen, inkrementelle und laufende Sicherungen .............191 Sichern unterschiedlicher Bereiche..................................................192 Sichern einzelner Dateien mit cp ...............................................192 Sichern von Dateibäumen .........................................................195 Sicherung ganzer Platten................................................................206 Duplizieren von Dateisystemen mittels dd und partimage..........206 Dateisysteme oder Verzeichnisse synchronisieren............................209 rsync.........................................................................................210 unison ......................................................................................214 InterMezzo und InterSync .........................................................217 Sicherheitsaspekte bei der Datensicherung .....................................218 Weitere Sicherungswerkzeuge im Überblick ...................................219 Sichern der Stichworte ...................................................................220
10 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.10.1 10.10.2 10.11 10.12
Prozessverwaltung.......................................................................221 Prozesse .........................................................................................222 Eigenschaften von Prozessen ..........................................................222 Steuerung der Prozesse über Signale ..............................................224 Prioritäten setzen ...........................................................................227 Jobcontrol ......................................................................................228 Weitere Programme zur Steuerung von Prozessen ..........................229 Im Namen der root – su, sudo und Co ............................................232 Programme für die grafische Oberfläche starten .............................238 Prozesse, die ihre Eltern überleben .................................................240 Zeitgesteuerte Prozesse ..................................................................241 At-Kommandos ........................................................................242 Zeitgesteuerte Arbeiten mit crontab ..........................................244 Zusammenfassung .........................................................................248 Schließen der Prozessakte...............................................................250
11 11.1 11.2 11.2.1
Netzwerke unter Linux................................................................251 Was erwartet Sie ............................................................................252 Grundlagen der Kommunikation in Netzwerken .............................253 Hardwarevoraussetzungen für ein Netzwerk .............................254
IX
Inhaltsverzeichnis
X
11.2.2 11.2.3 11.2.4 11.2.5 11.3 11.3.1 11.3.2 11.4 11.5 11.5.1 11.5.2 11.5.3 11.5.4 11.5.5 11.6 11.7 11.8 11.8.1 11.8.2 11.8.3 11.8.4 11.8.5 11.8.6 11.8.7 11.8.8 11.8.9 11.8.10 11.8.11 11.9 11.9.1 11.9.2 11.10 11.11 11.12 11.12.1 11.13 11.13.1 11.13.2 11.13.3 11.13.4 11.14 11.15 11.15.1 11.15.2 11.16 11.16.1 11.16.2 11.17
TCP/IP – das einheitliche Kommunikationsprotokoll..................256 Wie funktioniert TCP/IP? ..........................................................259 Internetadressen mit IPv4..........................................................260 Anmerkung zu IPv6 ..................................................................269 Konfigurieren eines internen Netzes...............................................270 Konfigurieren der Netzwerkkarten ............................................270 Kommandos zur Information und Kontrolle ..............................274 Entferntes Anmelden und Datenaustausch.....................................276 ssh – der sichere Weg von A nach B...............................................278 Dateien über Netzwerk kopieren...............................................280 Grafische Programme starten (X11) über ssh.............................281 Authentifizierung per digitalen Schlüsseln.................................281 Weitere Hinweise zu ssh ...........................................................283 sftp-Aufruf über Terminal und über den Konqueror..................285 NFS und NIS ...................................................................................286 Benutzer und Gruppen netzwerkweit verwalten mit NIS.................290 Samba – die Brücke zwischen Betriebssystemen .............................291 Wichtige Programme/Dateien von Samba .................................292 Installation und Konfiguration von Samba.................................293 Konfiguration mit SWAT........................................................... 294 Zugriff auf den Samba-Rechner von Windows aus ....................300 Zusätzliche Freigaben unter SWAT SHARES...............................301 Kontrolle über SWAT VIEW.......................................................303 Kontrolle und Steuerung über SWAT STATUS ...........................306 Hinweise zur Version Samba 3.x ...............................................307 Konfiguration von Samba über YaST.........................................307 Nutzen des SMB-Clients............................................................309 Das Wichtigste über Samba zusammengefasst..........................310 Kommunikation mit Apple Mac OS.................................................311 Zugriffe auf freigegebene Linux-Verzeichnisse...........................313 Von Linux zu Mac OS X-Systemen.............................................314 Der Weg zur weiten Welt übers Internet ........................................316 Konfigurieren eines Analog- oder ISDN-Modems............................317 Einrichten der KMail als Mail-Client................................................322 Kontakte und Nachrichten aus Outlook übernehmen................326 Wichtige Aspekte zur Sicherheit.....................................................329 Netzwerkdienste – wer hat Zugang?.........................................330 Zum Thema Firewall..................................................................331 Einrichten einer Firewall ............................................................333 Firewall-Prüfung .......................................................................335 Linux-Rechner als Gateway und DNS-Server ...................................336 Netzplanung ..................................................................................339 Netztopologie...........................................................................341 Geschwindigkeit .......................................................................341 Zusammenfassung .........................................................................342 Wichtige Netzwerkdateien........................................................343 Aufstellung einiger Portnummern .............................................344 Stichworte, die zum Netzwerk gehören..........................................345
Inhaltsverzeichnis
12 12.1 12.2 12.3 12.4 12.5
Software nachinstallieren ...........................................................347 Installation mit YaST.......................................................................348 YOU – YaST-Online-Update............................................................349 Pakete installieren mit RPM ............................................................351 Installation von tar-Paketen ............................................................357 Die wesentlichen Stichpunkte.........................................................361
13 13.1 13.2 13.3 13.3.1 13.3.2 13.3.3 13.3.4 13.3.5 13.3.6 13.3.7 13.3.8 13.4 13.4.1 13.4.2 13.5 13.6 13.7 13.8
Hilfe zur Selbsthilfe .....................................................................363 Ordnung ist das halbe Leben ..........................................................364 Selbstauskunft................................................................................365 Online-Hilfen: man, info und Co.....................................................367 Hilfemeldungen ........................................................................367 whatis apropos? .......................................................................368 man – das Manual ....................................................................368 info...........................................................................................370 man und info im Browser..........................................................371 Hilfesysteme mit grafischer Oberfläche......................................373 ›Wie man‘s macht‹ – HOWTOs..................................................374 FAQs und Guides ......................................................................375 Hilfe im Internet .............................................................................375 Support-Datenbanken...............................................................375 Online-Foren, Usergroups und Newsgroups ..............................376 Notfall-CD und Knoppix .................................................................376 Root-Passwort vergessen ................................................................378 Wenn die Maus nicht funktioniert ..................................................379 Tastaturlayout ................................................................................380
A A.1 A.2 A.3
Literaturhinweise und Quellenangaben .................................. 383 Bücher und Artikel aus Zeitschriften ...............................................383 Zeitschriften zum Thema Linux .......................................................385 Linux-Informationen im Internet .....................................................385
B
Glossar ........................................................................................ 391
C C.1 C.2 C.3 C.4 C.5
Kurzreferenz Administration .................................................... 407 Kommandoüberblick nach Funktionen ........................................ 408 Kommandos alphabetisch ............................................................ 415 Bash (bash) – die Standard-Shell unter Linux ................................. 451 Editoren vi (vim) und batchorientierte Tools .................................. 462 Wichtige Verzeichnisse und Dateien ............................................. 467
D
Stichwortverzeichnis .................................................................. 471
XI
Konventionen zu diesem Buch Um Ihnen das Arbeiten mit diesem Buch zu erleichtern, sind wichtige Stichwörter in halbfett hervorgehoben. Soweit wie möglich werden Begriffe, sobald sie das erste Mal auftauchen, in Klammern mit kursiver Schrift erläutert. Ebenso werden Ableitungen aus dem Englischen oder auch die oftmals bekanntere englische Bezeichnung in Klammern kursiv erläutert. Die Syntax wichtiger Kommandos wird in einer Box hervorgehoben mit anschließender Erläuterung der Optionen und Parameter: ps [-eaxfl] [-u Benutzer] Kommando, um den Status der Prozesse anzuzeigen
-e
(every) zeigt alle Prozesse an
-a
(all) zeigt alle Prozesse an, denen ein Terminal zugeordnet ist ...
[ ] kennzeichnen hierbei mögliche Optionen. Die Klammer selbst wird bei der Kommandoeingabe nicht mitgeschrieben. Kursiv dargestellt sind Bezeichnungen, für die beim Aufruf des Kommandos die entsprechenden aktuellen Namen einzusetzen sind. Soweit Beispiele nicht als Terminaleingabe gezeigt werden, wird die Kommandoeingabe folgendermaßen dargestellt: useradd -m -p $( mkpasswd hans123 ) hans Benötigen Kommandoeingaben mehr Platz, als in einer Zeile dargestellt werden kann, trennt ein ›\‹ die nachfolgende Eingabezeile (dies entspricht auch der Syntax einer Shell-Eingabe). Das Kommando kann ohne dieses Zeichen in einer Zeile eingegeben werden. Beispiele auf Terminalebene sind in Courier dargestellt, die Kommandoeingabe selbst ist fett hervorgehoben. Bei Beispielen, in denen es nicht notwendig ist, den gesamten Prompt zu zeigen, sind bei Benutzereingaben oft nur das Größerzeichen (>), bei Root-Eingaben das Nummernzeichen (#) als Prompt-Hinweis verwendet worden: chr2@JOGYLI:~> su carsten Password: carsten@JOGYLI:/home/chr2>
In Courier werden auch Inhalte von Dateien dargestellt:
XII
# /etc/inittab ... id:5:initdefault:
Eine Tastenkombination wird angezeigt mit . Die Kombination <Strg+d> bedeutet demnach, dass die Steuerungs1- oder Kontrolltaste zusammen mit ›d‹ gedrückt wird. Menüfolgen für grafisch aufbereitete Programme unter SUSE Linux KDE werden durch Pfeile gekennzeichnet: System R Überwachung R Systemüberwachung Der Begriff ›Terminal‹ bezieht sich, ohne dass wir es extra erwähnen, in der Regel auf ein Terminalfenster in der grafischen Oberfläche. Literaturhinweise und Quellenangaben sind im Anhang A durchnumeriert, Verweise hierauf im Text sind mit z.B. [10] gekennzeichnet. Noch ein Wort zur Schreibweise von SUSE: Die ursprüngliche Schreibweise S.u.S.E (Software- und System-Entwicklungs GmbH seit Mai 1996) wurde später in SuSE geändert, und seit der Übernahme von SuSE durch die Firma Novell (2004 ab Version 9.1) heißt es jetzt SUSE. Um Bildschirmfotos (die meisten aus YaST) lesbar darzustellen, wurden sie bearbeitet. In der Regel sind Leerflächen reduziert und ohne Hilfetext wiedergegeben. Die Proportionen stimmen somit nicht immer mit dem Original überein (siehe nachfolgendes Bild). In Folgebeispielen wird der YaST-Rahmen nicht wiederholt.
Bildschirmfoto und seine überarbeitete Darstellung
1. Die Taste <Strg> (Steuerung) ist auf einigen Tastaturen auch mit (Control) bezeichnet.
XIII
Kapitel 1 Einleitung
Ob es nun Administrator oder Systemverwalter heißt – wichtig ist, dass er oder sie sich dieser vielseitigen und verantwortungsvollen Aufgabe stets voll bewusst ist. Vielseitig deshalb, weil ein Systemverwalter nicht nur ein System verwaltet, sondern schon beim Planen, Installieren bis hin zur laufenden Pflege und Kontrolle mitverantwortlich ist. Im Englischen wird ›administration‹ auch als ›Staatsverwaltung/Regierung‹ übersetzt. Seien Sie sich deshalb Ihrer hoheitsvollen Aufgabe bewusst. 1.1
Voraussetzungen für den Systemverwalter
1.2
Wechseln in den Systemverwaltermodus
1.3
Verantwortung, Rechte und Aufgaben
1
Einleitung
1.1
Voraussetzungen für den Systemverwalter
Dieses Buch geht davon aus, dass Sie bereits Erfahrung als Anwender mit Linux oder Unix haben. Wer ganz allein auf sich gestellt ist und nun das erste Mal mit Linux konfrontiert ist, sollte, wenn besondere Aufteilungen gewünscht werden, die Erstinstallation zusammen mit Linux-Experten durchführen. Wer allerdings generelle Systemverwalterkenntnisse von anderen Betriebssystemen mitbringt und wenn genügend Platz auf seinem Rechner vorhanden ist (am besten mit einer zusätzlichen Platte oder weiteren Partitionen), der kann bei der Erstinstallation die vorgegebenen Vorschläge so weit wie möglich übernehmen – es sei denn, ein eventuell bestehendes System würde überschrieben werden. Doch dazu mehr im Kapitel 3, Installation. Dann allerdings sollte sich der-/diejenige erst mit Linux vertraut machen. Hier kann das im Vorwort erwähnte Buch ›Keine Angst vor Linux/ Unix‹ helfen. In der nachstehenden Tabelle ist zusammengefasst, was Sie über die Shell wissen sollten: Tabelle 1.1: Vorwissen: Grundlagen der Shell Thema, Syntax
Beispiele
Befehlseingabe auf Terminalebene (Kommandoeingabe) Kommando [ -Optionen ] [Parameter]
ls -la /bin /etc
Verkettung von Kommandos Kommando [ -Optionen ] [Parameter]; nächstes Kommando
cd /etc; ls -F
Ein-/Ausgabeumleitung, Pipe ls > inhalt Kommando < Eingabedatei > Ausgabedatei mail benutzer1 < gruss; ls | wc -l Kommando | Kommando find / -mtime -2 2>/dev/null Dateinamenexpansion/Ersetzungen *?[]\”” ‘ ‘
ls a* ; ls /bin/??; ls /dev/pts/[1-7] echo ” Hallo, ***”
Reguläre Ausdrücke . .* [ ] ^ $
grep -v ’^#‘ /etc/inittab
Einfache Ablaufsteuerungen, Testanweisungen &&, ||
[ -f $Datei ] && more $Datei [ -d $Datei -a -w $Datei ] || \ echo ”$Datei ist ein Verzeichnis”
Bedingungen if (Kommando); then Kommandoliste [ else Kommandoliste] elif Kommando then Kommandoliste
if [ -f $Datei ] if [ -f $Datei ] then more $Datei then more $Datei else echo ”$Datei \ elif [ -d $Datei ] gibt es nicht“ then echo ”$Datei ist ein Verzeichnis” fi fi
[
fi
2
]
Bedingung abhängig von einem Muster: case in ) Muster [ | Muster ] ) Kommandoliste ;; Muster [ | Muster ] ) Kommandoliste ;; ... esac
... case $Antwort in j | J ) rm $Datei ;; n | N ) echo $Datei nicht \ gelöscht ;; esac
1.1 Voraussetzungen für den Systemverwalter
Tabelle 1.1: Vorwissen: Grundlagen der Shell, Fortsetzung Thema, Syntax
Beispiele
Schleifen: while Kommando do Kommandoliste done until Kommando do Kommandoliste done
while true do echo ich hänge in einer Schleife done
for name in muster1 muster2 do Kommandoliste done
for datei in * do if [ -f $Datei ] then ls $Datei echo ”$Datei löschen?“ ... fi done
Arbeiten mit Variablen Zuweisung und Ersetzung des Wertes
name=“Eva Meier“; echo $name Einige wichtige Systemvariablen: $HOME, $PATH, $PWD
Kommandosubstitution (das Ergebnis des Kommandos wird an dieser Stelle eingesetzt) $( Kommando )
echo “Heute $( date ) sind $( who | wc -l ) Benutzer angemeldet“
until [ -f auftrag ] do sleep 60 done ksh auftrag
Über das Dateisystem sollten Sie folgende Kenntnisse mitbringen: ❐ ❐
Die Baumstruktur beginnt mit der / (root)
❐
Wissen, was die Zugriffsrechte bedeuten (rwxr-xr-x für den Besitzer, für die Gruppe und den Rest der Welt) – ein wichtiges Thema auch in diesem Buch
❐
Einige Kommandos, um
Unterschiede zwischen Verzeichnissen (directories), Dateien (files) und Gerätedateien (special files) kennen – dies wird in diesem Buch auch noch tiefergehend behandelt
•
Dateien zu editieren (z.B. den vi oder emacs)
•
Dateien anzusehen, zu kopieren, umzubenennen, zu löschen und Links zu erstellen (more, less, head, tail, cp, mv, rm, ln)
•
Verzeichnisse anzulegen, zu wechseln und den Inhalt zu listen (mkdir, cd, ls).
Im Anhang finden Sie zum Auffrischen Ihrer Kenntnisse eine Kurzreferenz. Zudem werden in diesem Buch einige der Kommandos wiederholt und Shell-Skripte z.T. erläutert.
3
Einleitung
Das Wichtigste für einen Systemverwalter sind aber neben guten Kenntnissen eines Linux-Systems und den notwendigen Kommandos Achtsamkeit, Sorgfalt und gute Absicherung! Dies gilt generell für die Verwalter aller Betriebssysteme! Unter Linux hat es der Systemverwalter allerdings etwas leichter, da von vornherein eine gute Struktur der Systemverwalterdateien existiert. Auch wird strikt zwischen Benutzeranwendung und Systemverwaltungsaufgaben unterschieden. Bestimmte Aufgaben (Befehle/Kommandos, Anwendungen) dürfen nur von root ausgeführt werden. Auf keinen Fall sollte man, wie es leider häufig unter Windows geschieht, sich generell als Administrator (root) anmelden oder sich sogenannte Administratorrechte setzen1. Doch gerade zu Beginn sind eine ganze Reihe von Arbeiten im ›Systemverwaltermodus‹ notwendig. Wenn Sie ein SUSE Linux-System installieren, wird sicherheitshalber von Anfang an ein Passwort für root gesetzt und zusätzlich mindestens ein Benutzer mit Passwort angelegt, damit man normale Anwendungen nicht unter root durchzuführen braucht.
1.2
Wechseln in den Systemverwaltermodus
Wir werden in diesem Buch die Begriffe ›Systemverwaltermodus‹ und ›Arbeiten mit Root-Rechten‹ durchweg als gleichwertig benutzen. Weiterhin ist die Bezeichnung ›Super-User‹ oder Systemverwalter oder Systemadministrator gebräuchlich. Es gibt nun mehrere Möglichkeiten, als Systemverwalter bzw. mit Root-Privilegien zu arbeiten: 1. Direkt Anmelden über den grafischen Anmeldebildschirm als Benutzer root. 2. Direkt Anmelden über ein ASCII-Terminal (virtuelle Konsole) (<Strg+Alt+F1> bis <Strg+Alt+F6>) als root. 3. Mit Kommando su (switch user) in der Terminaleingabe durch einen Benutzer. Ohne Angabe eines Benutzernamens wird auf root umgeschaltet und das Root-Passwort angefordert. 4. Starten eines Root-Terminals in einer grafischen Benutzeranwendung (in der Regel aus der Linux-Konsole heraus). Auch hier wird als erstes nach dem RootPasswort gefragt (dahinter steckt letztlich integriert ebenfalls das su-Kommando). Der Vorteil liegt jedoch darin, dass Sie durch die unterschiedliche Färbung des Terminals stets daran erinnert werden, gut achtzugeben.
4
1. Als Alternative gibt es das Kommando sudo (s. Seite 234).
1.2 Wechseln in den Systemverwaltermodus
5. Aufruf eines grafischen Systemprogramms (z.B. YaST-Modul oder KDEKontrollzentrum, siehe unten) aus einer normalen Benutzerkennung. Darf dieses Programm nur vom Systemverwalter ausgeführt werden, muss dafür in den Systemverwaltermodus geschaltet und das Root-Passwort eingegeben werden. Der Systemverwaltermodus gilt nur für das aufgerufene Programm und endet danach automatisch. 6. Beim Booten über Option s oder 1 (single user mode) – das System wird als Single User hochgefahren (siehe Seite 71) mit nur einem ASCII-Terminal, auf dem man sich dann mit root anmeldet – also etwa wie unter 2. aufgeführt, nur dass es hier ausschließlich das eine ASCII-Terminal gibt. 7. Start über die Installations-CD mit rescue. Hier wird kein Passwort abgefragt und das Betriebssystem ist mit den dazugehörigen Dateien und einigen Programmen nur temporär im Speicher. Will man auf vorhandene Platten etwas schreiben, müssen diese erst gemountet werden (Seite 113). Sollen bestimmte Programme durchgeführt werden, die normalerweise unter /sbin liegen, nun aber durch den mount-Befehl evtl. unter /mnt/sbin, muss vorab die root mit chroot /mnt umgesetzt werden. Die unter 1. vorgestellte Anmeldung am Grafikbildschirm sollte nur in Ausnahmefällen erfolgen. Aus Sicherheitsgründen ist für ›root‹ auch kein Bildchen beim Anmelden vorhanden – am sichersten wäre es sogar, gar keine Benutzer als Auswahl anzuzeigen (Kontrollzentrum R System R Anmeldungsmanager: Benutzer – siehe auch Seite 89). Meldet man sich mit root an einer grafischen Oberfläche an, wird (außer bei Version 9.0) gleich ein warnendes Hintergrundbild2 angezeigt. Und dies mit Recht – denn: Der größte potentielle Feind eines jeden Linux-Systems ist der Systemverwalter.
Eine Unaufmerksamkeit, und wichtige Daten könnten gelöscht werden! Deshalb sollten Systemverwalteraufgaben nur gezielt durchgeführt werden. Auch der sicherste Systemverwalter sollte bei kritischen Aktionen immer prüfen, ob im Notfall auf eine aktuelle Sicherung zurückgegriffen werden kann. Bei allen aufgeführten Möglichkeiten von 1. bis 6. wird jeweils nach dem RootPasswort gefragt. Es sollte auch wirklich geheim bleiben, den üblichen Regeln für ein sicheres Passwort entsprechen (s. Seite 93) und regelmäßig gewechselt werden. Die zu Beginn sicherste Art ist unter 5. aufgeführt: die grafischen YaST-Module 2. In der Version 9.0 müsste man sich dieses Hintergrundbild selbst zuordnen (über Kontrollzentrum R Erscheinungsbild Design R Hintergrund: Hintergrundbild: Root-logo.png)
5
Einleitung
Warnung
(bzw. yast als Aufruf über Terminalkonsole). YaST (Yet another Setup Tool) ist ein SUSE-spezifisches Systemverwaltungstool, mit dem zahlreiche Verwaltungsaufgaben über eine grafische Oberfläche ausgeführt werden können. Der YaST ist auch das Programm, das Sie bei der Installation begleitet. Ab SUSE-Version 9 finden Sie alle Systemverwalteraufgaben über das KDE-Kontrollzentrum (s. Bilder 1-1 und 1-2) auf der grafischen Oberfläche, über das auch die YaST-Module gestartet werden können. Hier werden Sie gut geführt und erhalten auch gleich die entsprechende Hilfe. Die unter 7. aufgeführte Möglichkeit ist die letzte Rettung (rescue), falls sich das System einmal nicht mehr starten lässt. Statt der Installations-CD könnte auch ein anderes Linux-System (z.B. Knoppix3 von einer CD) oder eine Bootdiskette (evtl. mit zusätzlichen Moduldisketten) verwendet werden – es ist also immer gut, diese erstellt und parat zu haben (s. Installation). Da kein Root-Passwort abgefragt wird, ist dies auch ein einfacher Einstieg für ungebetene Besucher. Ein BIOS-Passwort erschwert den Zugang über diesen Weg. Da ein BIOS-Passwort auf vielen Rechnern umgehbar ist, sollten Sie sensitive Daten auf einer Krypto-Partition halten (siehe Kapitel 3.3.7).
Bild 1-1: KDE-Kontrollzentrum
6
3. Knoppix ist ein von Klaus Knopper zusammengestelltes Debian-Linux mit vielen kleinen hilfreichen Werkzeugen, das direkt von der CD gestartet werden kann (mehr in Kapitel 13).
1.2 Wechseln in den Systemverwaltermodus
CD-ROM-Laufwerk Drucker Festplatten-Controller Grafikkarte und Monitor Hardware-Informationen IDE DMA-Modus Joystick Mausmodell wählen Scanner Sound TV-Karte DHCP-Server DNS-Server DNS- und Hostname Hostnamen HTTP-Server Kerberos-Client LDAP-Client Mail Transfer Agent Netzwerkdienste (inetd) NFS-Client NFS-Server NIS-Client NIS-Server NTP-Client Proxy-Server Samba-Client Samba-Server TFTP-Server Weiterleitung
Angeschlossene Geräte
Hardware
Arbeitsfläche
Netzwerkdienste
9.1
Notebook-Akku
Erscheinungsbild
29.10.04 - v23
Bildschirmschoner Design-Verwaltung Farben Fensterdekoration Hintergrund Programmstart-Anzeige Schriften Startbildschirm Stil Symbole
Internet & Netzwerk
Netzwerkgeräte
Benutzer bearbeiten und anlegen Einstellungen zur Sicherheit Firewall Gruppen bearbeiten und anlegen
Sicherheit & Benutzer
Installation in Verzeichnis Installationsquelle wechseln Online-Update Patch CD-Update Software installieren oder löschen System-Update
Software
Automatische Installation Bluetooth IrDA Power-Management Startprotokoll anzeigen Support-Anfrage stellen Systemprotokoll anzeigen Treiber-CD des Händlers laden
Sonstiges
Kontr9.2.mmp - 29.10.04
Fenstereigenschaften Fenstereinstellungen Fensterleiste Kontrollleisten Verhalten Virtuelle Arbeitsflächen
Energiekontrolle
Administration von einem entfernten Rechner Anrufbeantworter DSL Fax ISDN Modem Netzwerkkarte
Datum und Zeit Editor für /etc/sysconfig-Dateien Erstellen einer Boot-, Rettungs- oder Moduldiskette Konfiguration des Bootloaders LVM Partitionieren Powertweak-Konfiguration Profil-Manager Runlevel-Editor Sicherungskopie der Systembereiche Sprache wählen System wiederherstellen Tastaturbelegung auswählen
Anzeige Digitalkamera Fernsteuerungen Joystick Maus OBEX devices Tastatur
Arbeitsfläche freigeben Web-Browser Bluetooth Services Dateifreigabe Einstellungen Netzwerk-Browser Proxy-Server Samba-Einrichtung
Yast2 Module
Dateimanager Dateizuordnungen Diensteverwaltung Einrichten der Vim-Komponente KDE-Leistung KDE-Ressourcen Komponenten-Auswahl Rechtschreibprüfung Sitzungsverwaltung
KDE-Komponenten
Regionaleinstellungen & Zugangshilfen
Sicherheit & Privatsphäre
Sound & Multimedia
KHotKeys Land/Region & Sprache Tastaturlayout Tastenkürzel Zugangshilfen Digitale Brieftasche Passwort & Benutzerzugang Privatsphäre Verschlüsselung
Audio-CDs CDDB-Abfrage Signalton Sound-System Systemnachrichten
System
Systemverwaltung
Anmeldungsmanager IBM Thinkpad Notebook Pfade Schriften-Installation Sony Vaio Notebook
Bild 1-2: Das Kontrollzentrum – ein hilfreiches Werkzeug für den Systemverwalter (Beispiel: SUSE Linux 9.2)
7
Einleitung
1.3
Verantwortung, Rechte und Aufgaben
Die Arbeiten eines Systemverwalters beschränken sich nicht nur auf geführte Aufgaben über YaST oder Kontrollzentrum. Oft sind auf Terminalebene Kommandos einzugeben. Hierbei kann es noch leichter passieren, dass durch Unachtsamkeit oder Unwissenheit Fehler mit schwerwiegenden Folgen passieren. Doch auch hier lässt sich der Schaden beheben, wenn auf eine aktuelle Sicherung zurückgegriffen werden kann (dies bedeutet u.U. aber erheblichen Mehraufwand). Rechte des Systemverwalters Als Systemverwalter haben Sie die Möglichkeit, Dateien und Verzeichnisse zu löschen oder zu verändern, selbst wenn sie geschützt sind oder anderen Benutzern gehören. Die Zugriffsrechte haben für root nur warnende Funktion. Zudem kann der Systemverwalter über das Kommando chown und chmod die Rechte anderen Benutzern zuordnen und verändern. Ebenso kann er die Passwörter von allen Benutzern ändern. Um den Inhalt von Dateien vor dem Systemverwalter zu schützen (denn er darf natürlich auch alle Dateien lesen), hilft nur die Dateien zu verschlüsseln (z.B. über crypt, gpg). In der Regel bieten Programme, die sich mit sensiblen Daten beschäftigen (wie z.B. Programme für die Personalabteilung), eigene Verschlüsselungen an – auch Datenbanken haben eigene Zugriffsbestimmungen (access rights). Weiterhin muss ein Systemverwalter bereits gestartete Programme, also Prozesse, abbrechen (killen) können, auch wenn sie von anderen Benutzern gestartet wurden. Nur einige Systemprozesse sind nicht über ein kill-Kommando zu stoppen, aber root kann das System generell herunterfahren, einen Neustart initiieren oder den Wechsel in einen anderen Runlevel veranlassen. Um also nicht versehentlich wichtige Dateien zu löschen oder zu verändern, sollte man nur ganz gezielt bestimmte Aufgaben als Systemverwalter (als root) durchführen und dann als ›normaler Benutzer‹ weiterarbeiten. Aufgaben des Systemverwalters
8
Neben der Erstinstallation mit der richtigen Einbindung aller vorhandenen Hardware, evtl. Aufrüstung des Rechners/der Rechner und der Auswahl der benötigten Software ist eine besonders wichtige Aufgabe des Systemverwalters, das System so sicher wie möglich zu halten. Einmal gegen sich selbst, dann gegen die Benutzer und vor allem gegen Angriffe von außen. Auch die Dateien der einzelnen Benutzer untereinander müssen geschützt und gesichert werden. Unter der Distribution von SUSE sind die Systemvoreinstellungen zum größten Teil bereits so eingerichtet, dass von vornherein eine gewisse Sicherheit besteht. Auch eine sogenannte Firewall, die gegen Angriffe von außen schützt, wird mit installiert und muss nur noch entsprechend aktiviert werden. Trotzdem bleiben genügend Aufgaben für den Systemverwalter: die Sicherung (backup) des gesamten Systems, die periodische Sicherung der veränderlichen Daten, die Betreuung der Benutzer
1.3 Verantwortung, Rechte und Aufgaben
durch Hilfestellung, Zuweisung bestimmter Berechtigungen oder Wiederauffinden und Restaurieren versehentlich gelöschter Daten. Das Mind-Mapping in Bild 1-3 soll Ihnen eine grobe Vorstellung der Aufgaben/Stichwörter vermitteln, mit denen Sie es als Systemverwalter zu tun haben. Bei diesen vielen Aufgaben ist es gut, zu wissen, dass die Systemverwaltung eine angesehene Tätigkeit ist: Neben dem Vatertag und dem Gedenktag zum Verbot des Raubs von Jungfrauen und Witwen4 gibt es auch einen Systemverwaltertag [59], der jedes Jahr am letzten Freitag im Juli gefeiert wird.
4. 1. Januar, Reichsgesetz von König Otto I
9
Einleitung
Bild 1-3: ›Wissensbaum‹ des Systemverwalters
10
Kapitel 2 Was Linux bietet, was Linux braucht
Da Sie sich dieses Buch ausgesucht haben, gehen wir zwar davon aus, dass Sie gute Gründe hatten, sich für Linux zu entscheiden. Trotzdem wollen wir an dieser Stelle die Vorteile, Anwendungen und Vorausetzungen von Linux darstellen. Auch im Nachhinein freut man sich, zu erfahren, dass man die richtige Wahl getroffen hat. 2.1
Warum Linux?
2.2
Einsatzmöglichkeiten von Linux
2.3
Linux-Systemvoraussetzungen
11
Was Linux bietet, was Linux braucht
2.1
Warum Linux?
Vergleicht man Linux und Windows, so sprechen das generelle Systemdesign und Sicherheitsaspekte für Linux. Die Wurzeln der Systeme – Unix bzw. DOS – lassen sich nicht leugnen. Windows war von Anfang an für einen PC (Personal Computer) konzipiert, also für eine Person (single user), während Unix und das etwa 20 Jahre später neu programmierte Linux von vornherein als Mehrbenutzersysteme (multi user) entwickelt wurden. Multi-User bedeutet, dass mehrere Benutzer zur selben Zeit an dem System angemeldet und gleichzeitig arbeiten können. Daraus resultiert auch die anders aufgebaute Struktur. Zu Beginn von Windows wurden die Benutzerdaten zusammen mit den Programmdateien gespeichert. Erst nach und nach ist dann der Ordner „Eigene Dateien“ eingerichtet worden. Da der Benutzer unter Windows seine Dateien auch direkt auf dem Desktop oder unter anderen Laufwerksbezeichnungen und Ordnern speichern kann, passiert es oft, dass die sogenannten eigenen Dateien auf dem gesamten System verstreut sind. Unter Linux gibt es hier schon von Anfang an eine strikte Trennung von Benutzerund Systemdaten. Benutzerdaten sind in der Regel nur unter dem Verzeichnis /home der jeweiligen Kennung des Benutzers zugeordnet, darunter befinden sich dann auch versteckte Dateien für programmspezifische Einstellungen für den jeweiligen Benutzer. Zusätzlich wird unter den Eigenschaften jeder Datei der Benutzername vom Besitzer (also demjenigen, der die Datei erstellt hat) gespeichert. Die Zugriffsrechte sind unter Linux im Standardfall so gesetzt, dass ein Benutzer nur in seinem Verzeichnis Dateien ablegen darf (Ausnahme das Verzeichnis /tmp – mit Sonderrechten s. Seite 134). Selbstverständlich können vom Systemverwalter weitere Verzeichnisse zur gemeinsamen Nutzung – auch netzwerkweit – eingerichtet werden. Ist ein Benutzername unter Linux nicht registriert (/etc/passwd) oder der Benutzer verwendet ein ungültiges Passwort, ist es unmöglich, an einem Linux-System zu arbeiten. Nun, ab WindowsNT/2000/XP sind hier die Regeln auch strenger, doch gibt es immer wieder erhebliche Sicherheitslücken – und dies ist besonders gefährlich, wenn der Rechner direkten Zugang ins Internet hat. Ein großes Problem bei Windows ist, dass viele Systemeinstellungen per Default auf unsicher gesetzt sind, eine Reihe von Anwenderprogrammen benötigen sogar Administratorrechte. Linux dagegen ist grundsätzlich ein eher sicheres System – sowohl in der Anwendung als auch was Viren aus dem Internet anbelangt. Abgesehen von der Möglichkeit, hier zusätzlich noch eine Firewall zu installieren, gibt es bisher (noch) kaum Viren für Linux-Rechner.
12
2.1 Warum Linux?
Hier eine Zusammenfassung der markantesten Unterschiede zwischen Linux und Windows:1 2 Begriff
Windows (ab NT)
Linux
1. Systemart
Single User (Multi User nur mit Terminal-Server)
Multi User
2. Ablage der ei- C:\Dokumente und Einstellungenen Dateien gen\Benutzername\Eigene Dateien
/home/Benutzername
3. Dateinamen Pfade
256 Zeichen keine Leer- und Sonderzeichen!1 Groß-/Kleinbuchstaben empfohlen a-z A-Z 0-9 und Sonderzeichen - _ . Pfadtrennung mit / Suffix nicht zwingend2
Bis 252 Zeichen (nahezu alle Zeichen inklusive Leerzeichen) mit . und 3 Zeichen für Suffix
Pfadtrennung mit \ Dateitypkennzeichnung durch Suffix .nnn 4. Ausführbare Dateien/Programme
Gekennzeichnet mit Suffix (.exe, u.a.)
Durch Zugriffsrecht x
5. Optionen
Bei Kommandoeingabe mit /
Mit -
6. Laufwerke
C:, D: ... Ab Windows NT besteht auch die Möglichkeit, über eine Art mount eine Partition an ein Verzeichnis zu knüpfen.
Eingebunden in den Dateibaum per mount; bzw. beim Hochfahren über /etc/fstab
7. Zugriffsrechte
Über Vererbung: Ordner Freigabe, Berechtigungen (Zulassen, Verweigern) für jeden oder bestimmte Benutzer: Vollzugriff, Ändern, Lesen zusätzlich max. Anzahl Benutzer Zugriffseigenschaften von Dateien: schreibgeschützt, versteckt, Archiv
Alle Dateien/Verzeichnisse/Geräte read, write, execute (Lesen, Schreiben, Ausführen) für Besitzer, Gruppe, Andere
8. Sicherheit
Auch Benutzeranwendungen erfordern oft Administratorrechte Immer wieder Sicherheitslücken, dadruch stärker virenanfällig Ab XP wird auch eine Firewall mitgeliefert
Streng getrennt nach Administrator (root) und Benutzern Mitgelieferte Firewall
1. Leer- und Sonderzeichen sind zwar erlaubt, machen aber immer wieder Probleme. Wir raten deshalb davon ab, diese zu verwenden. Auch auf Umlaute sollte man in Dateinamen verzichten. 2. Wir empfehlen jedoch, die gleichen Endungen wie unter Windows zu verwenden, damit ein reibungsloser Austausch gewährleistet ist.
13
Was Linux bietet, was Linux braucht
2.2
Einsatzmöglichkeiten von Linux
Linux-Systeme sind in zunehmendem Maße als Server in inhomogenen Netzwerken eingesetzt, z.B. mit Samba für die Verbindung mit WindowsXXNetzwerken, mit Atalk zu Apple und NFS zu Unix-Rechnern. Durch die vielseitigen Entwicklungstools und die Verfügbarkeit aller gängigen Programmiersprachen finden Linux-Arbeitsplätze mehr und mehr Zugang in den Entwicklungsabteilungen namhafter Firmen, die z.B. auch dann Software unter Linux erstellen, wenn diese später auf andere Systeme portiert und dort eingesetzt wird. Ein nicht unwesentlicher Bereich ist auch Embedded Software unter Linux. Aber auch mit kommerzieller Software ist Linux zwischenzeitlich ein ernstzunehmender Konkurrent zu Microsoft. Gerade für mittelständische Betriebe beweist sich immer wieder, wie sicher, kostengünstig, schnell und leistungsfähig mit Linux gearbeitet werden kann. Nicht nur München wird seine gesamte Verwaltung auf Linux umstellen, eine Reihe von Gemeinden (darunter Vorreiter Schwäbisch Hall) haben sogar bereits die Umstellung abgeschlossen und positive Erfolgsmeldungen gebracht. Auch eine Reihe von großen Firmen wie McDonald, Visa, BMW können positive Erfolgsstories über Linux berichten. Die Zeitschrift c‘t hatte vor einiger Zeit Linux-Pendants für Windows-Anwendungen aufgestellt [1]. Angelehnt an diese Aufstellung hier einige Beispiele: Wofür
Programme unter Windows
Alternative unter Linux
Office/System
14
Textverarbeitung
MSWord (.doc)
OpenOffice Writer (.sxw) StarWriter (.sxw) Crossover Office (.doc)
Tabellenkalkulation
Excel (.xls)
OpenOffice Calc (.sxc) StarCalc (.sxc)
Präsentation/ Zeichnung
PowerPoint (.ppt)
OpenOffice Impress (sxi) nur Zeichnung (.sxd)
Bildverarbeitung
Adobe Photoshop (.psd) – und alle gängigen Formate
GIMP (.xcf) – und alle gängigen Formate
Scannen
Nero, OnCD u.a.
XScanImage
Adressbuch, Kalender
Outlook
Evolution, KOrganizer
Desktop-Datenbank
Access
evtl. Adabas für StarOffice
Textdateien bearbeiten
Ultraedit/Note Tab, WordPad
kate, nedit, KWrite
Dateien verwalten
Explorer, Norton Commander
Konqueror, Midnight Commander
2.2 Einsatzmöglichkeiten von Linux
Programme unter Windows
Alternative unter Linux
Surfen
Internet Explorer, Mozilla, Opera
Konqueror, Mozilla, Firefox, Opera
E-Mails lesen, versenden
Outlook (Express), Mozilla Mail, Eudora
KMail, Mozilla Mail, Evolution
Dateien transferieren
ftp, WSFTP, PSFtp
sftp, Konqueror, gFTP/Downloader for X
Sofortnachrichten senden
Trillian
Galm
Bilder betrachten
Photoshop, Paint Shop Pro
GIMP
Digicam-Bilder auslesen/bearbeiten
Fotofix
gtkam
Bilder betrachten
IrfanView, XnView
KuickView, XnView
Video abspielen
Windows Media Player
mplayer, Xine, VLC
DVD abspielen
PowerDVD, WindDVD
Ogle, mplyer, Xine, VLC
DVD umwandeln
DVDy
dvdxrip, Drip
Video konvertieren
VirtualDub, TMPGEnc
kavi2svcd, Mencoder
Videoschnitt
Adobe Premiere, Studio, MainActor
MainActor, Kino
Audio, MP3 abspielen
WinAmp, Windows Media Player
XMMS, Zinf
CD-Grabber
CDex, Exact Audio Copy
Grip
Audio aufnehmen/bearbeiten
SoundForge, Cool Edit
Rezound, Sweep
CDs/DVDs brennen
WinOnCD, Nero Burning Rom
K3b, GCombust, Xcdroast
Wofür Internet
Grafik
Video
Audio
Unter Windows sind viele dieser Programme zusätzlich zu erwerben. Die meisten aufgeführten Programme unter Linux sind kostenlos und in der SUSE Linux-Distribution enthalten. Spiele haben wir hier bewusst nicht aufgeführt, doch es gibt genügend nette und auch ansprechende Spiele unter der SUSE Linux-Distribution.
15
Was Linux bietet, was Linux braucht
2.3
Linux-Systemvoraussetzungen
Generell lässt sich sagen, dass Linux auf nahezu allem läuft, was rechnen kann, vom Abakus vielleicht einmal abgesehen. Es gibt Linux für kaugummistreifengroße Minisysteme3 und Palm-Organizer bis zum Supercomputer, und auch in immer mehr Embedded-Systemen ist Linux zu finden. Die SUSE-Distribution, auf die wir uns hier vorwiegend beziehen, unterstützt sogenannte Wintel-PCs, also solche mit Intel- und AMD-Prozessoren, die üblicherweise mit Windows-Betriebssystemen verkauft werden. Möchten Sie Ihr Linux auf einer anderen Hardware installieren, müssen Sie auf andere Distributionen zurückgreifen oder es selbst zusammenstellen (s. www.linuxwiki.org/Distribution). Frühere SUSE-Versionen (z.B. 7.0) gab es auch für den IBM-PowerPC. Selbstverständlich bestimmen die vorgesehenen Anwendungen des Linux-Rechners maßgeblich dessen Ausstattung. Doch auch Linux selbst hat einige Ansprüche an die Hardware. An Plattenplatz benötigt man allein für das Linux-System ohne Benutzerdaten je nach Installationsumfang bis zu 8 GB. In der Linux-Dokumentation stehen Richtwerte für minimale und maximale Anforderung an den Festplattenspeicher (s. Tabelle). Diese Werte gelten wie gesagt für den notwendigen Platz der Linux-Installation und berücksichtigen noch nicht den Speicherplatz, den Sie für Ihre Dateien und eventuelle Zusatzprogramme benötigen. Nach dem Anwendungsgebiet richten sich auch die weiteren Hardwareanforderungen. Installation
Benötigter Plattenplatz
Hinweise
Minimum
200 MB bis 800 MB
Nur ASCII-Terminal (Konsole) – ohne Grafik
Klein
800 MB bis 1,5 GB
Nur X-Window ohne KDE
Mittel
1,5 MB bis 4 GB
Grafische Oberfläche mit KDE oder GNOME, OpenOffice etc.
Groß
4 GB bis 8 GB
Mit den meisten der verfügbaren Programme (Multimedia, Bildbearbeitung GIMP, CD brennen etc.)
Für einen Firewall-Rechner, auf dem keine grafische Oberfläche benötigt wird, darf es gern ein ausrangierter Intel Uralt-Pentium4 mit 300-MB-Platte und 32 MB Hauptspeicher sein. Doch sobald Sie eine grafische Oberfläche mit entsprechenden Office-Programmen nutzen (was heutzutage der Norm entspricht), im Internet surfen sowie Ihre E-Mail empfangen und versenden, sollte die Hardware nicht zu alt sein: ab 500 MHz, besser 1GHz Prozessor-Takt und Hauptspeicher mit mindestens 256 MB, damit die grafische Oberfläche einigermaßen rund läuft – besser sind 384 MB aufwärts. Die manchmal noch angegebenen 128 MB sind schon 16
3. www.gumstix.com 4. Die Leistung eines 486er reicht auch, allerdings wurden diese nur bis SUSE 7.3 unterstützt.
2.3 Linux-Systemvoraussetzungen
recht zäh und eher für Leute mit mehr Zeit. Bei diesen einfachen Anwendungen reichen für den Festplattenspeicher wenige Gigabyte. Sobald Sie jedoch z.B. mit einer Digitalkamera aufgenommene Bilder auf dem Rechner speichern und bearbeiten wollen, sind 60 GB Festplattenspeicher eher die untere Grenze. Ähnliches gilt auch für das Speichern von Musik. Sowohl für Bild- als auch für Musikbearbeitung sollte der Hauptspeicher mindestens 512 MB aufweisen. In der nachstehenden Tabelle haben wir Richtwerte zusammengestellt, die Ihnen eine Hilfe für die Konfiguration und Ausrüstung Ihres Rechners sein sollen (Empfehlung Stand Ende 2004). Festplattenspeicher
Prozessor
16–64 MB
kleine Platte ca. 800 MB
kaum von Bedeutung
Print-Server
256 MB
40 GB
400 MHz bis 800 MHz
Grundsystem wie Arbeitsplatzrechner mit einfacher grafischer Oberfläche (X, olvwm)
256 MB
40 GB
400 MHz bis 800 MHz
Grundsystem mit grafischer Oberfläche (KDE, GNOME)
384 MB
80 GB
800 MHz
Grundsystem mit grafischer Oberfläche und Bild-/Musikbearbeitung
512 MB bis 1 GB
180 GB
> 1 GHz High-End-Grafikkarte
File-Server
512 MB bis 1 GB
240 GB bis 440 GB
100 MHz S-ATA oder SCSIPlattencontroller
1 GB je größer desto besser
40–80 GB
> 1 GHz High-End-Grafikkarte
Einsatzgebiet Sondersysteme, wie Router/Gateway, Firewall
Spielerechner
RAMSpeicher
Sonstiges
Wenn Sie auf Linux umsteigen wollen, reicht aber oft ein alter PC, den Sie mit etwas Aufrüstung zum ersten Kennenlernen nutzen können. Ansonsten sollte die Hardware, wie die Tabelle zeigt, nicht zu alt sein. Die Hardware für Linux sollte aber – vielleicht etwas unerwartet – auch nicht zu neu sein. Das liegt daran, dass die Linux-Gemeinde etwas Zeit braucht, für neue Hardware (insbesondere Peripheriegeräte und Grafikkarten) die passenden Module zu entwickeln5. Eher geringe Chancen für eine Unterstützung durch Linux hat man bei Geräten, bei denen aus Kostengründen ein Teil der Hardware durch
17
Was Linux bietet, was Linux braucht
spezielle nur für Windows entwickelte Treiber emuliert wird. Dies sind GDI-Drucker und die manchmal in Notebooks verwendeten sogenannten Winmodems. Generell kann es bei Notebooks eher als bei Desktops Probleme geben, dass die Hardware nicht vollständig unterstützt wird. Trotz der immensen Vielzahl an unterschiedlichen Hardwarevarianten ist es aber erstaunlich, wie oft die Installation ohne Probleme verläuft – und bei dem verbleibenden Rest sind es oft nur Kleinigkeiten, die sich mit etwas ›Nachhilfe‹ lösen lassen. Im nächsten Kapitel gehen wir darauf ein, wie Sie herausfinden, ob bzw. inwieweit Ihre Hardware von Linux unterstützt wird.
18
5. Denken Sie daran, dass dies ja meist unentgeltlich in der Freizeit geschieht!
Kapitel 3 Installation
Für viele ist die Installation der eigentliche Beginn, sich mit Linux auseinanderzusetzen. Doch vom Wissenstand her ist dies eher nicht zu empfehlen. Sie sollten bereits mit Linux/Unix gearbeitet haben, die wichtigsten Befehle beherrschen und mindestens die Architektur eines Rechners (z.B. als Administrator unter Windows) kennen. Auf keinen Fall sollten Sie einen Rechner mit wichtigen Daten ohne vorherige komplette Sicherung mit Linux installieren. Die Installation selbst ist nicht schwierig – doch Sie müssen wissen, was Sie tun! 3.1
Was geschieht bei der Installation?
3.2
Die Wahl der Distribution
3.3
Vorbereitung
3.3.1
Sicherung bestehender Systeme/Dateien
3.3.2
Systemvoraussetzungen
3.3.3
Parallelinstallation zu bestehenden Systemen
3.3.4
Platz schaffen
3.3.5
Platten, Partitionen und Bootrecords
3.3.6
Wahl des Dateisystems
3.3.7
Krypto-Dateisysteme
3.3.8
Bootmanager: LILO oder GRUB?
3.4
Installation – ein Beispiel
3.5
Notebooks
3.6
Deinstallation
3.7
Zusammenfassung in Stichworten
19
Installation
3.1
Was geschieht bei der Installation?
Bei der Installation muss eine Reihe von Aufgaben durchgeführt werden, hierzu gehören: ❐
Hardwareerkennung, um die richtigen Treiber (Kernel-Module) einzurichten. Dies geschieht weitgehend automatisch, aber nachbessern ist möglich und in manchen Fällen notwendig.
❐
Plattenaufteilung. Hier gibt es Vorschläge vom Installationsprogramm, die man jedoch abändern kann oder muss.
❐
Installation des Betriebssystems und der Hardwaretreiber. Dies geschieht automatisch durch das Installationsprogramm.
❐
Installation eines Bootloaders. Auch hier gibt es Vorschläge, die man aber kritisch ansehen sollte.
❐
Installation von Programmpaketen. Für den Anfang reicht eine einfache Auswahl à la viel/mittel/wenig – Software lässt sich jederzeit einfach nachinstallieren.
❐
Systemeinstellungen (Sprache, Tastatur).
❐
Konfigurationen (Art der Benutzerauthentifikation, Gerätekonfiguration (Drucker), Netzwerk). Hier ist meist etwas mehr Handarbeit angesagt.
❐
Anlegen von Benutzern.
Dieses Kapitel soll Ihnen genug Information vermitteln, um die Vorschläge des Installationsprogramms werten und gegebenenfalls ändern zu können.
3.2
Die Wahl der Distribution
Eine Distribution ist eine wie auch immer abgerundete Zusammenstellung des Betriebssystems Linux und einer Vielzahl von Anwendungsprogrammen. Dem Käufer der Distribution soll damit die Arbeit der Zusammenstellung abgenommen werden, ebenso vereinfacht eine Distribution die Installation erheblich. Die meisten Distributionen enthalten auch mehr oder weniger Dokumentation über das System. Da es viele Meinungen darüber gibt, was in eine Distribution gehört und was nicht, gibt es auch entsprechend viele Distributionen. Wir beziehen uns hier weitgehend auf die SUSE-Distributionen. SUSE ist die im deutschsprachigen Raum am weitesten verbreitete Distribution, die ein weites Feld von Einsatzgebieten abdeckt, die (besonders in der Professional-Version) eine umfangreiche Dokumentation mitbringt und die mit YaST ein ausgereiftes und komfortables Installations- und Verwaltungstool bietet. Die SUSE-Versionen sind recht stabil und haben gut durchdachte Defaulteinstellungen, die auch dem noch 20
3.3 Vorbereitung
nicht so versierten Systemverwalter helfen, die richtigen Entscheidungen zu treffen. Gut sind, gerade auch bei der Installation, die begleitenden Hilfetexte. Sollten Sie Linux jedoch auf einer anderen Hardware als auf IBM-kompatiblen PCs/Notebooks installieren wollen oder sich gar Ihr Linux kontrolliert von Grund auf selbst zusammenstellen, müssen Sie auf eine andere Distribution (oder gar auf die eigene Zusammenstellung der Systemkomponenten) zurückgreifen.1 Eine gute Übersicht über Distributionen finden Sie unter www.planetpenguin.de und www.linuxwiki.org/Distribution im Internet, Distributions-CDs zum Herunterladen gibt es unter linuxiso.org. Die aktuellen Weiterentwicklungen bei Linux fließen bei den größeren Distributoren etwa zweimal im Jahr in eine neue Version ein. Einer der größeren Sprünge war die Umstellung von der 2.4er-Kernelserie auf die 2.6er-Generation mit erheblichen Erweiterungen und Veränderungen der Systemarchitektur [8]. SUSE hat diesen Übergang von der Version 9.0 auf die Version 9.1 vollzogen: Version 9.0 mit dem Betriebssystemkern 2.4.21 ist der verbesserte Nachfolger von SUSE 8.2. Die Version 9.1 und ihre Nachfolger dagegen basieren auf der neuen 2.6er-Generation des Kernels. Gerade bei größeren Änderungen ist naturgemäß damit zu rechnen, dass die Stabilität nicht so gut ist wie die der Vorgängerversion. Es kann durchaus eine kluge Strategie sein, bei größeren Neuerungen die erste Version zu überspringen und auf die stabilere Folgeversion zu warten. Wenn bei einem Upgrade etwas nicht funktioniert, was bei einer früheren Version noch gegangen ist, sollte man in der SUSE-Support-Datenbank (portal.suse.de) nachsehen, ob es einen entsprechenden Patch gibt.
3.3
Vorbereitung
SUSE bietet eine Schnellinstallation, falls Linux die einzige Installation auf dem
Rechner (bzw. der gewählten Festplatte) sein soll oder falls sich dort nur ein Windows mit FAT32-Dateisystem (Windows 95/98/ME) befindet. Dann reichen wenige Mausklicks, um die gewählten Vorschläge zu bestätigen und zu einem fertigen Linux zu kommen. Die Vorschläge können auch jederzeit abgeändert werden. Generell gilt: Es muss nicht alles gleich laufen. Module für weitere Hardware und Softwarepakete lassen sich später mit YaST problemlos nachinstallieren. Das Vorgehen ist gleich zu Anfang des SUSE-Benutzerhandbuchs beschrieben, so dass wir hier nicht darauf einzugehen brauchen. Geht man nicht diesen ganz einfachen Weg, bietet der Installationsvorgang nahezu beliebig viele Einstellmöglichkeiten, um die Installation Ihren Wünschen entsprechend anzupassen. Generell sollte man sich vor der Installation (und nicht erst 1. SUSE bietet neben den bekannten Personal- und Professional-Versionen noch eine Variante ›SUSE Linux Enterprise Server‹ (SLES, [57]), die auch für andere Plattformen wie Intel Itanium, IBM Power und die IBM zSeries und S/390 verfügbar ist. Zur SLES gehören professioneller Support, Hardware- und Softwarezertifizierung und eine garantierte Produktpflege von mindestens fünf Jahren.
21
Installation
während der Installation) überlegen, mit welchen Einstellungen und Parametern man das System installieren will. Dazu gehören neben der Anzahl, Größe und Belegung der Partitionen auch die Wahl der Dateisysteme und des Bootmanagers und so banale Dinge wie die Auswahl der Sprache, in der sich das System mit Ihnen unterhalten soll. Optionen wie Anlegen von RAIDs, LVM-Unterstützung oder Anlegen von verschlüsselten Partitionen sind zu klären. Dieser Abschnitt gibt u.a. Informationen zu denjenigen Auswahlpunkten, die etwas mehr Nachdenken erfordern, wie die Wahl der Partitionen, der Dateisysteme und des Bootmanagers. Informationen zum Logical Volume Manager LVM finden Sie auf Seite 105. Natürlich kann man auch lange darüber nachdenken, ob man KDE auf hochdeutsch oder niederdeutsch2 möchte – bei dieser Entscheidung werden wir Sie allerdings alleinlassen. Der größte Teil der folgenden Ausführungen ist distributions- bzw. versionsunabhängig gehalten. Ansonsten beziehen wir uns auf die Distribution SUSE 9.1 mit dem Kernel 2.6.4, wenn nicht anders erwähnt. Auch bei den versionspezifischen Angaben und Beispielen ist nur mit geringen Modifikationen für Nachfolgeversionen zu rechnen. Neben der hier beschriebenen ›manuellen‹ Installation gibt es auch eine automatische Installation (AutoYaST), die es ermöglicht, sehr viele Rechner ohne Benutzereingriff parallel zu installieren. Besonders für große Rechenzentren oder Trainingscenter ist dies sinnvoll. Information hierzu gibt es unter [58].
3.3.1
Sicherung bestehender Systeme/Dateien
Dieser kurze Abschnitt soll nur betonen, dass auch die Sicherung bestehender Systeme und Dateien zur Vorbereitung einer Installation gehört. Wir gehen ausführlicher auf die Thematik Datensicherung in Kapitel 9 ein. Gleichgültig, ob Sie Linux zu einem bestehenden Windows dazuinstallieren oder ein Linux auf eine neuere Version hochrüsten: Sichern Sie vorher alles, was Ihnen lieb und teuer ist! Auch wenn der ganze Installationsprozess oft genug fehlerfrei verläuft, kann er dennoch – aus welchen Gründen auch immer – unvermutet zu einem zerstörten System führen. Also:
22
❐
Sichern Sie bei einem bestehendes Windows-System am besten das gesamte System, denn System, Systemeinstellungen und Anwenderdaten lassen sich kaum sauber trennen.
❐
Sichern Sie den Master Boot Record (s. Seiten 32 und 61) auf ein bootfähiges Medium und testen Sie, ob Ihr bestehendes System damit noch startbar ist.
❐
Prüfen Sie, ob Sie ein existierendes System notfalls mit einer Installations-/ Rescue-CD starten können.
2. www.evermann.de/kde_op_platt und nds.i18n.kde.org – eine bayerische Version gibt es bisher leider nicht.
3.3 Vorbereitung
❐
Sichern Sie bei einem Upgrade eines Linux-Systems auf eine neuere Version die gesamten Home-Verzeichnisse. Unter /etc liegen die meisten Systemeinstellungen, so dass auch dieses Verzeichnis mit Unterverzeichnissen in die Sicherung gehört.
3.3.2
Systemvoraussetzungen
Die allgemeinen Systemanforderungen haben wir im Kapitel 2.3 beschrieben. Dort wurde auch gesagt, dass nicht jede Hardware von Linux unterstützt wird. Um herauszufinden, ob der vorgesehene Rechner hinreichend Linux-freundlich ist, gibt es eine Reihe von Möglichkeiten: ❐
Sehen Sie in der SUSE-Hardwaredatenbank nach, was unterstützt wird (cdb.suse.de). Dies setzt natürlich einen Internetzugang voraus. Kritische Komponenten sind etwa Grafikkarten und insbesondere Notebook-Hardware. Auf Notebooks gehen wir gesondert im Abschnitt 3.5 ein.
❐
Im Internet gibt es viele Stellen, an denen Sie Information über die von Linux – nicht notwendigerweise auch von SUSE – unterstützte Hardware finden, zum Beispiel unter www.linuxhardware.org.
❐
Die Installation führt am Anfang eine Hardwareerkennung durch, ohne das System zu verändern. Wenn das Ergebnis der automatischen Hardwareerkennung nicht zufriedenstellend ist, kann man über die Menüs manuelle Einstellungen versuchen. Mit der Installations-CD lässt sich so ein ins Auge gefasster Rechner überprüfen, zumindest zu Hause oder bei kleineren PC-Händlern. Der ganze Vorgang kann jederzeit abgebrochen werden. Erst nach Anklicken des Installationsknopfes und erneuter Bestätigung (zumindest bei SUSE – andere sind da rigoroser) wird die Installation durchgeführt. Die richtige Konfigurierbarkeit von Geräten (Netzwerk, Drucker) lässt sich so allerdings nicht testen, da dies erst nach der Installation durchgeführt wird.
❐
Mit einer möglichst aktuellen Knoppix-Version lässt sich ein guter Überblick darüber verschaffen, was geht und was nicht. Knoppix (s. Kapitel 13) ist eine Linux-Distribution, die vollständig von CD laufen kann und dann keinerlei Änderungen am System vornimmt, insbesondere wird die Platte nicht angetastet. Da ein ›frisches Knoppix‹ immer sehr aktuell ist, was unterstützte Hardware angeht, eignet es sich hervorragend zum Ausprobieren. Ebenso wie die SUSECD lässt sich die Knoppix-CD bei einem aufgeschlossenen Händler ausprobieren. Wenn der Rechner mit Knoppix läuft, weiß man zumindest, dass die Hardware prinzipiell von Linux unterstützt wird. Selbst wenn die Hardware anschließend mit einer anderen Distribution nicht oder nicht richtig funktioniert, hat man so dennoch die Gewissheit, dass man durch Nachbessern prinzipiell zum Ziel kommen kann3. 23
Installation
❐
Ähnlich wie die Knoppix-CD bietet SUSE eine ›Live-CD‹. Ein ISO-Image der CD lässt sich von den SUSE-Seiten im Internet laden [56].
❐
Wenn Sie – auch nach der Installation – neue Komponenten fürs Notebook kaufen wollen, wie einen Ersatz für das Winmodem, PCMCIA- oder USB-Geräte, sollten Sie das Notebook mit zum Händler nehmen und die Geräte dort gleich ausprobieren (unter Umständen kann die Installations-CD nützlich sein!). Dies kann erfahrungsgemäß einiges an Entäuschung und lästigen Umtauschaktionen sparen.
Pech können Sie auch mit nicht unterstützten Druckern haben. Ein besonders kritischer Fall sind GDI-Drucker, also ›Windows-Drucker‹, deren Funktionalität aus Spargründen zum Teil in die Windows-Treiber verlagert wurde. Mit PostScript- und PCL-Druckern wird man grundsätzlich mehr Glück haben, auch wenn die Farbwiedergabe bei PCL-Druckern unter Linux manchmal noch Probleme bereiten kann. Hilfe findet man hier in zahlreichen Newsgroup-Beiträgen und wiederholt in Fachzeitschriften. Ebenso ist www.linuxprinting.org eine gute Anlaufstelle, hier finden Sie auch Informationen, ob bzw. wie GDI-Drucker von Linux unterstützt werden.
3.3.3
Parallelinstallation zu bestehenden Systemen
Linux lässt sich zusammen mit anderen Systemen gemeinsam auf einem Rechner installieren. In der Regel wird das ein existierendes Windows sein, aber auch weitere Linux (Linuxe, Linices?) sind möglich. Mehrere Linux-Distributionen können sinnvoll sein, wenn man Erfahrungen mit verschiedenen Distributionen sammeln will oder einen größeren Versionssprung vorsichtshalber nicht durch ›Drüberinstallieren‹ durchführen möchte. Sollen Windows und Linux zusammen auf einem Rechner installiert werden, gilt die einfache Regel ›Windows vor Linux‹, und zwar sowohl was die Partition auf der Platte als auch was die zeitliche Reihenfolge angeht:
24
❐
Windows sollte immer in der ersten Partition installiert werden. Linux dagegen ist es gleich, ob es vorn oder hinten auf der Platte steht4.
❐
Windows-Installationen überschreiben den Master Boot Record (MBR, mehr zum MBR später), Linux ist dann nicht mehr aus dem MBR startbar. Wenn Windows als zweites System installiert wird, tut man also gut daran, sich vorher den MBR zu retten. Die Problematik behandeln wir auf Seite 64.
❐
Wird Windows nach Linux installiert, kann es sein, dass der Installationsprozess hängen bleibt – auch eine Linux-Deinstallation nutzt dann nichts mehr. Bei uns
3. Das gleiche gilt natürlich auch, wenn Ihre Installation schon etwas ›betagter‹ ist und eine neue Hardwarekomponente nicht unterstützt: Eine aktuelle Distribution kann auch ohne Installation auf der Festplatte einen Hinweis geben, ob sich ein Upgrade lohnt. 4. Mit eventueller Ausnahme der Bootpartition, siehe Seite 29.
3.3 Vorbereitung
hat geholfen, die MBR-Partitionstabelle unter Linux mit dem fdisk-Kommando ›o‹ in einen jungfräulichen Zustand zurückzuversetzen. Eventuelle Linux-Partitionen gehen dabei natürlich mitsamt Inhalt verloren und lassen sich höchstens mit Manipulationen der Partitionstabelle restaurieren – aber ein sauberes Vorgehen wäre das nicht. Auch wenn die Regel ›Windows vor Linux‹ nicht immer zwingend ist, kann man sich damit unter Umständen jedoch eine Menge vermeidbaren Ärger ersparen. Allerdings kann es – obwohl Linux ansonsten recht verträglich ist – in speziellen Situationen Probleme mit einem existierenden Windows geben. Siehe dazu die Warnung auf Seite 48. Der Vollständigkeit halber sei erwähnt, dass man auf Mac-Hardware (Motorolaoder PowerPC-Prozessoren) zusätzlich zum Apple-Betriebssystem natürlich auch Linux installieren kann (aber kein SUSE), allerdings ist die ›Abwanderungsrate‹ von Mac zu Linux vermutlich geringer als bei Windows; da Mac OS X Unix-basiert ist, kann man dort auch in einer Unix-Shell arbeiten. Welches System jeweils benutzt wird, muss man beim Hochfahren des Rechners entscheiden – ein Systemwechsel heißt also jedes Mal herunterfahren und neu booten. Je nach den verwendeten Dateisystemen ist lesender oder sogar schreibender Zugriff auf die Dateien des anderen Systems möglich, hierauf wird später noch eingegangen. Die Auswahl des Systems beim Rechnerstart kann über einen Bootmanager geschehen, der einem eine Auswahl der installierten Systeme anzeigt, oder über eine Bootdiskette bzw. Boot-CD. Bei letzterem wird Linux gestartet, wenn eine passende Bootdiskette/-CD im Laufwerk liegt, ansonsten das ursprüngliche System. Booten über Diskette/CD hat den Nachteil, dass es umständlicher ist, und ohne die Diskette/CD geht es nicht – dieses kann aber auch ein gewünschter Sicherheitsaspekt sein. Der Vorteil des Diskette/CD-Bootens ist, dass man den Master Boot Record nicht verändern muss.
3.3.4
Platz schaffen
Für die Installation brauchen Sie natürlich Platz. Wieviel Sie vorsehen sollten, finden Sie in Kapitel 2.3. Wenn Linux das einzige System auf Ihrem Rechner sein soll, ist die Situation relativ einfach: ❐
Bei einem neuen Rechner wird ein eventuell existierendes Windows bei der Installation einfach ignoriert bzw. gelöscht.
❐
Wenn Sie einen Rechner hernehmen, auf dem Sie vorher Windows betrieben haben, bedeutet die Wiederverwendung der Windows-Partition(en) auch den endgültigen Verlust aller Daten, die sich dort befinden. Dies liegt daran, dass sich bei Windows oft Anwenderdaten und Betriebssystem in einer Partition befinden. Haben die Anwenderdaten eine eigene Partition, kann man diese
25
Installation
bei der Installation von Linux erhalten und nur den Platz der Windows-Betriebsysstempartition wiederverwenden. Als Alternative kann man natürlich Windows auch komplett installiert lassen (siehe unten), sofern der Platz reicht, und die Anwenderdaten dann von Linux aus weiterverwenden. Eine vorherige Sicherung der Daten ersetzt dies natürlich nicht! ❐
Ersetzen Sie ein bestehendes Linux-System durch ein neues, bleiben die Anwenderdaten bei der Installation erhalten (trotzdem: auch hier vorher sichern).
Möchten Sie mehrere Systeme parallel installieren, braucht jedes seine eigene Partition bzw. seine eigenen Partitionen. Wenn ein existierendes Windows die gesamte Platte mit einer Partition belegt, muss man entsprechend Platz für die LinuxPartition(en) schaffen. Eine sehr einfache Lösung besteht darin, eine weitere Platte dazuzukaufen und Linux dort zu installieren. Eine ebenfalls sehr einfache Lösung ist, beim Neukauf eines Rechners Ihren PC-Händler zu bitten, eine zusätzliche Partition einzurichten und für Linux freizulassen. Bedenken Sie hierbei, dass Linux mehrere Partitionen benötigt5, die freigelassene Partition sollte also als erweiterte Partition (siehe unten) einzurichten sein. Der nicht ganz so einfache Fall ist, Windows Plattenplatz wegzunehmen. Hierzu muss man die möglicherweise über die Platte verstreuten Windows-Dateien defragmentieren6 und am Anfang ›zusammenschieben‹. Anschließend kann man die Windows-Partition verkleinern und im freigewordenen Platz Partitionen für Linux anlegen. Vor der Defragmentierung sollte man einen Dateisystemcheck laufen lassen, um sicherzustellen, dass das Dateisystem in sich konsistent ist. Check und Defragmentierung macht man für FAT-Dateisysteme (Windows 95/98/ME) am besten von Windows aus – bei NTFS-Systemen (NT, XP, 2000) muss dies auf jeden Fall unter Windows geschehen. Das Vorgehen ist in beiden Fällen ähnlich: Zur Überprüfung des Dateisystems führt man das Programm scandisk aus, zur Defragmentierung das Programm defrag. Die Defragmentierung lässt sich auch mit Windows-Tools durchführen, die eine grafische Darstellung der Fragmentierung und des Defragmentierungsprozesses zeigen. Leider sind diese Tools bei jeder Windows-Version an einer etwas anderen Stelle versteckt. Wie sie aufzurufen sind, finden Sie in der Windows-Online-Hilfe unter dem Stichwort ›Defragmentierung‹ oder ›Optimierung‹7.
26
5. Vom pathologischen Fall der Installation in einer Partition inklusive Swap-Platz abgesehen, was mit deutlichen Performance-Einbußen bezahlt wird. 6. Fragmentierung bedeutet, dass Dateien nicht zusammenhängend gespeichert sind, sondern dass die einzelnen Teile der Dateien über die Platte verstreut sind. Fragmentierung entsteht, wenn Dateien gelöscht und neue angelegt werden, die nicht genau in die freigewordenen Stellen passen. Die gängigen Linux-Dateisysteme fragmentieren nur sehr wenig, so dass Defragmentierung unter Linux kein Thema ist. 7. Unter Windows2000 ist der Zugang Start R Einstellungen R Systemsteuerung R Administrative Tools R Computerverwaltung R Datenspeicher. Versuchen Sie es alternativ mit dem Kontextmenü (rechte Maustaste) der zu defragmentierenden Partition (in der Regel also Laufwerk C), dann ›Eigenschaften‹ und ›Extras‹.
3.3 Vorbereitung
Probleme bei der Defragmentierung können durch die Auslagerungsdatei entstehen. Bei FAT-Dateisystemen sollte man die Optimierung der Auslagerungsdatei während der Defragmentierung deaktivieren. Bei NTFS-Dateisystemen kann die Auslagerungsdatei nach der Defragmentierung mitten im freien Speicherbereich oder auch an dessen Ende liegen bleiben. In diesem Fall kann man die Auslagerungsdatei unter Windows deaktivieren und nach der Verkleinerung der Partition wieder einrichten (auch wieder unter Windows). Stellen Sie – z.B. mit der grafischen Fragmentierungsanzeige – sicher, dass keine Daten mehr in dem Bereich liegen, den Sie Windows wegnehmen wollen, und zwar auch dann, wenn Windows meint, dass eine Defragmentierung nicht notwendig sei. Das Defragmentieren kann übrigens je nach Anzahl der Dateien und Fragmentierungsgrad recht lange dauern; auch wenn es hin und wieder aussieht, als habe Windows sich eine halbe Stunde schlafen gelegt, defragmentiert es jedoch (munter?) weiter.
3.3.5
Platten, Partitionen und Bootrecords
Plattenbezeichnungen Unter Linux werden die physischen Festplatten mit Device-Namen gekennzeichnet, beginnend mit hd… für EIDE/IDE-Controller (hard disk) und mit sd… für SCSIFestplatten (SCSI disk)8. Innerhalb dieser Bezeichner werden die Festplatten nach dem Alphabet durchnumeriert (hda, hdb … bzw. sda, sdb …). Windows numeriert Platten (und auch Partitionen) dagegen mit sogenannten Laufwerksbuchstaben durch (C:, D: usw.). So ganz durchsichtig ist die Numerierung allerdings nicht immer: Bei IDE-Platten hängt die Bezeichnung davon ab, wo und an welchem Controller die Platte angeschlossen ist (s. Tabelle 3-1). Ist eine zweite Platte nicht am Slave des ersten IDEControllers, sondern am Master des zweiten angeschlossen, heißt sie statt hdb dann hdc, und hdb gibt es in diesem Fall nicht. SCSI-Platten werden dagegen entsprechend der Reihenfolge der ID-Nummern der Geräte durchnumeriert, unabhängig davon, ob es Lücken in den ID-Nummern gibt oder nicht. Wird bei SCSIPlatten mit den ID-Nummern 0 und 3 (entsprechend sda und sdb) eine mit der IDNummer 2 dazugehängt, bekommt diese den schon vergebenen Device-Namen sdb – die Platte mit ID 3 erhält jetzt den Device-Namen sdc. Bei Windows ist die Situation nicht besser, ganz im Gegenteil: Die Laufwerksbuchstaben numerieren zuerst die primären Partitionen (siehe nächster Abschnitt) aller Platten durch, dann die logischen Partitionen – wahrhaft ein Buchstabensalat. Bei WindowsXP können die Laufwerksbuchstaben auch beliebig anders verteilt sein.
8. Die Bezeichnung ›sd‹ wird auch für USB-Geräte wie Floppy-Laufwerke oder USB-Speichersticks verwendet mit einer entsprechenden SCSI-Simulation.
27
Installation
Tabelle 3-1: Beispiel Plattenbezeichnungen mit IDE-Controller unter Linux 1. IDE/EIDE-Controller
2. IDE/EIDE-Controller
1. IDE-Kanal (Master)
hda
1. IDE-Kanal (Slave)
hdb
2. IDE-Kanal (Master)
hdc
2. IDE-Kanal (Slave)
hdd
1. IDE-Kanal (Master)
hde
…
…
Partitionen Partitionen sind getrennte Bereiche auf einer Platte. Mehrere Partitionen dienen etwa dazu, getrennte Datenbereiche für System und Benutzerdaten zur Verfügung zu stellen, mehrere Betriebssysteme auf einer Platte unterzubringen oder den verfügbaren Plattenplatz in getrennte Datenbereiche für unterschiedliche Systemdaten oder Benutzergruppen aufzuteilen. So kann man verhindern, dass ein Benutzer oder ein Prozess die gesamte Platte vollschreibt und somit das System blockiert – an der Partitionsgrenze ist Schluss und der Rest des Systems bleibt arbeitsfähig. Umgekehrt bedeutet dies natürlich auch, dass mit der Anzahl an Partitionen auch der Verschnitt an ungenutztem Platz steigt: Vielleicht wird in der Partition mit Benutzerdaten noch dringend Platz benötigt, während in der Systempartition noch gähnende Leere herrscht – mit einer gemeinsamen Partition wäre das nicht passiert9. Ebenso können Partitionen benutzt werden, um darin jeweils unterschiedliche Dateisysteme anzulegen, unterschiedliche Zugriffsrechte für große Datenbereiche zu vergeben oder verschlüsselte Dateisysteme einzurichten. Auf der i386-Plattform (d.h. auf fast allen PCs) können Festplatten nur in vier sogenannte primäre Partitionen unterteilt werden, da die entsprechende Tabelle im Master Boot Record nicht mehr als vier Einträge enthalten kann. Sie werden mit 1 bis 4 durchnumeriert (also z.B. bei hda mit hda1, hda2, hda3 und hda4 bzw. bei SCSI mit sda1, sda2, sda3, sda4). Reichen die vier Partitionen nicht aus, so kann die Platte in maximal drei primäre und eine sogenannte erweiterte Partition aufgeteilt werden. Die erweiterte Partition dient als Container für sog. logische Partitionen. Bei IDE-Controllern kann eine erweiterte Partition in maximal 59 logische Partitionen, bei SCSI-Controllern in maximal 11 logische Partitionen unterteilt werden. Die logischen Partitionen werden ab 5 durchnumeriert (also z.B. hda5, hdb5 oder sda5), gleichgültig wie viele primäre Partitionen es gibt. Unter Linux werden die Plattenpartitionen nicht als einzelne Laufwerke wie unter Windows mit C:, D: usw. ausgewiesen, sondern in den Dateibaum eingehängt (gemountet, siehe ab Seite 108). Auf die Partitionen wird dann im norma28
9. Mit dem Logical Volume Manager auch nicht, siehe Seite 105.
3.3 Vorbereitung
len Betrieb über die den Partitionen zugeordneten Verzeichnisse (mount points) zugegriffen. Partitionen lassen sich in den meisten Betriebssystemen – auch bei Linux – mit dem Kommando fdisk anlegen. Komfortabler geht dies bei Linux mit dem entsprechenden YaST-Modul (YaST R System R Partitionieren), auch neuere Windows-Varianten bieten grafische Tools. Die Partitionierung ist auf einer Platte, auf der bereits Daten liegen, allerdings ein heikles Thema und sollte daher nur von Personen durchgeführt werden, die genau wissen, was sie tun. Plattenaufteilung Während Windows-Systeme nur eine Partition benötigen (und oft auch nur mit einer Partition pro Platte installiert werden), sollten Sie für Linux mindestens zwei vorsehen (die natürlich auch auf verschiedenen Platten liegen können): eine für den Swap-Bereich (Windows: Auslagerungsdatei) und eine für ›den Rest‹. Die Swap-Partition kann übrigens von mehreren Linux-Installationen auf Ihrem Rechner gemeinsam genutzt werden. Die Aufteilung einer Platte in Partitionen wird in der Regel bei der Installation festgelegt. Wenn Sie YaST die Partitionierung der Festplatte überlassen, müssen Sie sich um die Aufteilung der Festplatte in Partitionen (fast) keine Gedanken machen. Für den Fall, dass Sie aber selbst partitionieren wollen, folgen hier einige Hinweise zu den Platzanforderungen der verschiedenen Systemtypen. Wenn nur wenig Plattenplatz vorhanden ist (z.B. bis zu 500 MB), empfiehlt sich, eine Swap-Partition und nur eine Root-Partition anzulegen. Die Größe der SwapPartition wird üblicherweise mit 100% bis 200% des Hauptspeichers angesetzt. Erst bei mehr als 500 MB würde man zusätzlich eine eigene Partition für /boot mit ca. 30 MB anlegen. Die getrennte Partition für /boot hat den Vorteil, dass Bootmanager und Betriebsystemkern bei Plattenproblemen mit höherer Wahrscheinlichkeit nicht betroffen sind und ein startbares System verbleibt. Auch lässt sich bei einigen älteren Mainboards das System nur von Plattenbereichen unterhalb des 1024. Zylinders starten, in diesem Fall legt man die Bootpartition einfach entsprechend weit ›unten‹ an. Hat man ca. 4 GB zur Verfügung, kann man eine eigene Partition für die Benutzerdaten (/home) anlegen, je nach Anwendungsdaten ca. 200 MB bis 1 GB pro Benutzer. Eine Aufteilung in System- und Benutzerdaten hat den Vorteil, dass sich das System einfacher auf eine neuere Version umstellen lässt, ohne die Benutzerdaten mehr als notwendig zu gefährden. Sie können bei dieser Aufteilung auch einfacher von mehreren Linux-Installationen auf Ihrem Rechner auf die gemeinsamen Benutzerdaten zugreifen.
29
Installation
Bild 3-1: Aufteilung einer IDE-Platte
Weitere Partitionen kann man anlegen für Programme (/usr), eventuell für /opt (optionale Software) und für Systeminformationen, Protokolle etc. (/var). Natürlich muss man nicht gleich die gesamte Platte partitionieren, man kann sich auch Plattenplatz freihalten und dort bei Bedarf später noch Partitionen anlegen. Anregungen zur Plattenaufteilung finden Sie auch im SUSE-Anwenderhandbuch. In Kapitel 6.1 gehen wir zudem auf die verschiedenen Dateisysteme ein, die sich für die unterschiedlichen Partitionen und ihre Verwendung eignen. Bild 3-1 zeigt als Beispiel die Aufteilung einer 20 GB großen IDE-Platte10 für Linux und Windows mit zwei primären Partitionen hda1 und hda2 sowie fünf logischen Partitionen in der erweiterten Partition hda3 (Darstellung über YaST R System R Partitionieren). Windows belegt die erste primäre Partition und Linux befindet sich in den logischen Partitionen. Auf hda8 liegt ein Linux-System, auf hda9 die zugehörigen Home-Verzeichnisse. Eine zweite Linux-Distribution mit eigener HomePartition befindet sich auf hda6 und hda7. Beide Linux-Distributionen verwenden dieselbe Swap-Partition auf hda5. Die zweite primäre Partition auf hda2 enthält ein FAT-Dateisystem, auf das die drei Betriebssysteme gemeinsam lesend und schreibend zugreifen können. In unserem Beispiel ist die Festplatte also wie folgt zugeordnet:
30
10. Herstellerangabe und Ausgabe von fdisk auf Seite 32 in Zehnerpotenzen. YaST gibt die Größe in Zweierpotenzen an und kommt deshalb nur auf 18,6 GB für dieselbe Platte (s. Seite 119).
3.3 Vorbereitung
Typ
Inhalt
verwendet für (mount)
gesamte Platte
hda1
1. primäre Partition
NTFS
Bootrecord und Daten (Verzeichnisse und Daten unter Windows)
Windows C: in Linux im Dateibaum unter /windows/C eingehängt (read only)
hda2
2. primäre Partition
VFAT
Bootrecord und Daten
Windows D: in Linux im Dateibaum unter /windows/D eingehängt (read/write)
hda3
3. primäre (erweiterte) Partition 1. logische Partition
hda9
hda8
hda
hda7 hda6 hda5
Name Erläuterung
Master Boot Record mit Aufteilung der primären Partitionen
Bootrecord mit Aufteilung der erweiterten Partition
swap
Swap-Partition
Swap-Bereich für 9.0 und 9.1
2. logische Partition
ReiserFS Linux 9.0 root
eingehängt unter / (root)
3. logische Partition
ReiserFS Home-Verzeichnisse für eingehängt unter /home Linux 9.0
4. logische Partition
ReiserFS Linux 9.1 root
5. logische Partition
ReiserFS Home-Verzeichnisse für eingehängt unter /home Linux 9.1
eingehängt unter / (root)
Zylinder und Köpfe Da bei der Partitionierung (je nach eingesetztem Werkzeug) u.a. von Sektoren, Zylindern und Köpfen die Rede ist, hier eine idealisierte Darstellung vom Innenleben eines Plattenlaufwerks: Eine Festplatte besteht aus ein oder mehreren rotierenden Magnetscheiben, auf deren Ober- und Unterseite jeweils mit Schreib-/Leseköpfen (heads) Information geschrieben bzw. gelesen werden kann. Jeder Kopf beschreibt eine kreisförmige Spur (track). Eine Spur ist in Sektoren (sectors) unterteilt, die in der Regel 512 Byte enthalten können. Die Köpfe können gemeinsam nach innen oder außen auf andere Spuren bewegt werden. Bei einer festen Kopfposition kann gleichzeitig auf die Daten in den entsprechenden Spuren aller Magnetscheiben zugegriffen werden. Diese gleichzeitig zugreifbaren Spuren werden als Zylinder (cylinder) bezeichnet: Stellt man sich vor, dass diese übereinanderliegenden Spuren miteinander verbunden sind, bilden sie anschaulich gesprochen einen Zylinder.
31
Installation
Bild 3-2: Innenleben einer Platte
Die oft verwendete CHS-Bezeichnung steht für Cylinder/Head/Sector, ist also eine Angabe von Zylindern, Köpfen und Sektoren. Diese Werte müssen übrigens nicht mit der Wirklichkeit innerhalb der Platte übereinstimmen, es sind logische Werte, die sich umdefinieren lassen und die vom Plattencontroller in die realen Hardwarewerte umgesetzt werden. So kann auch ein Laufwerk mit einer Scheibe und zwei Köpfen nach außen durchaus 255 Köpfe vorspiegeln. Auch USB-Speichersticks zeigen, sofern sie nicht als Superfloppy formatiert sind, nach außen eine CHS-Geometrie. Die (logische) Plattengeometrie kann man sich unter root mit dem Kommando fdisk -l anzeigen lassen. Für die Platte aus obigem Beispiel sieht dies folgendermaßen aus (den Partitionierungsteil der fdisk-Ausgabe haben wir hier weggelassen): Jogyli:/ # fdisk -l /dev/hda Platte /dev/hda: 20.0 GByte, 20003880960 Byte 255 Köpfe, 63 Sektoren/Spuren, 2432 Zylinder Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Bootrecords Jede Platte enthält am Anfang einen sogenannten Master Boot Record (MBR), der Code zum Starten eines Betriebssystems enthalten kann. Der MBR ist (nur) 512 Byte groß: Die ersten 446 Byte bestehen bei einer bootfähigen Platte aus einem Bootcode, die nächsten 64 Byte enthalten die Partitionstabelle für die maximal vier primären Partitionen, und zum Abschluss steht in den letzten beiden Byte eine Endemarkierung, die sogenannte magische Zahl (magic number), mit dem Wert hexadezimal AA55. Ohne diese Zahl gilt der MBR bei vielen Tools als ungültig. Wird bei der Installation ein fehlerhafter Bootcode in den MBR geschrieben oder die Partitionstabelle beschädigt, ist das System von dieser Platte nicht mehr startbar. Umso wichtiger ist es, sich eine Sicherung des MBR bzw. eine Notfall-CD/Floppy zu erstellen. Wir werden darauf in Kapitel 13.5 noch eingehen. Auf die Funktion des Bootcodes wird im Abschnitt über Bootmanager (3.3.8) näher eingegangen.
32
3.3 Vorbereitung
Zu Beginn jeder primären Partition existiert ein Bootsektor, der wiederum Informationen über diese Partition enthält. Hier können auch betriebssystemspezifische Bootsequenzen stehen, falls diese nicht in den MBR geschrieben werden. Im nachstehenden Bild ist eine Plattenaufteilung mit nur zwei primären Partitionen vereinfacht dargestellt: Bootsektor von hda1
Master Boot Record
Anfang von hda1
Bootsektor von hda2
Anfang von hda2
Bild 3-3: Vereinfachte Darstellung einer Plattenaufteilung mit Master Boot Record
3.3.6
Wahl des Dateisystems
Bei der Installation hat man die Wahl zwischen einer Reihe von Dateisystemen. Welches ist nun das richtige? Jede Partition kann ein anderes Dateisystem enthalten, und mehrere verschiedene Dateisysteme können durchaus sinnvoll sein. Das einzige Dateisystem, das fest vorgegeben ist, ist Swap für die Linux-Swap-Partition11. Für die anderen Partitionen hat man die freie Wahl. Die erste grundsätzliche Frage ist, ob man sich (noch) für ein klassisches Dateisystem entscheidet oder für ein sogenanntes Journaling-Dateisystem. Das klassische Linux-Dateisystem ext2 hat den Hauptvorteil, dass es als ›rock solid‹ gilt, also ein grundsolides stabiles System ist. Allerdings entsteht bei Systemabstürzen oder Stromausfall ein inkonsistentes Dateisystem. Beim nächsten Booten des Systems versucht Linux dann, das Dateisystem zu reparieren (was auch meistens gelingt). Linux muss dabei alle über das Dateisystem verteilten Metadaten prüfen und gegebenenfalls korrigieren, dies kann bei den heutigen Plattengrößen mehr als eine Stunde dauern. Was bei einem Privatrechner noch ›für einen guten Zweck‹ toleriert werden kann, ist bei kommerziell betriebenen Servern nicht mehr zumutbar. Das Dateisystem wird außerdem aus Sicherheitsgründen nach einer gewissen Zahl von Bootvorgängen komplett auf Konsistenz überprüft, auch hier fallen die gleichen lästigen Wartezeiten an. Journaling-Dateisysteme umgehen dieses Problem, indem Sie ein Journal führen, in dem Änderungen an den (Meta-)Daten mitprotokolliert werden (mehr dazu auf 11. Eigentlich handelt es sich hier nicht um ein ›richtiges‹ Dateisystem, sondern um einen speziell formatierten Plattenbereich, auf den Speicherseiten abgelegt werden, um Platz im Hauptspeicher zu schaffen.
33
Installation
Seite 101). Nach einem Absturz lässt sich wesentlich schneller wieder ein konsistentes Dateisystem herstellen, und die Konsistenzprüfungen beim Booten sind so kurz, dass sie kaum mehr auffallen. Natürlich ersetzen auch Journaling-Dateisysteme kein Backup-System. Journaling-Dateisysteme haben inzwischen einen Reife- und Stabilitätsgrad erreicht, der sie zum System der Wahl macht. Die einzige Daseinsberechtigung von klassischen Dateisystemen ist der Austausch von Daten mit anderen Betriebssystemen. Hat man neben Linux zum Beispiel ein weiteres Betriebssystem aus dem Hause Microsoft auf dem Rechner, so kann auf eine mit VFAT angelegte Partition sowohl von Linux als auch von der gesamten Windows-Familie lesend und schreibend zugegriffen werden. Insbesondere das Schreiben auf von neueren Windows-Versionen benutzten NTFS-Systemen (übrigens auch ein Journaling-Dateisystem) beherrscht Linux nämlich nicht12. Die Journaling-Systeme ext3 und ReiserFS haben sicher eine besonders große FanGemeinde bei kleineren Linux-Systemen und damit auch bei Linux-Bastlern (im positiven Sinne), man wird bei Problemen so auch eher etwas in den gängigen Newsgroups finden – auch das kann ja ein Argument sein. Im Kapitel 6.1 gehen wir weiter auf die Eigenschaften der verschiedenen Journaling-Systeme ein.
3.3.7
Krypto-Dateisysteme
Beim Festlegen des Dateisystemtyps bei der Installation lässt sich auch angeben, ob das Dateisystem verschlüsselt werden soll. Dies kann insbesondere bei Notebooks sinnvoll sein, die ja durchaus ohne den Wunsch des Besitzers manchmal einen neuen Eigentümer finden – und mit dem Notebook dann auch eventuell darauf befindliche sensible Daten. Ebenso haben Fremde Zugang zum System, wenn der Rechner zur Reparatur muss oder wenn er einmal ausgemustert und weitergegeben wird. Bedenken Sie, dass Löschen von Daten nur die Verzeichniseinträge löscht, nicht jedoch die Daten selbst. Während man auf traditionellen Dateisystemen zum unwiderruflichen Löschen von Dateien das Kommando shred nutzen konnte, funktioniert dies u.a. auf Journaling-Dateisystemen und RAIDs nicht mehr (siehe ›info shred‹). shred hilft auch nicht gegen Sicherheitskopien, die manche Programme ohne Wissen des Anwenders von ihrer Eingabe an versteckten Stellen des Systems anlegen …
34
12. Genauer gesagt: noch nicht. Es existieren Kernel-Module zum Schreiben auf NTFS, diese sind aber von den Entwicklern aus Sicherheitsgründen nicht offiziell freigegeben. Ein weiterer erfolgversprechender Ansatz ist das Benutzen des von der Windows-Installation ›gekaperten‹ Original-Windows-Treibers in einer Sandbox (Kernel-Modul ›Captive‹ [18]). Weiterhin bietet die russische Softwarefirma Paragon NTFS-Treiber für Linux an (www.paragon.ag/ger), aber auch hier sollte man sich erkundigen, ob die Anlaufschwierigkeiiten behoben sind und die notwendige Stabilität für Schreibvorgänge vorhanden ist.
3.3 Vorbereitung
Auch wenn wir uns in diesem Abschnitt auf die bei der Installation anzulegenden Dateisysteme beziehen: Die Prinzipien gelten natürlich auch für verschlüsselte Dateisysteme, die man später anlegt. So kann man auch Dateisysteme auf externen Medien13 schützen – schließlich kann ein Memory-Stick auch verloren gehen. Das Einrichten eines verschlüsselten Dateisystems ist bei SUSE nur ein Kreuz im Kontrollkästchen ›Dateisystem verschlüsseln‹, bei anderen Distributionen muss man hier noch selbst Hand anlegen [13]. Bei Krypto-Dateisystemen muss man sich einiger Eigenheiten bewusst sein, die sich direkt aus deren Realisierung ergeben. Auf die Platte wird über ein sogenanntes Loopback-Device mit einem Verschlüsselungsalgorithmus zugegriffen (s. Bild 3-4). Normalerweise ist das Dateisystem direkt mit einem Blockdevice (also etwa der Platte) verbunden. Das Loopback-Device wird zwischen Dateisystem und Blockdevice eingefügt, es wirkt zum Dateisystem wie ein Blockdevice – für das Dateisystem ändert sich also nichts. Das Loopback-Device kann im einfachsten Fall die Daten einfach durchreichen – so als wäre es gar nicht vorhanden. Es kann allerdings die Daten auch an ein Programm weiterleiten, das die Daten manipuliert. In unserem Fall ist dies ein Verschlüsselungsverfahren. Beim Schreiben auf die Platte werden die Daten vom Loopback-Device also verschlüsselt, beim Lesen entschlüsselt. Das Dateisystem sieht nach wie vor unverschlüsselte Daten auf einem Blockdevice. Im normalen Betrieb merkt der Anwender also nicht, dass seine Daten auf der Platte – und nur dort – verschlüsselt sind. Beim Anlegen des Dateisystems müssen Sie ein Passwort für das Verschlüsselungsverfahren vergeben, das dann beim Mounten des Filesystems (etwa beim Hochfahren des Rechners) abgefragt wird. Loopback-Device Anwendung
Dateisystem
Blockdevice
KryptoModul
Bild 3-4: Krypto-Dateisystem mit Loopback-Device
Ein Krypto-Dateisystem dient wie gesagt dazu, sensible Daten bei Verlust des Speichermediums gegen Missbrauch zu sichern. Für diese Sicherheit muss man folgende Nachteile in Kauf nehmen: 13. Sollen die externen Medien zum Datenaustausch mit anderen Rechnern dienen, ist allerdings Vorsicht angeraten – Krypto-Dateisysteme lassen sich unter anderen Betriebssystemen nicht notwendigerweise mounten. Hier wird man sensible Daten eher explizit via PGP/GPG (Pretty Good Privacy, Gnu Privacy Guard) verschlüsseln.
35
Installation
❐
Das Passwort wird beim Anlegen des Dateisystems vergeben und ist anschließend nicht mehr zu ändern14, es sollte also den üblichen Richtlinien für die Sicherheit von Passwörtern entsprechen (s. Kapitel 5.4.5). Das ab Kernel 2.4.22 genutzte CryptoAPI fordert ein Passwort von mindestens 20 Zeichen!
❐
Bei Verlust des Passworts sind alle Daten auf dem Dateisystem unwiederbringlich verloren!
❐
Beim Hochfahren des Systems (genauer: beim Mounten des Dateisystems) wird ein zusätzliches Passwort abgefragt.
❐
Die Daten sind im laufenden Betrieb (solange das Dateisystem gemountet ist) nicht gegen Zugriff geschützt. Das heißt, der Systemverwalter oder auch jemand, der sich unbefugten Zugang zum System verschafft hat, kann auf die Daten unverschlüsselt zugreifen.
❐
Durch die Verschlüsselung ist der Zugriff etwas langsamer. Im normalen Betrieb wird man den Unterschied kaum merken, so dass man etwa /home auf einem Krypto-System anlegen kann. Filesysteme mit großen Datentransfervolumen wie etwa Filmarchive wird man dagegen nicht als Krypto-Dateisysteme anlegen.
❐
Gerade bei Notebooks sollte man beachten, dass man in einigen Ländern keine starke Kryptografie ein- oder ausführen darf.
Das Root-Dateisystem kann übrigens nicht auf einem Krypto-System angelegt werden, da hierauf beim Starten des Systems vor dem Mounten und Anlegen des Loopback-Devices zugegriffen wird. Auf das manuelle Mounten von KryptoDateisystemen gehen wir auf Seite 116 ein.
Warnung
Datensicherung ist kein Problem, solange die Daten unverschlüsselt aus dem Dateisystem gelesen und dann gesichert werden. Bei einem direkten Sichern der verschlüsselten Partition muss darauf geachtet werden, dass die Blöcke anschließend wieder an derselben Stelle landen, an der sie vorher standen (siehe [42]).
36
Bis Kernel-Version 2.4.21 (SUSE 9.0) wurde das Modul loop_fish2 zum Verschlüsseln benutzt, in späteren Versionen wird das in den Kernel integrierte CryptoAPI verwendet. Diese beiden Versionen sind inkompatibel, die mit einer Version geschriebene Daten lassen sich mit der anderen nicht mehr lesen.
14. Sollte das Passwort kompromittiert sein, können Sie auf einer freien Partition ein neues KryptoDateisystem anlegen und die Daten des alten dorthin verlagern. Es gibt auch eine trickreiche Methode, dieselbe Partition zum Umcodieren zu benutzen, siehe [42]. Werden die sensiblen Daten auf einem unverschlüsselten Dateisystem zwischengelagert, während man auf der alten Partition eines mit einem neuen Passwort anlegt, sind diese auch nach dem Löschen unverschlüsselt mit passenden Tools lesbar. Hier hilft Überschreiben der unverschlüsselten Partition mit Nullen oder Zufallszahlen: Mit ›dd if=/dev/random of=/dev/parti bs=1M count=size‹, wobei parti der Name der Partition und size die Größe der Partition in MB ist, wird der Inhalt der gesamten Partition inklusive Dateisystem ›geschreddert‹.
3.3 Vorbereitung
Der Vollständigkeit halber sei darauf hingewiesen, dass unverschlüsselte Daten aus dem Arbeitsspeicher auf den Swap-Bereich ausgelagert werden können, ein Core-Dump kann Daten auf einer unverschlüsselten Partition hinterlassen, und einige Programme lagern Daten nach /tmp aus. Es hängt von dem persönlichen Grad an Paranoia ab, ob man dagegen etwas unternehmen will – hier wird nicht weiter darauf eingegangen. Generell bleibt immer ein Restrisiko, Sicherheit ist nie perfekt. Bedenken Sie auch, dass das schwächste Glied ein schwaches oder abgehörtes Passwort ist.
3.3.8
Bootmanager: LILO oder GRUB?
Der Bootmanager (auch ›Bootloader‹ genannt) ermöglicht die Auswahl verschiedener Betriebssysteme beim Starten des Rechners oder das Starten des Systems mit unterschiedlichen Parametern. In diesem Abschnitt wird auf die beiden Linux-Bootloader LILO (Linux Loader) und GRUB (Grand Unified Bootloader) eingegangen. Näheres zum Bootvorgang finden Sie in Kapitel 4 und Informationen zur Deinstallation der Bootmanager im Abschnitt 3.6. YaST übernimmt standardmäßig bei vorhandenem Linux den dort benutzten Bootmanager, bei Neuinstallationen wird GRUB verwendet. Natürlich haben beide Bootmanager ihre Vor- und Nachteile. Bei Nichtgefallen kann man auch später noch einen anderen Bootmanager installieren – risikoloser und bequemer ist es natürlich, wenn man sich gleich für den geeigneten entscheidet. Der Hauptunterschied der beiden Bootmanager besteht darin, dass GRUB die wichtigsten Dateisysteme kennt (ext2, ext3, ReiserFS, JFS, XFS, Windows/DOS FAT) und damit auf Dateien zugreifen kann, während LILO keine Kenntnis der Filesystemstruktur hat und über ›fest eingebrannte‹ Adressen auf anonymen Plattenplatz zugreift. Daraus folgen weitere Unterschiede: ❐
GRUB liest seine Steuerinformationen beim Starten des Systems aus einer
Datei. Diese Informationen sind bei laufendem System bequem mit einem beliebigen Editor zu ändern, ebenso lassen sich die Informationen beim Bootvorgang interaktiv ändern. So lassen sich auch Systeme booten, die in der Steuerdatei (noch) nicht eingetragen sind oder die fehlerhafte Einträge haben. Was über die Filesysteme, die GRUB kennt, hinausgeht, kann nicht verwendet werden: Booten von CPU-abhängigen RAID-Controllern, Software-RAID und LVM ist nicht möglich. ❐
Sobald irgendetwas an den von LILO beim Start benutzten Dateien oder Parametern verändert wird (dazu gehört auch Verschieben von Dateien!), muss LILO quasi neu installiert werden. Dabei werden die Adressen der Dateien auf der Platte – wie oben schon erwähnt – fest in LILO ›eingebrannt‹. Beim Ändern der am Bootprozess beteiligten Dateien muss man also sehr sorgfältig darauf 37
Installation
achten, LILO zu aktualisieren (Kommando /sbin/lilo) – ansonsten hilft nur eine Notfalldiskette oder Notfall-CD, um das System starten zu können. Da während einer Neuinstallation von LILO alle Informationen über Dateisysteme vorliegen und damit auch die Lage der beim Bootvorgang benötigten Dateien bekannt ist, kann LILO auch von anderen Dateisystemen als GRUB booten, ebenso von LVM oder etwa der zweiten Platte eines RAID, falls die erste ausgefallen ist (sofern man dort einen Notfallsystem installiert hat und dies in LILO als Bootalternative eingetragen ist). Beide hier behandelten Bootmanager bestehen aus zwei Stufen. Die erste Stufe passt in einen Bootsektor und hat die einzige Aufgabe, die zweite Stufe zu laden, die dann die eigentliche Arbeit macht. Wie weiter vorn schon beschrieben, stehen in einem Bootsektor per Konvention maximal 446 Byte für die erste Stufe zur Verfügung, der Rest der 512 Byte gehören der Partitionstabelle für die vier primären Partitionen und der Endemarkierung. Die Partitionstabelle wird von den LinuxBootmanagern allerdings nicht genutzt. Die erste Stufe lässt sich nun in verschiedenen Bootsektoren unterbringen, was zu unterschiedlichen Bootvorgängen führt: Bootsektor einer Floppy Linux lässt sich nur von der Floppy booten, was man entweder als umständlich oder als Sicherheitsaspekt ansehen kann (oder als beides). Auf jeden Fall kann man so keinen Schaden an den Bootsektoren der Festplatte anrichten. Wichtig ist, sich einen ausreichenden Vorrat solcher Floppies zuzulegen, denn Floppies können defekt werden oder gehen auch manchmal einfach verloren… Wird die Floppy vor dem Booten aus dem Laufwerk genommen, startet über den MBR der Bootloader eines eventuell vorhandenen zweiten Betriebssystems. Falls man nur den Bootsektor der Floppy beschreibt und auf der Floppy keine für das Booten notwendigen Dateien unterbringt, braucht man auf der Floppy nicht einmal ein Dateisystem anzulegen. Bootsektor einer primären Partition In diesem Fall muss die Partition als ›aktiv‹ markiert werden. Der (Standard-DOS-)Bootloader im MBR übergibt dann die Kontrolle an den Bootsektor der markierten Partition. Alternativ kann die Kontrolle auch von einem anderen Bootloader an diese Partition übergeben werden. Die ›aktiv‹-Markierung lässt sich unter root mit dem Kommando fdisk verändern.
38
Bootsektor einer Platte (MBR) Dieses ist die riskanteste Version, falls sich schon andere Betriebssysteme auf dem Rechner befinden. Auf jeden Fall wird man sich den alten MBR retten und außerdem sicherstellen, dass die existierenden Systeme im Zweifelsfall von Floppy oder CD gestartet werden können. Lässt sich solch ein weiteres Betriebssystem nicht über den Linux-Bootloader starten, oder soll Linux komplett gelöscht werden, wird der Original-MBR wieder zurückgespielt.
3.3 Vorbereitung
Bei der Installation von LILO wird der MBR automatisch gesichert, und bei der Installation von GRUB über YaST sollte man auf jeden Fall diese Sicherung in Anspruch nehmen. Der gesicherte MBR gehört anschließend sofort auf ein Medium, auf das sich von einem startbaren System, sei es Linux, Windows oder ein Notfallsystem, zugreifen lässt, damit der gesicherte MBR von dort gegebenenfalls in den MBR der Platte zurückgeschrieben werden kann. Wie man den MBR zurückspielt, finden Sie in Abschnitt 3.6. Beide Bootloader lassen sich relativ bequem über YaST installieren, wobei auch die entsprechenden Konfigurationsdateien aus den YaST-Menüeinträgen erzeugt werden. Die Konfigurationsdateien können anschließend wahlweise mit einem Editor angepasst werden, ohne über die YaST-Menüs gehen zu müssen.
GRUB Wie gesagt, liest GRUB seine Steuerinformationen beim Starten aus Dateien, die über Laufwerke (Devices) und Dateinamen identifiziert werden. Im nächsten Abschnitt gehen wir auf die speziellen Laufwerksbezeichnungen von GRUB ein, anschließend auf die zentrale Menüdatei /boot/grub/menu.lst. Im Internet finden Sie unter www.gnu.org/software/grub/grub.de.html weitere Informationen zu GRUB. Laufwerksbezeichnungen und die Datei device.map In GRUB werden Laufwerke und Partitionen leider anders bezeichnet als sonst in Linux üblich, und zwar in der Form ›(Laufwerk,Partition)‹, also etwa (hd0,3). Die maximal vier primären Partitionen werden mit den Ziffern 0 bis 3 bezeichnet, die Zählung der logischen Partitionen beginnt – unabhängig von der wirklichen Anzahl primärer Partitionen – bei 4 (5 wäre also die zweite logische Partition). Laufwerke werden ebenso von Null beginnend durchnumeriert, wobei fd FloppyLaufwerke bezeichnet und hd alle Festplatten – gleichgültig, ob IDE oder SCSI – in der Reihenfolge, in der sie vom BIOS oder SCSI-Controllern erkannt werden. fd0 ist also das Floppy-Laufwerk, hd0 die ›erste‹ Festplatte. Welche Linux-Devices jetzt diesen GRUB-Laufwerken entsprechen, versucht GRUB bei der Installation zu ermitteln, das Ergebnis findet sich in der Datei /boot/grub/device.map. Sollte es zu Bootproblemen kommen, kann man hier nachsehen und die Datei gegebenenfalls korrigieren. Nach manuellen Änderungen an der Datei muss GRUB unter root neu installiert werden mit grub --batch --device-map=/boot/grub/device.map < /etc/grub.conf
Ein Booten mit provisorisch geänderten Zuordnungen ist auf jeden Fall über den GRUB-Kommandomodus möglich. Wenn in der Bootreihenfolge im BIOS IDE vor SCSI eingestellt ist, kann die Datei /boot/grub/device.map zum Beispiel so aussehen: 39
Installation
(fd0) (hd0) (hd1) (hd2)
/dev/fd0 /dev/hda /dev/hdb /dev/sda
Tabelle 3-2 stellt für diese beispielhafte Zuordnung einige GRUB- und Linuxbezeichnungen gegenüber. Tabelle 3-2: Platten und Partitionen bei GRUB und Linux für die im Text ange– nommene Zuordnung GRUB
Linux
(hd0,0)
/dev/hda1
erste primäre Partition auf der ersten IDE -Platte
(hd0,1)
/dev/hda2
zweite primäre Partition auf der ersten IDE -Platte
(hd0,4)
/dev/hda5
erste logische Partition auf der ersten IDE -Platte
(hd2,0)
/dev/sda1
erste primäre Partition auf der SCSI -Platte
Falls GRUB nicht über Filenamen auf Dateien zugreifen soll (bzw. kann), lässt sich auch noch der Sektor angeben, von dessen Anfang ein Programm zu laden ist: (hd0,0)+0 (oder einfach (hd0,0)) ist der ›nullte‹ Sektor der ersten Festplatte (also der Bootsektor), (hd0,0)+1 der erste Datensektor dieser Platte. Diese Bezeichnung wird zum Beispiel benutzt, wenn GRUB an den Windows-Bootloader weiterverzweigt (siehe Chainloader weiter unten). Die Menüdatei menu.lst In der Menüdatei /boot/grub/menu.lst findet GRUB alle Informationen zum Bootmenü und zu Betriebssystemen, die mit dem Bootmenü gebootet werden sollen. Diese Datei wird bei jedem Systemstart gelesen, Änderungen an dieser Datei sind also beim nächsten Start wirksam, ohne dass GRUB – anders als bei LILO – neu installiert werden müsste. Kommentare werden durch ein Doppelkreuz (#) eingeleitet. Im ersten Teil der Datei finden sich Grundeinstellungen des Bootmenüs: color
Dieser Eintrag definiert Schrift-/Hintergrundfarbe des Bootmenüs und die zugehörigen Farben für markierte Einträge. Die Farben werden wirksam, wenn Sie den Bootbildschirm mit ESC verlassen, um Eingaben außerhalb des Menüs zu tätigen. Beispiel: color white/blue black/light-gray
gfxmenu
Datei, in der GRUB das Hintergrundbild für den Bootbildschirm findet. Beispiel (das Bild befinde sich in der Datei /boot/message auf /dev/hda1): gfxmenu (hd0,0)/boot/message
40
3.3 Vorbereitung
default
Nummer des Menüeintrags, der standardmäßig gebootet wird. Gezählt wird ab Null. Beispiel (GRUB soll standardmäßig mit dem dritten Eintrag booten): default 2
timeout
Anzahl von Sekunden, nach denen GRUB ohne weitere Eingabe mit dem Standardeintrag bootet. Beispiel (GRUB bootet nach 15 Sekunden, wenn keine Benutzereingabe erfolgt): timeout 15
password
Hier kann ein (verschlüsseltes) Passwort angegeben werden. Details dazu auf Seite 44.
Im zweiten Teil der Menüdatei wird angegeben, welche Betriebssysteme von wo und mit welchen Einstellungen gestartet werden können. Ein Abschnitt beginnt immer mit einer Titelzeile und endet direkt vor der nächsten Titelzeile bzw. am Dateiende. Die Zeilen eines Abschnittes werden der Reihe nach abgearbeitet. kernel
Diese Angabe legt fest, welcher Linux-Kernel mit welchen Booteinstellungen zu starten ist. Beispiel: kernel (hd0,7)/boot/vmlinuz root=/dev/hda8 vga=0x317
In diesem Beispiel steht der Kernel in der Datei /boot/vmlinuz der vierten logischen Partition der ersten Platte. Der Root-Parameter gibt an, wo der Kernel die Root-Partition findet. Da diese Information vom Kernel und nicht von GRUB verarbeitet wird, muss die Partition natürlich in der Linux-Schreibweise angegeben werden: /dev/hda8 ist ebenfalls die vierte logische Partition der ersten Platte. Weiterhin findet sich im Beispiel die Angabe über den VGA-Modus. Einige der Kernel-Parameter werden unten bei den Beispielen kurz beschrieben, eine ausführliche Liste finden Sie zum Beispiel bei selflinux [55] und www.linuxhaven.de/dlhp/HOWTO/DE-BootPrompt-HOWTO2.html (bis 11.html) initrd
Pfad zur initrd-Datei, falls der Kernel eine Initial-RAM-Disk nutzt. Beispiel (initrd liege unter /dev/hda8/boot/initrd): initrd (hd0,7)/boot/initrd
root
Default-Device bei Kernel- oder initrd-Angaben. Beispiel: root (hd0,7)
Erspart die entsprechende Angabe in den Kernel- und initrd-Zeilen. lock
Das Starten dieses Systems ist nur nach Eingabe des unter ›password‹ angegebenen Passworts möglich.
boot
Die letzte Zeile eines Abschnittes, sie veranlasst GRUB, den Bootvorgang zu starten. Die Zeile kann in der Datei menu.lst fehlen, sie wird dann implizit ausgeführt. Falls Sie die Steueranweisungen für GRUB 41
Installation
interaktiv eingeben, wird der Bootvorgang mit diesem Kommando gestartet. chainloader Das Kommando verzweigt zu einem weiteren Bootloader, etwa dem für ein Windows-System oder dem auf einer Bootdiskette. Beispiel (der zu startende Bootloader stehe im ersten Sektor der ersten Partition auf der ersten Platte): chainloader (hd0,0)+1
Im folgenden zeigen wir ein Beispiel für die Datei menu.lst: color white/blue black/light-gray default 0 timeout 15 gfxmenu (hd0,7)/boot/message title Linux kernel (hd0,7)/boot/vmlinuz root=/dev/hda8 vga=0x317 \ splash=silent acpi=off desktop showopts initrd (hd0,7)/boot/initrd title Failsafe kernel (hd0,7)/boot/vmlinuz root=/dev/hda8 showopts \ ide=nodma apm=off acpi=off vga=normal nosmp \ noapic maxcpus=0 3 initrd (hd0,7)/boot/initrd title Windows chainloader (hd0) title Floppy chainloader (fd0)+1 title MBR vor der Installation chainloader (hd0,7)/boot/backup_mbr
Per Default wird der erste Eintrag nach 15 Sekunden gestartet. Dieser lädt den Kernel von /dev/hda8/boot/vmlinuz, die initrd von /dev/hda8/boot/initrd, und root liegt ebenfalls auf demselben Device. Bei den an den Kernel übergebenen Parametern bedeutet splash=silent, dass beim Booten keine Meldungen ausgegeben werden (Gegenteil splash=verbose), und acpi=off sorgt dafür, dass die ACPI-Unterstützung ausgeschaltet wird, die oft Anlass zu Fehlfunktionen ist. Der zweite Bootabschnitt ›Failsafe‹ schaltet rigoros alles ab, was kritisch sein könnte. Der Abschnitt ›Windows‹ verzweigt in den ersten Record der ersten Partition in der Erwartung, dass hier die Startsequenz für ein Windows-System liegt, ›Floppy‹ verzweigt zum Bootsektor einer Floppy, auf dem sich (hoffentlich) ein geretteter funktionierender Bootrecord befindet, und der letzte Eintrag führt ebenfalls einen geretteten Bootsektor aus, diesmal nicht von der Floppy, sondern aus der Datei /dev/hda8/boot/backup_mbr. Die Konfigurationsdatei /etc/grub.conf Der Vollständigkeit halber sei auch noch die Datei /etc/grub.conf erwähnt, die – wie die anderen GRUB-Dateien – von YaST bei der Installation von SUSE Linux erzeugt wird. Die Datei wird benötigt, wenn Sie GRUB anstatt über die YaST-Menüs über den Befehl grub installieren. Die Konfigurationsdatei kann folgendermaßen aussehen (die hier durch ›\‹ getrennten Zeilen gehören – ohne ›\‹ – in eine Zeile): 42
3.3 Vorbereitung
Tabelle 3-3: Schlüsselworte in der GRUB-Menüdatei menu.lst Schlüsselwort
Bedeutung
#
Kommentarzeile
gfxmenu
Hintergrundbild des Bootbildschirms
color
Farbschema für Eingaben nach Drücken von Escape
default
Nummer des standardmäßig zu startenden Systems
timeout
Zeit bis zum automatischen Starten des Default-Systems, wenn keine Benutzereingabe erfolgt
password
zu verwendendes Passwort bei Passwortschutz
title
Auswahltitel im Bootmenü
chainloader
Weiterleitung zu anderem Bootmanager
kernel
zu verwendender Kernel mit Bootparametern
initrd
Adresse der ›Initial-RAM -Disk‹
root
Default-GRUB -Device für einen Abschnitt
lock
Sichern eines Systems durch ein Passwort
boot
Bootvorgang starten
lock
durch Passwort geschützte Bootalternative
root (hd0,7) install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 \ (hd0,7)/boot/grub/menu.lst quit
Die Root-Zeile gibt an, auf welche Partition sich die install-Zeile bezieht (hier /dev/hda8). Die install-Parameter definieren, in welchen Dateien die erste und zweite Stufe von GRUB zu finden sind, ebenso wo sich die Menüdatei menu.lst befindet. Die erste Stufe wird in diesem Beispiel in den MBR installiert (hd0), die zweite Stufe soll von der ersten Stufe an die Adresse 0x8000 geladen werden. Für weitere Details verweisen wir auf ›info grub‹ und die SUSE-Dokumentation. Änderung der GRUB-Einstellungen beim Booten Einer der Vorteile von GRUB gegenüber LILO ist die Möglichkeit, beim Booten Booteinstellungen zu ändern. Mit der Escape-Taste wechselt man hierzu von der grafischen GRUB-Oberfläche in den GRUB-Textmodus. Hier können Sie die Menüeinträge ändern oder direkt GRUB-Kommandos angeben: ❐
Mit ›e‹ (edit) wechselt man weiter in den Edit-Modus, in dem ein einfacher Kommandozeileneditor analog zu dem der Bash erlaubt, die einzelnen Einträ43
Installation
ge der Datei menu.lst zu ändern. Die Änderungen sind nur für den folgenden Bootvorgang wirksam, die Datei menu.lst selbst wird nicht verändert. ❐
Mit ›c‹ (command) erreicht man den Kommandomodus. Die Bootkommandos, die weiter vorn bei der Datei menu.lst beschrieben wurden, können hier direkt eingegeben werden. Der Bootvorgang muss explizit mit dem Kommando ›boot‹ gestartet werden.
Setzen eines GRUB-Passworts Da GRUB Zugriff auf Dateisysteme unterstützt, kann zum Bootzeitpunkt auch auf Dateien zugegriffen werden, die beim gestarteten System geschützt sind. Um dies zu verhindern, kann man in der Datei menu.lst ein Bootpasswort angeben. Natürlich muss dieses verschlüsselt sein, denn auch die Einträge der Datei menu.lst kann man vor dem Booten einsehen. Zur Verschlüsselung des Passworts ruft man unter root das Kommando grub auf (die sogenannte GRUB-Shell): # grub grub> md5crypt Password: ***** Encrypted: $1$TPYUS0$Z1tJ2jSxfL86JPLocj9hw0 grub> quit
Das verschlüsselte Passwort wird im ersten Teil der Datei menu.lst eingefügt: password --md5 $1$TPYUS0$Z1tJ2jSxfL86JPLocj9hw0
Der grafische Bootbildschirm steht bei Benutzung eines Passworts nicht mehr zur Verfügung. Die Betriebssysteme aus dem GRUB-Menü können weiterhin gestartet werden, GRUB-Befehle können allerdings erst nach Eingabe von ›p‹ (password) und Angabe des Passworts ausgeführt werden. Das Starten einzelner Betriebssysteme lässt sich auch durch das Passwort schützen, wenn man in dem entsprechenden Abschnitt der Datei menu.lst den Eintrag ›lock‹ hinzufügt. Da nur die Zeilen nach ›lock‹ geschützt sind, wird man diesen Eintrag als ersten nach ›title‹ vorsehen. Die einzelnen Abschnitte lassen sich auch durch jeweils ein eigenes Passwort schützen, in diesem Fall sind weitere ›password‹-Zeilen einzufügen, deren verschlüsseltes Passwort wie oben erzeugt wird.
LILO LILO verliert etwas an Bedeutung, beim Wechsel von SUSE 9.0 auf 9.1 ist sogar der Abschnitt über LILO aus dem Administrationshandbuch verschwunden. Ein entscheidender Vorteil des Konkurrenten GRUB ist, dass man nicht die eiserne Disziplin wie bei LILO braucht, wenn Änderungen am System vorgenommen werden. Auch wir gehen eher kurz auf LILO ein. Weitere Informationen (auf englisch) bekommen Sie über ›man lilo‹ und den ausführlichen ›LILO User's Guide‹ von Werner
44
Almesberger in der Datei /usr/share/doc/packages/lilo/user.dvi (zu lesen mit xdvi15). Der User's Guide enthält auch einen umfangreichen Teil zur Problem- und Fehlerbehandlung.
3.3 Vorbereitung
LILO besteht aus folgenden Komponenten:
❐
Der ersten Phase des Bootloaders. Diese kann wie bei GRUB in den MBR oder den Bootsektor einer Partition geschrieben werden. Die erste Phase lädt die
❐
zweite Phase von LILO, die das Auswahlmenü anbietet und schließlich den Kernel lädt oder zu anderen Betriebssystemen weiterverzweigt.
❐
Die Datei /etc/lilo.conf enthält die Konfigurationsdaten für LILO, insbesondere die Partition, in die der Bootsektor geschrieben werden soll, und welche Systeme LILO starten soll. Auf lilo.conf wird unten noch gesondert eingegangen.
❐
LILO kennt, wie gesagt, keine Dateisysteme. LILO benötigt deshalb die Adres-
sen, an denen Kernel und weitere Systemdateien auf der Platte zu finden sind. Diese Informationen stehen in der ›Map-Datei‹ /boot/map. ❐
Die Map-Datei /boot/map wird vom sogenannten ›map installer‹ /sbin/lilo erzeugt, der auch den Bootsektor aktualisiert. Sobald irgendetwas an den am Bootprozess beteiligten Dateien oder Programmen geändert wurde, müssen zwingend Map-Datei und Bootsektor mit /sbin/lilo neu erzeugt werden, sonst lässt sich das System nicht mehr starten. Zu den Änderungen gehören auch das Verschieben oder Kopieren von Dateien. Wenn Sie im Zweifel sind, ob eine Änderung relevant ist, führen Sie /sbin/lilo aus. Zu oft schadet nicht, zu wenig schon!
Die Konfigurationsdatei /etc/lilo.conf LILO benötigt in der Konfigurationsdatei im Gegensatz zu GRUB keine speziellen
Laufwerksbezeichnungen, sondern nutzt die Linux-üblichen Gerätebezeichnungen /dev/… Ebenso können Umgebungsvariablen benutzt werden (${variable}). Die Konfigurationsdatei besteht ähnlich wie bei GRUB aus zwei Abschnitten, einem für globale Einstellungen und einem für die zu startenden Systeme (siehe auch anschließendes Beispiel). Kommentare werden wie bei GRUB durch ein Doppelkreuz (#) eingeleitet. LILO erkennt eine enorme Menge an Schlüsselworten, mit denen es sich konfigurieren lässt. Nur ein kleiner Teil wird hier beschrieben, für die anderen sei auf ›man lilo.conf‹ und den schon erwähnten ›LILO User's Guide‹ verwiesen. Nun zum ersten Teil der Konfigurationsdatei mit den globalen Einstellungen: boot
Hier wird festgelegt, wohin der Bootsektor geschrieben wird, also /dev/fd0 für die Floppy, /dev/hda für den MBR der ersten IDE-Platte oder /dev/sda2 für den Bootsektor der zweiten Partition der ersten SCSI-Platte. Default ist der Bootsektor der aktuellen Root-Partition. Der Bootsektor kann nicht in logische Partitionen oder auf die zweite Platte geschrieben werden. Beispiel: boot = /dev/fd0
15. An derselben Stelle auch als pdf-Datei, zu lesen z.B. mit gv oder acroread.
45
Installation
backup
Der bestehende Bootsektor wird auf die hier angegebene Datei gerettet. Default ist Retten des bestehenden Bootsektors in die Datei /boot/boot.zahl, wobei zahl nicht etwa eine fortlaufende Numerierung, sondern eine Codierung für das Bootdevice ist. Beispiel: backup = /boot/MBR-backup.21Sep04
lba32
Erlaubt das Starten von Systemen jenseits der 1024-Zylinder-Grenze (falls dies nicht schon durch ein zu altes BIOS von vor 1998 ausgeschlossen ist).
vga
Bestimmt den VGA-Textmodus beim Booten. vga = normal bedeutet den üblichen Textmodus mit 25x80 Zeichen.
message
Datei, deren Inhalt vor der Ausgabe des Bootprompts ausgegeben wird. LILO muss auch neu installiert werden, wenn diese Datei verändert oder verschoben wird.
prompt
LILO wartet zum Booten auf eine Eingabe (zumindest solange, bis
die timeout-Zeit abgelaufen ist). timeout
Anzahl von Zehntelsekunden, nach denen LILO ohne weitere Eingabe das erste der im zweiten Abschnitt aufgeführten Systeme startet. Beispiel (LILO bootet nach 15 Sekunden, wenn keine Benutzereingabe erfolgt): timeout = 150
password
Hier kann ein Passwort angegeben werden, das LILO vor dem Start eines Systems abfragt. Dieser Abschnitt kann auch bei den zu startenden Systemen angegeben werden, so dass für jedes System getrennte Passwörter möglich sind. Das Passwort steht hier im Klartext, die Datei /etc/lilo.conf sollte also nur Lesezugriffe für root besitzen. Vorsicht mit Sonderzeichen und den Buchstaben Y und Z, wenn Sie eine deutsche Tastatur benutzen!16 Beispiel: password = ab3GUnwl
append
Erlaubt, Optionen an den zu startenden Kernel mitzugeben, etwa für Hardware, die nicht automatisch erkannt wird. Dieser Eintrag kann auch bei den einzelnen Linux-Systemen angegeben werden. Beispiel: append = "vga=0x0303"
Im zweiten Abschnitt der Konfigurationsdatei werden die zu startenden Systeme beschrieben. Jeder Unterabschnitt beginnt mit einer image-Zeile (für Linux-Systeme) oder einer other-Zeile (für Nicht-Linux-Systeme). Auch hier wieder nur ein Ausschnitt aus der Fülle der möglichen Einträge: image
Der zu bootende Linux-Kernel. Beispiel: image = /boot/vmlinuz
46
16. Zum Tastaturlayout beim Booten siehe Seite 66 .
3.3 Vorbereitung
root
Angabe der Root-Partition. Beispiel (root auf der vierten logischen Partition): root = /dev/hda8
initrd
Angabe einer eventuellen ›Initial-RAM-Disk‹. Beispiel: initrd = /boot/initrd
label
Maximal 15 Zeichen langer Name, der im LILO-Bootbildschirm das zu startende System identifiziert. Im Gegensatz zu GRUB kann der Name keine Leerzeichen und nur wenige Sonderzeichen enthalten. Beispiel: label = Linux_SUSE_9.1
other
Eintrag, mit dem ein Nicht-Linux-System gestartet wird. Hier kann etwa die Partition angegeben werden, in deren Bootsektor der Bootloader des zu startenden Systems steht. Per Default wird davon ausgegangen, dass die Kontrolle an diesen Bootloader übergeben wird (chainloader). Beispiel: other = /dev/hda1
table
Bestimmt das Device, das die Partitionstabelle enthält, also table = /dev/hda für die erste IDE-Platte.
Im folgenden ist eine Konfigurationsdatei angegeben, die Linux ohne weitere Eingabe nach 15 Sekunden von der vierten logischen Partition startet, und die als Alternative nach Auswahl mit der Cursor-Taste ein Windows von der ersten Partition startet. LILO wird hier in den MBR der ersten IDE-Platte installiert. # LILO configuration file # Start LILO global Section # If you want to prevent console users to boot with # init=/bin/bash, restrict usage of boot params by # setting a passwd and using the option restricted. #password=bootpwd #restricted append="vga=0x0303" boot=/dev/hda lba32 vga = normal # force sane state message=/boot/message menu-scheme=Wg:kw:Wg:Wg read-only prompt timeout=150 # End LILO global Section # Linux image = /boot/vmlinuz root = /dev/hda8 label = Linux # Windows other = /dev/hda1 label = Windows table = /dev/hda
47
Installation
3.4
Installation – ein Beispiel
Genug der Vorbereitung. Wir möchten im folgenden eine Installation durchspielen und werden dies exemplarisch an den Versionen SUSE 9.1 und 9.2 tun, die sich hierbei nur minimal unterscheiden. Sollten Sie in anderen Versionen etwas abweichende Grafiken oder Aufteilungen vorfinden, wird dennoch das Prinzip gleich bleiben. Nehmen Sie sich Zeit für die Installation. Sie werden gut geführt und eigentlich kann nichts schieflaufen. Sollten Sie dennoch Bedenken haben, können Sie bis zu einem nicht zu übersehenden Hinweis (s. Seite 56) abbrechen, ohne dass an Ihrem Rechner etwas verändert wurde. YaST bietet nahezu überall ausreichende Hilfetexte, auch lassen sich Entscheidungen bis zu besagtem Himweis jederzeit über ›Abbrechen‹, ›Verwerfen‹ oder ›Zurück‹ revidieren.
Warnung
Folgende Punkte sollten Sie beachten, bevor Sie loslegen: ❐
Schreiben Sie mit, was Ihnen auffällt, was Sie auswählen, insbesondere welche Partitionen Sie mit welchen Dateisystemen anlegen und welche Mountpoints Sie zuordnen (auch wenn Sie später die Liste hierüber ausdrucken können). Falls Fehler auftreten, können Sie alles gut nachvollziehen.
❐
Falls Sie den Bootloader vorerst nur auf Floppy schreiben lassen wollen, legen Sie eine leere Floppy bereit.
❐
Eventuell benötigen Sie Unterlagen über Ihren Rechner, speziell Informationen über Hersteller und genaue Modellnummer der Geräte und technische Informationen. Auch wenn die meisten Geräte automatisch erkannt werden, könnte bei dem einen oder anderen eine manuelle Einstellung notwendig werden, etwa bei Bildschirmauflösung und Bildwiederholrate.
❐
Überzeugen Sie sich davon, dass bei bestehenden Daten eine aktuelle Sicherung existiert. Dasselbe gilt für den Master Boot Record (MBR).
Wenn wir oben gesagt haben, dass eigentlich nichts schieflaufen kann, so gilt das für den Standardfall. Probleme kann es zum Beispiel bei RAIDs geben: Dem Kernel fehlen noch die Treiber für IDE-RAIDs, so dass sich die Platten nur ohne RAID-Funktionalität nutzen lassen. Eine Linux-Installation wird deshalb vermutlich unter Windows angelegte IDE-RAIDs zerstören. Vorsicht ist generell auch bei Software-RAIDs angeraten, die unter Windows angelegt wurden. Falls Linux diese nicht als solche erkennt und die Platten deshalb eventuell als leer ansieht, installiert es sich über die Windows-Dateien. Größere versionsspezifische Fehler werden in der Regel relativ kurz nach Erscheinen einer Version von den ersten Nutzern erkannt und auf den Internetseiten der Distributoren mit Patches veröffentlicht. Es lohnt sich deshalb, sich dort vor der Installation zu informieren.
48
3.4 Installation – ein Beispiel
3.4.1
Installation von CD/DVD
Die Installation wird im einfachsten Fall von CD vorgenommen (oder von DVD, was keinen Unterschied macht). Hierfür muss das CD/DVD-Laufwerk bootfähig sein und in der Bootreihenfolge, also der Reihenfolge, in dem die Geräte nach einem bootfähigen Medium durchsucht werden, im BIOS vor der Harddisk eingetragen sein. Falls das Floppy-Laufwerk in der Bootreihenfolge vor dem CD/DVD-Laufwerk steht, darf sich keine Floppy im Laufwerk befinden. Die Bootreihenfolge können Sie im BIOS-Setup oder Bootmenü ändern, dorthin gelangen Sie mehr oder weniger kurz nach dem Einschalten des Rechners durch Drücken der richtigen Taste. Welche Taste bei Ihrem Rechner die richtige ist, zeigt Ihnen das BIOS vorher kurz an – hier ist meistens Reaktionsgeschwindigkeit gefragt, oder ein neuer Versuch. Die BIOS-Setups sind rechnerspezifisch, man hangelt sich hier die Menüs durch zur Änderung der Bootreihenfolge (boot device priority, boot sequence) oder schaut im Manual des Rechnerherstellers nach. Bei SCSI-CD-ROMs müssen Sie die Bootreihenfolge gegebenenfalls im BIOS des SCSIControllers einstellen, das Vorgehen ist entsprechend. Jetzt hängt es noch davon ab, was für ein CD-Laufwerk Sie haben: ❐
ATAPI-CD-ROMs werden in der Regel unterstützt. Probleme beim Booten kön-
nen darauf zurückzuführen sein, dass der Anschluss als Master oder Slave am IDE-Controller nicht mit der Jumper-Einstellung übereinstimmt. Es kann auch sein, dass die Geräte am IDE-Bus nicht lückenlos angeschlossen sind, hier kann man beim Booten des Kernels die Position des CD-Laufwerks über den Parameter hd?=cdrom mitgeben, wobei ›?‹ für einen der Buchstaben a, b, c … steht: CD als Master (a) bzw. Slave (b) am ersten Controller, CD als Master (c) bzw. Slave (d) am zweiten Controller usw. (siehe auch Tabelle 3-1 auf Seite 28). ❐
Bei SCSI-CD-ROMs ist es entscheidend, ob der SCSI-Controller unterstützt wird. Informationen hierüber finden Sie in der SUSE-Datenbank cdb.suse.de. SUSE kommentiert im Administrationshandbuch treffend: ›Wenn Ihr SCSI-Controller nicht unterstützt wird und am Controller auch die Festplatte hängt, haben Sie sowieso ein Problem …‹
❐
Auch das Booten von USB-CD-ROMs ist möglich. Falls Ihr BIOS dies noch nicht unterstützt, muss man den ersten Teil des Bootvorgangs bzw. der Installation von einer Bootdiskette starten. Das Programm auf der Bootdiskette initialisiert das System so weit, bis das USB-CD-ROM ansprechbar ist, dann geht die Installation von dort weiter. Passende Disketten-Images (bootdisk, modules1, …, modules4) befinden sich auf der Installations-CD, diese müssen unter einem lauffähigen System (Windows, Linux) auf eine Diskette kopiert werden. Wie dies durchzuführen ist, finden Sie ebenso wie die Images unter /boot auf der CD.
❐
Mit den Bootdisketten kann man das System auch über Netzwerk booten oder von Geräten, die am PCMCIA oder SCSI-Controller hängen.
49
Installation
3.4.2
Start der Installation
Die Installation startet mit einer blauen Begrüßung in verschiedenen Sprachen, dann folgt gleich ein Aufmerksamkeitstest.
Boot from Harddisk Installation Installation - ACPI Disabled Installation - Safe Settings Manual Installation Rescue System Memory Test
boot options F1 Help F2 1024 x768 F3 CD-Rom F4 English F5 Silent F6 Driver Update
Hier müssen Sie nämlich mit den Cursor-Tasten auf ›Installation‹ gehen, damit nicht das eventuell bereits installierte Betriebssystem (z.B. Windows) von der Harddisk (Festplatte) gebootet wird. Die Bildschirmauflösung wird meist richtig erkannt, lässt sich aber mit der Taste F2 manuell korrigieren. Wir mussten bei einem Flat-Screen-Bildschirm die Auflösung reduzieren, damit Schrift und Farbdarstellung einwandfrei waren. Das Problem ist, dass Sie jetzt vermutlich noch nicht wissen, dass Sie später auf dem ersten YaST-Menü die Spracheinstellungen wegen falsch gewählter Auflösung nicht lesen können. Dann hilft dort nur ein Abbruch (Abort R Exit/Reboot R yes) und ein neuer Versuch von vorn mit kleinerer Auflösung. Nach dem Laden des Kernels (etwa 60MB in eine RAM-Disk) laufen seitenweise Hinweise am Bildschirm durch (falls nicht, Taste F2/details bzw. Esc drücken), die u.a. die Hardwareüberprüfung des Systems enthalten. Anschließend landet die Installation im YaST, der die Installation steuert. Die gesamte Installation gliedert sich in die Basis-Installation (Unterpunkte Sprache, Installationseinstellungen, Installation durchführen) und die anschließende Konfiguration mit einer Reihe von weiteren Unterpunkten. Die linke Spalte des Installationsschirmes zeigt mt einem Pfeil, wo sich YaST gerade befindet, die fertigen Punkte bekommen ein Häkchen (Bild 3-5).
50
3.4 Installation – ein Beispiel
Als erstes folgt die Auswahl der Sprache – international mit chinesischen, griechischen, kyrillischen, koreanischen und japanischen Schriftzeichen. Über die Eingabe-/Returntaste oder über die Schaltfläche unten rechts ›Übernehmen‹ geht es weiter. YaST überprüft nun mit verschiedenen Analysen Ihr System. Er erkennt, wenn bereits andere Betriebssysteme installiert sind und bietet Ihnen zur Auswahl: ● ❍ ❍ ❍ ❍
Neuinstallation Update des bestehenden Systems Reparatur des installierten Systems Installiertes System starten Installation abbrechen
Auf der linken Seite des Fensters wird hierzu ein Hilfetext angezeigt. Wenn Sie Neuinstallation wählen, wird alles vorbereitet, was zur Installation notwendig ist. Je nach Leistung Ihres Rechners dauert dies einige Sekunden bis Minuten.
3.4.3
Anpassung
Das System bietet Ihnen nun einen Vorschlag an, wie es Linux am besten installieren würde. Übernehmen Sie es nicht ungesehen. Kontrollieren Sie jede Einstellung. Die wichtigsten wurden zu Beginn des Kapitels ausführlich erläutert: Systemstart
Hier ist vor allem der Typ des Bootloaders auszuwählen und wohin dieser geschrieben werden soll (Ort des Bootloaders). Standardmäßig wird der MBR verwendet und damit ein bestehender MBR überschrieben (trotz ›unverändert lassen‹!). Wenn noch andere Systeme auf dem Rechner gestartet werden, empfiehlt sich die sanftere Art, ihn erstmal auf eine Diskette (Floppy) schreiben zu lassen (Systemstart R Ort des Bootloaders R Bearbeiten). Wenn der Test dann erfolgreich war, kann er später immer noch in den MBR übernommen werden.
Partitionierung
Hier wird entschieden, wie die Platten aufgeteilt und formatiert werden – also u.U. bestehende Daten gelöscht werden! Auf die Menüs gehen wir unten noch weiter ein.
51
Installation
Basis-Installation o
Sprache
R
Installationseinstellungen
•
Installation durchführen
Konfiguration
System • System: ASRock-K7VT2(2.06) • Prozessor: AMD Duron (tm) • Hauptspeicher 256 MB Modus • Neuinstallation Tastaturbelegung • Deutsch
•
Installation durchführen
•
Root-Passwort
•
Netzwerk
•
Online-Update
•
Benutzer
•
Aufräumen
•
Hinweise zur Version
• Format Partition (deb/hdb6 86.2 MB (für boot mit ext2)
•
Geräte-Konfiguration
• Mountpoint von /dev/hda1 auf /windows/C setzen
Maus • IntelliMouse (USB) Partitionierung • Format Partiton /dev/hdb7 15.9 GB (für / mit reiser) • Format Partition /dev/hdb5 1.0 GB (für swap)
• .... Software-Auswahl • Standard-System mit KDE • +KDE Desktop-Umgebung • +Büroanwendung • +Dokumentation, Hilfe & Support Systemstart • Typ des Bootloaders: GRUB • Ort 1. IDE 4,01 GB, /dev/hda, WDC AC34300L (MBR) • Abschnitte: Linux (Standard), Windows, Diskette, Failsafe, Speichertest Zeitzone • Europa /Deutschland - Rechneruhr eingestellt auf 11:31:34 - 28-10-2004 Sprache • Deutsch Standard-Runlevel • 5 Voller Mehrbenutzerbetrieb mit Netzwerk und XDM
52
Bild 3-5: Installationseinstellungen
3.4 Installation – ein Beispiel
Alle anderen Einstellungen können auch im Nachhinein noch verändert werden. formatierte Plattenbereiche dagegen sind nur mit großem Aufwand und bei vorhandenen Sicherungen der eventuell gelöschten Dateien wieder zu rekonstruieren. Um eine Voreinstellung zu ändern, klicken Sie einfach die betreffende Überschrift an oder Sie wählen über Schaltfläche ›Ändern‹ den Unterpunkt aus. Je nach Auswahl erhalten Sie das entsprechende Menü und können dort ändern. Die meisten Menüpunkte sind offensichtlich: ›System‹ liefert Informationen über die erkannte Hardware, ›Modus‹ ist der von Ihnen vorher gewählte Installationsmodus, zum Beispiel Neuinstallation. ›Tastaturbelegung‹ stellt das sprachspezifische Tastaturlayout ein, unter ›Maus‹ können Sie die erkannte Maus ändern und testen, bei ›Zeitzone‹ lässt sich auch Zeit und Datum einstellen, im Menüpunkt ›Sprache‹ können Sie Ihre zu Beginn getroffene Auswahl der Sprache noch einmal ändern, und ›Standard-Runlevel‹ legt die Betriebsart des Rechners fest (s. Seite 70). ›Software-Auswahl‹ enthält auch die umfangreichen Büroanwendungen. Wenn Sie bei der Installation etwas Zeit sparen möchten, deaktivieren Sie die Büroanwendungen unter Software-Auswahl R Erweiterte Auswahl. Alle Softwarepakete sind später jederzeit problemlos nachzuinstallieren (Kapitel 12). Bei ›Partitionierung‹ zeigt YaST die von ihm gewählte Auswahl der neu anzulegenden Partitionen und welche Mountpoints für existierende Partitionen vorgeschlagen werden. Klicken Sie auf den Menüpunkt ›Partitionierung‹, bietet YaST folgende Alternativen: Wählen ❍ Den Vorschlag unverändert übernehmen ❍ Partitionieren auf diesem Vorschlag aufbauen
.
❍ Partitionen nach eigenen Vorstellungen anlegen
Beim ersten Punkt geht es zurück zum Hauptmenü, beim zweiten Punkt landen Sie im Menü ›Festplatte vorbereiten: Expertenmodus‹ (Bild 3-6) und können dort Änderungen vornehmen. Über die dritte Alternative gelangen Sie entweder auch dorthin oder in ein Menü, in dem Sie Partitionen zum Löschen ankreuzen können. Dies ist nicht wirklich eine Alternative, denn das geht mit dem anderen Menü genauso gut. Bleiben wir also beim Bild 3-6. Die Tabelle zeigt die von YaST erkannten existierenden Partitionen bzw. seinen Vorschlag. Auch bestehende Dateisysteme werden erkannt und soweit sie zuordbar sind, passenden Mountpoints zugeordnet – das gilt ebenfalls für Windows-Partitionen, die zum Beispiel /windows/C, /windows/D etc. zugeordnet werden. Natürlich können Sie die Mountpoints ändern. Wichtig ist die Spalte ›F‹, in der diejenigen Partitionen mit ›F‹ markiert werden, die 53
Installation
YaST bei der Installation neu formatiert – existierende Daten auf diesen Partitionen werden also gelöscht. Ein ›C‹ in dieser Spalte markiert Krypto-Partitionen.
1. Festplatte 1. primäre Partition Erweiterte Partition 1. Logische Partition 2. Festplatte Erweiterte Partition 1. Logische Partition 2. Logische Partition 3. Logische Partition
Bild 3-6: Expertenmodus Partitionierung
Die Schaltflächen ›Löschen‹ und ›Größe ändern‹ sind sicher selbsterklärend. Die Schaltflächen ›Anlegen‹ und ›Bearbeiten‹ beinhalten die gleiche Funktionalität, wobei erstere für neu anzulegende Partitionen ist und letztere für existierende – unterschiedlich ist nur, dass man bei ›Anlegen‹ natürlich noch die Größe der neuen Partition angeben kann. Ist der Partitionstyp (primär, erweitert, logisch) bei ›Anlegen‹ noch nicht durch die aktuelle Auswahl bestimmt, fragt YaST nach:
Schauen wir uns nun das ›Anlegen‹-Menü genauer an (Bild 3-7).
54
3.4 Installation – ein Beispiel
Warnung
Bild 3-7: Anlegen von Partitionen
Warnung
Bei Neuanlage wird automatisch ›Formatieren‹ aktiviert. Die gleiche Dialogbox erhalten Sie wie gesagt auch, wenn Sie bestehende Plattenpartitionen ›Bearbeiten‹. Sollte hier ebenfalls ›Formatieren‹ aktiviert sein, werden bestehende Daten natürlich gelöscht! Bei ›Formatieren‹ steht auch die Wahl des Dateisystems an, mögliche Dateisystemoptionen können hier mitgegeben werden. In der Regel wird man bei den Optionen die Defaultwerte nehmen. Erklärungen zu den Optionen gibt es nach Öffnen des entsprechenden Menüs. Das Anlegen einer verschlüsselten Partition ist nur ein Kreuz bei ›Dateisystem verschlüsseln‹. Beim Verlassen des Menüs werden Sie aufgefordert, das Passwort zu vergeben. Wir haben weiter vorn schon darauf hingewiesen, dass alle Daten auf dem Dateisystem verloren sind, wenn Sie das Passwort vergessen – dann helfen weder Root-Rechte noch Rescue-CD! Bei der Größe wird der erste und letzte freie Zylinder vorgeschlagen. Wenn Sie mehrere Partitionen in dem vorgeschlagenen Bereich unterbringen möchten, müssen Sie die Werte für die aktuell anzulegende Partition natürlich reduzieren. Hierbei ist es sinnvoll, die Partitionen von unten nach oben zu vergeben. Man behält so eine durchgehende Numerierung bei Partitionen und zugehörigen Zylinderbereichen, was das spätere Verständnis der Partitionstabellen deutlich vereinfacht. Außerdem braucht man dabei nicht in Zylindern zu rechnen, sondern kann handlichere Maßeinheiten verwenden (MB oder GB). Geben Sie bei den Größenangaben für die Partition grundsätzlich Einheiten an, denn ohne Angabe wird MB angenommen, und man landet schnell in einer etwas kargen 4 MB-Partition für root anstatt gewünschter 4 GB.
55
Installation
Unter Fstab-Optionen kann z.B. eingetragen werden, dass eine Partition nur im Lesemodus gemountet werden darf oder auch durch Benutzer mountbar ist. Das Bild rechts zeigt hierzu einen Ausschnitt. Details zu den Optionen der /etc/fstab finden Sie auf Seite 110. Bei den Mountpoints bietet YaST Ihnen eine Auswahl an, Sie können aber auch einen eigenen Namen vergeben, unter dem die Partition gemountet wird. Falls das Mount-Verzeichnis noch nicht vorhanden ist, wird es angelegt. Lassen Sie das Feld leer, wird die Partition nicht in die /etc/fstab eingetragen.
3.4.4
Start der eigentlichen Installation
Wenn in den Menüs alle Eintragungen vorgenommen sind, starten Sie die eigentliche Installation im Hauptmenü ›Installationseinstellungen‹ mit dem Knopf ›Übernehmen‹. Je nach zu installierenden Paketen müssen Sie nun eventuell noch Paketlizenzen bestätigen. Mit einer deutlichen Warnung (SUSE 9.1) bzw. einem ebenso deutlichen Fenster ›Installation bestätigen‹ (SUSE 9.2) gibt Ihnen YaST eine letzte Chance zur Umkehr. Wenn Sie also erst mal üben wollen, dann höchstens bis hierher und mit nein bzw. Zurück abbrechen. Die ›Installationseinstellungen‹ können Sie mit ›Abbrechen‹ verlassen, nach Bestätigung geht es über ›Exit/Reboot‹ oder ›Power off‹ aus der Installation. Haben Sie der Installation zugestimmt, dauert es jetzt etwas, 30 bis 60 Minuten sind allemal drin. In der Zwischenzeit kommt ›Werbung‹, eine einfache Diashow zu den zahlreichen Applikationen der Distribution. Wahlweise kann man sich auch Details anzeigen lassen, was gerade installiert wird. Die Details zeigen auch, welche Masse von Software installiert wird, und begründen, warum es so lange dauert. Im anschließenden ›Abschluss der Installation‹ werden die Punkte ›Update der Konfiguration‹, ›Kopieren der Dateien in das installierte System‹, ›Installation des Bootmanagers‹ und ›System für ersten Bootvorgang vorbereiten‹ durchlaufen. Wird die erste Stufe des Bootmanagers auf eine Floppy geschrieben, wird zum Einlegen einer Floppy aufgefordert. Falls die Floppy noch nicht formatiert ist, kann man das hier gleich mit durchführen lassen. Ein Dateisystem braucht man nicht anzulegen, wenn man die Floppy nur zum Starten des Systems benötigt.
56
3.4 Installation – ein Beispiel
3.4.5
Konfiguration
Linux wird jetzt heruntergefahren und gleich neu gestartet. Dabei erscheint zum ersten Mal der Startbildschirm des gewählten Bootmanagers. Nach Ablauf der für den Bootmanager angegebenen Wartezeit (oder Betätigen der Eingabetaste für den Menüpunkt Linux) startet Linux durch und landet für den zweiten Teil der Installation, also die Konfiguration, wieder im YaST. Auf die Unterpunkte, die jetzt noch durchlaufen werden (siehe linke Seite in Bild Bild 3-5), möchten wir hier nur kurz eingehen. Als erstes wird das Root-Passwort vergeben. Jeder, der dieses Passwort kennt, kann beliebigen Schaden anrichten, das Passwort muss also hinreichend sicher sein (s. Seite 93). Im Punkt Netzwerk werden konfigurierte Netzwerkgeräte angezeigt. Über die Menüs kann man versuchen, nicht erkannte Geräte zu konfigurieren. Wenn das nicht gleich klappt, ist dies jedoch erstmal noch kein Beinbruch, denn die Installation lässt sich fortsetzen und die nicht erkannten Geräte lassen sich später im YaST nachinstallieren/nachkonfigurieren. Auch den Test der Internetverbindung kann man sich für später aufheben, natürlich geht ohne diese Verbindung auch der folgende Online-Update nicht. Beim Online-Update werden erhebliche Mengen an Daten heruntergeladen – je länger die Distribution auf dem Markt ist, desto mehr. Mit einer schnellen Internetanbindung kann man den Update gleich durchführen, mit ISDN oder gar Analogmodem ist dies eher etwas für eine lange Winternacht. Bei der Methode zur Benutzer-Authentifikation muss man entscheiden, ob Anmeldung und Passwort für Benutzer lokal auf diesem Rechner (Einzelplatzrechner) oder zentral verwaltet werden (Netzwerk-Client NIS / LDAP). Über NIS finden Sie im Kapitel 11.6 mehr Informationen. Anschließend wird der erste lokale Benutzer angelegt. Hinweise zur Benutzerverwaltung haben wir im Kapitel 5 zusammengestellt. Die automatische Anmeldung, bei der der Benutzer nach Systemstart ohne Passwortabfrage angemeldet und seine Desktop-Umgebung gestartet wird, sollte man aus Sicherheitsgründen auf jeden Fall deaktivieren. Dies ist ein Zugeständnis an die unsichere Windows-Welt und höchstens für den heimischen Spielerechner tolerierbar. Die automatische Anmeldung lässt sich später auch unter YaST im Anmeldungsmanager rückgängig machen. Wenn Sie eine Benutzerkennung anlegen, die Sie auch auf anderen Rechnern haben, sollten Sie darauf achten, auf allen Rechnern für diese Kennung auch die gleiche Benutzernummer (UID) zu vergeben, damit es beim Austausch von Daten keine Probleme mit den Zugriffsrechten gibt. Das gleiche gilt natürlich beim Anlegen von Gruppen und deren Gruppennummern (GIDs). Weitere Benutzer und Gruppen können später mit YaST eingerichtet werden. 57
Installation
Letzter Punkt ist die Geräte-Konfiguration. Hier wird die Hardwarekonfiguration der angeschlossenen Geräte durchgeführt. Auch dies ist jederzeit später nachzuholen. Auf die Druckerkonfiguration (CUPS) gehen wir in Kapitel 8 ein. Nach dem obligatorischen Glückwunsch, dass man es jetzt geschafft hat, wird die Installation beendet und man kann sich als Benutzer anmelden.
3.5
Notebooks
Notebooks sind ein Thema für sich. Der Zwang zu kleinen, leichten und ausdauernden Geräten führt zu von den Standard-PCs abweichenden Hardwarelösungen, die bei der Installation Probleme bereiten können. Besonders hier gilt: Je neuer das Gerät auf dem Markt ist, desto eher ist damit zu rechnen, dass etwas noch nicht so gut (oder gar nicht) unterstützt wird. Trotzdem ist erstaunlich, dass viele Notebooks weitgehend problemlos mit Linux betrieben werden können. Andererseits gibt es auch Noteboks, die schlichtweg nicht Linux-tauglich sind. Wichtig ist, dass etwa der Grafikchip für den Bildschirm unterstützt wird – für ein nicht funktionierendes Modem wird man eher eine Ersatzlösung finden als für einen schwarzen Bildschirm. Eine Reihe von Notebooks sind ›Designed for Microsoft Windows‹. Das muss nicht unbedingt etwas Gutes sein, denn es kann auch heißen, dass billige Hardware eingesetzt wurde, deren fehlende Funktionalität zum Teil in Software nachgebildet werden muss. Kein Problem für Windows, denn die Hardwarehersteller bieten entsprechende Windows-Treiber an – aber leider fast ausnahmslos keine LinuxTreiber, und auch die Schnittstellen werden nicht offengelegt. Insbesondere bei Modems (›Winmodems‹) und PCMCIA-Karten begegnet man diesem Problem. Im folgenden sind Punkte aufgeführt, bei denen Sie mit Problemen rechnen können (aber, wie gesagt, nicht müssen – jedenfalls nicht mit allen …). Auf jeden Fall sind dies Punkte, die Sie vor einem Kauf klären sollten.
58
❐
Grafikchips bzw. Grafikkarte. Probleme können dazu führen, dass die grafische Oberfläche nicht genutzt werden kann, ein schwarzer Rand am Bildschirm bei nicht unterstützter Auflösung bleibt oder eine 3D-Beschleunigung nicht nutzbar ist. Vielleicht ist es auch einfach nur eine flackernde Videowiedergabe, die sich störend bemerkbar macht. Apropos Video: Auch die S-Video-Ausgänge werden nicht immer unterstützt.
❐
Helligkeits- oder Lautstärkeregelung per Funktionstasten und Bildschirm-Umschaltung auf externen VGA-Ausgang funktionieren nicht immer.
❐
APM (Advanced Power Management) und ACPI (Advanced Configuration and
Power Interface) bieten u.a. Stromsparfunktionen, passende Hardware und passendes BIOS vorausgesetzt. ›Advanced‹ heißt ›fortschrittlich‹, aber im Lexikon findet sich auch die Übersetzung ›gar zu fortschrittlich‹, und das trifft hier leider des öfteren noch zu.
3.5 Notebooks
APM ist ein Power-Management speziell für Notebooks, das in neueren Geräten durch ACPI abgelöst wird. APM ist weitgehend im BIOS realisiert. Ange-
nehm ist der Suspend-to-Memory-Modus, der das Notebook beim Zuklappen des Deckels schlafen legt – nur der Speicher wird noch mit Strom versorgt. Der Schlafzustand kann je nach Notebook und Akkuzustand bis zu mehreren Tagen durchgehalten werden. Nach Aufklappen des Deckels oder kurzem Drücken der Einschalttaste ist das Notebook nach wenigen Sekunden, ohne neu booten zu müssen, wieder betriebsbereit. APM muss im BIOS aktiviert sein. ACPI ist von der Funktionalität wesentlich umfangreicher als APM und auch für Desktops vorgesehen. Leider ist ACPI nicht immer vollständig oder korrekt
implementiert, teilweise auch bewusst, um Fehler in Windows-Betriebssystemen zu umgehen. Das ist für Linux natürlich keine gute Voraussetzung, und so ist hier durchaus mit Schwierigkeiten zu rechnen (bei den älteren Distributionen mit Kernel 2.4 mehr als bei den aktuellen mit Kernel 2.6). Sollte Ihr Notebook nach der Installation nicht richtig funktionieren, ist die Deaktivierung mit dem Bootparameter ACPI=OFF, eventuell auch APM=OFF, immer einen Versuch wert. Beide Optionen sind übrigens im GRUB-Startmenüpunkt ›Failsafe‹ abgeschaltet. Der Suspend-to-Memory-Modus (S3-Modus) scheint derzeit mit ACPI generell noch nicht zu funktionieren. SUSE bietet im Administrationshandbuch [16] ein umfangreiches Kapitel zum Power-Management an, das auch viele Probleme behandelt. Seit SUSE 9.1 gibt es ein eigenes YaST-Modul zum Power-Management (im Menüpunkt System).
❐
Der integrierte Maus-Ersatz (Touchpad, Rollball, Maus-Pin) funktioniert meistens, aber Notebook-Artikeln zufolge wohl auch nicht immer.
❐
Ein besonders leidiges Thema sind die sogenannten Winmodems, von denen bei weitem nicht alle von Linux unterstützt werden. Ersatz ist möglich über externe Modems oder über Modem-PCMCIA-Karten, aber Vorsicht – auch diese können Winmodems enthalten. In Analogie zum ›Winmodem‹ gibt es den Begriff ›Linmodem‹, der Linux-taugliche Winmodems umfasst. Eine Reihe von Stellen im Internet befassen sich mit diesem Thema, etwa linmodems.org.
❐
PCMCIA-Controller und einzelne PCMCIA-Karten können Probleme bereiten. Das kann soweit gehen, dass sich das System beim Wechseln einer PCMCIA-
Karte aufhängt. Hinweise zur Installation und zur Fehlerbehebung gibt auch hier das SUSE-Administrationshandbuch. ❐
Das Thema USB ist eigentlich nicht Notebook-spezifisch, auch haben sich die früheren Schwierigkeiten inzwischen deutlich entschärft. Linux unterstützt jetzt die beiden Standards USB 1.x und USB 2.0. Mehr zur Linux-Tauglichkeit von USB-Geräten und zu verfügbaren Kernel-Modulen finden Sie unter www.linux-usb.org.
❐
Bei den drahtlosen Techniken WLAN, IrDA und Bluetooth darf man durchaus mit Problemen rechnen. Manche lassen sich durch manuelle Einstellungen
59
Installation
beheben, das SUSE-Administrationshandbuch gibt bei den letzten beiden wiederum Hilfe. Gelegentlich werden allerdings auch die LAN-Controller der kabelgebundenen Konkurrenz nicht unterstützt. Bei den drahtlosen Techniken schreitet die Entwicklung schnell voran, so dass die Unterstützung für Treiber sich nahezu täglich ändert. Es kann also sinnvoll sein, ab und zu in der SUSESupport-Datenbank oder anderen relevanten Internetseiten vorbeizuschauen. ❐
Einige Notebooks haben nur einen Einsteckschacht für externe Laufwerke, sie können also entweder ein CD/DVD-Laufwerk oder ein Floppy-Laufwerk einschieben. Das bedeutet, dass bei der Installation keine Bootfloppy erstellt werden kann. Besonders unglücklich ist diese Lösung, wenn das Laufwerk im Betrieb nicht gewechselt werden kann17. Sie müssen sich dann entscheiden, ob Sie stattdessen die erste Stufe des Bootloaders in den MBR oder den Bootsektor einer Partition installieren wollen, oder ob Sie ein Floppy-Bootimage erstellen, das Sie dann auf Umwegen auf die Floppy bringen können (z.B. über ein zweites Betriebssystem auf dem Notebook, das Zugriff auf das Bootimage hat, oder über einen Netzwerkanschluss oder USB-Stick und einen zweiten Rechner – der Kreativität sind allerdings Grenzen gesetzt).
❐
Und als abschließenden Punkt unserer (sicher nicht vollständigen) Liste: Es gibt Geräte, die sich nach dem Herunterfahren nicht ausschalten.
Die Probleme wiegen sicher unterschiedlich schwer, auch sind sie natürlich je nach Anwendungsbereich des Notebooks unterschiedlich zu wichten. Leider sieht man dem jeweiligen Problem nicht an, ob es eine triviale Lösung gibt oder vielleicht gar keine – hier muss man sich also bei kritischen Punkten rechtzeitig ausführlich informieren. Ein guter Ansatz sind Erfahrungsberichte: Sie können fast sicher sein, dass irgendjemand vor Ihnen schon versucht hat, auf dem Notebook Ihrer Wahl Linux zu installieren. Eine erste Anlaufstelle dazu sind die Webseiten tuxmobil.org und www.linux-on-laptops.com, über die man an zum Teil außerordentlich detaillierte Informationen zur Installation auf den jeweiligen Notebooks kommt. Achten Sie darauf, dass die Notebook-Bezeichnung in dem Erfahrungsbericht exakt mit der Ihren übereinstimmt – schon eine minimale Abweichung kann völlig andere ›Innereien‹ des Notebooks bedeuten. Auch in Fachzeitschriften finden Sie Notebook-Tests, die die Linux-Kompatibilität berücksichtigen. Im deutschen Sprachraum sind hier insbesondere das Linux-Magazin und die Zeitschrift c't zu nennen – unter www.linux-magazin.de und www.heise.de/ct kann man hier in alten Testberichten stöbern. Eine Fundgrube für Problemlösungen jeder Art sind die Usenet-Groups im Internet, in denen Sie bei Google unter ›Groups‹ suchen können. Der englischsprachige Fundus ist natürlich am größten, aber auch in den deutschen Usenet-Groups gibt es umfangreiche Hilfestellungen. 60
17. Bei einem Notebook der Autoren lässt sich im Betrieb von CD nach Floppy wechseln, aber nicht umgekehrt …
3.6 Deinstallation
Manchmal hilft es, auf eine andere Distribution oder Version auszuweichen. So löste etwa SUSE 9.1 einige Probleme früherer Versionen, dafür gingen durch die Kernel-Umstellung einige Funktionen nicht mehr, die mit der Version 9.0 noch gingen. Auf jeden Fall ist auch Knoppix einen Versuch wert, um vorab zu klären, ob es sich lohnt, für die eigene Distribution nach Lösungen zu fahnden. Und in den verbleibenden Fällen hilft leider nur Warten auf eine bessere Zukunft: Gerade bei ACPI-Problemen kann man davon ausgehen, dass diese in Folgeversionen deutlich reduziert sein werden. Wenn Sie die Fülle der möglichen Probleme abschreckt und Sie sowieso ein neues Notebook für Linux kaufen wollen: Es gibt auch Notebooks, die bereits mit vorinstalliertem Linux angeboten werden. Hier kann man sogar etwas sparen, weil die Lizenz für Windows entfällt. Aber selbst bei Notebooks mit vorinstalliertem Linux kann es passieren, dass nicht alle der angegebenen Probleme gelöst sind.
3.6
Deinstallation
Die Deinstallation von Linux ist einfach, wenn man sich klarmacht, was denn eigentlich bei der Linux-Installation am Rechner verändert wurde: Dies sind eine eventuell veränderte Partitionierung der Platte, Installation von Linux auf den neuen Partitionen und schließlich Installation des Bootmanagers. Wenn die Linux-Partitionen für andere Aufgaben freigegeben werden sollen, werden sie je nach Bedarf einfach neu partitioniert und/oder mit anderen Dateisystemen belegt – die Linux-Daten sind dann natürlich verloren. Anders verhält es sich mit dem Linux-Bootloader, der unter Umständen seine Spuren in einem Bootsektor hinterlassen hat. Hier muss gezielt aufgeräumt werden – und zwar bevor die Linux-Partitionen anderweitig verwendet werden. Damit beschränkt sich die Linux-Deinstallation auf eine Bootsektor-Restaurierung je nach verwendetem Bootkonzept, d.h., je nachdem wo Sie die erste Stufe des Bootmanagers installiert haben (s. Seite 38): Bootsektor einer Floppy Das ist natürlich der einfachste Fall: Sie können die Bootfloppies jetzt für andere Zwecke verwenden – das war's. Bootsektor einer primären Partition Wenn Sie noch ein anderes System installiert haben, hängt es davon ab, welchen Bootmechanismus Sie verwenden. Bei einem DOS-Bootloader muss die Partition des anderen Betriebssystems wieder als ›aktiv‹ (bootable) markiert werden. Dies geht mit dem Kommando fdisk. Rufen Sie hierzu unter root fdisk /dev/hda auf (falls Ihre Bootplatte die hda ist) und ändern Sie die Bootmarkierung mit dem Kommando ›a‹ (toggle a bootable flag). Das Ergebnis können Sie mit dem Kommando ›p‹ (print) überprüfen, bevor Sie die geänderte Information mit ›w‹ (write) zurückschreiben.
61
Installation
Haben Sie anstatt GRUB/LILO zur Systemauswahl den Bootloader des anderen Systems benutzt, brauchen Sie in dessen Menü nur den Linux-Eintrag zu entfernen. Bootsektor einer Platte (MBR) In diesem Fall müssen Sie den Original-MBR, den Sie (hoffentlich) bei der Installation gerettet haben, wieder auf die Platte schreiben, oder einen neuen generieren. Beide Optionen sind im folgenden Abschnitt beschrieben. MBR sichern und wiederherstellen Das Wiederherstellen des MBR aus einer Sicherung lässt sich mit dem BootloaderModul von YaST durchführen18 oder direkt mit dem Kommando dd (siehe unten). Auch LILO bietet mit dem Parameter ›-u‹ (uninstall) eine entsprechende Funktionalität (siehe ›man lilo‹). Beachten Sie auf jeden Fall, dass Sie keinen veralteten MBR zurückspielen: Wenn sich seit der Sicherung des MBR die Partitionen geändert haben, laden Sie mit der Restauration unter Umständen eine veraltete Partitionstabelle und zerstören so Ihr System (der MBR besteht im wesentlichen ja aus dem Bootloader-Startcode und der Partitionstabelle für die primären Partitionen). Das SUSE-Handbuch empfiehlt deshalb, veraltete MBR-Kopien sofort zu löschen. Das ist im Ansatz eine gute Idee, nur löschen Sie damit auch Ihren Original-Bootcode eines eventuellen anderen Betriebssystems. Heben Sie also auch diesen auf – bei der Restauration darf dann natürlich nur der Bootcode und nicht die Partitionstabelle zurückgeschrieben werden. Kontrollieren Sie bei der Restaurierung auf jeden Fall auch das Erstellungsdatum der MBR-Kopien, damit Sie wissen, was Sie zurücksichern. Der MBR lässt sich außer mit YaST, der den kompletten MBR inklusive Partitionstabelle zurückschreibt, auch mit dem Kommando dd sichern und zurückschreiben. Der Vorteil von dd ist, dass man (hoffentlich) genaue Kontrolle darüber hat, was man tut, der Nachteil, dass falsche Parameter oder auch nur kleine Schreibfehler beliebigen Schaden anrichten können. Natürlich sind MBR-Schreibvorgänge nur unter root erlaubt. Der MBR lässt sich z.B. sichern mit dd if=/dev/hda of=/boot/MBR-alt.21Sep04 bs=512 count=1
wobei hda bekannterweise die erste IDE-Platte ist und /boot/MBR-alt.21Sep04 die Datei, in der hier die Sicherung abgelegt wird. Beide Angaben sind bei Bedarf entsprechend anzupassen. Die Sicherung umfasst den gesamten MBR mit 512 Byte inklusive Partitionstabelle (64 Byte) und Endemarkierung (magic number, 2 Byte). Zurückschreiben lässt sich dieser MBR später mit dd if=/boot/MBR-alt.21Sep04 of=/dev/hda bs=512 count=1
62
18. YaST R Konfiguration Bootloader R Zurücksetzen R MBR von Festplatte wiederherstellen. Das mit YaST gesicherte Bootsektor-Backup liegt je nach Version an etwas unterschiedlichen Stellen direkt in /boot oder einem Bootmanager-Unterverzeichnis.
3.6 Deinstallation
wobei Sicherungsdatei und Zielplatte wieder entsprechend anzupassen sind. Möchten Sie nur den Bootcode ohne Partitionstabelle zurückschreiben, wird die Größe mit 446 Byte angegeben: dd if=/boot/MBR-alt.21Sep04 of=/dev/hda bs=446 count=1
Genauso einfach lässt sich der MBR in den Bootsektor einer Floppy sichern: dd if=/dev/hda of=/dev/fd0 bs=512 count=1
Jetzt ist das System zusätzlich von der Floppy wie vorher von /dev/hda startbar. Die zu /dev/hda gehörende Partitionstabelle im Floppy-Bootsektor wird hierbei ignoriert. Der MBR auf /dev/hda lässt sich von der Floppy genau wie aus der Sicherungsdatei wiederherstellen (mit oder ohne Partitionstabelle), wenn in den oben abgegebenen dd-Kommandos if=/boot/MBR-alt.21Sep04 durch if=/dev/fd0 ersetzt wird. Falls Ihr System kein Diskettenlaufwerk besitzt, tut es natürlich auch jedes andere unterstützte externe Device. Wenn Sie den MBR auf einen USB-Stick retten, lässt sich der MBR von dort – auch über das Rescue-System – wiederherstellen. Welches Device der USB-Stick nutzt, sehen Sie mit dem Kommando ›fdisk -l‹ unter root. Ist dies z.B. /dev/sdb, könnte die als Eingabe (if=) oder Ausgabe (of=) anzugebende Sicherungsdatei ›/dev/sdb/MBR-alt.21Sep04‹ heißen. Ebenso wie Linux bieten auch andere Betriebssysteme die Möglichkeit, einen passenden MBR zu erzeugen. Unter Windows95/98/ME geschieht dies mit dem MSDOS-Befehl fdisk /MBR19, außerdem muss die neue Startpartition mit fdisk als ›aktiv‹ markiert werden. Bei Windows XP/2000 wird über die Installations-CD die Wiederherstellungskonsole gestartet, das Kommando heißt hier FIXMBR. OS/2 bietet den Befehl fdisk /newmbr. Um wieder zu Linux zurückzukehren: Das schon mehrfach erwähnte Knoppix bietet analog dazu ein install-mbr /dev/hda – auch hier ist hda wieder entsprechend anzupassen. Es gibt auch die Möglichkeit, die Partitionstabelle im MBR in den Zustand ›frisch von der Fabrik‹ zurückzuversetzen – also so, als ob noch überhaupt kein System installiert ist. Hiermit lässt sich vermeiden, dass sich Windows bei einer Neuinstallation im Installationsprozess beim Reboot eventuell aufhängt. Dazu rufen Sie unter root – vom noch installierten Linux oder von der Rescue-CD – das Kommando fdisk mit der Platte auf, auf der Sie den MBR zurücksetzen möchten (also z.B. fdisk /dev/hda für die erste IDE-Platte) und geben die Kommandos ›o‹ (create a new empty DOS partition table) und ›w‹ (write table to disk and exit) ein. Mit dem Kommando ›m‹ bekommen Sie eine Liste der verfügbaren Kommandos, mit ›q‹ (quit without saving changes) verlassen Sie fdisk, wenn Sie sich in letzter Minute doch noch anders entschieden haben. 19. Die Partitionstabelle bleibt dabei erhalten – bei inkorrekter Endemarkierung (magic number) des bestehenden MBR wird die Partitionstabelle allerdings durch Nullen ersetzt und damit zerstört!
63
Installation
MBR wiederherstellen nach einer Windows-Installation Bei der zusätzlichen Installation anderer Betriebssysteme kann der MBR ungefragt überschrieben werden, insbesondere Windows tut sich hier hervor. Den MBR sollte man also auch in diesem Fall rechtzeitig sichern, zum Beispiel in den MBR einer Diskette, die dann zum Starten von Linux benutzt wird. Möchte man weiterhin einen Linux-Bootloader im MBR nutzen, startet man Linux und fügt einen Eintrag für das andere System im Bootmenü an. Nach einem Test (Linux-Bootloader von der Diskette starten und dann damit das andere System) rettet man den aktuellen unerwünschten MBR – sicher ist sicher – und ersetzt ihn durch den ursprünglichen Linux-MBR.
3.7
64
Zusammenfassung in Stichworten
Kapitel 4 Der Bootvorgang
Ihr System wurde schon beim Installieren das erste Mal automatisch gebootet1. Linux benötigt dazu nicht nur das ladbare Betriebssystem, sondern zusätzlich verschiedene Systemdateien, meistens ShellSkripte, die in einer bestimmten Reihenfolge durchgeführt werden. Sie können am Bildschirm verfolgen, was gerade abgearbeitet wurde (done) – oder wo es unter Umständen Schwierigkeiten gab. Ausführlicher können Sie dies auch im Nachhinein in einem Protokoll nachlesen. Es ist nicht nur interessant, herauszufinden, was wann wie gestartet und geladen wird, es hilft Ihnen auch, Ihr System besser kennenzulernen und eventuell Fehler aufzuspüren. 4.1
Was passiert beim Hochfahren eines Rechners?
4.2
/etc/inittab
4.3
Runlevel unter Linux
4.4
Der init-Befehl
4.5
Startprotokoll
4.6
Runlevel-Editor
4.7
Zusammenfassung in Stichworten
1. Aus dem Englischen eingedeutscht (boot, eigentlich Stiefel), hier abgeleitet von ›pull oneself up by one's own bootstraps‹ – sich aus eigener Kraft hocharbeiten, wörtlich: ›sich selbst an den eigenen Schnürsenkeln (aus dem Schlamm) herausziehen‹, der englischen Variante von Baron von Münchhausen, der sich an seinen Haaren mitsamt Pferd aus dem Sumpf zog.
65
Der Bootvorgang
4.1
Was passiert beim Hochfahren eines Rechners?
Ein Rechner erhält erst durch ein Betriebssystem seine Spezialbegabung, bestimmte Aufgaben zu erfüllen. Sobald Sie den Rechner einschalten, wird über ein ›fest eingebautes‹ Programm das System überprüft (hierzu gehört neben dem Kernsystem mit Prozessor/Speicher mindestens ein Eingabeterminal und ein Speichermedium, wie Platte, CD- oder Floppy-Laufwerk, von dem ›gebootet‹ werden kann). Auf einem PC wird dieses Programm als BIOS (Basic Input/Output System – BasisEin-/Ausgabesystem) bezeichnet, das in der Regel in einem EPROM (Erasable Programmable Read Only Memory – lösch- und programmierbarer Festwertspeicher) auf dem Mother- oder CPU-Board enthalten ist. War die Überprüfung der Hardware erfolgreich, wird nach einem ladbaren System gesucht. Die Reihenfolge der zu durchsuchenden Speichermedien kann im Setup des BIOS voreingestellt werden (oft durch die F2-Taste abrufbar). Sobald das BIOS im Bootsektor eines dieser Speichermedien einen Bootcode gefunden hat, wird dieser ausgeführt. Dieses nur 446 Byte große Miniprogramm lädt dann direkt oder indirekt den Bootloader (genaueres dazu siehe Seite 37), bei Linux ist dies GRUB oder LILO. Der Bootloader hat mehrere Aufgaben: Dem Betriebssystem können Optionen mitgegeben werden, bei mehreren installierten Betriebssystemen kann das zu startende System ausgewählt werden, und schließlich muss das (ausgewählte) Betriebssystem natürlich geladen und gestartet werden. Meistens wird in dieser Phase des Systemstarts eine deutsche Tastatur noch als amerikanische Tastatur interpretiert, die eine andere Tastenbelegung bei Sonderzeichen hat, auch sind Y und Z vertauscht (Bilder der Tastaturen finden Sie auf Seite 380). Dies kann bei der Eingabe von Passwörtern der Grund sein, dass der Bootmanager Ihr Bootpasswort nicht akzeptiert. Sowohl bei LILO als auch bei GRUB kann das gewünschte System über eine grafische Darstellung ausgewählt werden.
Linux Windows Linux - Safe Settings Memory Test
boot options F1 Help
F2 Startup
native silent verbose
Bild 4-1: Beispiel GRUB – Auswahlmöglichkeit
66
4.1 Was passiert beim Hochfahren eines Rechners?
Unter boot options können z.B. ein anderer Runlevel, spezielle Kernel-Optionen oder eine andere Bootpartition eingegeben werden (s. ›kernel‹ Seite 41). Nun beginnt eigentlich erst der Bootvorgang von Linux: Der Bootloader lädt den Betriebssystemkern von Linux (den Kernel, als ausführbare gepackte Programmdatei im Dateibaum in der Regel unter /boot/vmlinuz) und startet ihn. Zusätzlich zum Kernel kann vom Bootloader eine sogenannte Initial-RAM-Disk (initrd) geladen werden. Die Initial-RAM-Disk ist eine im Hauptspeicher (RAM) simulierte Platte (disk). Die Initial-RAM-Disk enthält Gerätetreiber und Programme, mit denen der Kernel auf die Root-Platte zugreifen und das Dateisystem lesen kann. Dazu dekomprimiert der Kernel die initrd, mountet sie als temporäres RootDateisystem und startet dort ein Programm (linuxrc), das letztendlich das richtige Root-Dateisystem mountet. Dieses Verfahren hilft, den Kernel klein zu halten: Da beim Erstellen des Kernels für eine Distribution nicht bekannt ist, wie die Zielhardware aussieht, müssen Treiber für alle Eventualitäten vorgehalten werden. Diese werden nun nicht fest in den Kernel eingebunden, sondern in der Initial-RAM-Disk zur Verfügung gestellt. Nach dem Mounten des Root-Dateisystems kann sich der Kernel von dort die wirklich benötigten Module laden und der Speicher für die initrd kann freigegeben werden. Sie können sich den Inhalt von /boot/initrd auch ansehen. Entpacken Sie hierzu die Datei und mounten Sie sie z.B. nach /mnt. Unter /mnt finden Sie dann die Verzeichnisse und Dateien, die als RAM-Disk zu Beginn zur Verfügung stehen. Sie werden feststellen, dass als Minibetriebssystem hier ein kleines Shell-Skript dient, das Sie sich auch mit less (oder more) ansehen können, und eine kleine Auswahl von Verzeichnissen und Programmen: Jogyli:~ # gunzip < /boot/initrd > /tmp/initrd Jogyli:~ # mount /tmp/initrd /mnt mount: initrd ist kein blockorientiertes Gerät (Vielleicht probieren Sie »-o loop«?) Jogyli:~ # mount -o loop /tmp/initrd /mnt Jogyli:~ # ll /mnt Jogyli:/mnt # ll insgesamt 14 drwxr-xr-x 10 root root 1024 2004-06-25 16:59 drwxr-xr-x 30 root root 704 2004-08-13 10:39 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 drwxr-xr-x 3 root root 1024 2004-06-25 16:59 drwxr-xr-x 3 root root 1024 2004-06-25 16:57 -rwxr-xr-x 1 root root 3835 2004-06-25 16:59 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 drwxr-xr-x 2 root root 1024 2004-06-25 16:59 Jogyli:/mnt # file linuxrc linuxrc: Bourne shell script text
(netter Hinweis)
. .. bin dev etc lib linuxrc mnt proc sbin sys
Dieses Beispiel dient nur zum besseren Verständnis. Sollte bisher noch kein (oder nur noch ein defektes) Linux-Betriebssystem auf einer Ihrer Platten vorhanden sein, können Sie das System auch von einer Bootdis-
67
Der Bootvorgang
kette oder wie bei der Installation von einer CD booten. Hier finden Sie dann auch ein ›Rescue‹-System – doch davon später, wenn wir uns mit der Rettung eines Systems bzw. mit ›trouble shooting‹ (Störungen beseitigen) beschäftigen. Der Kernel (vmlinuz) benötigt zum Hochfahren des Systems noch eine Reihe von Systemdateien. Die wichtigste Datei ist die /etc/inittab. Das Bild 4-2 zeigt einen groben Ablauf des Bootvorgangs. Einschalten Prüfen der Hardware (BIOS)
Laden des Kernels in den Arbeitsspeicher: Booten ➊
Start von GRUB oder LILO aus einem Bootsektor (z.B. MBR) und Auswahl von Linux
Kontrolle erfolgt nun durch das Betriebssystem:
vmlinuz Speicher- und Prozessverwaltung, Systemzeit, Initialisierung, Systemkonsole etc.
➋
vmlinuz
Start des ersten Prozesses durch vmlinuz:
➌
init
Übergang in den Login-Bereich entsprechend dem
➍
/sbin/init Gerätetreiber werden initialisiert, Partitionen überprüft (file check) Arbeitsprozesse gestartet und das Hochfahren gesteuert.
Runlevel
Befehlszeilen der /etc/inittab werden ausgeführt und je nach Runlevel die entsprechenden Skripten in /etc/init.d/rcn.d (runlevel) durchgeführt Starten der getty-Prozesse (Aktivieren der Terminals – Login)
Bild 4-2: Grober Ablauf des Bootvorgangs
4.2
/etc/inittab
Nachdem vmlinuz geladen wurde, wird die Kontrolle des weiteren Hochfahrens von /sbin/init übernommen, einem Programm, das aus dem Kernel gestartet wurde. init liest die /etc/inittab und arbeitet die dort festgelegten Aktionen ab. Als Systemverwalter ist es lediglich interessant, zu wissen, was die einzelnen Aktionen in etwa bedeuten. Deshalb hier nur ein kurzer Überblick.
68
4.2 /etc/inittab
Zeilen beginnend mit #
sind Kommentare, wie Sie es auch von Shell-Skripten her kennen.
Der Aufbau der Aktionszeilen ist id:runlevel:action:process wobei die Aktionen folgendes bedeuten: respawn
Der hiermit verbundene Prozess wird, sobald er beendet wurde, wieder neu gestartet (siehe getty – get terminal type). Meldet sich z.B. an einem Terminal ein Benutzer an, arbeitet in der Shell und meldet sich wieder ab, so wird das Anmeldefenster sofort wieder über den getty-Prozess gestartet.
wait
Der hiermit verbundene Prozess wird nur einmal gestartet, wenn der eingetragene Runlevel gestartet wird. Init wartet dann auf die Beendigung dieses Prozesses.
boot
Der damit verbundene Prozess wird während des Hochfahrens des Systems durchgeführt. Irgendwelche eingetragenen Runlevel werden ignoriert.
bootwait
Ähnlich wie boot, allerdings wartet init auf seine Beendigung (z.B. beim Abarbeiten der rc-Dateien).
ctrlaltdel
Dieser Eintrag ist für unsere Windows-Freunde, die damit die gleiche Tastenkombination <Strg+Alt+Del> verwenden können, um ›schnell‹ das System herunterzufahren (shutdown zu starten).
In der /etc/inittab finden Sie auch einige wichtige Informationen. So z.B. # #
Note: Do not use tty7 in runlevel 3, this virtual line is occupied by the programm xdm.
xdm steht hier für X-Window Desktop Manager. Wenn Linux ohne Änderungen gestartet wird, haben Sie automatisch die grafische Oberfläche KDE2, die auf X-Window (X11) basiert3. Zusätzlich zu den verschiedenen Arbeitsflächen können Sie mit den Tastenkombinationen4 <Strg+Alt+F1>, <Strg+Alt+F2> bis <Strg+Alt+F6> sogenannte ASCII-Terminals (virtuelle Terminals) starten. Mit der Kombination <Strg+Alt+F7> kommen Sie immer auf die grafische Oberfläche zurück. Die virtuellen Terminals sind mit tty1 bis tty6 bezeichnet. Für die grafische Oberfläche ist tty7 reserviert (deshalb der oben aufgeführte Hinweis in der /etc/inittab).
2. Wahlweise kann auch GNOME als grafische Oberfläche eingesetzt werden. Es ist schlanker, bietet allerdings noch nicht so viele Werkzeuge wie KDE. 3. X-Window ist die grafische Benutzeroberfläche unter Unix/Linux. Sie wurde bereits vor etwa 20 Jahren am Massachusetts Institute of Technology entwickelt. 4. Eine Übersicht der häufig genutzten Tastenkombinationen finden Sie auf Seite 379.
69
Der Bootvorgang
Am besten Sie sehen sich Ihre /etc/inittab mit more oder less einmal an. In der Regel sind erläuternde Kommentare eingefügt. Hier nur ein Ausschnitt mit einigen Zeilen aus der /etc/inittab: # /etc/inittab ... id:5:initdefault: Eintrag für den Default-Runlevel si:I:bootwait:/etc/init.d/boot ... l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 ... # 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 # getty-programs for the normal runlevels l:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 ... # modem getty. ...
Starten der Login-Prozesse auf den angegebenen Terminals respawn bedeutet: wird der Prozess beendet, startet der Prozess erneut wieder
Bild 4-3: Ausschnitt der /etc/inittab
4.3
Runlevel unter Linux
Ein wesentlicher Unterschied zu Windows XX/2000 ist, dass es sich bei Unix-Betriebssystemen um Multi-User-Systeme handelt, d.h., es können mehrere User/Benutzer gleichzeitig an einem System arbeiten. Der Systemverwalter kann jedoch für bestimmte Aufgaben das System in den sog. Single-User-Modus fahren, um alleine an dem System zu arbeiten, z. B. um neue Partitionen einzuhängen, Dateibäume neu zuzuordnen (mounten) etc., also um Aufgaben durchzuführen, die nicht durch irgendwelche Aktivitäten anderer Benutzer gestört werden dürfen. Spezielle Server, wie etwa Fileserver, an denen man nicht direkt, sondern nur über das Netzwerk zugreifen soll, benötigen eigentlich keine grafische Oberfläche. Hier würde es ausreichen, über ein Terminal evtl. Kontrollprogramme abzurufen. Das System muss also nicht die Programme für die grafische Oberfläche starten, wohl aber Programme, die das Netzwerk betreffen.
70
Um diesen unterschiedlichen Anforderungen gerecht zu werden, gibt es sog. Runlevel, die unterschiedliche Programmfolgen starten. Ob ein Rechner nun in den Single-User-, Multi-User-Modus mit oder ohne Netz, mit oder ohne grafische Oberfläche hochfährt, wird also in dem Runlevel bestimmt. Die folgende Tabelle
4.3 Runlevel unter Linux
zeigt eine Übersicht der unter Linux zur Verfügung stehenden Runlevel: Runlevel
Bezeichnung
Erläuterung
0
halt
Das System wird heruntergefahren und angehalten (soweit von der Hardware unterstützt auch automatisch ausgeschaltet).
1 (S)
single user
Es steht nur die Konsole für den Systemverwalter (root) zur Verfügung (keine grafische Oberfläche).
2
multi user
Mehrere Benutzer können sich zur gleichen Zeit an dem System anmelden (keine grafische Oberfläche).
3
multi user + network
Wie Runlevel 2 – zusätzlich werden die eingetragenen Netzwerkdienste gestartet.
5
multi user + network + xdm
Wie Runlevel 3 – zusätzlich wird die grafische Oberfläche gestartet, bei Linux je nach getroffener Auswahl, in der Regel aber KDE.
reboot
Das System wird heruntergefahren und neu gestartet.
6 (reboot)
In der Liste fehlt der Runlevel 4. Er ist frei. Systemspezialisten können weitere Runlevel anlegen und dann auch die Nummer vier für eine spezielle Variante des Hochfahrens verwenden. Die oben aufgeführten Runlevel gelten für viele Unix-Derivate. Bei den Linux-Anbietern Debian, Mandrake und RedHat ist der Runlevel 4 genauso wie der Runlevel 3 belegt. Der Start der einzelnen Programme ist bei den unterschiedlichen Unix-Derivaten nicht einheitlich geregelt. In den Anfängen von Unix gab es zum Hochfahren nur eine Datei: /etc/rc. Nach und nach wurde die Datei erweitert und schließlich aufgeteilt in mehrere Shell-Skripte. Da einige Programme in verschiedenen Runleveln geladen werden, ist hier ein pfiffiges System eingesetzt. Um Programme beim Hochfahren zu laden bzw. beim Herunterfahren zu stoppen, sind die Start- und Stopp-Skripten unter /etc/init.d5 abgelegt. Hierzu gehören Daemon-Programme6, wie z.B. für
5. Die Bezeichnung /etc/init.d wurde bei SUSE ab 8 eingesetzt, um den Linux-Standard-BasisSpezifikationen (LBS) zu entsprechen. Das Verzeichnis wurde früher mit /etc/rc.d bezeichnet. rc.d ist noch als symbolischer Link auf /etc/init.d enthalten. 6. Daemon (Disk and ececution Monitor) ein im Hintergrund wachender Prozess (s. Seite 230).
71
Der Bootvorgang
❏
den Druckerbetrieb (CUPS),
❏
zeitlich wiederkehrende Aufträge (cron),
❏
die Netzwerküberwachung (network),
❏
die E-Mail-Steuerung (postfix bzw. sendmail)
❏
oder Programme, um z.B. die grafische Oberfläche zu starten (xdm) u.v.a.
Einige dieser Programme werden in mehreren Runleveln benötigt. Es existiert für jedes dieser Programme nur ein Originalskript, und zwar sowohl für das Starten als auch für das Stoppen. Für die einzelnen Runlevel sind Unterverzeichnisse im Verzeichnis init.d angelegt. Diese sind entsprechend der Runlevel-Bezeichnungen bzw. nach dem Bootvorgang benannt: boot.d, rc0.d, rc1.d, rc2.d, rc3.d, rc5.d, rc6.d. rcS.d und reboot.d In diesen Verzeichnissen sind symbolische Links7 zu den Originalskripten unter /etc/init.d vorhanden. Die Namen dieser Links setzen sich zusammen aus SNrName oder KNrName, also S (für Start) oder K (für Kill – beim Verlassen des Runlevels), einer Nummer, die letztlich für die Reihenfolge der Abarbeitung zuständig ist, und dem Originalnamen der Datei unter /etc/init.d (z.B. K08cups bzw. S13cups). Als erstes werden die Skripten in /etc/init.d/boot.d gestartet. Hier wird geprüft, ob das System das letzte Mal ordnungsgemäß heruntergefahren wurde. War dies nicht der Fall, wird das Programm fsck gestartet, das die Platten überprüft und eventuell Unstimmigkeiten beseitigt bzw. entsprechende Fehlermeldungen ausgibt. Erst nach erfolgreicher Überprüfung können die Platten, wie bei der Installation zugeordnet (und in der Datei /etc/fstab eingetragen), gemountet werden. Hierzu erfahren Sie mehr im Kapitel 6, Umgang mit Dateisystemen. Je nachdem in welchen Runlevel das System gefahren wird (standardmäßig Runlevel 5), werden dann die hierfür zugeordneten Skripten ausgeführt. Um die Zusammenhänge zu verdeutlichen, ist im Bild 4-4 nur eine Auswahl einiger Skripten aus /etc/init.d, /etc/init.d/rc3.d und /etc/init.d/rc5.d aufgeführt, basierend auf SUSE Linux 9.0 (ab 9.1 ist die Numerierung der symbolischen Links unterschiedlich, doch das Prinzip ist gleich – so finden Sie dort unter /etc/init.d/ rc3.d und /etc/init.d/rc5.d die symbolischen Links zu CUPS unter K09cups und S13cups).
72
7. Symbolische Links sind nur ein Verweis auf die Originaldatei. Sie werden auf Seite 130 behandelt.
4.3 Runlevel unter Linux
/etc/init.d/: (ls -F)
/etc/init.d/rc3.d (ls -l cut -c 61-99)
/etc/init.d/rc5.d (ls -l cut -c 61-99)
boot*
K06cron -> ../cron
cron* cups*
K06nscd -> ../nscd K07postfix -> ../postfix
K05xdm -> ../xdm K06cron -> ../cron
halt*
K07smb -> ../smb
K07postfix -> ../postfix
hotplug*
K08cups -> ../cups
hwscan* isdn* network* nmb* postfix* powerfail* smb* syslog* xinetd* xdm*
K12nmb -> ../nmb K15systlog -> ../syslog K16network -> ../network K20isdn -> ../isdn S01isdn -> ../isdn S05network -> ../network S06syslog -> ../syslog S09nmb -> ../nmb S13cups -> ../cups S14postfix -> ../postfix S14smb -> ../smb S15cron -> ../cron S15xinetd -> ../xinetd
K07smb -> ../smb K08cups -> ../cups
K06xinetd -> ../xinetd
K12nmb -> ../nmb K14hotplug -> ../hotplug K15syslog -> ../syslog K16network -> ../network K20isdn -> ../isdn S01isdn -> ../isdn S05network -> ../network S06syslog -> ../syslog S07hotplug -> ../hotplug S09nmb -> ../nmb S13cups -> ../cups S14postfix -> ../postfix S14smb -> ../smb S15cron -> ../cron S15xinetd -> ../xinetd S16xdm -> ../xdm
Bild 4-4: Ausschnitt der Verzeichnisse /etc/init.d, /etc/init.d/rc3.d und rc5.d
Um auch die Skripten näher zu betrachten, zeigt Bild 4-5 nachfolgend ›als kleine Auffrischung zu Ihren Shell-Programmierkenntnissen‹ einen Auszug aus dem Skript xdm – für Start und Beenden (bzw. Restart) der grafischen Oberfläche. Dieses Skript ist demnach nur in Runlevel 5 eingetragen (siehe auch Bild 4-4 ). Diese Skripte können vom Systemverwalter auch manuell gestartet und gestoppt werden, um z.B. eventuell aufgetretene Fehler zu untersuchen und zu beheben. Hierfür werden dann entsprechende Parameter mitgegeben, und zwar hier, wie aus dem Ausschnitt unter der Case-Anweisung im Bild 4-5 zu sehen, start, stop, restart und (im Ausschnitt nicht zu sehen) zusätzlich noch reload und status. Die Parameter start/stop werden auch beim Starten eines Runlevels bzw. beim Beenden des Runlevels mitgegeben. Die Zusammenhänge sind ebenfalls im Skript S16xdm (bzw. /etc/init.d/xdm) zu erkennen:
73
Der Bootvorgang
#! /bin/bash ... # /etc/init.d/xdm # ## Default-Start: 5 ... . /etc/rc.status . /etc/sysconfig/displaymanager . /etc/config/profile ... locale_vars="\ LANG \ LC_ALL \ ... for var in $locale_vars do if eval test -z "\$$var"; then eval $var="\$RC_$var" export $var fi done ...
case "$1" in start)
Hinweis auf das Originalskript Es folgen weitere Kommentare wie z. B. Default-Start im Runlevel 5 Mit . Datei werden die angezeigten Dateien an dieser Stelle eingelesen Zuweisung der Variablen locale_vars
Für jeden Wert der oben zugewiesenen Variablen wird über die Schleife getestet, ob die Variable einen Wert enthält, wenn nicht, wird sie neu zugewiesen
Weitere Variablen werden zugewiesen – u.a. $DM (Disk Manager) mit z.B. KDE
Option start
echo -n "Starting service $DM"
Diese Zeile wird beim Booten an der Konsole angezeigt
stop) -n "Shutting down service $DM" restart) $0 stop $0 start
Option stop angezeigter Kommentar beim Shutdown Option restart
... ;;
... ;;
Die Bash führt dieses Skript aus
*) echo "Usage: $0 {start|stop| …}
exit 1;; esac rc_exit
Bild 4-5: Ausschnitt aus /etc/init.d/xdm mit Erläuterungen
4.4
Der init-Befehl
Ein Wechsel der Runlevel kann der Systemverwalter durch den Befehl init Runlevel 74
erreichen. Um den Ablauf an der Konsole verfolgen zu können, gibt man diesen
4.5 Startprotokoll
Befehl am besten unter dem Terminal /dev/tty1 ein (aus der grafischen Oberfläche mit <Strg+Alt+F1>. Wenn der Rechner mit Bildschirm/Tastatur auch anderen Benutzern zugänglich ist, sollte man danach allerdings die Sitzung von root unter der virtuellen Konsole /dev/tty1 wieder schließen. Hier einige Beispiele aus der Praxis: init-Befehl
alternativ
Grund/Auswirkung
init 0
halt shutdown -h 0
Das System wird heruntergefahren und in den Halt-Modus gebracht.
init 3
Um die grafische Oberfläche zu verlassen und z. B. die Einstellungen richtig zu setzen, da die Schrift unleserlich ist, oder um andere Voreinstellungen durchzuführen. Oder KDE hat sich durch ein Programm aufgehängt und nichts geht mehr. Erst KDE mit init 3 beenden und dann mit init 5 wieder starten.
init 5
Wechsel in Multi-User-Modus mit grafischer Oberfläche z.B. in KDE
init 6
4.5
reboot shutdown -r 0
Neustarten des Systems – allerdings ist es nicht so oft nötig, wie unter Windows …
Startprotokoll
Wenn Ihnen Ihr Rechner zu schnell war und Sie die einzelnen Schritte – und vor allem eventuelle Fehlermeldungen – am Bildschirm beim Hochfahren oder Wechsel der Runlevels nicht verfolgen konnten, können Sie alles nochmal in der Datei /var/log/boot.msg nachlesen. Diese erhalten Sie auch über: Kontrollzentrum R YaST R Sonstiges R Startprotokoll
Im Bild 4-6 sehen Sie einige Zeilen, die beim Wechsel von init 5 auf init 3 und wieder zurück auf init 5 entstanden sind. Hier kann man sehr schön erkennen, dass beim Wechsel vom Runlevel nur jene Skripte gestoppt werden, die im neuen Runlevel nicht enthalten sind, und auch nur jene gestartet, die im bisherigen Runlevel noch nicht gestartet wurden. Vertiefende Informationen über den Bootvorgang und den Aufruf von init finden Sie u.a. unter dem SUSE HelpCenter: Online-Dokumentation R Administrations-Handbuch R Das Bootkonzept
75
Der Bootvorgang
Boot logging started on /dev/tty1(/dev/console) at Wed Aug 20 11:54:12 2003 Master Resource Control: previous runlevel: 5, switching to runlevel: Notiz aus Aufruf von init 3 3 Shutting down service kdm<notice>/etc/init.d/rc5.d/K05xdm stop <notice>killproc: kill(2020,15) Stopp von xdm <notice>killproc: kill(1995,15) done <notice>’/etc/init.d/rc5.d/K05xdm stop’ exits with status 0 Start der Skripte unter Runlevel 3 <notice>/etc/init.d/rc3.d/S14kbd start Loading keymap qwertz/de-latin1-nodeadkeys.map.gz doneLoading compose table latin1.add done Loading console font lat9w-16.psfu doneLoading screenmap trivial doneSetting up console ttys done<notice>’/etc/init.d/rc3.d/S14kbd start’ exits with status 0 Master Resource Control: runlevel 3 has been reached Im Runlevel 3 (Nur Textkonsole tty1) <notice>killproc: kill(28658,3) Boot logging started on /dev/tty1(/dev/console) at Wed Aug 20 11:54:33 2003 Master Resource Control: previous runlevel: 3, switching to runlevel: 5 Notiz aus Aufruf von init 5 <notice>/etc/init.d/rc5.d/S14kbd start Loading keymap qwertz/de-latin1-nodeadkeys.map.gz doneLoading compose table latin1.add done Loading console font lat9w-16.psfu doneLoading screenmap trivial doneSetting up console ttys doneStarting service kdm<notice>’/etc/init.d/rc5.d/S14kbd start’ exits with status 0 <notice>/etc/init.d/rc5.d/S16xdm start <notice>startproc: execve (/opt/kde3/bin/kdm) [ /opt/kde3/bin/kdm ], [ LC_MONETARY= CONSOLE=/dev/console TERM=linux SHELL=/bin/sh LC_NUMERIC= QTDIR=/usr/lib/qt3 LC_ALL= progress=2 INIT_VERSION=sysvinit-2.82 KDEROOTHOME=/root/.kdm REDIRECT=/dev/tty1 COLUMNS=160 PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin LC_MESSAGES= vga=0x307 RUNLEVEL=5 LC_COLLATE=POSIX PWD=/ LANG=de_DE@euro PREVLEVEL=3 LINES=64 HOME=/ SHLVL=2 kscripts=28 no_proxy=localhost RC_LC_COLLATE=POSIX WINDOWMANAGER=/usr/X11R6/bin/kde PRINTER=lp RC_LANG=de_DE@euro LC_CTYPE=de_DE@euro splash=silent sscripts=30 LC_TIME= _=/sbin/startproc DAEMON=/opt/kde3/bin/kdm ] done Master Resource Control: runlevel 5 has been reached <notice>’/etc/init.d/rc5.d/S16xdm start’ exits with status 0 <notice>killproc: kill(28884,3)
Bild 4-6: Ausschnitt Startprotokoll (init 3–init 5)
Der Ausschnitt im Bild 4-6 soll nur zum Verständnis dienen. Er basiert noch auf der Version 9.0. Das Startprotokoll kann als root über /var/log/boot.msg mit less oder more eingesehen werden oder über: 76
Kontrollzentrum R YaST2 Module R Sonstiges R Startprotokoll
4.6 Runlevel-Editor
4.6
Runlevel-Editor
Selbstverständlich können und sollen Sie später zusätzliche Dienste für bestimmte Runlevel bereitstellen. Dies ist z.B. dann erforderlich, wenn Sie bestimmte Netzwerkdienste einbinden. Wir werden im Kapitel 11.8 darauf noch speziell eingehen. Vorab sei jedoch schon auf den Runlevel-Editor hingewiesen, der hier die Arbeit des Systemverwalters wesentlich erleichtert. Mit diesem Editor wird der gewünschte Dienst markiert und unten per Mausklick angegeben, in welchem Runlevel er zur Verfügung gestellt werden soll. Kontrollzentrum R YaST2 Module R System R Runlevel-Editor
Da sämtliche YaST-Module unter der normalen Benutzerkennung aufgerufen werden können, muss dann das Root-Passwort eingegeben werden. Erst nach Eingabe des Root-Passworts wird der Runlevel-Editor gestartet:
Auswahl der Runlevel
Bild 4-7: Beispiel Runlevel-Editor
77
Der Bootvorgang
4.7
Zusammenfassung in Stichworten
In der Einleitung hatten wir Ihnen einen Wissensbaum vorgestellt. Nun sollten Ihnen die Stichwörter zu dem Zweig Boot schon etwas sagen. Hier nochmals der entsprechende Ausschnitt mt ein paar weiteren Stichwörtern:
78
Kapitel 5 Benutzerverwaltung
Wurde im letzten Kapitel gezeigt, wie der Rechner in die einzelnen Runlevel gefahren wird, erfahren Sie hier, wie Benutzer eingerichtet werden und was für die Benutzer eines Linux-Rechners voreingestellt wird. Der Systemverwalter entscheidet letztlich, wer mit dem System arbeiten darf und welche Rechte der Benutzer eingeräumt bekommt. Hier fungiert der Systemverwalter als Statthalter. 5.1
Was passiert beim Anmelden eines Benutzers?
5.2
Voreinstellungsdateien für den Benutzer
5.3
Das Linux-Einwohnermeldeamt
5.4
Neue Benutzer anlegen
5.5
Benutzereinstellungen ändern per usermod
5.6
Benutzer löschen per userdel
5.7
Neue Gruppen anlegen, ändern, löschen
5.8
Überlegungen zur Benutzerverwaltung
5.9
Kommandos zur Bearbeitung von Benutzern und Gruppen
5.10
Dateien und Verzeichnisse für die Benutzerverwaltung
5.11
Rückblick in Stichworten
79
Benutzerverwaltung
5.1
Was passiert beim Anmelden eines Benutzers?
In der Regel wird für die Benutzer unter Linux die grafische Benutzeroberfläche bereitgestellt – zumeist KDE oder GNOME. Als Systemverwalter sollten Sie überlegen, ob Sie wirklich alle Benutzer im Login-Fenster zur Auswahl anzeigen lassen wollen. Sicherer ist ein Anmeldebildschirm, an dem der Benutzer nicht nur sein Passwort, sondern auch seinen Benutzernamen kennen muss. Die Einstellungen hierfür finden Sie unter: Kontrollzentrum R Systemverwaltung R Anmeldungsmanager Hier definieren Sie unter der Rubrik Benutzer, ob bzw. welche Benutzer angezeigt werden sollen. Nur in Ausnahmefällen sollte man die sog. Vereinfachungen wählen, in denen man sogar zulassen kann, dass bestimmte Benutzer sich auch ohne Passwort anmelden dürfen.
Auswahl Benutzer Hier kann dem Benutzer auch ein anderes Bildchen zugeordnet werden Ohne Passwort (sollte wohlüberlegt sein!)
Bild 5-1: Anmeldebildschirm und der Anmeldungsmanager
Der Anmeldebildschirm wird, wie im vorigen Kapitel erwähnt, vom init-Prozess gestartet. Sobald der Benutzer nun versucht sich anzumelden, wird erst in der Datei /etc/passwd nach einem Eintrag mit dem angegebenen Namen gesucht und dann das Passwort mit der verschlüsselten Version in der Datei /etc/shadow verglichen. 80
5.1 Was passiert beim Anmelden eines Benutzers?
5.1.1
Vorbereiten der Arbeitsumgebung für den Benutzer
Konnte das System den Benutzer beim Login eindeutig zuordnen (Eintrag in der /etc/passwd und richtiges Passwort), wird zunächst die Arbeitsumgebung für den Benutzer vorbereitet. Hierzu gehören eine Reihe von Voreinstellungen wie z.B.: ❐
Wertzuweisungen für bestimmte Variablen (HOME, PATH, USER, SHELL u.a.)
❐
Angabe, wie die Zugriffsrechte für neue Dateien und Verzeichnisse gesetzt werden sollen (umask, siehe Seite 133)
❐
Einstellungen für die gewählte Shell (Aliase, Variablen, Optionen)
Bei Anmeldung über KDE oder über eine andere grafische Oberfläche wird dann der Desktop so aufgebaut, wie er das letzte Mal verlassen wurde (evtl. beim Abmelden geöffnete Programme werden wieder gestartet, Farbeinstellungen übernommen etc.). Um alle Voreinstellungen und Zuordnungen durchzuführen, werden bestimmte Dateien nacheinander gelesen. Die zuletzt gelesenen können somit bereits vorgenommene Einstellungen wieder überschreiben. So kann z.B. der Benutzer in seiner eigenen Datei $HOME/.profile die Variable PATH neu zuordnen oder ergänzen (wer zuletzt kommt …). Die nachfolgende Darstellung zeigt vereinfacht einen Lebenszyklus vom Hochfahren, Anmelden, Abmelden und Herunterfahren bis zum Ausschalten des Rechners. Pro Terminal (grauer Bereich) können sich mehrere Benutzer hintereinander anmelden. Da zur gleichen Zeit mit mehreren Terminals gearbeitet werden kann, können parallel auch mehrere Benutzer zur gleichen Zeit arbeiten. Bootloader lädt den Kernel (vmlinuz), dieser startet init
Kontrolle durch init
boot init
/etc/inittab wird gelesen Systemprogramme in /etc/init.d/rc*.d je nach Runlevel bash # evtl. im Single-User-Modus Anmeldung: Überprüfung in /etc/passwd und /etc/shadow ja ok? nein
Anmeldefenster (mingetty) Login:
bash führt /etc/profile aus
exit
bash liest $HOME/.profile und $HOME/.bashrc
Ausführen unterschiedlicher Programme init 0 oder shutdown sync; halt lt. Init-Spripten
Terminalbereich
halt
Bild 5-2: Lebenszyklus vom Hochfahren bis zum Ausschalten eines Rechners
81
Benutzerverwaltung
Ein Blick in /etc/profile zeigt, welche Voreinstellungen für alle Benutzer gesetzt werden. Ein Ausschnitt reicht, um die generelle Funktionsweise zu erkennen, wobei wesentliche Punkte erläutert sind: /etc/profile – Voreinstellungen für die Benutzerumgebung # /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 fo # 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 ;; */*) is=sh ;; esac else Zuordnung der Shell is=sh fi # Initialize terminal tty=‘tty 2> /dev/null‘ test $? -ne 0 && tty="" if test -O "$tty" -a -n "$PS1"; then test -z "${TERM}"&& { TERM=linux; export TERM; }
...
Zuordnung des Terminaltyps
fi ... # The user file-creation mask umask 022 ... test -z "$USER" && USER=‘id -un 2> /dev/null‘ test -z "$MAIL" && MAIL=/var/spool/mail/$USER test -z "$HOST" && HOST=‘hostname -s 2> /dev/null‘ ... # Do NOT export UID, EUID, USER, MAIL, and LOGNAME export HOST CPU HOSTNAME HOSTTYPE OSTYPE MACHTYPE # # Make path more comfortable
Voreinstellung der Zugriffsberechtigung bei Erstellung neuer Dateien/Verzeichnisse hier mit 644 und mit 755 (Näheres in Kapitel 6.5.2)
if test -z "$PROFILEREAD" ; then PATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin for dir in $HOME/bin/$CPU $HOME/bin ; do test -d $dir && PATH=$dir:$PATH done test "$UID" = 0 && PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH ... test -d $dir && PATH=$PATH:$dir Zuordnung der Variabfi ## len PATH getrennt für HISTSIZE=1000 Variable HISTSIZE für alle Benutzer und für root export HISTSIZE # And now let‘s see if there is a local profile test -s /etc/profile.local && . /etc/profile.local ## System BASH specials, maybe also good for other # test -r /etc/bash.bashrc && . /etc/bash.bashrc if test "$is" = "bash" -a -z "$_HOMEBASHRC" ; then # loop detection readonly _HOMEBASHRC=true test -r $HOME/.bashrc && . $HOME/.bashrc fi
82
Fortsetzung nächste Seite
shells
Spezialeinstellung für die Bash Ist .bashrc vorhanden, dann wird an dieser Stelle (durch . Dateiname) die nachfolgende Datei eingelesen
5.2 Voreinstellungsdateien für den Benutzer
# # KSH specials # if test "$is" = "ksh" ; then test -r /etc/ksh.kshrc && . /etc/ksh.kshrc fi if test "$is" = "ksh" -a -z "$_HOMEKSHRC";then # loop detection readonly _HOMEKSHRC=true test -r $HOME/.kshrc && . $HOME/.kshrc fi # # End of /etc/profile
Spezialeinstellung für ksh (ähnlich wie für die Bash, hier $/HOME/.kshrc). Dadurch ist die Variable ENV, die sonst für die Korn-Shell gesetzt sein muss, nicht erforderlich.
Bild 5-3: Ausschnitt aus /etc/profile
5.2
Voreinstellungsdateien für den Benutzer
Es gibt eine ganze Reihe von Voreinstellungsdateien, deren Namen in der Regel mit einem Punkt beginnen, also für den normalen Anwender nur dann sichtbar sind, wenn er sie per ›ls -a‹ anzeigen lässt bzw. in der grafischen Oberfläche einstellt, dass auch die versteckten Dateien angezeigt werden. Für einige Programme, wie etwa vi/vim oder den Acrobat-Reader, werden die Voreinstellungsoptionen und Parameter in diesen Dateien im Home-Verzeichnis (oder einem Unterverzeichnis) des Benutzers abgelegt. Beim Neuanlegen eines Benutzers werden einige dieser Dateien bereits aus dem Vorlagenverzeichnis /etc/skel übernommen (siehe auch Seite 91). Je nachdem, welche Shell der Benutzer verwendet, werden unterschiedliche Voreinstellungsdateien gelesen. Für die Bash und Kornshell u.a. die .profile: # # # # #
Sample .profile for SUSE Linux ... All other interactive shells will only read .bashrc; this is particularly important for language Wenn die Variable $PROFILEREAD leer settings, see below
ist (sie wird in /etc/profile gesetzt), dann test -z "$PROFILEREAD" && . /etc/profile soll /etc/profile an dieser Stelle gelesen werden. #... export PATH=$PATH:~/Befehle Erweiterung der Variablen PATH
Bild 5-4: Ausschnitt aus .profile
Wie schon erwähnt, kann der Benutzer in der Datei $HOME/.profile, die beim Login gelesen wird, die Variable PATH mit einem zusätzlichen Verzeichnis ergänzen (siehe Bild 5-4). Dies ist dann sinnvoll, wenn er eigene Kommandos schreibt und sie dann in jenem Verzeichnis ablegt (z.B. $HOME/bin oder $HOME/Befehle). Da der Benutzer unter Linux mehrere Shells gleichzeitig aktivieren kann (z.B. in mehreren Terminalfenstern), wird für die sog. interaktive Shell die Datei ~/.bashrc (~/ steht für das jeweilige Home-Verzeichnis des Benutzers) gelesen. Da in diesem
83
Benutzerverwaltung
Buch die Bash nicht mehr speziell behandelt wird, hier nur der Hinweis, dass in ~/.bashrc z.B. Aliase (Kurznamen für Befehle) und Zuordnung mit entsprechenden Optionen eingetragen werden können. Unter SUSE lassen sich solche Alias-Anweisungen auch in einer zusätzlichen Datei ~/.alias eintragen (siehe Bild 5-5 zur Einbindung der Datei in den Anmeldungsprozess). # # Sample .bashrc for SUSE Linux Existiert eine Datei /etc/profile.dos, dann lies #... sie hier ein. (Eine nette Erleichterung von test -f /etc/profile.dos && . /etc/profile.dos SUSE für ehemalige DOS-Benutzer) # ...# # NOTE: It is recommended to make language settings in ~/.profile rather # than here, since multilingual X sessions would not work properly if # LANG is overridden in Existiert eine nicht leere Datei im Home-Ver# every subshell. ... zeichnis mit Namen .alias, soll sie hier eingetest -s ~/.alias && . ~/.alias fügt werden. alias rm="rm -i"
Für rm soll immer rm -i verwendet werden.
Bild 5-5: Ausschnitt aus .bashrc
Für die grafische Oberfläche existieren zusätzliche Voreinstellungsdateien wie .xsession und .xinitrc. Sie sind ähnlich aufgebaut wie /etc/profile. Unter SUSE Linux sind diese Dateien schon so angepasst, dass Sie als Systemverwalter in der Regel kaum etwas daran ändern müssen.
5.3
Das Linux-Einwohnermeldeamt
Bevor ein Benutzer mit dem System arbeiten darf, muss er registriert sein, d.h. einen Account besitzen. Der Account ist ein Eintrag zum Benutzer in /etc/passwd und (zumeist) in /etc/shadow. Bei der SUSE Linux-Installation wurde als Teil des Installationsdialogs neben root bereits ein weiterer Benutzer eingetragen. Nur mit gültigem Wohnsitz (sprich Home-Verzeichnis) und der Zutrittskontrolle über das Passwort wird einem Benutzer erlaubt, mit einem Linux-System zu arbeiten. Im Standardfall kann nur der Systemverwalter einen dazu notwendigen Account (neuen Benutzer) anlegen. Sehen wir uns dazu die entsprechenden Dateien im folgenden Abschnitt an.
5.3.1
84
/etc/passwd, /etc/shadow und /etc/group
Die Datei /etc/passwd ist die zentrale Datei zur Benutzerverwaltung. Gleich zu Beginn eine Warnung: Sollte die Datei /etc/passwd versehentlich gelöscht werden oder die 1. Zeile (Root-Eintrag) verstümmelt sein, kann Ihr System nicht mehr korrekt hochfahren. Dann hilft nur noch eine Neuinstallation oder ein Wiederherstellen über ein sogenanntes Rescue-System (Rettungssystem z.B. auf der Installa–
5.3 Das Linux-Einwohnermeldeamt
tions-CD/DVD). Verändern Sie /etc/passwd deshalb nur, wenn Sie genau wissen, was Sie tun. Um neue Benutzer anzulegen oder vorhandene zu löschen, ist es meist besser, die dafür vorgesehenen Tools einzusetzen. Die Struktur der passwdDatei können Sie sich auch als normaler Benutzer anschauen. Die /etc/passwd hat sieben Spalten, die durch einen ›:‹ getrennt werden: Benutzer- GruppenKommentar Nr. Nr. (Vorname, Name)
root:x:0:0:root:/root:/bin/bash
LoginVerzeichnis
Startprogramm
Achtung root-Zeile niemals verändern!
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 mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false news:x:9:13:News system:/etc/news:/bin/bash uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash games:x:12:100:Games account:/var/games:/bin/bash man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false ftp:x:40:49:FTP account:/srv/ftp:/bin/bash postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false sshd:x:71:65:SSH daemon:/var/lib/sshd:/bin/false ntp:x:74:65534:NTP daemon:/var/lib/ntp:/bin/false nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash chr:x:1000:100:Christine:/home/chr:/bin/bash christine:x:1001:100:Christine:/home/christine:/bin/bash juergen:x:1002:100:Juergen:/home/juergen:/bin/bash carsten:x:1003:100::/home/carsten:/bin/bash james:x:1004:100:James Cook:/home/james:/bin/bash +::::::
reservierte Nummern für Programme
Benutzer- Passwort name Schlüssel
Bild 5-6: Beispiel einer /etc/passwd
Erläuterungen zu den Spalten: Benutzername
Auf einigen Linux/Unix-Systemen darf der Login-/Benutzername maximal 8 Zeichen enthalten und nur Kleinbuchstaben verwenden. Seit SUSE 8.x sind auch längere Namen möglich und Großbuchstaben zulässig. Manche Programme werten allerdings nur acht Zeichen aus (z.B. who). Der Benutzername sollte keine Umlaute und Sonderzeichen enthalten!
Passwort
Ein x hier zeigt an, dass das (verschlüsselte) Passwort in der Datei /etc/shadow abgelegt ist.
Benutzer-Nr.
Die Standardtools vergeben Benutzernummern automatisch ab der Nummer 1000 (seit SUSE Linux 9.1, davor ab 500). Wird die gleiche Nummer zweimal vergeben, bedeutet dies, dass der Benutzer mit mehreren Benutzernamen Zugriff auf das Home-Verzeichnis und die Dateien hat. In der Anzeige mit ›ls -l‹ wird nur der Name angezeigt,
85
Benutzerverwaltung
der in der /etc/passwd zuerst vorkommt. Im Dateikopf von Dateien ist jeweils nur diese Benutzernummer eingetragen. Der Befehl ls ermittelt daraus den Namen erst über die /etc/passwd. Allerdings wird eine doppelt vorkommende Nummer unter YaST nicht akzeptiert. Das Prüfprogramm pwck (password check) fragt den Systemverwalter erst, ob der zweite Eintrag gelöscht werden soll. Doppelte Vergabe von Nummern ist sicher nicht empfehlenswert, kann aber unter Umständen bei der Vernetzung mit Windows-Rechnern über Samba sinnvoll sein. Gruppen-Nr.
Hier steht die primäre Gruppennummer (Initial- oder Standardgruppe) des Benutzers. Diese Gruppennummer wird beim Anlegen von Dateien und Verzeichnissen übernommen. Default ist die Gruppennummer 100 für die Gruppe ›users‹. Ein Benutzer kann jedoch mehreren Gruppen angehören (siehe /etc/group).
Kommentar
Hier werden in der Regel Vorname und Nachname eingetragen. Einige Programme werten dieses Kommentarfeld aus, so u.a. finger, das ähnlich wie who die aktuell angemeldeten Benutzer anzeigt, jedoch mit mehr Informationen. Mit chfn können weitere Informationen wie Abteilung, Telefon etc. mitgegeben werden, die letztlich mit Komma getrennt im Kommentarfeld der /etc/passwd eingetragen werden.
Login-Verzeichnis Das Verzeichnis, das dem Benutzer nach dem Anmelden (Login) automatisch zugewiesen wird. Es ist in der Regel zugleich sein Home-Verzeichnis. Startprogramm
86
Das hier angegebene Programm wird nach dem Login automatisch gestartet. Unter SUSE Linux ist als Default /bin/bash eingesetzt. Fehlt die Angabe, so wird die Bourne-Shell verwendet (/bin/sh). Je nach Vorliebe des Benutzers lässt sich hier auch eine andere Shell eintragen (csh, tcsh, ksh, ash u.a.). Der Benutzer kann später auch selbst durch das Kommando chsh (change shell ) hier eine Änderung vornehmen. Wird ein anderes Programm als eine Shell eingetragen, so wird dieses Programm gestartet. Beendet der Benutzer dann das Programm, wird er automatisch abgemeldet. (Doch Vorsicht: Auch die grafische Oberfläche steht dem Benutzer dann nicht zur Verfügung, d.h., um ein grafisches Programm zu starten, müsste ein spezielles Skript geschrieben werden, das dann auch die grafische Oberfläche mit startet).
5.3 Das Linux-Einwohnermeldeamt
Um sich mit einem Passwort anzumelden, ist die Datei /etc/shadow notwendig. In ihr sind zusätzliche Vorgaben möglich, etwa zur Gültigkeitsdauer des Passworts oder bis zu welchem Datum der Benutzer sich am System anmelden darf (die Berechtigung endet dann zu diesem Datum). Doch auch dafür bieten die Tools zum Anlegen und Ändern von Benutzern Möglichkeiten an. Die Einträge sollten deshalb statt mit einem Editor mit diesen Tools vorgenommen werden. Sie ersparen z.B. die Berechnung des Gültigkeitstermins. Er ist in Tagen ab dem 1.1.1970 anzugeben – dem Beginn des Unix-Zeitalters. Die Datei /etc/shadow ist im Gegensatz zu /etc/passwd nicht allgemein lesbar. Sie enthält für jeden Benutzer im System einen einzeiligen Eintrag in folgendem Format – jeweils durch einen Doppelpunkt getrennt: Benutzer- Passwort l-Änderung min max warn inaktiv Verfall Flag name carsten:lPgyOon.Ol8.s:12561:0:99999:7::: chr:NzxtljEacipR.:12547:0:99999:7::: christine:1i1GysUBYcBw.:12548:0:99999:7::: james:tR10inLLrfYqQ:12607:0:99999:7::: juergen:FShYpMXX5GxdA:12548:0:99999:7::: hans:!:12620:0:99999:7::: otto:eZ2P9qhM1.6NI:12620:0:99999:7::: +::0:0:0::::
Bild 5-7: Ausschnitt aus /etc/shadow
Hierbei ist: Benutzername Die Kennung, unter der sich der Benutzer am System anmeldet.
Sie wird auch als Account-Name bezeichnet und stellt die Querverbindung zum korrespondierenden Eintrag in der Datei /etc/passwd her. Passwort
An dieser Stelle wird das Passwort des Benutzers in verschlüsselter Form gespeichert. Bei manchen Systemen ist ein leeres Passwort (›::‹) erlaubt. Ab Linux 9.1 wird hier ein Ausrufezeichen eingesetzt (siehe ›hans‹ in Bild 5-7). In diesem Falle erfolgt beim Anmelden keine Passwortabfrage. Ein Passwort, welches nur aus der Return-Taste besteht, ist kein leeres Passwort.
l-Änderung
Tag der letzten Passwortänderung. Der Tag wird als absolute Differenz in Tagen zum 1. Januar 1970 angegeben.
min
Definiert die Anzahl der Tage, die mindestens zwischen zwei Passwortänderungen liegen muss.
max
Gibt die maximale Gültigkeit des Passwortes in Tagen vor. Erfolgt eine Anmeldung nach Ablauf dieser Frist, erzwingt das System die Passwortänderung vor dem Beginn der Sitzung. 87
Benutzerverwaltung
warn
Spezifiziert die Anzahl von Tagen, ab denen der Benutzer vor Ablauf der Gültigkeit des Passwortes diesbezüglich gewarnt wird.
inaktiv
Anzahl der maximal akzeptierten Tage ohne Anwesenheit am System. War der Benutzer mehr Tage als angegeben nicht am System, so verfällt die Gültigkeit seines Passwortes, unabhängig von den anderen Gültigkeitskriterien.
Verfall
Verfallsdatum. Nach diesem Tag wird der Zugang des Benutzers zum System in jedem Falle verwehrt.
Flag
Ein Zeichen zur Identifikation des verwendeten Kodierverfahrens für das Passwort.
Die dritte Datei, /etc/group, beinhaltet die Gruppennamen und die dazugehörigen Benutzer. Auch hier reicht ein kleiner Ausschnitt der Datei. Der Aufbau der Gruppendatei ist recht einfach: Gruppen- Gruppen- Gruppen-Nr . name passwort
Benutzer, Benutzer …
root:x:0: ... uucp:x:14:carsten,chr,christine,james,juergen,hans,otto dialout:x:16:carsten,chr,christine,james,juergen,hans,otto audio:x:17:carsten,chr,christine,james,juergen,hans,otto ... video:x:33:carsten,chr,christine,james,juergen,hans,otto ... users:x:100:
Bild 5-8: Ausschnitt aus /etc/group
Hat eine Gruppe mehrere Benutzer, werden diese jeweils durch Komma getrennt. Das Gruppenpasswort ist verschlüsselt abgelegt. Um der Gruppe ein Passwort zu vergeben, wird das Kommando passwd -g aufgerufen. Das verschlüsselte Passwort wird in der Datei /etc/gshadow gehalten. Eine Passwortvergabe bei Gruppennamen ist in der Praxis jedoch sehr selten. Um Dateien/Verzeichnisse mit einer anderen Gruppe anzulegen als die eingetragene Gruppe aus der /etc/passwd, muss der Benutzer das Kommando ›newgrp Gruppenname‹ aufrufen. Dazu muss sein Name in /etc/group unter dem betreffenden Gruppennamen aufgeführt sein. Falls für die Gruppe ein Passwort vergeben wurde, wird die Eingabe des Passworts verlangt.
88
5.4 Neue Benutzer anlegen
5.4
Neue Benutzer anlegen
Müsste man das Home-Verzeichnis mit all seinen Voreinstellungsdateien für jeden neuen Benutzer erst anlegen, so wäre das Einrichten von neuen Benutzern eine recht aufwendige Angelegenheit. Doch mit den YaST-Tools lässt sich dies schnell erledigen.
5.4.1
Anlegen und Ändern von Benutzern über YaST
Das Kontrollzentrum ist zu Beginn zwar einfach zu handhaben, doch nach und nach wissen Sie bereits, welche Menüs Sie direkt mit YaST aufrufen können. Dann empfiehlt es sich, das Icon für YaST (Startmenü: System R YaST) in die Kontrollleiste zu übernehmen (das Icon aus dem Startmenü einfach in die Kontrollleiste ziehen) und von dort die gewünschte Anwendung zu starten: YaST R Sicherheit und Benutzer R Benutzer bearbeiten und anlegen Nach der obligatorischen Eingabe des Root-Passworts werden übersichtlich die bisher angelegten Benutzer angezeigt, wie in Bild 5-9 1 dargestellt. Um einen neuen Benutzer anzulegen, klicken Sie auf die Schaltfläche Hinzufügen 2. Über die Maske gibt man zumindest den Benutzernamen und das Passwort an. Die Eingabe des Passworts muss wiederholt werden. Vorname und Name, die im Kommentarfeld der /etc/passwd landen, sind nicht zwingend, gehören aber in eine ›ordentliche‹ /etc/passwd. Über Details 4 sehen Sie, dass der Benutzer automatisch noch anderen Gruppen zugeordnet wurde. Es lassen sich hier noch weitere Gruppen vorgeben oder zugewiesene entfernen. Soll der Benutzer nur einen zeitlich begrenzten Zugang erhalten, so lässt sich unter ›Passworteinstellungen‹ 3 das Ablaufdatum eintragen. Der Benutzer erhält dann sieben Tage vor Ablauf eine Warnung, falls in der ersten Zeile die Standardeinstellung nicht verändert wurde. Für sensible Bereiche lässt sich hier auch vorgeben, dass das Passwort nach einer vorgegebenen Anzahl von Tagen zu ändern ist. Ein Klick auf Weiter 5 legt automatisch alle nötigen Verzeichnisse und Dateien an und trägt als Besitzer sämtlicher Dateien im neuen Home-Verzeichnis den neuen Benutzer ein. Möchte man die Account-Daten eines bestehenden Benutzers ändern, so markiert man in der ersten Anzeige die entsprechende Zeile und klickt auf Bearbeiten 6.
89
Benutzerverwaltung
➊
➋
➏ Eingabe von Name, Benutzername und Passwort
➌ ➍ ➎ Evtl. Ablaufsdaten zum Passwort eintragen
Unter Details ➃ können – eine andere Nummer (UID) vergeben, – ein anderes Home-Verzeichnis zugeordnet, – Kommentar (Vorname, Name), – die Login-Shell (bzw. das statt der Login-Shell zu startende Programm) gesetzt und – Standard- und weitere Gruppenzugehörigkeiten geändert werden. Bild 5-9: Neue Benutzer bearbeiten und anlegen über YaST2
90
5.4 Neue Benutzer anlegen
5.4.2
Das Vorlagenverzeichnis /etc/skel
Welche Dateien und Unterverzeichnisse angelegt werden sollen, ist im Verzeichnis /etc/skel (abgeleitet von skeleton, hier Entwurf, Rahmen) enthalten. Wollen Sie als Systemverwalter, dass neue Benutzer das Kommando rm immer automatisch mit ›rm -i‹ aufrufen, dann ergänzen Sie im Verzeichnis /etc/skel die Datei .bashrc um den Aliaseintrag alias rm="rm -i". Die Datei .exrc beinhaltet die Voreinstellungen für den komfortableren vim, der unter Linux statt vi verwendet wird. ./ ../ .Xdefaults .Xmodmap .Xresources@ .bash_history .bashrc .dvipsrc .emacs
.exrc .fonts/ .gnu-emacs .kermrc .muttrc .profile .urlview .xcoralrc
.xemacs/ .xim .xinitrc* .xserverrc.secure .xsession* .xtalkrc Documents/ public_html/
Bild 5-10: Liste (ls -Fa) der Standarddateien und Unterverzeichnisse in /etc/skel
5.4.3
Benutzer anlegen per useradd
Die grafische Oberfläche ist, wie Sie gesehen haben, sehr komfortabel – doch was machen Sie, wenn Sie nicht nur einen neuen Benutzer, sondern 100 neue Benutzer anlegen wollen? Dies ist per Kommandozeile wesentlich schneller möglich. Das Kommando hierfür mit den wichtigsten Optionen lautet:
useradd [-c Kommentar] [-m] [-p verschlüsseltes Passwort] Benutzername Kommando, um Benutzer anzulegen
Die Option -m (mkdir) bewirkt, dass ein Home-Verzeichnis unter /home mit dem Benutzernamen angelegt wird, falls es nicht bereits existiert. Zusätzlich werden alle Dateien und Unterverzeichnisse aus der /etc/skel in das Home-Verzeichnis kopiert. Weitere oft verwendete Optionen sind: -s shell
Nur dann notwendig, wenn die Bash nicht verwendet und stattdessen ein anderes Programm ausgeführt werden soll.
-d Home-Verzeichnis
Erlaubt die Vorgabe eines vom Standard (/home/benutzername) abweichenden Home-Verzeichnisses.
-g Gruppennr. /-namen Erlaubt die Vorgabe einer vom Standard (100) abweichenden Gruppennummer.
91
Benutzerverwaltung
-k Verzeichnis
Gibt vor, dass statt /etc/skel das angegebene Verzeichnis als Vorlage verwendet werden soll.
Sollen keine Voreinstellungsdateien kopiert werden, lässt man -m weg; das Home-Verzeichnis ist dann explizit per -d vorzugeben. Es gibt eine Reihe weiterer Optionen, die auch den Eingabemöglichkeiten unter YaST entsprechen (Passwort-Ablauf etc.). Weitere Hinweise dazu finden Sie per man useradd oder in der Online-Hilfe von SUSE. Wichtig ist nun, mit möglichst wenig Aufwand mehrere Benutzer anzulegen. Das dazu notwendige verschlüsselte Passwort erhält man per mkpasswd Passwort Kommando, um ein verschlüsseltes Passwort zu erhalten
Dessen Ausgabe sieht dann etwa so aus: EDfoeeWUhPCHU Unter Umständen muss dieses Kommando erst nachinstalliert werden (Paket whois, siehe auch Seite 348). Der Aufruf, um einen Benutzer gleich mit Passwort (in nachfolgendem Fall mit dem gleichen Namen und den Ziffern 123) anzulegen, lautet dann: useradd -m -p $( mkpasswd hans123 ) hans Um mehrere Benutzer anzulegen, ruft man das Kommando über eine Schleife auf: for ben in hans otto helga inge do useradd -m -p $( mkpasswd ${ben}123 ) $ben; done
Die Kommandosequenz legt man vorzugsweise in ein kleines Skript. Statt die Namen einzeln anzuführen, könnte man sie auch mit $( cat liste ) ausgeben. Sind in der Liste Vornamen und Nachnamen enthalten, wäre hier ein Skript mit awk besser, das zuerst einen Benutzernamen kreiert und Vor- und Nachnamen per Option -c als Kommentar mitgibt. An dem Beispiel wird ersichtlich, dass die Kommandozeile und einige einfache Shell-Skripte dem Systemverwalter viel Zeit sparen können. Das nachfolgende kleine Skript geht davon aus, das die neu einzutragenden Benutzer in einer Datei benutzer bereits zeilenweise stehen, und zwar in der Form: Benutzername Vorname Nachname #!/bin/bash cat benutzer | while read name kom1 kom2 do useradd -m -c" $kom1 $kom2" -p $( mkpasswd ${name}123 ) $name echo $name angelegt done
Bild 5-11: Beispiel eines Skripts, um mehrere Benutzer anzulegen
92
5.4 Neue Benutzer anlegen
Um in Skripten das Passwort zu ändern, gibt es seit Version 9.1 auch das Kommando chpasswd, das keine interaktive Eingabe des Passworts verlangt. Mit diesem Kommando kann das Passwort auch unverschlüsselt vorgegeben werden. Die Benutzer müssen bereits einen Account besitzen. Das Kommando erwartet als Eingabe entweder ›benutzername:password‹ über die Standardeingabe oder mit der Option -e Dateiname entsprechend aufbereitete Zeilen in einer Datei.
5.4.4
Passwortverschlüsselung
Linux bietet mehrere Verschlüsselungsmethoden des Passworts an: DES
Dies ist die Standardmethode unter Linux. Allerdings werden auch bei längeren Passwörtern nur acht Zeichen übernommen. Es funktioniert dafür in allen Netzwerkumgebungen.
MD5
Diese Methode lässt auch längere Passwörter zu und ist damit sicherer. Allerdings wird dies nicht von allen Netzwerkprotokollen unterstützt.
Blowfisch
Auch hier werden längere Passwörter verschlüsselt, doch wie bei MD5 können Probleme mit Netzwerkprotokollen auftreten.
Die Passwortverschlüsselung kann pro Benutzer zugeordnet werden: YaST R Sicherheit und Benutzer R Benutzer bearbeiten und anlegen R Expertenmodus
5.4.5
Passwort ändern
Das Passwort ist ein wesentlicher Teil des Linux-Sicherheitskonzeptes. Es verhindert, dass sich ein Fremder unerlaubt unter dem Account eines anderen Benutzers anmeldet. Deshalb sollte jeder Benutzer angehalten werden, sein vorläufig vom Systemverwalter vergebenes Passwort so bald wie möglich zu ändern. Dazu muss er ein sicheres Passwort wählen – d.h. ein Passwort, welches nicht leicht erraten oder durch Probieren ermittelt werden kann. Wählt der Benutzer seinen eigenen Benutzernamen als Passwort oder ein Wort mit weniger als sechs Zeichen, so weist das System ihn darauf hin (Meldung: ›too easy‹). Bleibt der Benutzer jedoch stur und gibt das schwache Passwort erneut ein, so akzeptiert das System auch einfache Passwörter. Ein Passwort sollte mindestens acht Zeichen lang sein und aus einer Kombination von Buchstaben und Sonderzeichen oder Ziffern bestehen. Das Passwort sollte nicht in einem Lexikon oder Wörterbuch zu finden sein und schon gar nicht ein Eigenname sein. Linux (wie alle Unix-Systeme) unterscheidet dabei zwischen Groß- und Kleinbuchstaben, gleich welche Verschlüsselungsart gewählt wurde. 93
Benutzerverwaltung
Vergisst ein Benutzer sein Passwort, kann nur der Systemverwalter ihm mit dem Kommmando passwd Benutzer Kommando, um ein Passwort zu ändern
ein neues Passwort zuweisen. Der Benutzer kann sich dann wieder anmelden, sollte aber als erstes mit dem Kommando passwd das (neue, vorläufige) Passwort ändern. Denken Sie als Systemverwalter daran, dass beim Kommando passwd ohne Angabe eines Benutzers immer das eigene Passwort (also in diesem Fall das von root) geändert wird. Wie oft wurde in Systemverwalterkursen so das Passwort für den Systemverwalter irrtümlich geändert! Vergisst allerdings der Systemverwalter sein Passwort, hilft nur die Installations-CD mit dem Rescue-System oder ein anderes ladbares Linux (z.B. Knoppix). Da es etwas aufwendiger ist, das vergessene Root-Passwort zu ändern, erfahren Sie hierüber mehr im Kapitel 13, Hilfe zur Selbsthilfe.
5.5
Benutzereinstellungen ändern per usermod
Mit dem Kommando usermod werden Account-Einstellungen geändert, die mit useradd oder mit YaST eingerichtet wurden. Das Kommando hat die gleichen Optionen wie useradd. So lässt sich z.B. mit usermod -p verschlüsseltes_Passwort Benutzername Kommando, um Benutzerdaten zu verändern (in /etc/passwd und /etc/shadow)
das Passwort ändern. Dies ist dann nützlich, wenn mehrere Benutzer neue Passwörter erhalten sollen. Es geht schneller, das Passwort muss nicht wiederholt werden, und das Kommando lässt sich in einem Skript verwenden.
5.6
Benutzer löschen per userdel userdel [-r] Benutzername(n) Kommando, um Benutzer zu löschen
94
Es ist ein einfaches und sehr wirksames Kommando. Verwendet man die Option -r, wird – ohne Rückfrage – das Home-Verzeichnis des Benutzers mit sämtlichen Dateien und Unterverzeichnissen gelöscht (hoffentlich haben Sie nicht den Verkehrten erwischt …). Vor dem Löschen wird man deshalb eine aktuelle Sicherung anlegen.
5.7 Neue Gruppen anlegen, ändern, löschen
5.7
Neue Gruppen anlegen, ändern, löschen
Unter der grafischen Oberfläche werden Gruppen ebenfalls über YaST neu angelegt oder geändert. Kontrollzentrum R YaST2 Module R Sicherheit und Benutzer R Gruppen bearbeiten und anlegen
Auf der Einstiegsmaske wird gleich oben ausgewählt, ob man Benutzer- oder Gruppenverwaltung vornehmen möchte.
Bild 5-12: Verwalten von Gruppen über YaST
Statt der vorhandenen Benutzer werden dann die bereits eingerichteten Gruppen angezeigt, d.h. nur jene Gruppen, die für Benutzer vorgesehen sind (ab der Gruppennummer 100). Für eine Reihe spezieller Programme und Dienste – z.B. mail – gibt es neben Benutzernamen auch Gruppennamen. Diese sollten nicht verändern werden. Sie sehen sie nur, wenn Sie sich die /etc/group anzeigen lassen (z.B. per less oder more). Zum Einrichten einer neuen Gruppe klicken Sie auf Hinzufügen und geben den Gruppennamen ein. Über ein Scroll-Feld können Sie all jene Benutzer auswählen, die Mitglied dieser Gruppe sein sollen. Wird ein Gruppenpasswort eingetragen, so müssen die Gruppenmitglieder, bevor sie mit newgrp in die Gruppe wechseln, das Passwort angeben. Bild 5-13: Neue Gruppe einrichten mit YaST
Mit Beenden werden die Änderungen in /etc/group vorgenommen. Die so angelegten Gruppen erhalten standardmäßig fortlaufende Nummern ab 1001 (seit SUSE Linux 9.1, davor ab 500). 95
Benutzerverwaltung
Gleich ob die Neuanlage über YaST oder über Kommandos erfolgt, die /etc/group wird in gleicher Weise verändert. Hier die Ergänzungen der Eingabe von Bild 5-13: users:x:100: support:x:1001:carsten,chr,christine autoren:x:1002:carsten,christine,juergen +:::
Die letzte Zeile kennzeichnet das Ende und dient für automatische Folgebearbeitungen. Für die Eingabe per Kommandozeile oder für Shell-Skripten sind folgende Kommandos für das Anlegen und Ändern für Gruppen vorhanden: groupadd [-g Gruppennummer] Gruppenname Kommando, um Gruppen anzulegen
Fehlt die Option -g, so wird bei der Neuanlage die nächstfolgende Nummer (ab 1001) automatisch vergeben. groupmod [-g Gruppennummer] Gruppenname Kommando, um Gruppen zu ändern
Hier ist es jedoch einfacher, über einen Editor die Datei /etc/group zu bearbeiten.
5.8
Überlegungen zur Benutzerverwaltung
Wie andere administrative Aufgaben verlangt auch die Benutzerverwaltung ein bisschen Planung und Systematik – sobald es über ganz wenige Benutzer hinausgeht. Legen Sie sich deshalb ein Schema für die Vergabe von Benutzernamen (Account-Namen) und Gruppennummer zurecht – angepasst an Ihre Bedürfnisse (bzw. die Ihrer Firma) und an Anzahl und Art Ihrer Benutzer. Dokumentieren Sie dieses Schema! In einer Firma ist es z.B. sinnvoll, auch Blöcke von Benutzernummern für einzelne Abteilungen zu reservieren – 1000–1099 für das Marketing, 2000–2099 für Verwaltung und Einkauf usw. Überlegen Sie sich auch, nach welchem Schema Sie Gruppennummern vergeben möchten. Im Standardfall vergibt SUSE Linux jedem Benutzer die Gruppennummer 100. Dies ist nicht immer sinnvoll. Über die Gruppe lassen sich die Benutzer zusammenfassen, welche auf bestimmte Daten gemeinsam zugreifen dürfen (z.B. die aktuellen Marketingzahlen). Planen Sie bei einer Firma das Nummernschema auf Expansion – es kostet praktisch nichts.
96
Scheidet ein Benutzer aus, so sollte seine Benutzernummer zunächst nicht wieder vergeben werden. So lässt sich später einfacher und eindeutiger in Protokollen
5.9 Kommandos zur Bearbeitung von Benutzern und Gruppen
und Ähnlichem nachvollziehen, welcher Benutzer gemeint ist. Auch sind alte Dateien mit ihrem Zugriffsschutz so vor dem ungewollten Zugriff des neuen Benutzers geschützt, der zufällig die gleiche Benutzernummer erhalten hat. Legen Sie die Musterdateien (Standardeinstellungen) in dem Vorlagenverzeichnis /etc/skel sorgfältig an – dies erspart Ihnen als Systemverwalter später einiges an Zeit und Rückfragen der Benutzer. Werden im Marketing z.B. spezielle Programme eingesetzt, die solche Voreinstellungen benötigen, so legen Sie am besten für das Marketing ein spezielles Musterverzeichnis an, in dem auch diese Voreinstellungsdateien vorhanden sind. Benutzen Sie dann dieses Vorlagenverzeichnis als Muster beim Anlegen neuer Accounts für das Marketing. So wie Benutzerdaten regelmäßig gesichert werden müssen, so müssen auch diese Verwaltungsdaten gesichert werden! Beziehen Sie deshalb das Verzeichnis /etc in Ihre regelmäßige Sicherung ein (siehe hierzu Kapitel 9, Datensicherung). Bringen Sie Ihren Benutzern bei, dass gut gewählte Passwörter und ein verantwortungsvoller Umgang mit Passwörtern zu ihrem eigenen Nutzen sind und dem Schutz der Firma vor Missbrauch dienen. Zeigen Sie ihnen, wie man sichere Passwörter aufbaut und wie man sie sich merken kann – z.B. über einen gut zu merkenden Schlüsselsatz, bei dem man von jedem Wort den ersten und letzten Buchstaben als Teil des Passworts nimmt und noch ein paar Gemeinheiten (Sonderzeichen) gegen das Cracken einwirft. Benutzer sollten private Passwörter und solche für den Gebrauch in der Firma trennen. Das Passwort bei AOL oder T-Online sollte auf keinen Fall das gleiche sein wie das Zugangspasswort in der Firma!1
5.9
Kommandos zur Bearbeitung von Benutzern und Gruppen
Rufen Sie das Kommando man -k user auf, so erhalten Sie eine Liste von Kommandos, die alle etwas mit user (Benutzer) zu tun haben. Neben den grafischen Tools für die Benutzerverwaltung, die Ihnen zu Beginn alles Wissenswerte über die Benutzer aufzeigen, finden Sie auf der Seite 409 eine Tabelle mit Kommandos, die die Benutzerverwaltung betreffen.
5.10 Dateien und Verzeichnisse für die Benutzerverwaltung Verzeichnis/Datei
Erläuterung
$HOME/.bashrc
Benutzer-Voreinstellungsdatei für die interaktive Bash
$HOME/.cshrc
Benutzer-Voreinstellungsdatei für die C-Shell
1. Hierzu finden Sie einen guten Artikel in der Online-Dokumentation von ›selflinux‹ unter file:/usr/share/doc/selflinux/html/passwoerter01.html#d37e69 (nachzuinstallieren von der SUSE-CD oder über Internet [55]).
97
Benutzerverwaltung
Verzeichnis/Datei
Erläuterung
$HOME/.profile
Benutzer-Voreinstellungsdatei für das Login (Korn-Shell und Bash)
/etc/group
Systemdatei für die Gruppenzuordnung
/etc/passwd
Systemdatei für die Benutzerverwaltung
/etc/profile
Systemdatei für Voreinstellungen der Benutzer (Variable, Zugriffsrechte etc.)
/etc/shadow
Systemdatei für die Passwörter der Benutzer
/etc/skel
Musterverzeichnis für neue Benutzer
5.11 Rückblick in Stichworten Die Stichwörter zu dem Thema Benutzer, die in der Einleitung unter dem Wissensbaum für Systemverwalter aufgeführt waren, sollten Ihnen nun die entsprechenden Abläufe und Zusammenhänge in Erinnerung rufen:
98
Kapitel 6 Umgang mit Dateisystemen
Dateisysteme sind die Hüter der Daten. Die richtige Wahl aus den zahlreichen Möglichkeiten, das gezielte Aufsetzen und die korrekte Bedienung stellen deshalb eine wesentliche Komponente der Systemadministration dar – in der Regel keine allzuschwierige. 6.1
Linux-Dateisysteme
6.2
Wichtige Dateisystemoperationen
6.3
Der Linux-Dateibaum
6.4
Dateiverwaltung mit grafischen Tools
6.5
Unterschiedliche Dateitypen und Zugriffsrechte
6.6
Allgemeine Hinweise zu Dateien
6.7
Wissenszweig Dateiverwaltung
99
Umgang mit Dateisystemen
6.1
Linux-Dateisysteme
Informationen werden außerhalb des Hauptspeichers in Dateien gehalten. Meistens liegen diese Dateien dann in (oder auf) Dateisystemen. Dateisysteme sind also die Container für Informationen bzw. Dateien. Linux unterstützt ein recht großes Spektrum unterschiedlicher Dateisysteme. Dies hat mehrere Gründe: ❐
Historisch bedingt Dateisysteme entwickeln sich weiter. Mit steigenden Anforderungen hinsichtlich Plattengröße, Performance und Datensicherheit entstehen neue Dateisysteme oder neue Versionen bereits unterstützter Systeme. Eines der älteren, noch recht schlichten und heute im Normalbetrieb nicht mehr geeigneten Dateisysteme ist MINIX. Das Standarddateisystem für Linux ist ext21 (bereits die zweite Version) oder ext3 – ein um Journaling erweitertes ext2. Die stärkste Weiterentwicklung erfährt aktuell das recht funktionsreiche, robuste und leistungsstarke Reiser-Dateisystem (ReiserFS).
❐
Unterschiedliche Anforderungen Moderne Dateisysteme sind auf spezielle Ziele hin optimiert. So kann das Swap-Dateisystem extrem einfach strukturiert sein – es dient dem einzigen Ziel, Speicherbereiche des Betriebssystems auszulagern. Dateisysteme wie ext2/ext3, ReiserFS, XFS oder JFS hingegen sind auf guten Durchsatz, eine große Anzahl von Dateien und hohe Robustheit gegen Ausfälle hin optimiert – jedes mit einem etwas anderen Schwerpunkt. So hat ext2/ext3 z.B. Performance-Probleme beim Verwalten großer Verzeichnisse (typisch ab etwa 5000 Einträgen), während ReiserFS, XFS und JFS damit deutlich besser umgehen können. Die Tabelle 6-1 auf Seite 104 gibt einen Überblick über die Eigenschaften der wichtigsten Linux-Dateisysteme.
❐
Kompatibilität zu anderen Systemen Linux unterstützt aus Kompatibilitätsgründen eine ganze Reihe fremder Dateisysteme, wenn auch zum Teil nur mit lesendem Zugriff. Sie erlauben ohne großen Aufwand auf die Dateien der Dateisysteme aus anderen Betriebssystemen zuzugreifen – etwa FAT und NTFS aus der Microsoft-Welt, HFS aus der Apple-Macintosh-Welt, HPFS aus IBM OS/2, SYSV von UNIX System V und SCOSystemen, UFS aus den Open-Source-Betriebssystemschwestern OpenBSD, netBSD, FreeBSD sowie üblich unter BSD-Unix und Sun-Solaris. Daneben werden die standardisierten Dateisysteme unterstützt, wie sie auf CDs (ISO 9660) und DVDs (UDF) üblich sind.
100
1. Die Schreibweise der Dateisysteme ist etwas uneinheitlich. So trifft man z.B. sowohl die Schreibweise ›EXT2‹ an als auch ›ext2‹ und ›Ext2‹.
6.1 Linux-Dateisysteme
Grundkomponenten der Dateisysteme Dateisysteme müssen Dateien aufnehmen und auf dem vorgesehenen Datenträgerbereich – zumeist einer Magnetplatte – geordnet ablegen und verwalten. Dazu benutzen sie folgende Grundkomponenten: ❐
Die eigentlichen Datenblöcke der Dateien In ihnen liegen die Dateiinhalte. Die Datei wird dabei in Segmenten (zumeist) fester Größe abgelegt. Diese Segmente ihrerseits werden auf die physikalischen Blöcke des Datenträgers abgebildet. Typische Segmentgrößen (sie werden auch als Blockgrößen bezeichnet) sind 2 kB oder 4 kB.
❐
Dateiinformationen – in der Linux/Unix-Welt als Inodes bezeichnet In ihnen sind Angaben wie der Dateiname, die Dateilänge, das Datum der Dateierstellung, der letzten Änderung und des letzten Zugriffs zu finden, ebenso wem die Datei gehört (als Benutzer- und Gruppennummer) sowie die Zugriffsrechte. Daneben sind – abhängig vom verwendeten Dateisystemtyp – zahlreiche weitere Angaben möglich. Schließlich gehört eine Verweisliste auf die Datenblöcke der Datei dazu.
❐
Verwaltungsinformation zum Dateisystem Hierzu gehören allgemeine Daten zum Dateisystem selbst – etwa von welchem Typ es ist, wie groß es ist, ob es gesperrt ist, wann es zum letzten Mal auf Konsistenz überprüft wurde usw. Auch Informationen, wo noch freie Blöcke zu finden sind und wo die Liste der Inodes liegt, sind Teil dieser Verwaltungsinformation.
Einige der Informationen können redundant (mehrfach) vorhanden sein – typisch Verwaltungsinformationen. Journaling-Dateisysteme Unter Linux werden, wie bei anderen Betriebssystemen auch, bei Operationen auf dem Dateisystem die Daten nicht sofort auf den Datenträger geschrieben, sondern aus Performance-Gründen zunächst im Hauptspeicher gepuffert. So können Daten, die gerade erzeugt wurden, sehr schnell wieder aus dem Hauptspeicher gelesen werden. Auch die Metadaten – Inodes, Superblock, Freiblocklisten und ähnliches – werden so gepuffert. Eine neu angelegte Datei existiert so zunächst (zumindest in Teilen) nur im Hauptspeicher. Beim Schreiben auf die Platte werden die Schreibaufträge zusätzlich in eine Reihenfolge gebracht, welche ein schnelles, zusammenhängendes Schreiben benachbarter Blöcke oder nahe beieinander liegender Blöcke erlaubt. Bei einem Stromausfall oder Systemabsturz kann es dabei zu wesentlichen Inkonsistenzen des Dateisystems kommen, etwa weil mit Daten belegte Blöcke noch nicht in der Bitblock-Liste auf der Platte vermerkt sind oder weil ein Inode noch auf alte Datenblöcke verweist. Beim Einhängen (mount) eines Dateisystems überprüft Linux deshalb zunächst, ob das Dateisystem regulär ausgehängt wurde (per umount). Ist dies nicht der Fall, überprüft Linux über die Filesystem-Check-Funktion (fsck), ob Inkonsistenzen vorhanden sind. Es versucht
101
Umgang mit Dateisystemen
dann (optional) diese zu beheben. Die Prüfung und Behebung kann bei großen Dateisystemen erheblich Zeit kosten – 30 Minuten und mehr sind hier durchaus realistische Zeiten. Bei Server-Systemen, die nach einem Ausfall wieder schnell verfügbar sein müssen, ist dies ausgesprochen problematisch. Hier setzen sogenannte Journaling Filesystems an – Dateisysteme, die über alle Änderungen ab dem letzten konsistenten Stand ein Journal führen.2 Beim Start durchlaufen sie das Journal und führen alle dort aufgeführten (noch nicht vollständig auf den Datenträger geschriebenen) Dateioperationen nun aus. Am Ende der Abarbeitung befindet sich das Dateisystem wieder in einem konsistenten Zustand. Diese Abarbeitung kann, wenn das Journal nicht zu lang ist, sehr schnell erfolgen – in aller Regel innerhalb weniger Sekunden. Ein spezieller Prozess (und das Dateisystem selbst) sorgt dafür, dass das Journal eine bestimmte Größe nicht überschreitet. In diesem Fall werden die Daten eben in der korrekten Reihenfolge auf die Platte geschrieben, das Journal gelöscht und ein neues aufgesetzt. Die Journaldaten selbst werden zunächst auch im Hauptspeicher gehalten und in kürzeren Intervallen als die restlichen Daten auf die Platte geschrieben. Das Journal muss dabei nicht einmal auf demselben Speicher wie das Dateisystem liegen. Es kann z.B. auf einer schnellen, batteriegepufferten RAM-Disk gespeichert sein oder auf einer anderen Platte (Partition) liegen. Nicht alle Dateisysteme erlauben ein solches ausgelagertes Journal. Ein Journaling Filesystem gewährleistet nicht, dass keine Daten bei einem Crash verloren gehen! Jene im Hauptspeicher ohne Plattenkopie sind auch hier weg. Es versucht jedoch zu gewährleisten, dass eine Dateioperation (z.B. das Löschen oder Anlegen einer Datei) vollständig oder gar nicht ausgeführt ist und damit ein konsistenter Stand erreicht wird. Der Fokus der Systeme mit Journaling liegt bisher auf der Konsistenz der Metadaten (Inodes, Belegt-Block-Listen, …). Einige Systeme können neben den Metadaten auch die eigentlichen Datenblöcke mit in die Journal-Funktion einbeziehen. Dies gilt z.B. für das ext3-System, wenn es per mount-Option data=journal eingehängt wird. Dies reduziert jedoch etwas die Performance des Systems. Ein Datenverlust beim Crash ist damit immer noch nicht vollständig ausgeschlossen, aber unwahrscheinlicher. Derzeit werden vier Journaling-Systeme angeboten. Die Dateisysteme haben u.a. unterschiedliche Eigenschaften in Bezug auf Datensicherheit, effizienter Behandlung kleiner Dateien und Behandlung besonders großer Dateien: ❐
102
ext3 ist ein um Journaling erweitertes ext2, erbt damit dessen Stabilität und besticht vor allem durch seine leichte Konvertierbarkeit von und zu ext2. Haben Sie ein existierendes ext2-Dateisystem, so lässt sich dieses unter root mit einem kurzen Lauf von ›tune2fs -j‹, der das Journal erzeugt, in ext3 wandeln. ext3 lässt sich auch als ext2 mounten – dann wird einfach das Journaling ignoriert.
2. Eine gute kurze Charakterisierung der Linux Journaling File Systems finden Sie im Anhang des SUSE-Administrationshandbuches [16], ausführlichere Artikel etwa in der c't [6] und im Linux-Magazin [21,22,23].
6.1 Linux-Dateisysteme
ext3 kann je nach Konfiguration auch die eigentlichen Daten – also nicht nur die Metadaten – in das Journaling aufnehmen, das Dateisystem wird dadurch besonders sicher (aber auch langsamer [22]). ❐
ReiserFS (benannt nach seinem ursprünglichen Entwickler Hans Reiser) bietet eine effiziente Datenhaltung insbesondere auch für viele kleine Dateien, wie sie zum Beispiel im Linux-Basissystem mit seinen vielen kleinen Programmen und Skripten vorkommen. ReiserFS besitzt im Gegensatz zu ext3 (noch) kein Daten-Journaling. Während die anderen Systeme kaum Rechenleistung verbrauchen, kann bei ReiserFS die für das Journaling benötigte Rechenleistung bei massiven Filezugriffen auf mehrere CPU-Prozent anwachsen [22]. Als Nachfolger von ReiserFS steht ein völlig neu geschriebenes Reiser4 [53] in den Startlöchern, das sich unter anderem durch hervorragende Performance auszeichnen soll – allerdings auf Kosten einer deutlich höheren CPU-Belastung.
❐
JFS (Journaling File System) wurde von IBM als Server-Dateisystem für große
Datendurchsätze entwickelt. Es ist noch relativ neu und hat weder seine Performance-Ziele noch seine Zielstabilität richtig erreicht (Stand Mitte 2004). ❐
XFS (Extended File System) stammt von Silicon Graphics (SGI) und ist für die
effiziente Behandlung besonders großer Dateien entwickelt worden. Kleinere nur kurzzeitig benutzte temporäre Dateien werden u.U. gar nicht erst auf die Platte geschrieben, was die Zahl der Plattenzugriffe reduziert.3 Da ext3 auf ext2 basiert, hat es auch dessen heute nicht mehr ganz aktuelle Organisation mit verketteten Listen geerbt. Bei der Suche in Directories werden alle Einträge der Reihe nach durchsucht, was bei großen Directories ineffizient ist. Die anderen Journaling-Systeme benutzen hier eine baumartige Suchstruktur4, die schnelleren Zugriff zu den Einträgen bietet. Tabelle 6-1 auf Seite 104 zeigt die wichtigsten Kenndaten der wesentlichen LinuxDateisysteme. Die Werte für die maximale Dateigröße und maximale Dateisystemgröße widersprechen sich je nach verwendeten Quellen teilweise leider erheblich – die Peta- und Exabyte werden aber für den praktischen Gebrauch allemal reichen. Virtuelle Dateisysteme Linux kennt auch virtuelle Dateisysteme – solche, die gar nicht physikalisch auf einem Datenträger existieren, sondern Daten sind (z.B. im Hauptspeicher), die wie ein eigenständiges Dateisystem behandelt werden. Hierzu gehören z.B. das Prozessdateisystem /proc und die Netzdateisysteme, welche so tun, als seien lokal Dateisysteme und Dateien vorhanden, wobei die Daten in Wirklichkeit aber auf 3. In SUSE 9.1 gibt es einen Fehler im XFS-Treiber, der dazu führt, dass beim Mounten von XFSSystemen ein Segmentation-Fault auftritt. Korrekturen gibt es über die Internetseiten von SUSE. 4. Sogenannte B-Bäume (balancierte Bäume bzw. Bayer-Bäume nach Rudolf Bayer, der sie 1970 entwickelt hat). B-Bäume reorganisieren sich im laufenden Betrieb und erhalten so ihre guten Zugriffszeiten auch nach Lösch- und Einfügeoperationen.
103
104
*
ja
LVM/RAID
–
ja
512 TB–4 PB
4 PB
0,5–4 kB
255
JFS (1.0x)
stabil + performant
Portierung von IBM AIX
große Verzeichn., viele kompatibel mit AIXkleine Dateien JFS
ja
ja
LVM/RAID
ab Version 4
ja
16 TB
1EB
4 kB
255
ReiserFS (3.6)
stark skalierend
sehr große Dateien
ja
LVM/(RAID)
ja
8 EB
8 EB
4 kB
255
XFS (1.0x)
als auch im Programm umgesetzt sein. ** Der Linux-Kernel besitzt in der Regel Restriktionen, welche die reale Größe eines Dateisystems weiter einschränken. In der Kernel-Version 2.4.x sind dies auf 32-Bit-Systemen zumeist 2 TB. Auf 64-Bit-Systemen gilt diese Grenze nicht.
Standarddateisystem setzt Journaling auf unter Linux ext2 auf
Root-Dateisystem
ja
LVM/RAID
optional
ja
2-16 TB
2–16 TB
1, 2, 4, (8) kB
255
ext3
Dateien müssen, soweit es sich nicht um Sparse Files (Dateien mit leeren Blöcken ohne Inhalt) handelt, natürlich immer kleiner als das Dateisystem sein, auf dem sie liegen. Bei Dateien größer als 2 GB muss für eine korrekte Verarbeitung der Large-File-System-Support (in allen aktuellen SUSE-Distributionen enthalten) sowohl im Betriebssystem vorhanden
besondere Merkmale
Root- und BootDateisystem
ja
Quota-System möglich
spezielle Eignung
–
LVM/RAID
Dateifragmente
Unterstützung LVM/SW-RAID
–
Journaling Datenblöcke
2-16 TB
maximale Dateisystemgröße** –
2–16 TB
maximale Dateigröße*
Journaling Metadaten
1, 2, 4, (8) kB
255
ext2
mögliche Blockgrößen
Dateinamenlänge (in Bytes)
Funktion:
Tabelle 6-1: Merkmale der wichtigsten Linux-Dateisysteme
Umgang mit Dateisystemen
6.1 Linux-Dateisysteme
einem anderen Rechner im Netz liegen. Linux unterstützt hier z.B. das Network File System NFS (ursprünglich von Sun entwickelt), mit ncpfs das Novell-NetWareDateisystem, über Samba das SMB bzw. CIFS als Emulation des Microsoft-Netzdateisystems und – sofern das netaltalk-Paket installiert ist – auch das AppleTalkProtokoll für den Zugriff auf freigegebene Dateien auf einem Mac-Betriebssystem. Daneben gibt es noch weitere spezielle Netzdateisysteme wie etwa AFS (Andrew File System) oder InterMezzo. Sie sollen hier nicht weiter behandelt werden. Auch das WebDAV-Dateisystem ist ein Netzdateisystem, welches über das (erweiterte) HTTP-Protokoll gefahren wird. LVM – der Logical Volume Manager In größeren Systemen benötigt man häufig Dateisysteme, welche größer als eine physikalische Platte sind. Daneben ergibt sich der Bedarf, Speicherbereiche neu zuzuteilen, zu vergrößern und zu verkleinern, ohne dass dazu das System neu gestartet werden und ohne dass man dazu die Partitionierung aufwendig ändern muss. Dies ermöglicht der seit dem Linux-Kernel 2.4 verfügbare Logical Volume Manager – kurz LVM. Er abstrahiert Speicherbereiche – hier Volumes genannt – von der physikalischen Schicht und erlaubt z.B., dass sich ein Volume und das darauf befindliche Dateisystem über mehrere physikalische Partitionen und Datenträger bzw. Magnetplatten erstreckt. Andererseits lässt sich der vom LVM verwaltete Bereich in zahlreiche kleine Volumes aufteilen, ohne dass man sich dabei mit den Details und den Limitationen von Plattenpartitionen herumschlagen muss. Der Linux-LVM erlaubt zusätzlich in recht transparenter Art und Weise das Spiegeln (Mirroring) von Volumes. Hierbei wird der Inhalt des Volumes automatisch auf ein weiteres System gespiegelt, so dass im Fall eines System- oder Plattenausfalls die Daten in aktueller Form nochmals vorhanden sind. Der LVM hat zwei Abstraktionsstufen und eine eigene (notwendige) Terminologie. In der ersten Stufe fasst er reale physikalische Speichereinheiten wie ganze Platten (mit einer einzigen Partition) oder Partitionen einer Platte – beides wird als Physical Volume (kurz PV) bezeichnet – zu großen logischen (virtuellen) Speicherbereichen zusammen – sogenannte Volume Groups (kurz VG). Einer Volume Group können also mehrere Partitionen und mehrere Platten angehören. Man kann einer Volume Group auch später noch neue Physical Volumes (Partitionen) hinzufügen. Zugleich werden beim Anlegen Speicherblockgrößen festgelegt – sogenannte Extends. Im Standardfall sind dies 4-MB-Einheiten.5 Speicher für ein Dateisystem kann nur aus einem Vielfachen dieser Extends vergeben werden. Eine Volume Group ist damit eine gewisse Verwaltungseinheit mit eigenem Namen unter dem LVM. LVM 1.05 erlaubt bis zu 99 solcher Volume Groups. 5. Möchte man sehr große Speichereinheiten handhaben, sollte man die Extend-Größe heraufsetzen, da im LVM 1.x lediglich 65 536 Extends verwaltet werden können und so der maximal verwaltbare Speicher bei 4-MB-Extends also auf 256 GB beschränkt ist.
105
Umgang mit Dateisystemen
Aus einer Volume Group kann der Speicher nun an virtuelle Partitionen vergeben werden – hier Logical Volumes genannt (oder kurz LV). Die Größe ist jeweils ein Vielfaches der Extend-Größe. Auf diesen Logical Volumes schließlich legt man das eigentliche Dateisystem an – z.B. ein ext2- oder ein ReiserFS-Dateisystem. Mit LVM 1.05 sind bis zu 256 solcher Logical Volumes pro Volume Group möglich – also z.B. sehr viel mehr als Partitionen bei der normalen Plattenpartitionierung.6 Auch können sich nun virtuelle Partitionen (Logical Volumes) über mehrere Platten erstrecken. Man kann sogar ein Striping einsetzen, bei dem explizit die Blöcke eines Logical Volumes stückweise in Stripes (Streifen) über mehrere Platten verteilt werden, um durch parallele Zugriffe eine höhere Performance für ein hier liegendes Dateisystem zu erreichen. Das Logical Volume kann nun wie eine Plattenpartition dazu genutzt werden, um darauf ein Dateisystem anzulegen oder um – wie bei Datenbanken (z.B. Oracle) üblich – der Datenbank einen Speicherbereich für direkte (raw) Blockzugriffe zur Verfügung zu stellen. Wird der Platz auf einem Logical Volume zu klein, so kann man ihm im laufenden Betrieb aus dem noch verfügbaren Speicherpool der gleichen Volume Group weitere Extends zuweisen, ohne dass dazu das System heruntergefahren werden muss oder eine Neupartitionierung notwendig ist. Man kann aber auch ein Logical Volume verkleinern – falls noch nicht der ganze Platz im Dateisystem vergeben ist – und den frei gewordenen Platz einem anderen Logical Volume der gleichen Volume Group zuteilen. Ebenso lassen sich weitere Physical Volumes (z.B. neue Platten) in die Volume Group aufnehmen und mit deren Extends der Platz auf den Logical Volumes vergrößern. Man erhält damit eine große Flexibilität beim Speichermanagement. LVM besitzt dabei Werkzeuge, um die Daten eines Logical Volumes zur Laufzeit und transparent für die laufenden Anwendungen zur verschieben und so z.B. eine Platte frei zu bekommen, damit sie dann einer anderen Volume Group zugeteilt oder das Laufwerk ausgetauscht werden kann. Da das Vergrößern und Verkleinern von Logical Volumes auch Eingriffe in das darauf befindliche Dateisystem bedingt, muss das Dateisystem auf eine entsprechende Zusammenarbeit mit dem LVM vorbereitet sein. So erfordert eine Veränderung bei z.B. ext2/etx3 einen Neustart des Systems, während ReiserFS und XFS dies im laufenden Betrieb durchführen können. Ein zusätzliche Funktion des Linux-LVMs sind sogenannte Snapshots. Sie benutzt man zur konsistenten Sicherung eines Dateisystems, ohne dass dieses dazu angehalten werden muss. Dabei wird das Dateisystem kurzfristig eingefroren, um einen konsistenten Stand zu erreichen. Nun kann die Sicherung auf Band oder auf einen anderen Speicherbereich beginnen und das Dateisystem weiter laufen. Alle nun erfolgenden Änderungen an dem Dateisystem werden nun vorübergehend nicht mehr in das Dateisystem selbst geschrieben, sondern in einen dafür bereitgestellten Snapshot-Bereich (ein Logical Volume). Ist die Sicherung des ursprüng106
6. Die Gesamtzahl aller Logical Volumes in allen Volume Groups ist jedoch (bei LVM 1.x) auf 256 beschränkt.
6.1 Linux-Dateisysteme
lichen Volumes abgeschlossen, so erfolgt der zweite Schritt des Snapshots. Nun überträgt das System die Änderungen aus dem Snapshot-Bereich wieder in das ursprüngliche Dateisystem, während zugleich (oder danach) auch das SnapshotVolume gesichert werden kann. Anschließend wird das Snapshot-Volume wieder freigegeben. Zu beachten ist, dass mit dieser Technik ein konsistenter Stand des Dateisystems gesichert werden kann; zum Snapshot-Zeitpunkt müssen die Daten auf dem Dateisystem jedoch nicht unbedingt aus Sicht der darauf arbeitenden Anwendungen konsistent sein. Um dies zu erreichen, muss man unter Umständen die darauf arbeitenden Anwendungen zuvor herunterfahren oder ihnen den Befehl geben, einen konsistenten Datenzustand herzustellen. Für weitere Details zu Logical Volumes und deren Einrichtung sei auf A. Lewis: LVM Howto www.tldp./HOWTO/LVM-HOWTO/ und [6] verwiesen. Auch YaST unterstützt bei der Systeminstallation sowie beim Partitionieren neuer Platten das Anlegen von Logical Volumes. Software-RAID RAID steht für Redundant Array of Inexpensive (Independent) Disks. Hierbei wer-
den mehrere Platten zusammengeschaltet, um damit eine höhere Performance durch parallele Zugriffe, eine höhere Sicherheit durch redundante Speicherung oder beides durch eine Kombination zu erzielen. Im Regelfall wird dies durch spezielle Plattencontroller oder ganze Plattensysteme erreicht, die jedoch teuer sind. Alternativ kann die RAID-Funktion auch über Software im Betriebssystem übernommen werden. Linux erlaubt sowohl die Nutzung von RAID-Controllern als auch die Emulation per Software im Kernel. Das Linux-Software-RAID kann in einem der beiden Modi RAID-0 oder RAID-1 betrieben werden. RAID-0 verteilt die Daten über mehrere Platten (minimal 2) und erreicht dabei so-
wohl beim Lesen als auch beim Schreiben eine bessere Performance (fast die doppelte). Zeigt eine der beteiligten Platten jedoch einen Defekt, fällt faktisch das gesamte auf dem RAID-Segment liegende Dateisystem aus. Man arbeitet hier also mit einem höheren Ausfallrisiko. Beim RAID-1-Modus werden die Daten des Dateisystems parallel und redundant auf mehrere Platten geschrieben (zumeist 2). Dies schafft Sicherheit beim Ausfall einer der Platten, da das System diese dann ausblendet und die Daten von den verbleibenden holt und dort weiterarbeitet. Bringt man danach ein Ersatzlaufwerk wieder online, so synchronisiert das RAID-System die Daten von den vorhandenen Systemen (allmählich) wieder auf dieses Laufwerk. Während die Schreibperformance etwas unter RAID-1 leidet, ist die Leseleistung etwas besser als ohne RAID. Für weitere Details zum Thema RAID sei hier auf das Software-RAID-HOWTO verwiesen.
107
Umgang mit Dateisystemen
6.2
Wichtige Dateisystemoperationen
Es gibt – jenseits des normalen Dateizugriffs – eine Reihe von grundlegenden Operationen auf Dateisystemen. Diese Operationen bzw. die sie ausführenden Programme sind dabei notwendigerweise dateisystemspezifisch. Hierzu gehören: ❐
Anlegen (kreieren) eines neuen Dateisystems Dies erfolgt in der Regel bei der Installation. Sollen nachträglich noch Änderungen bei der Partitionierung vorgenommen oder eine zusätzliche Platte eingebaut werden, kann dies über YaST R System R Partitionieren erfolgen. Es ist letztlich das gleiche Programm, das auch bei der Installation die Partitionierung und Zuordnung der Dateisysteme vornimmt. Unter fstabOptionen können die Mountpoints zugeordnet werden. Allerdings wird vor diesem Programm schon beim Aufruf gewarnt. Eine fehlerhafte Eingabe (z.B. falsche Plattenpartition zum Formatieren angegeben) zerstört u.U. bestehende Dateien und Systeme. Manuelles Anlegen von Dateisystemen In seltenen Fällen könnte es notwendig werden, die Dateisysteme manuell anzulegen. Hier sei lediglich auf die Kommandos hingewiesen, die letztlich auch bei der Einrichtung über YaST eingesetzt werden. Dies erfolgt über die verschiedenen mkfs-Programme (make file system). Zumeist können sie ohne viele Angaben aufgerufen werden – lediglich der Datenträgerbereich (die Partition) ist dabei anzugeben. Die meisten weiteren Angaben sind optional und werden durch Standardparameter ersetzt. Zahlreiche optionale Parameter erlauben hier jedoch ein Feintuning, seien es die Anzahl der anzulegenden Inodes, die zu verwendende Blockgröße oder wo die Journaling-Daten liegen sollen. Fast alle Parameter sind dateisystemspezifisch und das allgemeine Kommando mkfs ist nur ein Frontend für die spezifischen Kommandos wie etwa mkfs.ext2 oder mkfs.reiserfs. Vor dem Anlegen eines neuen Dateisystems muss die Magnetplatte (oder ein anderer Datenträger) zuvor formatiert und partitioniert sein. Dies kann mit fdisk, cfdisk, parted oder komfortabler mit YaST erfolgen.
❐
108
Einhängen des Dateisystems in den Dateibaum per mount Erst damit werden die Dateien für normale Operationen zugreifbar.7 Linux prüft dabei, ob das Dateisystem zuletzt per umount regulär abgeschlossen wurde, und kontrolliert ansonsten die Konsistenz des Dateisystems. Die Standard-Partitionen einer Installation werden in der Regel beim Systemstart automatisch gemountet – gesteuert über die Datei /etc/fstab.
7. Einige Programme – z.B. fsck und dd (siehe 9.5.1) – können auch auf nicht eingehängte Dateisysteme zugreifen.
6.2 Wichtige Dateisystemoperationen
❐
Aushängen des Dateisystems per umount Hierbei werden die noch ausstehenden Schreiboperationen abgeschlossen und die noch im Pufferspeicher stehenden Daten auf das Dateisystem geschrieben. Zusätzlich wird geprüft, ob noch geöffnete Dateien vorhanden sind. Schließlich wird das Dateisystem als abgeschlossen markiert und aus dem Dateibaum ausgehängt. Beim Shutdown des Systems erfolgt all dies automatisch.
❐
Konsistenzprüfung des Dateisystems per fsck.xx Für einen sicheren Betrieb ist die Konsistenz – die Korrektheit aller Verwaltungsinformationen, der belegten und freien Datenblöcke – ausgesprochen wichtig. Zu Inkonsistenzen kann es aus zahlreichen Gründen kommen, sei es, dass das Betriebssystem einmal abgestürzt ist oder ein Stromausfall verhindert hat, dass alle Daten korrekt auf das Dateisystem geschrieben wurden. Aber auch einzelne Programmabstürze können (in Ausnahmefällen) zu Fehlern führen, ebenso defekte Blöcke auf dem Datenträger. Die Konsistenz wird deshalb regelmäßig per fsck (file system check) automatisch beim Hochfahren des Rechners überprüft. So führt es nach einem fehlenden (korrekten) umount beim nächsten Systemstart oder vor dem nächsten mount fsck automatisch durch. Bei ext2-Dateisystemen prüft Linux zusätzlich das Dateisystem nach einer vorgegebenen Anzahl von mount-Operationen. Auch dies kann zur Dateisystemhygiene beitragen. Trifft fsck auf Inkonsistenzen – und auch hier gibt es wiederum ein spezifisches fsck für jeden Dateisystemtyp –, so kann es in den meisten Fällen das Problem selbständig beheben. Nur bei schlimmeren Problemen muss der Systemverwalter hier per Hand eingreifen – wie bei Kernel-Panic-Meldungen kann ein manueller fsck unter Hochfahren von failsafe oder über das Rettungssystem (ab Version 9.1) notwendig werden. In ganz prekären Situationen hilft u.U. manuelles Eingreifen über den File-System-Debugger debugfs (unter Linux lässt sich fast alles reparieren).
❐
Spezielle Optimierungen und Korrekturen Für einen Teil der Dateisysteme – z.B. für ext2 – gibt es spezielle Programme, die zusätzliche, selten benötigte Operationen erlauben. So gestattet es z.B. tune2fs, einige Parameter des ext2-Dateisystems, die sonst nur beim Anlegen gesetzt werden, zu verändern, um das Dateisystem für spezielle Aufgaben zu optimieren (tunen). Das Programm debugfs erlaubt gewisse Korrekturen vorzunehmen. Beide Programme setzen jedoch sehr viel Detail-Know-how voraus und die Verwendung von Programmen, die nicht nur auf den jeweiligen Dateisystemtyp abgestimmt sind, sondern auch auf die ganz spezielle Version des Dateisystems (Feinheiten ändern sich hier von Release zu Release). Diese Programme gibt es auch nicht für alle Dateisystemtypen. Daneben stehen spezielle Programme zum Sichern und Wiedereinspielen ganzer Dateisysteme zur Verfügung. Dazu gehören – wieder jeweils dateisystemspezifisch – dump und restore. Für das Reiser-Dateisystem gibt es zusätzlich das Programm resize_reiserfs, welches beim mount erlaubt, die Dateisystemgröße zu ändern.
109
Umgang mit Dateisystemen
6.2.1
Automatisches Mounten beim Hochfahren
Beim Systemstart führt Linux ein automatisches mount der meisten lokalen Dateisysteme durch. Die Information, welche Dateisysteme vorhanden, von welchem Typ sie sind und mit welchen mount-Optionen sie in welches Verzeichnis (Mountpoint) eingehängt werden sollen, liest Linux dabei aus der Datei /etc/fstab. Sie wird bereits bei der Systeminstallation aufgebaut, kann aber vom Administrator angepasst und erweitert werden – z.B. um automatisch auch Dateisysteme anderer Systeme über Netz zu mounten. Die Informationen über Krypto-Dateisysteme befinden sich in der Datei /etc/cryptotab, die ähnlich wie die /etc/fstab aufgebaut ist. /etc/fstab Die Datei /etc/fstab sollte in Linux-Systemen Information über die verschiedenen im Gesamtsystem vorhandenen Dateisysteme enthalten. Die Programme mount, umount, fsck, df und viele andere greifen (nur lesend) auf diese Information zu. Für die Programme fsck, mount und umount ist dabei die Reihenfolge der Einträge relevant. Die Trennung der Felder erfolgt durch sogenannte Whitespaces (Leerzeichen oder Tabulatoren). Eine Zeile gliedert sich in folgende Felder: Gerät Mountpoint fs-type mount-opts fs-dump fs-fsck Dabei bedeuten:
110
Gerät
Name des als Dateisystem zu montierenden Geräteeintrages. Dabei muss es sich in jedem Fall um ein blockorientiertes Gerät handeln.
Mountpoint
Der Name des Verzeichnisses, an dem das Dateisystem in den Dateibaum eingehängt wird.
fs-type
Der Typ des Dateisystems. Der hier angegebene Typ muss natürlich vom Kernel unterstützt werden – unter Umständen dadurch, dass man diesen entsprechend konfiguriert/generiert. In der Regel gehören dazu z.B. auto, ext2, ext3, hfs, hpfs, iso9660, jfs, msdos, nfs, ntfs, proc, reiserfs, smbfs, udf, vfat, xfs. Die jeweils unterstützten Dateisystemtypen findet man in /proc/filesystems. Der Eintrag auto bedeutet hier, dass mount den Dateisystemtyp automatisch ermitteln soll.
mount-opts
Dies sind die Optionen, die beim mount-Vorgang mitgegeben werden. Die zulässigen Angaben hängen vom Dateisystemtyp ab. Siehe dazu die Beschreibung von mount auf Seite 113.
fs-dump
Legt fest, ob dieses Dateisystem bei einer Vollsicherung per dump auch gesichert werden soll. Fehlt dieser Wert oder ist er 0, so wird dieses Dateisystem nicht (per dump) gesichert.
6.2 Wichtige Dateisystemoperationen
fs-fsck
Legt fest, in welcher Reihenfolge beim Booten die Dateisysteme per fsck (sofern notwendig) überprüft werden. Das RootDateisystem sollte hier die Position 1, andere Dateisysteme 2 oder 0 haben. 0 (oder kein Wert) zeigt an, dass hier keine Prüfung erfolgen soll.
Eine /etc/fstab könnte folgenden Inhalt haben: /dev/hda3 /dev/hda8 /dev/hda2
/ /usr /windows/C
ext2 reiserfs vfat
/dev/hda6 devpts proc usbdevfs /dev/dvd /dev/cdrom /dev/fd0
swap /dev/pts /proc /proc/bus/usb /media/dvd /media/cdrom /media/floppy
swap devpts proc usbdevfs auto auto auto
defaults defaults users,gid=users,umask=002,\ iocharset=8859-15 pri=42 mode=0620, gid=5 defaults noauto ro, noauto,user,exec ro, noauto,user,exec noauto,user,sync
1 0
1 2
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
In dem obigen Beispiel liegt die Root-Platte auf dem Gerät /dev/hda3. Sie wird als Dateisystem des Typs ext2 mit Standardwerten in die root ›/‹ eingehängt, während das System auf hda8 im Mountpoint /usr und als ReiserFS montiert wird. Das Dateisystem auf hda2 ist eine Windows-Partition mit einem VFAT32-Dateisystem. hda6 ist der Platz für den Swap-Bereich. Es ist kein Dateisystem und hat deshalb als fsck-Wert 0, d.h., es soll nicht als Dateisystem überprüft werden. Die Dateisysteme auf den CD/DVD-Laufwerken sollen (durch den Eintrag auto) automatisch erkannt und im Standardfall nur zum Lesen (ro = read only) montiert werden. Sie dürfen (ebenso wie die auf dem Floppy-Laufwerk) auch vom Benutzer per mount eingehängt und per umount ausgehängt werden. Der Datenträger im Floppy-Laufwerk wird synchron beschrieben, so dass das Dateisystem auch dann konsistent ist, wenn die Floppy ohne ein explizites sync oder umount ausgeworfen wird – sofern die Schreiboperation abgeschlossen ist. Nur die Root-Platte auf /dev/hda3 wird bei einer Sicherung mit dump berücksichtigt (durch die 1 in der fünften Position). Sie wird auch als erste beim Systemstart per fsck überprüft (Wert 1 in der sechsten Position). Im Linux-Kernel 2.6.x (ab SUSE 9.1) werden aushängbare Geräte (removable media), wie Floppy, CD-ROM, CD-Brenner, DVD etc., nicht mehr manuell gemountet, sondern automatisch. Sobald eine Diskette oder CD eingehängt wird, erfolgt über submount die Zuordnung (›Dateisystemtyp‹ subfs). Auch kann, sofern das Medium nicht durch ein Programm genutzt wird, die Floppy oder CD entfernt werden. Auch hier erfolgt das umount dann automatisch. Die entsprechenden Zeilen in /etc/fstab sehen dann z.B. wie folgt aus: /dev/dvd
/media/dvd subfs \ fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0 /dev/cdrom /media/cdrom subfs \ fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0 /dev/fd0 /media/floppy subfs \ fs=floppyfss,procuid,nodev,nosuid,sync 0 0
111
Umgang mit Dateisystemen
Die Optionen für subfs werden in der Form fs= zugeteilt. Hierbei sind die Namen der Optionen in etwa gleich wie bei mount (siehe auch Seite 113). Im folgendem sind die im Beispiel verwendeten Optionen aufgeführt: cdfss (floppyfss) Sind auf CDs bzw. Floppies die gebräuchlichsten Dateisysteme. Hier kann auto verwendet werden. auto
Automatische Erkennung des Dateisystems.
procuid
Wird aus Sicherheitsgründen verwendet. Das Dateisystem erhält dann die User-ID und Gruppen-ID von dem aufgerufenen Prozess.
nodev
Block- und zeichenorientierte Gerätedateien sollen nicht ausgewertet werden (gleichnamige Option bei mount).
nosuid
Es dürfen keine ›Set-User-Identifikation-(SUID-)Bits‹ gesetzt werden (siehe auch Seite 135).
sync
Alle Daten werden sofort auf das Gerät geschrieben ohne Zwischenpufferung im Hauptspeicher.
Submount bietet dem Anwender einen gewissen Komfort, da nicht mehr darauf geachtet werden muss, eine eingehängte Floppy auch wieder mit umount abzumelden (dies war speziell für Windows-Umsteiger oft ein Stolperstein). Doch für bestimmte Anwendungen könnte ein automatisches Einhängen und Aushängen von Geräten unerwünscht sein. Auch ist die Anzeige der eingehängten Geräte verfälscht, da die mit submount eingetragenen Medien immer als gemountet angezeigt werden. Wer also lieber weiterhin mit mount und umount arbeiten möchte, muss lediglich die Zeilen mit subfs in der /etc/fstab ersetzen. Analog zu unserem Beispiel sind dann folgende Einträge vorzunehmen: /dev/dvd
/media/dvd
/dev/cdrom
/media/cdrom
/dev/fd0
/media/floppy
auto \ ro,noauto,user,exec,isocharset=utf8 0 0 auto \ ro,noauto,user,exec,isocharset=utf8 0 0 auto \ ro,noauto,user,exec,isocharset=utf8 0 0
Unter dem SUSE Linux-Portal finden Sie hierzu noch weitergehende Informationen, speziell auch für Geräte mit Hotplug-Mechanismus wie USB-Sticks.8 USB-Sticks werden bis Version 9.0 über ein Gerät /dev/sd.. (eigentlich reserviert für Platten mit SCSI-Treibern) montiert. Als Mountpoint kann /media/usb-storage ein-
getragen werden. In den Folgeversionen wird – wenn Sie keine Änderungen vornehmen – der Stick automatisch gemountet.
112
8. Siehe portal.suse.com/sdb/de/2004/05/hmeyer_91_revert_from_subfs.html.
6.2 Wichtige Dateisystemoperationen
6.2.2
Manuelles Ein- und Aushängen von Dateisystemen
Bevor ein normaler Dateizugriff auf die Dateien eines Dateisystems möglich ist, muss – wie bereits erwähnt – das Dateisystem per mount eingehängt sein. Dieses mount kann entweder automatisch beim Systemstart erfolgen oder aber explizit über den Aufruf des mount-Kommandos. Letzteres ist zumeist dann notwendig, wenn das Gerät (device) beim Systemstart noch nicht verfügbar war – wie es bei Floppies oder USB-Memory-Sticks oft der Fall ist (Ausnahme: automatisches Mounten über submount ab Version 9.1). Die allgemeine Syntax des mount-Kommandos lautet: mount [Optionen] [–t fstyp] [–o fs-optionen] Gerät [Verzeichnis] Kommando, um Dateisysteme einzuhängen
Das mount-Kommando hängt ein Dateisystem in den Systemdateibaum ein (montiert bzw. mountet das Dateisystem). Das neue Dateisystem befindet sich auf dem Gerät (z.B. /dev/fd0 oder eine Plattenpartition) und das Dateisystem soll in den Mountpoint Verzeichnis (z.B. /media/floppy) eingehängt werden. Der Einhängepunkt Verzeichnis muss bereits existieren. Der Parameter fstyp gibt den Dateisystemtyp des zu montierenden Dateisystems an (z. B. ext2, ext3, reiserfs, vfat). Die mount-Optionen sind dateisystemspezifisch. Das allgemeine mount-Kommando ruft das spezifische mount-Kommando für das Dateisystem auf. Fehlt die Angabe des Dateisystemtyps oder des Mountpoints, so entnimmt das mount-Kommando dies und weitere Angaben aus der Datei /etc/fstab. Auch Dateisysteme, von denen nur gelesen wird, benötigen normalerweise Schreibzugriff, da beim Lesen das System das Datum des letzten Zugriffs auf die Datei neu setzt. Die Option –r vermeidet diese Korrektur. Wird mount ohne Optionen aufgerufen, werden alle montierten Dateisysteme angezeigt. Neue Magnetplatten und andere Datenträger sind vor der ersten Benutzung zu formatieren und mit /etc/mkfs mit einem Dateisystem zu versehen. Dies wird bei der Zuordnung mit YaST R System R Partitionieren automatisch vorgenommen. Da mount ein potentielles Sicherheitsrisiko darstellt, ist es zumeist nur für den Super-User (root) frei anwendbar. Normale Benutzer dürfen mount nur dann ausführen, wenn dies in /etc/fstab für das angegebene Gerät explizit erlaubt ist (siehe Beschreibung auf Seite 115). mount kennt zwei Arten von Optionen: allgemeine und dateisystemspezifische. Die meistbenutzten allgemeinen Optionen sind: 113
Umgang mit Dateisystemen
–a
[--all] Versucht alle in /etc/fstab angegebenen Dateisysteme einzuhängen. Hierbei müssen keine weiteren Parameter angegeben werden. Mit ›–t fstyp‹ kann das Einhängen auf Systeme des Typs fstyp eingeschränkt werden.
–n Unterdrückt, dass das Einhängen in /etc/mtab vermerkt wird. Dies macht z.B. Sinn, wenn in einem Minimalsystem nicht auf /etc geschrieben werden kann (weil dies read only ist). –r
Das Dateisystem soll im Read-only-Modus, d.h. nur zum Lesen, montiert werden.
–t fstype Gibt den Typ des einzuhängenden Dateisystems explizit vor. Dies erspart einerseits das Erraten des Typs durch mount und ist andererseits eine zusätzliche Sicherheit, falls ein falscher Datenträger im Gerät liegt. Die möglichen Werte für fstype sind abhängig davon, welche Dateisysteme vom Kernel unterstützt werden. In der Regel gehören dazu z.B. autofs, ext2, ext3, iso9660, jfs, nfs, ntfs, reiserfs, smbfs, udf, vfat, xfs. mount ruft für das Einhängen hier – sofern vorhanden – spezialisierte mount-Versionen unter /sbin auf (z.B. in /sbin/mount.smbfs für den Typ smbfs). –v
(verbose) Gibt beim Einhängen detaillierte Informationen aus.
–w (write) Hängt das Dateisystem zum Lesen und Schreiben ein. Ein Teil der mount-Optionen ist spezifisch für ein Dateisystem (oft auch für mehrere). Sie werden per ›–o‹ (option) eingeleitet. Einzelne Optionen (hier ohne vorangestelltes ›–‹) werden durch Kommata getrennt (ohne Zwischenräume!): –o
Erlaubt die Angabe weiterer Optionen, die spezifisch für den Typ des zu montierenden Dateisystems sind. Die wichtigsten Optionen (fs-optionen) der einzelnen Typen sind: async
dev exec
noexec nosuid
nouser remount 114
Die Daten können aus Performancegründen asynchron, also eventuell erst zu einem etwas späteren Zeitpunkt, auf das Gerät geschrieben werden. Erlaubt ein Dateisystem in einer Datei ab-/anzulegen. Binärdateien und Skripte (ausführbare Dateien) auf dem eingehängten Dateisystem dürfen ausgeführt werden. Dies stellt potentiell ein Sicherheitsrisiko (wegen Trojanern) dar. Ausführbare/binäre Dateien auf dem Dateisystem dürfen (aus Sicherheitsgründen) nicht ausgeführt werden. SUID- und SGID-Programme auf dem Dateisystem verlieren bei der Ausführung dieses Privileg (siehe hierzu die Beschreibung auf Seite 135). Nur der Super-User darf das Dateisystem einhängen (dies ist für die meisten Geräte der Standard). Hängt ein bereits eingehängtes Dateisystem erneut ein – in der Regel mit geänderten Parametern.
6.2 Wichtige Dateisystemoperationen
ro rw suid
sync user
users
Hängt das System nur zum Lesen (read only) ein. Dies entspricht der allgemeinen Option -r. Hängt das System nur zum Lesen und Schreiben (read write) ein. Dies entspricht der allgemeinen Option -w. Programme auf dem Dateisystem mit dem SUID- oder SGID-Bit dürfen mit diesem Privileg ausgeführt werden (siehe auch nosuid). Alle Daten werden sofort auf das Gerät geschrieben ohne Zwischenpufferung im Hauptspeicher. Jeder Benutzer (nicht nur root) kann das Dateisystem einhängen. Nur der Benutzer, der das Dateisystem eingehängt hat, kann es wieder aushängen. Wird das Kommando nicht vom Super-User ausgeführt, gilt (wenn keine abweichenden Optionen angegeben sind) nodev, noexec, nosuid. Wie user, doch darf auch jeder Benutzer das Dateisystem wieder aushängen.
Daneben gibt es eine größere Anzahl von mount-Optionen, welche spezifisch für das einzuhängende Dateisystem sind. Hierfür sei auf ›info (man) mount‹ verwiesen. Die nachstehenden Beispiele zeigen die unterschiedliche Verwendung von mount: Das folgende Kommando, eingegeben z.B. unter SUSE 9.0 bzw. ohne submount, mount
–t ext2 /dev/fd0 /media/floppy
montiert die Floppy auf /dev/fd0 in das Verzeichnis /media/floppy. Die Floppy wird standardmäßig zum Lesen und Schreiben eingehängt. Wäre es eine DOS-formatierte Floppy, sollte die Option ›–t vfat‹ angegeben werden. Ohne Eingabe von Optionen wird als erstes in der /etc/fstab nach eventuellen Voreinstellungen gesucht, ist hier keine Angabe, würden die Defaulteinstellungen (rw, suid, dev, exec, auto, nouser und async) genommen werden. Mit ›auto‹ wird versucht, den Dateisystemtyp über den Superblock zu erkennen (adfs, bfs, cramfs, ext, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, ntfs, qnx4, reiserfs, romfs, udf, ufs, vxfs, xfs, xiafs könnten erkannt werden)9. Wird das Dateisystem nicht mehr benötigt, muss es mit umount /dev/fd0
oder
umount /media/floppy
wieder aus dem Dateibaum ausgehängt werden. Die Floppy darf vorher (bis zur Version 9.0) – nicht aus dem Laufwerk entfernt werden. Beim ordnungsgemäßen Herunterfahren des Systems werden jedoch alle noch in der /etc/mtab eingetragenen Dateisysteme automatisch ausgehängt.
9.
Mit ›man mount‹ finden Sie u.a. eine Warnung, dass bei automatischer Prüfung des Dateisystemtyps auch ein falsches erkannt werden könnte, welches katastrophale Konsequenzen nach sich ziehen könnte (the probing uses a heuristic, and could recognize the wrong filesystem type, possibly with catastrophic consequences. If your data is valuable, don't ask mount to guess). Also Vorsicht mit -t auto oder gar keiner Angabe.
115
Umgang mit Dateisystemen
Ab der Version 9.1 werden entfernbare Datenträger wie Floppy, CD-Rom, DVD und USB-Memory-Sticks automatisch eingehängt und beim Entfernen automatisch ausgehängt, soweit diese in der /etc/fstab mit submount (subfs) gekennzeichnet sind (siehe auch Seite 111). Das Kommando (ohne Submount-Funktion) mount -t iso9660 –r /dev/cd /media/cdrom hängt eine CD mit dem dort üblichen ISO-9660-Dateisystem im Verzeichnis /media/cdrom als Einhängepunkt (Mountpoint) ein. Das Dateisystem ist als Readonly-System (nur zum Lesen) eingehängt. mount –o ro,nosuid /dev/hda6 /usr/var/pub hängt das Dateisystem auf der Platte (Partition) /dev/hda6 in den Systemdateibaum ein. Als Einhängepunkt wird das Verzeichnis /usr/var/pub verwendet. Alle Dateien, welche sich bisher in /usr/var/pub befanden, werden (solange diese Platte eingehängt ist) durch die Dateien des eingehängten Dateisystems auf dieser Platte überdeckt. Das Dateisystem ist für Schreibzugriffe gesperrt und die SUID- und GUID-Rechte aller Programme des Dateisystems sind deaktiviert. mount –t nfs –o timeout=30,retry,soft Jogyli:/home/chr2 /home/chr2 hängt ein NFS-Dateisystem ein, welches der Rechner Jogyli unter /export/home exportiert hat, und zwar im lokalen Verzeichnis /home/chr2 als Einhängepunkt. Der Timeout für das Einhängen beträgt 30 Sekunden. Gelingt dies nicht, wird es durch retry mehrfach versucht. Durch die Option soft wird der lokale Kernel nicht blockiert, wenn der NFS-Server nicht antwortet. Manuelles Mounten von Krypto-Dateisystemen Beim Mounten von Krypto-Dateisystemen muss man zusätzlich zu den bekannten mount-Optionen noch Loop-Device und Verschlüsselungsverfahren angeben. Den Namen des Loop-Devices, die Art der Verschlüsselung und weitere mount-Optionen finden Sie in der Datei /etc/cryptotab, die ähnlich wie die /etc/fstab aufgebaut ist. Wenn /dev/hda3 als Krypto-Dateisystem angelegt wäre (siehe Seite 34), würde das mount-Kommando für /home mit dem ReiserFS-Dateisystem z.B. wie folgt aussehen: mount -t reiserfs -o rw,loop=/dev/loop0,encryption=twofish256 \ /dev/hda3 /home Das Loop-Device ist hier /dev/loop0 und die Verschlüsselung erfolgt mit dem Algorithmus twofish256. Nach Eingabe des Mount-Kommandos wird das Passwort abgefragt.
116
6.2 Wichtige Dateisystemoperationen
6.2.3
Kommandos über Informationen zum Dateisystem
Wir gehen davon aus, dass Sie über die grundsätzliche Dateibaumstruktur von Linux Bescheid wissen. Alle montierten Dateisysteme sind unter dem jeweiligen Mountpoint-Verzeichnis eingehängt. Für den Anwender ist also zunächst nicht erkennbar, auf welchem Gerät bzw. welcher Platten-Partition sich dieses Verzeichnis befindet. Über verschiedene Kommandos können die eingehängten Dateisysteme angezeigt werden. Mit mount ohne Optionen sind dies die aktuell eingehängten Dateisysteme: # mount /dev/hdb18 on / type reiserfs (rw,acl,user_xattr) proc on /proc type proc (rw) tmpfs on /dev/shm type tmpfs (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) /dev/hdb16 on /boot type ext2 (rw,acl,user_xattr) /dev/hdb17 on /home type reiserfs (rw,acl,user_xattr) /dev/hdc on /media/cdrecorder type subfs (ro,nosuid,nodev,fs=cdfss,procuid,iocharset=utf8) /dev/hdd on /media/cdrom type subfs (ro,nosuid,nodev,fs=cdfss,procuid,iocharset=utf8) /dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,sync,fs=floppyfss,procuid) usbfs on /proc/bus/usb type usbfs (rw) /dev/hdb12 on /mnt type ext3 (rw)
Wie schon erwähnt, sind jedoch die mit submount (subfs) aufgeführten Geräte generell angezeigt, ob eingehängt oder nicht. Sämtliche auf dem Rechner erkannten Dateisysteme werden mit fdisk -l angezeigt. Nachstehend zeigen wir ein Beispiel mit fdisk für einen Testrechner, auf dem verschiedene Betriebssysteme (Windows 2000, Linux 8.2, Linux 9.0 und Linux 9.1) auf den unterschiedlichen Partitionen installiert sind: > fdisk -l Platte /dev/hda: 4304 MByte, 4304240640 Byte 255 Köpfe, 63 Sektoren/Spuren, 523 Zylinder Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes Gerät Boot Start End Blocks Id /dev/hda1 * 1 382 3068383+ 7 /dev/hda2 383 523 1132582+ 5 /dev/hda5 383 523 1132551 b Platte /dev/hdb: 120.0 GByte, 120060444672 Byte 255 Köpfe, 63 Sektoren/Spuren, 14596 Zylinder Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes Gerät Boot Start End Blocks Id /dev/hdb1 1 9 72261 c /dev/hdb2 10 2620 20972857+ c …
System HPFS/NTFS Erweiterte W95 FAT32
System W95 FAT32 (LBA) W95 FAT32 (LBA)
Bei fdisk wird allerdings nicht der Dateisystemtyp mit angezeigt. Um zu sehen, welcher Platz auf den eingehängten Dateisystemen noch vorhanden ist, gibt df -h (human – die Größenangaben wird dann verständlich angezeigt) eine Liste aller montierten Dateisysteme aus. Hier kann man über die Option -T auch den Dateisystemtyp mit anzeigen lassen: 117
Umgang mit Dateisystemen
# df -Th Dateisystem Typ /dev/hdb18 reiserfs tmpfs tmpfs /dev/hdb16 ext2 /dev/hdb17 reiserfs /dev/hdb2 vfat /dev/hda1 ntfs /dev/hdb14 ext2
Größe Benutzt Verf Ben% Eingehängt auf 5,0G 126M 46M
2,4G 16K 5,5M
2,7G 126M 38M
47% / 1% /dev/shm 13% /boot
2,1G 20G 3,0G 2,0G
302M 1,1G 1,5G 323M
1,8G 19G 1,5G 1,6G
15% 6% 51% 17%
/home /windows/E /windows/C /mnt/hdb14_homeli9.0
Unter KDE gibt es analog zu df ein grafisch aufbereitetes Tool: System R Dateisystem R KDiskFree
Bild 6-1: KDiskFree – Anzeige der Dateisysteme
Außer Swap-Bereichen werden alle Dateisysteme aus der /etc/fstab aufgeführt, auch wenn sie nicht eingehängt sind (N/A not available). Eine fast vollständige Liste erhalten Sie mit: System R Überwachung R Infozentrum R Partitionen Auch hier werden nur jene Geräte aufgeführt, die in der /etc/fstab eingetragen sind. Es empfiehlt sich, die Liste unter Bild 6-2 mit KSnapshot (Dienstprogramme R Desktop R KSnapshot) aufzunehmen, auszudrucken und sorgfältig aufzubewahren. Wenn Sie dagegen nicht alle Partitionen in der /etc/fstab eintragen wollen (wie auf speziellen Testrechnern), sollten Sie zusätzlich die Liste aus YaST R System R Partitionieren mit KSnapshot aufnehmen, ausdrucken und gegebenenfalls noch manuell ergänzen. Bei kritischen Systemausfällen müssen Sie als Systemverwalter wissen, auf welchen Platten/Partitionen welche Daten liegen und wie sie montiert bzw. über eine Sicherung restauriert werden können (s. Seite 206). Bei dem Dateisystem ist es dann wichtig zu wissen, um welchen Typ es sich hierbei handelt (s. Seite 113). 118
6.2 Wichtige Dateisystemoperationen
Bild 6-2: Infozentrum – Anzeige der Partitionen
Da die Berechnung der Byte, kB, MB, GB und TB – zumindest ursprünglich – nicht als Zehnerpotenzen erfolgt, gibt diese kleine Tabelle Auskunft über die Größen: Byte
kB 1.024
MB
GB
TB
PB
kB Kilobyte
1
1
MB Megabyte
1
1.048.576
1.024
1
GB Gigabyte
1
1.073.741.824
1.048.576
1.024
1
TB Terabyte
1
1.099.511.627.776
1.073.741.824
1.048.576
1.024
1
PB Petabyte
1
1.125.899.906.842.620
1.099.511.627.776
1.073.741.824
1.048.576
1.024
EB Exabyte
1 1.152.921.504.606.850.000 1.125.899.906.842.620 1.099.511.627.776 1.073.741.824 1.048.576 1.024
1
Plattenhersteller gehen zusehends dazu über, Größen in Zehnerpotenzen anzugeben. Damit enthalten ihre Platten bei gleicher Größenangabe eine geringere Kapazität. Tabelle 6-2 zeigt, wie groß die Mogelpackungen sind. Die auf Seite 30 mit 20 GB angegebene Platte hat 20 x 109 Byte (= 20.000.000.000) anstatt 20 x 230 Byte (= 21.474.836.480), das sind gut 7% weniger als erwartet 10. In der ursprünglich üblichen Angabe in Zweierpotenzen bleiben gut 18,6 GB, der Hersteller hat 1,4 GB gespart. Tabelle 6-2: Größenunterschiede von Platten durch andere Zahlenbasis als Zweierpotenzen
als Zehnerpotenzen
1 kB
210
1024
103
1.000
1 MB
220
1.048.576
106
1.000.000
1 GB
230
1.073.741.824
109
1.000.000.000
1 TB
240
1.099.511.627.776
1012
1.000.000.000.000
10. Laut fdisk genau 20.003.880.960 Byte, aber das reißt es auch nicht heraus.
119
Umgang mit Dateisystemen
6.3
Der Linux-Dateibaum
Wurde im vorigen Abschnitt auf die Wichtigkeit hingewiesen, zu wissen, welche Dateisysteme vorhanden sind, so ist es genauso wichtig, zu wissen, was die einzelnen Verzeichnisse beinhalten. Dieser Abschnitt soll eine Übersicht über die Struktur des Dateisystembaums geben. Um für alle Unix-Derivate eine gewisse Einheitlichkeit zu erreichen, die für Installationspakete wesentlich ist, wurde mit dem sogenannten FHS (Filesystem Hierarchy Standard)11 ein zumindest grober Standard gesetzt: Die FHS-Spezifikation ist Teil der LSB (Linux Standard Base), an die sich auch SUSE Linux hält. Abweichungen ergeben sich aus unterschiedlichen Dateinamen für Konfigurationsdateien und unterschiedlichen Orten, wo diese liegen und wie diese durchlaufen und ausgewertet werden. Legt man eigene Verzeichnisse und Daten an, so empfiehlt es sich, in dem von der FHS-Spezifikation vorgeschlagenen Schema zu bleiben. Man vermeidet damit, dass neu installierte Applikationen eigene Daten überschreiben oder benötigte Verzeichnisse vermissen. Das Schema lässt in der Regel genug Flexibilität für eigene Bedürfnisse. wesentliche Programme/Kommandos (binaries) statische Dateien des Bootloaders Verzeichnis für Geräteeinträge (devices) lokale Konfigurationsdaten (etc) Verzeichnis für Home-Verzeichnisse der Benutzer gemeinsam benutzte Programmodule/Bibliotheken (libraries) Verzeichnis für Mountpoints der aushängbaren Medien (media) leeres Verzeichnis, um Dateisysteme temporär einzuhängen (mount) Verzeichnis für optionale Anwendungen (optional) virtuelles Prozessdateisystem (processes) Home-Verzeichnis des ›Benutzers‹ root Programme zur Systemverwaltung (system administration binaries) Beispielumgebung für Apache Webserver und FTP systemspezifische Informationen (block, bus u.a.) Verzeichnis für temporäre Dateien (temporary) Start der zweiten Hierarchieebene variable Daten (variable)
Bild 6-3: Linux-Dateibaum der ersten Hierarchieebene
6.3.1
Das Root-Verzeichnis ›/‹
Die Wurzel des Gesamtsystemdateibaums ist das Root-Verzeichnis mit dem Namen ›/‹. Darin sind in der Regel nachfolgend aufgeführte Verzeichnisse und Dateien zu finden: bin
120
(binaries) Hierin liegen die wichtigsten Dienstprogramme. Dies sind zumindest die Programme, die das System bereits im Single-UserModus benötigt. Weitere Linux-Programmdateien sind in /usr/bin und
11. Für die genaue FHS-Spezifikation siehe [33].
6.3 Der Linux-Dateibaum
/sbin zu finden. /bin sollte keine weiteren Unterverzeichnisse enthalten. Eine Reihe von Programmen wird entsprechend der FHS explizit in /bin erwartet. Hierzu gehören z.B. cat, chgrp, chmod, chown, cp, date bis hin zu sh, stty, su, sync, true, umount und uname. Einige dieser Dateien dürfen Verweise auf andere Kommandos/Programme sein. So steht unter Linux /bin/sh in der Regel ein Link auf /bin/bash oder unter /bin/vi auf /bin/vim. boot
Hierin sollten alle Dateien liegen, welche für den Bootprozess benötigt werden und die der Kernel benötigt, bis er den User-Modus erreicht. Mögliche Ausnahmen sind bestimmte Konfigurationsdateien. Der zu startende Kernel liegt bei SUSE Linux ebenfalls in /boot. Aus den im Kapitel Installation Seite 29 genannten Gründen wird /boot oft auf eine eigene Partition gelegt.
dev
Im Verzeichnis dev für devices (oder einem seiner Unterverzeichnisse) liegen alle Geräteeinträge (special files, siehe Seite 129).
etc
In diesem Verzeichnis (oder einem Unterverzeichnis) liegen die meisten Systeminformations- und Konfigurationsdateien. Hier können weitere spezifische Unterverzeichnisse mit systemweit geltenden Initialisierungs- oder Konfigurationsdateien liegen. Eine ganze Reihe von Konfigurationsdateien wird hier nach FHS explizit erwartet. Dazu gehören z.B. fstab, group, hosts, inittab, mtab, passwd und profile. Zu den optionalen FHS-Verzeichnissen gehören hier /etc/opt/paketname (für die Anwendungen unter /opt), kde3 und gnome. Das Verzeichnis /etc/sysconfig enthält eine ganze Reihe wichtiger Konfigurationsdateien. So ist in clock z.B. die lokale Zeitzone festgehalten. Art und Nutzung der einzelnen Dateien (z.B. der Datei language) unterscheiden sich aber von Distribution zu Distribution. So ist der StandardWindow-Manager mit einigen Einstellungen bei SUSE z.B. in der Datei displaymanager festgehalten, während RedHat dafür die Datei desktop verwendet. Das Verzeichnis /etc/skel ist ein Prototypverzeichnis. Beim Anlegen eines neuen Benutzers werden hier vorhandene Dateien und Verzeichnisse in das Home-Verzeichnis des Benutzers kopiert. Die meisten der in skel liegenden Dateien sind verdeckte Dateien (mit einem Punkt als erstem Zeichen im Namen).
home
Gibt es auf dem System Benutzerverzeichnisse, so liegen sie per Konvention unter /home/Benutzername.
lib
Das Verzeichnis lib enthält einen Teil der Systembibliotheken (englisch: libraries), genauer: der Shared Libraries. Das sind Bibliotheksmodule, die von mehreren Programmen gemeinsam benutzt werden. Die Aufteilung 121
Umgang mit Dateisystemen
dieser Bibliotheken und indirekt aufgerufenen Programme zwischen /lib und /usr/lib variiert von System zu System. Unter /lib/modules liegen Kernel-Module, welche dynamisch geladen werden können. mnt
Dies ist ein zunächst leeres Verzeichnis, in das man entfernbare Datenträger oder Netzdateisysteme (z.B. NFS-Verzeichnisse) vorübergehend einhängen kann. Bei RedHat wird hier z.B. unter /mnt/floppy die Floppy-Disk und unter /mnt/DVD eine DVD eingehängt. SUSE hängt diese Datenträger stattdessen in entsprechenden Unterverzeichnissen unter /media ein.
opt
Ein Verzeichnis, in dem spezielle Anwendungspakete installiert werden können. Sie liegen dann in der Regel unter /opt/paketname. Beispiele hierfür sind /opt/gnome, /opt/kde3, /opt/mozilla oder /opt/OpenOffice.Org. Der Systemverwalter kann hier zusätzlich in den Verzeichnissen /opt/bin, /opt/doc, /opt/include, /opt/lib, /opt/info und /opt/man für die lokale Installation spezifische Programme und Dokumentationen hinterlegen. Während in /opt per Konvention nur die statischen Teile der Pakete installiert werden (also z.B. die Programme, Bibliotheken, Dokumentationen und Tabellen), werden die variablen Datenbereiche in /var/opt gelegt.
122
proc
Dieses Verzeichnis ist ein Pseudoverzeichnis, d.h. ein vom Systemkern vorgetäuschter Dateibaum, der im Hauptspeicher gehalten wird. Es enthält das Prozessdateisystem, auf dem in jeweils eigenen Dateien Repräsentationen der laufenden Prozesse liegen und über das bestimmte Kernel-Daten zugreifbar sind.
root
Dieses nach FHS optionale Verzeichnis kann als Home-Verzeichnis für den Super-User root verwendet werden.
sbin
Hier befinden sich wichtige Kommandos zur Systemverwaltung, wie z.B. die verschiedenen Varianten von fsck und mkfs. Die meisten dieser Programme sind sogenannte root-only-Kommandos. Das Verzeichnis liegt deshalb zumeist nur im Suchpfad ($PATH) des Systemverwalters, während die normalen Benutzerprogramme in /bin oder /usr /bin liegen und bei Bedarf Verweise auf die Programme in /sbin sind. Weitere Programme dieser Art sind unter /usr/sbin und /usr/local/sbin zu finden. Eines der unter /sbin eingetragenen Programme ist shutdown. Ebenso finden Sie hier auch halt, fdisk, getty, init oder reboot.
tmp
Zahlreiche Programme legen temporäre Dateien an, die nur für die Laufzeit der Programme existieren. Die meisten dieser temporären Dateien werden im Verzeichnis /tmp oder /usr/tmp erzeugt. Stürzt ein solches Programm ab oder wird es abgebrochen, so bleiben eventuell
6.3 Der Linux-Dateibaum
Dateien in /tmp zurück. Man könnte diese beim Systemstart löschen. Programme können nicht davon ausgehen, dass Dateien in /tmp oder /usr/tmp einen Systemneustart überdauern. Solche Daten sollten nach /var/tmp gelegt werden. Unter Linux sind die Zugriffe für das Verzeichnis über das Sticky-Bit in der Regel so gesetzt, dass jeder darin neue Dateien und Verzeichnisse anlegen, aber nur seine eigenen Dateien und Verzeichnisse verändern und löschen kann (siehe Seite 134). usr
Nach dem Root-Verzeichnis (/) ist dies zumeist das größte und wichtigste Verzeichnis mit allen Dateien und Unterverzeichnissen, die zwar zum System gehören, aber nicht zur unmittelbaren Lauffähigkeit des Systems benötigt werden. Hier liegen primär statische Daten, d.h. Programme, Skripten, Bibliotheken, statische Ressourcen und Tabellen. Dieses Verzeichnis ist daher in vernetzten Umgebungen oft exportiert und damit auch anderen Systemen im lokalen Netz zugänglich. Seine Unterverzeichnisse sind nachfolgend im Abschnitt 6.3.2 beschrieben.
var
Dieses Verzeichnis ist für variable, d. h. sich ständig ändernde Daten vorgesehen. In verteilten Rechnerumgebungen werden oft große Teile des usr-Dateisystems über das Netz zur Verfügung gestellt. Um dieses Dateisystem schreibgeschützt exportieren zu können, müssen alle Dateien, die auf der Maschine lokal beschreibbar sein müssen, etwa AccountingInformationen, Spool-Dateien und ähnliche aus diesem Verzeichnis herausgelöst und in das /var-Dateisystem verschoben werden. In der Regel werden die traditionellen Namen aus Gründen der Kompatibilität in Form von Links weiter zur Verfügung gestellt.
Nicht alle der hier aufgeführten Verzeichnisse und Dateien müssen wirklich originäre Dateien sein. Zum Teil werden hier auch Hard-Links oder symbolische Verweise (Links siehe Seite 130) benutzt.
123
Umgang mit Dateisystemen
6.3.2
Verzeichnisse unter /usr
In dem Verzeichnis /usr (zweite Hierarchie – ab Multi-User-Modus) verzweigt sich der Systembaum weiter. Hier liegen die statischen Daten und Programme, die oft in einem lokalen Netz gemeinsam genutzt werden. Die wichtigsten Verzeichnisse sind: bin
Um das Verzeichnis /bin nicht zu groß werden zu lassen, sind weitere Linux-Dienstprogramme in diesem Verzeichnis untergebracht. Alle Programme des XWindow-Systems befinden sich im Unterverzeichnis X11 dieses Verzeichnisses.
games
Hier liegen Spiele (die statischen Teile), sofern man sie installiert hat.
include
Die systemweiten Definitionsdateien (header files) sind hier angelegt. Sie sind durch die Endung .h gekennzeichnet (z.B. stdio.h, math.h). Header-Files, die nur für die Systemgenerierung benötigt werden (z.B. buf.h), liegen in dem Verzeichnis /usr/include/sys.
lib
Dieses Verzeichnis entspricht dem /lib-Verzeichnis in ›/‹. Hierin sind weitere Bibliotheken (Shared Libraries) zu finden. Darüber hinaus umfasst es eine ganze Reihe zusätzlicher Unterverzeichnisse. In ihnen liegen spezielle Module, Tabellen und Hilfsdaten für spezielle Anwendungen, Module wie etwa samba, ssh, der zsh-Shell oder für die Emulation von Windows-APIs über wine.
local
Dieses Verzeichnis sollte Programme und Kommandoprozeduren enthalten, die für die jeweilige lokale Linux-Installation spezifisch sind. Die typische Unterstruktur sieht wie folgt aus: /bin Programme/Kommandos/Skripten /games Spiele, ähnlich wie unter /usr/games /include Include-Dateien für Programmentwicklung /lib analog zu /lib, aber für lokale Zwecke /man Dokumentation (man- und info-Seiten) /sbin spezielle lokale root-only-Programme /share analog zu /usr/share /src lokale Programmquellen Das Verzeichnis /usr/local/bin sollte entsprechend im allgemeinen Suchpfad für Programme ($PATH), z.B. in /etc/profile, gesetzt sein.
sbin 124
Enthält weitere, weniger wichtige Programme für den Super-User (root).
6.3 Der Linux-Dateibaum
share
Hier liegen Verzeichnisse mit statischen Daten, Tabellen und Dokumentationen, die architekturunabhängig sind. Sie müssen in einem lokalen Netz von Linux-Rechnern nur einmal gehalten werden. Hierzu gehören etwa die man- und info-Dateien oder Terminalbeschreibungen. Folgende Verzeichnisse sollten in /usr/share vorhanden sein: man misc
Verzeichnisse mit den Manualseiten verschiedene architekturunabhängige Daten
Weitere optionale Teile können hier sein (je nach Installation): dict doc
games info locale
nls sgml terminfo tmac zoneinfo
Wortlisten für die Programme look und für die Rechtschreibprogramme ispell und aspell Dokumentationen (teilweise in mehreren Sprachen) (z.B. HOWTOs und paketspezifische Dokumentationen /usr/share/doc/..) Spiele Dokumentationsdateien zum info-Kommando sprach- und länderspezifische Informationen, in Unterverzeichnissen liegen Dateien mit den (Fehler-)Meldungen von Programmen/Kommandos in den verschiedenen Landessprachen Verzeichnisse zum National Language Support SGML- und XML-Daten Verzeichnisse mit Beschreibungsdateien für Terminaltypen troff-Makros Tabellen und Konfigurationsdateien für die Zeitzone
Hier können noch weitere applikationsspezifische Daten liegen, etwa für die Pakete groff, perl oder ghostscript. src
Quellprogramme (soweit notwendig und installiert)
tmp
Entspricht weitgehend der Funktion von /tmp für temporäre Dateien.
X11
(optional und nur aus Kompatibilitätsgründen vorhanden) Enthält zumeist symbolischen Link auf /usr/X11R6.
X11R6
(optional) Programme, Daten und Ressource-Dateien (darunter auch X11-Fonts) des X-Window-Systems (Version 11, Release 6). Die wesentlichen Verzeichnisse hier sind: /usr/X11R6/bin /usr/X11R6/lib /usr/X11R6/include /usr/X11R6/man /usr/X11R6/share
mit den X11-Programmen mit den Shared-Libraries mit include-Dateien für Programmentwicklung man-Seiten für X11-Programme und Ressourcen Ressourcen, die shareable sind
Aus Kompatibilitätsgründen zu früheren Versionen gibt es symbolische Links von /usr/bin/X11, /usr/lib/X11 und /usr/include/X11 zu den entsprechenden Verzeichnissen hier.
125
Umgang mit Dateisystemen
6.3.3
Der Verzeichnisbaum in /var
Die Verzeichnisse /usr und /var sind meistens die größten Dateibaumkomponenten unter Unix und Linux – neben den Benutzerverzeichnissen unter /home. Das Verzeichnis /usr enthält überwiegend den statischen Teil der Daten, d.h. Programme, Dokumentationen sowie Tabellen und Konfigurationsdateien. /var enthält den variablen Anteil. Hierzu gehören typischerweise temporäre Dateien (in /var/tmp), die Spool-Dateien sowohl des Printspoolers als auch des cron-Prozesses sowie die Dateien für ein- und ausgehende E-Mail. Besonders wichtig für den SystemverwalBild 6-4: Verzeichnisbaum /var ter sind natürlich die Protokolle, die unter /var/log zu finden sind (siehe auch Seite 467). Im Bild 6-4 sind nur einige der Dateien aufgezeigt. Hier sehen Sie, dass nach einer gewissen Zeit die Dateien mit gzip (Endung .gz) komprimiert und z.T. mit Datum im Namen abgespeichert wurden. Im Unterverzeichnis spool werden u.a. die zeitgesteuerten Aufträge unter cron und atspool abgelegt (siehe auch Seite 241). Diese Verzeichnisse und auch bestimmte Protokolle sind nur für den Systemverwalter einsehbar (siehe Schloss im KDE-Dateimanager). Verzeichnis lost+found Dieses Fundbüro für nicht zuzuordnende Dateien wird nur noch bei ext2-Dateisystemen eingerichtet. Werden bei einem Filecheck ›schwebende‹ Dateien gefunden, die keine Zuordnung zu einem Verzeichnis haben, werden sie in das Bild 6-5: /var/spool Verzeichnis lost+found verschoben und sind dort mit der Inode-Nummer als Name zu finden. Bei Journaling-Filesystemen treten solche Inkonsistenzen nicht mehr auf, deshalb gibt es dort dieses Verzeichnis nicht.
6.4
126
Dateiverwaltung mit grafischen Tools
Das grafische Tool Konqueror kann auch mit Systemverwalterrechten über das Startmenü aufgerufen werden (letztlich erfolgt dies über kdesu siehe auch Seite 239).
6.4 Dateiverwaltung mit grafischen Tools
System R Dateiverwaltung R Konqueror (Systemverwaltermodus) Allerdings sollte dies mit Vorsicht geschehen, zu schnell lassen sich Dateien hier versehentlich verschieben oder umbenennen. Auch ist der Systemverwaltermodus nicht sichtbar zu erkennen. Auch unter Windows könnten viele Fehler vermieden werden, wenn die Administrationsrechte besser eingeschränkt wären und wichtige Dateien nicht versehentlich gelöscht oder in ein falsches Verzeichnis verschoben werden könnten. Wenn Sie den Konqueror als Systemverwalter nutzen, wäre es sicher besser, sich gleich unter root auf einer zusätzlichen grafischen Oberfläche anzumelden (z.B. über ›Benutzer wechseln‹) und dann über den farblich hervorgehobenen Hintergrund immer an den Systemverwaltermodus erinnert zu werden. Sie können über den Konqueror auch die Belegung der Verzeichnisse mit FSVIEW grafisch dargestellt bekommen (einzustellen neben den Aufteilungsmöglichkeiten). Jedes Verzeichnis wird in einem farbigen Kasten dargestellt, der wiederum weitere Verzeichnisse beinhaltet. Klickt man in eines der Verzeichnisse, erhält man von diesem Verzeichnis wiederum die detaillierte Aufteilung bis hin zu den Dateien. Über den Sinn der bunten Darstellung kann man geteilter Meinung sein. Ein weiteres Tool zur grafischen Darstellung von Verzeichnissen ist Filelight (s. Seite 356). Ein du (disk used) zeigt über ein Terminalfenster ebenso die Belegung der Verzeichnisse an. Die Ausgabe kann über Pipe nach Größe sortiert werden. du [-hs] Verzeichnis -h
(human) Die Werte werden mit Größenangabe (K,M,G) angezeigt
-s
(sum) Summenausgabe je Verzeichnis
Hierzu zwei Beispiele (ohne Option -h werden kB angezeigt): /home/chr # du -s /home/* |sort -n 73 /home/juergen 1306 /home/christine 2024 /home/carsten 436697 /home/chr
/home/chr # du -sh /home/* 1,3M /home/christine 2,0M /home/carsten 73K /home/juergen 427M /home/chr
127
Umgang mit Dateisystemen
6.5
Unterschiedliche Dateitypen und Zugriffsrechte
Damit die Daten auf dem System und die der einzelnen Benutzer auch vor fremdem Zugriff geschützt werden, hier das Wesentliche über die Zugriffsrechte. Unter Linux/Unix gilt eine einheitliche Zugriffsregelung, gleich ob es sich hierbei um Dateien, Verzeichnisse, Geräte, symbolische Links oder named pipes handelt. Doch wirken sich die Rechte z.T. unterschiedlich aus. Die Zugriffsrechte werden vergeben für: Lesen (read), Schreiben (write) und Ausführen (execute) und zwar jeweils für Besitzer (user), Gruppe (group) und den Rest der Welt (other) Nachfolgende Tabelle zeigt ein paar Beispiele hierzu: Tabelle 6-3: Unterschiedliche Dateitypen Zugriffsrechte für Dateityp
Gruppe group
Andere other
Besitzer
Gruppe
Dateiname (Gerätenamen)
Normale Datei
-
rwrwx
r-r-x
r-r-x
root root
root root
/etc/passwd /bin/date
Verzeichnis (directory)
d
rwx
r-x
r-x
root
root
/bin
Gerät blockweise (block oriented)
b
rw-
rw-
---
root
disk
/dev/hdb5
Gerät zeichenweise (character oriented) c
rw-
---
---
root
root
/dev/console
Symbolischer Link
l
rwx
rwx
rwx
root
root
/bin/vi->vim
Named-Pipe
p
rw-
r--
---
root
root
/dev/blog
Normale Dateien
128
Besitzer user
(files) Bestehen aus einem Dateikopf (Inode, siehe Seite 101), der u.a. sämtliche Dateiinformationen enthält, und dem eigentlichen Inhalt, der an einer anderen Stelle auf der Platte blockweise abgelegt ist. Der Inhalt ist eine sequentielle Folge von Bytes. Um was es sich dabei handelt, ist unwichtig (ob Text in ASCII, XML, ob Programmcode im Binär-Format oder gar kein Inhalt). Auch die Endungen einer Datei (Suffix: .txt, .sxc, .c, .pdf u.v.a.) spielen hierbei keine Rolle. Die Zugriffsrechte beziehen sich auf den Inhalt der Datei. Ist eine Datei schreibgeschützt, kann zwar der Inhalt der Datei nicht verändert oder gelöscht werden, doch die Datei selbst
6.5 Unterschiedliche Dateitypen und Zugriffsrechte
kann trotzdem gelöscht werden, wenn im Verzeichnis die Schreiberlaubnis gewährt ist. Denn dort wird beim Löschen einer Datei der Name der Datei in der Verzeichnisliste als gelöscht markiert und die belegten Blöcke werden freigegeben. Wird eine Datei als executable (x) gesetzt, bedeutet dies, die Datei kann als Programm (oder Skript) aufgerufen werden. Angelegt werden Dateien meist über andere Programme (oder durch Umleitung der Standardausgabe) bzw. als leere Datei z.B. mit dem Kommando touch Dateiname. Gelöscht werden sie mit rm. Verzeichnisse
(directories) Es sind ›Dateien‹, in denen ein Verweis auf das übergeordnete Verzeichnis (..), das aktuelle (.) und die enthaltenen Dateien und Unterverzeichnisse eingetragen sind. Die Zugriffsrechte sind maßgebend für die Sicherheit der darin befindlichen Dateien und Unterverzeichnisse. Ein gesetztes Schreibrecht bei Verzeichnissen wirkt sich dahingehend aus, dass Dateien und Unterverzeichnisse in diesem Verzeichnis nicht nur angelegt, sondern auch gelöscht werden können. Ist das ›x‹ bei Verzeichnissen nicht gesetzt, bedeutet dies, dass man z.B. nicht mit cd in das Verzeichnis wechseln kann (damit sind auch keine zusätzlichen Informationen über die darin enthaltenen Dateien z.B. mit ls -l erhältlich). Auch ein Wechsel in Unterverzeichnisse ist damit nicht möglich. Im Konqueror sind diese Ordner mit einem Schloss versehen (siehe Bild 6-5), also zugesperrt für den Betrachter. Angelegt werden Verzeichnisse mit mkdir, gelöscht mit rmdir (bzw. rm -r).
Geräte
(special files/devices) Unter Linux/Unix werden Geräte bezüglich der Zugriffsrechte genauso behandelt wie Dateien oder Verzeichnisse. Wird auf einem Terminal das Schreibrecht entfernt, kann keine Eingabe am Bildschirm erfolgen. Gerätedateien haben allerdings keinen Inhalt. Sie enthalten lediglich einen Verweis auf die Treiber im Kernel. Statt der Größe der Datei sind hier zwei Nummern eingetragen, die sog. major und minor device number. crw------brw-rw----rw-r--r--
1 root root 5, 1 2004-06-28 11:23 /dev/console 1 root disk 3, 69 2004-04-06 15:27 /dev/hdb5 1 root root 995 2004-06-25 16:54 /etc/passwd
129
Umgang mit Dateisystemen
In der obigen Anzeige mit ls -l sehen Sie bei console statt einer Größenangabe ›5, 1‹. Hinter ›5‹ verbirgt sich die Zuordnung zum Treiber, hinter der ›1‹ das erste Terminalfenster. Außerdem ist der Dateityp gekennzeichnet mit ›b‹ oder ›c‹ (block oder character oriented). Bei einem blockorientierten Gerät (z.B. einer Platte) werden die Daten im Hauptspeicher gepuffert und blockweise gelesen/geschrieben. Damit wird eine schnellere Verarbeitung erreicht (siehe Seite 101). Auf Terminals dagegen wird zeichenorientiert zugegriffen. Mehr über Gerätedateien finden Sie auf Seite 148. Symbolische Links Dies sind Verweise auf Verzeichnisse oder Dateien. Benutzt werden symbolische Links oft, wenn durch neue Strukturierung Verzeichnisse umbenannt werden, aber der Zugriff über den alten Namen noch erhalten bleiben soll (wie bei /etc/rc.d in etc/init.d). drwxr-xr-x lrwxrwxrwx
11 root root /etc/init.d 1 root root /etc/rc.d -> init.d
Um beide Bezeichnungen zuzulassen, wird hierfür ein Verweis (link) auf das nunmehr gültige Verzeichnis mit dem bisherigen Namen vorgenommen. Eine Reihe symbolischer Links findet man auch unter den Kommandos, die statt unter /bin unter /usr/bin oder /sbin zu finden sind. Angelegt wird ein symbolischer Link mit dem Kommando ln -s Originaldatei(Ziel) Linkbezeichnung(lokal) Wenn die Zieldatei nicht im gleichen Verzeichnis liegt, sollte als Ziel der absolute Pfadname angegeben werden. Er wird im Dateiinhalt des symbolischen Links gespeichert (Anzahl der Bytes entspricht der Anzahl der Zeichen im Namen). Erfolgt eine Aktion auf den symbolischen Link (im folgenden Beispiel Aufruf des Programms vi), wird stattdessen das genannte Ziel (hier vim) aufgerufen. lrwxrwxrwx 1 root root 3 2004-05-09 11:21/bin/vi-> vim
Die Zugriffsrechte unter vi haben jedoch keine Auswirkung. Bei symbolischen Links sind die Zugriffsrechte der Originaldatei (des Ziels) maßgebend: -rwxr-xr-x
1 root root 1063848 2004-04-06 05:03 vim
Eine Änderung der Zugriffsrechte wirkt sich nicht auf den symbolischen Link aus, sondern auf die Originaldatei.
130
6.5 Unterschiedliche Dateitypen und Zugriffsrechte
Wird die Originaldatei umbenannt oder gelöscht, zeigt der Link ins Leere. Im Konqueror werden falschweisende Links mit einem Schloss, bei ls -l im Terminalfenster mit rot und schwarzer Markierung angezeigt. Hard-Links
Neben dem symbolischen Link gibt es auch noch den sog. hard link. Er wird ebenfalls mit dem Kommando ln (allerdings ohne -s) erstellt: ln Originaldatei(Ziel) Linkbezeichnung(lokal) Die Originaldatei als auch die Linkbezeichnung müssen bei Hard-Links auf derselben Plattenpartition liegen. Bei diesem Link wird lediglich ein zusätzlicher Name für dieselbe Datei vergeben. Es handelt sich bei beiden Namen um denselben Dateiinhalt. Auch die Inode-Nummer bleibt gleich. Sie erkennen lediglich an der Inode-Nummer, dass es noch einen zweiten Namen von dieser Datei gibt. Mit ›ls -i‹ kann die Inode-Nummer angezeigt werden, mit find Startverzeichnis -inum Nummer -mount kann diese auf derselben Partition gefunden werden. Wenn Sie einen der beiden Namen mit ›rm‹ löschen, bleibt die Datei unter dem anderen Namen bestehen (gleich ob es sich ehemals um das Original oder die Linkbezeichnung handelte). Der Hard-Link gilt nicht für Verzeichnisse. Hier kann nur ein symbolischer Link erstellt werden.
Named-Pipes
Sie funktionieren ähnlich wie der Pipe-Mechanismus. Zwei nicht zusammenhängende Prozesse können auf diese Weise Daten austauschen. Der eine Prozess schreibt in die NamedPipe, auch Fifo-Datei (first in first out) genannt, ein anderer Prozess ›holt‹ sich den Inhalt ab. Durch das Lesen wird der Inhalt der Fifo-Datei dann wieder gelöscht. Die Zugriffsrechte wirken sich wie bei einer normalen Datei aus. Angelegt wird eine Named-Pipe mit dem Kommando mkfifo Name Gelöscht werden kann sie mit ›rm‹.
Für alle Dateitypen können die Zugriffsrechte geändert werden (Ausnahme symbolische Links, da erfolgt die Änderung auf der Zieldatei/dem Zielverzeichnis).
131
Umgang mit Dateisystemen
Die nachstehende Tabelle zeigt Auswirkungen der Lese- (read), Schreib- (write) und Ausführerlaubnis (execute) bei den Dateitypen: Art
normale Datei
Gerät
Verzeichnis
Typ
-
bcp
d
r
darf zum Lesen geöffnet werden
w
darf zum Schreiben geöffnet werden
neue Dateinamen dürfen eingetragen, bestehende entfernt werden
x
Inhalt der Datei darf geladen und ausgeführt werden
Algorithmus zur Auflösung der Pfadnamen darf das Verzeichnis durchsuchen. Mit cd kann man in das Verzeichnis wechseln
6.5.1
bedeutungslos
Verändern von Zugriffsrechten
Das Kommando zum Verändern von Zugriffsrechten ist chmod. Es gibt zwei Modi: 1. Ändern mit Symbolen chmod [-R] [ugoa][+-=][rwx] Namen Kommando, um Zugriffsrechte symbolisch zu ändern
Für Namen stehen ein oder mehrere Datei-, Geräte- oder Verzeichnisnamen. -R
(rekursiv) Änderung gilt für alle Unterverzeichnisse.
ugoa
(user, group, other, all) Für wen soll die Änderung erfolgen? Hier kann gezielt der Besitzer, die Gruppe, die anderen angegeben werden oder eine Kombination hieraus wie ›go‹ (Gruppe und andere). Wird an dieser Position nichts angegeben oder ›a‹, gilt die Änderung für alle drei (ugo).
+-=
Mit + wird der nachfolgende Wert hinzugenommen, mit - entfernt, mit = der absolute Wert gesetzt.
rwx
(read, write, execute) Der zu setzende Wert für Lese-, Schreib- und Ausführerlaubnis.
Hier ein Beispiel, um die Rechte im Verzeichnis so zu setzen, dass weder die Gruppe noch andere Schreibrechte haben. Die Gruppe selbst darf aber lesen und hineingehen, andere dürfen nicht lesen, aber auf ein eventuelles Unterverzeichnis wechseln, dessen Name sie dann kennen müssten:
132
> chmod o-r /home/chr > chmod go-w /home/chr > ll -d /home/chr drwxr-x--x 42 chr users 2888 2004-07-29 10:14 /home/chr
6.5 Unterschiedliche Dateitypen und Zugriffsrechte
2. Ändern über Oktalzahl Obiges Beispiel lässt sich über eine Oktalzahl kompakter mit einer Zeile ändern: > chmod 751 /home/chr
chmod [-R] Oktalzahl Namen Kommando, um Zugriffsrechte über die Oktalzahl zu ändern
Für Namen stehen ein oder mehrere Datei-, Geräte- oder Verzeichnisnamen. -R
(rekursiv) Änderung gilt für alle Unterverzeichnisse.
OktalzahlSie errechnet sich aus den Werten read (4), write (2) und execute (1). Hierbei wird jeweils für user, group, other die Summe dieser Werte gebildet (also 6 für ›rw-‹). Beispiele zur Errechnung der Oktalzahl: Zugriffsrechte für Besitzer Gruppe Andere user group other
Dateityp
Oktalzahl
Dateiname (Gerätename)
Normale Datei
-
rwrwx
r-r-x
r-r-x
644 755
/etc/passwd /bin/date
Verzeichnis (directory)
d
rwx
r-x
r-x
755
/bin
Gerät blockweise (block oriented)
b
rw-
rw-
---
660
/dev/hdb5
Gerät zeichenweise (character oriented)
c
rw-
---
---
600
/dev/console
Symbolischer Link
l
rwx
rwx
rwx
777
/bin/vi ->vim
Named-Pipe
p
rw-
r--
---
640
/dev/blog
6.5.2
Voreinstellung über umask
Wenn neue Dateien oder Verzeichnisse angelegt werden, wird ein voreingestellter Wert übernommen. Dieser richtet sich danach, ob mit umask (siehe auch /etc/profile Seite 82) eine Maske vorgegeben wurde. Mit umask kann auch in Shell-Skripten bestimmt werden, mit welchen Zugriffsrechten Dateien und Verzeichnisse während der Ausführung des Programms neu angelegt werden. Vereinfacht kann man sagen, dass der mit umask mitgegebene Wert von den Defaultwerten der Bash für Neuanlagen (Verzeichnis 777, Datei 666) abgezogen wird. Bei einer Vorgabe von umask 022 ergibt sich folgende Rechnung: 133
Umgang mit Dateisystemen
Zugriffsrechte für Besitzer user
Gruppe group
Andere other
Default-Zugriffswerte für ein Verzeichnis Vorgabewert mit unmask (Minuswert)
rwx
rwx
rwx
Zugriffsrechte für das neuangelegte Verzeichnis
rwx
r-x
r-x
Default-Zugriffswerte für eine Datei Vorgabewert mit unmask
rw-
rw-
rw-
Zugriffsrechte für die neuangelegte Datei
rw-
Oktalzahl 777
-022 755 666
-022 r--
r--
644
Wer den Vorgang exakt nachvollziehen möchte, muss sich mit der Zahlendarstellung im Binärsystem auseinandersetzen. Hinweise hierzu finden Sie auch auf Seite 262. Wird z. B. mit umask 037 gesetzt, würde sich bei der vereinfachten Form ja ein Minuswert bei Dateien ergeben. Hier deshalb die genaue Erklärung. Berechnung für umask 037 Neuanlegen einer Datei Default-Zugriffsrechte:
0 3 7 000 011 111
Neuanlegen eines Verzeichnisses Default-Zugriffsrechte:
bitweises NICHT 111 100 000 7 4 0
110 110 110 6 6 6 bitweises UND Ermittelte Zugriffsrechte
110 100 000 6 4 0
111 111 111 7 7 7 bitweises UND
symbolisch: rw- r-- ---
111 100 000 7 4 0
symbolisch: rwx r-- ---
Bild 6-6: Beispiel für die Berechnung von umask
Man erhält also die aktuellen Zugriffsrechte, indem man diejenigen Bitpositionen der Default-Zugriffsrechte auf ›0‹ setzt, die in der umask eine ›1‹ haben.
6.5.3
Sonderrechte durch das Sticky-Bit
Neben den bisher kennengelernten Zugriffsrechten gibt es noch Steuerungen über Spezialbits. Sehen wir uns hierzu die Zugriffsrechte von /tmp an: chr@Jogyli:~> ll -d /tmp drwxrwxrwt 80 root root 3232 2004-06-29 22:30 /tmp
134
Unter other ist hier rwt eingetragen. Das ›t‹ kennzeichnet das sog. sticky bit (aus dem Englischen übertragen: klebrig, haftend). Die Rechte des Dateibesitzers haften an der Datei. Obwohl die Schreibrechte im Verzeichnis /tmp für alle gesetzt sind und damit der Weg offen wäre, auch Dateien und Unterverzeichnisse aus dem Verzeichnis zu löschen, wird dies von dem Sticky-Bit verhindert. Hier kann
6.5 Unterschiedliche Dateitypen und Zugriffsrechte
eine Datei oder ein Unterverzeichnis nur vom Besitzer der Datei gelöscht werden (oder natürlich von root). Um das Sticky-Bit zu setzen, gibt man folgendes ein: chmod +t Verzeichnis oder über Oktalzahl (hier mit rwx-Berechtigung für alle) chmod 1777 Verzeichnis
6.5.4
Sonderrechte durch das SUID- und SGID-Bit
Die Bezeichung SUID leitet sich ab von Set User Identification und bedeutet, dass Programme im Namen des Besitzers (user) gestartet werden. SGID ist die Abkürzung von Set Group Identification. Hier werden die Rechte der Gruppe beim Programmstart übergeben. Siehe hierzu auch Seite 233. Gesetzt werden die Sonderrechte für SUID mit: chmod u+s Datei für SGID mit: chmod g+s Datei Auch hier ist eine Änderung über die Oktalzahl möglich: rws r-x r-x ergibt eine Oktalzahl von 4755 (4000 für SUID) rwx rws --- ergibt eine Oktalzahl von 2770 (2000 für SGID)
Hierzu ein kleines Beispiel: chr@Jogyli:~/bin> chmod +s troja chr@Jogyli:~/bin> ll troja -rwsr-sr-x 1 chr users 62 2004-06-30 16:49 troja
6.5.5
Verfeinerte Zugriffsrechte – ACLs
Zuweilen reichen die Standardmöglichkeiten zur Gestaltung der Zugriffsrechte auf Dateien und Verzeichnisse nicht aus, z.B. weil man auch einzelnen Benutzern einer anderen Gruppe Zugriff erlauben möchte. Die Lösung, dafür jeweils spezielle Gruppen zu schaffen, denen dann alle zugriffsberechtigten Benutzer angehören und die Zugriffe über ein entsprechendes Gruppenzugriffsrecht zu geben, stößt hier schnell an die Grenzen. Deshalb wurde die Möglichkeit geschaffen, über sogenannte Access Control Lists (kurz: ACL) feiner detaillierte Zugriffsrechte zu vergeben. Diese ACLs sind Zugriffsberechtigungslisten. Sie ergänzen die durch die Standardzugriffsrechte (Modus-Bits) vorgegebenen Rechte, welche den Zugriff für die Bereiche Besitzer, Gruppe und alle anderen festlegen. Als Rechte können wie bei den Modus-Bits Lesen (r), Schreiben (w) und Ausführen/Durchsuchen (x) vergeben werden, wobei hier nun aber weitere berechtigte Benutzer (users) und/oder Gruppen (groups) angegeben werden können. Auch Rechte für die Gesamtgruppe ›andere Benutzer‹ (others) können gesetzt werden,
135
Umgang mit Dateisystemen
jedoch geht dies bereits ausreichend detailliert mit den Modus-Bits. Eine minimale ACL hat zumindest drei Einträge – je einen für den Besitzer, die Gruppe und alle anderen. Sie leiten sich aus den Modus-Bits der Datei ab. Der Eintrag für alle anderen bezieht sich nicht auf ›alle Benutzer außer dem Dateibesitzer und den Benutzer seiner Gruppe(n)‹, sondern auf alle Benutzer, die nicht in der gesamten ACL aufgeführt sind. Diese Einträge können nicht gelöscht werden. ACLs erlauben drei Arten von Einträgen: ❐
Benutzereintrag. Er definiert die Rechte des angegebenen Benutzers. Dies ist minimal der Dateibesitzer.
❐
Gruppeneintrag. Er definiert die Rechte für die angeführte Gruppe.
❐
Maskeneintrag. Er definiert die maximalen Rechte, die von den Einträgen der beiden anderen Arten benutzt werden können. Er darf in einer ACL nur ein Mal vorkommen. Ist hier kein Schreiben erlaubt, so sind auch alle anderen Schreibrechte unwirksam. Es sind so nur die Rechte gültig (rwx), die sowohl in der Maske als auch in einem individuellen ACL-Eintrag (benannter Benutzer oder benannte Gruppe) gesetzt sind. Diese Maske gilt nicht für die Rechte des Dateibesitzers und die Zugriffsrechte seiner Gruppe.
Eine ACL darf mehrere Benutzer- und Gruppeneinträge haben, jedoch nur einen pro Benutzer oder Gruppe, so dass keine Mehrdeutigkeiten möglich sind. Bei Verzeichnissen (directories) kann zusätzlich eine Standard-ACL (default ACL) vorhanden sein. Sie definiert die Standardzugriffsrechte für alle Dateien (und Verzeichnisse), die darin angelegt werden (und wirkt damit wie umask für die normalen Modus-Bits) und die nicht zugleich eine explizite ACL erhalten. Die DateiACL der neu angelegten Dateien können später individuell verändert werden. Beim normalen ls-Kommando wird das Vorhandensein einer ACL lediglich durch ein nachgestelltes ›+‹ bei den Dateiattributen angezeigt: -rw-r-xr--+ 1 juergen users 672 2004-05-10 12:40 Telefonliste
Das Kommando getfacl zeigt die Details einer ACL zu einer Datei an: chr@Jogyli:~> getfacl Telefonliste # file: Telefonliste # owner: juergen # group: users user::rwuser:carsten:r-x group::r-mask::r-x other::r--
Möchte man auch der Gruppe marketing Lesezugriff auf die Datei Telefonliste geben, so könnte dies mit folgender Angabe geschehen: chr@Jogyli:~> setfacl m g:marketing:rx Telefonliste
136
6.5 Unterschiedliche Dateitypen und Zugriffsrechte
setfacl erlaubt, neue Rechte und berechtigte Benutzer und Gruppen der ACL hinzuzufügen sowie Rechte zu löschen. Die ACL-Einträge können dabei entweder in der Kommandozeile eingegeben oder aus einer Datei gelesen werden. Beim Setzen von ACLs für Verzeichnisse lassen sich diese Rechte rekursiv im gesamten dort beginnenden Dateibaum ändern (Option -R). Benutzer und Gruppen können per Name oder per Nummer angegeben werden. Es ist auch möglich, per setfacl die ACL einer Datei auf eine andere Datei (oder Verzeichnis) zu übertragen (kopieren). Da ACLs Erweiterungen der Dateiinformation (Inodes) benötigen, müssen sie vom jeweils benutzten Dateisystem unterstützt werden. Unter Linux ist dies für die Dateisystemtypen ext2, ext3, ReiserFS, JFS und XFS gegeben. Zum Teil muss dazu beim Anlegen des Dateisystems die Unterstützung von ACLs explizit aktiviert werden – oder später über eine Option in /etc/fstab bzw. beim mount (Option acl). Dies kann partitionsweise erfolgen. Bei JFS und XFS sind ACLs immer aktiviert. ACLs sind auch unter Linux noch relativ neu. Bei SUSE werden sie z.B. seit 8.2 un-
terstützt. Beim Linux-Kernel 2.6 sind sie integraler Bestandteil. Nicht alle Programme können adäquat mit ACLs umgehen. Während beim CopyKommando ›cp –p‹ dafür sorgt, dass beim Kopieren auch die ACLs übernommen werden, und ›mv‹ die ACLs immer erhält, verlieren Dateien beim Arbeiten mit den meisten Editoren ihre ACLs – die Editoren legen zumeist beim Rausschreiben neue Dateien an und benennen die alten Dateien um. Den neuen Dateien fehlt dabei die ACL der alten, es sei denn, diese besteht lediglich aus der Default-ACL des übergeordneten Verzeichnisses. Bei Verwendung von Samba gelten die ACLs auch für den Zugriff von Windows aus und sie können mit den Windows-Tools gesetzt werden.12 Bei Sicherungen sichert aktuell nur das Programm star (ein tar-Clone) die ACLs mit und restauriert sie beim Einspielen wieder.
6.5.6
Besitzer- und Gruppenwechsel
Dateien und Verzeichnisse gehören stets demjenigen, der sie erstellt hat. Beim Einrichten von neuen Benutzern werden die Verzeichnisse in der Regel von root erstellt. Um den Benutzern die Rechte einzuräumen, diese Verzeichnisse auch zu nutzen, wird das Verzeichnis mit all seinen Unterverzeichnissen und Dateien dem Benutzer übergeben (chown). Dies erfolgt letztlich auch beim Einrichten von neuen Benutzern über YaST. Das Kommando chown (change owner) kann gleichzeitig auch die Gruppe mit ändern. Die wesentlichen Optionen des Kommandos sind:
12. Windows NT und neuere Windows-Systeme kennen ein sehr ähnliches ACL-Konzept.
137
Umgang mit Dateisystemen
chown [-Rcv] Benutzername [: Gruppenname] Datei(en)/Verzeichnis(se) Kommando, um Besitzer (und) Gruppe zu ändern
-R
(Rekursiv) Alle Dateien und Unterverzeichnisse werden mit verändert
-c
(changes) Zeigt die geänderten Dateien an.
-v
(verbose) Zeigt alle Aktionen an.
Statt Benutzername und Gruppenname kann wahlweise bei chown auch UID und GID im Kommando angegeben werden. Das Kommando ›chown‹ könnte ein trojanisches Pferd werden, wenn Sie z.B. eine kleine Prozedur schreiben, sie mit SUID-Bit versehen und dann root per chown übergeben. Eine Sicherheitslücke? Hier ist im Programm chown verankert, dass nur root dieses Kommando ausführen darf. Laut Zugriffsrechten sieht es zwar so aus, als ob auch der Benutzer dieses dürfte, doch erhält er beim Versuch eine entsprechende Warnung: chr@Jogyli:~/bin> ll /bin/chown -rwxr-xr-x 1 root root 41414 2004-04-06 03:58 /bin/chown chr@Jogyli:~/bin> chmod +s troja chr@Jogyli:~/bin> ll troja -rwsr-sr-x 1 chr users 62 2004-06-30 16:49 troja chr@Jogyli:~/bin> chown root troja chown: Ändern des Eigentümers von ‚troja‘: Die Operation ist nicht erlaubt
Nur root darf die Kommandos chown und chgrp (s.u.) durchführen. Oft wird das Kommando benötigt, um Dateien von ehemaligen Benutzern an neue Benutzer zu übergeben. Hier wird meist das chown-Kommando in Verbindung mit find genutzt: find / -owner alterBenutzer -exec chown neuerBenutzer {} \; Ein Benutzer ist laut /etc/passwd einer Primärgruppe zugeordnet (in der Regel der Gruppe users). Hier ein Ausschnitt der Datei /etc/group, die alle Gruppen und deren Mitglieder (soweit es nicht die Primärgruppe betrifft) enthält : root:x:0: ... dialout:x:16:chr,christine,juergen,carsten audio:x:17:chr,christine,juergen,carsten ... users:x:100: support:x:1001:carsten,chr,christine +:::
Im obigen Beispiel wurde eine Gruppe support zusätzlich angelegt.
138
Wenn Benutzer Dateien oder Verzeichnisse anlegen, wird die Primärgruppe aus der /etc/passwd verwendet. Um die Zugriffsrechte Arbeitsgruppen zuzuordnen, können weitere Gruppen angelegt werden (hier ist es sicher einfacher, die /etc/ group direkt zu editieren, als über das YaST-Tool Gruppen und deren Mitglieder
6.6 Allgemeine Hinweise zu Dateien
hinzuzufügen (siehe auch Seite 95). Möchte der Benutzer Dateien unter einer anderen Gruppen-ID anlegen als der in der /etc/passwd eingetragenen Gruppe, gibt er das Kommando newgrp Gruppenname oder newgrp Gruppen-ID an. Nachträglich kann auch nur wieder root die Gruppennamen ändern mit chgrp Gruppenname Dateien/Verzeichnisse oder chgrp Gruppen-ID Dateien/Verzeichnisse unabhängig davon, ob der Benutzer der Gruppe angehört oder nicht. > touch grouptest > ll grouptest -rw-r--r-- 1 chr users 0 2004-06-30 19:31 grouptest > chgrp trusted grouptest chgrp: Ändern der Gruppe for “grouptest“: Die Operation ist nicht erlaubt > chgrp support grouptest chgrp: Ändern der Gruppe for “grouptest“: Die Operation ist nicht erlaubt > newgrp support > touch grouptest2 > ll grouptest2 -rw-r--r-- 1 chr support 0 2004-06-30 19:34 grouptest2
6.6
Allgemeine Hinweise zu Dateien
Generell sei noch darauf hingewiesen, dass alle Dateinamen maximal 256 Zeichen haben dürfen. Allerdings sollten Sonderzeichen vermieden werden (empfohlen: A-z a-z 0-9 . - _ ). Zwar erlauben einige Programme (wie OpenOffice) Dateinamen mit Leerzeichen, doch können sie erhebliche Schwierigkeiten verursachen. Auch Umlaute sollten vermieden werden, da bei den unterschiedlichen verwendeten Zeichensätzen, auch im Austausch zwischen Betriebssystemen (Windows, Mac) und zwischen Linux SUSE 9.1 und früheren Versionen, verstümmelte Dateinamen entstehen. Ab der Version SUSE 9.1 wird UTF8 (Unicode Transformation Format) als Zeichensatz eingesetzt. Um Dateien mit Umlauten aus früheren Linux-Versionen auf UTF8 zu konvertieren, gibt es ein spezielles Kommando: convmv13. Informationen über die unterschiedlichen Zeichensätze finden Sie über man charsets. Eine weitere Empfehlung unsererseits lautet, die Dateiendungen (Suffixe), wie sie unter Windows verwendet werden, zu übernehmen (s.S. 141). Hiermit vermeiden Sie evtl. Schwierigkeiten bei einem möglichen Austausch mit anderen Betriebssystemen.
13. Hier verweisen wir auf die man-Page und www.suse.de/˜fabian/suse-cjk/locales.html.
139
Umgang mit Dateisystemen
6.6.1
Dateizuordnungen
Oft sind Sie als Systemverwalter mit Dateien konfrontiert, von denen Sie weder Herkunft noch Inhalt kennen. Das Kommando file versucht hier, so gut es nach bestimmten Kriterien möglich ist, den Inhalt einer Datei zuzuordnen. Mit dem Kommando xxd können hexadezimale Inhalte lesbar dargestellt werden. Auch die Endungen der Dateien geben Ihnen einen Anhaltspunkt, ob Sie die Datei mit einem Editor oder nur mit hierfür geeigneten Programmen öffnen können. Eine Zusammenstellung der häufigsten Endungen finden Sie auf Seite 141. Unter Kontrollzentrum R KDE-Komponenten R Dateizuordnungen finden Sie für bestimmte Suffixe (Endungen) eine Zuordnung zu einem Programm, das beim Öffnen der Datei gestartet werden soll. Über Hinzufügen können Sie hier auch weitere Eintragungen vornehmen oder bei vorheriger Auswahl vorhandener Dateiendungen eine Änderung oder Ergänzung durchführen. Sie können sich alle Suffixe, zu denen Verknüpfungen zu Programmen eingetragen sind, nach Rubriken anzeigen lassen oder nach einer bestimmten Endung suchen. Geben Sie kein Muster an, werden alle Rubriken angezeigt. Auch können Sie nach einer Endung suchen, z.B nach .html. In diesem Fall, ist der Eintrag nach verschiedenen Schreibweisen der Endungen registriert (.htm, .HTM,. html, .HTML). Diese Dateien werden standardmäßig mit dem Konqueror geöffnet. Wollen Sie auch weitere Browser zum Öffnen der htmlDateien zulassen, können Sie weitere Programme hinzufügen. Im KDE stehen Ihnen diese Programme dann über das Kontextmenü (rechte Maustaste) zur Auswahl. Wählen Sie hierzu im linken Teil den Dateityp (html) aus und klicken Sie auf der rechten Seite bei ›Rangfolge ausführender Programme‹ auf ›Hinzufügen‹ (siehe ➀ im Bild 6-7).
140
➌
➊
➋ Bild 6-7: Dateizuordnungen
6.6 Allgemeine Hinweise zu Dateien
Bild 6-8: Zuweisung von weiteren Programmen für Dateitypen
Um Dateiendungen aufzunehmen, die bisher nicht in der Liste der bekannten Typen enthalten sind, wählen Sie im linken Bereich (siehe ➁ im Bild 6-7) ›Hinzufügen‹. Um den dazugehörigen Programmaufruf einzutragen, empfiehlt es sich, vorab über which herauszufinden, unter welchem Verzeichnis das Programm zu finden ist. Über die linke Schaltfläche, neben den Dateiendungen (siehe ➂ im Bild 6-7, dort die Weltkugel), erhalten Sie die Auswahl der möglichen Icons.
6.6.2
Bedeutung häufiger Dateiendungen (Suffixe)
Endung
Bedeutung, Hinweis
Bereich
.ag
(Applix graphic) Grafikdateien über Applix/Anyware erstellt. Formatanweisungen in ASCII gespeichert
Grafik
.au
Audiodateien (Tondateien) unter Linux/Unix
Medien
.aw
Formatierte Textdateien mit Applixware/Anyware, mit Applix Words erstellt
Office-Bereich
.bmp
Bitmaps unter Windows-Systemen (z.B. Bildschirmabzug, Bitmap-basiert)
Grafik
.bz2
Komprimierung bzip2/bunzip2, stärker komprimiert als mit gzip
Datenpflege
.c
Quelltexte für C-Programme
Entwicklung
.cc
Quelltexte für C++-Programme
Entwicklung
.cdr
(Corel draw) Grafikdateien mit Corel Draw erstellt
Grafik
.class
Class-Files von Java
Entwicklung
141
Umgang mit Dateisystemen
142
Endung
Bedeutung, Hinweis
Bereich
.csv
Textdateien, Export u.a. aus Excel oder Mail-Programmen wie Outlook: Trennung der Felder meist mit ›;‹. .csv-Dateien können z.B. in OpenOffice importiert werden. Das Trennzeichen wird für die Spaltenerkennung verwendet.
Office-Bereich
.doc
Formatierte Textdateien meist mit Microsoft Word erstellt
Office-Bereich
.dxf
Austauschformat für AutoCad
Grafik
.dvi
(device independent document) Ausgabedateien Textverarbeitung von Tex/Latex (in PostScript umzuwandeln mit dvips)
.eps
(encapsulated postscript) PostScript-Dateien zum Einbinden in andere Dokumente (am Bildschirm oft nicht sichtbar, erst beim Ausdruck)
Druck
.f/.F
Quelltexte für Fortran-Programme
Entwicklung
.fm
Formatierte Textdateien mit FrameMaker erstellt (leider nicht unter Linux verfügbar)
Textverarbeitung
.gif
(graphic interchange format) Grafiken mit einfacher Auflösung (Zeichnungen) speziell fürs Internet (von Compuserve entwickelt, Bitmap-basiert)
Grafik
.gz
Komprimierung gzip/gunzip
Datenpflege
.h
Header-Files für C-Programme
Entwicklung
.hh
Header-Files für C++-Programme
Entwicklung
.htm (html)
(hyper text markup language) Dateien, die über Browser wie Konqueror, Mozilla u.a. interpretiert werden
Office-Bereich
.java
Quelltexte für Java-Programme
Entwicklung
.jpg .jpeg
(joint photographic experts group) Grafiken mit etwas besserer Auflösung – meist für Fotos, die im Internet dargestellt werden sollen (Bitmap-basiert, komprimiert).
Grafik
.mif
(interchange format) Austauschformat von formatierten Textdateien (z.B. aus FrameMaker)
Textverarbeitung
.mo
Dateien mit sprach-/länderspezifischen Meldungen von Programmen/Kommandos
Systemsteuerung
.o
Objekte (kompiliert)
Entwicklung
6.6 Allgemeine Hinweise zu Dateien
Endung
Bedeutung, Hinweis
Bereich
.pdf
(portable document format) Dateien mit Druckbeschreibungselementen von Adobe. Bessere Komprimierung als ps-Dateien. ps-Dateien können über das Kommando ps2pdf in PDF umgewandelt werden.
Druck
.png
(portable network graphics) Grafikdateien, z.B. unter Linux erstellte Screenshots
Grafik
.ppt
PowerPoint-Dateien. Sie können sowohl Grafiken als auch Text enthalten.
Grafik
.prf
Profil für unison-Dateisynchronisation
Datenpflege
.prn
Unter Windows erstellte Druckdateien
Druck
.ps
(PostScript, Druckersprache für bessere Drucker) Dateien mit Druckbeschreibungselementen von Adobe. Wird die Ausgabe eines Druckauftrages in eine Datei umgeleitet, erhält man eine PostScriptDatei.
Druck
.psd
Über Photoshop erstellte Grafikdateien
Grafik
.ras (.rf)
(rastered file) Bitmaps unter Solaris erstellt
Grafik
.rpm
Paketdateien des RPM-Paketmanagers
Systemverwaltung
.rtf
(rich text format) Austauschformat von formatierten Textdateien (z.B. für Microsoft Word)
Textverarbeitung
.sxd/sdc
OpenOffice, StarCalc StarOffice, Tabellenkalkulation
Office-Bereich
.sxd/sdd
OpenOffice, StarImpress StarOffice, Präsentationen
Office-Bereich
.sxi/sgl
OpenOffice, Global-Doku StarOffice, Berichte mit eingebundenen Dateien
Office-Bereich
.sxw/sdw
OpenOffice, StarWriter StarOffice, formatierte Textdateien in XML
Office-Bereich
.sylk
Austauschformat für Tabellenkalkulationen
Office-Bereich
.tar
Sollte als Kennzeichnung für tar-Archive verwendet werden.
Datenpflege
.tgz
Mit gzip komprimierte tar-Archive
Datenpflege
.tif (.tiff)
(tagged image file format) Grafiken mit sehr guter Auflösung, für Fotos und anspruchsvolle Grafiken (oft über Scannersoftware), die in Dokumente eingebunden werden sollen (Bitmap-basiert)
Grafik
.txt
Texte, die mit Editoren erstellt wurden (z.B. ASCII )
Textverarbeitung
143
Umgang mit Dateisystemen
Endung
Bedeutung, Hinweis
Bereich
.vba
Visual Basic
Entwicklung
.wav
Audiodatei (Tondateien)
Medien
.wk4, .123
(Lotus 123). Tabellenkalkulation aus SmartSuite (allerdings nur unter Windows)
Office-Bereich
.xls
(Excel spreadsheet) Tabellenkalkulationsdateien
Office-Bereich
.xwd
(X window design) Bitmap-Datei unter X -Window erstellt
Grafik
.Z
Eine unter Unix oft verwendete Komprimierung mit compress (uncompress) für große Dateien wie .tarArchive (gzip/zip oder bzip2 bieten hier eine noch bessere Komprimierung)
Datenpflege
.zip
Komprimierung zip/unzip von großen Dateien. Kann auch im Austausch mit anderen Betriebssystemen verwendet werden.
Datenpflege
Eine umfangreiche Sammlung mit Dateiendungen finden Sie im Internet unter bton.com/tb17/formats.html, unter www.whatis.com (dort unter der Überschrift ›Every File Format in the World‹) und unter www.filext.com. Eine Zusammenstellung aller Kommandos die die Dateibearbeitung und -verwaltung betreffen finden Sie auf Seite 410 und alphabetisch sortiert ab Seite 408.
144
6.7 Wissenszweig Dateiverwaltung
6.7
Wissenszweig Dateiverwaltung
145
Kapitel 7 Geräte unter Linux
Wurden im Kapitel 6, ›Umgang mit Dateisystemen‹, schon Platten, Disketten, also Geräte, auf denen Dateien gespeichert werden, behandelt, so wollen wir in diesem Kapitel allgemein auf die Geräte eingehen. Ein paar grundlegende Informationen sollen Ihnen das Zusammenspiel zwischen Hardware und Software verdeutlichen. Unter Linux/Unix sind die Geräte als ›special files‹ bezeichnet, also als besondere Dateien. Besonders vielleicht deshalb, weil sie ohne Inhalt, aber nicht ohne Wert sind, denn sie vermitteln zwischen Kernel, Anwendungssoftware und dem eigentlichem Gerät. 7.1
Eigenschaften von Gerätedateien
7.2
Informationen über Hardware
7.3
Neue Hardware hinzufügen
7.4
Einrichten eines Druckers
7.5
Zusammenfassung in Stichworten
147
Geräte unter Linux
7.1
Eigenschaften von Gerätedateien
Unter SUSE Linux sind im Verzeichnis /dev bereits eine große Anzahl von Gerätedateien eingetragen, auch wenn sie auf dem aktuellen Rechner gar nicht benötigt werden (SUSE 9.0 enthält ca. 4800, SUSE 9.1 weist etwa 7400 Gerätedateien auf). So finden Sie unter hd* Gerätedateien für die maximale Partitionierung der Platten an IDE-Controllern1. Gerätedateien würden über das Kommando mknod angelegt werden. Als Systemverwalter müssen Sie die Gerätedateien also nicht erst erstellen, sondern nur noch zuweisen – und auch dieses erledigt in der Regel der YaST. Die Treiber sind Bestandteil der initrd (siehe Seite 67). Der Kernel lädt aus der initrd nur jene Treiber, die er benötigt. Zusätzlich dazu können dynamisch Module geladen werden. So ein Modul kann z.B. den Ansteuerungscode für ein Zusatzgerät enthalten, dessen spezieller Treiber im Kernel noch nicht enthalten ist. Ein Modul kann zur Laufzeit des Systems nachgeladen und auch wieder entfernt werden; beide Methoden können sowohl automatisch vom Kernel wie auch manuell durch den Systemverwalter durchgeführt werden (siehe ›man modprobe‹ oder die ältere Version insmod). Mit lsmod können Sie sich die eingebundenen Module anzeigen lassen. Um spezielle Funktionen des Kernels für Applikationen zugänglich zu machen, stellt Linux das Konzept der Systemaufrufe (system calls) zur Verfügung. Diese leiten z.B. die Ausgabeanforderung für ein Gerät an den entsprechenden Treiber weiter. I
Benutzerprozesse
Systemaufrufe Kernel Treiber
Hardware
Bild 7-1: Zugriff auf die Hardware über Systemaufrufe (system calls)
Die Kommunikation zwischen Anwendungsprogramm und Gerätetreiber findet dabei über die Dateien im Verzeichnis /dev statt. Beispielsweise steht die Datei /dev/fd0 für das erste Diskettenlaufwerk. Greift ein Anwendungsprogramm nun auf /dev/fd0 zu, werden die gesendeten Daten automatisch an denjenigen Teil des Kernels weitergereicht, der für die Kontrolle dieses Gerätes zuständig ist – den entsprechenden Gerätetreiber (Zuordnung über die Major-Device-Nummer). 148
1. Maximale Partitionen für IDE-Controller: hda1 bis hda63, und ebenso jeweils 63 Einträge für die 16 möglichen Platten (hda bis hdt), siehe hierzu auch Seite 28.
7.1 Eigenschaften von Gerätedateien
Über die Minor-Device-Nummer können neben der Laufwerksnummer auch Zusatzaktionen zugewiesen werden. Bei einem Streamer-Laufwerk sind z.B. zwei Einträge vorhanden, einmal, dass beim Schließen das Band zurückgespult wird (st0), und einmal, dass es nicht zurückgespult wird (nst0 – no rewind s. Bild 7-2). Ein kurzer Ausschnitt von ›ls -l /dev‹ zeigt die wesentlichen Eigenschaften. brw------brw------brw-rw---brw-rw---brw-rw---crw------crw------crw-rw-rwcrw--w---lrwxrwxrwx crw-rw---crw-rw----
1 1 1 1 1 1 1 1 1 1 1 1
chr chr root root root chr chr root root root root root
disk 2, 0 disk 22, 64 disk 3, 64 disk 3, 65 disk 3, 69 tty 136, 1 tty 136, 2 root 1, 3 tty 4, 1 root 3 disk 9,128 disk 9, 0
b – block oriented Treiber-Nr c – character oriented (Major-Device-Nr) l – symbolischer Link
2004-04-06 2004-04-06 2004-04-06 2004-04-06 2004-04-06 2004-07-28 2004-07-28 2004-04-06 2004-07-28 2004-05-09 2004-04-06 2004-04-06
15:27 15:27 15:27 15:27 15:27 16:21 16:30 15:27 13:31 11:09 15:27 15:27
/dev/fd0 Diskette /dev/hdd Platten/dev/hdb bereiche /dev/hdb1 /dev/hdb5 /dev/pts/1 Terminals /dev/pts/2 /dev/null /dev/tty1 /dev/cdrom -> hdd /dev/nst0 no rewind Streamer /dev/st0
(mit rewind)
Zusatztreiber-Nr (Minor-Device-Nr)
Bild 7-2: Gerätedateien (special files) unter /dev (devices)
Als Dateityp wird bei Gerätedateien unterschieden nach b (block oriented) und c (character oriented). Zu den block devices zählen z.B. Disketten, Platten bzw. Plattenpartitionen (im Bild z.B. /dev/fd0, /dev/hdb, /dev/hdb1). Das Lesen und Schreiben erfolgt hier immer blockweise. Bei Veränderungen von Daten werden diese nicht sofort zurückgeschrieben, sondern in einem Cache gehalten (siehe auch die Beschreibung der Dateisysteme Seite 101). Typische zeichenorientierte Geräte (character oriented) sind z.B. Terminals (/dev/tty1, /dev/pts/1). Wird auf der grafischen Oberfläche ein Terminalfenster geöffnet, wird unter /dev/pts dynamisch ein neues ›Pseudo-Terminal‹ angelegt (siehe Bild 7-2, pts/1 und pts/2). Über den Befehl tty kann man feststellen, auf welchem Terminal man aktuell arbeitet. Wie unter ›Verändern von Zugriffsrechten‹ auf Seite 132 schon erwähnt, gibt es für Gerätedateien die gleichen Zugriffsrechte wie für Dateien. Auf einem Terminal bedeutet das Schreibrecht, dass Nachrichten auf dieses Terminal geschrieben (umgeleitet) werden können. Ein passendes Beispiel sind Nachrichten, die sich Benutzer über talk oder write zusenden können. Je nachdem, ob ein Schreibrecht gesetzt ist, kommt die ›Message‹ an oder der Absender erhält eine entsprechende Fehlernachricht. Mit dem Kommando mesg kann der Zustand (letztlich die Zugriffsrechte) auf das aktuelle Terminal abgefragt und gesetzt werden (ließe sich auch mit chmod durchführen). Der Besitzer des Terminals ist der jeweils hierauf angemeldete Benutzer. Auch wenn sich ein entfernter Benutzer über das Netz (z.B. mit ssh s. Seite 278) anmeldet, wird ihm ein Pseudo-Terminal zugewiesen. Das nachfolgende Beispiel zeigt die Veränderung der Zugriffsrechte an einem Terminal und deren Auswirkung.
149
Geräte unter Linux
chr@Jogyli:~> crw--w---- 1 crw--w--w- 1 crw--w---- 1
ll /dev/pts/* chr tty 136, 0 2004-07-11 10:53 /dev/pts/0 chr tty 136, 5 2004-07-11 11:40 /dev/pts/5 carsten tty 136, 7 2004-07-11 12:33 /dev/pts/7
Message from carsten@Jogyli on pts/7 at 12:21 ... hallo, wie war doch gleich die Telefon-Nr. von Jürgen? write carsten findest Du im Rechner-Adressbuch EOF chr@Jogyli:~> mesg n chr@Jogyli:~> ll /dev/pts/5 crw------- 1 chr tty 136, 5 2004-07-11 11:32 /dev/pts/5
Über das Kommando tty erhält man die Terminalkennung. Auf dem Terminal des angesprochenen Benutzers ergibt sich folgender Dialog:
Message from chr@Jogyli on pts/5 at 12:28 findest Du im Rechner-Addressbuch EOF carsten@Jogyli:~> write chr pts/5 write: chr has messages disabled on pts/5 carsten@Jogyli:~>
Eine Sonderregelung gilt für /dev/null, dem umweltfreundlichen Mülleimer, den sich jede Stadtverwaltung wünschen würde. Sie können hier z.B. Tausende von Zeichen umleiten und trotzdem bleibt der Inhalt von /dev/null Null (Nichts, Ende, ›End of File‹ EOF). Falls aus Versehen der Systemverwalter (denn nur root hat Schreibrechte auf das Verzeichnis /dev) das Gerät /dev/null gelöscht oder überschrieben hat, kann dies katastrophale Folgen haben bis hin zu Kernel-Panic. /dev/null lässt sich mit mknod wie folgt wieder anlegen: Jogyli:/home/chr # cd /dev Jogyli:/dev # mknod /dev/null c 1 3 Jogyli:/dev # chmod a+rw /dev/null Jogyli:/dev # ll /dev/null crw-rw-rw- 1 root root 1, 3 2004-04-06 15:27 /dev/null
7.2
Informationen über Hardware
Beim Hochfahren eines Linux-Rechners erfolgt, soweit nicht unterdrückt, ein ›scan on boot‹ (bei Runlevel 2, 3, 5 durch das Init-Spript /etc/init.d/hwscan), wobei automatisch die Gerätedateien zugeordnet werden. Alle auf Ihrem Rechner erkannten Geräte können Sie über YaST R Hardware R Hardware Information testen und anzeigen lassen. Detailinformationen erhalten Sie, wenn Sie auf einen der Einträge klicken.
150
7.3 Neue Hardware hinzufügen
Weitere Informationen zur Hardware finden Sie auch unter dem Infozentrum: System R Überwachung R Infozentrum R Hardware Unter Speicher sehen Sie z.B die aktuelle Auslastung:
Bild 7-3: Speicherauslastung
Auch das Kommando hwinfo --Gerät gibt Detailinformationen aus: Jogyli:/ # hwinfo --cdrom 16: IDE 02.0: 10602 CD-ROM (CD-RW) [Created at block.194] Unique ID: 90A1.dj29G9LhET6 Parent ID: +Y+h.oQTNAcRBrJA SysFS ID: /block/hdc SysFS BusID: 1.0 SysFS Device Link: /devices/pci0000:00/0000:00:11.1/ide1/1.0 Hardware Class: cdrom Model: "PHILIPS CDD5301" Vendor: "PHILIPS" Device: "CDD5301" Revision: "B1.0" Serial ID: "5VO1325DM02313" Driver: "VIA IDE", "ide-cdrom" Device File: /dev/hdc Device Files: /dev/hdc, /dev/by-path/pci-0000:00:11.1-ide-1:0, /dev/by-id/PHILIPS_CDD530_5VO1325DM0231 Device Number: block 22:0 Features: CD-R, CD-RW, DVD Size: 0 sectors a 512 bytes Drive status: no medium Config Status: cfg=yes, avail=yes, need=no, active=unknown Attached to: #11 (IDE interface) Drive Speed: 40
7.3
Neue Hardware hinzufügen
Wird ein neues Gerät an den Rechner angeschlossen, wird dies in der Regel automatisch durch die SUSE-Hardwareerkennung gefunden. Durch ein Informationsfenster wird der Benutzer darauf aufmerksam gemacht und kann die neue Hard-
151
Geräte unter Linux
ware gleich konfigurieren (siehe Bild 7-4 SUSE-Hardwareerkennung). Allerdings darf die Konfiguration nur durch den Systemverwalter erfolgen. Werden für das neue Gerät noch zusätzliche Software oder Module benötigt, wird der Systemverwalter aufgefordert, die entsprechende Installations-CD/DVD einzulegen.
Bild 7-4: SUSE-Hardwareerkennung
Sollte eine Hardware nicht automatisch erkannt oder kein passender Treiber gefunden werden, können Sie eine manuelle Zuordnung durchführen. Unter YaST R Hardware wählen Sie hierzu die entsprechende Rubrik:
Bild 7-5: Hardwareauswahl unter YaST
Sie erhalten dann eine Auswahlliste der möglichen Hersteller und Produkte. Sollte Ihr Gerät nicht in dieser Liste enthalten sein, verweisen wir auf die Vorgehensweise, wie sie bereits unter Installation auf Seite 23 vorgeschlagen wurde.
152
7.4 Einrichten eines Druckers
7.4
Einrichten eines Druckers
Im Kapitel Installation sind wir auf das Einrichten eines Druckers nicht weiter eingegangen, da es sich um die gleichen YaSTWerkzeuge handelt, die auch bei einer nachträglichen Installation eines Druckers mit YaST verwendet werden. Wählen Sie bei der Hardware (siehe Bild 7-5) das Symbol für Drucker aus, wird ein Hardwarecheck auf das System durchgeführt und alle neu erkannten Drucker wie auch bereits konfigurierte werden angezeigt (siehe nebenstehendes Bild). Auch wenn ein Drucker richtig erkannt wurde, ist der nächste Schritt, die Warteschlange hierfür zu konfigurieren. Überprüfen Sie das ausgewählte Druckermodell und drucken Sie grundsätzlich eine Testseite aus. Nach richtigem Ausdruck der Seite wird über ›Beenden‹ der Drucker und die entsprechende Queue (Warteschlange für das Drucker-Spool-System) eingerichtet. Im Kapitel 8.1, ›Linux-PrintSpooling‹ (Seite 158) erfahren Sie mehr über den Ablauf eines Druckvorgangs. Zu einem Drucker können auch mehrere Warteschlangen eingerichtet werden. Dies ist für jene Drucker sinnvoll, zu denen keine PPD (PostScript Printer Description, s. Seite 154) vorhanden ist und später beim Ausdrucken keine zusätzlichen Eigenschaften zugewiesen werden können. Hier kann dann je Eigenschaft (Farbe, zweiter Schacht etc.) eine eigene Warteschlange erstellt werden. Wurde ein Drucker nicht erkannt, weil er entwelokal direkt der nicht lokal am Sys- am Rechner tem angeschlossen ist oder weil das Fabrikat nicht zugeordnet wer- übers Netz den konnte, kann die Auswahl des Druckers manuell erfolgen. Sie entscheiden vorab, wie der Drucker erreicht wird, lokal oder über das Netz. Im Bild werden noch weitere LPD-ähnliche und IPX-Netzwerkserver angeboten, die jedoch eine Sonderbehandlung benötigen, auf die wir hier nicht eingehen (gestrichelte Linien).
153
Geräte unter Linux
Erst nach Auswahl der Schnittstelle wählen Sie aus der Herstellerliste das entsprechende Druckermodell. Im Kapitel 3, ›Installation‹ wurde bereits auf eventuelle Schwierigkeiten mit GDIDruckern hingewiesen (S. 24). Weitere Informationen finden Sie unter www.linuxprinting.org [44]. Soweit PPD-Dateien (PostScript Printer Description) für ausgewählte Drucker vorhanden sind, werden sie in eine entsprechende Datenbank übernommen. Sie ermöglichen dem Benutzer, beim Druckauftrag spezielle Einstellungen (Farbe, Layout, dpi-Auflösung etc.) vorzunehmen. Bevor Sie die Einstellungen übernehmen, sollten Sie unbedingt den Testdruck starten (➀ in Bild 76). Erst wenn der Ausdruck zufriedenstellend ist, schließen Sie die Druckerkonfiguration mit Beenden (➂ in Bild 7-6) ab.
➊ ➋ Bild 7-6: Druckerkonfiguration
154
Über ›Ändern‹ (➁ in Bild 7-6) können Sie die Druckausgabe entsprechend anpassen. Nach Optionen untergliedert stellen Sie z.B. bei ›Einstellungen für den Druckerfilter‹ die Papiergröße unter Page Size ein, unter Resolution weisen Sie die Auflösung (etwa 150 DPI bis 1200 DPI) zu. Auch lässt sich bei den Optionen der Personen-
➌
7.4 Einrichten eines Druckers
kreis einschränken, der den Drucker benutzen darf. Unter ›Status- und BannerEinstellungen‹ können Sie eine Start- und Schluss-Seite (Banner) zuordnen. Den Status (idle, druckbereit) könnte man hier abändern. Es empfiehlt sich jedoch hierfür den KDE-Print-Manager zu verwenden (s. Seite 168). Mit welchen Kommandos Druckaufträge abgesetzt werden können, erfahren Sie im Kapitel 8, ›Das Linux-Drucksystem‹. Dort wird auch der KDE-Print-Manager vorgestellt, mit dem Druckaufträge kontrolliert und weitere Drucker eingerichtet werden können. Um einen Drucker mit Ethernet-Anschluss zu konfigurieren, muss zuvor dem Drucker eine entsprechende IP-Nummer innerhalb des Subnetzes zugewiesen werden (siehe hierzu auch Seite 270). Bei vielen Druckern wird dies über eine Display-Anzeige eingestellt. In der Begleitdokumentation des Druckers sollten Sie hierüber Auskunft erhalten. Wählen Sie beim Konfigurieren des Druckers ›Direkt auf Netzwerkdrucker drucken‹, können Sie vorab testen, ob der Drucker unter der angegebenen IP-Adresse auch erreichbar ist. Im Bild 7-6 sehen Sie, dass dort ›Lexmark‹ als Netzwerkdrucker eingerichtet wurde. Noch einfacher ist es, auf Drucker innerhalb des Netzes zuzugreifen, wenn auf dem entfernten Rechner ebenfalls das CUPS-Print-System eingesetzt ist. Hier wählen Sie lediglich ›Drucken über CUPS-Netzwerkserver‹ aus und aktivieren die gewünschte Verbindungsart. Damit werden alle Warteschlangen des entfernten CUPS-Servers ebenfalls mit angezeigt (siehe kprinter oder gtklp Seite 171) und können als Zieldrucker für einen Druckauftrag ausgewählt werden.
155
Geräte unter Linux
7.5
156
Zusammenfassung in Stichworten
Kapitel 8 Das Linux-Drucksystem
Das Drucken ist sicher eine der zentralen Funktionen eines Systems und somit ist das Aufsetzen und die Verwaltung der Drucker unter dem Linux-Spooling-System eine typische Aufgabe des Systemverwalters. War das Drucken unter Unix und Linux lange Zeit ein Stiefkind, geprägt auch durch eine Reihe unterschiedlicher Lösungen, so hat sich dies mit der Einführung des CUPS-Print-Spooling-Systems dramatisch geändert. Hiermit steht nun ein modernes und sehr flexibles Drucksystem zur Verfügung, welches sogar recht einfach erlaubt, (freigegebene) Drucker von Linux unter Windows zu nutzen und umgekehrt. Das Gleiche gilt auch für Mac OS-Systeme und natürlich andere Linux- und Unix-Systeme. Das Kapitel erklärt zunächst den prinzipiellen Aufbau des LinuxDrucksystems, auch Print-Spooling-System genannt, um dann auf Konfigurationsfragen einzugehen. 8.1
Linux-Print-Spooling
8.2
Das CUPS-Print-Spooling-System
8.3
Kommandos zum Drucken und zur Spooling-Verwaltung
8.4
CUPS-Administration
8.5
Die Konfigurationsdateien zu CUPS
8.6
Rückblick in Stichworten zum Thema Drucken
157
Das Linux-Drucksystem
8.1
Linux-Print-Spooling
Unter Linux (und Unix allgemein) kann man zwar per Standardumleitung (>) die Ausgabe direkt auf einen Drucker, Plotter oder ein ähnliches Gerät steuern,1 in der Regel verwendet man aber, wie in anderen modernen Betriebssystemen (auch Windows), die Dienste eines sogenannten Print-Spoolers. Dieser übernimmt die Aufgabe, das zu druckende Dokument in ein für den Drucker geeignetes Format zu bringen, erzeugt, soweit gewünscht, Deck- und Abschlussblätter für den Druckauftrag und fügt die Druckaufträge zunächst in die Auftragswarteschlangen der entsprechenden Ausgabegräte ein. Der Benutzer kann nach dem Absetzen des Druckauftrags weiterarbeiten, während sich das Print-Spooling-System um die korrekte, sequentielle Abarbeitung der Aufträge kümmert. Das Konzept dieser Print-Spooler ist in Bild 8-1 dargestellt: Clients
Datei
Programm
Admin.Clients lp-Clients z.B. lpr, lp, kprinter, …
Programm direkt
Spool-API
Konfiguration
Print-Spooler-Daemon
Filter
Backend
Drucker
Konfiguration
Print-Spooler-
Filter
Treiber
Filter
anderes SpoolingSystem
Daemon
Printer-Queues (Auftragswarteschlangen)
Bild 8-1: Schema eines Linux/Unix-Print-Spooling-Systems
Das Print-Spooling-System setzt sich dabei aus (zumindest) fünf Bereichen zusammen: 1. Die Frontend-Komponenten sind für das Absetzen von Druckaufträgen zuständig. Hier sind sowohl Kommandozeilen-Clients zu finden (z.B. lp, lpr) als auch grafische Clients. 2. Der eigentliche Print-Spooler – in der Regel ein Linux-Daemon – nimmt Druckaufträge entgegen, verwaltet die Auftragswarteschlangen und aktiviert für die eigentliche Ausgabe die entsprechenden Filter und Treiber. Er verwaltet auch die Zugänge zu den Auftragswarteschlangen und Druckern. 3. Die Filter/Konvertierer dienen dazu, die Daten in verschiedener Weise zu formatieren, konvertieren und anderweitig für den Drucker aufzubereiten. Zumeist werden gleich mehrere Filter nacheinander benutzt. 158
1. Sofern die Zugriffsrechte der Geräte dies überhaupt zulassen, was zumeist nicht der Fall ist.
8.1 Linux-Print-Spooling
4. Die eigentlichen Druckertreiber – auch Backends genannt –, welche die aufbereiteten Daten zum Drucker schicken und die Ansteuerung der unterschiedlichen Druckerschnittstellen (z.B. seriell, parallel, USB, Netz) bedienen sowie das Druckerprotokoll (z.B. PostScript, PDF, PCL oder die Sprache der Epson-Drucker). Hier können auch Pseudogeräte wie etwa das Drucken in eine PostScript- oder PDF-Datei oder das Versenden per E-Mail oder Fax-Modem realisiert werden. 5. Die eigentlichen Drucker, Fax-Modems oder Drucksysteme. Dies können wiederum eigenständige Systeme sein wie etwa Netzdrucker, Drucker-Server oder ein Apple- oder Windows-Rechner mit angeschlossenen und freigegebenen Druckern. Hinzu kommen die verschiedenen Konfigurationsdateien, die benötigten Ressourcen wie Schriften (Fonts) sowie Administrationsprogramme, welche es erlauben, die Konfigurationen vorzunehmen, neue Drucker aufzunehmen oder den Status und die Aufträge in den Auftragswarteschlangen anzuzeigen und zu ändern. Unter Unix war das Drucken lange Zeit ein vernachlässigtes Thema. Der Unix-PrintSpooler stand in seiner Funktionalität deutlich hinter dem zurück, was man von anderen Systemen her kennt. Dies hat sich geändert. Traditionell gab es zwei unterschiedliche Unix-Print-Spooler-Systeme: jenes, welches aus dem UNIX System V entstand, und jenes, welches unter den BSD-Systemen verbreitet war. Inzwischen ist eine ganze Reihe weiterer, zumeist besserer Lösungen hinzugekommen. Zu den stärker verbreiteten Unixund Linux-Print-Spooling-Systemen gehören: ❐
LP, das auf System-V-basierenden Systemen verbreitete Spooling-System. Der
klassische Druck-Client ist hier lp. lsched ist der Spooling-Daemon in SystemV-Systemen; unter Linux ist es cupsd (bei CUPS). lpadmin ist das Verwaltungsprogramm dazu und die Programme lpstat, cancel, lpmove, enable, disable, accept und reject erlauben den Zugriff auf die Drucker, Auftragswarteschlangen und die Druckaufträge. Unter Linux ist dieses System faktisch nicht vorhanden, sehr wohl aber die Emulationen des lp-Clients und der anderen Verwaltungsprogramme – insbesondere unter CUPS, teilweise auch unter LPRng. ❐
LPD (Line Printer Daemon), auch als BSD-LPD oder LPR bezeichnet, verwendet für die Kommunikation zwischen den Clients und den Servern ein eigenes LPD-
Protokoll, welches auch zur Standardisierung eingereicht wurde, dort aber inzwischen ruht (RFC 1179). Hierzu gehört der klassische Client lpr, der SpoolServer-Daemon lpd sowie die Administrationsprogramme lpq (Verwaltung der Aufträge in den Druckerwarteschlangen), lprm (löschen von Druckaufträgen) und lpc (Drucker-Administration). LPD ist zwar sehr verbreitet, muss aber inzwischen als veraltet betrachtet werden. Viele neuere Spooling-Pakete besitzen jedoch Kompatibilitätsschnittstellen zu LPD. ❐
RLPR (Remote-LPR) ist ein Mini-Server, der die Druckaufträge zu einem LPDoder LPRng-Spooler auf einem anderen (Remote-)Rechner weiterleitet.
159
Das Linux-Drucksystem
❐
PDQ (Print Don’t Queue) ist ein funktionales, aber einfaches Drucksystem,
welches – wie das englische Synonym bereits andeutet – ohne großen Spooling-Mechanismus auskommt und die Ausgabe (nach entsprechender Aufbereitung über Filter) direkt zum Drucker schickt – oder an einen Print-Spooler auf einem anderen System weiterleitet. ❐
PPR ist eine Print-Spooler-Entwicklung des Trinity College in Hartford (USA),
ausgelegt auf das Drucken mit PostScript-Druckern. Sie beherrscht dabei auch das Drucken auf AppleTalk-Drucker und publiziert ihre eigenen Drucker in einem AppleTalk- oder EtherTalk-Netz. Siehe hierzu ppr.trincoll.edu. ❐
LPRng (Line-Printer next generation) ist eine moderne Neuimplementierung von BSD-LPD, wobei hier auch einige Elemente aus dem System-V-LP übernommen wurden. Damit steht sowohl eine Emulation der LPD-Funktionen und -Programme zur Verfügung (lpr, lprm, lpq, lpc) als auch einige aus dem LP-
Spektrum (lp, lpstat, lpadmin). lpd ist der Spool-Daemon, lprngtool ein wesentliches GUI-Werkzeug für die Installation und Verwaltung des Spoolers.2 Auch Netzwerkdrucker und der Druck zu anderen Spoolern in einem Netz sind möglich. Der hier primär eingesetzte Druckfilter ist ifhp. Nach CUPS dürfte LPRng die beste Wahl für einen Linux-Print-Spooler sein.3
160
❐
CUPS (Common Unix Printing System) ist ein relativ neues, aber sehr funktionales System, das als Kommunikationsprotokoll IPP (Internet Printing Protocol) verwendet und damit ein gut ausgebautes API besitzt. Die Firma Easy Software Products, welche wesentlich zur Entwicklung von CUPS beigetragen hat, vermarktet zu CUPS eine kommerzielle Version ESP Print Pro mit erweiterten Funktionen und insbesondere mit der Unterstützung zahlreicher Drucker.4
❐
TurboPrint ist eine von der Firma ZEDOnet GmbH5 stammende Drucklösung, von der es eine eingeschränkte kostenlose Version und eine kostenpflichtige (aber relativ preiswerte) Version gibt. Die Stärke liegt in den sehr hochwertigen Dithering-Verfahren, der Unterstützung von Farbprofilen (auch für verschiedene Papiere) bei Ausgabe auf Tinten-/Fotodruckern und Druckertreibern für zahlreiche Drucker. TurboPrint arbeitet auch mit CUPS zusammen. In einigen Linux-Distributionen ist TurboPrint enthalten.
❐
Gimp-Print ist ein aus dem Drucker-Interface des Grafikprogramms GIMP heraus entstandenes Paket von Filtern und Druckertreibern. Es arbeitet mit CUPS zusammen als universeller Druckertreiber und liefert gute Ergebnisse insbesondere bei Tinten- und Fotodruckern. Es sollte die Anlaufstelle für von CUPS nicht direkt unterstützte Drucker(-treiber) sein.6 Hier ist die Unterstüt-
2. Auch hier kommen distributionsspezifische Werkzeuge hinzu, wie etwa YaST bei SUSE oder printerconf bei Red Hat. 3. Die jeweils aktuelle Version finden Sie unter www.lprng.org. Hier ist auch eine gute Dokumentation unter www.lprng.org/PrintigCookbook/ zu finden. 4. Zu CUPS siehe www.cups.org; zu ESP Print Pro siehe www.easysw.com. 5. Siehe hierzu www.turboprint.de. 6. Siehe hierzu gimp-print.sourceforge.net.
8.1 Linux-Print-Spooling
zung zahlreicher Tintendrucker der Firmen Canon, HP und Epson zu finden.7 TurboPrint kann als kommerzielle Version von Gimp-Print betrachtet werden. Insgesamt trägt die Vielfalt nur bedingt zur Bereicherung, sondern eher zur Verwirrung bei. Dies gilt insbesondere, da die verschiedenen Module (FrontendProgramme, Administrationsprogramme, Spool-Server, Filter/Konverter und Backend-Module) nur bedingt kompatibel sind, teilweise die Emulation und Kommunikation mit anderen Spooling-Systemen versuchen und zumeist entsprechend konfiguriert werden müssen. In manchen Fällen ist es nützlich, mehrere SpoolingSysteme parallel zu betreiben. Man muss hier jedoch auf die Verträglichkeit achten. Hinzu kommt, dass die verschiedenen Linux-Distributionen teilweise eigene, proprietäre Installations- und Konfigurationsprogramme zu diesen Systemen liefern. Von allen Systemen dürfte CUPS (Common Unix Printing System) als das inzwischen modernste, leistungsfähigste und sich am schnellsten weiterentwickelnde System sein. Es ist in praktisch allen aktuellen Linux-Distributionen vorhanden und auch für andere Unix-ähnliche Plattformen (weitgehend) frei verfügbar. Dass auch eine kommerziell vertriebene Version von CUPS von der Firma Easy Software Products existiert, sollte eher als Stärkung denn als Einschränkung betrachtet werden. Wir behandeln deshalb sowohl in diesem Kapitel als auch im gesamten Buch weitgehend das Drucken mit CUPS. Da CUPS (wie z.B. auch LPRng) Emulationen der System-V- und BSD-Spooler-Systeme bzw. lp- und lpr-Kommandos besitzt, sollten sich auch Benutzer dieser Systeme schnell zurechtfinden. Zu den Print-SpoolerSystemen gibt es auch GUI-basierte Frontends, welche sowohl das normale Drucken als auch die Verwaltung der Print-Spooler-Systeme für den Einsteiger (und in einigen Fällen auch für den fortgeschrittenen Benutzer) vereinfachen können. Da die Entwicklung hier insbesondere bei CUPS eine hohe Dynamik besitzt, lohnt es sich, ab und zu einen aktuellen Stand aus dem Internet zu holen. Dokumentation zum Drucken unter Linux Wir beschreiben hier den Stand von CUPS 1.1.x (und später) und der KDE-Frontends auf dem Stand ab KDE 3.0.x. Eine gute Behandlung des Themas Drucken unter Linux liefern die Bücher [17] und [9]. Manche HOWTO-Dokumentationen zum Thema Drucken sind leider etwas veraltet, was bei der rasanten Entwicklung nicht überrascht. Sie leiden teilweise unter der Breite des Print-Spooler-Spektrums. Ein Ansatzpunkt ist hier printing-Usage-HOWTO und Printing-HOWTO – entweder als Teil Ihrer Distribution (zumeist unter /usr/share/doc/HOWTO/…/ )8 oder im Internet unter www.linuxprinting.org/howto/. Für CUPS sind die beiden Dokumentationen CUPS Software Users Manual und CUPS Software Operators Manual hilfreich.9 Insbesondere das Operators Manual 7. Die Firma Lexmark liefert lobenswerter Weise für viele ihrer Drucker selbst die Linux-Treiber. 8. Sie sollten hier ein wenig suchen. Bei SUSE sind auch deutsche Beschreibungen mit den Titeln DE -Drucker- HOWTO -nn.html zu finden (nn sind Nummern).
161
Das Linux-Drucksystem
ist detailliert, verständlich und aktuell. Für Unix/Linux ungewöhnlich ausführlich und leicht verständlich ist The KDEPrint Handbook (siehe [52]) von Kurt Pfeifle. Der Fokus ist hier Drucken und Druckadministration unter KDE und mit CUPS. Für LPRng liefert das Printing Cookbook eine gute Darstellung.10 Weitere Informationen sind unter www.linuxprinting.org zu finden. Eine vereinfachte Beschreibung von CUPS in Form eines Steckbriefes steht unter www.xtelligent.de/wissen/steckbriefe/index.htm [61].
8.1.1
Basismechanismen des Unix-/Linux-Print-Spoolings
Die Basismechanismen des Linux-Print-Spoolings sind bei den meisten Print-Spooler-Systemen gleich. Die Print-Spooler unterscheiden sich hier hauptsächlich in den dabei verwendeten Programmen und Optionen: ❐
Ein Print-Client-Programm erteilt einen Druckauftrag. Es schickt dazu einen zu druckenden Datenstrom (oder einen Dateinamen) zusammen mit steuernden Optionen an das Print-Spooler-System bzw. den entsprechenden PrintServer. Pro Druckauftrag können auch mehrere Dateien ausgegeben werden. Der Print-Client selbst kann wiederum von anderen Programmen aufgerufen werden und die zu druckenden Daten entweder als Datei(-namen) erhalten oder über eine Pipe einlesen. Die klassischen Kommandozeilen-Clients sind lpr und lp; zu den GUI-basierten Clients gehören z.B. kprinter, qprint, gtklp oder xpp oder das Printer-Icon unter dem GNOME-Desktop. kprinter ist hierbei das neuere Tool und löst gtklp ab. Der Client erhält vom Print-Spooler (dem Server) eine Auftragsidentifikation zurück – die Nummer oder den Namen des Druckauftrags (Print-Jobs). Unter dieser Identifikation wird der Auftrag nachfolgend verwaltet. Man benötigt diese Print-Job-ID, um später einen Druckauftrag anzuhalten, freizugeben (nach einem Anhalten), zu stornieren (löschen) oder in eine andere Druckerwarteschlange zu verlegen.
❐
162
Der Print-Server als Kern des Print-Spooling-Systems ist ein Linux-Daemon, der ständig auf Druckaufträge wartet. Er nimmt einen Druckauftrag von einem Client entgegen und lässt sich vom Client mitteilen, für welchen Drucker der Auftrag sein soll (oder benutzt den Standarddrucker). Er analysiert, in welchem Format die zu druckenden Daten vorliegen. Danach führt er eine eventuell notwendige Aufbereitung der zu druckenden Daten durch. Er schickt die aufbereiteten Daten nicht sofort an den Zieldrucker, sondern steckt den Auftrag in die Auftragswarteschlange für den Zieldrucker. Ist ein Drucker für einen neuen Ausdruck bereit, so nimmt der Print-Server den an vorderster Stelle in der entsprechenden Auftragswarteschlange stehenden Auftrag und aktiviert – sofern notwendig – weitere Filter für dessen Verarbeitung. Das Ende der
9. Beide (und einiges mehr) sind z.B. zu finden unter: www.cups.org/documentation.php. 10. Zu finden unter www.lprng.com/PrintingCookbook/.
8.1 Linux-Print-Spooling
Verarbeitung ist schließlich ein Druckertreiber, auch als Backend bezeichnet. Er überträgt die Daten mit einem für den Drucker und die Schnittstelle passenden Dialog (Protokoll) zum Drucker und wertet dessen Rückmeldungen aus. Der Print-Server kann die Daten jedoch an andere Server auf anderen Systemen weiterleiten – sowohl an gleiche Server unter Linux oder Unix oder auch an Druck-Server auf anderen Plattformen wie etwa Windows, Novell oder Mac OS. Er kann oft auch – mit entsprechender Protokollunterstützung – Druckaufträge von solchen Systemen entgegennehmen. ❐
Die Daten, welche gedruckt werden sollen, sind in mehrerer Hinsicht aufzubereiten. Dies geschieht durch die Filter. Der erste Schritt ist oft eine Formatierung, oder wie es unter Linux (im Englischen) genannt wird, ein PrettyPrinting. Ein Teil dieser Formatierung erfolgt oft bereits vor dem eigentlichen Drucken, etwa per troff/groff oder TEX oder durch die Office-Programme wie OpenOffice, StarOffice oder AbiWord. In der einfacheren Variante ist es fmt oder pr. In diesem Teil des Druckauftrags wird zunächst ermittelt, in welchem Format die zu druckenden Daten vorliegen. Textdateien, formatierte Texte und teilweise auch Rasterdaten (Images, Rasterbilder) werden hier zumeist in PostScript als druckerneutrale Sprache konvertiert. Von dieser Konvertierung sind bereits in PostScript oder PDF vorliegende Daten ausgenommen. Fast jedes Druckerpaket bringt dafür eigene Filter(-Kombinationen) mit, die zumeist aber auch bei den anderen Paketen eingesetzt werden könnten. Bei CUPS wird vielfach enscript für die Text-nach-PostScript-Konvertierung benutzt. Eine Alternative ist z.B. a2ps. Weitere Filterschritte können verwendet werden, etwa um mehrere (virtuelle) Seiten auf einer Druckseite zu plazieren. Hierfür bieten die zuvor genannten Text-nach-PostScript-Werkzeuge bereits entsprechende Funktionen bzw. Optionen an.
❐
Im letzten Schritt setzt der Spooler die Daten dann aus dem Zwischenformat (z.B. PostScript) in ein Format um, welches der Drucker als seine Druckersprache (PDL, Print Description Language) versteht, oder es werden Daten für spezielle Ausgabebedingungen angepasst – etwa die Auflösung von Rasterbildern, Farbanpassung an das verwendete Papier oder Ähnliches. Bei PostScript- oder PDF-Druckern kann dies überwiegend entfallen. Eine weitere, vielfach eingesetzte PDL ist HP-PCL, die Standardsprache der HP-Drucker und der PCL-Emulationen bei zahlreichen anderen Fabrikaten. Schließlich schickt das System die Daten wirklich an einen Drucker oder Pseudodrucker. Hier sind zumindest zwei weitere Anpassungen notwendig: – Zum einen ist die entsprechende Anschlussschnittstelle (die serielle, die Parallel- oder USB-Schnittstelle oder die Netzschnittstelle für Netzwerkdrucker) zu bedienen. 163
Das Linux-Drucksystem
– Zusätzlich muss der Drucker in seiner PCL (Printer Command Language) angesprochen werden. Handelt es sich nicht gerade um einen PostScript-Drucker oder liegen die Daten noch als Raster-Image vor, so gilt es zusätzlich, die Daten in die entsprechende PDL (Print Description Language) des Druckers zu konvertieren – in den meisten Fällen von PostScript in die Drucker-PDL. Auch hierzu werden spezielle Filter eingesetzt. Unter CUPS wird dieses ganze Kreuzworträtsel zwischen Eingabe- und Ausgabeformat durch den sogenannten cupsomatic-Filtermechanismus realisiert. Eine zentrale Komponente darin spielt Ghostscript (gs) für die Umwandlung aus PostScript in die PDL des Zieldruckers. Die wesentlichen Funktionen des Print-Spooling-Mechanismus sind:
164
❐
Ausgabeaufträge können vom Spooling-Client erteilt und vom Spooling-Server in eine Warteschlange eingehängt werden. Solche Aufträge (Druck-Jobs) können – soweit sie noch nicht ausgegeben sind – wieder storniert (gelöscht) oder auf andere Ausgabegeräte umgehängt werden. Auch einige Auftragsparameter – etwa die Auftragspriorität – lassen sich nachträglich ändern. Der Umfang der möglichen Änderungen ist etwas vom Spooling-System und von den Zugriffsrechten des Benutzers (bzw. der Spooler-Konfiguration) abhängig. Der PrintSpooler prüft auch die Zugangsberechtigung des Benutzers zum Zieldrucker.
❐
Aufträge können nicht nur storniert, sondern auch angehalten werden. Sie werden dann erst nach einer expliziten Freigabe wieder für den Druck freigegeben.
❐
Statusabfragen zu Ausgabeaufträgen
❐
Sperren und Freigeben einzelner Geräte oder ganzer Geräteklassen
❐
Eingabe von Konfigurationsänderungen
❐
Statusabfragen zur Auftragswarteschlange bestimmter Drucker oder Druckerklassen
❐
Der Benutzer kann sich bei Fertigstellung eines Druckauftrags (oder bei Auftreten von Problemen) vom Spooler per E-Mail darüber informieren lassen.
Drucker und Druckerklassen Im einfachsten Fall ist das Ziel eines Druckauftrags ein konkreter Drucker. Zuweilen möchte man aber auch einen Druckauftrag einfach loswerden, ohne dass man einen konkreten Drucker benötigt – er soll nur möglichst schnell ausgegeben werden. Das Linux-Print-Spooler-Konzept sieht hier die Druckerklasse vor. Dies ist im Prinzip eine Auftragswarteschlange, der mehrere konkrete Drucker zugeordnet sind. Der Spooler gibt den Auftrag dann auf dem Drucker aus, der als nächster frei wird. Zumeist fasst man in einer Klasse mehrere räumlich benachbarte Drucker oder mehrere Drucker mit gleichen oder ähnlichen Eigenschaften zusammen (z.B. schnelle Laserdrucker oder Farbdrucker). Ein Drucker kann sich gleichzeitig in mehreren Klassen befinden. Druckerklassen werden unter Linux sowohl von LPRng als auch von CUPS unterstützt.
8.1 Linux-Print-Spooling
Prioritäten von Druckaufträgen Ähnlich der Laufzeitprioritäten lassen sich Druck-Jobs Prioritäten zuordnen. Jobs mit höherer Priorität werden (vollständig) vor jenen mit niedriger Priorität (in der jeweiligen Druckerwarteschlange) verarbeitet. Die Priorität lässt sich sowohl beim Druckaufruf (in lp z.B. per –q n) mitgeben als auch später noch verändern (z.B. über die grafische Oberfläche per kprinter oder gtklpq). In CUPS und LPRng sind Prioritäten von 1–100 möglich, wobei 50 der Standardwert ist. Filter auf dem lokalen System oder einem entfernten Spooler? Ist der Zieldrucker nicht am lokalen System angeschlossen, so kann die Datenaufbereitung sowohl auf dem lokalen System erfolgen als auch auf dem Zielsystem. Beide Varianten haben ihre spezifischen Vorteile. Für die lokale Verarbeitung spricht eine Lastverteilung und dass spezielle Konvertierungsfilter oder Schriften eventuell gerade (nur) lokal vorhanden sind. Bei großen Installationen vereinfacht eine zentrale Verarbeitung auf einem (eventuell dedizierten) Druckserver-System die Installation, da hier die Filter und weitere Ressourcen nur auf dem Server-System installiert und aktualisiert werden müssen. Konfigurationsänderungen sind zentral besser zu verwalten. Es bleibt zu überlegen, welche Formate dort verarbeitet werden können und welche Aufbereitung dazu notwendig ist, da es sich sowohl beim Server-System als auch beim Client-System unter Umständen um eine andere Plattform (Unix, Windows, Novell, Apple, …) oder um einen Linux-DruckServer in einem anderen Spooling-System handeln kann. So haben z.B. die LinuxDrucksysteme Probleme mit den teilweise recht entarteten PostScript-Dateien, welche von Windows-Anwendungen und Windows-Treibern erzeugt werden.11 Hier ist deshalb unter Umständen zuvor eine PostScript-nach-PostScript-Bereinigung notwendig (etwa per ps2ps). Accounting und Quota Bei größeren Installationen wird eine Kostenzuordnung der Druckkosten zu Abteilungen oder Projekten oder Personen benötigt – im erweiterten Fall auch ein Quota-System, welches das Drucken bei Überschreitung eines festgelegten Druckvolumens verweigert. Während die meisten Linux-Drucksysteme hierfür bisher wenig bieten, sind in CUPS und LPRng zumindest Basismechanismen vorhanden. Hier ist zu erwarten, dass CUPS die schnelleren Fortschritte macht. Unter CUPS lassen sich Benutzer-Quotas entweder per lpadmin setzen (s. S. 181) oder über ein Administrationsprogramm (oder per direktem Editieren der CUPSKonfigurationsdatei /etc/cups/lpd.conf). Beides sollte unter root oder unter dem CUPS-Administrationsbenutzer (konfiguriert in /etc/cups/cups.conf ) erfolgen.
11. Insbesondere Microsofts PowerPoint erzeugt (bisher) ein recht miserables PostScript.
165
Das Linux-Drucksystem
8.2
Das CUPS-Print-Spooling-System
CUPS – Common Unix Printing System – ist ein relativ neues Print-Spooling-System
auf Unix-Systemen und Linux. Es weist eine hohe Funktionalität auf und wird intensiv weiterentwickelt. Basis ist das IPP-Protokoll (Internet Printing Protocol – entsprechend RFC 2568), welches eine Erweiterung von HTTP 1.1 darstellt und zunehmend auch von Anbietern von Netzwerkdruckern und Druck-Servern eingesetzt wird. CUPS steht nicht nur Linux und den meisten Unix-Systemen zur Verfügung (darunter auch Mac OS X), sondern auch anderen Plattformen – etwa Windows. Neben seinen nativen speziellen CUPS-Programmen und Schnittstellen stellt das CUPS-Paket auch Emulationen für die älteren System-V- und BSD-LPDSysteme zur Verfügung, so dass auch Benutzer anderer Systeme sich schnell zurechtfinden. Ein weiterer Vorteil von CUPS liegt darin, dass es zu CUPS umfangreiche, dokumentierte APIs gibt, welche direkt aus Anwendungen aufgerufen werden können, so dass man sich den Umweg über die Ausgabe in eine Datei sparen kann, ohne Funktionalität zu verlieren. Eine andere Möglichkeit besteht darin, GUI-Frontend-Programme wie etwa kprinter oder gtklp zu verwenden, welche dann dem Benutzer eine Dialogbox bieten, in der ein Großteil der Auftrags- und Druckerparameter verständlich und einfach eingestellt werden kann. ClientSchnittstellen
Print-Spooler (Daemon)
lpadmin
Filter
Backend
Drucker
Konfiguration /etc/cups/…
Webbrowser
lp
Programm
Programm direkt
API
LPD-
lpr
…
Druck-Dialogbox
gtklp, kprinter
Parallelschnittstelle
CUPS PrintSpooler (cupsd)
a2ps Fx
enscript F1
Fn
serielle Schnittstelle
Netzwerkdrucker
USB
Netzwerkdrucker
Remote
Remote-CUPS-Server
Remote LPR(ng)
Remote-LPR(ng)
DruckerServer
CUPS
Filter
Printer-Queues
Netz
Datei
BenutzerKonfiguration
cupsomatic
Backend
˜/.lpoptions
Webserver
Treiber
mit
Admin-GUI
/etc/spool/cups /…
Bild 8-2: Topologie des CUPS-Systems
166
Drucker können unter CUPS sowohl lokal angeschlossen sein – über eine parallele oder serielle Schnittstelle oder per USB – als auch über das Netz. Im Netz wiederum können die Drucker einen direkten Netzanschluss haben (etwa JetDirect mit dem AppSocket-Protokoll bei vielen Druckern von HP) oder wiederum an einem
8.2 Das CUPS-Print-Spooling-System
Host, der die Druckdienste im Netz anbietet. Der lokale CUPS-Service publiziert – soweit aktiviert – seine Service-Informationen (die lokal vorhandenen Drucker und Druckerklassen) regelmäßig im Netz, so dass andere Server und die CUPS-Clients dies automatisch erfahren und die neuen Drucker ohne weitere Installationen und Updates ›sehen‹. Da dies in großen Netzen zu einer Unübersichtlichkeit aufgrund zu vieler sichtbarer Drucker führen kann, lassen sich Sichten definieren, bei denen die angezeigten Drucker durch Filter eingeschränkt werden. Druckerinstanzen/Druckerprofile CUPS kennt neben Druckern und Druckerklassen auch Druckerinstanzen. In neueren Versionen werden diese passender als Profile bezeichnet. Diese erlauben zu einem realen Drucker mehrere virtuelle Drucker zu definieren, wobei ein virtueller Drucker ein Satz von Optionen bzw. Einstellungen zur Ausgabe auf dem realen Drucker ist. So kann man z.B. zu einem Drucker HP-LJ2200 zwei Profile definieren, wobei für das Profil Entwurf eine niedrige Auflösung und ein doppelseitiger Druck gewählt wird und für das Profil Final eine hohe Auflösung und ein einseitiger Druck. In der Kommandozeile werden solche Profile mit der Syntax drucker/profil angegeben. Solche Profile können sowohl systemweit gelten (sie liegen dann in dem Verzeichnis /etc/CUPS/lpoptions) oder benutzerindividuell. Letztere sind jeweils unter .lpoptions im Home-Verzeichnis des Benutzers abgelegt und können individuell angepasst, angelegt und gelöscht werden. Dies ist gleich mit einer ganzen Reihe von Programmen möglich (z.B. per lpoptions oder dem KDE-Print-Manager). Der Systemverwalter kann seine Einstellungen nach /etc/CUPS/lpoptions kopieren, damit sie systemweit gelten, wobei die Benutzereinstellungen diese überdecken.
8.2.1
Zugang zum CUPS-System
Es gibt zahlreiche Zugangsarten zu den verschiedenen Funktionen des CUPSSpoolers: ❐
über die später noch beschriebenen Kommandozeilen-Programme wie lpr, lp, cancel, accept, reject, enable, disable, lpstat, lpotions, lpadmin, …;
❐
über GUI-Programme wie etwa kprinter12, gtklp, xpp, klpq oder über YaST;
❐
über das Web-HTML-Interface des CUPS-Servers, der von einem Browser aus zu erreichen ist unter http://localhost:631 oder http://zielhost:63113, unter http://localhost:631/documentation.html ist die jeweils aktuelle Dokumentation zu CUPS zu finden;
❐
über den Aufruf von kups oder kcmshell printmgr unter KDE;
12. kprinter ist ein Programm aus dem KDE-System, jedoch auch unter GNOME und von GNOME -Anwendungen aus nutzbar. 13. Port 631 ist der Standardport des CUPS-internen Webservers. In der CUPS-Konfiguration kann eine abweichende Portnummer angegeben werden. Siehe dazu [17].
167
Das Linux-Drucksystem
❐
über den KDE-Print-Manager, indem man im Konqueror als Adresse print:manager eingibt;
❐
über das KDE-Kontrollzentrum über die Schritte: Angeschlossene Geräte R Drucker;
❐
über YaST bei SUSE zum erstmaligen Anlegen eines Druckers (s. Seite 153): YaST R Hardware R Drucker.
Der CUPS-Daemon cupsd Der Kern des CUPS-Systems ist der Daemon cupsd. Dieser wird in der Regel beim Hochfahren des Rechners gestartet (siehe Seite 72). Einmal gestartet, liest er seine Konfiguration aus den Konfigurationsdateien (siehe Tabelle 8-1, Seite 183) und wartet auf Aufträge von den CUPS-Clients. Er verwaltet die Auftragswarteschlangen der Druckaufträge für die Drucker und initiiert die Verarbeitung der Aufträge, sobald ein Drucker für den nächsten Auftrag frei ist. Dazu aktiviert er die zur Ausgabe notwendigen Filter und Druckertreiber (Ausgabeprozesse). Für die Kommunikation mit anderen CUPS-Servern sowie mit seinen Clients benutzt cupsd das Internet Printing Protocol (IPP) – eine Erweiterung des HTTP-Protokolls. Der Daemon bietet einen eigenen kleinen HTTP-(Web-)Server, über den sich auch seine Administrationsschnittstelle ansprechen lässt (s. Seite 174).
8.3
Kommandos zum Drucken und zur Spooling-Verwaltung
In diesem Abschnitt zeigen wir zum einen, wie Dateien ausgedruckt, zum anderen wie die Druckaufträge kontrolliert und nachträglich gesteuert werden können. Außerdem gehen wir auf weitere Verwaltungstools ein.
8.3.1
Druckaufträge starten
Um Dateien auszudrucken, gibt es unterschiedliche Methoden. Aus Anwendersicht ist sicher die häufigste Art, direkt aus einem Programm wie beispielsweise OpenOffice, Acrobat Reader oder einem Webbrowser das Druckmenü zu verwenden. Als Schnittstelle zum Drucksystem dienen für die meisten Anwendungsprogramme die Druckkommandos auf Kommandozeilenebene, die in Voreinstellungsdateien angepasst werden können. War es unter StarOffice (Version 5.2) noch notwendig, die Drucker eigens zu verwalten, sind nun ab OpenOffice 1.1 sämtliche Drucker, die unter CUPS zur Verfügung stehen, automatisch integriert. So sieht man dort beim Aufruf des Administrationsprogramms (/opt/OpenOffice/spadmin) in der Dialogbox die automatisch zugeordneten Druckmöglichkeiten:
168
8.3 Kommandos zum Drucken und zur Spooling-Verwaltung
Bild 8-3: Druckereinstellung unter OpenOffice
Sie sehen, dass hier das Druckkommando lpr eingesetzt ist. Gab es früher unter Unix V die Druckkommando-Serien aus lp (Druckauftrag), cancel (Druckauftrag löschen), lpstat (Statusanzeige der Drucker und Druckaufträge) und über die BSD (Berkeley Software Distribution) lpr (Druckauftrag), lprm (Druckauftrag löschen), lpq/lpc (Anzeige der Druckaufträge), so sind diese Programme (auf Kommandozeilenebene) nun Teil des CUPS-PrintSpooler-Systems und gleichberechtigt verwendbar (lpstat zeigt nun auch offene Druckaufträge an, die mit lp, lpr, kprinter oder einem anderen Programm gestartet wurden). Allerdings weichen die Optionen innerhalb der Kommandos voneinander ab. Lediglich die neu hinzugekommenen Optionen -E und -h sind bei lp und lpr gleich: -E
(encrypted) Die Druckdateien werden verschlüsselt übertragen, dies bedeutet, die Option aktiviert die verschlüsselte Kommunikation zwischen dem Client und dem Server.
-h Server (host) Hiermit kann ein Print-Server auf einem anderen System (oder ein zweiter Server auf dem lokalen System) angegeben werden. Welches Kommando (lp oder lpr) Sie nun verwenden möchten, bleibt Ihnen überlassen. Der Vorteil (oder Nachteil) beim Aufruf von lp ist, dass gleich die Auftragsnummer mit ausgegeben wird, die man beim Löschen eines Druckauftrags benötigt. Hier nun die Syntax der beiden Kommandos mit den häufig benötigten Optionen: 169
Das Linux-Drucksystem
lpr [-E ] [ -P Zieldruckangabe ] [ -# n ] [ Datei(en)] Kommando, um Dateien auszudrucken
-E
(encrypted) Siehe weiter oben.
-P
(printer) Die Druckausgabe erfolgt auf dem angegebenen Zieldrucker. Wird kein Drucker angegeben, erfolgt der Ausdruck auf dem Standarddrucker.
-# n Es werden n Kopien gedruckt. In folgendem Beispiel werden zwei Kopien des Wortes ›hallo‹ auf einem explizit angegebenen Drucker per lpr ausgegeben: chr@Jogyli:~> echo hallo | lpr -P deskjet_5600 -# 2
lp [-E] [-d Zieldruckangabe] [-n n] [-q Priorität] [ Datei(en)] Kommando, um Dateien auszudrucken
-E
(encrypted) Siehe weiter oben.
-d
(destination) Die Druckausgabe erfolgt auf dem angegebenen Zieldrucker. Wird kein Drucker angegeben, erfolgt der Ausdruck auf dem Standarddrucker.
-n n Es werden n Kopien gedruckt -q
Priorität 1–100. Im Unterschied zum Kommando nice (um die Priorität der Prozesse zu beeinflussen, siehe Seite 227) ist hier 100 die höchste Priorität und 1 die niedrigste.
Das folgende Beispiel zeigt die Ausgabe von zwei Kopien einer Datei auf dem Standarddrucker mit dem Kommando lp: chr@Jogyli:~> lp sicherungshinweis.txt -n 2 request id is lex-80 (1 file(s))
Beide Kommandos leiten sich ab von line printer. lp oder lpr setzen den Druckauftrag auf und schicken die zu druckenden Daten und die Auftragsparameter an den CUPS-Server (den Daemon cupsd). Der Server erstellt daraus einen Ausgabeauftrag (englisch: request ), in dem Benutzer, auszugebende Dateien, zusätzliche Optionen (–o-Option bei lp/lpr) sowie Ausgabeziel enthalten sind. Er reiht diesen Auftrag in eine Auftragswarteschlange ein. Er kann beim lp/lpr-Aufruf eine Druckerklasse, einen Drucker oder eine Druckerinstanz (in der Form: drucker/profil) als Ziel der Ausgabe (Zieldruckangabe) angeben. Fehlt diese Angabe, so wird die Ausgabe auf einen Standarddrucker (oder Klasse) geleitet, soweit dieser definiert ist. Drucker ist hierbei ein symbolischer Name für ein Ausgabegerät, Druckerklasse der symbolische Name für eine ganze Gruppe von Druckern. 170
Wird als Ziel eine Druckerklasse angegeben, so geschieht die Ausgabe auf den
8.3 Kommandos zum Drucken und zur Spooling-Verwaltung
Drucker der Klasse, der als erster in seiner Klasse frei wird. Die Zuordnung von Druckern zu Druckerklassen und von physikalischen Geräten oder Dateien zu Druckern wird vom Systemverwalter mittels des lpadmin-Programms vorgenommen oder über das grafische Verwaltungsprogramm bzw. das webbasierte Tool. Ein Drucker darf sich gleichzeitig in mehreren Klassen befinden. Ein Benutzer kann seinen Druckauftrag später z.B. mittels cancel unter Angabe seiner Auftragsnummer löschen. lp und lpr können auch zu druckende Daten von der Standardeingabe lesen und so die Ausgabe anderer Programme ausgeben oder von diesen als Ausgabefilter verwendet werden.
➊
➋
➌
Auswahl weiterer Dateien Löschen des markierten Auftrags Ansehen der ausgewählten Datei Verschieben der Reihenfolge (Priorität)
Bild 8-4: Druckauftrag über kprinter
Als GUI-Tool bietet sich für den Ausdruck von Dateien kprinter an. Das Programm kann über Terminalaufruf gestartet werden, wobei die auszudruckende(n) Datei(en) gleich als Argument mit angegeben werden können. Komfortabler ist die Auswahl der Dateien über die Dialogbox, die es u.a. erlaubt, zuvor noch einen Blick in die ausgewählten Dateien zu werfen (um sicherzugehen, auch die richtige Datei zu drucken). Auf welchem Drucker der Ausdruck erfolgen soll, lässt sich bequem über ein Auswahlfenster einstellen. Sehr übersichtlich und komfortabel lassen sich auch eine Reihe weiterer Einstellungen vornehmen (s. Bild 8-4).
171
Das Linux-Drucksystem
kprinter wird auch als Standarddruckprogramm beim Konqueror und anderen KDE-Programmen eingesetzt. Je nach Drucker (PDPDatei) können unter Eigenschaften (➀ in Bild 8-4) Zusatzoptionen gesetzt werden wie z.B. Hochformat/Querformat, Mehrseitendruck oder beidseitiger Druck (s. nebenstehendes Bild). Unter dem Reiter ›Bild‹ sind Feineinstellungen für den Druck von Grafiken/Bildern wie Farbsättigung, Helligkeit etc. möglich. Unter Exemplare (➁ in Bild 8-4) geben Sie an, welche Seiten gedruckt werden sollen und die Anzahl eventueller Kopien. Bei Optionen (➂ in Bild 8-4) können Sie Druckzeiten (bestimmte Uhrzeit oder innerhalb von Zeitspannen wie tagsüber, abends, nachts oder am Wochenende) vorgeben und/oder eine Priorität (von 1 bis 100) für den ausgewählten Druckauftrag einstellen. Standardmäßig ist ›sofort‹ eingestellt und als Priorität 50.
8.3.2
Kommandos zur Spooling-Verwaltung
Um gestartete Druckaufträge zu stornieren, bietet CUPS verschiedene Möglichkeiten. Auf Kommandoebene gibt es auch hier zwei Kommandos, die aus den früher unterschiedlichen Drucksystemen übernommen wurden. Mit cancel und lprm können angegebene Druckaufträge (oder alle Aufträge) für einen oder mehrere angegebene Drucker gelöscht werden. cancel [ -a ] [ -u Benutzername ] [ Auftrags-ID] [ Zieldruckangabe ] Kommando, um Druckaufträge zu löschen
-a
172
(all) Alle bestehenden Druckaufträge der angegebenen Spezifikation werden gelöscht. Ohne weitere Angaben werden alle Druckaufträge gelöscht.
Allerdings dürfen Druckaufträge nur dann gelöscht werden, wenn das richtige lpPasswort (s. S. Seite 174) eingegeben wurde. Dies gilt auch für root selbst. Der Benutzer, der den Druckauftrag gestartet hat, kann allerdings über die Angabe der einzelnen Auftrags-ID den Ausdruck stornieren. Wenn der Ausdruck bereits begonnen hat, hilft nur noch, ihn direkt am Drucker abzubrechen.
8.3 Kommandos zum Drucken und zur Spooling-Verwaltung
Für weitere Optionen und für die Syntax von lprm verweisen wir auf die man-Pages. lpstat erlaubt dem Benutzer, Informationen zum CUPS-Server sowie zu den Druckaufträgen abzufragen. Alternativ unterstützt CUPS auch lpq und lpc, auf die wir hier nicht weiter eingehen. lpstat [ -E ] [ -c Klasse] [ -d Zieldruckangabe ] [ -t ] [Auftrag …] Kommando, um Informationen über die Druckaufträge zu erhalten
-E
(encrypted) Die Druckdateien werden verschlüsselt übertragen.
-t
(total) Das Kommando betrifft alle Aufträge der angegebenen Spezifikation. Wurde keine Spezifikation angegeben, werden alle Aufträge und der Status aller eingerichteten Drucker ausgegeben.
Beispiele: > lpstat -t scheduler is running system default destination: lex members of class LaserDrucker: lex Lexmark device for deskjet_5600: ipp://MacyII.local/printers/deskjet_5600 device for hp5662_ubs: usb:/dev/usb/lp0 device for lex: socket://192.168.0.99:9100/ device for Lexmark: ipp://MacyII.local/printers/Lexmark deskjet_5600 accepting requests since Jan 01 00:00 hp5662_ubs accepting requests since Jan 01 00:00 lex accepting requests since Jan 01 00:00 Lexmark accepting requests since Jan 01 00:00 printer deskjet_5600 disabled since Jan 01 00:00 Printer off-line. printer hp5662_ubs is idle. enabled since Jan 01 00:00 printer lex now printing lex-133. enabled since Jan 01 00:00 Connected to host, sending print job... printer Lexmark is idle. enabled since Jan 01 00:00 Ready to print. deskjet_5600-119 chr 1024 Mo 16 Aug 2004 16:38:58 CEST deskjet_5600-120 chr 2048 Mo 16 Aug 2004 16:38:58 CEST deskjet_5600-121 chr 2048 Mo 16 Aug 2004 16:38:58 CEST lex-133 chr 1024 Mo 16 Aug 2004 16:41:09 CEST lex-134 chr 2048 Mo 16 Aug 2004 16:41:09 CEST lex-135 chr 2048 Mo 16 Aug 2004 16:41:09 CEST > cancel deskjet_5600-119 > cancel -a lex Password for chr on localhost? xxxxx (nicht sichtbar) > lpstat -t … deskjet_5600-120 chr 2048 Mo 16 Aug 2004 16:38:58 CEST deskjet_5600-121 chr 2048 Mo 16 Aug 2004 16:38:58 CEST
173
Das Linux-Drucksystem
Eigene Passwortabfrage für Verwaltungsaufgaben Für viele CUPS-Verwaltungsaufgaben ist es notwendig, ein eigenes Passwort einzugeben. Hierzu kann root den zugriffsberechtigten Benutzern mit dem Kommando lppasswd ein Passwort einrichten. lppasswd [-a] [-x] [Benutzername] Kommando, um das Recht einzuräumen, bestimmte CUPS-Programme durchzuführen
Mit -a Benutzername wird ein Benutzerpasswort eingerichtet (add), mit -x Benutzername gelöscht. Auch für root selbst muss erstmalig das lp-Passwort mit -a eingerichtet werden. Normale Benutzer können mit lppasswd (ohne Parameter) ihr Passwort ändern.
8.4
CUPS-Administration
Eine übersichtlichere und komfortablere Administration insbesondere bei Einzelplatzsystemen und in kleineren Installationen ist über die HTTP-Schnittstelle von CUPS möglich. Sie erreicht man mit einem Webbrowser über: http://localhost:631
Bild 8-5: CUPS-Administration über einen Webbrowser
Hier lassen sich unter den verschiedenen Reitern komfortabel und intuitiv viele Verwaltungsaufgaben zu CUPS in der grafischen Oberfläche ausführen (siehe Bild 8-5). 174
8.4 CUPS-Administration
Bei entsprechender Konfiguration sind für einen Teil der Aufgaben spezielle Privilegien notwendig, so dass der Benutzername und das zugehörige lp-Passwort abgefragt wird. Unter dem Reiter Online-Hilfe findet man die Dokumentation zu CUPS. KDE-Print-Manager
Der KDE-Print-Manager lässt sich sowohl explizit aus einem xterm-Fenster heraus per kups14 aufrufen als auch aus dem Konqueror heraus, indem man dort die URI print:manager eingibt (siehe Bild 8-6). Auch der Kommandoaufruf über ein Terminal führt dorthin: kcmshell printmgr und auch kcmshell Peripherals/printers (viele Wege führen zu dem komfortablen DruckManager):
Symbol für Druckerklasse Anzeige der Drucker Kontextmenü für ausgewählten Druckauftrag
Anzeige der aktuellen Aufträge
Bild 8-6: KDE-Print-Manager als Auftragskontrolle
Der Print-Manager gestattet eine recht weitgehende Administration des PrintSpoolers. Hier lassen sich auch die Auftragswarteschlangen anschauen und Druckaufträge anhalten, fortsetzen, löschen oder deren Priorität ändern. Ebenso ist das Anhalten von Druckern, das Sperren der Druckerwarteschlange (Drucker nimmt keine Aufträge mehr entgegen) oder das Entsperren möglich. Auch die Druckausgabe selbst lässt sich hier anhalten (etwa um Papier zu wechseln) und danach wieder starten – all dies ist auch über kjobviewer möglich (s. Seite 177). Aus dem KDE-Print-Manager lassen sich aber auch neue Drucker einrichten – sowohl lokale als auch zu Spooling-Systemen auf anderen Unix-/Linux-Systemen. Zum Neueinrichten von Druckern wird der KDE-Assistent (Wizard) für die Druckereinrichtung (automatisch) aus dem KDE-Print-Manager aufgerufen (siehe Bild 8-7, 1). Für bestehende Drucker lassen sich hier auch Druckstandardwerte 14. Unter SUSE Linux 9.1 wird beim Aufruf des Kommandos kups als Hinweis ausgegeben, dass es besser sei, kcmshell Peripherals/printers zu verwenden.
175
Das Linux-Drucksystem
setzen (siehe Bild 8-7 2). Für einige Operationen benötigt man Administrationsrechte. Zahlreiche Einstellungen zum CUPS-Server erreicht man im Print-Manager über die Funktion Server einrichten unter dem Icon (siehe Bild 8-7, C). Der KDE-Print-Manager ist auch zu erreichen über das KDE-Kontrollzentrum R Angeschlossene Geräte R Drucker. Zum Einrichten der Print-Spooler und Remote-Spooler müssen natürlich die entsprechenden Softwarepakete installiert sein.
➌
➊
➋
176
Bild 8-7: Spooler-Administration über den KDE-Print-Manager
8.4 CUPS-Administration
kjobviewer Das Programm ist ebenfalls ein GUI-Programm zur Anzeige von Druckaufträgen – jedoch in der Lage, auch die Daten zurückliegender Druckaufträge anzuzeigen. Die Aufrufsyntax erfährt man über kjobviewer --help. Aus der Kommandozeile heraus ruft man es in der Regel per kjobviewer --all -show auf. Es zeigt dann die Druckaufträge aller Drucker. Per kjobviewer --show –d drucker beschränkt es sich auf die des angegebenen Druckers. Unter CUPS ist es – falls entsprechend konfiguriert – auch möglich, alte Druckaufträge erneut ausführen zu lassen.
Bild 8-8: Darstellung der Druckaufträge (auch alter) per kjobviewer
Weitere GUI-Tools für CUPS bietet das GtkLP-Paket (zu finden unter gtklp.sourceforge.net/). Um Dateien zu drucken oder nur die Standardoptionen für einen Drucker anzuschauen oder zu setzen, gibt es dort gtklp. Für die Verwaltung von Druckaufträgen und Druckern wird gtklpq eingesetzt.
177
Das Linux-Drucksystem
Weitere Verwaltungskommandos zum CUPS-Drucksystem Die Administration per Kommandozeile ist in der Praxis teilweise schneller und effizienter als die GUI-basierten Varianten, insbesondere, wenn man sie in Kommandoprozeduren nutzt oder in großen Listen suchen möchte. Auch bei der Administration auf einem entfernten Rechner über einen telnet- oder ssh-Zugang bieten sich die Kommandozeilenprogramme an. Kommandos, die beim Einrichten eines Druckers oder nach Stillegung bei Wartungsaufträgen verwendet werden, sind nachfolgend aufgezeigt. Bei vielen der Kommandos wird unter CUPS das Verwaltungspasswort abgefragt (s. Seite 174). Die Option –E, die bei vielen Kommandos angegeben werden kann, aktiviert eine verschlüsselte Kommunikation zum Server. accept Drucker
/usr/sbin/accept bewirkt, dass der Spooler Aufträge für die mit Drucker angegebenen Drucker oder Druckerklassen annimmt. Dies kann später mit reject aufgehoben werden.
reject [–E] [–h Server] [–r Grund] Drucker /usr/sbin/reject teilt dem Spooler mit, dass keine Aufträge für die angegebenen Drucker oder Druckerklassen mehr angenommen werden sollen. Mittels –r (reason) kann man einen Grund (Kommentar) für die Ablehnung angeben. Der Text Grund wird dann dem Benutzer vom Spooler bei einer Ablehnung von Druckaufträgen ausgegeben. Zur Option –h Server siehe Kommando lpadmin. enable [–E] Drucker … Aktiviert den oder die angegebenen Drucker oder Druckerklassen, so dass sie Druckaufträge starten bzw. fortsetzen. Die Umkehrung hiervon ist disable. disable [–E] [–c] [–h Server] [–r Grund] Drucker Deaktiviert die angegebenen Drucker oder Druckerklassen. Ein begonnener Druckauftrag wird bei einer erneuten Aktivierung mit enable von vorne ausgegeben. Die Option –r Grund erlaubt, einen Grund (Kommentar) für das Anhalten anzugeben. Dieser wird einem Benutzer bei Verwendung von lpstat mitgeteilt. Die Option –c (clear) löscht alle Aufträge des Druckers. Zur Option –h Server siehe Kommando lpadmin. lphelp Drucker oder ppd-Datei Zeigt an, welche Druckoptionen der angegebene Drucker oder das PPD-Profil unterstützen. lpinfo [–E] Optionen /usr/sbin/lpinfo gibt eine Liste mit den verfügbaren Geräten/Druckern oder Treibern des CUPS-Servers aus. Zumindest eine der Optionen –m oder –v muss angegeben werden. lpinfo zeigt nicht Informationen zu den konkret angelegten Druckern, sondern zu den dem CUPS-System (in Tabellen) bekannten Druckern, Treibern und PPDs. 178
8.4 CUPS-Administration
–l –m –v
(long) Liefert detaillierte Information zurück. Gibt eine Liste der auf dem System verfügbaren Druckertreiber aus. Zeigt die dem CUPS-System bekannten Drucker.
lpmove [–E] Aufträge Drucker Erlaubt, die bereits abgesetzten Druckaufträge Aufträge auf den mit Drucker angegebenen Drucker (oder die Druckerklasse) umzusteuern. Statt Aufträge darf auch ein Drucker oder eine Druckerklasse angegeben werden. In diesem Fall werden alle Aufträge für diesen Drucker (oder die Druckerklasse) umgelenkt, und der Spooler nimmt keine neuen Aufträge dafür an. lpoptions [–o Option=Wert …] [Drucker] Erlaubt die Standardoptionen für einen Drucker abzufragen (ohne –o-Optionen) oder durch –o Option=Wert neu zu setzen. lpadmin [–E] [–h Server] –p Drucker [Optionen] lpadmin [–E] [–h Server] –d Drucker lpadmin [–E] [–h Server] –x Drucker /usr/sbin/lpadmin erlaubt unter CUPS auf Kommandoebene die Administration von Druckern, Druckerklassen und den entsprechenden Auftragswarteschlangen, legt den Standarddrucker fest (per –d) oder setzt (per –o) Standardoptionen (Druckparameter) für den Drucker. –h Server
Angabe des anzusprechenden CUPS-Servers (z.B. auf einem Remote-System). Ohne diese Option ist der Server auf localhost bzw. der in der Umgebungsvariablen CUPS_SERVER festgelegte Server gemeint.
–p Drucker
Einfügen von neuen Druckern in eine Klasse und das Löschen einzelner Drucker aus einer Klasse, Zuordnen eines Gerätes oder einer Datei zu einem Druckernamen sowie die Verknüpfung eines Ausgabeprogramms mit einem Drucker. Es können auch Standardoptionen (z.B. die Standardauflösung) für den Drucker gesetzt werden (z.B. als Alternative zum Kommando lpoptions).
–d Drucker
Definition eines Druckers oder einer Druckerklasse als Standarddrucker (default). Drucker muss bereits existieren! Die Kommandos lp, lpr und ähnliche Druck-Clients schicken die Ausgabe zu diesem Drucker, sofern kein Drucker explizit angegeben wird. 179
Das Linux-Drucksystem
–x Drucker
(extract) Drucker, Druckerklasse oder das angegebene Druckerprofil Drucker aus der Liste der verfügbaren Drucker löschen. Ist der Drucker der letzte oder einzige Drucker seiner Klasse, so wird auch die Klasse gelöscht.
CUPS fragt – abhängig von der Konfiguration – nach einem Passwort, bevor
es die Operation ausführt. Mögliche Optionen und ihre Bedeutung sind: –c Klasse
(class) Der Drucker wird Mitglied der angegebenen Klasse. Diese wird, soweit notwendig, neu angelegt.
–D Beschreibung (description) Setzt Beschreibung in der Druckerbeschreibung (dem Kommentar zum Drucker) ein. –L Ort
(location) Setzt oder ändert im Kommentar zum Drucker die Angabe zum Standort des Druckers.
–m [Modell]
Setzt das Modellprogramm oder die PPD Modell als Ausgabeprogramm für Drucker ein. Fehlt Modell, so wird eine Liste der bekannten Modelle ausgegeben.
–o Name=Wert Setzt für den Drucker die nachfolgenden Optionen (Standardvorbelegungen). Dies ist auch mit lpoptions möglich. Per lpoptions –l … lassen sich die aktuell gesetzten Einstellungen/Optionen anzeigen. –P ppd
Ordnet dem Drucker die angegebene PPD zu (PostScript Printer Description). Die PPD wird in der CUPS-Datenbank /etc/cups/ppds.dat gesucht. Als Ergebnis wird im Verzeichnis /etc/cups/ppd eine Datei Druckername.ppd angelegt.
–r Klasse
(remove) Löscht Drucker aus der angegebenen Klasse.
–u Art:Benutzer Legt fest, welche Benutzer auf den Drucker zugreifen können. –u allow:u1,u2, … erlaubt den Zugriff der aufgeführten Benutzer, während –u deny:u1,u2, … den Zugriff für die Benutzer verbietet. allow und deny sind nicht kumulativ, d.h., es müssen alle betreffenden Benutzer in einem Aufruf angegeben werden! –u deny:none gibt den Zugriff für alle Benutzer frei. –v URI
180
Ordnet dem Drucker das Gerät in der angegebenen URI als physikalische Ausgabedatei zu. Ist uri ein Dateiname, so wird er automatisch in /file/gerät umgesetzt. Ansonsten hat URI die Form Anschluss:Gerät, also z.B. parallel:/dev/lpn oder usb:/dev/usb/lpn … (für Details siehe [28]).
8.4 CUPS-Administration
–x Drucker
(extract) Löscht den angegebenen Drucker, die Druckerklasse oder das Druckerprofil (die Instanz). Noch vorhandene Druckaufträge werden gelöscht, bereits begonnene Aufträge abgebrochen.
In der CUPS-Version von lpadmin werden nicht alle Optionen von System V oder Solaris unterstützt. Im Gegensatz zu diesen darf bei entsprechender Einstellung oder nach Eingabe eines CUPS-Administrations-Passwortes nicht nur der Super-User, sondern auch ein normaler Benutzer lpadmin verwenden. Einige Beispiele für lpadmin: lpadmin -p hp1 –c Farbdruck; lpadmin –p hp2 -c Farbdruck Legt (wenn noch nicht vorhanden) eine neue Druckerklasse Farbdruck an und macht die Drucker hp1 und hp2 zu Druckern in der Klasse. lpadmin –p hp1 –u allow:anna,karl Erlaubt (nur!) den Benutzern anna und karl Zugang zum Drucker hp1. lpadmin –p hp2 –v usb:/dev/usb/lp1 –P Apple/LaserWriter_Pro_630 Legt fest, dass das Ausgabegerät für den Drucker hp2 an der USB-Schnittstelle /dev/usb/lp1 angehängt ist und dass der Drucker mit der PPD LaserWriter_Pro_630 von Apple arbeiten soll. Die Beschränkungen (Quotas) beim Drucken für Benutzer und Benutzergruppen lassen sich bei CUPS für einen bestimmten Drucker z.B. folgendermaßen vorgeben: lpadmin –p Drucker –o Name=Wert Als Quotenangaben sind hier z.B. möglich: –o job-k-limit=n Gibt an, wie groß (in kByte) ein Druckjob eines Benutzers maximal sein darf. –o job-page-limit=n Gibt vor, wie viele Seiten ein Benutzer maximal pro Abrechnungsperiode drucken darf (doppelseitig bedruckte Blätter zählen als zwei Seiten). –o job-quota-period=n Definiert die Abrechnungsperiode (n in Sekunden), für die die definierten Druckquoten gelten sollen (Hilfe: ein Tag hat 86 400 Sekunden). CUPS bietet – bei entsprechend installiertem und konfiguriertem Samba – auch
die Möglichkeit, Druckerdienste für Windows-Clients zu unterstützen. Diese können dabei die dafür benötigten Druckertreiber vom Linux-/CUPS-System laden und installieren. Damit lässt sich ein Linux-CUPS-System als preiswerter Windows-
181
Das Linux-Drucksystem
Drucker-Server einsetzen und bietet dann Funktionen, die unter Windows nicht zu finden sind – etwa ein Quota-System und Accounting. Ein installiertes netatalk-Paket vorausgesetzt, können auch Druckaufträge von Apple-MAC-Systemen (unter MacOS 9.x) entgegengenommen werden. Da Mac OS X selbst CUPS unterstützt, ist dessen Anbindung noch einfacher – hier auch in der anderen Richtung. Auf das KDE-Handbuch [52] sei nochmals hingewiesen, das eine sehr detaillierte (englischsprachige) Beschreibung zur CUPS-Server-Konfiguration liefert, dabei die sehr zahlreichen Einstellungsmöglichkeiten bei CUPS aufzeigt und durch die Bedienung des KDE-Print-Managers führt. Gleichfalls ausführlich ist – bei installiertem CUPS und laufendem CUPS-Daemon – die Dokumentation, welche man in einem Webbrowser unter der URL http://localhost:631/documentation.html findet.
8.5
Die Konfigurationsdateien zu CUPS
Der CUPS-Server-Daemon (cupsd) wird in aller Regel automatisch über initd beim Systemstart bzw. beim Eintreffen in den entsprechenden Runlevel gestartet. Die allgemeinen Konfigurationsdateien sind im Verzeichnis /etc/cups/ zu finden. Die wichtigsten Dateien hierzu sind in Tabelle 8-1 aufgeführt. Die meisten der Dateien wird man nicht direkt editieren, sondern über die entsprechenden Konfigurationsprogramme. Eine Ausnahme kann cupsd.conf sein – mit seinen ausgesprochen zahlreichen Möglichkeiten, die nicht alle über lpadmin oder die GUI-Oberfläche zugänglich sind. Hierfür sei auf das gute Operators-Manual zu CUPS [28] verwiesen. Die Druckaufträge selbst werden im Standardfall im Verzeichnis /var/spool/cups abgelegt, die Protokolldateien (access_log, error_log und page_log) in /var/log/cups. Eine Reihe weiterer Ressourcen wie etwa Druckerschriften, Druckermodellbeschreibungen und spezielle Ressourcen zu Rasterkonvertierung liegen im Verzeichnis /usr/share/cups. Diese Ablageorte lassen sich in der Konfigurationsdatei cupsd.conf ändern. Komfortabler und sicherer geht es aber in der Regel über den KDE-Print-Manager. Die Passwörter werden im Standardfall in /etc/cups/passwd.md5 hinterlegt.
182
8.5 Die Konfigurationsdateien zu CUPS
Tabelle 8-1: Konfigurationsdateien von CUPS in /etc/cups Datei
Funktion
certs
Digitales Server-Zertifikat zur sicheren (verschlüsselten) Kommunikation mit dem CUPS-Server.
classes.conf
Definitionen der Druckerklassen.
client.conf
Definitionen zur Konfiguration der CUPS-Clients; hier ist z.B. der Standard-CUPS-Server definiert.
command.types
Festlegung, welche CUPS-Kommandos zur Verfügung stehen.
cupsd.conf
Eigentliche CUPS-Konfigurationsdatei für CUPS-Daemon
interfaces/xxx
Interface- bzw. Konvertierungsprozeduren für das Drucken im System-V-Interface-Stil.
lpoptions
Systemweit (und für alle Drucker) geltende Standardwerte für Optionen. Diese können vom Super-User per loptions gesetzt werden.
mime.convs
Definiert die Filter, welche für die verschiedenen Dateiarten für die Konvertierung verwendet werden sollen.
mime.types
Beschreibt die Mime-Dateitypen für Konvertierung nach PostScript.
passwd.md5
Passwörter (bzw. deren MD5-Hashwerte) für den Zugriff auf den CUPS-Server.
ppd/dname.ppd
PPD-Konfiguration für den Drucker dname; jeweils ein Ein-
trag pro definiertem Drucker. ppds.dat
Datenbank (binär) mit allen PPDs, die CUPS kennt.
printers.conf
Datei mit Definition aller vorhandenen Drucker, ihrer Standardwerte (für Optionen) und weiteren Angaben.
pstoraster.convs
Datei mit Definitionen, wie Rasterdaten für die Ausgabe konvertiert werden.
ssl/
Zertifikate und Kryptoschlüssel (des CUPS-Servers), welche verwendet werden, wenn verschlüsselt kommuniziert wird (Option –E bei vielen lp-Kommandos).
183
Das Linux-Drucksystem
8.6
Rückblick in Stichworten zum Thema Drucken
CUPS, kups Standarddrucker lpstat lp, lpr, kprinter cancel http://localhost:631 KDE-Print-Manager printmgr lppasswd lpadmin, disable, enable …
184
Kapitel 9 Datensicherung
Mag auch die Sicherung der privaten Benutzerdateien dem einzelnen Benutzer überlassen werden, so ist es doch Aufgabe des Systemverwalters, das Gesamtsystem oder zumindest die Information auf dem Systemdatenträger (root device) zu sichern. Im Prinzip sollte man als erfahrener Administrator davon ausgehen, dass Benutzer ihre Daten nicht ausreichend sichern! Es sollten deshalb auch alle relevanten Benutzerverzeichnisse gesichert werden. r Die Gefahr, dass die Information auf einer Magnetplatte, sei es durch Soft- oder Hardwarefehler, zerstört wird, durch Benutzerfehler gelöscht oder durch Viren beschädigt wird, ist auf längere Zeit betrachtet sehr groß, unabhängig davon, um welches Betriebssystem es sich hierbei handelt! Linux bietet gleich eine ganze Reihe von Programmen zum Kopieren
und Sichern von einzelnen Dateien, von Dateibäumen und von ganzen Platteneinheiten. Die wichtigsten Verfahren werden hier vorgestellt und erläutert. 9.1 Überlegungen zur Datensicherung 9.2 Sicherungsmedien 9.3 Vollsicherungen, inkrementelle und laufende Sicherungen 9.4 Sichern unterschiedlicher Bereiche 9.5 Sicherung ganzer Platten 9.6 Dateisysteme oder Verzeichnisse synchronisieren 9.7 Sicherheitsaspekte bei der Datensicherung 9.8 Weitere Sicherungswerkzeuge im Überblick 9.9 Sichern der Stichworte
185
Datensicherung
9.1
Überlegungen zur Datensicherung
Die regelmäßige Datensicherung gehört zum täglichen Brot des Systemverwalters und sollte für alle operativen Systeme selbstverständlich und gut organisiert sein. Eine fehlende Sicherung zeugt von Unprofessionalität! Aber nicht alle Daten lassen sich optimal mit dem gleichen Verfahren sichern. Es gilt deshalb, eine angepasste Sicherungsstrategie aufzubauen. Beim Sichern wird die Sicherungsstrategie nicht allein durch den Sicherungsvorgang bestimmt, sondern auch durch die Zeit, die man sich für das Zurückladen später leisten kann. Je kritischer die Verfügbarkeit der auf dem System laufenden Anwendungen und deren Daten ist und je kürzer die Zeit ist, die maximal für das Zurückspielen zur Verfügung steht, um so ausgefeilter muss das Sicherungskonzept sein. Dabei sind mehrere Ausfallszenarien zu betrachten, die teilweise unterschiedliche Sicherungsverfahren erfordern. Auch die vielfach anzutreffende Aussage, dass man das Betriebssystem und die Anwendungsprogramme selbst nicht zu sichern brauche, da sich diese unproblematisch neu installieren lassen, ist naiv, bedenkt man, wie lange die Neuinstallation und lokale Anpassung insgesamt in Anspruch nimmt. Ein einfaches Zurückspielen von einem Sicherungsband oder einem anderen Sicherungsmedium ist wesentlich schneller. Natürlich muss man dieses Grundsystem nur bei größeren Änderungen neu sichern und nicht in den täglichen oder wöchentlichen Intervallen. Bei den Ausfallszenarien sind folgende drei Fälle zu betrachten: 1. Eine einzelne Datei (oder eine kleine Anzahl von Dateien) wird versehentlich gelöscht oder falsch bearbeitet oder durch einen Virus infiziert. In der Regel ist das Restaurieren einer solchen Datei nicht sehr zeitkritisch. Man kann sie also durchaus in einer tar-, cpio- oder afio-Sicherung suchen und selektiv zurückladen. Vorteilhaft ist bei diesem Vorgang, wenn man die Bänder nicht alle linear durchsuchen muss, sondern zumindest in einem Online-Verzeichnis schnell suchen kann und dann weiß, auf welchem Datenträger die Datei liegt – oder wenn die Dateien auf einem Datenträger mit Direktzugriff liegen. 2. Eine (einzelne) Platte fällt aus oder zeigt Anzeichen von einem Ausfall. Die eleganteste Lösung für dieses Problem sind RAID-Systeme – betrieben im RAID-Level 1 oder Level 5. Hierbei werden die Dateien auf mehreren Platten redundant gespeichert, so dass bei Ausfall einer Platte die Information von der Kopie abgerufen werden kann. Wird die defekte Platte im RAID-Verbund gegen eine neue Platte ausgewechselt, so synchronisiert das RAID-System die Platten erneut, so dass nach einer gewissen Zeit die Daten wieder redundant vorhanden sind. 186
Linux unterstützt RAID entweder über spezielle RAID-Plattencontroller oder per Software-RAID. Die Controllerlösung ist die performantere und elegantere,
9.1 Überlegungen zur Datensicherung
aber auch die teuerere Lösung, da RAID-Controller teuerer als normale Plattencontroller sind. Bei der Software-RAID-Lösung verteilt der RAID-Treiber die Daten über den normalen Plattencontroller auf mehrere Platten. Dies hat aus PerformanceSicht nur beim Schreiben gewisse Nachteile (und später beim Nachsynchronisieren bei Plattentausch). Für Details zur Software-RAID-Lösung sei hier auf das Software-RAID-HOWTO verwiesen. Bei aller berechtigter RAID-Euphorie darf man nicht vergessen, dass das RAIDKonzept nicht hilft, wenn ein Dateisystem oder einzelne Dateien durch menschliches Versehen, Softwarefehler oder durch Viren zerstört werden. Das RAID-System repliziert diese Fehler sofort auf alle Medien des Verbunds. Auch bei Brand oder Wasser ist bei einem RAID-System keine Absicherung vorhanden. Eine Alternative zu RAID sind auch spezielle verteilte Dateisysteme wie etwa InterMezzo oder Coda. 3. Verlust größerer Datenbestände Durch Softwarefehler, Hardwarefehler, Elementarschäden wie Wasser, Feuer, Überspannung oder durch mutwilligen Eingriff in das System (dies können auch Viren sein) können Daten zerstört werden. Dafür benötigt man eine möglichst vollständige und möglichst aktuelle Sicherung, die vorzugsweise auch noch sicher bzw. im Fall von Feuer und Wasser weiter entfernt gelagert ist. Hierfür bieten sich prinzipiell zwei Verfahren an: a)
Kopieren auf Magnetplatten auf einem entfernten Rechner oder ein entferntes Speichersystem. Das Kopieren geschieht entweder über cp, rcp oder scp – oder gleich komprimiert per gzip oder bzip2 mit dem Verzeichnis auf dem Remote-System als Ziel. Daneben gibt es eine Reihe von Programmen zur ständigen oder explizit angestoßenen Synchronisation von Verzeichnissen wie etwa InterMezzo, unison oder per rsync. High-End NAS-1 oder SAN-Speicher z.B. von HP, Sun, IBM, EMC oder Network Appliance bieten dafür in der Regel eigene Werkzeuge, die auch elegante Snapshot-Techniken2 zulassen.
b) Sicherung auf entfernbaren (removable) Datenträgern wie CD, DVD oder Band: Während man für die Sicherung auf Direct-Access-Devices wie ZIPMedien, CD-RW, DVD+RW, DVD-RW oder ähnlichen Datenträgern entweder cp, dd, rcp oder rsync (unter Umständen auch mit Komprimierung per gzip/bzip2) einsetzt, verwendet man für Bänder und Streamer die klassischen Bandsicherungsverfahren wie tar, cpio, afio, taper oder amanda. Bei kleineren Datenbeständen lassen sich auch GUI-Programme wie arc, 1. NAS = Network Attached Storage, d.h. Speichersysteme, welche über das (schnelle) LAN angesprochen werden. 2. Als Snapshot wird eine Art Schnappschuss eines Dateisystemzustands verstanden. Das Dateisystem wird dabei eingefroren und nachfolgende Änderungen in einen neuen Bereich geschrieben. Der eingefrorene Teil lässt sich nun problemlos nochmals sichern, ohne dass das Dateisystem dazu angehalten oder (per umount) ausgehängt werden muss.
187
Datensicherung
kdat oder filer-roller einsetzen. Programme zur Sicherung auf Band müssen in der Lage sein, über mehrere Bänder hinweg zu schreiben und wieder einlesen zu können. Kleinere Volumes/Partitionen kann man komplett auch per dd oder per partimage sichern. Saubere Segmentierung Möchte man die Daten effizient sichern und zurückspielen, so hilft dabei wesentlich eine saubere Segmentierung der Daten, und zwar so, dass die Daten nach ihrer Änderungshäufigkeit auf unterschiedliche Partitionen oder zumindest Dateibäume aufgeteilt werden, also in solche, die sich selten ändern (z.B. Programme, Bibliotheken, Handbücher und ähnliches), in Daten, die sich zuweilen ändern (z.B. Konfigurationsdateien), und Daten, die sich ständig oder häufig ändern (typisch: Benutzer- und Applikationsdaten). Dies erlaubt dann relativ einfach, ein jeweils angepasstes Sicherungsverfahren und Sicherungsintervall für die Daten (oder Partitionen) aufzusetzen. Regelmäßige Sicherungen Datensicherungen haben nur dann einen Wert, wenn fortwährend mit entsprechenden Verfahren gesichert wird. Ist dies nicht möglich oder zu vertreten, so muss zumindest regelmäßig gesichert werden. Dies lässt sich eigentlich nur durch entsprechend aufgesetzte cron-Jobs (s. Seite 246) erledigen, wobei dann nicht vergessen werden darf, die Protokolle auszuwerten und zu kontrollieren, ob die Sicherung fehlerfrei erfolgte!
9.2
Sicherungsmedien
Die Wahl des geeigneten Sicherungsmediums ist wichtiger, als es zunächst erscheinen mag. Das Medium bestimmt sowohl das maximale Sicherungsvolumen pro Einheit als auch die Zugriffsgeschwindigkeit, die Handhabung, Zuverlässigkeit und – in speziellen Fällen, etwa beim Sichern von Buchhaltungsdaten – auch die gesetzliche Zulässigkeit.3 Daten, welche über längere Zeit hinweg gesichert werden sollen, benötigen besondere Überlegungen und unter Umständen optische Datenträger wie CD, DVD, MO- oder WORM-Medien mit langer Datenhaltbarkeit. Inzwischen hat sich – eine korrekte Lagerung vorausgesetzt – die Haltbarkeit von Daten auf modernen Bandmedien jedoch gegenüber den ursprünglichen 12 Monaten erheblich verbessert und liegt realistisch bei etwa 4–5 Jahren. Bedenken Sie jedoch bei der Langzeitspeicherung, dass nach längerer Zeit nicht nur die Daten noch lesbar sein müssen, sondern Sie dazu auch ein geeignetes Laufwerk und die passende Software benötigen! 188
3. Für eine Reihe von Daten aus der Buchhaltung ist die Sicherung auf einmal beschreibbaren optischen Datenträgern angeraten – zusammen mit Einhaltung der Aufbewahrungsfristen.
9.2 Sicherungsmedien
Mehrfach beschreibbare optische Datenträger wie CD-RW, DVD+RW, DVD-RW (RW read write) sind unter dem Aspekt der Zuverlässigkeit eher skeptisch zu betrachten – eine Ausnahme dürfte DVD-RAM sein. Die bisher verfügbaren Dateisystemtreiber für das dort übliche UDF-Dateisystem lassen in der Zuverlässigkeit der hohen Komplexität von UDF wegen noch zu wünschen übrig. Andere potentielle Probleme ergeben sich aus technischen Randbedingungen, wenn diese Medien vielfach wiederbeschrieben werden. Es ist deshalb zumeist besser, CD-R, DVD-R oder DVD+R einzusetzen. Bandsicherungsmedien Das Spektrum an Band-/Streamermedien ist groß und wächst durch die hinzukommenden Generationen der Laufwerke und Medien ständig. Bei größeren Datenmengen sollte man immer zu den hochvolumigen Medien greifen. Diese sind zwar teilweise deutlich teuer, was die Laufwerke und die Sicherungsmedien (Bänder/Kassetten) betrifft, sie haben aber zwei Vorteile: ❐
Eine größere Datenmenge kann unbeaufsichtigt (automatisiert) auf einen Datenträger gespielt werden, ohne dass ein Medienwechsel notwendig ist bzw. der Operator eingreifen muss.
❐
Je großvolumiger das Medium ist, um so höher ist in der Regel auch die Datenübertragungsrate. Damit sinkt die Zeit für das Sichern und insbesondere nach einem Ausfall für das Wiedereinspielen. So fasst z.B. ein AIT-3-Band ca. 100 GB unkomprimiert und etwa 200 GB komprimiert und hat eine Sicherungsleistung von ca. 40 GB pro Stunde und Laufwerk. Das ältere AIT-1-Band fasst dagegen nur etwa 25 GB unkomprimiert und hat mit 10 GB pro Stunde nur ein Viertel der Sicherungsleistung!
Tabelle 9-1 zeigt aktuelle Sicherungsmedien und ihre technischen Daten, die natürlich etwas von Fabrikat zu Fabrikat streuen können. Hat man ein höheres Sicherungsvolumen, so sollte man mehrere Laufwerke parallel betreiben. Die Bandbreite des eingesetzten Busses, der parallel gesicherten Platten oder – bei Sicherung über Netz – die Netzbandbreite könnte zum Flaschenhals werden. Wo vorhanden, sollte man immer die Hardwarekomprimierung des Laufwerkes einsetzen, auch dann, wenn sie nicht ganz den Komprimierungsfaktor von Software erreicht. Dafür ist sie aber deutlich schneller und einfacher zu handhaben. Den angegebenen Komprimierungsfaktoren der Hersteller sollte man eher misstrauen. Im Schnitt dürfte bei normalen Daten ein Faktor von 1,5–2 realistisch sein. Die Komprimierung kann jedoch die Kompatibilität zwischen unterschiedlichen Systemen beeinträchtigen (sofern dies eine Rolle spielt). DAT-Bänder, obwohl immer noch sehr verbreitet, sind keine idealen Sicherungs-
medien, da sie einerseits nicht mehr technisch weiterentwickelt werden und damit für große Sicherungskapazitäten zu klein sind. Gravierender ist jedoch der Umstand, dass die Bänder einem deutlichen Verschleiß (Abrieb) unterliegen und des189
Datensicherung
Tabelle 9-1: Bandspeicher Technik
MLR3 DDS-3 DAT DDS-4 DAT Exabyte-Band Mammoth Mammoth-2 AIT-1 AIT-2 AIT-3 S-AIT DLT-4 S-DLT SD3 D2 LTO-1 LTO-2
Bandbreite 1/4"-Kass. 4 mm 4 mm 8 mm 8 mm 8 mm 8 mm 8 mm 8 mm 12,65 mm 12,65 mm 12,65 mm 12,65 mm 4 mm 12,65 mm 12,65 mm
Kapazität je Medium in GB* 25–50 12–24 24–48 7–14 20–40 60–120 25–50 50–100 100–200 500–1000 40–80 160–320 75–150 165–330 100–200 200–400
mittlere nominale Bandzyklen LadeTransferrate ca. + Zugriffszeit 20+40 s 20+30 s 20+30 s 20+40 s 20+53 s 20+30 s 20+45 s 20+45 s 20+30 s 20+30 s 17+53 s 17+35 s 17+53 s 30 +52 s 20+30 s 20+30 s
2 MB /s 1 MB/s 2 MB /s 2 MB/s 4 MB /s 12 MB/s 6 MB /s 6 MB/s 12 MB /s 30 MB/s 5 MB /s 16 MB/s 11 MB /s 15 MB/s 15 MB /s 30 MB/s
150 40 40 25
500 500 1000 30 000 1 000 1 Million
1 Million 1 Million
* Der höhere Wert gilt mit Hardwarekomprimierung im Faktor 2 : 1. Die Ladezeit gilt z. B. für einen typischen Roboter; die Transferrate bei unkomprimierten Daten. Der zweite Wert ist die Zeitdauer, bis das halbe Band durchgespult ist.
halb nur relativ wenig Bandzyklen zulassen. Zusätzlich müssen die Köpfe, bedingt durch den Bandabrieb, häufig mit einem Reinigungsmedium gesäubert werden. Bei großvolumigen Bandmedien muss man nicht unbedingt das gesamte Medium ausnutzen. Oft ist es günstiger, nur ein logisches Linux-Volume auf ein Band zu schreiben, so dass man bei mehreren Bandlaufwerken sowohl mehrere PlattenVolumes parallel sichern und insbesondere später parallel zurückladen kann. Auch ist es so möglich, bei Ausfall eines einzelnen Volumes dieses vom Bandanfang einzuspielen, statt zuvor den davor liegenden Sicherungsbereich per Spulen überspringen zu müssen. Die Bandverwaltung vereinfacht sich so und wird damit sicherer. Bei den genannten Bandlaufwerken kommen fast ausschließlich SCSILaufwerke zum Einsatz – oder gleich Einheiten, welche per SAN (Storage Area Network) oder per ISCSI (SCSI over IP) angesprochen werden. Bei größeren Sicherungsmengen wird man Bandroboter einsetzen. Diese werden auch als Stacker oder Tape-Library bezeichnet.
190
Als Backup-Programme kommen dann entweder amanda oder die kommerziellen Produkte z.B. von Veritas, Legata, CA oder der IBM/Tivoli Storage Manager in Frage. Sie besitzen die notwendigen Funktionen zur Buchführung über die Bandbenutzung und zur Roboteransteuerung. Sie können (per entsprechende Clients) Daten von mehreren unterschiedlichen Systemen wie Linux, verschiedenen Unix-
9.3 Vollsicherungen, inkrementelle und laufende Sicherungen
Systemen oder Windows sichern. Auf die kommerziellen Tools werden wir in diesem Buch nicht eingehen.
9.3
Vollsicherungen, inkrementelle und laufende Sicherungen
Beim Sichern gibt es drei Varianten: 1. Vollsicherung Hierbei werden alle zu sichernden Daten vollständig gesichert. Natürlich kann man auch hier nicht sicherungswürdige Daten ausklammern. Die Daten einer Vollsicherung lassen sich bei einem umfangreichen Datenverlust relativ einfach und schnell entweder vollständig oder selektiv zurückladen. 2. Inkrementelle Sicherung Hierbei werden nur die Daten gesichert, die sich seit der letzten Sicherung geändert haben. Dies reduziert in der Regel wesentlich das zu sichernde Volumen und geht damit (nach der ersten Basissicherung) wesentlich schneller. Beim Restaurieren der Daten müssen aber unter Umständen zunächst die Basissicherung und nachfolgend die verschiedenen Inkremente geladen werden. Das Rückladen kann damit wesentlich länger dauern. 3. Synchronisation mit einem zweiten Verzeichnis Hierbei werden die Dateien eines Verzeichnisses mit denen eines zweiten Verzeichnisses – zumeist auf einem anderen Rechner – synchronisiert. Dies kann entweder fortlaufend oder in bestimmten Zeitintervallen erfolgen oder explizit angestoßen werden – etwa nachdem ein Laptop wieder im Firmennetz ist. Aus diesen Verfahren lassen sich nun zahlreiche Strategien zusammensetzen. Ein relativ einfaches Verfahren besteht z.B. darin, dass man wöchentlich eine Vollsicherung durchführt und innerhalb der Woche nur noch die Veränderungen inkrementell sichert. Dabei kann man sich überlegen, ob die Inkremente jeweils zum Vortag oder zur letzten Vollsicherung angelegt werden. Letzteres dauert länger beim Sichern, ist aber beim Restaurieren schneller, insbesondere zum Wochenende hin. Fast alle typischen Sicherungsprogramme wie etwa cpio, tar, afio, taper oder amanda sowie alle kommerziellen Sicherungsprogramme unterstützen die Vollsicherung und die inkrementelle Sicherung. Auch dump und restore bieten dies – sind allerdings dateisystemspezifisch und stehen (bisher) nur für ext2 und ext3 zur Verfügung. Beim Sichern sollte man immer mehrere Kopien der Daten halten und ältere Sicherungen erst nach einiger Zeit löschen bzw. die Bänder wiederverwenden. Auch für das Synchronisieren zweier Verzeichnisse gibt es mehrere Linux-Programme. Hierzu zählen z.B. rysnc und unison. 191
Datensicherung
9.4
Sichern unterschiedlicher Bereiche
Das für die Datensicherung eingesetzte Verfahren ist in aller Regel darauf abzustimmen, was gesichert werden soll: einzelne Dateien, ganze Dateibäume oder ganze Partitionen. Die nachfolgenden Abschnitte zeigen, was für die einzelnen Bereiche passend ist.
9.4.1
Sichern einzelner Dateien mit cp
Einzelne Dateien sichert man am einfachsten und schnellsten mit Hilfe des cpKommandos auf andere Platten, Disketten oder USB-Speichersticks. Hierzu muss der Datenträger formatiert, mit einem geeigneten Dateisystem (z.B. per /sbin/mkfs) initialisiert und mit mount4 in ein freies Verzeichnis montiert sein. Gerade im Austausch mit anderen Betriebssystemen kann man natürlich auch vorformatierte Disketten (für DOS) verwenden, soweit Disketten noch eingesetzt werden. Schließlich wird mit cp kopiert: > cp *.sxw
/media/floppy/backup
kopiert alle OpenWrite-Dokumente (mit der Endung ›.sxw‹) des aktuellen Verzeichnisses in das Verzeichnis /media/floppy/backup, welches z.B. auf einer Diskette (Floppy) liegen kann. > cp -ru /home/juergen/Texte /media/floppy
kopiert (rekursiv) alle Dateien des Dateibaums in /home/juergen/Texte auf das Dateisystem, welches in /media/floppy liegt. Sind dort bereits Dateien gleichen Namens vorhanden, so werden sie nur überschrieben, wenn sie älter als die zu kopierenden Dateien sind. Die vollständige Syntax des cp-Kommandos lautet: cp [Optionen] Datei_1 Datei_2 cp [Optionen] Datei_1 [Datei_2 …] Verzeichnis Kommando, um Dateien zu kopieren
Das cp-Kommando kopiert Datei_1 in eine neue Datei Datei_2. Existiert Datei_2 bereits, so wird die alte Version überschrieben. Dieses Verhalten kann jedoch mit Optionen gesteuert werden. Existiert Datei_2 noch nicht, so erhält sie die Attribute von Datei_1, allerdings mit neuem Modifikationsdatum. Ist das letzte Argument ein Verzeichnis (zweite Form), so werden die davor stehenden Dateien unter dem gleichen Namen in dieses Verzeichnis kopiert. Die wichtigsten Optionen sind nachfolgend aufgeführt, die in eckigen Klammern an192
4. Ab SUSE Linux 9.1 werden Disketten, CDs und andere entfernbare Datenträger automatisch ein- und ausgehängt (s. Seite 112).
9.4 Sichern unterschiedlicher Bereiche
gegebenen Optionen sind alternativ möglich: -a
[--archive] Versucht, die Attribute wie Eigentümer, Zugriffsrechte usw. möglichst unverändert beizubehalten, Links werden nicht aufgelöst (synonym zu -dpr).
-b
[--backup] Erzeugt (bei bereits existierenden Zieldateien) eine Sicherungskopie mit der Endung ›~‹, anstatt die Datei zu überschreiben.
--backup=Typ (vormals -V Typ) legt fest, wie Sicherungskopien (bei bereits vorhandenen Zieldateien) behandelt werden sollen. Mögliche Angaben für Typ sind: t, numbered Die Kopien werden durchnumeriert. nil, existing Die Sicherungen werden durchnumeriert, wenn schon eine numerierte Sicherung besteht. Ansonsten wird eine einfache Sicherung (z.B. ›x~‹) erstellt. never, simple Es werden immer einfache Sicherungen erstellt. -d
[--no-dereference] Löst keine symbolischen Links auf, dies bedeutet, dass Dateien nicht kopiert werden, auf die mit symbolischen Links verwiesen wird! (siehe -L)
-f
[--force] Überschreibt existierende Dateien ohne Warnung.
-i
[--interactive] Würde durch das Kopieren eine bereits existierende Datei überschrieben, so wird mit -i vor dem Kopieren nachgefragt, ob die Datei wirklich überschrieben werden soll. Nur bei einem ›y‹ (oder ›j‹ bei deutschen Versionen) als Antwort wird überschrieben.
-L
Übernimmt die Dateien, auf die mit symbolischem Link verwiesen wird.
-p
[--preserve] Überträgt die Zugriffsrechte (-modi) und das Datum der letzten Modifikation der zu kopierenden Datei auf die neu angelegte Datei.
-r
[ --recursive] Ist eine der zu kopierenden Dateien ein Verzeichnis, so wird mit dieser Option der gesamte darin enthaltene Dateibaum (rekursiv) mit kopiert.
-u
[--update] Überschreibt eine bereits existierende Zieldatei nur dann, wenn die Quelldatei neuer als oder gleich alt wie die Zieldatei ist.
Hier noch ein ausführliches Beispiel, das die unterschiedlichen Auswirkungen bei symbolischen Links und der Versionsnumerierung zeigt: Der Inhalt von Verzeichnis /home/chr/Texte enthält: chr@Jogyli:~/Texte> ll insgesamt 12 -rw-r--r-- 1 chr users 1158 2004-06-07 09:48 fdisk.txt -rw-r--r-- 1 chr users 1049 2004-06-07 09:20 fstab.txt -rw-r--r-- 1 chr users 29 2004-06-03 15:27 sicherungshinweis.txt lrwxrwxrwx 1 chr users 31 2004-08-20 13:56 ToDoListe.sxc -> /home/chr/SicherungMac/ToDo.sxc
193
Datensicherung
Um diese Dateien auf eine Diskette zu kopieren, wobei die Originaländerungsdaten erhalten bleiben sollen, würde das Kommando lauten: chr@Jogyli:~> cp -ru /home/chr/Texte /media/floppy/ cp: Erzeugen der symbolischen Verknüpfung „/media/floppy/Texte/ToDoListe.sxc“ nicht möglich: Die Operation ist nicht erlaubt
Die Fehlermeldung erscheint, weil auf FAT/VFAT-Systemen keine symbolischen Links angelegt werden können. Das Verzeichnis Texte und alle anderen Dateien wurden auf die Diskette kopiert. Das gleiche Kommando auf das Verzeichnis /tmp statt /media/floppy hätte unter /tmp/Texte zu den obigen Dateien auch den symbolischen Link mit übernommen: -rw-r--r--rw-r--r--rw-r--r-lrwxrwxrwx
1 1 1 1
chr chr chr chr
users 1158 2004-06-07 09:48 fdisk.txt users 1049 2004-06-07 09:20 fstab.txt users 29 2004-06-03 15:27 sicherungshinweis.txt users 31 2004-08-20 13:56 ToDoListe.sxc -> /home/chr/SicherungMac/ToDo.sxc
Wiederholt man das Kommando (Ausgabe auf Diskette) mit folgenden Optionen chr@Jogyli:~> cp -rpL --backup=t /home/chr/Texte /media/floppy/ chr@Jogyli:~> ll -R /media/floppy/ /media/floppy/: insgesamt 1 drwxr-xr-x 2 chr users 1024 2004-08-20 13:56 Texte /media/floppy/Texte: insgesamt 24 -rwxr-xr-x 1 chr users 1158 2004-06-07 09:48 fdisk.txt -rwxr-xr-x 1 chr users 1158 2004-06-07 09:48 fdisk.txt.~1~ -rwxr-xr-x 1 chr users 1049 2004-06-07 09:20 fstab.txt -rwxr-xr-x 1 chr users 1049 2004-06-07 09:20 fstab.txt.~1~ -rwxr-xr-x 1 chr users 29 2004-06-03 15:27 sicherungshinweis.txt -rwxr-xr-x 1 chr users 29 2004-06-03 15:27 sicherungshinweis.txt.~1~ -rwxr-xr-x 1 chr users 8441 2004-07-16 21:52 ToDoListe.sxc
sieht man zum einen, dass der symbolische Link aufgelöst und die darauf verwiesene Datei mit Namen der symbolischen Datei angelegt wurde, zum anderen, dass für die bereits existierenden Dateien zusätzliche Dateien mit entsprechender Versionsnummer (~1~) kopiert wurden (durch die Option --backup=t). Dass die Zugriffsrechte trotz Option -p nicht übertragen wurden, liegt am VFAT-Dateisystem der Floppy. Sichern netzwerkweit über scp Eine Variante zur sicheren – d.h. verschlüsselten – Übertragung über Netz auf ein anderes System ist scp (secure copy). Hier muss als Teil der Quelle oder des Ziels die Adresse oder der Name des Hostsystems angegeben werden. Der relative Pfad bezieht sich dabei auf das Home-Verzeichnis auf dem Remote-System: chr@Jogyli:~> scp *.txt
194
toshili/chr:Texte
kopiert alle Dateien der Endung ›.txt‹ im aktuellen Verzeichnis in das eigene Home-Verzeichnis auf dem Rechner ›Toshili‹ und dort in das Verzeichnis ›Texte‹.
9.4 Sichern unterschiedlicher Bereiche
Hierbei wird vorab der key fingerprint ausgetauscht: The authenticity of host 'toshili (192.168.0.10)' can't be established. RSA key fingerprint is 2f:3f:75:3a:a2:1d:26:2d:cb:36:73:49:fe:ad:de:04. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'toshili' (RSA) to the list of known hosts. chr@toshili's password: xxxxxx fdisk.txt 100% 1158 1.1KB/s 00:00 fstab.txt 100% 1049 1.0KB/s 00:00 sicherungshinweis.txt 100% 29 0.0KB/s 00:00
scp verwendet den ssh-Mechanismus für die Authentifizierung am Remote-System und für die Übertragung. Abhängig von der Art der Authentifizierung bei ssh ist für die Authentifizierung entweder das Benutzerpasswort am Remote-System einzugeben oder die Passphrase für den (lokalen) privaten Schlüssel.5 Liegen die Dateien im Verzeichnis eines anderen Benutzers, so ist auch dieser Benutzername (Account-Name) anzugeben (Schreibweise: account@host:Datei). Jogyli:~ # scp carsten@toshili:Texte/Beispiel.txt . The authenticity of host 'toshili (192.168.0.10)' can't be established. RSA key fingerprint is 2f:3f:75:3a:a2:1d:26:2d:cb:36:73:49:fe:ad:de:04. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'toshili' (RSA) to the list of known hosts. carsten@toshili's password: xxxxxx Beispiel.txt 100% 993 1.0KB/s 00:00
Obiger Aufruf kopiert in das Home-Verzeichnis des Benutzers carsten auf dem Rechner Toshili die Datei Beispiel.txt in das Unterverzeichnis Texte. Hier ist zur Authentifizierung das Passwort des Benutzers carsten anzugeben. Das Programm scp kennt etwas weniger (und einige andere) Optionen als cp (für Details siehe ›man scp‹).
9.4.2
Sichern von Dateibäumen
Das Sichern ganzer Verzeichnisse oder Dateibäume geschieht in der Regel auf Magnetband, Streamerkassetten oder optische Platten (CD, DVD etc.). Hierzu stellt das Linux-System die Programme tar und cpio zur Verfügung – oder die später beschriebenen Programme zur Datensynchronisation wie etwa rsync, unison oder InterMezzo. Sehr populär sind auch CD- und DVD-Brenner; auf letztere passen etwa 4,3 GB an Daten, das sind unkomprimiert oftmals 8–10 GB, bei reinen Textdateien oder halbvollen Datenbanken teilweise sogar mehr. Für das Sichern auf nur einmal beschreibbare optische Platten setzt man die speziellen CD-Brennprogramme wie etwa k3b, gtoaster nautilus-cd-burner, mkisofs oder xcdroast ein – auf sie wird hier nicht weiter eingegangen6. Bei tar oder cpio werden die zu sichernden Dateien jeweils zu Archiven zusammengebaut und diese Archive dann auf den externen Datenträger geschrieben. 5. Die Beschreibung von ssh finden Sie auf Seite 278. 6. Eine ausführliche Beschreibung zum Brennen auf CDs finden Sie unter [55].
195
Datensicherung
Das Archiv kann jedoch ebenso in eine Datei geleitet werden – eventuell auf einem anderen System. Die Programme tar, cpio und afio erlauben sowohl das Sichern einzelner Dateien und ganzer Dateibäume als auch das selektive Zurücklesen einzelner Dateien aus einem Sicherungssatz. Dabei erhält das Programm tar seine zu sichernden Dateien als Kommandoparameter, während cpio die Namen der zu sichernden Dateien von der Standardeingabe liest. Bei beiden Programmen können verschiedene Blockungsgrößen angegeben werden. Eine große Blockung hat den Vorteil, dass das Sichern und Zurückladen schneller abläuft und wegen der kleineren Anzahl von Interrecord Gaps weniger Bandlänge benötigt. Ein weiterer Vorteil dieser Programme ist der Umstand, dass das ursprüngliche Erstellungsdatum der Dateien mitgesichert wird und beim Wiedereinlesen erhalten bleiben kann. Dateien können jeweils mit relativem oder absolutem Namen gesichert werden. In den meisten Fällen ist die Sicherung mit relativen Dateinamen vorzuziehen, da diese Dateien dann später problemlos in andere Verzeichnisse zurückgelesen werden können. Die Versionen von GNU tar und cpio bzw. find erlauben auch den Vergleich auf das Modifikationsdatum von Dateien z.B. mittels > find
.
–newer /var/log/Sicherungsprotokoll [...]
Die Datei /var/log/Sicherungsprotokoll wurde z.B. bei der letzten Sicherung erstellt. Mit der Abfrage -newer werden alle Dateinamen ausgegeben, die neuer sind als das Datum der angegebenen Referenzdatei. Auf diese Weise können nur die geänderten Dateien seit der letzten Sicherung erfasst werden (inkrementelle Sicherung). Bei GNU tar kann ein Datumsvergleich auch per Option erfolgen (--newer). tar erlaubt in den unter Linux üblichen GNU-tar-Versionen die Daten (per Option -z oder -Z bzw. -j) automatisch zu komprimieren. Bei cpio fehlt die Möglichkeit. Hier ist aber bei Bandgeräten in aller Regel die Hardwarekomprimierung durch das Laufwerk vorzuziehen. Mit tar erzeugte Archive sind über Unix-/Linux-Implementierungen hinweg kompatibel und können hier überall wieder eingelesen werden. Sie werden auch für die Nachinstallation von Softwarepaketen eingesetzt (s. Seite 357). Implementierungen von tar existieren neben Unix und Linux auch für fast alle anderen populären Rechner- und Betriebssysteme.
196
9.4 Sichern unterschiedlicher Bereiche
9.4.2.1
Sichern mittels tar
Die allgemeine Syntax des tar-Kommandos lautet: tar Funktion [Optionen] [Datei(en)] Kommando, um ein Sicherungsarchiv zu erstellen oder einzulesen
Mit Funktion wird angegeben, welche Operation (Archiv erstellen oder einlesen) erfolgen soll. Der Parameter Datei(en) gibt an, welche Dateien oder Dateibäume herausgeschrieben oder wieder eingelesen werden sollen. Wird beim Anlegen mit Datei ein Verzeichnis angegeben, so wird der gesamte darin enthaltene Dateibaum übertragen. Die wichtigsten Funktionscodes sind: c
(create) Erstellen
x
(extract) Wiedereinlesen
Bei den 1-Zeichen-Funktionen darf das führende ›–‹ weggelassen werden. Nachstehend sind die Funktionen im einzelnen erläutert. In eckigen Klammern sind alternativ die ausführlichere Eingabe der Funktionen/Optionen angegeben, die mit -- einzugeben sind. Es kann jeweils nur eine Funktion gewählt werden: -c
[--create] Legt ein neues Archiv an. Wird auf auf Band gesichert, beginnt die Sicherung am Bandanfang, anstatt wie sonst hinter der letzten Datei des Bandes.
-d
[--diff] [--compare] Vergleicht die im Archiv abgelegten Dateien mit den angegebenen Dateien.
-r
[--append] Die genannten Dateien werden am Ende des bereits existierenden Archivs (oder Bands) angehängt.
-t
[--list] (table) Das Band oder Archiv wird nach den vorgegebenen Namen durchsucht und die gefundenen Namen werden ausgegeben. Damit wird ein Inhaltsverzeichnis des Archivs erstellt. Ohne Angabe von Namen wird das gesamte Inhaltsverzeichnis des Archivs ausgegeben.
-u
[--update] Die genannten Dateien werden nur dann in das Archiv geschrieben (am Ende angehängt), wenn sie entweder noch nicht im Archiv (oder auf dem Band) stehen oder neuer als jene im Archiv sind.
-x
[--extract] [--get] Die genannten Dateien sollen aus dem Archiv gelesen werden. Fehlt die Angabe der Dateien, so werden alle Dateien extrahiert.
Als Ergänzung zu der gewählten Funktion gibt es Optionen, die eine differenzierte Verarbeitung zulassen. Hier eine Auswahl der häufig genutzten Optionen: 197
Datensicherung
-b n
[--block-size=Blöcke] Gibt die zu verwendende Blockgröße an (in 512-Byte-Einheiten, Standard = 20). Beim Einlesen von einem raw device wird die Größe automatisch ermittelt.
-C Verz
[--directory=Verzeichnis] Wechselt vor der tar-Ausführung in das angegebene Verzeichnis.
-f Archiv
[--file=Archiv] Das nachfolgende Argument Archiv wird als Name des Gerätes (bzw. des Dateisystems) angesehen, auf das gesichert oder von dem gelesen werden soll. Archiv darf auch eine Komponente auf einem anderen Rechner sein (Form: Rechner:Datei).
-f –
Wird ›f –‹ Angegeben, so ist damit die Standardein- oder -ausgabe gemeint. Damit kann aus einer Pipe gelesen oder in eine Pipe geschrieben werden.
-F Skript
[--info-script=Skript] Wird nur bei -M wirksam und führt dann am Ende jeden Archivs/Bands die mit Skript angegebene Shell-Prozedur aus.
-g Archiv [--listed-incremental=Archiv] Legt eine inkrementelle Sicherung des neuen GNU-tar-Typs an (oder liest sie).
wichitig!
-G Archiv [--incremental=Archiv] Legt eine inkrementelle Sicherung im alten GNU-tar-Format an (oder liest sie). -h
[--dereference] Symbolische Verweise (symbolic links) werden behandelt wie normale Dateien, d.h., sie werden aufgelöst und mit in das Archiv übernommen. Normalerweise übersieht tar symbolische Verweise.
-i
[--ignore-zeros]
Ignoriert Blöcke der Größe 0 Byte.
wichitig!
--ignore-failed-read Bricht nicht, wie üblich bei tar, bei nicht lesbaren Dateien ab, sondern überspringt die Datei. -j
[--bzip2] [--bunzip2] Komprimiert oder dekomprimiert die Dateien im Archiv per bzip2/bunzip2.
-k
[--keep-old-files] Bereits existierende Dateien werden beim Zurückladen nicht (wie sonst üblich) überschrieben.
-l
[--one-file-system] grenzen hinaus.
-M
[--multi-volume] Es wird ein aus mehreren Bändern/Volumes bestehendes Archiv angelegt oder gelesen.
Geht beim Archivieren nicht über Dateisystem-
-N Datum [--newer=Datum] Hiermit werden alle Dateien ignoriert, die älter als Datum sind. Der 20.8.2004 wird angegeben mit 2004-08-20. 198
9.4 Sichern unterschiedlicher Bereiche
--newer-mtime=Datum Datum und Uhrzeit werden nur verglichen, wenn sich der Dateiinhalt geändert hat. -O
[--to-stdout] aus.
-p
[--same-permission] [--preserve-permission] Liest Dateien mit ihren ursprünglichen Modi und Zugriffsrechten ein.
Gibt die extrahierten Dateien auf Standardausgabe
--no-same-permission Beim Auspacken werden keine Zugriffsrechte übernommen, sondern neu gesetzt. -P
[--absolute-names] Absolute Pfadnamen bleiben erhalten. Ohne diese Option werden ›führende / ‹ entfernt.
--rsh-command=Befehl Verbindet sich statt mit rsh mit dem angegebenen Befehl (z.B. ssh auf einen entfernten Rechner für einen Zugriff). -T Datei
[--files-from=Datei] Hierbei liest tar die Namen der zu archivierenden Datei aus Datei.
-v
[--verbose] Während tar normalerweise keine speziellen Meldungen ausgibt, wird mit der -v-Option der Name jeder übertragenen Datei mit zusätzlichen Informationen ausgegeben.
-w
[--interactive] Veranlasst tar vor jeder Aktion, den Dateinamen und die Art der Aktion auszugeben und auf eine Benutzerbestätigung zu warten. Die Aktion wird bei Eingabe von y ausgeführt.
-W
[--verify] Prüft das Archiv nach dem Anlegen auf Korrektheit.
-X Datei
[--exclude-from=Datei] In Datei sind Dateien angegeben worden, die von den tar-Operationen ausgenommen und nicht übertragen werden sollen.
-z
[--gzip] [--gunzip] Komprimiert oder dekomprimiert die Dateien bei der Operation mit gzip/gunzip.
Mit tar --help erhalten Sie die vollständige Liste der möglichen Optionen (soweit sie die Sprachauswahl auf Deutsch gesetzt haben, sogar in deutsch). Die vielen Optionen mögen vielleicht etwas verwirrend sein, doch nachfolgende Beispiele zeigen die praktische Anwendung. Eine typische Sicherung des im aktuellen Verzeichnis beginnenden Dateibaums auf ein Band sähe mit tar wie folgt aus (dabei sei angenommen, dass /dev/tape auf das geeignete Bandlaufwerk verweist – für Streamer wäre die Gerätedatei /dev/st0 bzw. /dev/nst0, siehe Seite 149). Als Beispiel verwenden wir die gleichen Dateien wie beim Kopieren mit cp:
199
Datensicherung
chr@Jogyli:~/Texte> tar -cvf /dev/tape -b 20 . ./ ./fstab.txt ./ToDoListe.sxc ./sicherungshinweis.txt ./fdisk.txt
Die ›20‹ bezieht sich hier auf die Option -b und gibt einen Blockungsfaktor (in Vielfachen von 512 Byte) an. Beim Wiedereinlesen der Daten ist es wichtig, zu wissen, mit welchem Pfad die Daten gespeichert wurden. Vorab lässt sich der Inhalt des Bandes kontrollieren mit: chr@Jogyli:~/Texte> tar -tvf /dev/tape drwxr-xr-x chr/users 0 2004-08-20 13:56:47 ./ -rw-r--r-- chr/users 1049 2004-06-07 09:20:25 ./fstab.txt lrwxrwxrwx chr/users 0 2004-08-20 13:56:47 ./ToDoListe.sxc -> /home/chr/SicherungMac/ToDo.sxc -rw-r--r-- chr/users 29 2004-06-03 15:27:38 ./sicherungshinweis.txt -rw-r--r-- chr/users 1158 2004-06-07 09:48:05 ./fdisk.txt
Hier sehen wir auch, dass ohne zusätzliche Option der symbolische Link als solcher archiviert wurde. Um statt des symbolischen Links die eigentliche Datei zu kopieren, gibt man die Option -h beim Erstellen der Sicherung an. So wie bei der Erstellung die Pfadangaben übernommen wurden, so werden sie bei einem Wiedereinlesen der Daten mit evtl. Unterverzeichnissen relativ zum aktuellen Verzeichnis angelegt. Man muss also zuerst in das entsprechende Verzeichnis wechseln, denn tar erlaubt nicht anzugeben, in welches Verzeichnis die Dateien beim Einlesen geschrieben werden sollen! Falls Dateien mit gleichem Namen vorhanden sind – auch bei neuerem Datum –, werden sie per Standardeinstellung überschrieben. Es ist deshalb zu empfehlen, sich vorab das tar-Archiv mit der Funktion -t anzuzeigen. Sollen vorhandene Dateien nicht überschrieben werden, gibt man beim Einlesen die Option -k mit an. Das Originaldatum von der Sicherung und die Zugriffsrechte bleiben erhalten: chr@Jogyli:~/Texte> tar -xvf /dev/tape ./ ./fstab.txt ./ToDoListe.sxc ./sicherungshinweis.txt ./fdisk.txt chr@Jogyli:~/Texte> ll insgesamt 12 -rw-r--r-- 1 chr users 1158 2004-06-07 -rw-r--r-- 1 chr users 1049 2004-06-07 -rw-r--r-- 1 chr users 29 2004-06-03 lrwxrwxrwx 1 chr users 31 2004-08-22 /home/chr/SicherungMac/ToDo.sxc
09:48 09:20 15:27 16:56
fdisk.txt fstab.txt sicherungshinweis.txt ToDoListe.sxc ->
Um zu testen, ob eventuelle Unterschiede zu den bestehenden Dateien vorhanden sind, kann dies vorab überprüft werden: 200
9.4 Sichern unterschiedlicher Bereiche
chr@Jogyli:~/Texte> tar -dvf /dev/tape ./ ./fstab.txt ./ToDoListe.sxc ./sicherungshinweis.txt ./sicherungshinweis.txt: Änderungszeit ist unterschiedlich ./sicherungshinweis.txt: Größe ist unterschiedlich ./fdisk.txt
Sollen nur bestimmte Dateien wieder eingelesen werden, so gibt man sie als Parameter an: chr@Jogyli:~/Texte> tar -dvf /dev/tape "./fd*" ./fdisk.txt
Hierbei sind auch Dateinamenexpansionen erlaubt, wie sie unter der Shell verwendet werden. Zu beachten ist, dass die gesuchte Datei mit ›./‹ angegeben wird. tar ist nicht auf die Verwendung mit einem externen Datenträger beschränkt, sondern erstellt das Archiv (tarfile) auf jedes hinter der Option ›-f‹ angegebene Objekt – also auch auf eine Datei. Möchte man also statt auf Band eine komprimierte Archivdatei Sicherung.tar.gz im Verzeichnis /tmp erstellen, so sieht die Anweisung wie folgt aus: chr@Jogyli:~/Texte> tar -cvzf /tmp/SicherungTexte.tar.gz . ./ ./fstab.txt ./ToDoListe.sxc ./sicherungshinweis.txt ./fdisk.txt chr@Jogyli:~/Texte> ll /tmp/SicherungTexte.tar.gz -rw-r--r-- 1 chr users 1025 2004-08-22 18:03 /tmp/SicherungTexte.tar.gz
Das folgende Kommando erstellt ebenso ein komprimiertes Archiv, liest aber die Namen der zu sichernden Dateien aus der Datei ›liste‹: chr@Jogyli:~/Texte> tar -cvzf /tmp/SicherungListe.tar.gz -T liste
Die folgende Sequenz packt die Dateien im aktuellen Verzeichnis (dieses ist durch ›.‹ vorgegeben) auf dem lokalen System in ein Archiv, das über eine Pipe an das Kommando ssh weitergegeben wird, das auf dem Rechner ›Toshili‹ das dd-Kommando (siehe Seite 206) aufruft, um das Archiv dort in Geschaeft.tar.gz anzulegen. chr@Jogyli:~/Geschaeft> tar -cvzf - . | ssh toshili dd of=Geschaeft.tar.gz chr@toshili's password:xxxxx ./2003/ ./2003/WeihnNeutral.sxw ./2003/WeihnBrief.sxw …
Dabei wird von ssh wie üblich nach der Login-Authentifikation gefragt. Wählt man bei der Erstellung der tar-Datei absolute Pfadnamen, so werden diese entfernt. Nur über die Option -P kann mit absoluten Pfadnamen gesichert werden. Beim Wiedereinlesen versucht tar diese zu verwenden und ggf. entsprechende Verzeichnisse anzulegen. Fehlt dem Benutzer die Berechtigung hierzu (nur root
201
Datensicherung
darf Verzeichnisse unter ›/‹ anlegen), so meldet tar diesen Fehler und liest diese Dateien nicht ein. Enthält die tar-Datei relative Pfadnamen (der Normalfall), so werden die Dateien im beim tar-Aufruf aktuellen Verzeichnis eingelesen und neue Unterverzeichnisse ggf. angelegt, sofern die Schreibberechtigung hierfür vorliegt. Der KDE-Datei-Manager Konqueror ist in der Lage, tar-Archive durch Anklicken zu öffnen. Das tar-Archiv (siehe Adresszeile im Konqueror) wird dann wie ein Ordner dargestellt. Man kann einzelne Dateien per Drag&Drop herausziehen und in einem anderen Ordner ablegen, ohne dafür tar aufrufen zu müssen.
Bild 9-1: Geöffnetes tar-Archiv im Konqueror
Über das Kontextmenü ›Aktionen‹ lassen sich im Konqueror auch Sicherungen erstellen. Hierzu sind das entsprechende Verzeichnis oder mehrere Dateien vorab zu markieren. Das Archiv wird in dem Verzeichnis abgelegt, von dem der Aufruf erfolgte, und ist mit entsprechender Endung je nach Auswahl .tar.gz, .tar.bz2 oder .zip gekennzeichnet. .zip-Archive werden oft zum Austausch mit Windows-Systemen verwendet. 9.4.2.1
Sichern und Zurückladen mittels cpio
cpio ist neben tar eines der meisteingesetzten Sicherungsprogramme unter Unix und steht auch unter Linux zur Verfügung. Im Gegensatz zur tar muss man cpio über die Standardeingabe beim Sichern mitteilen, welche Dateien es lesen soll. Diese übergibt man zumeist über eine Pipe per ›find … | ‹. Eine Komprimierung innerhalb von cpio ist leider nicht möglich. Hier muss man gzip (oder bzip2) per Pipe vor bzw. nachschalten. afio beherrscht die Komprimierung direkt. cpio kennt drei Modi (Arbeitsrichtungen): cpio –o[Optionen] Kommando, um eine Sicherung zu erstellen (output)
202
9.4 Sichern unterschiedlicher Bereiche
oder
cpio –i[Optionen] [Namensmuster] Kommando, um eine Sicherung einzulesen (input)
oder
cpio –p[Optionen] Verzeichnis Kommando, um eine Sicherung zu erstellen (pass)
cpio -o
(output) Damit werden Dateien in ein Archiv geschrieben (Standardausgabe), in der Regel direkt auf ein Sicherungsmedium. Die Namen der zu transferierenden Dateien liest cpio von der Standardeingabe. Die vollständige Namensangabe wird zusammen mit der Statusinformation der Dateien (wie Zugriffsrechte und Modifikationsdatum) gesichert. Als Optionen sind hier zulässig: aABcLvV -C n -G Datei -H h -K m -e e-opt -O Datei -M m
cpio -i
(input) cpio liest eine Archivdatei von der Standardeingabe. Welche Dateien aus dem Archiv gelesen werden sollen, kann durch Namensmuster angegeben werden – mit den gleichen Metazeichen, wie sie auch die Shell verarbeitet. Fehlt ein solches Muster, so werden alle Dateien (entsprechend ›*‹) zurückgelesen. Hierbei sind folgende Optionen erlaubt: bBcdfkmrsSTtuvV -C n -E Datei -G Datei -H h -e e-opt -I Datei, -M m -R id
cpio -p
(pass) Kombiniert cpio -o und cpio -i, ohne dabei ein explizites Archiv anzulegen. Man verwendet dies z.B., um einen Dateibaum komplett an eine andere Stelle zu kopieren. Hierbei sind folgende Optionen erlaubt: adlLmruvV -R id -e e-opt
Die Bedeutung der wichtigsten Optionen7 sind: -A
[--append] Hängt die Dateien an ein bereits vorhandenes Archiv an. Hierbei ist auch die Option -O notwendig!
-b
[--swap] Kehrt die Byte-Reihenfolge in einem Maschinenwort (4 Byte) bei der Übertragung um (aus xinu wird unix).8
7. Auch hier kann wie schon bei dem Kommando tar die ausführliche Schreibweise der Optionen verwendet werden, die in eckigen Klammern angezeigt ist. 8. Dient zur Konvertierung zwischen Big-Endian und Little-Endian, also der beiden ›konkurrierenden‹ Darstellungen der Byte-Reihenfolge in einem Wort.
203
Datensicherung
--blocksize=n Legt für Ein- oder Ausgabe die Blockgröße auf n × 512 Byte fest. -d
[--make-directories] automatisch an.
-F Datei
[--file=Datei] Benutzt die angegebene Datei als Archiv. Diese kann mit der Syntax benutzer@host:Datei auch auf einem anderen Rechner liegen.
-I Datei
(Input) cpio -i liest normalerweise die Dateien von der Standardeingabe ein. Durch diese Option kann ein Gerät (bzw. eine Datei) angegeben werden, von der stattdessen gelesen werden soll. Dies darf auch auch eine Remote-Datei sein.
-l
[--link] Legt einen Verweis (link mit ln) an, anstatt die Datei zu kopieren (soweit möglich).
-L
[--dereference] Normalerweise werden symbolische Links als solche auch kopiert. Diese Option sorgt dafür, dass cpio den symbolischen Links folgt und stattdessen die dort gefundenen Dateien kopiert.
-m
[--preserve-modification-date] Erhält alte Modifikationsdaten der Dateien beim Zurückspielen oder Übertragen.
Legt beim Einlesen notwendige Verzeichnisse
--no-absolute-filename Legt alle zurückgeladenen Dateien relativ zum aktuellen Verzeichnis ab. -O Datei
Bei cpio -o… schreibt das cpio-Programm im Standardfall auf die Standardausgabe. Durch die Option -O Datei kann ein Gerät (bzw. eine Datei) angegeben werden, auf das (bzw. auf die) statt auf die Standardausgabe geschrieben werden soll.
-t
[--list] Erstellt lediglich ein Inhaltsverzeichnis des Eingabe-Datenträgers (Archivs).
-v
[--verbose] Gibt beim Übertragen oder beim Erstellen des Inhaltsverzeichnisses (Option -t) die Namen der Dateien auf der Standardfehlerausgabe aus.
Hierzu einige Beispiele: > cd / ; find /usr -print | cpio -ov > /dev/tape
kopiert alle Dateien des im Verzeichnis /usr beginnenden Dateibaums (find erzeugt die Namen aller dieser Dateien) mit ihrem vollständigen (absoluten) Pfadnamen auf das Magnetband unter /dev/tape (natürlich könnte man das Archiv auch in eine Datei schreiben). Die Namen aller übertragenen Dateien werden ausgegeben. Wollte man mit relativen Dateinamen arbeiten (dies ist in der Regel zu bevorzugen), so sähe das obige Kommando wie folgt aus: > cd /usr ; find . -print | cpio -ov > /dev/tape
204
Möchte man aus der zuvor erstellten Sicherung alle C-Quelltextdateien (Endung .c)
9.4 Sichern unterschiedlicher Bereiche
vom Band wieder einlesen und dabei die Liste der übertragenen Dateien angezeigt bekommen, so sieht das wie folgt aus: > cpio -iv "*.c" < /dev/tape
Stehen die Namen der zu sichernden Dateien in backupliste und möchte man die Archivdatei auf dem Remote-Rechner neptun auf dem dortigen Bandlaufwerk (/dev/tape oder /dev/mt)9 ablegen, so sichert folgendes Kommando diese Dateien: cat backupliste | cpio –o –F neptun:
wobei hier davon ausgegangen wird, dass neptun einen rsh-Kontakt zulässt und ein entsprechendes Bandlaufwerk hat. cd /home/juergen ; find . -print | cpio -pvd /home1/juergenG \ 2>$HOME/Protokoll
wechselt in das Verzeichnis /home/juergen und kopiert dort den gesamten Dateibaum in das Verzeichnis /home1/juergenG. Noch nicht existierende Zielverzeichnisse werden dabei automatisch neu angelegt. Zur Kontrolle wird mit -v eine Liste der übertragenen Dateien ausgegeben, die – durch Umleitung der Standardfehlerausgabe – in die Datei Protokoll im Home-Verzeichnis geschrieben wird. 9.4.2.2
Allgemeine Hinweise zu cpio und tar
Dem Programm cpio sehr ähnlich ist afio. Wie bei cpio erwartet dieses die Liste der zu sichernden Dateien von der Standardeingabe oder aus einer speziellen Namensdatei. afio ist aber an einigen Stellen mächtiger als cpio: So kann es z.B. die Dateien direkt als Teil des afio-Laufs komprimieren, während bei cpio das Archiv – sofern man es statt direkt auf Band zunächst (oder nur) auf eine Platte schreibt – nachträglich komprimiert werden muss (z.B. per gzip oder bzip2). Für den Datenaustausch mit anderen Linux- und Unix-Systemen hat sich das tarProgramm als eine Art Standard etabliert. Man sollte aber auf keinen Fall vergessen, eine Inhaltsangabe, das Sicherungsformat, die Aufzeichnungsdichte sowie die Art des Rechners auf dem Datenträger zu vermerken. Die Angabe des Rechnertyps ist notwendig, wenn der Ursprungsrechner und der Zielrechner unterschiedliche Byte-Reihenfolgen verwenden. cpio mit der Option -b kann dann die ByteReihenfolge (endianess) beim Lesen umdrehen. Bei allen Sicherungen auf externe Medien empfiehlt sich eine Verifikation nach der Sicherung, um sicherzustellen, dass die Daten korrekt hinausgeschrieben wurden und vom Medium lesbar sind. tar bietet hierfür z.B. die Option -W. Muss man aus Zeitgründen darauf verzichten, so sollte man zumindest stichprobenartig das Zurückladen der Sicherungen testen. Bei großen, dünn besetzten Dateien (sogenannten sparse files) sollte man beim Sichern bei cpio und tar die Option --sparse benutzen. Damit wird weitgehend das Sichern von leeren Blöcken vermieden bzw. optimiert. 9. Welche Gerätedatei benutzt wird, unterscheidet sich etwas von Distribution zu Distribution.
205
Datensicherung
9.4.2.3
Sicherung mit taper
Ein recht mächtiges Sicherungsprogramm zur Sicherung auf Bandmedien ist taper10. Es ist ein benutzerfreundliches Backup-System unter Linux. Es muss aber in der Regel explizit nachinstalliert oder sogar zuvor aus dem Internet heruntergeladen werden. taper führt Indexdateien für den Bandinhalt mit. Es erlaubt so den schnellen Zugriff und das schnelle Wiederauffinden der gewünschten Dateien auf den Sicherungsbändern. Die Indexdateien liegen auf der Festplatte. Sollte der Fall eintreten, dass man die Bänder auf einem anderen Rechner wieder einlesen möchte, so hat man die Möglichkeit, die Bänder neu zu indizieren (was aufgrund der Bandgeschwindigkeit lange dauern kann) oder aber man nimmt einfach die dazugehörigen Index-Dateien mit auf den anderen Rechner.
9.5
Sicherung ganzer Platten
Hier gibt es unter Linux ein sehr gutes Programmpaket namens amanda. amanda steht für Advanced Maryland Automatic Network Disk Archiver und ist ein komplettes Backup-System der Universtät Maryland.11 Es arbeitet im Client-ServerPrinzip und erlaubt die Datensicherung im Netzwerk, bei dem der Sicherungs-Client auf dem lokalen System seine Daten zu einem Sicherungsserver im Netz schickt. amanda genügt professionellen Ansprüchen, unterstützt Bandroboter, fast alle aktuellen Medien und entspricht weitgehend dem kommerziellen Produkt Legato Networker. Es ist sehr umfangreich und deshalb sei hier nur darauf verwiesen. Ein kommerziell vertriebenes sehr ähnliches Werkzeug ist BRU der Firma TOLIS, welches in einer Testversion auch der RedHat-Distribution beiliegt und auch von RedHat vermarktet wird. Auch BRU arbeitet in der Client-Server-Technik und bietet in der kommerziellen Version Sicherungs-Clients für ein ganzes Spektrum von Unix- und Windows-Plattformen. Hierbei wird besonderes Augenmerk auf die Buchführung der Sicherungen sowie auf Konsistenzprüfungen gelegt. So werden sowohl die gesicherten eigentlichen Daten als auch die Metadaten (was wurde wann wohin gesichert) mit 32 Bit langen Prüfsummen ergänzt. Die Sicherungskataloge (Liste der gesicherten Daten) werden sowohl auf die Sicherungsmedien (Bänder) als auch auf Magnetplatte in die BRU-Datenbank geschrieben.
9.5.1
Duplizieren von Dateisystemen mittels dd und partimage
Eine schnelle Art der Sicherung ist das physikalische Eins-zu-eins-Kopieren einer Platte auf eine andere Magnetplatte oder auf Band. Bei Platten müssen beide
206
10. Ist z.B. im Lieferumfang der SUSE-Distribution Linux 9.1 Professional enthalten. 11. Das amanda-Paket findet man unter www.amanda.org. Auch in SUSE Linux 9.1 ist das Paket z.B. bereits enthalten.
9.5 Sicherung ganzer Platten
logischen Medien (bzw. Partitionen) die gleiche Größe haben. Das Kopieren kann mit Hilfe des Programms dd (disk-to-disk copy) erfolgen. dd kann dazu beim Kopieren direkt auf raw devices zugreifen, also an Dateisystemen vorbei und ohne mount direkt auf Linux-Devices wie Platten und Partitionen – mit dem entsprechenden Schadenspotential. dd [Optionen] Kommando, um Dateien zu kopieren und/oder zu konvertieren
Einige der häufig benutzten Optionen sind: if=Datei
(input file) Statt der Standardeingabe wird die angegebene Datei/das Gerät verwendet.
of=Datei (output file) Statt der Standardausgabe wird die angegebene Datei/das Gerät verwendet. bs=Größe (block size) Gibt die Größe der Blockung in Byte an (gleich für Eingabe und Ausgabe). conv=key (convert) Mögliche Konvertierung sind hierbei: key:
ascii ebcdic lcase ucase swab
von EBCDIC nach ASCII von ASCII nach EBCDIC von Großbuchstaben nach Kleinbuchstaben von Kleinbuchstaben nach Großbuchstaben vertauscht jeweils zwei Byte der Eingabe
Aus Gründen der Effizienz sollte beim Kopieren von Partitionen mit großer Blockung gearbeitet werden: dd if=/dev/hdc1 of=/dev/hde1 bs=1M
dupliziert den Inhalt der Datenträger bzw. Partition auf /dev/hdc1 nach /dev/hde1. Beim Kopieren wird eine Blockgröße von 1 MB verwendet. Das Dateisystem auf /dev/hde1 darf dabei nicht aktiv (gemountet) sein! Vorzugsweise ist auch das Dateisystem auf /dev/hdc1 nicht aktiv. Bei Dateisystemen mit Journaling ist darauf zu achten, auf welcher Platte das Journal liegt! dd kann eine Partition jedoch auch in eine Datei schreiben – sofern das Zielsystem größer als die zu sichernde Partition ist. Das Kommando hierzu: lautet dd if=/dev/hdc1 of=/backup/bu$(date +%Y%m%d)
Hier wird die Partition auf /dev/hdc1 in das Verzeichnis /backup in eine Datei geschrieben, deren Name mit ›bu‹ beginnt und das aktuelle Datum (JahrMonatTag) als Ende hat. 207
Datensicherung
Warnung
dd selbst ist nicht in der Lage, defekte Blöcke (bad blocks) zu berücksichtigen, sondern kopiert physikalisch Block für Block (auch leere). Mit Hilfe des badblocksKommandos sollte man deshalb zuvor nach defekten Blöcken suchen. Im Idealfall sind beide beteiligten Platten ausgehängt (nicht montiert). Dies muss zumindest für die Zielplatte gelten, da es sonst zu bösen Inkonsistenzen kommen kann! Achten Sie beim Zurückspielen oder beim direkten Kopieren von Platte auf Platte darauf, dass die Zielpartition nicht kleiner als die Quellpartition ist, da sonst die Dateisystemstruktur der nachfolgenden Partition überschrieben wird! Um eine Plattenpartition (z.B. /dev/hda2) auf geringerem Platz zu sichern, kann gleichzeitig eine Komprimierung erfolgen: dd if=/dev/hda2 | gzip > imagehda2.gz
Um diese Imagedatei zu restaurieren, verwendet man das Kommando gunzip mit entsprechenden Umleitungen: gunzip < imagehda2.gz > /dev/hda2
Besser geeignet zum Sichern und Restaurieren von ganzen Partitionen ist das Partition-Image-Programm partimage.12 Es kann die Linux-/Unix-Partitionen unterschiedlicher Dateisysteme sichern (z.B. ext2/ext3, ReiserFS, JFS, XFS, UFS (Unix), HFS (Mac), HPFS (OS/2), NTFS, FAT16/32). Ein Vorteil besteht darin, dass partimage nur die wirklich belegten Teile der Partitionen beim Sichern kopiert und zusätzlich dabei die Daten noch komprimieren kann. Soweit benötigt, wird das gesicherte Image dabei auf mehrere Datenträger aufgeteilt. Neben dem KommandozeilenInterface steht mit PartGUI auch eine semigrafische Oberfläche (im Terminalfenster) zur Verfügung, welche auch parted bedienen kann. Es erlaubt auch das Sichern auf und das Laden von Images über Netz (von Remote-Systemen). Dazu muss dort ein Benutzer partimag eingerichtet sein. partimage muss im Standardfall explizit nachinstalliert werden. Unter SUSE 9.1 erhalten Sie allerdings noch folgende Warnung beim Installieren des Paketes: ›Be careful, this is an alpha version. Then, there can be bugs, and changes in the data format between different versions. Don't backup important data with it, and use the same version to save and to restore the same image file.‹ Wenn also Partitionen mit partimage gesichert werden, müssen sie auf jeden Fall mit der gleichen Version restauriert werden. Beim Aufruf des Kommandos aus einem Root-Terminal erhalten Sie ein Menüfenster, in dem sämtliche erkannten Partitionen des Rechners angezeigt sind – auch wenn die Texte in der deutschen Version etwas verstümmelt sind (siehe Bild 9-2).
208
12. partimage findet man unter www.partimage.org. Dort gibt es auch eine gute Bedienungsanleitung.
9.6 Dateisysteme oder Verzeichnisse synchronisieren
Bild 9-2: Menüfenster von partimage
9.6
Dateisysteme oder Verzeichnisse synchronisieren
Es gibt mehrere Szenarien, in denen man Verzeichnisse – zumeist auf verschiedenen Rechnern – synchronisieren möchte: ❐
Zum Zwecke der Datensicherung/Replikation Hierfür kann sowohl InterMezzo – als verteiltes Dateisystem – als auch unison eingesetzt werden. Für einfache Zwecke ist auch rcp bzw. das sichere scp geeignet, bei höheren Ansprüchen das mächtigere rsync. Weitere verteilte Dateisysteme sind Coda oder OpenAFS. Der Fokus verteilter Dateisysteme liegt eigentlich eher in einem transparenten Zugriff über Netz. Coda und InterMezzo bieten daneben aber auch die Möglichkeit der Replikation und einer Resynchronisation nach einer Trennung mit Offline-Änderungen. Zu rsync gibt es eine Reihe von Frontends und Erweiterungen. Eine Liste dazu findet man in der Beschreibung von Hans-Jürgen Beie: www.mikerubel.org/ computers/rsync_snapshots/.
❐
Um Arbeitsdaten z.B. auf einem Laptop und auf einem Arbeitsserver zu haben Auf dem Arbeitsserver werden die Daten vom Systemadministrator automatisiert gesichert und stehen auch dann noch zur Verfügung, wenn die lokalen Daten verloren gehen. Auf dem mobilen Rechner sind sie auch dann verfügbar, wenn man den Laptop abhängt und unterwegs ist. Wird der mobile Rechner wieder im Firmennetz online gesetzt, so soll ein weitgehend automatisierter Abgleich stattfinden können.
209
Datensicherung
Auch hierfür lassen sich sowohl InterMezzo, Coda als auch unison einsetzen. Auch rsync ist möglich, aber weniger elegant. InterMezzo und Coda bieten dabei die elegantesten Verfahren zum Entkoppeln (Ausklinken, wenn man offline geht) und zur automatischen Resynchronisation nach dem Wiederankoppeln des mobilen Rechners. InterMezzo und Coda benötigen spezielle Kernel-Erweiterungen, die aber seit Linux 2.4.15 Teil des Standard-Kernels sind. Sie können sowohl fest in den Kernel gebunden werden als auch als ladbare Module vorhanden sein. ❐
Synchronisation von Mailboxen Dies ist z.B. erforderlich zwischen der Firmen-Mailbox und der lokalen Mailbox auf einem Laptop. So stehen die E-Mails sowohl (oft separat gesichert) in der Firma zur Verfügung, aber auch lokal bei einem mobilen Einsatz. Hierfür bietet Linux z.B. das Programm mailsync an. Dieses erlaubt den Abgleich (und damit auch eine Sicherung) zwischen mehreren Mailboxen sowie die Migration von Mailboxen in ein anderes Format oder auf einen anderen Server.
Bei den Synchronisationswerkzeugen, die nicht wie z.B. InterMezzo ständig und vollautomatisch die Daten abgleichen bzw. sichern, lässt sich eine teilweise Automatisierung durch den Aufruf der Sicherung oder des Abgleichs per cron-Job erreichen. Dies gilt natürlich auch für andere Sicherungstools.
9.6.1
rsync
rcp (remote copy) und scp (secure remote copy) sind Varianten von cp, hier aber zum Kopieren der Dateien oder – mit der Option -r (recursive) – ganzer Dateibäume auf einen entfernten Host. rsync geht einen wesentlichen Schritt darüber hinaus und benutzt dazu ein spezielles Protokoll (das rsync remote-update protocol – im Standardfall auf Port 873), welches die für den Abgleich benötigte Datenmenge optimiert. Zum Vergleich bereits vorhandener Dateien benutzt es einen Prüfsummen-Algorithmus und überträgt bei Unterschieden nur die veränderten Teile der Dateien – und dieses auf Wunsch auch noch komprimiert. Es erlaubt einen Abgleich in beiden Richtungen – jedoch bei einem Aufruf jeweils nur in einer Richtung, was speziell für Sicherungen geeignet ist. Hier sagt man rsync also explizit, in welcher Richtung der Abgleich erfolgen soll.
210
Wie bei tar lassen sich per Optionen bestimmte Dateien von der Sicherung bzw. vom Abgleich ausschließen. Die sehr zahlreichen Optionen erlauben eine feine Abstimmung des Abgleichprozesses. So lassen sich über die Option -b (oder --backup) Backup-Kopien der alten Dateiversionen anlegen, so dass auf mehrere Versionen zurückgegriffen werden kann. Auch eine Komprimierung ist (per Option -z) möglich. Der Einsatz von Prüfsummen bei der Übertragung (Option -c oder --checksum), welche am Ziel jeweils überprüft werden, trägt hier zu der geforderten Zuverlässigkeit der Sicherung bei. Um auch die Vertraulichkeit zu gewährleis-
9.6 Dateisysteme oder Verzeichnisse synchronisieren
ten, lässt sich der Transfer per ssh verschlüsseln (sonst wird rsh versucht). Ähnlich wie bei tar lassen sich Namensmuster für Dateien vorgeben, die beim Transfer ausgeschlossen werden sollen (Option: --exclude=Muster). rsync kann sowohl zwischen zwei lokalen Verzeichnissen synchronisieren als auch zwischen einem lokalen und einem per mount eingehängten nicht lokalen Verzeichnis (z.B. ein per mount eingehängtes NFS-, SMB- (Windows) oder AFP-(Macintosh)-Verzeichnis). Durch sein Protokoll kann es jedoch auch auf RemoteVerzeichnisse zugreifen, die nicht per mount direkt zugreifbar sind. Da es rsync nicht nur für Linux und Unix gibt, sondern auch für viele andere Plattformen (z.B. Mac OS X, Windows), ist so auch eine Datensicherung und Datensynchronisation mit diesen möglich.13 Folgendes einfache Kommando rsync
-a
dir_a/
dir_b/
kopiert alle Dateien aus dem Verzeichnis dir_a (den gesamten Dateibaum in dir_a) in das Verzeichnis dir_b (was hier direkt zugreifbar sein muss). Dateien aus dem Dateibaum in dir_a, welche bereits in dir_b existieren und sich nicht geändert haben, werden nicht erneut übertragen. Bei der Übertragung werden – soweit möglich – alle Dateiattribute wie Besitzer, Zugriffsrechte usw. beibehalten. Existiert das Zielverzeichnis noch nicht, so wird es neu angelegt. Dateien im Dateibaum von dir_b, welche in dir_a nicht (mehr) existieren, werden hier aber nicht gelöscht. Möchte man auch dies, so ist zusätzlich die Option --delete erforderlich. In dem Beispiel ist die Schreibweise ›dir_b/‹ für das Zielverzeichnis wichtig. Würde man den / hinter dir_b weglassen, so würde im Ziel unter dir_b ein Unterverzeichnis dir_a erstellt! Möchte man später die in dir_b gesicherten Dateien zurückladen, so sähe dies so aus – hier ist dann dir_b das Referenzverzeichnis: rsync
-a --exclude "*~" dir_b/
dir_a/
Durch die Option --exclude werden die Dateien mit der Tilde als Endung nicht übertragen. Sie sind in der Regel ältere Dateiversionen, die angelegt werden, wenn eine neuere Dateiversion mit der -a-Option übertragen wurde. Liegt das Zielverzeichnis dir_b auf dem Rechner Toshili, so erfolgt die Sicherung per rsync
-a
-e ssh
dir_a/
toshili:dir_b/
Hierfür muss jedoch auch auf Toshili rsync installiert sein. rsync baut dann die Verbindung zu Toshili per ssh auf. Im Standardfall muss dazu ein Login-Passwort oder eine Passphrase für den privaten Schlüssel eingegeben werden. Danach aktiviert rsync dort einen rsync-Client als Gegenpart in einem speziellen Modus (DaemonModus). Gehört das Zielverzeichnis dort noch dem anderen Benutzer carsten, so 13. Dabei sind jedoch eventuell Plattformbesonderheiten hinsichtlich der Schreibweise von Namen und bei Zugriffsrechten zu beachten.
211
Datensicherung
sieht der Dialog auf dem lokalen Rechner Jogyli etwa wie folgt aus (die Option -v erzeugt dabei die detaillierte Ausgabe über die abgelaufenen Aktivitäten): dir_a/
\
…
jg@Jogyli$ rsync -av --exclude "*.tmp" -e ssh carsten@toshili:dir_b/ carsten@toshili’s password: xxx building file list ... done creating directory dir_b dir_a/ dir_a/Text1 dir_a/Bericht.doc
wrote 13546 byte read 68 bytes 1815.20 bytes/sec total size is 13312 speedup is 0.98 jg@Jogyli$
Die Option --exclude "*.tmp" sorgt hier dafür, dass alle Dateien mit der Endung ›.tmp‹ beim Abgleich ignoriert werden. Die allgemeine Syntax von rsync lautet: rsync [Optionen] Quelle Ziel Kommando, um Verzeichnisse zu synchronisieren
Es dürfen dabei mehrere Quellen angegeben werden. Die Angaben von Quelle und Ziel können in der erweiterten Form wie folgt aussehen: [[account@]host:]verzeichnis wobei jeweils nur eine Komponente remote sein darf (Quelle oder Ziel). Ist eines der angesprochenen Verzeichnisse nicht direkt lokal oder über mount eingehängt, so ist die Hostadresse (oder der Hostname) anzugeben. In diesem Fall muss der betreffende Host den Zugriff natürlich erlauben.14 Die wichtigsten der sehr zahlreichen Optionen sind: -a
[--archive] Aktiviert den Archiv-Modus und entspricht -rlptgoD (goD behandelt Group-, Owner- und Device-Information).
-b
[--backup] Erstellt von überschriebenen Dateien Backups mit der Endung ›~‹.
--daemon Startet rsync im Daemon-Modus.
212
--delete
Löscht Dateien im Zielverzeichnis, welche im Quellverzeichnis nicht mehr vorhanden sind (mit Vorsicht einzusetzen!).
-e rshell
[--rsh=rshell] Gibt an, wie rsync mit dem Host kommunizieren soll. Standard ist rsh, besser ist ssh, eventuell mit weiteren Angaben für den zu verwendenden Port und den gewünschten Login-Account – also z.B. -e "ssh -p 1113".
14. Siehe dazu auch /etc/hosts.allow und /etc/hosts.deny auf Seite 330.
9.6 Dateisysteme oder Verzeichnisse synchronisieren
--exclude=Muster Gibt an, welche Dateien von der Synchronisation ausgeschlossen werden sollen. --exclude-from=edatei Hier stehen die Namensmuster der auszuschließenden Dateien in der Datei edatei. -l
[--links] Im Normalfall ignoriert rsync symbolische Links (Verweise). Mit -l werden diese als symbolische Links kopiert.
-n
[--dry-run] Führt nur einen Testlauf aus, ohne die Dateien wirklich zu übertragen (sinnvoll zusammen mit -v).
-p
[--perms]
-t
[--times] Die Zieldateien erhalten das gleiche Modifikationsdatum wie die Quelldateien.
-r
[--recursive] Quelle.
-R
[--relative]
-u
[--update] Führt nur ein Update aus, ohne neuere Dateien zu überschreiben.
-v
[--verbose] Produziert ein ausführliches Protokoll der Übertragungen. Das Gegenteil ist -q (für quiet). -v ist nützlich, wenn man sich mit rsync vertraut machen möchte.
-z
[--compress] Führt (nur für die Übertragung) eine Komprimierung durch.
Versucht die Zugriffsrechte (permissions) zu erhalten.
Durchläuft rekursiv den gesamten Dateibaum in der Es werden relative Dateinamen übertragen.
Im einfachen Fall arbeitet rsync nur als Client (normales Programm). Dies ist z.B. dann der Fall, wenn Quelle und Ziel direkt zugreifbar sind. Wird jedoch ein RemoteSystem kontaktiert, welches nicht über ein schnelles LAN erreichbar ist, ist es sinnvoll, dort einen rsync-Server (den Daemon rsyncd) anzusprechen, da dieser dort lokal effizienter arbeiten kann (z.B. bei der Berechnung der Prüfsummen für den Vergleich). Dieser wird in der Regel mit einem Init-Skript15 gestartet (zumeist /etc/init.d/rsyncd) und über /etc/rsyncd.conf oder rsyncd.conf konfiguriert (siehe ›man 5 rsyncd.conf‹). Zum Betrieb eines rsync-Daemons sei hier auf die rsync-Dokumentation (man rsync) verwiesen, speziell auf die Sicherheitsrisiken eines rsyncDaemons. Ein ständig laufender rsync-Daemon macht insbesondere auf zentralen Sicherungssystemen Sinn. Er kann dann von den Rechnern im Netz einfach per rsync angesprochen werden. Er sollte jedoch sehr sorgfältig konfiguriert sein (über die Datei /etc/rsyncd.conf). rsync lässt sich natürlich auch über ein entsprechendes Skript aufrufen und dieses wiederum regelmäßig über einen cron-Job starten. Da man dann kein Passwort 15. Die Programme, die zum Hochfahren eines Rechners benötigt werden, werden auch als InitV-Programme/Skripten bezeichnet, da sie sich auf die ursprünglichen Init-Skripte von Unix System V beziehen. Zu Init-Skripten siehe auch Kapitel 4.
213
Datensicherung
oder keine Passphrase für den Remote-Zugang eingeben möchte, empfiehlt sich der Zugang über ssh unter Verwendung des Public-Key-Verfahrens, wobei der private Schlüssel für die Authentifizierung eine leere Passphrase hat. Das dabei entstehende Sicherheitsrisiko lässt sich dadurch minimieren, dass man den privaten Schlüssel nur für den Besitzer des Skripts zugänglich macht. Dieses Verfahren ist z.B. unter http://jdmz.net/ssh recht gut beschrieben. Ein gutes, kurzes rsync-Tutorial findet man bei DevShed: www.devshed.com/c/a/Administration/File-Synchronization-With-Rsync. Wie man mit rsync absolute und inkrementelle Sicherungen und eine Art von Snapshots erstellen kann, erklärt ausführlich die Dokumentation von Mike Rubel: www.mikerubel.org/computers/rsync_snapshots. Eine Perfektion von Mike Rubels Snapshot-Konzept liefert rsback (ein Perl-Skript von Hans-Jürgen Beie): www.mikerubel.org/computers/rsync_snapshots. Die aktuellste Version sowie zusätzliche Dokumentation zu rsync findet man unter www.samba.org/rsync.
9.6.2
unison
Bei unison werden wie bei rsync Verzeichnisbäume und nicht Dateisysteme synchronisiert – unter Verwendung des rsync-Protokolls. Die Verzeichnisse können natürlich auch ein ganzes Dateisystem umfassen. Im Gegensatz zu rsync, wo ein Datenabgleich pro Aktion immer nur in einer Richtung erfolgt, erlaubt unison einen (quasigleichzeitigen) Abgleich in beiden Richtungen. Es ist damit z. B. geeignet, um einen Laptop nach dem Wiedereinstecken in das Firmen-LAN mit dem Benutzerverzeichnis (oder mit Teilen davon) auf dem File-Server zu synchronisieren. unison ist für zahlreiche Betriebssystemplattformen verfügbar. Dazu gehören neben Linux, Solaris und Mac OS X auch Windows. Das Programm hat neben der Kommandozeilenversion – die ebenfalls bei Bedarf interaktiv läuft – auch eine grafische Oberfläche. Auch hier wird ein Client und ein Server eingesetzt, falls auf ein Remote-System zugegriffen wird. Im Gegensatz zu InterMezzo benötigt unison keine speziellen Kernel-Module, sondern nur eine ausreichend schnelle Netzverbindung. Es wird wie rsync auf Benutzerebene eingesetzt und benötigt keine Super-User-Rechte – es sei denn, man möchte auch fremde Dateien sichern bzw. abgleichen. Beim Auftreten von Abgleichkonflikten (z.B. wenn Dateien auf beiden Seiten parallel geändert wurden), zeigt unison diese Konflikte an und lässt den Benutzer über den Abgleich entscheiden. Über die zu synchronisierenden Dateien führt unison ein Repository (kleine Datenbasis). Möchte man mit unison Daten mit einem anderen Host synchronisieren, dessen Verzeichnisse nicht direkt über ein mount (NFS, SMB, AFS) zugreifbar sind, so muss wie bei rsync auch unison auf beiden Systemen installiert sein. Wie bei rsync kann auch ein unison-Daemon (Server) betrieben werden, der direkt über einen Socket ansprechbar ist. Dies stellt jedoch ein Sicherheitsrisiko dar. Bei entsprechendem 214
9.6 Dateisysteme oder Verzeichnisse synchronisieren
Sicherheitsbedarf sollte man deshalb die unison-Verbindung mit ssh tunneln und eine entsprechende ssh-Authentifizierung verwenden (s. Seite 278). Möchte man unison mit der grafischen Oberfläche aufrufen, so geht dies mit unison -ui graphic oder unter SUSE Linux 9.x (oder später) bei installiertem unison-Paket im KDEMenü unter: Dienstprogramme R Synchronisieren R unison. Für den Datenabgleich arbeitet unison mit sogenannten Profilen (profiles). Sie legen fest, wie der Abgleich erfolgen soll und – optional auch – zwischen welchen Verzeichnissen. Sind die Verzeichnisse in einem Profil nicht angegeben (oder nur ein Verzeichnis), so werden sie interaktiv abgefragt. Beim ersten Aufruf müssen deshalb die Profile zunächst angelegt werden – es sei denn man greift auf das Default-Profil zurück (siehe Bild 9-3).
Bild 9-3: unison-Profile
In der grafischen Version von unison legt man die Profile im Dialog an (Schaltfläche Create new profile). Die abzugleichenden Verzeichnisse werden bei unison als roots bezeichnet (Root 1 und Root 2). Im obigen Bild liegt das zweite Verzeichnis auf dem Rechner 192.168.4.21 als Netzadresse, das mit dem Home-Verzeichnis des Benutzers /home/juergen/JG_Part1/ abgeglichen werden soll. Für den sshZugriff wird das Passwort abgefragt. Im interaktiven grafischen Modus zeigt unison nach Auswahl des Profils zunächst nach der Analyse beider Verzeichnisse über Pfeile an, wie es glaubt, dass der Abgleich erfolgen soll. Konflikte sind mit einem roten Fragezeichen markiert (siehe Bild 9-4). Durch Anwahl einer Synchronisationszeile und einen Klick auf den passenden Aktionsknopf lässt sich der Konflikt lösen, und zwar durch Ignorieren des Synchronisationsschrittes (per Skip), Umdrehen (per R oder L) oder durch Zusammenfügen der beiden Dateien zu einer gemeinsamen Datei per Merge – was nur bei einfachen Textdateien sinnvoll ist. Diff ruft das Linux-Programm diff auf und zeigt
215
Datensicherung
die Unterschiede von zwei Dateien. Go schließlich startet den Abgleich, während Restart eine erneute Analyse anstößt. Bei großen Verzeichnissen ist zu berücksichtigen, dass sowohl die Analyse als auch der Abgleich lange laufen kann!
Bild 9-4: Verzeichnisabgleich mit einem unison-Profil
Während man in der grafischen Oberfläche Profile nicht löschen oder ändern kann, geht dies einfach, indem man die Profile mit üblichen Linux-Kommandos im entsprechenden Verzeichnis bearbeitet – sie liegen als ASCII-Textdateien vor. Die Profile werden in Dateien mit der Endung ›.prf‹ abgelegt – im Standardfall im Home-Verzeichnis des Benutzers (~/.unison). Man kann sie mit einem Editor erstellen oder modifizieren. Ihr Aufbau ist im Unison User Manual beschrieben. Im Verzeichnis ~/.unison legt unison im Standardfall auch seine Informationen über den letzten Abgleich ab. Geht sie verloren, so baut unison sie neu auf – so als habe noch nie ein Abgleich zwischen den zwei Verzeichnissen eines Profils stattgefunden. Der Aufruf von unison im Textmodus erfolgt über: unison [Optionen] oder unison Verzeichnis_1 Verzeichnis_2 [Optionen] oder unison Profil [Optionen] Fehlende Informationen, wie das zu verwendende Profil oder Verzeichnisse, werden abgefragt. Im Batch-Modus (Option -batch) arbeitet unison im Textmodus und stellt keinerlei Rückfragen. Konflikte werden einfach übersprungen (nicht synchronisiert), es sei denn, man hat über weitere Optionen (wie etwa -merge) etwas anderes vorgegeben. Die unison-Dokumentation ist für Linux ungewöhnlich ausführlich und verständlich geschrieben.16 In der grafischen Version findet man unter Help eine recht gute Online-Hilfe. 216
16. Zu finden unter www.cis.upenn.edu/~bcpierce/unison/manual.html.
9.6 Dateisysteme oder Verzeichnisse synchronisieren
Wie bei rsync ist auch bei unison zu beachten, dass zum Abgleich großer Dateibäume für die Analyse vor dem Abgleich sehr viel Hauptspeicher benötigt wird. Unter Umständen muss man deshalb einen Abgleich in mehrere kleinere Sets zerlegen.
9.6.3
InterMezzo und InterSync
InterMezzo ist ein spezielles sogenanntes verteiltes Dateisystem – ähnlich wie NFS. Im Gegensatz zu NFS ist es aber auf eine hohe Verfügbarkeit und eine hohe Performance ausgelegt und auf eine Disconnect-Funktion, bei der der Client offline gehen kann und die Daten weiterhin geändert werden dürfen. Die Performance wird dadurch erreicht, dass der Client (auf dem lokalen System) mit lokalen Kopien der Dateien arbeitet und diese – so eine Online-Verbindung besteht – ständig mit den Dateien auf dem Server synchronisiert. Die zu synchronisierenden Daten sind hierbei das gesamte Dateisystem, welches auch unter Verwendung eines Loopback-Devices17 ein virtuelles Dateisystem innerhalb eines anderen Dateisystems sein kann. Der Abgleich erfolgt nach der Einrichtung vollständig automatisiert und in beiden Richtungen. Er repliziert damit aber unter Umständen, ähnlich wie RAID-Systeme, auch Fehler. Auch hier wird mit einem Server und einem oder mehreren Clients gearbeitet. Als Server wird der Rechner betrachtet, der zentral und für mehrere Clients ansprechbar die Dateien speichert und das Repository hält, während die Clients mit lokalen Kopien arbeiten. Lokal durchgeführte Änderungen werden an den Server weitergeleitet, was – wenn man gerade mit dem lokalen System offline ist – auch später erfolgen kann, sobald wieder eine Online-Verbindung besteht. Der Server propagiert dann die Änderungen an eventuell vorhandene andere Clients weiter. Die eigentliche Synchronisation erfolgt bei InterMezzo über den InterSync-Daemon, der sowohl eine Komponente auf dem Server als auch auf den Clients hat. Das Caching der Daten auf der Client-Seite führt InterSync durch. Aus Gründen der Robustheit sollte das Caching auf einem Journaling-Dateisystem wie ext3, ReiserFS oder JFS stattfinden.18 Natürlich empfiehlt sich auch für die Server-Seite die Speicherung in einem Journaling-Dateisystem. Während ältere InterMezzo-Implementierungen das rsync-Protokoll für den Datentransport benutzten, setzt die aktuelle InterMezzo-Version auf HTTP auf. Für eine vertrauliche Kommunikation kann dabei entsprechend SSL verwendet werden. Für Details zu InterMezzo sei hier auf das InterMezzo-HOWTO verwiesen.19
17. Ein Loopback-Device erlaubt, ein virtuelles Dateisystem in einer großen Datei auf einem anderen Dateisystem zu simulieren. Dies ist insbesondere für Testzwecke ausgesprochen nützlich. 18. InterMezzo harmonisiert nicht notwendigerweise mit allen Dateisystemen. Wenn Sie andere als die hier angegebenen einsetzen, sollten Sie dies vorher überprüfen. 19. Z.B. zu finden unter www.inter-mezzo.org/docs/InterSync-HOWTO.html.
217
Datensicherung
9.7
Sicherheitsaspekte bei der Datensicherung
Bei der Datensicherung gibt es mehrere Sicherheitsaspekte: ❐
Eine zuverlässige Sicherung, bei der die zu sichernden Daten vollständig und fehlerfrei gesichert werden. Ein Problem bei der Sicherung einer Datei sollte nicht dazu führen, dass die Sicherung abgebrochen wird und damit weitere wichtige Daten nicht gesichert werden. Ebenso sollte ein Fehler beim Zurücklesen von Daten nicht dazu führen, dass die restlichen Daten nicht mehr eingelesen werden können. Prüfsummen können hier die Verifikation wesentlich verbessern und beschleunigen. Es muss dann kein Vergleichslesen über das Netz erfolgen, sondern es werden jeweils lokal und remote die Dateien gelesen und nur die Prüfsummen verglichen. Eine unabdingbare Pflicht des Systemverwalters ist die Auswertung der Sicherungsprotokolle; sonst kann es in einem Notfall beim Wiedereinlesen zu bösen Überraschungen kommen. Sichert man Daten lokal an eine zweite Stelle (Verzeichnis), so sollte das Verzeichnis aus Sicherheitsgründen weder auf der gleichen Partition noch auf der gleichen Magnetplatte liegen, da sonst beim Ausfall der Platte Original und Sicherung verloren sind. Das Verlegen der Sicherungskopie auf einen anderen Rechner bringt potentiell noch höhere Sicherheit und Verfügbarkeit. Eine Kopie auf einem Rechner außerhalb desselben Gebäudes steigert die Sicherheit nochmals. Sicherungskopien sollten, sofern sie online zugreifbar sind, im Read-only-Modus gehalten werden (soweit möglich). Dies schützt sie vor einem Virenbefall und illegalen oder unbeabsichtigten Veränderungen.
218
❐
Vertraulichkeit der Sicherung – insbesonders bei Sicherungen über Netz. Während im Normalfall die Daten über ihre Linux-Zugriffsrechte vor unerlaubtem Zugriff geschützt sind, müssen die meisten Sicherungsverfahren – zumindest wenn die Daten mehrerer Benutzer gesichert werden – mit Root-Rechten arbeiten und übertragen bei einer Sicherung über Netz im Standardfall die Daten ungeschützt (unchiffriert). Sie können dabei abgehört werden. Hier empfiehlt es sich deshalb, bei sensiblen Daten diese verschlüsselt zu übertragen, etwa indem man sie durch eine ssh-Verbindung schützt (z.B. bei rsync), scp verwendet oder indem zwischen dem Sicherungs-Client und dem Sicherungsserver eine verschlüsselte Kommunikation erfolgt. Bei rcp kann man hier z.B. die Option -x verwenden.
❐
Zu einer korrekten Sicherung gehört eine sorgfältige Sicherungsplanung sowie eine sorgfältige Dokumentation über die Sicherungsabläufe. Bedenken Sie, dass unter Umständen auch andere Personen auf Sicherungen zurückgreifen müssen, wenn der Systemverwalter nicht verfügbar ist. Bei beweglichen Da-
9.8 Weitere Sicherungswerkzeuge im Überblick
tenträgern (Band, Kassette, CD, DVD, …) müssen diese sorgfältig beschriftet und geordnet (d.h. wiederauffindbar) abgelegt werden.
9.8
Weitere Sicherungswerkzeuge im Überblick
Es gibt eine ganze Reihe weiterer Sicherungsprogramme unter Linux, insbesondere solche zur Sicherung auf Bänder (Streamer, Kassetten). Hierzu gehören die aus der folgenden Tabelle: Programm
Anwendung
arc, file-roller, karchiver
Einfache und kleine Archive, zum Datentransport gut geeignet
dds2tar, Ntape,
Für größere Bänder wie zum Beispiel DLT
BRU
dump/restore
Alte Standardkommandos (Kommandozeilentools), die über sog. Dump-Levels einfach inkrementelle Sicherungen erlauben. Sie arbeiten auf Dateisystemebene (nur für ext2/ext3).
rdump/rrestore
Arbeiten wie dump/restore, jedoch über Rechnergrenzen hinweg und gehören zu den remote-Kommandos, aus der r-Kommando-Suite wie rlogin, rsh, rcp etc.
rsback
Ein Frontend-Tool zu rsync für rotierende Sicherungen (zu finden unter www.pollux.franken.de/hjb/rsback/)
rsnapshot
Ein Snapshot-Sicherungstool (in Perl geschrieben), welches auf rsync aufbaut (unter www.rsnapshot.org )
Es gibt darüber hinaus natürlich auch kommerzielle Sicherungsprogramme – allerdings teilweise zu erheblichen Lizenzkosten. Als Marktführer haben sich Legato Networker und die Tools von Legato etabliert. Sie legen im Netz einen oder mehrere Backup-Server fest, an denen die Bandlaufwerke (auch Bandroboter) angeschlossen sind. Die zu sichernden Maschinen wenden sich dann als BackupClients an den Server und schicken ihre Daten an den Sicherungsserver oder fordern sie von dort an. Als Standard für das dabei verwendete Protokoll etabliert sich allmählich NDMP – das Network Data Management Protocol. Ähnliche Funktionen bietet ARCServe der Firma CAI. Eine im IBM-Umfeld stark verbreitete Sicherungssoftware ist der IBM/Tivoli Storage Manager, von dem es auch für Linux sowohl einen Sicherungsserver als auch einen Sicherungs-Client gibt. Bei größeren Netzen ist dabei fast immer die Verfügbarkeit zumindest der Sicherungs-Clients auf unterschiedlichen Betriebssystemplattformen relevant, was bei den oben aufgeführten Produkten gegeben ist.
219
Datensicherung
Eine weitere, hier nicht diskutierte Variante der Datensicherung sind HSM-Systeme (Hierarchical Storage Management). Für dieses Segment bieten z.B. die Firmen Veritas und Grau Lösungen für Linux und andere Plattformen. Einige HSM-Systeme unterstützen auch das Brennen der Daten auf DVD oder CD-ROM und den Betrieb von entsprechenden Wechsel-Robotern (Jukeboxen).
9.9
Sichern der Stichworte
Vollsicherung RAID
iso find cpio
tar
in
rs yn c
Si kre ch m er en un te g lle
un
dd
n
ezzo InterM
cp, scp, rcp
K3b partimage Notfall-CD
220
Kapitel 10 Prozessverwaltung
In diesem Kapitel geht es darum, wie Sie als Systemverwalter Prozesse beeinflussen und steuern können. Zum einen, um bei eventuellem Fehlverhalten von Programmen einzugreifen und diese notfalls zu abzubrechen, zum anderen aber auch, um gezielte, zeitgesteuerte Aufgaben dem Rechner zu übertragen. 10.1
Prozesse
10.2
Eigenschaften von Prozessen
10.3
Steuerung der Prozesse über Signale
10.4
Prioritäten setzen
10.5
Jobcontrol
10.6
Weitere Programme zur Steuerung von Prozessen
10.7
Im Namen der root – su, sudo und Co
10.8
Programme für die grafische Oberfläche starten
10.9
Prozesse, die ihre Eltern überleben
10.10
Zeitgesteuerte Prozesse
10.11
Zusammenfassung
10.12
Schließen der Prozessakte
221
Prozessverwaltung
10.1 Prozesse Was ist ein Prozess? Ein Prozess ist das gestartete Programm oder Kommando (oft auch als Befehl bezeichnet). Programme/Kommandos können als Binärdatei oder als Shell-Skript abgelegt sein. Um sie mit dem Programmnamen (Dateinamen) aufrufen zu können, muss als Zugriffsrecht das x gesetzt sein (executable, ausführbar s. a. Seite 132) und das Verzeichnis, in dem die Datei liegt, in der Variablen PATH enthalten sein. Ist das Verzeichnis nicht im PATH enthalten, kann der Aufruf auch über den vollen Pfadnamen erfolgen (beispielsweise um als ›normaler Benutzer‹ die Kernel-Version zu erfahren: /sbin/kernelversion). Ein Programm kann als ❐
Vordergrundprozess (z.B. Aufruf von einem Terminalfenster) oder als
❐
Hintergrundprozess (gekennzeichnet bei der Kommandoeingabe durch ›&‹ als letztes Zeichen)
gestartet werden. Als Job wird unter Linux /Unix der Prozess bezeichnet, der zusätzlich über die Shell kontrolliert wird (siehe auch Jobcontrol Seite 228). Dies sind ❐
Hintergrundprozesse und
❐
nachträglich gestoppte Vordergrundprozesse (z.B. vom aufgerufenen Terminal mit <Strg+z>).
10.2 Eigenschaften von Prozessen Jeder Prozess erhält eine Nummer zugeteilt, die Process Identification (PID). Der Init-Prozess, der vom Betriebssystem vmlinuz (0) gestartet wurde, erhält die Nummer ›1‹. Bei allen Prozessen ist als Hinweis, von welchem Prozess sie abstammen, die Parent Process Identification (PPID) eingetragen. In der deutschen Übersetzung wird Parent-Process (Eltern) oft als Vaterprozess bezeichnet. Bei init ist die PPID also ›0‹, und bei Prozessen, die von init gestartet wurden, ist sie ›1‹. Durch PID und PPID lässt sich die Abstammungsstruktur der Prozesse nachvollziehen. Jeder Prozess hat eine Reihe von Attributen (siehe ps -ef). Diese Attribute werden an den Sohnprozess (im Englischen neutraler als child bezeichnet) vererbt. Werden Prozesse über ein Terminal gestartet, wird dies als ›kontrollierendes Terminal‹ in das Environment des Prozesses aufgenommen. (Über das Kommando env können Sie z.B. das Environment Ihrer Shell angezeigt bekommen.) Mit dem Kommando ps (process status) kann man sich die Attribute anzeigen lassen. Die häufig genutzten Optionen vom ps-Kommando sind:
222
10.2 Eigenschaften von Prozessen
ps [-eaxfl] [-u Benutzer] Kommando, um den Status der Prozesse anzuzeigen
-e -a -x -f -l -u
(every) Zeigt alle Prozesse an. (all) Zeigt alle Prozesse an, denen ein Terminal zugeordnet ist. Zeigt auch jene Prozesse, denen kein Terminal zugeordnet ist. (full ) Volles Format (mit vielen Attributen) (long) Gibt fast alle Attribute an. (user) Prozesse des angegebenen Benutzers
Hier kurze Ausschnitte aus unterschiedlichen Aufrufen: chr@Jogyli:~> ps -fu carsten UID PID PPID C STIME carsten 7196 7170 0 15:25 carsten 7255 1 0 15:25 carsten 7258 1 0 15:25 carsten 7260 7255 0 15:25 ...
TTY TIME ? 00:00:00 ? 00:00:00 ? 00:00:00 ? 00:00:00
CMD /bin/sh /usr/X11R6/bin/kde kdeinit: Running... kdeinit: dcopserver --nosid kdeinit: klauncher
hierbei bedeutet UID PID PPID C STIME TTY TIME CMD
User-ID (Name) Process Identification Number (Prozessnummer) Parent Process Identification (Eltern/Vater-Prozessnummer) Scheduling-Wert Startzeit kontrollierendes Terminal verbrauchte CPU-Zeit Programmname/Kommandoaufruf
Über die Option -l werden noch weitere Attribute angezeigt. chr@Jogyli:~> ps -lu carsten F S UID PID PPID C PRI 1 S carsten 7316 1 74 75
NI ADDR SZ WCHAN STIME TTY TIME CMD 0 - 5402 schedu 15:26 ? 00:00:00 ktip
Ergänzend zu obigen Attributen bedeuten: F
S
Prozesszustand 00 bereits terminiert 01 Systemprozess (immer im Hauptspeicher) 08 aktuell im Hauptspeicher 10 kann nicht geswappt werden Status I idle – untätig 0 aktiv – im Prozessor R runnable – wartet auf Prozessor S sleeping 223
Prozessverwaltung
zombie – kann sich nicht beenden1 tracing – gestoppt wartet auf mehr Speicher PRI nn errechnete Priorität NI nn Nice-Faktor ADDR Speicheradresse des Prozesses SZ virtuelle Prozessgröße WCHAN (wait channel) Adresse des Events, auf den der Prozess wartet Z T X
Das Kommando ps bietet noch eine Reihe von weiteren Optionen an, mit denen z.B. nur bestimmte Kommandos aufgezeigt werden (-C Kommandoname), siehe Manualseiten von ps. Da die vielen Optionen sich zum Teil gegenseitig aufheben, empfehlen wir, für die Suche nach bestimmten Kommandos mit Pipe und grep zu arbeiten. Durch die vielen Programme, die mit einer grafischen Oberfläche gestartet werden, ist die Ausgabe manchmal etwas unübersichtlich, speziell durch den mehrmals gestarteten Prozess kdeinit. Wollen Sie z.B. nur die anderen KDE-Prozesse eines Benutzers sehen, können Sie über chr@Jogyli:~> 5220 ? 5299 ? 5346 ?
ps -u chr | grep k | grep -v kdeinit 00:00:00 kde 00:00:00 kwrapper 00:04:11 ksysguard...
eine entsprechende Liste erhalten (grep -v gibt alle Zeilen aus, die nicht dem Muster entsprechen). Das Kommando pstree zeigt die Baumstruktur an (rechts ein Ausschnitt). Weitere Kommandos, um sich die Prozesse anzuzeigen, zu kontrollieren und zu steuern, sind top und das grafische Tool ksysguard. Diese Kommandos werden ab Seite 229 beschrieben. Sehen wir uns vorab an, wie man Prozesse beeinflussen kann.
10.3 Steuerung der Prozesse über Signale Alle Prozesse (also gestartete Programme) können Signale erhalten. Bei Vordergrundprozessen kann man z.B. in der Regel mit <Strg+c> das aufgerufene Programm unterbrechen/abbrechen. Mit dieser Tastenkombination wird dem Prozess das Signal ›SIGINT‹ (interrupt) geschickt. Falls im Programm die Signale nicht explizit anders behandelt werden (unter der Shell über das Kommando trap), wird mit dem Signal SIGINT das Programm abgebrochen. Welche Signale verfügbar sind, erfahren Sie mit dem Kommando kill -l. Die für den Systemverwalter relevanten Signale sind: 224
1. Kann sich nicht endgültig beenden, da Vaterprozess nicht mehr existiert.
10.3 Steuerung der Prozesse über Signale
Signal
Nr Erläuterung
Signal
Nr Erläuterung
SIGHUP
1
(hang up) abmelden vom kontrollierenden Terminal
SIGKILL
9
SIGINT
2
Interrupt, abbrechen <Strg+c>
SIGTERM
15 terminieren, ähnlich wie Signal 9
SIGQUIT
3
Quit, verlassen
SIGSTOP
19 auf Pause setzen, stoppen <Strg+z>
›killen‹, töten, sofort beenden
Da die Signalnummern je nach Betriebssystem unterschiedlich sein können, empfiehlt es sich, die Signalbezeichnungen zu verwenden. Die Nummer 9 zum ›Killen‹ ist jedoch auf allen Systemen gleich (Unix- und Linux-Systeme). Mit dem Kommando kill können Signale an Prozesse geschickt werden. Die Syntax lautet: kill [-Signalname oder -Signalnummer] Prozessnummer [%Jobnummer] Kommando, um Prozesse abzubrechen bzw. Signale zu schicken
Um die Prozessnummer zu erhalten, gibt man das Kommando ps (process status) an. Wollen Sie z.B. alle geöffneten Fenster des Konquerors vom Benutzer chr beenden, können Sie dies mit einem winzigen Shell-Programm erreichen, das Sie auch direkt am Terminal eingeben können. Wenn Sie allerdings nicht unter chr angemeldet sind, müssen Sie dieses Kommando als root ausführen, da andere Benutzer nur ihre eigenen Prozesse abbrechen dürfen. Mit nachstehendem Beispiel werden alle Prozesse mit konqu (also konqueror-Prozesse) beendet. chr@Jogyli:~> ps -ef | grep chr | grep konqu | while read user pid rest > do kill -9 $pid > done
Da mit ps -u nicht alle Prozesse des Benutzers angezeigt werden, sondern nur jene, die von derselben Shell abhängen, ist es immer besser, sich alle Prozesse ausgeben zu lassen (ps -ef) und dann mit grep den betreffenden Benutzer herauszufiltern. Da diese Eingabe öfters benötigt wird, könnte man sich für diese Zeichenfolge ein Shell-Skript z.B. killps unter /root/bin erstellen. Das Verzeichnis /root/bin ist hierfür bereits angelegt, man muss allerdings noch den PATH für die root ergänzen (z.B. über die Datei /root/.bashrc mit dem Eintrag: export PATH=$PATH:~/bin). #!/bin/bash #Aufruf: killps user prozessname [ $# -lt 2 ] && echo “Aufruf killps user prozessname“ && exit ps -ef | grep $1 | grep $2 | while read user pid rest do kill -9 $pid done
225
Prozessverwaltung
Neben dem Kommando kill gibt es noch killall. Hier gibt man statt der Prozess-ID den Namen des Kommandos an und kann so alle Prozesse beenden, die unter diesem Namen laufen. killall [-Signal -live] Prozessname Kommando, um Prozessgruppen zu beenden
killall vergleicht nur die ersten 15 Zeichen des Prozessnamens, deshalb reicht die Übereinstimmung der ersten 15 Zeichen, um einen Prozess abzubrechen. -Signal
Bei killall wird standardmäßig das Signal -9 gesendet. Um ein anderes Signal zu senden, kann man hier wie bei kill die Signalnummer oder den Signalnamen eingeben.
-l
Listet die möglichen Signalnummern auf (wie bei kill).
-i
(interactive) Erst durch die Bestätigung wird der Prozess beendet.
-v
Zeigt die beendeten Prozesse an.
-e
(exact) Prozesse mit längerem Namen als 15 Zeichen werden nicht abgebrochen, selbst wenn die ersten 15 Zeichen übereinstimmen.
So können Sie z.B. als Systemverwalter ein schnelles Beenden von allen Spielen bewirken, in denen sich Benutzer in Geduld üben (kpat – Kartenspiel Patience). JOGYLI:/home/chr2 # killall -iv kpat kpat(2750) abbrechen? (y/n) y kpat(2752) abbrechen? (y/n) y JOGYLI:/home/chr2 #
Allerdings lassen sich mit ›killall konqueror‹ die entsprechenden Prozesse nicht abbrechen, da der konqueror unter dem kdeinit-Prozess läuft. JOGYLI:/home/chr2 # killall konqueror konqueror: Kein Prozess abgebrochen JOGYLI:/home/chr2 # ps -ef | grep konqu chr2 2378 2205 0 08:56 ? 00:00:02 kdeinit: konqueror
Ein weiteres sehr nützliches Kommando ist fuser (file user). Hiermit können Sie feststellen, ob Prozesse auf das angegebene Gerät oder Verzeichnis zugreifen. fuser [-ki] Gerät oder Directory Kommando, um Prozesse anzuzeigen, die auf die angegebenen Dateien zugreifen
-k
(kill) Mit dieser Option wird der Prozess gleich beendet.
-i
(interactive) Das Kill-Signal wird erst nach Bestätigung gesendet.
Auch hierzu ein Beispiel: 226
JOGYLI:/home/chr2 # fuser -k /home/chr2/Documents/ /home/chr2/Documents/: 2728
10.4 Prioritäten setzen
10.4 Prioritäten setzen Linux hat eine sehr demokratische Art und Weise, Prozessen Prioritäten zuzuweisen. Jeder kommt an die Reihe, wer schon länger wartet, erhält eine Art Bonus, der sich bei der Berechnung der Priorität auswirkt. Viele Prozesse benötigen ja nur ab und zu Rechenzeit, zwischendurch warten sie auf ein Ereignis (z.B. auf die Weiterleitung eines Ergebnisses aus einem anderen Prozess oder auf die Ein-/Ausgabe von Geräten wie Platte, Terminal etc.). In solchen Fällen legen sich die Prozesse ›freiwillig‹ schlafen. Wenn dann trotzdem mehrere Prozesse ›rechenbereit‹ (runnable) sind, also Rechenzeit beanspruchen, bekommt derjenige zuerst Rechenzeit zugewiesen, der die höchste Priorität hat. Dazu kurz ein Blick hinter die Kulissen: Bild 10-1 zeigt den Ablauf eines Prozesses auf dem Prozessor (CPU, central processing unit): Prozess läuft auf der CPU user-mode (Code aus Programm) Systemaufruf Systemaufruf Interrupt fertig Interrupt system-mode (Kernel-Code) Prozess kann sich nicht beenden (zombie) Prozess schläft (sleeping)
wartet auf Ereignis (I/O)
Ereignis tritt ein
Dispatcher teilt Rechenzeit zu Prozess wartet auf CPU-Zuteilung (rechnerbereit) (runnable)
Bild 10-1: Prozessablauf auf der CPU
Die Priorität wird stets neu berechnet, hier wirkt sich dann der Nice-Faktor aus, den man beim Aufruf eines Programms über das Kommando nice bzw. auch nachträglich über renice übergeben kann. Die Werte für nice liegen im Bereich von -20 bis +19. Mit dem kleinsten Wert (also -20) wird die höchste Priorität vergeben. Allerdings darf nur root die Prozesse in der Priorität erhöhen, der Benutzer kann die Priorität für seine Prozesse nur herabsetzen. Ein Minuswert (also eine Erhöhung der Priorität) muss mit -- angegeben werden. Hierzu zwei Beispiele, aus denen Sie den Einfluss der Priorisierung ersehen können. Es handelt sich um die Sicherung eines Verzeichnisses mit tar inklusive Komprimierung (-z). Das Kommando wird unter root einmal mit dem Nice-Faktor -20 (also höchste Priorität) und einmal mit dem Nice-Faktor 19 aufgerufen. Das vorangestellte Kommando time gibt die Zeit in Sekunden aus, die (real) benötigt wurde, außerdem die verbrauchte Benutzer-CPU-Zeit (user) und die System-CPUZeit (sys). 227
Prozessverwaltung
1. Aufruf mit niedrigster Priorität: # time nice -19 tar -czf /tmp/sichchr1.tar.gz Documents/ & [1] 10109
2. Parallel dazu wurde die gleiche Sicherung mit höchster Priorität aufgerufen: # time nice --20 tar -czf /tmp/sichchr2.tar.gz Documents/ & [2] 10112
Während der Sicherung kann man mit ›ps -efl‹ sehen, dass die beiden Prozesse unterschiedliche Nice-Faktoren aufweisen. Hier der wesentliche Ausschnitt: # ps -efl | grep UID PID PPID root 10109 10108 root 10112 10111
tar C PRI 2 95 4 60
NI 19 - tar -czf /tmp/sichchr1.tar.gz Documents/ -20 - tar -czf /tmp/sichchr2.tar.gz Documents/
Die errechnete Priorität ist beim 1. Aufruf 95 bei einem Nice-Faktor mit 19, beim 2. Aufruf 60 bei einem Nice-Faktor von -20. Bei der Errechnung der Priorität wirken noch eine Reihe von anderen Faktoren mit. Obwohl der 2. Aufruf etwas später gestartet wurde, war er früher fertig und zeigte folgende Zeiten an: real user sys [2]+
0m23.013s 0m17.295s 0m1.399s Done time nice --20 tar -cvzf /tmp/sichchr2.tar.gz Documents/ &
Der zuerst gestartete Prozess mit dem Nice-Faktor 19 endete mit real user sys [1]+
0m41.767s 0m17.887s 0m1.556s Done time nice -19 tar -cvzf /tmp/sichchr1.tar.gz Documents/ &
Hier zeigt sich, dass zwar beide Kommandos in etwa die gleiche Rechenzeit verbraucht haben (user), dass aber das höher priorisierte Kommando deutlich bevorzugt wurde (real). Bei bereits gestarteten Prozessen kann man unter Linux mit dem Programm renice die Priorität beeinflussen. renice erfordert die gleichen Eingaben wie nice, doch statt des Kommandoaufrufs wird dann die PID des Prozesses angegeben.
10.5 Jobcontrol Wie zu Beginn des Kapitels schon erwähnt, werden Hintergrundprozesse und mit <Strg+z> gestoppte Vordergrundprozesse zusätzlich als Jobs kontrolliert. Auch Hintergrundprozesse können mit dem Kommando kill -SIGSTOP angehalten werden. In einigen Unix-Derivaten war dies z.B. die einzige Möglichkeit, einem bereits gestarteten Prozess mit renice nachträglich eine andere Priorität zu vergeben. Gestoppte Prozesse können
228
❐
über das Kommando fg (foreground) als Vordergrundprozess oder
❐
über das Kommando bg (background) als Hintergrundprozess fortgeführt
❐
oder mit kill beendet werden.
10.6 Weitere Programme zur Steuerung von Prozessen
Über das Kommando jobs lässt sich anzeigen, welche Prozesse in der Jobcontrol, jeweils bezogen auf das aktuelle Terminal, vorhanden sind. Hierzu einige Beispiele: chr@Jogyli:~> find / -name "*.c" > /tmp/C-ProgrammeListe 2> /dev/null & [1] 6037 chr@Jogyli:~> jobs [1]+ Running find / -name "*.c" >/tmp/C-ProgrammeListe 2>/dev/null &
Die Jobnummer, bei dem obigen Beispiel in eckigen Klammern angezeigt, kann beim Kommando kill statt der Prozessnummer angegeben werden. Die Jobnummer wird mit einem führenden ›%‹ eingegeben. chr@Jogyli:~> kill -9 %1 chr@Jogyli:~> jobs [1]+ Getötet find / -name "*.c" >/tmp/C-ProgrammeListe 2>/dev/null
In der nachstehenden Grafik sehen Sie die verschiedenen Stadien der Jobcontrol. $ find . > liste & [1] 135
$ find /usr -print /usr/bin
…
Hintergrundaufruf fg %1
Prozess läuft im Hintergrund
Prozess läuft im Vordergrund bg %1
fg %1 <Strg+z>
kill -SIGSTOP %1
Prozess wird gestoppt kill %1
kill %1
<Strg+c>
Prozess wird abgebrochen
10.6 Weitere Programme zur Steuerung von Prozessen Während man mit ps nur den Prozess-Status abfragen kann, gibt es weitere Programme, die sowohl Prozesse anzeigen als auch erlauben, Veränderungen vorzunehmen. Zu ihnen gehört das Kommando top, das auf Terminalebene aufgerufen wird. Es zeigt die Top-Prozesse an (jene, die am meisten Rechenzeit beanspruchen) und bereitet alle paar Sekunden die Anzeige neu auf. top ist ein interaktives Programm, das auch erlaubt, Prozesse abzubrechen. Zu Beginn ist top etwas gewöhnungsbedürftig. Die wichtigsten interaktiven Kommandos sind ›h‹ für Help und ›q‹ zum Beenden (oder <Strg+c>). Unter Help finden Sie die Tastenkombinationen, um nur bestimmte Benutzer anzuzeigen, weitere Spalten mit aufzunehmen oder die Ausgabe zu sortieren. Hierzu einen Ausschnitt des Kommandoaufrufs: 229
Prozessverwaltung
chr@Jogyli:~> top top - 12:21:02 up 3:32, 2 users, load average: 2.05, 2.57, 2.91 Tasks: 125 total, 1 running, 123 sleeping, 1 stopped, 0 zombie Cpu(s): 4.6% us, 1.3% sy, 0.0% ni, 93.7% id, 0.0% wa, 0.3% hi, 0.0% si PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5001 root 15 0 19940 15m 5772 S 3.6 6.3 21:37.30 X 5337 chr 16 0 33152 20m 28m S 0.7 8.4 0:10.36 kdeinit 14272 root 17 0 1760 960 1540 R 0.7 0.4 0:00.83 top 14284 chr 16 0 28416 15m 25m S 0.7 6.0 0:01.83 kdeinit 5302 chr 16 0 26820 12m 23m S 0.3 5.2 0:11.14 kdeinit 13915 chr 15 0 28568 15m 25m S 0.3 6.1 0:05.01 kdeinit 1 root 16 0 588 240 444 S 0.0 0.1 0:05.32 init
Tippen Sie ein ›h‹ ein, erhalten Sie nachstehende Ausgabe: Z,B l,t,m 1,I f,o F or O R c,i,S x,y z,b u n or # k,r d or s W q
Global: 'Z' change color mappings; 'B' disable/enable bold Toggle Summaries: 'l' load avg; 't' task/cpu stats; 'm' mem Toggle SMP view: '1' single/separate states; 'I' Irix/Solaris . Fields/Columns: 'f' add or remove; 'o' change display order . Select sort field . Move sort field: '' next col right . Toggle normal/reverse sort . Toggle: 'c' cmd name/line; 'i' idle tasks; 'S' cumulative time . Toggle highlights: 'x' sort field; 'y' running tasks . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y') . Show specific user only . Set maximum tasks displayed Manipulate tasks: 'k' kill; 'r' renice Set update interval Write configuration file Quit
Wollen Sie z.B. nur die Prozesse von einem bestimmten Benutzer anzeigen lassen, tippen Sie ›u‹ein. Über ein Dialogfeld werden Sie dann aufgefordert, den Namen des Users einzugeben. Um wieder alle Prozesse anzuzeigen, geben Sie wieder ›u‹ an, und ein Leerzeichen statt des Benutzernamens. Um Prozesse abzubrechen, wird ein ›k‹ getippt. Auch hier wird über ein Dialogfeld die PID des Prozesses eingegeben. Ähnlich funktioniert die Eingabe für renice, nach Eingabe von ›r‹ wird zuerst die PID abgefragt und anschließend der Nice-Faktor (um die Priorität zu erhöhen, mit vorangestelltem Minuszeichen – siehe hierzu auch Seite 227). Um die vollständige Kommandozeile zu sehen, geben Sie ein ›c‹ an, damit kann die Anzeige ein- und wieder ausgeschaltet werden. Die Eingabe von ›F‹ erlaubt nach bestimmten Spalten zu sortierten. Über eine Auswahlliste der möglichen Spalten wählen Sie durch einen vorangestellten Buchstaben die zu sortierende Spalte aus. Systemüberwachung (ksysguard)
230
Unter KDE gibt es auch ein grafisches Tool, um sich die Prozesse anzeigen zu lassen: ksysguard. Mit einem Mausklick in die entsprechende Spaltenüberschrift wird nach dieser Spalte sortiert. Aktivieren Sie die Checkbox ›Baum‹ (siehe Bild 10-2 links unten), sehen Sie die Hierarchie der Prozesse. Zu Beginn steht der Init-Prozess. Er hat immer die Prozessnummer 1. Der Init-Prozess startet, wie in Kapitel 4 beschrieben, die verschiedenen Prozesse für die einzelnen Runlevel. Es handelt sich hierbei meist um Daemonen. Der Name leitet sich eigentlich von Disk and Execution Monitor ab – aber sie als Dämonen zu bezeichnen, passt ja auch.
10.6 Weitere Programme zur Steuerung von Prozessen
Daemonen sind Programme, die im Hintergrund arbeiten und nur bei bestimmten Voraussetzungen in Aktion treten. Zu ihnen gehört u.a. der cron-Prozess, der zu bestimmten Zeiten Programme startet (siehe auch Seite 244), oder cupsd, der u.a. die Druckeraufträge verwaltet. Unter Linux sind viele dieser Daemonen auch mit einem ›d‹ am Namensende gekennzeichnet. Unter SUSE Linux finden Sie die grafische Systemüberwachung unter: System R Überwachung R Systemüberwachung
Bild 10-2: Systemüberwachung (ksysguard)
Gerade bei Programmen für die grafische Oberfläche ist es manchmal schwierig, den zugehörigen Prozess zu finden. Zum einen wird oft nicht der gleiche Name verwendet (wie bei der Systemüberwachung selbst – hier heißt der Prozess ksysguard) und zum anderen wird der Prozess oft von kdeinit gesteuert, so dass hier erst die vollständige Anzeige des Prozessnamens Auskunft gibt (›kdeinit: konsole‹ Anzeige bei top z.B. mit c). Zwar erkennt man viele grafische Programme an dem vorangestellten ›k‹ (für KDE), doch oft ist der Prozess nur an anderen Erkennungsmerkmalen (wie Startzeit, Benutzer u.a.) zu finden. Hier ist es dann hilfreich, die Prozesse nach anderen Kriterien auszuwählen und zu sortieren. Über die untere Schaltfläche (im Bild 10-2 eingestellt auf Systemprozesse) kann eine Auswahl getroffen werden für: ❏ ❏ ❏ ❏
Benutzerprozesse, Systemprozesse, eigene (der jeweilige Benutzer) oder alle Prozesse.
231
Prozessverwaltung
Markiert man Prozesse mit der Maus und klickt auf die Schaltfläche ›Beenden (kill)‹, werden alle ausgewählten Prozesse beendet, soweit es die Berechtigungen zulassen. Nur root ist berechtigt, Programme anderer Benutzer zu beenden. Der Benutzer darf nur jene Programme abbrechen, die unter seinem Namen gestartet wurden. Bestimmte Prozesse kann aber auch root nicht abbrechen. Hierzu gehören die Systemprozesse wie z.B. init, das nur über das Kommando init oder shutdown heruntergefahren werden kann. Wie Sie als root mit der grafischen Systemüberwachung arbeiten können, wird ab Seite 238 beschrieben (z.B. mit kdesu). Wird im Anzeigebereich die rechte Maustaste gedrückt, kann man zusätzliche Spalten einblenden bzw. vorhandene Spalten ausblenden. Über das Kontextmenü (rechte Maustaste) ist es auch möglich, andere Signale zu senden. Auch die Prozesspriorität kann hier verändert werden. Allerdings darf nur root höhere Prioritäten vergeben (niedrigere Zahl). Der Benutzer kann wie gesagt über den Nice-Faktor den Prozessablauf nur verlangsamen (siehe auch Kommando nice bzw. renice, Seite 227).
10.7 Im Namen der root – su, sudo und Co Wie wir nicht müde werden zu betonen, ist das Arbeiten unter root prinzipiell riskant. Im Gegensatz zu Windows sollten deshalb auch der Systemverwalter und andere Benutzer mit Administrationsaufgaben im Standardfall nicht als SuperUser (root) arbeiten. Da man aber für einige Aufgaben das Super-User-Recht benötigt, stellt Linux dafür mehrere Verfahren zur Verfügung:
232
❐
su erlaubt temporär den Status des Super-Users (oder eines anderen Benutzers) anzunehmen. Man muss dazu das entsprechende Passwort kennen.
❐
sudo gestattet privilegierte Kommandos auszuführen. Man muss dazu als berechtigter Benutzer in der sudoers-Liste eingetragen sein. Dort kann auch stehen, welche Kommandos die jeweiligen Benutzer ausführen dürfen.
❐
kdesu entspricht (unter KDE) in der Funktion dem su, ohne dass man die unter X112 geltenden Probleme hat, welche auftreten, wenn man ein grafisches Tool aufrufen möchte (siehe auch Seite 239).
10.7 Im Namen der root – su, sudo und Co
Natürlich kann man sich auch abmelden und als root wieder anmelden, was aber in dem meisten Situationen zu umständlich ist. Arbeitet man auf einer grafischen Oberfläche, ist es oft nützlich, zu einer virtuellen Textkonsole per (bzw. bis ) umzuschalten und sich als root anzumelden, um dort bestimmte Systemverwalteraufgaben auszuführen. Über die Funktionstasten F1 bis F6 stehen sechs Textkonsolen zur Verfügung. Mit kommt man auf die grafische Oberfläche zurück. Auch erlaubt KDE zusätzliche weitere grafische Sitzungen (unter 9.0: ›Neue Sitzung starten‹3, unter 9.1: ›Wechsel des Benutzers‹). Es wird dann eine zweite virtuelle grafische Oberfläche (Bildschirm 2) gestartet. Ähnlich wie bei den Textkonsolen können Sie mit auf den ursprünglichen (ersten) grafischen Bildschirm zurückschalten, mit auf den zweiten Bildschirm. Auf diese Weise können weitere grafische Sitzungen für die Tasten F9 bis F12 belegt werden (also fünf zusätzliche virtuelle grafische Bildschirme). Rechte per SUID- und GUID-Bits Eine weitere Variante zur Vergabe spezieller Zugriffsrechte bei der Ausführung von Programmen sind SUID- oder GUID-Zugriffsbits. Ruft man als normaler Benutzer Programme auf, bei denen diese Bits gesetzt sind, erhält das Programm zur Laufzeit die Rechte des Besitzers der Programme (beim SUID-Bit bzw. beim Bit 4000) oder die der Benutzergruppe des Programmeigners (beim GUID-Bit bzw. beim Bit 2000). Bei gesetztem SUID-Bit wird als Zugriffsrecht statt ›x‹ ein ›s‹ unter dem Owner angezeigt, bei gesetztem GUID-Bit ein ›s‹ unter der Group. Wie diese Zugriffsrechte gesetzt werden, finden Sie auf Seite 135. Hier ein typisches Beispiel: -rwsr-xr-x
3 root
shadow
77204 2003-09-24 01:04 /usr/bin/passwd
Auf diese Weise erhält z.B. das passwd-Kommando seine Zugriffsrechte auf die Passwortdatei. Das Konzept funktioniert auch bei Shell-Prozeduren,4 muss dort aber als Gefahr für die Systemsicherheit angesehen werden. Der Nachteil von Programmen mit SUID-/GUID-Bits besteht darin, dass alle Benutzer diese Programme ausführen dürfen. Eine selektive Zuteilung von Rechten ist also nicht möglich, es sei denn, das Programm prüft dies selbst, wie es zum Beispiel /usr/bin/passwd tut.
2. X- Window-System (X11) ist die Basis für die grafische Oberfläche unter Linux/Unix. Auch Anwendungen, die auf einem entfernten Rechner gestartet wurden, können ihre grafisch aufbereitete Ausgabe auf den aktuellen Netzrechner umleiten. 3. Allerdings können unter 9.0 bei nicht abgemeldeten zusätzlichen Bildschirmen beim nächsten Start erhebliche Fehler auftreten. Um mit mehreren zusätzlichen virtuellen Bildschirmen zu arbeiten, sollte auch genügend Speicherkapazität (> 512MB) vorhanden sein. 4. Die Kommandoprozedur muss dann aber mit der nachfolgenden Zeile beginnen, wobei der Name bzw. Pfad der zu verwendenden Shell einzusetzen ist: #!shellname (z.B. #!/bin/bash)
233
Prozessverwaltung
su – Root-Rechte auf Zeit Das su-Kommando (switch user) öffnet eine temporäre Sitzung unter der Identität eines anderen Benutzers. Das Kommando chr2@JOGYLI:~> su carsten Password: carsten@JOGYLI:/home/chr2>
eröffnet z.B. eine neue Shell unter dem Account des Benutzers carsten. Dessen Passwort wird zuvor abgefragt. Die allgemeine Syntax zu su lautet: su [Optionen] [Account] [-c Kommando] Kommando, um unter anderem Namen Programme auszuführen
Ohne Parameter aufgerufen wird root als neue Identität angenommen. Hat der neue Benutzer ein Passwort – was immer der Fall sein sollte –, so wird dieses abgefragt. Es wird eine neue Shell gestartet, in welcher der Benutzer die Benutzerund Gruppennummer der neuen Identität hat. Wird diese Shell beendet (exit oder <Strg+d>), kehrt der Aufrufer in die vorhergehende Shell zur alten Identität zurück. Mit -c wird keine interaktive Shell gestartet, sondern ein Kommando an die neue Shell übergeben und dort unter der neuen Identität ausgeführt. Die Option -l (oder --login bzw. einfach nur ›-‹) bewirkt, dass ein (fast) vollständiges Login-Prozedere erfolgt – also z.B. die Login-Shell des gewünschten Accounts aktiviert, dessen PATH gesetzt und in das Home-Verzeichnis des su-Benutzers gewechselt wird. Durch die Option -m dagegen bleibt die alte Umgebung erhalten (also $HOME, $PATH, das aktuelle Verzeichnis usw.). Der Nachteil des su-Kommandos besteht darin, dass der Aufrufer das Passwort der benötigten Identität – zumeist des Super-Users – kennen muss. Möchte man über dieses Verfahren anderen Personen mit Administrationsaufgaben Zugang zu den sensitiven Kommandos geben, welche zumeist das Super-User-Privileg benötigen (z.B. /sbin/mount und /sbin/umount), so muss man ihnen auch das RootPasswort mitteilen – eine unschöne, da unsichere Lösung. Hier bietet sudo eine bessere Lösung. sudo – Programme ausführen unter anderer Identität
234
Das Kommando sudo umgeht die Passwort-Problematik von su. Es führt nur genau ein Kommando aus, das als nachfolgender Parameter beim sudo-Aufruf angegeben wird. Im Gegensatz zu su muss der Aufrufer auch nicht das Passwort des Super-Users kennen, sondern muss – und darin liegt die Sicherheit des Kommandos – vom Systemverwalter dazu über einen entsprechenden Eintrag in der Datei /etc/sudoers ermächtigt worden sein. Das Kommando
10.7 Im Namen der root – su, sudo und Co
sudo
/bin/mount
/dev/sdb3
erlaubt dem aktuellen Benutzer, das mount-Kommando mit Root-Rechten auszuführen – sofern er dazu per Konfiguration berechtigt ist. Mit sudo wechselt ein Benutzer also für die Dauer eines Kommandos die Identität, in der Regel wechselt er auf Root-Rechte. Die Syntax des sudo-Kommandos lautet: sudo [Optionen] [-u Benutzer] Kommando [Kommandoparameter] Kommando, um ein anderes Kommando unter fremder Identität auszuführen
sudo führt das angegebene Kommando mit den Rechten von root bzw. des per -u angegebenen Benutzers aus. Zuvor prüft es anhand der Einträge in der Konfigurationsdatei, ob der Aufrufer dazu berechtigt ist. Der Benutzer muss, um sich zu legitimieren, ein Passwort eingeben. Dies ist im Standardfall (abhängig von der Konfiguration) sein eigenes Passwort – nicht das des Super-Users oder der neuen Benutzeridentität!5 sudo kann so konfiguriert werden, dass der Systemverwalter per E-Mail über unzulässige Versuche informiert wird. Von den zahlreichen sudo-Optionen werden in der Regel in der Praxis nur wenige benötigt. Die Option -l listet die Kommandos, die man per sudo ausführen darf. Die Konfigurationsdatei für sudo ist /etc/sudoers. Sie sollte nicht mit einem normalen Texteditor bearbeitet werden, sondern als root mit visudo. Dies blockiert die Konfigurationsdatei gegen ein mehrfaches gleichzeitiges Editieren und führt auch eine Reihe Konsistenzprüfungen automatisch durch. Es wird der Default-Editor gestartet (vim bzw. das unter der Shell-Variablen EDITOR eingetragene Programm). /etc/sudoers enthält (vorwiegend) zwei Arten von Einträgen: ❐
sogenannte Aliase für Listen z.B. von Benutzern, Rechnern, sudo-Identitäten und Kommandos
❐
und Benutzerspezifikationen, die bestimmen, wer welche Kommandos über sudo aufrufen darf.
›#‹ gilt auch hier als Kommentarzeichen. Es empfiehlt sich, die Struktur der Datei sudoers zu nutzen und die jeweiligen Zeilen nach den entsprechenden Kommentaren einzufügen. Ein Alias legt einen gemeinsamen Namen für eine Liste von Benutzern/Gruppen, Rechnern, sudo-Identitäten oder Kommandos fest, der Alias kann dann als Abkürzung für die jeweilige Liste benutzt werden. Die Aliasdefinitionen für die unterschiedlichen Typen von Listen beginnen mit den Schlüsselwörter User_Alias, 5. Bei SUSE ist der Default allerdings explizit umgesetzt auf das Passwort der neuen Benutzeridentität bzw. root.
235
Prozessverwaltung
Host_Alias, Runas_Alias und Cmnd_Alias mit den naheliegenden Bedeutungen (Runas_Alias bezieht sich auf die Identität, unter der die Kommandos ausgeführt werden dürfen). Der Aliasname selbst wird in Großbuchstaben angegeben, er darf außerdem Ziffern und den Unterstrich enthalten: Host_Alias MUC = Jogyli, Toshili User_Alias ADMIN = chr, juergen Cmnd_Alias KILL = /bin/kill, /usr/bin/killall
# Rechner # Benutzer # Kommandos
Der eigentliche sudoers-Eintrag, also der, der die Rechte bestimmt, hat die Form Benutzer Rechner = (sudo-Identität) Kommando Dies bedeutet, dass der Benutzer Benutzer auf dem Rechner Rechner unter der Identität sudo-Identität das Kommando Kommando ausführen darf. sudo-Identität ist der im sudo-Kommando per Option -u angegebene Benutzer bzw. root. Der Teil ›(sudo-Identität)‹ kann im sudoers-Eintrag entfallen, der Default ist dann ›(root)‹. Ein Ausrufezeichen vor einer der Angaben bedeutet ›nicht‹, d.h., hiermit werden einzelne Benutzer(gruppen), Rechner, sudo-Identitäten oder Kommandos ausgeschlossen. Beginnt der Benutzer des sudoers-Eintrags mit %, handelt es sich um eine Gruppe anstatt eines einzelnen Benutzers. Ein einfaches Beispiel: chr Jogyli = (root) /bin/mount /dev/hdb3
Der Benutzer chr darf hiermit auf dem Rechner Jogyli mit temporären Root-Rechten die Partition hdb3 mounten. Die folgenden Kommandos zeigen, dass chr ›mount‹ nicht ausführen darf, dagegen aber ›sudo mount‹ (den mount-Eintrag für hdb3 in der /etc/fstab zeigt grep vorab): chr@Jogyli:~> grep /hdb3 /etc/fstab /dev/hdb3 /mnt/sicherung vfat noauto,rw 0 0 chr@Jogyli:~> mount /dev/hdb3 mount: Nur »root« kann /dev/hdb3 auf /mnt/sicherung einhängen chr@Jogyli:~> sudo mount /dev/hdb3 Password: xxxx chr@Jogyli:~> ll /mnt/sicherung/ insgesamt 1061984 -rwxr-xr-x 1 root root 5373603 2003-10-24 12:23 bootlocal.tar.zip ...
Zurück zur /etc/sudoers. Jeder Teil des Rechte-Eintrags kann aus mehreren (durch Komma getrennten) Elementen bestehen, also erlaubt zum Beispiel chr, juergen Jogyli = /bin/mount /dev/sdb3, /bin/mount /dev/sdb4
den beiden Benutzern, die Partitionen sdb3 und sdb4 zu mounten. Das mountKommando darf nur mit diesen angegebenen Partitionen benutzt werden. Mit chr, juergen Jogyli = /bin/mount
dürfen die beiden Benutzer mount ohne Einschränkungen benutzen. In jedem Teil der sudo-Spezifikation können die oben beschriebenen Aliase benutzt werden, ebenso das Schlüsselwort ALL. Der Eintrag root ALL=(ALL) ALL
236
10.7 Im Namen der root – su, sudo und Co
bedeutet einfach, dass root überall alles darf. Wenn Sie einem anderen Benutzer die gleiche Generalvollmacht erteilen wollen, alle Kommandos mit Hilfe von sudo auszuführen, kopieren Sie diese Zeile und setzen statt root den Namen des Benutzers ein. (Auf jeden Fall sollte für diesen Benutzer aber die Abfrage des Passworts nicht unterdrückt werden …) Ein weiteres Beispiel: Um dem Benutzer-Alias ADMIN zu erlauben, über sudo kill und killall auch für Prozesse anderer (!) Benutzer auszuführen (also die Root-Rechte zu erhalten), gibt man an: ADMIN ALL = KILL
Sollte dies nur für sämtliche Rechner erlaubt werden, die unter MUC definiert wurden, so würde diese Zeile ergänzt werden zu: ADMIN MUC = KILL
Wenn Benutzern aus der Gruppe ›autoren‹ alle Root-Kommandos über sudo erlaubt werden sollen, außer kill und killall, kann dies über das ›!‹ ausgeschlossen werden (um ›autoren‹ als Gruppenname zu identifizieren, wird dies mit einem führenden % gekennzeichnet): %autoren ALL = ALL, !KILL
Die Datei /etc/sudoers in der SUSE-Version mit den zusätzlichen Aliasen und der Berechtigung für ADMIN sieht dann folgendermaßen aus: # 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. # # Host alias specification Host_Alias MUC = Jogyli, Toshili # User alias specification User_Alias ADMIN = chr, juergen # Cmnd alias specification Cmnd_Alias KILL = /bin/kill, /usr/bin/killall # Defaults specification Defaults targetpw # ask for the password of the target user i.e. root # %users ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults # targetpw'! # User privilege specification # You should not use sudo as root in an SELinux environment # If you use SELinux, remove the following line root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom6 # %users localhost=/sbin/shutdown -h now7 ADMIN MUC = KILL
6. Durch den Eintrag ›users‹ bei /cdrom in der /etc/fstab haben bereits alle Benutzer die Berechtigung, das mount-Kommando für /cdrom zu nutzen (s. Seite 115).
237
Prozessverwaltung
Die Zeile ›Defaults targetpw‹ sorgt dafür, dass sudo das Passwort der neuen Identität abfragt. Fehlt diese Zeile, wird das Passwort des aufrufenden Benutzers abgefragt. Die Konfigurationsmöglichkeiten von /etc/sudoers sind sehr vielseitig und mächtig, die Definition kann damit aber auch komplex werden. In /etc/sudoers lässt sich nahezu alles formulieren, was das Herz (oder die Sicherheit) begehrt – und noch einiges darüber hinaus. Dazu gehören Defaulteinstellungen, Zugriffsberechtigungen über Netz, Wildcards, Ausschluss von bestimmten Parametern bei Kommandos und manches mehr. Zusätzlich zu den Alias- und Berechtigungseinträgen gibt es eine Reihe von Flags (Schaltern), mit denen sudo gesteuert wird. Die vollständige Syntax für die Einträge in /etc/sudoers liefert ›man 5 sudoers‹. Weitere Informationen findet man auf der Entwicklungs-Homepage zu sudo unter www.courtesan.com/sudo/. In den meisten Fällen ist es am einfachsten, eine existierende Beispieldatei zu editieren bzw. zu erweitern. Da eine fahrlässige Konfiguration jedoch ein ziemliches Sicherheitsloch reißen kann, wird man entsprechend vorsichtig mit diesen Möglichkeiten umgehen. Die Definitionen in /etc/sudoers sollten keine Programme zulassen, die ein Shell-Escape (den Aufruf einer Shell) erlauben, da damit effektiv die Super-User-Rechte verschenkt werden. Unter einigen Linux-Systemen ist bei der Standardinstallation /etc/sudoers sehr offen gesetzt. Es lohnt sich deshalb, diese Einstellungen nach der Installation zu kontrollieren! sudo protokolliert im Standardfall alle ausgeführten Kommandos in der SystemLog-Datei. Dies lässt sich ebenfalls in /etc/sudoers konfigurieren.
10.8 Programme für die grafische Oberfläche starten Wenn Sie Programme für die grafische Oberfläche als angemeldeter Benutzer aus einem Terminal aufrufen, sollte dies immer als Hintergrundprozess erfolgen. Damit kann das Terminal anderweitig genutzt oder geschlossen werden. Arbeitet man mit einer grafischen Oberfläche, so bietet su gewisse Probleme, wenn nach dem Identitätswechsel ein KDE-Programm (z.B. der Editor kate oder die Systemüberwachung mit ksysguard) aufgerufen werden soll. Meldungen wie ›…: cannot connect to X server ‹ oder ›… can‘t determine DISPLAY. Aborting.‹ sind die Folge. Dies hat zumeist zwei Gründe:
238
7. Über die grafische Oberfläche KDE darf jeder Benutzer über das Abmeldemenü auch den Rechner herunterfahren. Die beiden Einträge unter Samples sind bei einer Standardinstallation nicht so praxisbezogen, sie dienen hier eher als Muster.
10.8 Programme für die grafische Oberfläche starten
❐
X11 verbietet es im Standardfall, dass fremde Benutzer (bzw. Rechner) auf der
grafischen Oberfläche des angemeldeten Benutzers Fenster öffnen dürfen. Dies kann man – vor dem Wechsel durch su – mit dem Kommando xhost +Rechnername erlauben. Rechnername ist hierbei der Rechner des fremden Benutzers, dem man Zugang zur X-Oberfläche gewährt. Wenn es sich, wie in unserem Fall, um den ›eigenen‹ Rechner handelt, kann man als Rechnername ›localhost‹ einsetzen. Nach der Rückkehr aus su sollte man dies über xhost -Rechnername zurücksetzen. ❐
Die benötigte Variable DISPLAY ist durch den Identitätswechsel per su nicht richtig gesetzt. DISPLAY wird nur beim regulären X-Login gesetzt. Sie enthält den Namen des Rechners für die X11-Anzeige. Damit auch mit su die grafische Oberfläche genutzt werden kann, setzt man die Variable neu mit ›export DISPLAY=localhost:0.0‹.
Möchte man unter der su-Identität auch mit X11-Programmen arbeiten, sieht die gesamte Sequenz deshalb wie folgt aus: chr2@JOGYLI:~> xhost +localhost chr2@JOGYLI:~> su -l root Password: JOGYLI:~ # export DISPLAY=localhost:0.0 JOGYLI:~ # ksysguard & JOGYLI:~ # exit logout chr2@JOGYLI:~> xhost -localhost
Möchte man X11-Programme häufiger unter su nutzen, so lohnt es sich, sich mit dem xauth-Authentifikationssystem vertraut zu machen. Eine Beschreibung dazu findet man im Remote-X-Mini-HOWTO oder knapper per ›man xauth‹. kdesu Das Modul kdesu stellt unter KDE die Funktion von sudo zur Verfügung. Die Syntax lautet: kdesu [-u Account] Kommando Kommando, um unter anderem Namen Kommandos auszuführen
Die Option ›-u Account‹ erlaubt es, einen Benutzernamen anzugeben (sonst ist es root).
239
Prozessverwaltung
Zu kdesu ein Beispiel: chr2@JOGYLI:~> kdesu ksysguard
Aktiviert man den Button Passwort beibehalten, so speichert der Daemon das Passwort im Hauptspeicher und fragt es beim nächsten Aufruf nicht mehr ab. Das Passwort überlebt aber ein Logout nicht. Das Sicherheitsrisiko ist damit zumeist tragbar. Damit kdesu arbeiten kann, muss der Daemon kdesud laufen. Dieser wird in der Regel bei der Installation von KDE mit aufgesetzt. ›ps -efl | grep kdesud‹ zeigt an, ob er aktuell läuft.
10.9 Prozesse, die ihre Eltern überleben Wenn Sie von einem Terminal einen Vordergrundprozess starten und schließen das Terminal, bevor der gestartete Prozess beendet wurde, werden auch alle davon abhängigen Sohnprozesse beendet. Melden Sie sich als Benutzer ab und es laufen noch einige Prozesse (auch Hintergrundprozesse), die bei der Sitzung gestartet wurden (auch unter anderem Namen), werden diese ebenfalls beendet. Um bestimmte Prozesse, wie z.B. eine Sicherung, auch nach dem Abmelden weiterlaufen zu lassen, kann dies mit dem Kommando nohup erreicht werden. Das Kommando nohup wird vor den eigentlichen Kommandoaufruf gesetzt. Die Syntax lautet nohup Kommando [Optionen für Kommando] Kommando, um Programme nach dem Abmelden weiterlaufen zu lassen
Ein Beispiel verdeutlicht den Ablauf: Wenn der Benutzer carsten (auf Jogyli auf dem zweiten grafischen Bildschirm angemeldet) mit ›su‹ zu root gewechselt hat, dann nachfolgenden Befehl absetzt Jogyli:/home/carsten # nohup tar -cvf /tmp/Sicherunghome.tar /home nohup: hänge Ausgabe an „nohup.out“ an
und die zusätzliche Session auf Bildschirm 2 abgemeldet wird, so sieht man mit ps, dass der Prozess tar weiterläuft. Unter der Anzeige des kontrollierenden Terminals ist nur ein Fragezeichen zu sehen, da das kontrollierende Terminal ja nicht mehr verfügbar ist. Jogyli:/home/chr # ps -ef | grep tar root 6044 6033 0 11:12 ? 00:00:00 tar -cvf /tmp/Sicherunghome.tar
240
10.10 Zeitgesteuerte Prozesse
Dieser Prozess wird also von keinem Terminal (Bash) mehr kontrolliert. Sollten evtl. Fehlermeldungen oder Ausgaben von dem mit nohup aufgerufenen Prozess auftreten, werden sie in die Datei nohup.out im beim Aufruf aktuellen Verzeichnis geschrieben. Eleganter ist allerdings, wenn eine Sicherung automatisch zu bestimmten Zeiten gestartet wird. Dies ist das Thema des nächsten Abschnitts.
10.10 Zeitgesteuerte Prozesse Gerade als Systemverwalter gibt es eine Reihe von Aufgaben, die zu bestimmten Zeiten durchgeführt werden müssen. Zu diesen Aufgaben gehören z.B. die täglichen, wöchentlichen und monatlichen Sicherungen. Aber auch bestimmte Anwenderprogramme, wie z.B. die monatliche Mehrwertsteuervorauszahlung oder Abschlüsse in der Finanzbuchhaltung, könnten über zeitgesteuerte Prozesse abgewickelt werden. Unter Linux unterscheidet man zwischen ❐
einmaliger Zeitsteuerung (dies wird über das Kommando at gesteuert) und
❐
regelmäßig sich wiederholenden Aufgaben. Hier gibt es mehrere Möglichkeiten: Für den Benutzer wird hierfür das Kommando crontab eingesetzt. crontab bereitet eine Tabelle auf, in der die einzelnen Aufträge mit den sich wiederholenden Ausführungszeiten und dem zugewiesenen Kommando enthalten sind. Diese Dateien werden im Verzeichnis /var/spool/cron/tabs abgelegt. Unter root stehen bestimmte Verzeichnisse zur Verfügung, die regelmäßig nach auszuführenden Kommandos überprüft werden. Dies sind entsprechend der Ausführzeiten: /etc/cron.hourly (stündlich), /etc/cron.daily (täglich), /etc/cron.weekly (wöchentlich) und /etc/cron.monthly (monatlich).
Wichtig ist, dass sowohl bei at als auch bei crontab alle Kommandos mit vollem Pfadnamen und entsprechender Ausgabeumleitung eingetragen werden müssen. Die Kommandos werden ja nicht von dem Benutzer selbst, sondern von Daemonen (atd bzw. crond) aufgerufen. Die Daemonen werden meist beim Hochfahren gestartet und kennen nicht die Umgebungsvariablen des Benutzers (aktuelles Verzeichnis, aktuelles Terminal, PATH und ähnliches). Sinnvoll ist hier, bei den Kommandos entsprechende Variablen zu setzen. Kann ein Kommando nicht ordnungsgemäß durchgeführt werden, wird eine Mail an den Benutzer geschickt, der den Auftrag mit at oder crontab abgesetzt hat. Da eine zeitbedingte Ausführung von Programmen ein Risiko darstellt, kann man entweder bestimmten Benutzern verweigern (deny), die Anwendung zu nutzen, oder nur einigen Benutzern die Anwendung erlauben (allow). Sie müssen also für at und cron vorab entscheiden, welche Art Sie bevorzugen. 241
Prozessverwaltung
Sowohl für at als auch für cron darf jeweils nur eine der deny- oder allow-Dateien existieren. ❐
/etc/at.deny bzw. /var/spool/cron/deny Hier werden dann jene Benutzernamen (je einer pro Zeile) eingetragen, die das Programm nicht verwenden dürfen. Standardmäßig sind bei SUSE für beide Programme die deny-Dateien bereits eingerichtet. U.a. bei cron.deny für gast und guest, bei at für eine Reihe von Benutzern, die aus programmtechnischen Gründen angelegt wurden (bin, daemon, mail u.a.). Alle anderen Benutzer dürfen die Programme nutzen.
❐
/etc/at.allow bzw. /var/spool/cron/allow. Hier würden dann jene Benutzer eingetragen werden, denen es erlaubt wird, at oder cron zu benutzen. Alle anderen Benutzer haben keine Erlaubnis. Die entsprechende deny-Datei ist dann zu löschen.
Gibt es weder eine deny- noch eine allow-Datei, hat nur root das Recht, die Programme at bzw. cron zu nutzen.
10.10.1 At-Kommandos Um at-Kommandos aufrufen zu können, muss evtl. im Runlevel-Editor der atdDaemon erst aktiviert (bzw. nachinstalliert) werden. Zu der at-Familie gehören folgende Kommandos: Kommando
Erläuterung
at [ -l -d Jobnummer -f Datei] \ Zeitangabe
Kommandos zu bestimmten Zeiten ausführen. -l list zeigt die vorhandenen at-Jobs an -d delete löscht die angegebene Jobnummer -f nachfolgende Datei enthält Kommandos
mögliche Zeitangaben: at 13:34 at 08:00 tomorrow at 13:00 5.6.2002 at 13:00 06/05/2002 at now + 5 minutes at now + 5 hours at now + 5 days at now + 5 weeks at midnight at noon
242
heute um 13:34 Uhr ausführen morgen um 8:00 Uhr ausführen am 5.6.2002 um 13:00 Uhr ausführen wie oben mit amerikanischer Datumsangabe in 5 Minuten ausführen (von jetzt an) in 5 Stunden ausführen (von jetzt an) in 5 Tagen ausführen (von jetzt an) in 5 Wochen ausführen (von jetzt an) um Mitternacht ausführen mittags ausführen
atq
(at queue) at-Aufträge anzeigen (entspricht at -l)
atrm Jobnummer
at-Aufträge löschen (entspricht at -d)
10.10 Zeitgesteuerte Prozesse
Kommando
Erläuterung
batch
Aufträge zu Zeiten niedrigster Systembelastung ausführen (gleiche Syntax wie at)
atrun
alle anstehenden at-Kommandos sofort laufen lassen
atd
Daemon für at-Kommandos
Nachstehendes Beispiel zeigt, was passiert, wenn die Kommandos nicht ›daemonlike‹ angegeben werden: chr2@JOGYLI:~> at 12:10 warning: commands will be executed using /bin/sh at> echo hallo at> <EOT> (Beenden mit <Strg+d>) job 3 at 2004-06-08 12:10
Um 12:10 wartet man hier vergeblich auf ein ›hallo‹. Erst über den Aufruf von mail erhalten Sie hierfür den Grund: From chr2@JOGYLI Tue Jun 8 12:10:46 2004 X-Original-To: chr2 Delivered-To: chr2@JOGYLI Subject: Output from your job 3 Date: Tue, 8 Jun 2004 12:10:46 +0200 From: chr2@JOGYLI (Christine Wolfinger) To: undisclosed-recipients:; hallo
Wie schon erwähnt, kennen die Daemonen keine Umgebungsvariablen des Benutzers (wie PATH) und es gibt auch kein kontrollierendes Terminal und damit auch keine Standardein- und -ausgabe. Das Kommando echo ist dagegen in der /bin/sh als internes Kommando vorhanden und muss deshalb nicht mit dem absoluten Pfadnamen angegeben werden. Hier nun die richtige Eingabe. Das aktuelle Terminal kann vorab über tty abgefragt werden. Um die Zeit mitzuverfolgen, wurde im Prompt (Umgebungsvariable PS1) die Zeitangabe mit eingestellt. chr2@JOGYLI:~> export PS1="\t\u@\h:\w>" 12:38:37chr2@JOGYLI:~>at 12:40 warning: commands will be executed using /bin/sh at> echo "Hallo, es ist Mittag! Mach mal Pause!" > /dev/pts/10 at> <EOT> job 7 at 2004-06-08 12:40 ... 12:40:00chr2@JOGYLI:~>Hallo, es ist Mittag! Mach mal Pause!
Wollen Sie zu einer bestimmten Zeit ein KDE-Programm starten, muss sichergestellt sein, dass mit xhost + vorab die Erlaubnis für andere erteilt wurde, die grafische Oberfläche mitzubenutzen (siehe auch Seite 239) und dem Kommando auch die DISPLAY-Variable mitgegeben wurde. Da KDE ein eigenes Programm für die Kommunikation (dcopserver) benutzt, darf die DISPLAY-Variable hier nicht mit dem Rechnernamen eingegeben werden, sonst würde ein Fehler auftreten. Ein
243
Prozessverwaltung
kleines Beispiel mit richtig gesetzter Variable: chr2@JOGYLI:~> at now +60 min warning: commands will be executed using /bin/sh at> DISPLAY=:0 /opt/kde3/bin/korganizer & at> <EOT> job 14 at 2004-06-08 21:05
Mit dem KOrganizer können Sie zwar auch Termine und sich wiederholende Aufgaben eintragen, an die Sie erinnert werden, aber es werden dort keine Programme gestartet (außer dem Erinnerungs-Popup-Fenster). Um jeden Freitag die Wochensicherung durchzuführen, können Sie diese Aufgaben dem crond übergeben, der sie dann z.B. nachts um 4:00 durchführt. Dazu muss allerdings sichergestellt sein, dass auch die benötigten Ressourcen verfügbar sind wie evtl. ein entfernter Rechner, falls auf diesem die Sicherung geschrieben werden soll. Wie der Eintrag hierfür erfolgt, erfahren Sie im nächsten Abschnitt.
10.10.2 Zeitgesteuerte Arbeiten mit crontab Entgegen dem atd ist der Daemon crond bereits aktiv, da eine Reihe von Systemprogrammen ihn verwenden. Die Datei /etc/crontab dient als systemweite Tabelle für crond. In dieser Datei sind bereits einige Aufgaben aufgeführt, die zu bestimmten Zeiten erfolgen sollen. Werfen wir einen Blick hinein, um die Funktionsweise zu verstehen. SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin MAILTO=root #man # check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly # -*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1 59 * * * * root rm -f /var/spool/cron/lastrun/cron.hourly 14 4 * * * root rm -f /var/spool/cron/lastrun/cron.daily 29 4 * * 6 root rm -f /var/spool/cron/lastrun/cron.weekly 44 4 1 * * root rm -f /var/spool/cron/lastrun/cron.monthly
user, unter dem das Kommando abgesetzt wird Wochentage (0-7) (0 oder 7 ist Sonntag) Monat 1-12 Tag 1-31 * bedeutet ›immer‹ Stunde 0-23 Minute 0-59
Bild 10-3: Inhalt der /etc/crontab
Zuerst sind Variablen gesetzt, die dann für alle eingetragenen Aufträge gelten. Kommentare sind wie in anderen Skripten mit einem ›#‹ gekennzeichnet.
244
Im Anschluss ist pro Zeile jeweils ein Auftrag eingetragen, der zu den angegebenen Zeiten wiederholt wird. Hierbei müssen die Werte für Minute (0-59), Stunde (0-23), Tag (1-31), Monat (1-12) und Wochentag (0-7) durch ein Leerzeichen getrennt eingetragen sein.
10.10 Zeitgesteuerte Prozesse
Jede Zeile in der /etc/crontab hat folgenden Aufbau: Zeitzuordnung (5 Felder), ausführender Benutzer, Kommandoaufruf Für jede Einheit muss ein Eintrag vorhanden sein. Hierbei sind die in Tabelle 10-1 angegebenen Kombinationen möglich. Die Datei /etc/crontab sollte von root nur noch geändert werden, um die vorgegebenen Zeiten anzupassen. Die /etc/crontab dient einzig dazu, die in den folgenden Verzeichnissen abgelegten Programme/Shell-Skripte zu den vorgegebenen Zeiten auszuführen: Tabelle 10-1: Zeitangaben bei crontab Eintrag
Beispiel
Bedeutung
*
s. n. Zeile
immer, zu jeder Einheit z.B. jede Minute, jede Stunde
14
14 4
z.B. genau um 14 Minuten nach 4 (morgens) jeden Tag, jeden Monat, jeden Wochentag
1,3,4
1 * * * 1,3,4
jeweils 1 Min. nach jeder Stunde an allen Tagen, jeden Monat, aber nur Mo, Mi und Do
1-5
30 12 * * 1-5
An allen Werktagen um 12:30
-*/15
-*/15 * * * *
Schritte: jeweils alle 15 Minuten
stündlich: täglich: monatlich: wöchentlich:
* * *
/etc/cron.hourly /etc/cron.daily /etc/cron.monthly /etc/cron.weekly
Unter /etc/cron.daily sind, wie Sie aus nebenstehendem Ausschnitt sehen, bereits einige Skripte zur Wartung des Systems vorhanden. Auch bei diesen Skripten werden keine benutzerspezifischen Variablen übernommen, diese müssen also entsprechend gesetzt werden. Hier ein kleiner Ausschnitt aus dem Skript suse.de-cron-local: umask 022 PATH=/sbin:/bin:/usr/sbin:/usr/bin export PATH # now start the local cron.daily file, if it exists. if [ -f /root/bin/cron.daily.local ] ; then . /root/bin/cron.daily.local fi exit 0
Aus diesem Shell-Skript geht hervor, dass eine Datei /root/bin/cron.daily.local, falls sie existiert, in das Skript eingelesen und damit täglich ausgeführt wird. Dies
245
Prozessverwaltung
bedeutet, dass Sie als root eine Datei mit obigem Namen anlegen können und dort entsprechende Kommandos eintragen, die dann täglich ausgeführt werden. Doch auch jedes andere Skript, das Sie in dem Verzeichnis /etc/cron/daily ablegen, wird täglich ausgeführt. Eine weitere Möglichkeit, um Programme zu bestimmten Zeiten wiederholt durchführen zu lassen, ist das Einrichten einer eigenen crontab-Datei. Dies geht nicht nur für root, sondern auch für normale Benutzer, soweit sie dazu berechtigt sind (siehe allow/deny Seite 242). Diese benutzerspezifischen crontab-Dateien werden mit dem Kommando crontab unter /var/spool/cron/tabs angelegt bzw. geändert, wobei dort als Dateiname der Name des jeweiligen Benutzers genommen wird. Der Daemon crond überprüft jede Minute diese Dateien und führt die Kommandos aus, die zu dem betreffenden Zeitpunkt anstehen. Die Syntax des Kommandos crontab lautet: crontab [-u Benutzer ] Datei crontab [-u Benutzer ] [-l] [-e] [-r] Kommando, um zeitgesteuerte Aufträge abzusetzten
Die erste Variante installiert eine Datei mit crontab-Einträgen für den angegebenen Benutzer unter /var/spool/cron/tabs. Die zweite Variante greift auf die installierte crontab-Datei zu, wobei einer der Parameter -l, -e oder -r angegeben werden muss: -u
(user) Benutzer, dessen crontab-Tabelle behandelt werden soll. Per Standardeinstellung ist dies der Benutzer, der das Kommando crontab aufruft.
-l
(list) crontab-Datei anzeigen.
-e
(edit) crontab-Datei ändern (Standardeinstellung vi/vim durch die Variable EDITOR).
-r
(remove) crontab-Datei entfernen.
Die Syntax für crontab-Aufträge entspricht der von /etc/crontab, allerdings ohne das Feld user, denn der Name des Benutzers spiegelt sich ja schon im Dateinamen der crontab wider. Die Eingabe lautet z. B.: 0 4 * * 5 /root/bin/vollsicherung 0 4 * * 1-4 /root/bin/inkrementelle_sicherung
Da auch hier die Kommandos mit absolutem Pfadnamen angegeben werden müssen, sei noch auf das Kommando which verwiesen, das das gesuchte Kommando mit dem vollen Pfad anzeigt. Als root (bzw. als normaler Benutzer mit crontab -l) können Sie einen Blick in die Datei werfen: 246
10.10 Zeitgesteuerte Prozesse
Jogyli:~ # cat /var/spool/cron/tabs/root # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.8967 installed on Sun Aug 29 17:43:08 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 0 4 * * 5 /root/bin/vollsicherung 0 4 * * 1-4 /root/bin/inkrementelle_sicherung
Für Freunde grafischer Oberflächen gibt es zum Anlegen zeitgesteuerter Prozesse auch ein grafisches Tool: vcron (visual cron). Dieses muss üblicherweise erst nachinstalliert werden und ist dann unter /usr/X11R6/bin/vcron zu finden. vcron wird über Terminal gestartet. Es gibt je ein Eingabefeld für einmalige und für wiederholte Ausführung, entsprechend der Kommandos at und cron. Will man einen Auftrag starten, klickt man auf ›Neu‹ und kann dann zwischen cron und at auswählen. Im nachstehenden Beispiel wird das Spiel kpat jeweils um 17:00 Uhr in den Monaten Oktober bis Dezember an den Werktagen außer Freitag gestartet und per killall -ce jeweils um 17:15 Uhr wieder beendet (also zum Feierabend höchstens ein Viertelstündchen ›Entspannung‹).
Bild 10-4: Beispiel über den Start von KDE-Programmen über vcron
247
Prozessverwaltung
Über crontab -l kann der Inhalt der Datei /var/spool/cron/tabs/chr angezeigt werden: > crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (- installed on Wed Sep 1 18:09:35 2004) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 0 17 * 10,11,12 1,2,3,4 DISPLAY=:0.0 /opt/kde3/bin/kpat 15 17 * 10,11,12 1,2,3,4 /usr/bin/killall -ce /opt/kde3/bin/kpat
Sowohl das Verzeichnis als auch die Dateien dürfen nur von root gelesen werden. Geändert werden sollten sie nur mittels crontab -e oder wieder über vcron mit ›Ändern/Ansehen‹. Dies ist dann auch dem Benutzer erlaubt, soweit er dazu berechtigt ist.
10.11 Zusammenfassung Eine Übersicht der Kommandos zur Prozessverwaltung finden Sie auf Seite 412. Übersicht der Verzeichnisse und Dateien zu diesem Kapitel
248
Verzeichnis/Datei
Erläuterung
/etc/at.allow rw nur für root
Eintrag von Benutzern, die das Kommando at benutzen dürfen. Es darf nur /etc/at.allow oder /etc/at.deny existieren.
/etc/at.deny rw nur für root
Eintrag von Benutzern, die das Kommando at nicht benutzen dürfen. Es darf nur /etc/at.allow oder /etc/at.deny existieren. Fehlen die Dateien, darf nur root at-Kommandos ausführen.
/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly
Verzeichnisse, in die Skriptdateien durch root kopiert werden können, die stündlich/täglich/ wöchentlich/monatlich ausgeführt werden sollen.
/etc/crontab
Tabelle für crond, die ermöglicht, dass Skripte in die Verzeichnisse /etc/cron.daily usw. abgelegt werden können, damit sie regelmäßig ausgeführt werden.
/etc/crontab/tabs
In diesem Verzeichnis werden über crontab die Aufträge für crond in Tabellenform pro Benutzer abgelegt.
/etc/sudoers
Datei, in der eingetragen ist, wer was mit sudo ausführen darf.
10.12 Schließen der Prozessakte
Verzeichnis/Datei
Erläuterung
/proc
Unter diesem Verzeichnis (es handelt sich hierbei um eine virtuelles Dateisystem, siehe Kapitel Dateisysteme Seite 103) werden u.a. Informationen über die aktuellen Prozesse geschrieben, die z. B. von den Kommandos ps, pstree, top und ksysguard genutzt werden.
/var/cron/allow
Eintrag von Benutzern, die das Kommando crontab benutzen dürfen. Es darf nur /var/cron/allow oder /var/cron/deny existieren.
/var/cron/deny
Eintrag von Benutzern, die das Kommando crontab nicht benutzen dürfen. Es darf nur /var/cron/allow oder /var/cron/deny existieren.
10.12
Schließen der Prozessakte
Hier kurz noch einmal die Fakten, um die es in diesem Kapitel ging. Auch wenn Daemonen mit im Spiel sind, sollten Sie immer die Kontrolle über die Prozesse behalten.
249
Kapitel 11 Netzwerke unter Linux
Linux wird, wie die Statistiken zeigen, bisher primär als Server in Netzen eingesetzt und als Gateway zum Internet. Der Grund dafür ist unter anderem die Stabilität des Systems und die Sicherheit. Das Thema Netzwerke ist allerdings so umfangreich, dass wir in diesem Kapitel nur das Wichtigste und ein wenig Hintergrundwissen über Netze zusammengestellt haben, damit Sie als Systemverwalter die Voraussetzungen schaffen können, intern auf andere Rechner und deren Ressourcen zuzugreifen und das Internet zu nutzen. Hier die wesentlichen Punkte: 11.1 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.10 11.11 11.12 11.13 11.14 11.15 11.16 11.17
Was erwartet Sie Grundlagen der Kommunikation in Netzwerken Konfigurieren eines internen Netzes Entferntes Anmelden und Datenaustausch ssh – der sichere Weg von A nach B NFS und NIS Benutzer und Gruppen netzwerkweit verwalten mit NIS Samba – die Brücke zwischen Betriebssystemen Kommunikation mit Apple Mac OS Der Weg zur weiten Welt übers Internet Konfigurieren eines Analog- oder ISDN-Modems Einrichten der KMail als Mail-Client Wichtige Aspekte zur Sicherheit Linux-Rechner als Gateway und DNS-Server Netzplanung Zusammenfassung Stichworte, die zum Netzwerk gehören
251
Netzwerke unter Linux
11.1 Was erwartet Sie Zu Beginn wollen wir die wesentlichen Komponenten eines kabelgebundenen Netzwerkes vorstellen, so beispielsweise, welche Hardware vorhanden sein muss bzw. verwendet werden kann und welche Software eingesetzt wird, um Informationen zwischen Rechnern auszutauschen. Anschließend geben wir ein paar grundlegende Informationen zu TCP / IP. Am Muster eines kleinen inhomogenen Netzes zeigen wir, welche Kommunikationsmöglichkeiten unter Linux bestehen und welche Voraussetzungen hierzu geschaffen werden müssen. In unserer Beispielumgebung konfigurieren wir zuerst die Netzwerkkarten für Linux-, Windows- und Macintosh-Rechner und testen die Verbindung. Welche Kommunikation (Datentransfer und Anmelden an entfernten Rechnern) dann untereinander möglich ist, finden Sie zusammengestellt in Tabelle 11-5, Seite 277. Zu ftp und telnet haben wir keine Beispiele aufgeführt, da sie bekannt sein dürften. In der Kurzreferenz (Seiten 426 und 444) sind sie aber mit enthalten. Übers Internet sollten diese Kommandos aus Sicherheitsgründen allerdings nicht mehr bzw. nur über VPN1 verwendet werden. Den Schwerpunkt haben wir auf die OpenShell-Kommandos gelegt mit ssh, sftp und scp, die eine verschlüsselte Übertragung ermöglichen. Innerhalb von Linux/Unix-Rechnern gehen wir nur kurz auf die Dienste NFS und NIS ein (NFS: Network File System – mounten von Dateisystemen auf entfernten Rechnern; NIS: Network Information Service – Benutzer und Gruppen innerhalb eines Linux/Unix-Netzes einheitlich verwalten). Wie wir im Abstract zu diesem Kapitel erwähnten, ist das Thema Netzwerke zu umfangreich, um es in diesem Einführungsbuch nur annähernd vollständig zu behandeln. Auch sehr wichtige Themen wie Sicherheit können hier nur gestreift werden (Informationen finden Sie hierzu auf Seite 329). Zum Thema Firewall haben wir einen eigenen Abschnitt, behandeln dort aber in erster Linie die Möglichkeiten, die unter SUSE Linux genutzt werden können. Zum Abschluss konfigurieren wir einen Linux-Rechner als Gateway zum Internet. Unter dem Aspekt einer Einführung ist dieses Kapitel doch sehr umfangreich geworden. Sollten für Sie nur bestimmte Themen von Interesse sein, finden Sie nachstehend Verweise auf die entsprechenden Seiten.
252
❐
Arbeiten Sie nur an einem Einplatzsystem und wollen das Internet nutzen, so sind die Abschnitte ab Kapitel 11.10, ›Der Weg zur weiten Welt übers Internet‹ (Seite 316) für Sie wichtig. Der Konqueror kann sehr gut als Browser verwendet werden (Hinweise finden Sie in der Online-Hilfe). Es gibt unter SUSE Linux noch eine Reihe anderer Browser. Zu ihnen gehören:
1.
VPN heißt Virtual Private Network und bedeutet eine verschlüsselte Kommunikation (ähnlich eines Tunnels) über unsichere Netze (siehe auch Seite 278).
11.2 Grundlagen der Kommunikation in Netzwerken
– Mozilla – der Open-Source-Nachfolger des Netscape-Browsers bzw. Firefox, eine überarbeitete, schnellere und kleinere Version der Mozilla-Browser-Engine – Opera – bekannt als ein Fast Web Browser, also ein schneller bedienerfreundlicher Browser – Epiphany und Galeon – Webbrowser für den GNOME Desktop – links – ein einfach zu bedienender, schneller textbasierter Browser, der auch über eine grafische Oberfläche verfügt – Lynx – ein einfach zu bedienender und schneller Browser für HTML-Dokumente. Er kann von Textterminals aus genutzt werden. ❐
Soweit Sie sich über Internet an einem entfernten Rechner anmelden wollen, lesen Sie hierzu Abschnitt 11.5, ›ssh – der sichere Weg von A nach B‹ auf Seite 278.
❐
Wollen Sie ein Mail-Tool einsetzen, finden Sie ein Beispiel für einen Mail-Client unter Abschnitt 11.12, ›Einrichten der KMail als Mail-Client‹ auf Seite 322. Hier finden Sie auch Tipps, wie Sie Ihre aus anderen Mail-Tools bestehenden Adressen und Nachrichten übernehmen können. Die Konfiguration eines MailServers wird in diesem Einführungsbuch nicht beschrieben.
❐
Um ein eigenes Netz aufzubauen, erhalten Sie Hinweise in den anschließenden Abschnitten und zum Schluss des Kapitels unter 11.15, ›Netzplanung‹ auf Seite 339.
❐
Der Datenaustausch über Netz zwischen Windows und Linux bzw. von Linux nach Windows ist bei vielen Netzwerken ein Hauptanliegen. Im Abschnitt 11.8 über Samba ab Seite 291 haben wir das Wesentliche hierüber zusammengestellt.
❐
Das Einrichten eines Webservers ist kein Thema dieses Buches.
❐
Zum Abschluss diese Kapitels finden Sie einige Hinweise für die Planung größerer Netzwerke.
11.2 Grundlagen der Kommunikation in Netzwerken Zu Beginn wollen wir die wesentlichen Komponenten eines kabelgebundenen Netzwerkes vorstellen, so beispielsweise, welche Hardware vorhanden sein muss bzw. verwendet werden kann und welche Software eingesetzt wird, um Informationen zwischen Rechnern auszutauschen. Anschließend gehen wir auf die Grundlagen von TCP / IP ein. Wenn Sie bereits unter Windows oder einem anderen Betriebssystem Netze verwaltet haben, können Sie die nächsten Seiten überfliegen, da, was TCP / IP anbelangt, auch auf anderen Rechnerplattformen die gleichen Voraussetzungen gelten.
253
Netzwerke unter Linux
11.2.1 Hardwarevoraussetzungen für ein Netzwerk Damit Rechner Informationen austauschen oder auf gemeinsame Ressourcen (Plattenplatz, Drucker, spezielle Software) zugreifen können, benötigen Sie ein Gerät, das die Fähigkeit zum Senden und Empfangen hat, z.B. einen EthernetController. Bei neueren PCs ist er bereits oft auf dem Motherboard (Mainboard) integriert. Sie erkennen ihn in der Regel an der RJ-45-Buchse2.
Bild 11-1: Ethernet-Karte mit RJ-45-Buchse und Stecker
Die Rechner müssen dann noch über Kabel3 verbunden werden (siehe hierzu auch Seite 342). Die einfachste Zusammenführung der Kabel erfolgt über einen Switch, der die Signale des einen Rechners an den anderen weiterleitet. Switches können mehrere Verbindungen gleichzeitig durchschalten. Sie entscheiden, an welches der angeschlossenen Geräte das Datenpaket gesendet werden soll, entweder über die MAC-Adresse (siehe Seite 257) oder über die IP-Adresse je nach Art des Switches (Layer-2-Switch und Layer-3-Switch). Ein Layer-3-Switch arbeitet meist mit einem integrierten Router. Sie können auch Geräte unterschiedlicher Geschwindigkeit verbinden (hierzu werden die Pakete zwischengespeichert). Besonders in kleineren Netzen setzt man fast nur noch Switches ein. Sollen nur zwei Rechner miteinander verbunden werden, kann dies mit einem speziellen Kabel (cross over) von Netzwerkkarte zu Netzwerkkarte erfolgen. In Bild 11-2 finden Sie eine Darstellung eines kleinen Netzwerks. Heute können die Rechner sich auch ›wireless‹ verständigen, doch auch hierfür müssen beide Rechner über entsprechende Netzwerkkarten, die über Funk kommunizieren, verfügen. Bleiben wir vorerst bei einem einfachen (kabelgebundenen) Netz. Switch LinuxServer Laptop
PC
IP-Drucker
Bild 11-2: Beispiel eines kleinen, internen Netzwerks
254
2. Da allerdings auch Modems für ISDN-Anschlüsse RJ-45-Stecker verwenden, muss man achtgeben, diese nicht zu verwechseln. Ansonsten verwenden Modems RJ-11-Stecker mit vier Polen. 3. Oft werden hierfür Twisted Pair mit RJ-45-Stecker eingesetzt.
11.2 Grundlagen der Kommunikation in Netzwerken
Innerhalb einer Firma, in der mehrere Abteilungsrechner und Arbeitsplatzrechner in einem lokalen Netzwerk (Local Area Network – LAN) verbunden werden, reicht ein Switch meist nicht aus, hier werden entweder mehrere Switches eingesetzt oder Abteilungsnetze über Router zusammengeführt. Bei größeren Entfernungen werden noch sogenannte Repeater oder Bridges verwendet (siehe auch Seite 341). ❐
Ein Router entscheidet anhand der IP-Adresse und der ihm mitgeteilten Netztopologie über den weiteren Weg eines Paketes (siehe Bild 11-3). Ein Router (oft auch als Gateway – das Tor zu anderen Netzen – bezeichnet) hat in der Regel mehr als eine Netzwerkkarte (bzw. Netzwerkkarte und z.B. ISDN-Modem und/oder mehrere Ethernet-Karten), um ein- und ausgehende Daten weiterzuleiten. Die Steuerung der Daten erfolgt über sogenannte Routing-Tabellen (siehe auch Netzwerkmasken Seite 262). Damit Ihr Netzwerk gegen Angriffe geschützt ist, wird beim Router in der Regel eine Firewall4 installiert, speziell dann, wenn dieser mit dem Internet verbunden ist. Der Router kann ein eigenes Gerät sein, das über bestimmte Netzsoftware und Firewall verfügt. Die Aufgaben eines Routers/Gateways können auch von einem Linux-Rechner übernommen werden.
❐
Repeater sind Verbindungen im Netz als Verlängerung von Netzkabeln (Zwischenverstärker). Beide angeschlossenen Geräte müssen die gleiche Geschwindigkeit haben. Hubs sind Repeater mit mehr als zwei Anschlüssen. Sie schicken alle Daten immer an alle angeschlossenen Geräte.
❐
Eine Bridge analysiert den MAC-Header eines Datenpaketes und entscheidet dann, ob und wohin das Paket transportiert werden muss oder ob es verworfen wird. Dabei wird das Datenpaket immer gespeichert. Die Weiterentwicklung einer Bridge ist ein Layer-2-Switch. Router/Gateway mit Firewall Modem Internet
Netzwerk A
Netzwerk B
Netzwerk C
Bild 11-3: Vermittlung über Router
Um Rechner außerhalb eines Firmengeländes zu verbinden (Wide Area Network – WAN) bzw. um ins Internet zu kommen, benötigt man spezielle Geräte, die z. B. über das Telefonnetz (Modem) Daten austauschen. Hier einige der am häufigsten eingesetzten Geräte (siehe auch Kapitel 11.10, Seite 316): 4. Firewall (Brandmauer): Software, die bestimmte Portnummern und Adressen überprüft und entscheidet, welche Daten weitergeleitet werden dürfen und welche verworfen werden. Über die Portnummern werden Netzwerkdienste zugeordnet (siehe Seite 344).
255
Netzwerke unter Linux
Gerät oder Karte
Bedeutung
Analog-Modem
Modulator/Demodulator Verbindung von Rechnern über Telefonleitung analog, langsam (oft im Rechner schon eingebaut).
ISDN-Modem
Integrated Services Digital Network Verbindung von Rechnern über Telefonleitung digital, 64.000 Bit/s.
ADSL-Modem DSL-Modem
(Asymmetric) Digital Subscriber Line
Kabel-Modem
Modem zur IP-Anbindung über Fernsehkabel.
11.2.2
Verbindung von Rechnern über Telefonleitung digital, Geschwindigkeit bis 3 MBit/s (Megabit per second) zum Herunterladen (downstream) und 384 kBit/s zum ins Netz übertragen – Hochladen (upstream). Bei (symmetrischem) DSL ist die Geschwindigkeit in beiden Richtungen gleich.
TCP/IP – das einheitliche Kommunikationsprotokoll
Damit Rechner mit unterschiedlicher Hardware und mit verschiedenen Betriebssystemen kommunizieren können, muss ein einheitliches Kommunikationsprotokoll verwendet werden, das von allen Rechnern, gleich mit welchem Betriebssystem (Windows, Unix, Mac OS, VMS u.a.), verstanden wird. Das Internet Protocol (IP) zusammen mit dem Transmission Control Protocol (TCP) erfüllen diese Aufgabe. TCP / IP5 ist die Grundlage des Internets. Die häufigste Anwendung im Internet ist die Abfrage von Informationen im World Wide Web, die Sie mit einem Browser abrufen können. Einige Browser sind plattformabhängig (z.B. unter Windows der Internet-Explorer oder unter Linux der Konqueror). Andere wie Firefox/Mozilla/Netscape oder Opera bieten eine einheitliche Lösung für unterschiedliche Betriebssysteme an. Doch das Protokoll, das die Daten überträgt und dem empfangenden Rechner bereitstellt, basiert bei allen auf TCP/IP. Damit können die Daten auch über unterschiedliche Plattformen gesendet, empfangen und verarbeitet werden. Auf TCP / IP bauen verschiedene Dienste (Protokolle) auf. Zu ihnen gehört u.a. das HyperText Transfer Protocol (HTTP), das dazu dient, Webseiten z.B. im HTML-Format (HyperText Markup Language) zu übertragen. Um die gewünschte Webseite auf dem Webserver einer Firma, z.B. www.suse.de, zu erhalten, wird eine Art Auskunft (Nameserver) zwischengeschaltet, die die weltweit eindeutige IP-Nummer (in diesem Beispiel von suse.de) ermittelt.
256
5. TCP/IP mit verschiedenen Diensten wurde bereits in den Anfängen von Unix (1982) eingesetzt und ist zwischenzeitlich ein De-facto-Standard geworden. Das TCP/IP zugrundeliegende Netzkonzept ging aus dem ARPA-Net (Advanced Research Projects Agency) des Verteidigungsministeriums der USA hervor. Das ARPA-Net vernetzte bereits 1966 in einem Experiment einige Universitäten über Telefonleitungen.
11.2 Grundlagen der Kommunikation in Netzwerken
Je nach Dienst sind unterschiedliche Nachrichtenformate (Protokolle) definiert. Ein Browser z.B. stellt dem Anwender unterschiedliche Dienste zur Verfügung. Er greift auf Webseiten zu und verwendet dazu die Protokolle HTTP oder HTTPS. Der Browser überträgt Dateien mit dem Protokoll FTP, und mit entsprechenden Erweiterungen (Plug-ins) kann er sogar Mails verwalten und nutzt dazu die Protokolle SMTP zum Senden und POP3 oder IMAP zum Empfangen. Die Entscheidung, an welches Programm ein ankommendes Paket ausgeliefert wird und damit nach welchem Protokoll es interpretiert wird, trifft der Empfänger anhand der Portnummer (siehe auch Seite 344). TCP / IP ist nicht nur ein Vermittlungsdienst, sondern man spricht hier von einer Protokollfamilie, da mehrere Protokolle und Dienste angeboten werden. Hier eine Übersicht von Basisprotokollen: Protokoll
Abgeleitet von
Erklärung
TCP
Transmission Control Protocol
Zuverlässiger Datentransfer mit numerierten Datagrammen und Quittungsmechanismus.
IP
Internet Protocol
Wahl des Datenübertragungswegs zwischen zwei Stationen (Routing).
ARP
Address Resolution Protocol
Anhand einer Tabelle wird aus einer gegebenen IP-Adresse die zugehörige physikalische Adresse (MAC – Media Access Control) ermittelta.
HTTP
HyperText Transfer Protocol
Es ist ein Client-Server-Protokoll, das im World Wide Web HTML-Dokumente austauscht (Port 80).
HTTPS
HyperText Transfer Protocol, Secure
Eine Variante von HTTP, die sichere Transaktionen gewährt (Port 443). Es basiert auf dem SSL (Secure Sockets Layer) von Netscape Communications Corporation und bietet eine Verschlüsselung über Internet.
ICMP
Internet Control Message Protocol
Übertragung von Steuer- und Fehlercodes (wird z.B. von dem später erwähnten Kommando ping verwendet).
IMAP
Internet Message Access Protocol
Bietet die Möglichkeit, E-Mails auf dem Server verwalten zu lassen (in Mailboxen) und gezielt abzurufen, zu löschen oder zu ändern.
POP3
Post Office Protocol
Erlaubt E-Mails via TCP / IP von einem POP-Server auf einen POP-Client herunterzuladen.
257
Netzwerke unter Linux
Protokoll
Abgeleitet von
Erklärung
RARP
Reverse Address Resolution Protocol
Ermittlung der eigenen IP-Adresse aus der physikalischen Adresse (MAC) mit Hilfe eines RARPServers.
SMB/ CIFS
Server Message Block/Common Internet File System
Ein Protokoll, das bei Windows-Systemen zum Austausch von Dateien dient. CIFS ist eine neuere Version, die auf SMB basiert.
SMTP
Simple Mail Transfer Protocol
Senden und Empfangen von elektronischer Post (E-Mail) im Internet.
UDP
User Datagram Protocol
Schneller Datentransfer ohne Quittungsmechanismus – also ähnlich wie TCP, aber ohne Kontrolle und damit unzuverlässig.
a. Diese MACs haben nichts mit dem Macintosh zu tun. Sie sind die Media-Access-Control-Adresse. Jede Ethernet-Karte hat eine weltweit eindeutige MAC-Adresse. Es ist eine Art Seriennummer, die jede Netzwerkkarte bei der Fertigung erhält (siehe YaST R Hardwareinformation R Netzkarte). Sie besteht aus sechs Zahlen in hexadezimaler Darstellung z.B.: 00-A0-C9-E8-5F-64 oder 00:A0:C9:E8:5F:64. Im vorderen Teil ist der Hersteller spezifiziert, im hinteren Teil wird durchnumeriert. In lokalen Netzen (wie Apple-Talk oder NetBIOS) werden sie direkt zur Adressierung verwendet.
Auf TCP / IP bauen z.B. folgende Dienste auf: Dienst
258
Abgeleitet von
Erklärung
ftp
file transfer protocol
Kommando, um Daten im Netz auszutauschen (unverschlüsselt).
NFS
Network File System
Per mount können Verzeichnisse von anderen Linux/Unix-Rechnern über das Netzwerk gemeinsam genutzt werden.
NIS
Network Information Service
Benutzer und Gruppen werden im Netz einheitlich verwaltet und es können gemeinsame Ressourcen genutzt werden.
sftp
secure file transfer protocol
Kommando für einen sicheren (verschlüsselten) Datenaustausch im Netz.
ssh
secure shell
Sicherer interaktiver Terminaldienst. Er ermöglicht eine Fernanmeldung an einem TCP/IP-Host mit verschlüsselten Daten.
telnet
terminal emulation for network
Ermöglicht eine Fernanmeldung an einem TCP/ IP-Host, jedoch ohne verschlüsselte Daten.
11.2 Grundlagen der Kommunikation in Netzwerken
11.2.3
Wie funktioniert TCP/IP?
Alle Abfragen oder Dateien, die zwischen Rechnern ausgetauscht werden, müssen zuvor in kleine ›Pakete zerlegt‹ und mit einer eindeutigen Adresse (IP-Nummer) versehen werden. Ein Datenpaket, auch als Datagramm bezeichnet, enthält 1. die IP-Paketinformationen (Absender- und Empfängeradresse), 2. die TCP- oder UDP-Paketinformationen (Portnummern, Sequenznummern etc.), 3. die eigentliche Information, die Daten. Zusätzlich werden die einzelnen Pakete einer Sendung durchnumeriert, damit sie beim Empfänger in der richtigen Reihenfolge wieder zusammengesetzt werden können. Um zu kontrollieren, ob alle einzelnen Pakete unversehrt angekommen sind, wird der Inhalt eines Paketes und der gesamten Sendung mit einer Prüfsummenformel überprüft. Die Aufgaben von TCP / IP sind auf der Sendeseite: ❏
Zerlegung der zu sendenden Informationen/Datei in Blöcke und Pakete
❏
Adresse + Paketnummer (Header)
❏
Fehlerkontrolle über eine Prüfsummenformel (Prüfsumme im Header)
Auf der Empfangsseite führt TCP / IP folgende Aufgaben durch: ❏
Überprüfung der Prüfsumme – stimmt sie nicht, wird das Paket nochmals angefordert
❏
Überprüfung, ob alle Pakete einer ›Sendung‹ angekommen sind
❏
Zusammensetzung der einzelnen Pakete in der richtigen Reihenfolge und Bereitstellung der übermittelten Daten
Die einzelnen Aufgaben sind in Arbeitsschichten aufgeteilt. Später beim Suchen möglicher Fehler ist es gut, zu wissen, dass die einzelnen Aufgaben auf unterschiedlichen Schichten unabhängig voneinander arbeiten. Somit wird erreicht, dass die einzelnen Programme sich nur auf ihre eigentliche Aufgabe konzentrieren: Die einzelnen Dienste gehen davon aus, dass die Programme in den anderen Schichten ordnungsgemäß arbeiten, z.B. gewährleisten, dass die Verbindung und Weiterleitung der Informationen richtig erfolgt. Im Bild 11-4 sehen Sie eine vereinfachte Darstellung des TCP / IP -Schichtenmodells, das in vier Hauptschichten unterteilt ist.
259
Netzwerke unter Linux
Application: Benutzerprozesse
z.B. ftp, sftp, ssh, HTTP, NFS
Transport: Paketsicherung
TCP, UDP
Network: Paketzustellung, Routing
IP, ICMP
Link: Hardware, Gerätetreiber
Kabel, Ethernet, FDDI, ISDN
Bild 11-4: Darstellung des TCP/IP-Schichtenmodells
Die unteren Schichten basieren auf Hardware und der Treibersoftware. Das Internetprotokoll (IP) ist für die ›Paketaufbereitung‹ zuständig und erst in der darauffolgenden Schicht kommt TCP zum Einsatz, um die Pakete zu versenden. In der obersten Schicht laufen Dienste wie ssh (secure shell), um sich an einem entfernten Rechner anzumelden, oder sftp (secure file transfer protocol), um Dateien von einem Rechner zu einem anderen zu transferieren. Hierfür müssen die entsprechenden Softwarepakete sowohl für die Server- als auch für die Client-Software installiert und aktiviert sein. Um eine Datei mit ftp von einem Rechner auf einen anderen zu übertragen, muss auf dem Rechner, der den Transfer erlaubt, die ftpServer-Software, und auf dem anfragenden Rechner die ftp-Client-Software installiert sein.
11.2.4
Internetadressen mit IPv4
Rechner sprechen sich (weltweit) untereinander über IP-Adressen (Internet Protocol Addresses) an. Als man TCP / IP vor über 30 Jahren konzipierte, nahm man an, dass mit einer 32-Bit-Adressierung, mit der letztlich über 4,3 Milliarden IP-Adressen zugeordnet werden können, ausreichend Nummernbereiche zur Verfügung stehen. Doch die hauptsächlich mit dem World Wide Web enorm angestiegende Zahl der Internetnutzer sprengte die damals großzügig eingeteilte Adressverwaltung. Deshalb wurde vor etwa zehn Jahren eine erweiterte auf 128Bit basierende Einteilung der IP-Adressen vorgenommen, die mehrere Billiarden Adressen verwalten kann. Es gibt deshalb zwei IP-Numerierungssysteme: IPv4 mit 32 Bit und das auf 128 Bit basierende IPv6. Da jedoch nach wie vor IPv4 Gültigkeit hat und am meisten verbreitet ist, betrachten wir den Aufbau dieser 32-Bit-Adresse (4x8 Bit). Eine IP-Adresse besteht aus der IP-Nummer und einer Netzwerkmaske. Die Schreibweise nennt sich ›dotted decimal‹, weil jeweils acht Bit einer 32-BitAdresse als Dezimalzahl (0-255) dargestellt werden und die resultierenden vier Dezimalzahlen durch einen Punkt getrennt werden. Beispiel: 192.168.0.20/255.255.255.0 260
11.2 Grundlagen der Kommunikation in Netzwerken
Die erste Nummer ist die eigentliche IP-Nummer, die zweite, durch den Schrägstrich getrennt, die Netzwerkmaske. Die Netzwerkmaske bestimmt, welcher Teil der IP-Adresse zu einem Subnetz gehört, und bestimmt damit auch, wie viele Rechner(adressen) zu diesem Subnetz gehören können. In dem obigen Beispiel gehört die IP-Nummer 192.168.0.20 zu dem Subnetz 192.168.0.0 bis 192.168.0.255 (siehe auch Berechnung in Bild 11-5 auf Seite 262). Bei der Konfiguration von Netzgeräten müssen sowohl IP-Adresse und Netzwerkmaske angegeben werden, wobei letztere meist schon als Default eingestellt ist. Statt der Kennzeichnung einer IP-Nummer mit 192.168.0.20/255.255.255.0 wird heutzutage meist 192.168.0.20/24 geschrieben, wobei die ›24‹ für die Anzahl der mit ›1‹ besetzten Bits in der Maske steht (siehe Tabelle 11-2 im Bild 11-5). Die IP-Adressen für IPv4 sind ursprünglich in die Klassen A, B, C, D und E unterteilt gewesen. Die Klassen richteten sich danach, wie viele Netzwerkadressen und Einzel-IP-Adressen (Hosts) pro Nummernbereich zu vergeben waren. Da oft noch die Klassenbereiche erwähnt werden, finden Sie in der nachstehenden Tabelle die Zuordnung der IP-Bereiche mit den Netzwerkmasken. Die Unterteilung in Klassen gibt es offiziell im Internet seit 1993 nicht mehr. Tabelle 11-1: Ehemalige Unterteilung der IP-Adressen in Klassen Klasse
Adressen von bis / Netzwerkmaske
Anzahl Subnetze
Hostadressen je Subnetz
A
1–126.0.0.0/255.0.0.0
126
ca. 16.700.000
B
128–191.0.0.0/255.255.0.0
16.065
65.536
C
193–223.0.0.0/255.255.255.0
1.950.750
255
D
224–239.255.255.255
Multicast-Adressen
E
240–255.255.255.255
für Experimente und zukünftige Entwicklungen reserviert
Wird heute ein Netz mit öffentlichen Adressen beantragt, bekommt man z.B. entweder eine Nummer mit der Netzmaske 255.255.255.224, also ein Netz mit 32 Adressen als kleine Firma, oder aber eine Nummer mit einer Netzmaske mit beispielsweise 255.255.254.0 – also mit 512 Adressen als größere Firma aus dem Bereich der C-Adressen. Genauso erhält beispielsweise ein T-Online-Kunde (Business-Account) eine feste Adresse mit der Maske 255.255.255.255 (also genau ein 261
Netzwerke unter Linux
Um die Funktion einer Netzwerkmaske zu verdeutlichen, müssen wir uns ein wenig mit Binärzahlen auseinandersetzen. Die Gegenüberstellung von einigen Binär- und Dezimalzahlen (0 bis 15) veranschaulicht die Zählweise:
00000 00001 00010 00011
0 1 2 3
00100 00101 00110 00111
4 5 6 7
01000 01001 01010 01011
8 9 10 11
01100 01101 01110 01111
12 13 14 15
Über eine bitweise UND-Verknüpfung kann aus der IP-Nummer eines Rechners und der dazugehörigen Netzwerkmaske die Netzwerkbasisadresse (auch Netzadresse genannt) ermittelt werden. Bei einer bitweisen UND-Verknüpfung (mit & gekennzeichnet) gibt es nur folgende Ergebnisse:
0&0=0
0&1=0
1&0=0
1&1=1
Also nur wenn bei beiden Zahlen an der gleichen Stelle eine ›1‹ steht, wird diese übernommen. Werden in der nachstehenden Tabelle auf diese Weise die Binärzahlen von der IP-Nummer mit der Netzwerkmaske mit UND verknüpft, erhält man die Netzadresse. Tabelle 11-2: Ermittlung der Netzadresse über die Netzwerkmaske Binärzahlen
Dotted Decimal IP-Nummer eines Rechners
192.168.0.20 11000000 10101000 00000000 00010100
Netzwerkmaske
255.255.255.0 11111111 11111111 11111111 00000000
Durch die UND-Verknüpfung ergibt sich die Basisadresse Broadcast
192.168.0.0
11000000 10101000 00000000 00000000
192.168.0.255 11000000 10101000 00000000 11111111
Das Beispiel zeigt ein Subnetz (192.168.0.0), in dem 255 Rechneradressen möglich sind: von 192.168.0.0 bis 192.168.0.254. Durch UND-Verknüpfung der IP-Nummer mit der Netzwerkmaske erhält man die Basisadresse (192.168.0.0) des Subnetzes, zu dem 192.168.0.20 gehört. Die letzte Adresse des Subnetzes (hier 192.168.0.255) ist für Broadcast reserviert (siehe Seite 264). Die Broadcast-Adresse besteht somit aus der Basisadresse, in der die durch die Netzwerkmaske ausgeblendeten Bits auf 1 gesetzt sind. Bild 11-5: Ermittlung eines Subnetzes über die Netzwerkmaske
262
11.2 Grundlagen der Kommunikation in Netzwerken
Netz mit genau einer Adresse). Dies kann eine Nummer aus dem ehemaligen Bereich der Klasse A sein, der inzwischen unter verschiedenen Providern in den USA und Europa verteilt wurde. Jeder, der vom Internet her problemlos erreicht werden will, braucht eine offizielle und feste IP-Adresse. Dienste wie Voice-over-IP6, aber auch viele andere Funktionen lassen sich ohne feste IP-Adresse nur schwer oder nur mit zusätzlichem Aufwand betreiben. IP-Adressen bekommt man von seinem Provider. Ein Provider in Europa erhält die Adressen von RIPE (Reseaux IP Europeens, www.ripe.net). Leider beschränken heute viele Provider die Vergabe fester offizieller IP-Adressen auf Firmenkunden oder verlangen dafür zusätzliche Gebühren. Privatpersonen und kleinere Firmen müssen sich dann mit einer dynamisch zugewiesenen IPNummer zufrieden geben. Diese IP-Nummer wird jeweils vom Provider bei der Einwahl ins Internet übermittelt und als offizielle IP-Nummer für den Rechner temporär für die Dauer der Online-Verbindung übernommen. Da der Weg ins Internet in der Regel nur von einem Rechner (Router/Gateway) gesteuert wird, reicht diese IP-Nummer aus. Hinter dem Gateway kann sich ein komplettes Subnetz verbergen. Dazu wurden bei den IP-Bereichen (siehe Tabelle 11-3) nachfolgende Bereiche für interne Netze freigelassen. Diese IP-Nummern können nicht im Internet benutzt werden. Tabelle 11-3: IP-Bereiche für frei verfügbare interne Adressierung von Subnetzen Netzwerk/Netzwerkmaske
Bereich
10.0.0.0/255.0.0.0
10.x.x.x
172.16.0.0/255.240.0.0
172.16.x.x – 172.31.x.x
192.168.0.0/255.255.0.0
192.168.x.x
Eine Sonderstellung bilden die IP-Nummern 127.0.0.0/255.255.255.0. Sie sind für interne Rückverweise reserviert. So wird in der Regel die IP-Nummer 127.0.0.1 als loopback eingesetzt, die unter dem Namen localhost angesprochen wird. Eine Reihe von internen Programmen verwendet diesen Rückverweis. Es ist eine feste TCP-Bezeichnung und darf nicht verändert werden! Subnetze Die erste Adresse eines Subnetzes wird als Basisadresse oder Netzadresse bezeichnet. Früher durfte die erste Adresse (Basisadresse) eines Netzes (z.B. 192.168.0.0) keinem Gerät zugewiesen werden, da frühe Implementierungen von TCP/IP dies als Broadcast interpretierten. Nahezu alle heute am Markt befindlichen Endgeräte können auch mit dieser Adresse umgehen. 6. VoIP – kostengünstigeres Telefonieren über IP.
263
Netzwerke unter Linux
Die jeweils letzte Adresse eines Subnetzes bezeichnet man als Broadcast (aus dem Englischen: Radiomeldung, eine Nachricht verbreiten, an alle etwas senden). Sie sagt aus, dass eine Weiterleitung an alle Rechner dieses Subnetzes erfolgen kann. Die letzte Nummer eines Netzes darf deshalb nicht als IP-Nummer an einen Rechner vergeben werden. Ein Netz kann in Subnetze aufgeteilt werden. Dies wäre dann z.B. notwendig, wenn einer Firma offizielle IP-Nummern zugewiesen wurden, und diese für mehrere Niederlassungen aufgeteilt werden sollen. Dann würde z.B. bei einer Aufteilung in zwei gleich große Subnetze die Netzwerkmaske mit 255.255.255.128 (11111111 11111111 11111111 10000000) angegeben werden. In der Tabelle 11-4 ist zwar als Beispiel eine inoffizielle Nummer verwendet, doch das Prinzip ist gleich. Tabelle 11-4: Aufteilung eines Subnetzes mit Hilfe der Netzwerkmaske Erstes Subnetz
Zweites Subnetz
IP-Adressen
192.168.0.1–192.168.0.126
192.168.0.129–192.168.0.254
Netzwerkmaske
255.255.255.128
255.255.255.128
Netzadresse
192.168.0.0
192.168.0.128
Broadcast
192.168.0.127
192.168.0.255
Teilt man das eigene Netz in Subnetze auf, so könnten z.B. Gebäude, Stockwerke oder Abteilungen eigene Subnetze erhalten. Sie können auch unterschiedlich groß sein. Beispielsweise kann das Netz 192.168.32.0/23 (192.168.32.0 bis 192.168.33.255) in Subnetze wie folgt aufgeteilt werden: Subnetz
Anzahl Adressen von – bis
192.168.32.0/24
256
192.168.32.0–192.168.32.255
192.168.33.0/25
128
192.168.33.0–192.168.33.127
192.168.33.128/25
128
192.168.33.128–129.168.33.255
Für interne Aufteilungen mit den privaten Adressbereichen ist es jedoch einfacher, die Subnetze großzügig zu vergeben und somit zu einer einfachen Nummernstruktur zu kommen. Hier ein kleines Beispiel eines Firmennetzes mit drei getrennten Abteilungen: Subnetz
264
Netzwerkbasisadresse
Netzwerkmaske
Broadcast-Adresse
Marketing
192.168.1.0
255.255.255.0
192.168.1.255
Vertrieb
192.168.2.0
255.255.255.0
192.168.2.255
Schulung
192.168.3.0
255.255.255.0
192.168.3.255
11.2 Grundlagen der Kommunikation in Netzwerken
Um von einem Subnetz zu einem anderen zu gelangen, benötigt man einen Rechner, der als Gateway/Router eingetragen wird und die Weiterleitung zu den anderen Subnetzen oder dem Internet vornimmt. Wird in der Routing-Tabelle ein entsprechender Eintrag für das Zielnetz gefunden, so ist dort angegeben, welche Route dorthin führt. Dies kann bei direkt angeschlossenen Netzwerken ein Interface sein (z.B. über Ethernet eth0, eth1 usw. oder bei ISDN ippp0) oder aber die IP-Adresse des Gateways (Routers), das auf dem Weg zum Zielnetz verwendet werden kann. Ist kein passender Eintrag für die Zieladresse vorhanden, wird der Default-Router verwendet. Dieser Eintrag ist mit dem Netz 0.0.0.0 gekennzeichnet. Die Routen werden nach möglichst großer Übereinstimmung mit der Zieladresse gewählt. Bei gleichen Routen entscheiden weitere Faktoren wie Entfernung, schnellere Verbindung oder manuell eingestellte Kostenwerte, so dass immer die bessere Route gewinnt. Router
ippp0 Internet
Netzwerk Marketing
eth1: 192.168.2.1/24
Firewall
192.168.1.10/24 192.168.1.20/24 192.168.1.30/24
eth0: 192.168.1.1/24 Netzwerk Vertrieb
eth2: 192.168.3.1/24 z.B. alle anderen Ziele Default Gateway 0.0.0.0
Gateway
Gateway
192.168.2.30/24 Gateway
Netzwerk Schulung
192.168.2.10/24 192.168.2.20/24
192.168.3.10/24 192.168.3.20/24 192.168.3.30/24
Bild 11-6: Verbindung von Subnetzen und Internet über einen Router/Gateway
Das Erstellen der Routing-Tabelle für das interne Netz, wie es im Bild 11-6 dargestellt ist, erfolgt automatisch beim Konfigurieren der verschiedenen Netzkarten, so dass für die interne Vernetzung vom Systemverwalter nur dann zusätzliche Einträge vorgenommen werden müssen, wenn nicht alle Teile des Netzes direkt am Gateway angeschlossen oder über den Default-Router erreichbar sind. Der Router kann auch noch weitere Aufgaben übernehmen. Hier lassen sich Funktionen wie Firewall oder das Übersetzen der privaten Adressen in öffentliche Adressen7 ansiedeln. Man spricht dann von einem Masquerading-Router (mehr darüber beim Einrichten eines Gateways auf Seite 336).
Um die Grundlagen über das Thema IP-Adressen abzuschließen, noch folgender Hinweis: Letztlich wird der IP-Adresse intern zur eindeutigen Identifikation des Rechners bzw. der Netzkarte die MAC-Adresse auf den Netzwerkkarten zugeordnet (via ARP, Seite 257).
7. Die Umwandlung der Adresse wird als NAT (Network Address Translation) bezeichnet.
265
Netzwerke unter Linux
DHCP und Rechnernamen Um den Umgang mit IP-Adressen zu vereinfachen, gibt es einige Erleichterungen, hier die zwei wichtigsten: 1. Nicht jede Netzwerkkarte muss vom Systemverwalter mit einer IP-Adresse konfiguriert werden, sondern es kann DHCP (Dynamic Host Configuration Protocol) eingesetzt werden, ein Dienst, der Netzwerkgeräten automatisch IPNummern zuweist. Dies ist dann zu empfehlen, wenn viele Arbeitsplatzrechner zu verwalten sind und/oder Laptops/Notebooks an verschiedenen Stellen einund ausgehängt werden. Hierfür gibt es eine Konfigurationsdatei (/etc/dhcpd.conf), die auf dem DHCPServer geführt wird. Dort werden dann zentral die Nummernbereiche eingetragen, die für die Zuordnung der IP-Adressen über DHCP vorgesehen sind. In der Datei /etc/dhcpd.conf werden außerdem die Netzwerkmasken, die zu verwendenden Gateways, Domainnamen sowie Nameserver-Adressen vermerkt. Bei den Clients (also auf allen Netzwerkkarten der einzelnen Rechner) wird lediglich angegeben, dass die Netzwerkkarten über DHCP jeweils beim Hochfahren konfiguriert werden (Defaulteinstellung auf den Netzkarten). Beim Starten muss natürlich stets der Server zuerst hochgefahren sein. Alle Netzwerkeinstellungen kann der Systemverwalter dann über den DHCP-Server steuern. 2. Jedem Rechner (Netzwerkkarte) kann ein Name zugeordnet werden, der wesentlich leichter zu merken ist als die IP-Nummer. Innerhalb des internen Netzwerkes kann der Name frei gewählt werden. So sind für Rechnernamen oft Städte-, Länder-, Götter- oder Planetennamen üblich oder die Namen von Comicfiguren. Bei größeren Firmennetzen soll jedoch ein nachvollziehbares Schema eingehalten werden. So sind Rechnernamen oft nach Sachgebiet/Aufgabe und Ort vergeben (wie etwa M-FS01 für München, File-Server-Rechner 01). In diesem Buch werden die meisten Beispiele an den vorhandenen Rechnern der Autorin durchgeführt. Da es sich nur um wenige Rechner handelt, gibt es hier kein ausgeklügeltes Namenssystem. Der Name Toshi leitet sich vom Toshiba-Laptop ab, auf dem Windows98 läuft, Toshili ist der Toshiba-Laptop mit SUSE Linux. Die Namen der Rechner mit Linux sind alle durch das Suffix ›li‹ gekennzeichnet. Jogy ist der PC mit Windows2000 und Jogyli,der PC mit Linux. Hinzu kommt noch ein Macintosh mit dem abgeleiteten Namen Macy. Auch bei vielen Firmen ist die Namensgebung der Rechner historisch gewachsen. Hier bleibt dem Systemverwalter nichts anderes übrig, als entsprechende Listen zu führen, um die Rechner eindeutig zuzuordnen.
266
11.2 Grundlagen der Kommunikation in Netzwerken
Internet- und Domainnamen Um Adressen im Internet bequemer zu erreichen, können sogenannte Domainnamen anstatt der IP-Nummern verwendet werden. Domains für Deutschland werden bei der DENIC8 registriert. Diese Registrierung kann nur über DENIC-Mitglieder erfolgen. Dies sind in der Regel die Provider oder Reseller. Am besten ist es natürlich, einen Domainnamen entsprechend dem Firmennamen bzw. dem Familiennamen zu erhalten. Leider klappt dies nicht immer. Sie können testen, ob unter Ihrem Namen noch eine Domain verfügbar wäre9. Auch wenn Sie selbst keine eigene offizielle IP-Adresse benötigen, können Sie sich dennoch einen Namen reservieren lassen, der dann über Ihren Provider zugeordnet und beantragt wird. Diese Namensbezeichnung kann dann für Ihre Mail-Adressen und Webseiten verwendet werden. Die Kosten hierfür sind je Provider unterschiedlich. Unter dem Namen ›Wolfinger‹ war leider die Domain Wolfinger.de schon vergeben, doch ChristineWolfinger.de konnte reserviert werden. Der Name Gulbins war dagegen noch frei und so ist seine E-Mail-Adresse:
[email protected]., die Webadresse www.gulbins.de. Den Anhang ›.de‹ nennt man die Top Level Domain (TLD bzw. CC-TLD für country code). Sie bestimmt, welchem Land die Namensauflösung zugeordnet wird. Die folgende Tabelle enthält eine kleine Auswahl von einigen Top Level Domains10. In der dritten Spalte sind unabhängig von einer Nation vergebene TLDs, die als GENERIC TLDs bezeichnet werden. CCTLD
Land
CCTLD
Land
GENERIC Land/Organisation TLD
at
Austria
fr
Frankreich
gov
Government US-Regierung
ch
Schweiz
it
Italien
com
US Commercial
cn
China
se
Schweden
net
Network
de
Deutschland uk
United Kingdom
org
Non-Profit-Organisation
Die Umsetzung dieser Namen in die letztlich weltweit eindeutige IP-Adresse wird über DNS (Domain Name System) vorgenommen. Der Rechner, der die Namensumsetzung durchführt, wird als DNS-Server oder Nameserver bezeichnet. In der Regel stellt jeder Provider einen solchen Rechner und die IP-Adresse dieses Rechners zur Verfügung. Meist wird beim Aufbau der Verbindung zum Provider neben Ihrer dann zugewiesenen (dynamischen) IP-Adresse auch eine IP-Adresse für den 8. DENIC eG ist die zentrale Registrierungsstelle für alle Domains unterhalb der Top Level Domain ›.de‹. Sie ging aus der Informatiker-Betriebsgruppe (IRB) der Dortmunder Universität hervor, die 1991 einen Nameserver-Dienst für die Deutsche Internet Community startete. 9. www.onsite.org bietet hier eine Testmöglichkeit und zwar weltweit. Für Deutschland werden von DENIC seit 1.4.2004 sogar Namen mit Umlauten registriert – die aber nicht unbedingt von allen Rechnern richtig interpretiert werden könnten, sie sind also noch mit Vorsicht zu verwenden. 10. Unter der Webadresse www.thrall.org/domains.htm finden Sie eine vollständige Liste der TLDs.
267
Netzwerke unter Linux
Nameserver übermittelt. Die IP-Adresse dieses Nameservers wird dann in die Datei /etc/resolv.conf temporär beim Aufbau der Verbindung über den Daemon (z.B. ipppd) geschrieben. Nach Beendigung der Verbindung wird die ursprüngliche Datei /etc/resolv.conf wiederhergestellt, damit die eventuell bei der Einrichtung der Modemkarte fest zugewiesenen Nameserver-IP-Adressen erhalten bleiben. Über einen eigenen Nameserver, der z.B. über das Programm BIND (Berkeley Internet Name Domain) eingerichtet werden kann, werden in einem temporären Cache die letzten angesprochenen Webadressen gehalten. Der Verbindungsaufbau ist dann schneller, da nicht erst die IP-Adresse über einen anderen Rechner (den zusätzlich angegebenen entfernten Nameserver z.B. des Providers) eingeholt werden muss. Das Programm BIND ist unter der SUSE-Distribution schon vorkonfiguriert. Für die Auflösung der eigenen Rechnernamen und Adressen, die Sie immer wieder benötigen, sind zusätzliche Eintragungen (in /etc/named.conf und in sogenannte Zonen-Dateien unter /var/lib/named) nötig, auch muss die IP-Nummer des Providers in /etc/named.conf unter ›forwarders‹ eingesetzt werden, damit auch nicht bekannte Adressen aufgelöst werden. Setzt man BIND ein, wird jener Rechner als Nameserver eingetragen, auf dem dieser Dienst aktiviert ist. In der Datei /etc/resolv.conf des Nameservers selbst darf dann nur der Eintrag für localhost stehen Search domain nameserver 127.0.0.1
Ein Beispiel zur Konfiguration eines DNS-Servers finden Sie in Kapitel 11.14. Für die Auflösung der IP-Nummern in Namen dient auch die Datei /etc/hosts. Auf diese Datei wird zuerst zurückgegriffen, dann erst auf den Nameserver. In /etc/ hosts muss auf jeden Fall der Eintrag für localhost 127.0.0.1 vorhanden sein. Hier als Beispiel die /etc/hosts vom Rechner Toshili: # IP-Address Full-Qualified-Hostname Short-Hostname 127.0.0.1 localhost 192.168.0.10 toshili.wolfinger toshili # zusätzlich manuell eingetragene Zeilen für die weiteren Rechner 192.168.0.2 toshi.wolfinger toshi 192.168.0.60 jogyli.wolfinger jogyli 192.168.0.6 jogy.wolfinger jogy 192.168.0.25 macy.wolfinger macy
Die ersten zwei Zeilen sind per Default enthalten (mit Kommentarzeile), die dritte wurde beim Konfigurieren der Netzkarte vom System hinzugefügt, ab der vierten Zeile stehen manuell eingefügte Einträge. Die Datei /etc/hosts muss natürlich auf allen Rechnern des Netzwerkes gepflegt werden. Da auch der eigene Rechnername mit aufgeführt ist und der localhost auf allen Rechnern immer gleich ist, kann diese Datei problemlos auf die anderen Linux/Unix-Rechner kopiert werden. Einige Programme weisen Rechnernamen generell in Großbuchstaben zu. Dies ist jedoch unerheblich, da bei Rechnernamen Groß- und Kleinbuchstaben gleich behandelt werden. 268
11.2 Grundlagen der Kommunikation in Netzwerken
Wichtig ist noch zu wissen, was sich hinter einem Fully-Qualified-Hostname, kurz FQDN, verbirgt. Haben Sie einen Domainnamen und ein IP-Kontingent zugewiesen bekommen, so kann dieser Name durch beliebige von ihnen selbst gewählte Untergliederungen erweitert werden, ohne dass diese Angaben registriert und genehmigt werden müssen. Der Namensraum lässt sich so nach geografischen oder organisatorischen Regeln fast beliebig aufteilen. Die Auflösung erfolgt dann von rechts nach links, wobei zuerst die Nation erkannt wird und dann der dort verwaltete Domainname. Der Aufbau eines FQDN sieht folgendermaßen aus: [hostname.[subdomain.[subdomain.[..]]]].domain.TLD hostname: subdomain: domain: TLD:
Name des Rechners innerhalb der Domäne Abteilung, Unterabteilung registrierter Eintrag (meist Firmenname) registrierter Eintrag (nach dem letzten Punkt z.B. .de)
11.2.5 Anmerkung zu IPv6 Die IP-Adressen von IPv6 haben einen anderen Aufbau als die IPv4-Adressen. Statt bisher 32 Bit werden für IPv6 128 Bit für die Adressierung bereitgestellt. Damit werden statt der bisher vier Gruppen à acht Bit (dotted decimal) nun acht Gruppen à 16 Bit in hexadezimaler Form dargestellt. Die beiden Systeme IPv4 und IPv6 können sowohl im Internet als auch auf einem System koexistieren. Hier ein Beispiel, wie IP-Adressen unter IPv6 mit unterschiedlichen Schreibweisen (für die gleiche Nummer) dargestellt sein können: fe80:0000:0000:0000:0000:10:1000:1a4 oder fe80:0:0:0:0:10:1000:1a4 oder fe80::10:1000:1a4
Der Doppelpunkt trennt die einzelnen Gruppen. Bei einer Umwandlung von IPv4 zu IPv6 werden die ersten 6 Gruppen mit 0000 dargestellt. Bei dem obigen Beispiel wurden nebeneinanderliegende ›0-Gruppen‹ durch :: zusammengefasst. In der Datei /etc/hosts sind bei SUSE für die Umwandlung der Adressen bereits entsprechende Einträge vorhanden: # special IPv6 addresses ::1 localhost ipv6-localhost ipv6-loopback fe00::0 ipv6-localnet ff00::0 ipv6-mcastprefix ff02::1 ipv6-allnodes ff02::2 ipv6-allrouters ff02::3 ipv6-allhosts
Hier sehen Sie auch, dass localhost (unter IPv4 mit 127.0.0.1) mit ::1 eingetragen ist. Da das Internet (noch) auf IPv4 basiert und beide Systeme auch die nächsten Jahre parallel akzeptiert werden, verwenden wir in diesem Buch bei unseren Beispielen nur die IPv4-Adressen. Nähere Angaben zu IPv6 finden Sie unter www.ipv6.org. 269
Netzwerke unter Linux
11.3
Konfigurieren eines internen Netzes
Anhand eines kleinen Netzwerkes mit heterogenen Rechnern wollen wir Ihnen Schritt für Schritt zeigen, wie unter Linux die Kommunikation zwischen den Rechnern und Geräten funktioniert und welche Konfigurationen hierfür notwendig sind. Switch
PC 192.168.0.6 Jogy Win2K
PC 192.168.0.60 Jogyli Linux
Laptop 192.168.0.2 Toshili Linux
Laptop Macintosh 192.168.0.10 192.168.0.25 Macy Toshi Win98 Mac OS X
IP-Drucker 192.168.0.99
Bild 11-7: Muster für die Beispielkonfiguration eines inhomogenen Netzes
Gehen wir davon aus, dass die Hardwarevoraussetzungen (Controller, Kabel und Switch) erfüllt sind. Die Rechner müssen sich gegenseitig identifizieren. Dafür benötigen sie IP-Adressen und, damit sie leichter angesprochen werden können, einen Namen. Nehmen wir das Eingangsbild mit ein paar Veränderungen. Um Beispiele realitätsnah wiederzugeben, ist die Rechnerumgebung der Autorin gewählt. Das Netz besteht aus einem PC mit Windows 2000 (Jogy), einem PC mit SUSE Linux (Jogyli), einem Laptop mit SUSE Linux (Toshili), einem Laptop mit Windows98 (Toshi), einem Macintosch mit OS X (Macy) und einem IP-Drucker, der ebenfalls über eine Ethernet-Karte verfügt und so von allen Rechnern direkt angesprochen werden kann.
11.3.1 Konfigurieren der Netzwerkkarten Unter Linux konfigurieren Sie die Netzwerkkarte am einfachsten und sichersten über das Kontrollzentrum bzw. direkt unter YaST R Netzwerkgeräte R Netzwerkkarte Sie erhalten ein Dialogfenster, in dem die erkannten Netzwerkkarten angezeigt werden. Über Neuanlegen bzw. Ändern werden dann die weiteren Eintragungen für die IP-Nummern vorgenommen (Bild 11-8).
270
Sollte die Netzwerkkarte nicht erkannt worden sein, können über eine Liste der Hersteller ausgewählt sowie gezielte Hardwareeinstellungen vorgenommen werden (siehe unten im Bild 11-9).
11.3 Konfigurieren eines internen Netzes
Bild 11-8: Konfiguration der Netzwerkkarten
Bei Netzkarten, die über PCMCIA (meist an Laptops/Notebooks) oder USB angeschlossen sind, muss lediglich das betreffende Kästchen angeklickt werden (siehe Bild 11-9).
Bei nicht erkannter Karte über ›Auswahl aus Liste‹ eine entsprechende Karte auswählen Bei PCMCIA oder USB-Anschluss hier anklicken Bild 11-9: Einrichten der Netzwerkkarte
Um nun die IP-Adresse und den Rechnernamen einzugeben, markieren Sie die erkannte bzw. neu angelegte Netzwerkkarte und wählen Ändern. Bei jeder konfigurierten Netzwerkkarte wird als Default die Methode DHCP voreingestellt. Die automatische Adressvergabe mit DHCP (Dynamic Host Configuration Protocol) setzt einen DHCP-Server voraus, der automatisch aus einem vorher bestimmten Adressbereich IP-Adressen vergibt. Dies macht in Netzen Sinn, wo z.B.
271
Netzwerke unter Linux
oft Rechner wie Laptops an unterschiedlichen Stellen im Netz ein- und ausgehängt werden. In bestehenden Windows-Netzen ist oft solch ein DHCP-Server schon vorhanden, der dann auch die Vergabe von IP-Nummern für Linux-Rechner im gleichen Netz vornehmen kann. Auch unter SUSE kann Ihr Rechner als DHCPServer konfiguriert werden. In unserem Beispiel bauen wir ein kleines Netz mit fest vergebenen IP-Adressen (statischen IP-Adressen) auf. Hierzu aktivieren wir ›Konfiguration der statischen Adresse‹ und tragen dort die IP-Adresse und Netzwerkmaske ein (siehe Bild 11-10). Im unteren Teil des rechten Ausschnitts befinden sich weitere Schaltflächen (Rechnername und Nameserver, Routing, Optionen für DHCP-Client und Hardwaredetails). Um nun den Namen für den Rechner zu vergeben, wählen Sie dort ›Rechnername und Nameserver‹.
siehe Bild 11-11
Bild 11-10: Eintrag von IP-Nummer und Rechnername
Wie Sie im Bild 11-11 sehen, geben Sie hier den von Ihnen gewählten Rechnernamen und den Domainnamen ein (bei offiziellen Namen mit TLD). Als Default ist sonst Local als Domainname eingesetzt und weist darauf hin, dass dieser Rechnername nur im internen Netz verwendet wird.
WOLFINGER
Bild 11-11: Konfiguration von Rechnernamen und Domainnamen
272
11.3 Konfigurieren eines internen Netzes
Mit OK schließen Sie die Eingaben ab. Eventuell bereits gestartete Netzwerkdienste werden deaktiviert, dann erst werden die eigentlichen Änderungen der Konfigurationsdateien vorgenommen und anschließend die Netzwerkdienste sofort wieder gestartet. Letztlich ist die Konfiguration der Netzkarten für TCP/IP auch bei anderen Rechnern/Plattformen ähnlich. So geben Sie unter Windows2000 die Netzwerkdaten über folgende Menüfolge ein: Einstellungen R Netzwerk- und DFÜVerbindung R LAN-Verbindung R Netzkarte (z.B. 3COM) R Internetprotokoll (TCP/IP) R Eigenschaften.
Bild 11-12: Speichern und Starten der Netzwerkkonfiguration
Die Namensvergabe wird bei Windows an einer anderen Stelle vorgenommen. Hierzu rufen Sie im Arbeitsplatz das Kontextmenü ›Eigenschaften‹ auf und können dort den Namen eintragen (es handelt sich hierbei um den sogenannten NetBIOS-Namen11). Für die Einstellungen unter Windows XP bietet Microsoft eine weitere Variante an. In der Dialogbox ›System+Computername‹ kann unter dem Schalter ›Netzwerkkennung‹ ein Assistent aufgerufen werden. Über diesen Assistenten werden Sie aufgefordert, die entsprechenden Daten einzugeben. Sie können aber auch die Menüfolge über Start wählen: Einstellungen R Systemsteuerung R System, dort unter dem Reiter ›Computername‹ und darunter die Schaltfläche ›Ändern‹. Hier geben Sie dann sowohl die IP-Adressen mit Subnetzmaske als auch den Computernamen12 an. Sollten Sie den Computernamen wie bisher über die Eigen11. Network Basic Input Output System ist eine unter Windows eingesetzte Netzwerkanwendung, die mit ›NetBIOS over TCP/IP‹ einen Zugang zu den Protokollen der unteren Schichten des TCP/IP-Schichtenmodells ermöglicht. Die Zuordnung der IP-Adressen erfolgt über WINS (s. Seite 291) oder einer Datei lmhosts.
273
Netzwerke unter Linux
schaften unter Arbeitsplatz eingegeben haben, erscheint dieser dann nur als ›Computerbeschreibung‹. Wenn ein Rechner innerhalb des Active Directory arbeiten soll, muss sein NetBIOS Name mit dem DNS-Namen übereinstimmen. Hier erfolgt der Eintrag unter XP über: Einstellungen R Systemsteuerung R Netzwerk- und DFÜ-Verbindung R LAN-Verbindung R Netzkarte (z.B. 3COM) R Internetprotokoll (TCP/IP) R Eigenschaften. Die Dialogbox ist ähnlich wie unter Windows2000, nur etwas bunter. Unter Mac OS X wird die Netzwerkeinstellung unter Systemeinstellungen, dort unter der Rubrik Internet & Netzwerk, Netzwerk vorgenommen. Die Angaben für Router und DNS-Server spielen hier noch keine Rolle, erst wenn wir den LinuxRechner als Gateway einrichten (s. Seite 336). In unserem Beispiel haben wir nun alle Netzwerkkarten soweit konfiguriert und können testen, ob sich die Rechner untereinander erreichen.
Bild 11-13: Netzwerkeinstellung unter Mac OS
11.3.2 Kommandos zur Information und Kontrolle Um zu kontrollieren, ob die Netzwerkkarte richtig installiert wurde, gibt es unter Linux/Unix und auch bei Mac OS X das Kommando ifconfig Mit ifconfig können auch temporär Netzkarten konfiguriert werden, dies kann allerdings nur von root ausgeführt werden. Die Eingabe würde dann z.B. lauten: ifconfig eth0 192.168.0.10 netmask 255.255.255.0 Die temporäre Zuordnung ist bei Testläufen manchmal sinnvoll, wenn die Netzkarte an PCMCIA oder USB beim Booten nicht erkannt wurde. Ohne Angabe von Parametern werden bei ifconfig alle konfigurierten Netzkarten 274
12. Die Daten werden in die Registry unter HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Tcpip\Parameters\Interfaces unter der ID des jeweiligen Interfaces geschrieben.
11.3 Konfigurieren eines internen Netzes
(hier nur eth0) angezeigt. In der Regel wird dieses Kommandos von root ausgeführt. ifconfig ohne Zuweisung kann auch vom Benutzer aufgerufen werden, allerdings dann mit absolutem Pfadnamen: JOGYLI:/home/chr2 > /sbin/ifconfig eth0 Protokoll:Ethernet Hardware Adresse 00:50:DA:42:C6:62 inet Adresse:192.168.0.60 Bcast:192.168.0.60 Maske:255.255.255.0 inet6 Adresse: fe80::250:daff:fe42:c662/64 Gültigkeitsbereich:Verbindung EtherTalk Phase 2 Adresse:65280/151 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:151 errors:0 dropped:0 overruns:0 frame:0 TX packets:100 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 RX bytes:18521 (18.0 Kb) TX bytes:9890 (9.6 Kb) lo Protokoll:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 inet6 Adresse: ::1/128 Gültigkeitsbereich:Maschine EtherTalk Phase 2 Adresse:0/0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:347 errors:0 dropped:0 overruns:0 frame:0 TX packets:347 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 RX bytes:23168 (22.6 Kb) TX bytes:23168 (22.6 Kb)
Unter eth0 und lo werden die Einstellungen für die Netzwerkkarte gezeigt. Um die Netzwerkeinstellung zu kontrollieren, prüft man hier, ob die zugewiesene IPAdresse von eth0 192.168.0.60 und die Netzwerkmaske mit 255.255.255.0 richtig gesetzt wurden. Unter lo wird das loopback mit dem localhost 127.0.0.1 angezeigt. Auch diese Zeile muss vorhanden sein. Die anderen Werte wie die Übermittlung der Pakete, Kollisionen etc. sind vorerst nicht von Bedeutung. Unter Windows gibt es analog zu ifconfig das Kommando ipconfig. Zurück zu unserem Netzwerk. Um zu prüfen, ob die Verbindungen zu den verschiedenen Rechnern funktionieren, verwendet man ping IP-Nummer oder ping Rechnername JOGYLI:/home/chr2 # : ping toshi ping toshi (192.168.0.2) 56(84) bytes of data. 64 bytes from toshi (192.168.0.2): icmp_seq=1 ttl=128 time=0.692 ms 64 bytes from toshi (192.168.0.2): icmp_seq=2 ttl=128 time=0.648 ms 64 bytes from toshi (192.168.0.2): icmp_seq=2 ttl=128 time=0.668 ms … --- toshi ping statistics --3 packets transmitted, 3 received, 0% packet loss, time 2000ms rtt min/avg/max/mdev = 0.646/0.662/0.692/0.021 ms
Das Kommando lautet auf allen Betriebssystemen (Windows, Macintosch u.a.) gleich und zeigt die Werte der Testübertragung von 64 Byte an. Unter Linux müssen Sie das ping-Kommando mit <Strg+c> abbrechen, während es bei Windows nach viermaliger Testübertragung automatisch abbricht. Kommt keine Verbindung zustande, gibt das Kommando entsprechende Fehlermeldungen aus, beispielsweise:
275
Netzwerke unter Linux
JOGYLI:/home/chr2 # ping 192.168.0.25 PING 192.168.0.25 (192.168.0.25) 56(84) bytes of data. From 192.168.0.60: icmp_seq=4 Destination Host Unreachable From 192.168.0.60 icmp_seq=4 Destination Host Unreachable --- 192.168.0.25 ping statistics --11 packets transmitted, 0 received, +4 errors, 100% packet loss, time 10000ms , pipe 3
Rechner können manchmal auch dann nicht erreichbar sein, wenn sie in einen sogenannten ›Schlafmodus‹ fallen, sobald längere Zeit nicht am Terminal gearbeitet wurde (so z.B. beim Macintosh13). Sollten bei der Eingabe von ping mit einem Rechnernamen Fehler auftreten, nicht aber bei Eingabe einer IP-Nummer, ist dies ein Hinweis, dass die Rechnernamenauflösung nicht erfolgen konnte. Um Rechnernamen in IP-Nummern umzuwandeln, wird zuerst in der /etc/hosts nach einem passenden Eintrag gesucht, dann nach einem eingetragenen Nameserver, der einen entsprechenden Dienst anbietet. Fürs erste sollte es ausreichen, wenn Sie die Rechnernamen in die Datei /etc/ hosts eintragen (siehe auch Ausschnitt der /etc/hosts auf Seite 268). Sie können dies über einen Editor eingeben oder auch über YaST. Tritt bei ping ein Fehler auf, sollten Sie überprüfen, ❐
ob die IP-Nummer richtig angegeben wurde
❐
und/oder die Kabel auch richtig eingesteckt wurden.
❐
Auch könnte am Switch ein Stecker defekt sein. Die meisten Switches zeigen ein Funktionieren der gesamten Verbindung (Stecker, Kabel und Gegenstelle) mit einer Leuchtdiode an.
Generell sei noch erwähnt, dass es bei Fehlern durch doppelte IP-Nummern- oder Rechnernamen-Vergabe vorkommen kann, dass eine Netzwerkkarte nicht richtig installiert wurde und die IP-Nummer dann nicht erkannt wird.
11.4 Entferntes Anmelden und Datenaustausch Wenn alles geklappt hat, können nun zu allen Rechnern in unserem internen Netz Verbindungen hergestellt werden. Die Tabelle 11-5 zeigt Ihnen hierzu einige Möglichkeiten zum Datenaustausch und entferntes Anmelden (remote login), wobei auch Verbindungen zu Macintosh/Windows mit aufgeführt sind. Zwar gelten diese Kommandos auch netzübergreifend, doch vorerst wollen wir erst mal im eigenen Netz bleiben. Die entsprechenden Dienste müssen installiert bzw. aktiviert werden. Für NFS und Samba sind noch einige Einstellungen erforderlich (mehr dazu ab Seite 286). Auch bei der Anbindung an AppleTalk (netatalk siehe Seite 312) sind Konfigurationsda276
13. Der Ruhestand kann beim Macintosh unter Systemeinstellungen R Hardware R Energie Sparen deaktiviert werden.
11.4 Entferntes Anmelden und Datenaustausch
Tabelle 11-5: Entferntes Anmelden und Datenaustausch von nach Betriebs- BetriebsEntferntes system system Anmelden Linux/ Unix
Linux/ Unix
Linux/ Unix
Windows telnet 98/200X, XP
telneta ssh
Art des Zugriffs DateiDirekter Dateizugriff (u.a. auch transfer mit grafischer Oberfläche) ftp sftp scp
Einhängen (mount) von Verzeichnissen über NFS oder temporär im Konqueror mit der Adresse: sftp://
ftp
Einhängen (mount) von Verzeichnissen über smb (Samba) oder temporär im Konqueror mit der Adresse: smb://
Windows Linux/ 98/200X, Unix XP
telnet (ssh über putty)
ftp
über Samba – direkt unter Netzwerk (Freigaben im Explorer)
Windows Mac OS 98/200X, XP
telnet (ssh über putty)
ftp sftp
über Dave (bis Mac OS 9) ab Mac OS X mit Samba (über ›Computer suchen‹)
Linux/ Unix
Mac OS X telnet ssh
ftp sftp
Einhängen (mount) von Verzeichnissen über NFS oder temporär im Konqueror mit der Adresse: sftp://
Mac OS
Linux/ Unix
telnet ssh
ftp sftp
über atalk – Verbindung zu Server
Mac OS
Windows telnet 98/200X, ssh XP
ftp sftp
über Dave/Samba Netzwerk verbinden (Anzeige der Windows-Freigaben)
a. Zu telnet gibt es parallel noch das Kommando rlogin. Beide sollten jedoch aus Sicherheitsgründen bei Verbindung im Internet ohne VPN nicht mehr verwendet werden. Zusätzlich gibt es auf der Windows-Seite optionale Tools (bei telnet z.B. putty, das auch zusätzlich ssh zur Auswahl anbietet – siehe auch Seite 278) oder andere grafische Tools (wie z.B. VNC – Virtual Network Console, wobei auf beiden Seiten (Linux–Windows) die entsprechende Server- und/oder ClientSoftware von VNC installiert sein muss – unter SUSE Linux enthalten – ansonsten Download über www.realvnc.com). Auch kann ein ssh-Server für Windows eingesetzt werden (Download über www.cygwin.com [29] oder über http://sshwindows.sourceforge.net/ [50]).
teien zu ändern. Dave14 ist eine Software, die auf den älteren Macintosh (Mac OS bis 9.x) einen Austausch von Daten über NetBIOS (Windows) ermöglicht. Ab OS X, aufbauend auf Unix, ist auch bei Macintosh Samba installiert. Bei ssh, scp, sftp muss das erste Mal ein Authentifizierungs-Schlüsselpaar übertragen werden (RSA key fingerprint), das dann in einer Datei der ›bekannten Rechner‹ (known host) eingetragen wird (mehr dazu im Abschnitt 11.5). 14. Von der Firma Thursby: www.thursby.com/products/dave.html.
277
Netzwerke unter Linux
11.5 ssh – der sichere Weg von A nach B Als Systemverwalter muss man häufig nicht nur administrative Aufgaben auf dem lokalen System, sondern auch auf einem anderen System ausführen, ohne dass man zu dem entsprechenden Rechner gehen möchte. In fast allen Fällen geht dies über ein Remote-Login übers Netz. Da bei den meisten einfachen Login-Verfahren (z.B. bei rlogin oder bei telnet) das Login-Passwort aber im Klartext über das Netz läuft, ist dies ein erhebliches Sicherheitsrisiko, wenn die Verbindung über das Internet geht und kein VPN eingesetzt ist. Über ssh wird hier zumindest eine verschlüsselte Übertragung ermöglicht. Es bietet mit seinen verschiedenen Authentifizierungsverfahren eine gewisse Sicherheit. Daneben kann ssh auch dazu benutzt werden, andere Programme über einen sicheren (chiffrierten) Kommunikationskanal zu tunneln15 (allerdings belastet dies bei Anwendungen für die grafische Oberfläche, wie xterm, die CPU erheblich). ssh arbeitet nach dem Client-Server-Prinzip. Der Client – die ssh-Komponente auf Ihrem lokalen System – wendet sich dabei an den ssh-Server auf dem entfernten Rechner und bittet diesen um einen Kommunikationsaufbau. Danach erfolgt die Authentifizierungsphase (in ihr prüft der Server, ob Sie berechtigt sind, auf dem Remote-System zu arbeiten). Ist diese erfolgreich abgeschlossen, so geschieht der anschließende Datenaustausch gesichert, d.h. verschlüsselt. Der ssh-Server wird in der Regel beim Hochfahren in dem entsprechenden Level gestartet. Bei SUSE ist ssh im OpenSSH-Paket enthalten, das standardmäßig mit installiert wird. Wurde kein Standardsystem installiert, lässt sich ssh über YaST aktivieren (YaST R System R Run-Level-Editor) oder (natürlich auch nur als root) per ›insserv sshd‹ in die Liste der zu aktivierenden Dienste mit aufnehmen. Das sorgfältige Aufsetzen des ssh-Servers und -Clients lohnt in der Regel schon deshalb, weil neben dem reinen ssh-Client auch andere Kommandos den ssh-Mechanismus und die ssh-Authentifizierung nutzen können. Dazu gehören z.B. scp (secure copy), sftp (secure ftp), rsync – ein Kommando, um Sicherungen durchzuführen (siehe Seite 210) – und unison zum Abgleich und Synchronisieren von Dateien mit Prüfsummen und Zeitstempel (siehe Seite 214). Das Kommando slogin ist in der Regel ein Link auf ssh. ssh-Lösungen gibt es nicht nur für Linux und Unix, sondern ebenso für fast alle anderen Plattformen – darunter mit putty auch eine kostenlose Komponente für Windows.16 Die Authentifizierung (Prüfung der Zugangsberechtigung) kann auf mehrere Arten erfolgen:
278
15. Als Tunneln (oder über einen Tunnel übertragen) bezeichnet man den Einsatz einer sicheren Verbindung (verschlüsselten Übertragung) über ein unsicheres Netz (wie es mit WLAN – wireless LAN – oder via Internet gegeben ist). Eine sichere Verbindung kann beispielsweise über ssh -L (siehe man-Pages) oder über VPN erreicht werden. Unter SUSE Linux 9.1 wird u.a. freeSwan zum Einrichten von VPNs mitgeliefert. Sobald es nachinstalliert ist, findet man unter /usr/share/doc/packages/freeswan/x509-step-by-step/ eine ausführliche Dokumentation. 16. Siehe dazu www.putty.org.
11.5 ssh – der sichere Weg von A nach B
❐
per Benutzername und Passwort,
❐
per digitalen Schlüsseln (Public-Key-Verfahren, s. Seite 281),
❐
per Zugangserlaubnis in /etc/hosts.equiv (was sehr unsicher sein kann) oder
❐
mit weiteren Verfahren wie etwa Kerberos (ein eigener Authentifizierungsprozess, der auf einem Authentifizierungsserver läuft).
Zusätzlich wertet der ssh-Server im Standardfall die Kontrolldateien host.allow und host.deny im Verzeichnis /etc aus. Sie definieren, welche Client-Rechner überhaupt für eine Kontaktaufnahme in Frage kommen (siehe Seite 330). Die (vereinfachte) Syntax von ssh lautet: ssh [-Optionen] [-l Benutzer] Host [Kommando] Kommando, um netzwerkweit verschlüsselt mit der Shell zu arbeiten
oder ssh [-Optionen] Benutzer@Host [Kommando] Fehlt ›-l Benutzer‹, so wird der Benutzername (Login-Name) des aktuellen (lokalen) Benutzers angenommen. Fehlt die Angabe von Kommando (eventuell mit nachfolgenden Optionen und Kommandoparametern), so wird auf dem Host die Login-Shell des Benutzers gestartet. Ansonsten wird das betreffende Kommando ausgeführt und die Verbindung beendet. Die Ausgabe des entfernt ausgeführten Kommandos geht im Standardfall nach stdout, d.h. im Falle einer Shell zur lokalen Anzeige auf das Terminalfenster, von dem das Kommando gestartet wurde. Für die sehr zahlreichen, aber zumeist nicht benötigten Optionen von ssh sei hier auf ›man ssh‹ verwiesen. ssh ist bei SUSE in der Standardversion bereits installiert. Damit ist eine sichere Übertragung bereits möglich, ohne zusätzliche Konfiguration. Wenn wir ein Remote-Login im internen Netz von Rechner Jogyli zum Rechner Toshili testen, ergibt sich folgender Dialog: juergen@jogyli$ ssh toshili juergen@toshili‘s password: xxx
Beim ersten Verbindungsaufbau mit Toshili kommt noch eine Rückfrage der Art: The authenticity of host ‚toshili (192.168.0.10)‘ can‘t be established. RSA key fingerprint is 2f:3f:75:3a:a2:1d:26:2d:cb:36:73:49:fe:ad:de:04. Are you sure you want to continue connecting (yes/no)? yes 2250: Warning: Permanently added ‚toshili,192.168.0.10‘ (RSA) to the list of known hosts.
Beantworten Sie die Frage mit ›yes‹, so wird Toshili in die Liste der zuverlässigen Kommunikationspartner mit dem übertragenen Identifizierungschlüssel (fingerprint) aufgenommen (zu finden in ˜/.ssh/known_hosts oder – systemweit gültig – in /etc/ssh/ssh_host_key) und die Rückfrage entfällt zukünftig.
279
Netzwerke unter Linux
Beim Aufbau des ssh-Kanals authentifiziert sich also nicht nur der Client (und damit der Benutzer) gegenüber dem ssh-Server, sondern auch der ssh-Server gegenüber dem ssh-Client mit einem digitalen Schlüssel. Dieser wird gegen die in den oben genannten Dateien hinterlegten Angaben geprüft. Damit ein ssh-Kommunikationskanal aufgebaut werden kann, muss auf dem angesprochenen Host der ssh-Daemon sshd laufen und auf Verbindungsversuche lauschen. Dies erfolgt im Standardfall auf Port 22 (siehe auch Seite 344). Ist auf dem angesprochenen Hostsystem eine Firewall auch für das interne Netz aktiviert, muss diese natürlich den Port 22 (und den aufrufenden Rechner) freigeschaltet haben (siehe Firewall Seite 331). Nach der erfolgreichen Authentifizierung (sie wird vom ssh-Server durchgeführt) startet der Server auf dem Hostsystem einen neuen Client-Prozess. Der Client ist entweder die Login-Shell – falls dem ssh-Kommando kein weiteres Kommando mitgegeben wurde – oder es wird auf dem Host das im ssh-Aufruf angegebene Kommando ausgeführt. In der oben aufgeführten einfachen Form wird auf Toshili eine Shell-Sitzung eröffnet, die bestehen bleibt, bis explizit die Shell beendet oder Toshili oder der lokale Rechner heruntergefahren wird. Die Anweisung ssh toshili Kommando Kommandooptionen Kommandoparameter führt auf dem Rechner Toshili das aufgeführte Kommando aus. Auch hier wird das Passwort abgefragt, danach das Kommando ausgeführt und schließlich der sshKanal wieder beendet. juergen@jogyli> ssh -l carsten toshili tar -cf - Texte | \ tar -xC ˜/Textekopie -f -
überträgt z.B. den Inhalt des Verzeichnisses Texte des Benutzers carsten (auf dem Rechner Toshili) in das lokale Verzeichnis Textekopie. Im ersten tar-Teil des Kommandos sorgt ›-f -‹ dafür, dass das remote erstellte Archiv an die Standardausgabe weitergeleitet wird. Die lokal laufende tar-Version (jenseits der Pipe) nimmt diese Ausgabe entgegen und extrahiert die Dateien in das lokale Verzeichnis Textekopie.
11.5.1 Dateien über Netzwerk kopieren Statt der komplizierten Kommandoeingabe über ssh geht das Kopieren wesentlich einfacher mit scp (secure copy). Seine Syntax lautet vereinfacht: scp [[Benutzer1@]Host1:] Datei1 [[Benutzer2@]Host2:] [Datei2] Kommando, um netzwerkweit Dateien verschlüsselt zu kopieren
280
Fehlen die Benutzerangaben, so wird der Accountname des aktuellen Benutzers eingesetzt; fehlt im Aufruf eine der Hostangaben, so wird dafür das lokale System
11.5 ssh – der sichere Weg von A nach B
eingesetzt. scp erlaubt bei der Angabe von zwei Hosts also auch problemlos Dateien zwischen zwei anderen Rechnern auszutauschen, ohne dass man sich dazu dort explizit anmelden muss. Abgefragt werden aber im Standardfall jeweils die Login-Passwörter der entsprechenden Benutzer auf beiden Rechnern! Fehlt die Angabe von Datei2, so wird dort der Name von Datei1 benutzt. Sowohl Datei1 als auch Datei2 dürfen Verzeichnisse sein, wie man es von cp her kennt. juergen@jogyli> scp
-r
carsten@toshili:Texte
Textekopie
kopiert – wie zuvor beim ssh-Kommando – die Dateien im Dateibaum Texte des Login-Verzeichnisses des Benutzers carsten auf dem Rechner Toshili in das lokale Verzeichnis Textekopie.
11.5.2 Grafische Programme starten (X11) über ssh Auch grafische Programme können über ssh abgewickelt werden, wobei dann das aufgerufene grafische X11-Programm17 auf dem entfernten Hostsystem läuft, die Anzeige aber lokal erfolgt. Die Tastatur- und Mauseingabe wird auch auf dem lokalen System gelesen. Da das X11-Protokoll recht datenintensiv ist, setzt ein solches Arbeiten eine ausreichend schnelle Netzverbindung voraus. Beim Start von ssh ist nun die Option –X notwendig.18 Sie sorgt auch dafür, dass ssh die Shell-Variable DISPLAY richtig setzt. Die Sequenz juergen@jogyli> ssh -X -l carsten toshili carsten@toshili‘s password: xxx carsten@toshili> xman
startet auf dem Rechner Toshili eine ssh-Session unter dem Benutzernamen carsten und ruft danach xman auf. xman (eine kleine grafische Anwendung, s.S.371) läuft dabei auf Toshili, macht seine X11-Anzeige aber auf dem lokalen Rechner Jogyli.
11.5.3 Authentifizierung per digitalen Schlüsseln Statt beim ssh-Client-Start das Login-Passwort anzugeben, kann man sich auch über einen digitalen Schlüssel authentifizieren (seine Zugangsberechtigung nachweisen). Dazu muss man zuvor per ssh-keygen ein Schlüsselpaar generieren. Dabei werden zwei Schlüssel erzeugt:
17. X11 steht für das X-Window-System, das unter Unix gewissermaßen als Standard für die grafische Oberfläche eingesetzt wird. Es ist zudem netzwerktransparent, so dass grafische Anwendungen die Ausgabe auch auf einem entfernten Rechner darstellen können. 18. Enthält die Konfigurationsdatei /etc/ssh/ssh_config eine Zeile mit ›ForwardX11 yes‹ (ohne Kommentarzeichen), so kann die -X-Option im Aufruf entfallen.
281
Netzwerke unter Linux
❐
ein privater Schlüssel, den man höchst vertraulich und möglichst gut geschützt behandeln sollte, und
❐
ein öffentlicher Schlüssel. Mit diesem können Nachrichten, welche mit dem privaten (geheimen) Schlüssel signiert wurden, auf Authentizität überprüft werden. Diesen öffentlichen Schlüssel verteilt man nun über einen zuverlässigen Transport auf die Rechner, welche die Zugangsberechtigung überprüfen sollen und legt sie dort im passenden Schlüsselverzeichnis ab (/etc/ssh_host_key.pub).19
Das Verfahren, bei dem ein privater und ein öffentlicher Schlüssel zur Authentifikation (oder zum Signieren) verwendet wird, nennt man Public-Key-Verfahren. Die einfache Form zur Erstellung eines eigenen Schlüsselpaars sieht wie folgt aus: ssh-keygen -t rsa Damit wird ein 1024 Bit langer RSA-Schlüssel erzeugt. Bei der Ablage fragt keygen nach einem Passwort bzw. einem Passwortsatz (Passphrase), mit welchem der private Schlüssel chiffriert wird, damit er nicht unberechtigt benutzt werden kann. In der Passphrase dürfen Leer-, Satz- und andere Sonderzeichen vorkommen. Bei der Nutzung des privaten Schlüssels ist diese Passphrase erneut zum Öffnen anzugeben. Die Passphrase muss zur Sicherheit bei der Ablage zwei Mal eingegeben werden. ssh-keygen fragt schließlich noch ab, in welchen Dateien die Schlüssel abgelegt werden sollen. Der öffentliche Schlüssel erhält im Standardfall die Endung ›.pub‹. Die Standarddateien sind ˜/.ssh/id_rsa und ˜/.ssh/id_rsa.pub. Statt den privaten Schlüssel in einer Datei zu speichern, was gewisse Sicherheitsrisiken in sich birgt, kann man in aktuellen ssh-Implementierungen das Schlüsselpaar auch auf einer SmartCard ablegen. Dies setzt aber eine entsprechende Karte voraus sowie passende Software zum Anlegen und einen Kartenleser zur Nutzung der SmartCard. Der öffentliche Schlüssel muss nun auf all die Rechner (Hosts) verteilt werden, gegenüber denen man sich mit dem Public-Key-Verfahren authentifizieren möchte. Man legt sie dort im jeweiligen Home-Verzeichnis unter ˜/.ssh/authorized_keys ab. Dabei können in der Datei mehrere Schlüssel (Keys) liegen. Der Transport sollte wiederum gesichert erfolgen – also z.B. per Diskette oder Memory-Stick oder per Secure-Copy (scp). Von nun an kann man sich gegenüber dem Host per Public-Key authentifizieren. In aller Regel reicht ein einziges Public-Key-Schlüsselpaar auf allen Rechnern. Die Sicherheit des Public-Key-Verfahrens lebt und fällt mit der Sicherheit des privaten Schlüssels. Er muss vertraulich (geheim) bleiben und sollte in aller Regel durch ein phantasiereiches Passwort (Passphrase) geschützt sein. Moderne, kom282
19. Man kann den öffentlichen Schlüssel auch in ein LDAP-Verzeichnis legen. Die Schritte dazu und die entsprechende Konfiguration gehen jedoch über das Thema dieses Buchs hinaus.
11.5 ssh – der sichere Weg von A nach B
pakte USB-Memory-Sticks erlauben auch, ihn bei sich zu tragen und so sowohl sicherer als auch mobil zu sein. Die Zugriffsrechte des privaten Schlüssels sollten so gesetzt werden, dass nur der Besitzer ihn lesen darf (z.B. per ›chmod 400 ˜/.ssh/ id_rsa‹). Möchte man häufiger mit ssh (und den anderen Secure-Clients) zu anderen Rechnern kommunizieren, so ist die wiederholte Eingabe des Passwortes oder der Passphrase lästig, insbesondere dann, wenn für die verschiedenen Hosts unterschiedliche Passwörter benutzt werden (was aus Sicht der Sicherheit sinnvoll ist). Es bietet sich dann an, ssh-agent zu verwenden. Dieser Agent erhält die zu verwendenden Authentifizierungsinformation und hält sie geschützt gespeichert. Das Passwort bzw. die Passphrase muss hier nur einmal (pro ssh-agent-Start) eingegeben werden. Beim Verbindungsaufbau wendet sich ssh dann zunächst an diesen Agenten und erhält von ihm die Authentifizierungsinformation. Klappt dies, erfolgt keine Rückfrage mehr an den aufrufenden Benutzer. Im Standardfall startet man bei häufiger ssh-Benutzung den Agenten gleich beim Login über seine .profile-Datei. Der Agent wird per ›ssh-agent‹ gestartet und lädt per ›ssh-add schlüsseldatei‹ den zu verwendenden privaten Schlüssel. Ist dieser durch eine Passphrase geschützt (was immer aus Sicherheitsgründen vorzuziehen ist), so wird diese interaktiv abgefragt. Hierfür muss der ssh-agent entsprechend eingestellt werden.
11.5.4 Weitere Hinweise zu ssh Die Konfiguration des ssh-Daemons erfolgt über die Dateien im Verzeichnis /etc/ ssh, die des ssh-Clients weitgehend im Verzeichnis ˜/.ssh des Benutzers. Tabelle 11-7 zeigt dazu die wichtigsten Konfigurationsdateien. In der Regel werden Konfigurationsdateien aber bereits bei der Installation so aufgesetzt, dass man hier kaum etwas tun muss. Ausführliche Dokumentationen zu ssh und seinen scp- und sftp-Vasallen findet man unter www.openssh.org. Eine sehr detaillierte Beschreibung von ssh, seiner verschiedenen Authentifizierungsmechanismen und Konfigurationen sowie der weiteren ssh-orientierten Kommandos wie scp, sftp, slogin bietet das Buch von Barrett [2]. Die aktuellste ssh-Version findet man unter www.openssh.org. Bei ssh ist zu beachten, dass es von ssh sowohl mehrere Open-Source- als auch kommerzielle Versionen mit etwas unterschiedlichen Optionen und Konfigurationen gibt. So liegen z.B. die Dateien unter Mac OS X nicht unter /etc/ssh, sondern direkt unter /etc und bei der Windows-ssh-Version putty in der Windows-Registry. Unter Linux ist die Open-Source-Version von OpenSSH üblich und wurde hier beschrieben. Vom ssh-Protokoll (SSH) gibt es mehrere Versionen, wobei aus Sicherheitsgründen nur die neuere Version 2 (SSH2) eingesetzt werden sollte. 283
Netzwerke unter Linux
Tabelle 11-6: Die wichtigsten ssh-orientierten Prozesse Funktion
Kommando
Terminalsitzung auf einem Remote-Host
ssh
ssh-Server (Daemon)
sshd
Secure cp, verschlüsseltes Kopieren über das Netz
scp
Secure ftp, verschlüsselter Datentransfer über das Netz (benötigt auf dem Host einen ssh-fähigen ftp-Server)
sftp
Schlüsselpaar-Generierung
ssh-keygen
Start des Authentifikationsagenten
ssh-agent
Laden des Authentifikationsschlüssels im ssh-agent
ssh-add
Tabelle 11-7: Steuerdateien für ssh-Daemon und ssh-Client bei OpenSSH Funktion
Datei
Server-Konfiguration
/etc/ssh/sshd_config
Client-Konfiguration (systemweit)
/etc/ssh/ssh_config
Client-Konfiguration (per User)
˜/.ssh/ssh_config
privater Schlüssel des Hosts
/etc/ssh/ssh_host_rsa_key
öffentlicher Schlüssel des Hosts
/etc/ssh/ssh_host_rsa_key.pub
öffentliche Schlüssel und Hostnamen der Clients (anderer Rechner)
˜/.ssh/known_hosts
/etc/ssh/ssh_known_hosts ˜/.ssh/known_hosts2
Kontrolldateien für den Zugriff anderer Rechner generell
/etc/hosts.allow /etc/hosts.deny
Kontrolldatei für den Zugriff vertrauenswürdiger Hosts
/etc/hosts.equiv
Zugriff vertrauenswürdiger Hosts (per User)
˜/.shosts ˜/.rhosts
284
Kontrolldateien für den Zugriff über PublicKey-Verfahren
˜/.ssh/authorized_keys
Standard-Schlüsselpaar für Public-KeyAuthentifizierung
˜/.ssh/id_rsa
˜/.ssh/authorized_keys2 ˜/.ssh/id_rsa.pub
11.5 ssh – der sichere Weg von A nach B
11.5.5 sftp-Aufruf über Terminal und über den Konqueror Die Syntax von sftp – dem secure (sicheren) FTP – lautet: sftp [Benutzername@]Rechnername Kommando, um Dateien verschlüsselt über das Netz zu transferieren
Wie bei scp oder ssh wird vorab die Authentifizierung vorgenommen. Ist die Verbindung dann aufgebaut, steuern, wie bei ftp, interaktive Kommandos die Kommunikation. Gegenüber ftp gibt es erfreulicherweise auch lpwd, um auf dem lokalen Rechner das aktuelle Verzeichnis anzuzeigen und mit lcd zu wechseln. Über das Kommando help werden die möglichen Kommandos angezeigt. Hier sehen Sie eine Auswahl der häufigsten Kommandos: get Datei
Hiermit ›holt‹ man sich eine Datei vom entfernten Rechner.
mget Dateien
(multiple get) Wie get, wobei hier mehrere Dateien auch über Meta-/Jokerzeichen (*,?,[]) ausgewählt werden können.
put Datei
Eine Datei vom lokalen Rechner wird an den entfernten Rechner abgegeben.
mput Dateien
(multiple put) Wie put, wobei hier mehrere Dateien auch über Meta-/Jokerzeichen (*,?,[]) ausgewählt werden können.
cd Verzeichnis
Wechselt in das angegebene Verzeichnis (des entfernten Rechners).
lcd Verzeichnis
Wechselt in das angegebene Verzeichnis (des lokalen Rechners).
mkdir Verzeichnis
Legt ein neues Verzeichnis auf dem entfernten Rechner an.
lmkdir Verzeichnis Legt ein Verzeichnis auf dem lokalen Rechner an. pwd
(print working directory) zeigt das aktuelle Verzeichnis des entfernten Rechners an.
lpwd
Zeigt das aktuelle Verzeichnis des lokalen Rechners an.
help
Zeigt die möglichen internen Kommandos an.
bye oder quit oder exit
Beendet die Verbindung mit sftp.
Bei einzelnen temporären Aktionen ist es manchmal einfacher, die grafische Oberfläche zu nutzen und über den Konqueror Dateien oder Verzeichnisse netzübergreifend zu verwalten. Im Konqueror wird in der Adresszeile sftp:// und der entsprechende Pfad angegeben. Durch Teilung des Fensters oder über parallele Aufrufe des Konqueror können nun sämtliche Dateiaktionen wie Ändern, Kopie-
285
Netzwerke unter Linux
ren, Löschen usw. leicht durchgeführt werden. Voraussetzung ist, dass die Authentifizierung erfolgreich war. Der Austausch des Schlüsselpaares sollte bereits erfolgt sein. Ab SUSE 9.1 funktioniert auch das erste Anmelden und die Zuweisung des Schlüssels über die grafische Oberfläche.
Bild 11-14: sftp über den Konqueror
War die Authentifizierung nicht erfolgreich, kommt keine Verbindung zustande und es wird eine entsprechende Warnung angezeigt.
11.6 NFS und NIS Werden bestimmte Verzeichnisse von einem entfernten Rechner ständig auf dem lokalen Rechner benötigt, was z.B. bei einem File-Server der Fall ist, werden diese Verzeichnisse über NFS (Network File System) eingehängt – meist beim Hochfahren oder spätestens beim Anmelden des entsprechenden Benutzers. Hierzu ist es erforderlich, dass der entfernte Rechner als NFS-Server eingerichtet wurde und die entsprechenden Verzeichnisse auf dem Server freigegeben sind (diese stehen dann dort in der Datei /etc/exports).
286
Beim lokalen Rechner muss der NFS-Client eingerichtet sein, der die Anforderung an den entfernten Rechner stellt. Das angeforderte Verzeichnis wird dann per mount in das Dateisystem auf dem lokalen Rechner (dem Client) eingehängt. Beim Konfigurieren des NFS-Clients wird die Datei /etc/fstab mit verändert, die beim Booten das Einhängen (mount) der Dateisysteme steuert. Soll das Verzeichnis nicht automatisch beim Booten eingehängt werden, kann der mount-Eintrag in der /etc/fstab so verändert werden, dass ein verkürztes mount-Kommando
11.6 NFS und NIS
ohne die mount-Optionen erfolgen kann. Dies empfiehlt sich speziell bei Laptops/ Notebooks, die nicht immer im gleichen Netz eingebunden sind bzw. als SingleRechner genutzt werden. Über YaST ist die Konfiguration einfach durchzuführen. Nehmen wir folgendes Beispiel: Auf dem Server (in unserem Beispiel Jogyli) soll das Verzeichnis /home/ chr2 auch auf dem Rechner Toshili (dem Laptop) verfügbar sein. Konfiguration des Servers : YaST R Netzwerkdienste R NFS-Server
➊
➋
➌ Bild 11-15: Einrichten des NFS-Servers
Unter 1 werden die notwendigen Programme gestartet (das sind unter dem Verzeichnis /etc/init.d die Skripten portmap und nfsserver). Unter 2 trägt man die Verzeichnisse ein, die freigegeben werden. Unter 3 werden jene Rechner aufgeführt, die auf diese Freigaben zugreifen dürfen. Hierbei können sogenannte Wildcards verwendet werden. Der Eintrag von nur einem * bedeutet, dass alle Rechner, die Zugriff auf den Server haben, die Verzeichnisse mounten können. Die Rechner werden ansonsten mit Namen eingetragen, wobei die Wildcards ›*‹ und ›?‹ wie bei der Dateinamenexpansion unter der Bash verwendet werden können (* bedeutet keines, eins oder mehrere Zeichen, ? entspricht einem beliebigen Zeichen). Zusätzlich werden Optionen zum mount-Kommando mitgegeben. Die am häufigsten eingesetzten sind (siehe mount, Seite 113):
287
Netzwerke unter Linux
ro
(read only) In dem eingehängten Verzeichnis mit allen Unterverzeichnissen darf nur gelesen werden, also Löschen, Neuanlegen und Ändern von Dateien und Unterverzeichnissen ist nicht erlaubt.
rw
(read write) Wenn keine anderslautenden Zugriffseinstellungen auf den eingehängten Verzeichnisbaum eingetragen sind, werden die Inhalte angezeigt (Leseerlaubnis) und es dürfen Dateien, Unterverzeichnisse angelegt, gelöscht und verändert werden.
root_squash
root des angegebenen Rechners hat keine Sonderrechte auf den freigegebenen Verzeichnisbaum (also wenn Dateien oder Verzeichnisse für andere geschützt sind, gilt dies ebenfalls für root).
no_root_squash root darf nach wie vor alles – auch auf dem eingehängten Verzeichnis. map_identity
Die User-IDs (Benutzernummern) sind auf dem Client die gleichen wie auf dem Server (identisch).
map_daemon
Die User-IDs (Benutzernummern) sind auf Client und Server nicht identisch. Über einen zusätzlichen Daemon UGIDD20, der entsprechend unter ›Netzwerkdienste‹ auch aktiviert sein muss, soll eine Umsetztabelle für die User-IDs verwendet werden.
Der Eintrag durch YaST in der Datei /etc/exports auf dem Rechner Jogyli sieht nach den Angaben im Bild 11-15 wie folgt aus: /home/chr2 toshili(ro,root_squash,sync)
Konfiguration des NFS-Clients Auf dem Rechner Toshili, der von Jogyli exportierte Daten nutzen soll, ist die Konfiguration sehr einfach über YaST vorzunehmen: YaST R Netzwerkdienste R NFS-Client Die Angaben unter YaST auf dem Client (Toshili) verändern dessen Datei /etc/fstab. Unter Optionen können auch hier Werte für das mount-Kommando eingetragen werden (siehe auch Seite 110). Weitere Optionen können sein:
288
20. UGIDD ist nicht auf allen Linux-Systemen vorhanden, leider auch nicht unter SUSE 9.1. Wenn File-Server eingesetzt werden, ist es zu empfehlen, ebenfalls NIS zu konfigurieren.
11.6 NFS und NIS
Bild 11-16: Konfigurieren des NFS-Clients (Toshili)
default
Beeinhaltet rw, suid, dev, exec, auto, nouser und async (s. Seite 114) und durch das darin enthaltene ›auto‹ wird das Verzeichnis/Dateisystem beim Hochfahren gemountet.
noauto
Das Verzeichnis/Dateisystem wird nicht automatisch beim Hochfahren gemountet. Es kann manuell mit verkürzter Eingabe eingehängt werden (mount Verzeichnis).
user
Das Verzeichnis/Dateisystem darf auch von einem Benutzer gemountet werden.
Wird für das Mounten ›default‹ eingetragen und der Server ist zum Zeitpunkt des Hochfahrens nicht erreichbar, werden entsprechende Fehlermeldungen (/var/log/ boot.msg bzw. /var/log/messages) ausgegeben: Importing Net File System (NFS)mount: RPC: Remote system error – No route to host failed
Sobald der Server erreichbar ist, kann dann manuell das Verzeichnis eingehängt werden – in unserem Beispiel mit verkürzten Angaben (entweder Verzeichnis oder Device): mount /home/chr2 Der mount-Befehl darf in der Regel nur durch root erfolgen. Nur wenn in den mount-Angaben unter /etc/fstab die Option user angegeben ist (siehe nachstehend bei /dev/fd0 und /dev/cdrom), darf auch der Benutzer das Verzeichnis/Datei-
289
Netzwerke unter Linux
system einhängen, soweit die Zugriffsrechte auf das Mount-Verzeichnis dies gestatten. Hierzu der Eintrag in /etc/fstab (siehe Seite 110): /dev/hda9 /dev/hda7 /dev/cdrom devpts /dev/fd0 proc /dev/hda1 /dev/hda5 Jogyli:/home/chr2
/ /boot /media/cdrom /dev/pts /media/floppy /proc /windows/C /windows/D /home/chr2
ext2 ext2 auto devpts auto proc vfat vfat nfs
defaults 1 1 defaults 1 2 ro,noauto,user,exec 0 0 defaults 0 0 noauto,user,sync 0 0 defaults 0 0 noauto,user 0 0 noauto,user 0 0 noauto,rw 0 0
11.7 Benutzer und Gruppen netzwerkweit verwalten mit NIS Die Eigenschaften einer Datei enthalten nicht den Besitzernamen (owner) und Gruppennamen, sondern nur die Benutzer- und Gruppennummer aus der /etc/ passwd. Bei dem ls-Kommando werden die Namen aus der /etc/passwd zugeordnet. Wenn die Nummern für Besitzer und Gruppen vom NFS-Server und NFS-Client nicht identisch sind, ergeben sich hier falsche Zuordnungen. Bei kleineren Netzen lässt sich dies vermeiden, wenn die Dateien /etc/passwd, /etc/shadow und /etc/group auf allen Rechnern immer gleich gehalten werden (z.B. Änderungen grundsätzlich nur auf einem Rechner vornehmen und dann über ein Skript die veränderten Dateien sofort auf alle Rechner per scp kopieren). Bei größeren Netzen würde dies aber einen erheblichen Verwaltungsaufwand bedeuten. Deshalb ist es besser, die Benutzer netzwerkweit zu verwalten, speziell dann, wenn zusätzlich NFS für File-Server eingesetzt wird. Der Netzwerkdienst NIS (Network Information Service) stellt sicher, dass Benutzerund Gruppennummern innerhalb eines Linux/Unix-Netzes einheitlich vergeben werden. NIS bildet aus den Dateien /etc/passwd, etc/group und /etc/shadow aller Rechner des entsprechenden Netzes eine Art Datenbank. Weiterhin werden von NIS die Dateien /etc/hosts, /etc/hosts.allow und /etc/hosts.deny mit ausgewertet. Die Namen der dazugehörigen Rechner müssen für NIS in der /etc/hosts aufgeführt sein. Ein NIS-Server kann auch gleichzeitig ein NIS-Client sein, wenn Benutzer sich auch am NIS-Server direkt anmelden sollen. Für die Konfiguration von NIS sei auf das Administrationshandbuch von SUSE verwiesen. Wird NIS eingesetzt, dürfen Passwörter nicht mehr mit passwd, sondern nur noch mit yppasswd geändert werden. yp leitet sich ab von Yellow Pages, wie NIS aus früheren UnixZeiten auch bezeichnet wurde. 290
11.8 Samba – die Brücke zwischen Betriebssystemen
11.8 Samba – die Brücke zwischen Betriebssystemen Sssamba – obwohl dieses Samba eigentlich nichts mit dem südamerikanischen Tanz zu tun hat, geht damit doch einiges leichter und schneller (auf der Webseite von www.samba.org sehen Sie den Pinguin tanzen). Samba ist ein Open-Source-Programmpaket. Der Name Samba leitet sich ab von dem unter Windows verwendeten Protokoll SMB (Server Messages Block), das bei Windows-Systemen zum Austausch von Dateien und zum gemeinsamen Nutzen von Druckern dient. SMB wird auch als CIFS (Common Internet File System) bezeichnet, eine neuere Version bzw. Umbenennung seitens Microsoft, die ebenfalls auf SMB aufbaut. Mit Hilfe von Samba können Linux/Unix-Rechner in die Netzwerkumgebung von Windows eingebunden werden und darüber hinaus als leistungsfähige File- und Print-Server in der Windows-Welt eingesetzt werden. Allerdings bietet Samba lediglich die in Linux bzw. Unix üblichen Möglichkeiten der Dateirechteverwaltung und unterstützt nicht die weitergehenden Rechte- und Benutzereinstellungen, die Windows vorsieht. Mit anderen Worten: ❏
Vom PC (Windows, OS/2 oder Mac) können Sie auf ›freigegebene‹ Verzeichnisse (Shares) des Linux-Rechners zugreifen (im Windows-Explorer unter Netzwerkumgebung),
❏
vom PC (Windows, OS/2 oder Mac) können Sie Drucker mitbenutzen, die unter Linux eingerichtet sind, und haben somit sämtliche Vorteile des CUPS-Drucksystems,
❏
und freigegebene Verzeichnisse vom Windows-PC können mit Samba-Client in die Linux-Umgebung eingebunden werden.
❏
Ab der Version Samba 3.0 werden auch Netzwerke mit Active Directory (Windows 2000/XP) unterstützt.
Weiterhin bietet Samba Dienste an, die sonst von Windows-Servern geleistet werden, wie z.B.: ❏
WINS (Windows Internet Name Service) basiert auf NetBIOS und dient zur
Namensauflösung unter Windows. Wenn hierfür kein eigener Server eingesetzt wird (WINS-Server), wird unter den im Netz vorhandenen Rechnern ein sogenannter Local Master Browser (LMB) gewählt. Unter NetBIOS erfolgt die Registrierung der Rechnernamen immer temporär, der Rechner, der sich zuerst mit einem Namen meldet, erhält ihn und wird registriert. Sollte sich ein weiterer Rechner mit dem gleichen Namen anmelden, wird er abgewiesen. Die Steuerung und der Abfragemechanismus wird von dem Local Master Browser übernommen. Bei der Wahl zum LMB gewinnt derjenige mit der neueren Software (Ober sticht Unter, also z.B. Windows XP hat den Vorrang vor einem Windows2000-System). Wenn jedoch aus irgendeinem Grunde dieser Rechner ausfällt, wird eine neue Wahl zum LMB gestartet. Diese Art der
291
Netzwerke unter Linux
Registrierung ist sehr netzlastig und es kann mehrere Minuten dauern, bis alle aktuellen angemeldeten Rechner richtig erscheinen. Ein Samba-Rechner kann ebenfalls als Local Master Browser gewählt werden, abhängig von dem zugewiesenen OS-Level. Will man ein bestehendes Windows-Netz nicht durch den Samba-Server beeinflussen, setzt man diesen Level auf 2. Soll der SambaServer die Wahl zum Local Master Browser gewinnen, gibt man z.B. 100 an. ❏
WINS über WINS-Server ist eine Variante, bei der NetBIOS generell mit einem WINS-Server arbeitet. Dort werden die Namen der angemeldeten Rechner registriert. Dieser WINS-Server kann ebenfalls über Samba von einem Linux-
Rechner wahrgenommen werden. In ihm werden die aktuellen angemeldeten Rechner registriert. ❏
PDC (Primary Domain Controller) ist ein Anmeldeservice unter Windows, der
die Passwortkontrolle für Benutzer durchführt. Ein Samba-Rechner kann auch diesen Dienst übernehmen. ❏
Zusätzlich bietet Samba eine Reihe von Diagnosewerkzeugen.
Ab der SUSE-Version 9.1 wird Samba in der Version 3 eingesetzt, die als wesentliche Neuerungen überarbeitete Authentifizierungsmechanismen und verbesserte Unterstützung zu Windows XP/2000 (Active Directory) enthält. Wir wollen uns aber in erster Linie mit dem gegenseitigen Zugriff auf Verzeichnisse und Dateien beschäftigen. Über die Hauptseite von www. samba.org erhalten Sie umfassende Informationen. In der Online-Dokumentation von SUSE sind unter /usr/share/doc/packages/samba/examples eine Reihe von Beispielen enthalten.
11.8.1 Wichtige Programme/Dateien von Samba Samba bietet den Samba-Server, der es ermöglicht, von Windows-Rechnern die Ressourcen eines Linux-Rechners (Verzeichnisse, Drucker) zu nutzen. Hierbei können, wie im vorigen Abschnitt aufgeführt, spezifische Windows-Dienste übernommen werden. Über den Samba-Client können Windows-Freigaben von einem Linux-Rechner genutzt werden. Ab der SUSE-Distribution 9.1 (Professional) sind die Programme vom Samba-Client bereits in der Standardinstallation enthalten. Der Samba-Server muss nachinstalliert und konfiguriert werden. Die wichtigsten Server-Programme sind:
292
11.8 Samba – die Brücke zwischen Betriebssystemen
Programm
Funktion
smbd
SMB-Daemon. Er ist der zentrale Server-Prozess und zustän-
dig für Freigaben (Shares) von Dateien und Druckern. nmbd
NetBIOS-Nameserver-Daemon. Er übersetzt die NetBIOSNamen in IP-Adressen und führt eine Liste mit allen im Netz freigegebenen Ressourcen.
smbclient
Mit diesem Programm kann auf Windows-Ressourcen (Freigaben) zugegriffen werden.
smbstatus
Zeigt den aktuellen Status von Samba an mit den zur Zeit aktiven Verbindungen.
nmblookup
Ein Diagnosetool. Es untersucht die NetBIOS -Namensauflösung (entspricht etwa nbtstat unter Windows).
smbtar
Hiermit können Dateien von Windows-Freigaben gesichert werden (entspricht der Option von smbclient -T).
testparm
Überprüft die Samba-Konfigurationsdatei. Dieses Programm sollte dann aufgerufen werden, wenn die Datei smb.conf direkt editiert wurde.
Wichtige Dateien zu Samba: Verzeichnis/Datei
Funktion
/etc/samba: smb.conf
Zentrale Samba-Konfigurationsdatei (Ab der SUSE-Version 8.2 unter /etc/samba, davor unter /etc)
/var/log/samba: log.nmbd log.smbd
Protokolldateien der Programme nmbd und smbd
/etc/samba: smbpasswd
Passwortdatenbank von Samba. Zusätzlich muss der Benutzer auch in /etc/passwd enthalten sein.
11.8.2 Installation und Konfiguration von Samba Als erstes ist zu prüfen, ob der Samba-Server bereits installiert ist (s. Seite 352): # rpm -qs samba package samba is not installed
oder Sie erhalten eine Liste der installierten Dateien: normal normal …
/etc/init.d/nmb /etc/init.d/smb
Ebenfalls möglich, aber zeitlich aufwendiger ist die Abfrage über YaST: YaST R Software R Software installieren oder löschen
293
Netzwerke unter Linux
Hier empfiehlt es sich, nach ›Samba‹ zu suchen. Siehe hierzu Bild 12-1 (Nachinstallieren des Paketes für Samba-Server) auf Seite 349. Um Samba zu konfigurieren, bieten sich drei Möglichkeiten an: 1. Die klassische Art wäre es, die Datei /etc/samba/smb.conf zu editieren, die im Original mit ausführlichen Kommentaren versehen ist. Für Ein- und Umsteiger empfiehlt sich, zuerst den einfachen Weg unter Punkt 2 oder 3 zu wählen. 2. Die Einstellungen zu Samba über YaST beziehen sich bis zur Version 9.0 nur auf die Art, wie die Passwortabfrage erfolgen soll (klassisch oder über LDAPServer). Ab der Version 9.1 kann eine schnelle Konfiguration von Samba mit YaST R Netzwerkdienste R Samba-Server erfolgen. Hier werden die wesentlichen Einstellungen zu Global und Shares vorgenommen: ❐ der NetBIOS-Name des Samba-Servers, ❐ die Arbeitsgruppe, die mit der unter Windows verwendeten Arbeitsgruppe übereinstimmen muss, ❐ und die Freigaben in vereinfachter Form mit Homes und Drucker. Diese sind bereits voreingestellt. Damit lässt sich bereits eine Verbindung von und zu Windows-Rechnern in der gleichen Arbeitsgruppe realisieren. 3. Für die Konfiguration und spätere Administration bietet sich SWAT (das Samba Webbased Administration Tool) an, das netzwerkweit über Browser einsatzbereit ist. Ab Samba Version 3 ist SWAT noch verbessert, doch die Grundfunktionen der früheren Versionen sind gleich geblieben. In den Beispielen sind die Neuerungen von 3.0 gekennzeichnet. Da diese für eine einfache Installation nicht benötigt werden, kann unsere Beispielkonfiguration auch für ältere Versionen dienen. Wenn Sie die Konfiguration von Samba über SWAT oder YaST durchführen, wird die Originaldatei /etc/samba/smb.conf ohne Kommentare neu erstellt. Wer später die Originaldatei von Samba einsehen möchte, sollte sich deshalb vorab die Originaldatei kopieren. Manchmal kann es von Vorteil sein, zu wissen, wie die Grundeinstellung war.
11.8.3 Konfiguration mit SWAT In unserem Beispiel werden wir die Konfiguration mit SWAT durchführen. Allerdings muss SWAT erst aktiviert werden (siehe Bild 11-17) mit YaST R Netzwerkdienste R Netzwerkdienste (Xinetd)
294
Neben der einfachen und schnellen Konfiguration von Samba bietet SWAT auch zusätzliche Kontrollmöglichkeiten. Über einen Browser (z.B. den Konqueror) wird als Adresse angegeben: http://localhost:901
11.8 Samba – die Brücke zwischen Betriebssystemen
Bild 11-17: Aktivieren von SWAT (Samba Webbased Administration Tool)
SWAT läuft unter der Portnummer 901 (siehe Ausschnitt /etc/services, Seite 344).
Wenn unsere Netzgrundkonfiguration in Ordnung war, sollten wir die Aufforderung erhalten, uns anzumelden. Hierbei sind Benutzername root und das Passwort einzugeben:
In früheren Versionen kam es manchmal vor, dass dieses Fenster hinter einem anderen geöffneten Fenster versteckt war. Ohne die Anmeldung als root erhalten Sie einen Authentifizierungsfehler und SWAT kann nicht gestartet werden. War die Anmeldung erfolgreich, wird man mit einer ausführlichen Dokumentation über Samba Willkommen geheißen. Auf diese englische Dokumentation verweisen auch die zu allen Eingaben angebotenen Hilfefunktionen.21 Doch so tief wollen wir gar nicht einsteigen. Hier kurz die wichtigsten Eintragungen mit ein paar Erläuterungen, die ausreichen, um von 21. Ein gutes Nachschlagewerk in deutsch ist ›Das Samba-Buch‹ [4].
295
Netzwerke unter Linux
einem Windows-Rechner mit gleicher Workgroup (Arbeitsgruppe/Domain siehe weiter unten) auf die freigegebenen Verzeichnisse von Linux zuzugreifen. Eintrag unter SWAT GLOBALS Beginnen wir mit der Konfiguration von Globals. Hier werden die ›Globalen Variablen‹ gesetzt. Sie gelten generell für alle Freigaben, soweit bei den einzelnen ›Shares‹ nichts anderes eingetragen wird. Um eine Verbindung von einem Windows-Rechner zu Linux herzustellen, sind nur wenige Angaben nötig: ❐
die gleiche Workgroup/Arbeitsgruppe wie unter Windows und
❐
der NetBIOS-Name.
Alle anderen Angaben sind per Default so eingestellt, dass im Normalfall bereits eine Verbindung erfolgen kann. Im nachstehenden Bild sehen Sie die wesentlichen Einstellungen unter Globals:
Wichtig. Nach Eintrag der Daten unbedingt hier speichern!
(nur 3.0)
(nur 3.0)
(nur 3.0)
(nur 3.0)
Bild 11-18: Samba-Einstellung Globals
Erläuterungen zu den möglichen Eingaben finden Sie in Tabelle 11-9 auf Seite 303. Wichtige Basisoptionen sind: 296
11.8 Samba – die Brücke zwischen Betriebssystemen
Workgroups Unter Windows/NetBIOS spricht man von Arbeitsgruppen oder Workgroups – sie entsprechen in etwa der Domain unter Linux (s. Seite 269). In unserem Beispiel ist die Domain Wolfinger auch unter den Windows-Rechnern mit Arbeitsgruppe/Workgroup Wolfinger eingetragen. NetBIOS-Name Auch wenn der NetBIOS-Name des Rechners unterschiedlich zu dem TCP / IP-Namen sein kann, sollte man auch hier die gleichen Bezeichnungen verwenden. Wenn ein Rechner unter Windows innerhalb des Active Directory arbeiten soll, muss sein NetBios-Name mit dem DNS-Namen übereinstimmen. Der hier unter Samba angegebene Name wird auf der Windows-Seite in der Netzwerkumgebung angezeigt. Server String Darunter gibt man die Bezeichnung (Kommentar) an, die auf der Windows-Seite in der Netzwerkumgebung als Beschreibung angezeigt werden soll. Interface Wird hier nichts angegeben, wird eth0 angenommen. Als Standardwert wird 127.0.0.1.eth0 (localhost) gesetzt. Dient eine andere Schnittstelle zur Verbindung mit dem Windows-Rechner, muss diese entsprechend eingetragen werden. Security Unter Samba sind verschiedene Sicherheitsstufen einzustellen, mit denen die Freigaben erfolgen können. Sie basieren letztlich auf der Windows-Philosophie. In der Tabelle 11-8 sind die Unterschiede zu den möglichen Einstellungen aufgeführt. Tabelle 11-8: Bedeutung der Security Security
Bedeutung
SHARE
Erst beim Zugriff auf das entsprechende Verzeichnis oder auf den Drucker wird ein Passwort abgefragt. Jeder, der dieses Passwort kennt, hat Zugriff (eher nicht zu empfehlen).
USER
Nur eingetragene Benutzer mit entsprechenden Passwörtern (/etc/passwd, /etc/shadow und /etc/samba/smbpasswd) haben Zugriff auf die Freigaben.
SERVER
Ähnlich wie USER , allerdings erfolgt die Authentifizierung über einen eigenen Rechner. Dieser muss zusätzlich unter password server = Rechnername eingetragen sein.
DOMAIN
Ähnlich wie SERVER . Beim ›password server‹ muss es sich allerdings um einen PDS (Primary Domain Server) handeln und der Samba-Server muss auch dieser Domain angehören.
ADS
Ab Samba 3.0 können hiermit auch Active Directory Server für die Authentifizierung des Benutzerpassworts eingesetzt werden.
In unserem Beispiel nehmen wir USER.
297
Netzwerke unter Linux
Encrypt Passwort Hier wird ›Yes‹ eingetragen. ›No‹ verwendet man nur dann, wenn ältere Windows-Versionen (95 und älter) eingesetzt sind. Da Windows jedoch eine andere Passwortverschlüsselung verwendet als Linux, ist es notwendig, dass die Benutzer und deren Passwörter unter Linux sowohl in der Datei /etc/passwd (Kommando useradd) als auch in /etc/samba/smbpasswd (Kommando smbpasswd) stehen, damit eine Überprüfung erfolgen kann. Das erste Mal muss der Benutzername mit smbpasswd -a Benutzername (-a add) angelegt werden. Hierbei wird nach dem Passwort gefragt, das als Bestätigung nochmals eingegeben werden muss. Für spätere Änderungen des Passworts gibt man das Kommando ohne Option (-a) an. Unter SWAT könnte zwar das Passwort ebenfalls gesetzt werden, doch traten in früheren Versionen hier Fehler auf, deshalb bevorzugen wir die Eingabe über smbpasswd. Windows-Benutzer, die auf Verzeichnisse des Linux-Rechners zugreifen dürfen, müssen also mit gleichem Namen in der /etc/passwd stehen. Achten Sie hierbei auf Groß- und Kleinschreibung. Um die Eintragungen unter Globals zu übernehmen, darf nicht vergessen werden, ›Speichere Einstellungen‹ (Samba 2.x: Commit Changes) im oberen Feld der Anzeige anzuklicken. Eintrag unter SWAT SHARES Einstellungen, die nicht global gelten, sondern nur für bestimmte Freigaben, werden unter Shares eingestellt. Unter Samba ist voreingestellt, dass die Home-Verzeichnisse der eingetragenen Benutzer mit gleichem Namen und gleichem Passwort unter Windows zur Verfügung gestellt werden. Damit können die Benutzer von Windows aus auf ihre Daten unter Linux zugreifen, wenn die Passwörter zusätzlich eingetragen wurden (wie oben beschrieben). Wählen Sie unter Shares Homes aus, können hier noch weitere Einstellungen vorgenommen werden – unter anderem auch, ob das Verzeichnis angezeigt werden soll (browseable yes or no), soweit dies unterschiedlich zu den Global-Einstellungen ist. Unter Sicherheitsoptionen ist bei den Home Directories read only Yes als Standardwert gesetzt. Der Benutzer darf damit keine Dateien löschen oder neu anlegen. Wenn Sie die Schreibberechtigung setzen wollen, ändern Sie hier auf read only No 298
11.8 Samba – die Brücke zwischen Betriebssystemen
Bei Änderungen nicht vergessen!
Bild 11-19: Änderung der Globals-Einstellungen
Im oberen Feld der Anzeige finden Sie ›Erweiterte Ansicht‹ (unter Samba 2.x ›Advanced View‹). Wenn Sie diesen Punkt aktivieren, wird eine Menge von Feineinstellungen aufgezeigt. Hier sei nur auf ›Mask‹ hingewiesen. Mit Mask steuert man, welche Zugriffsrechte neue Dateien oder Verzeichnisse erhalten sollen, wenn Sie über Windows angelegt werden (unter Windows gelten andere Zugriffsmethoden – siehe auch Tabelle 11-9 auf Seite 303). Die Beschreibung der vielen Einstellungsmöglichkeiten würde den Rahmen dieses Buches sprengen. Hier sei auf die ausführliche Online-Dokumentation verwiesen und auf www.samba.org [54] sowie auf das Buch von V. Lendecke [12]. Sollen sich Windows-Anwender nicht an dem Linux-Rechner direkt anmelden dürfen, sondern nur von Windows aus auf die Dateien zugreifen, kann man dies durch Eintragen von /bin/false (statt /bin/bash) in /etc/passwd verhindern. Damit die unter Linux üblichen Dateien und Unterverzeichnisse wie .bashrc und Desktop nicht den Windows-Nutzer irritieren, sollte das Kopieren dieser Dateien aus /etc/skell verhindert werden. YaST bietet in der Benutzerverwaltung entsprechende Optionen an. 299
Netzwerke unter Linux
Alternativ kann man den Benutzer auch einfach manuell anlegen mit: useradd -s /bin/false Benutzername (Siehe hierzu auch ›Neue Benutzer anlegen‹ auf Seite 89. Starten der Daemon-Prozesse unter SWAT STATUS Um smbd und nmbd zu starten, wählen Sie oben in der Navigationsleiste STATUS. Dort lassen sich beide Programme über die Schaltflächen Start smbd und Start nmbd aktivieren.
11.8.4 Zugriff auf den Samba-Rechner von Windows aus Mit den oben beschriebenen sechs Schritten kann bereits von der Windows-Seite auf die Daten unter Linux zugegriffen werden: 1. Eintrag der Workgroup unter Globals 2. Vergabe eines NetBIOS-Namens 3. Zuordnung der Netzwerkkarte (bzw. Kontrolle) 4. Anlegen der Windows-Benutzer unter /etc/passwd und Setzen des Passworts 5. Anlegen der Windows-Benutzer mit smbpasswd -a mit Vergabe des Passworts 6. Starten von smbd und nmbd Auf der Windows-Seite könnte die Anzeige der neuen Netzwerkumgebung mit etwas Zeitverzögerung erfolgen. Mit der Taste lässt sich unter Windows die Netzwerk-Aktualisierung forcieren. Im Explorer unter ›Gesamtes Netzwerk‹ wird in unserem Beispiel die Arbeitsgruppe WOLFINGER mit den beiden Rechnern JOGYLI (dem Linux-Rechner) und TOSHI (dem Windows-Rechner) angezeigt. Unter JOGYLI ist das Home-Verzeichnis des gleichen Benutzers christine als Ordner zu sehen. (Würde der Ordner christine mit Doppelklick geöffnet, sind auch alle Dateien und Unterverzeichnisse sichtbar.) Zusätzlich sind unter dem Rechner JOGYLI alle verfügbaren Drucker ausgewiesen. Außerdem sehen Sie eine weitere Freigabe ›systembuch‹, deren Eintrag anschließend beschrieben wird.
300
11.8 Samba – die Brücke zwischen Betriebssystemen
Bild 11-20: Samba-Freigaben aus der Sicht von Windows
11.8.5 Zusätzliche Freigaben unter SWAT SHARES Im Bild 11-21 ist der Eintrag für die Freigabe ›systembuch‹ über SWAT/Shares dargestellt, eine neuangelegte Freigabe. Um neue Shares anzulegen, wird zuerst der Name der Freigabe (hier ›systembuch‹) eingetragen und dann erst das Feld ›Neu Erstellen‹ angeklickt. Es empfiehlt sich, gleich zu Beginn die Schaltfläche ›Erweiterte Ansicht‹ auszuwählen, da zusätzliche Eintragungen notwendig werden. Sie sehen, dass hier explizit die Benutzer angegeben wurden, denen ein Zugriff auf das Verzeichnis /home/chr/Documents eingeräumt wurde (juergen, carsten, christine). In der erweiterten Ansicht mag die Vielzahl der möglichen Einstellungen erschrecken, doch nur wenige sind für unser Beispiel notwendig. Zu allen Eingabemöglichkeiten kann wiederum über ›Hilfe‹ die entsprechende Stelle in der sehr ausführlichen Online-Dokumentation über Samba nachgelesen werden. In unserem Beispiel haben wir folgende Eintragungen vorgenommen: comment
Einen Kommentar, der unter Windows erscheint (siehe Bild 11-20)
path
Den Pfad des Verzeichnisses (hier: /home/chr/Documents)
write list
Benutzer mit Schreibrechten (hier juergen, carsten, christine)
valid users
Jene Benutzer, die zugelassen werden (hier juergen, carsten, christine)
read only
No bedeutet, dass die Benutzer auch Schreiberlaubnis bekommen, bei yes würden sie nur Leserechte erhalten.
browseable
Yes bedeutet, dass unter Windows unter Netzwerkumgebung die Verzeichnisse mit Unterverzeichnissen angezeigt werden.
Auch hier darf nicht vergessen werden, bei allen Änderungen ›Commit Changes‹ bzw. ›Speichere Änderungen‹ im oberen Teil der Eingabemaske zu aktivieren. Zu beachten ist noch, dass die Namen der Freigaben auf einigen Systemen (z.B. unter Windows98 oder Samba vor Version 3.0) nicht länger als 12 Zeichen sein dürfen. 301
Netzwerke unter Linux
Bild 11-21: Zusätzliche Freigabe unter Shares
Bei den Tests zu diesem Buch wurde z.B. zuvor der Name ›austauschdoku‹ statt ›systembuch‹ eingegeben. Dies hatte zur Folge, dass unter Windows98 die Freigabe nicht angezeigt wurde. Über das Programm testparm, das auf einem Terminal gestartet wurde, kam dann folgender Fehlerhinweis: Jogyli:/etc/samba # testparm Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[users]" Processing section "[pdf]" Processing section "[printers]" Processing section "[print$]" Processing section "[austauschdoku]" Loaded services file OK. WARNING: You have some share names that are longer than 12 characters. These may not be accessible to some older clients. (Eg. Windows9x, WindowsMe, and smbclient prior to Samba 3.0.) Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions
302
Bei der Eingabe über SWAT werden die Daten über HTTP gesendet. Eine Warnung, dass die Daten unverschlüsselt übertragen werden, sollte immer zur Kontrolle anre-
11.8 Samba – die Brücke zwischen Betriebssystemen
gen, darauf zu achten, dass die Verbindung nur innerhalb des LANs erfolgt. SWAT (genauso wie andere Tools ohne Verschlüsselung) sollten nur in sicherer Umgebung oder über ein verschlüsseltes VPN eingesetzt werden. Hier ließe sich auch eine Übertragung über ssh tunneln (s. Seite 278).
11.8.6 Kontrolle über SWAT VIEW Unter View lässt sich kontrollieren, wie die aktuelle Konfiguration aussieht. Dies entspricht der Datei /etc/samba/smb.conf. Tabelle 11-9: Erläuterungen zu /etc/samba/smb.conf Inhalt der Datei
Erläuterung zum Inhalt
# Samba config file created using SWAT Hinweis auf die Änderung durch SWAT # from 127.0.0.1 (127.0.0.1) # und ; sind Kommentarzeichen # Date: 2004/05/24 15:57:21 # Global parameters
Eintragungen gelten für alle Shares
[global] workgroup = WOLFINGER server string = Samba Server interfaces = 127.0.0.1, eth0 bind interfaces only = Yes
map to guest = Bad User local master = no domain master = No ldap suffix = dc=example,dc=com printer admin = @ntadmin, root, administrator netbios name = Jogyli
Arbeitsgruppe unter Windows Beschreibungsfeld unter Windows Entsprechende IP-Adresse und Netzkarte hier interne IP-Adresse von localhost Hier wird festgelegt, dass die Ports für smbd und nmbd (137 und 138) nur über obige Schnittstelle zugeordnet werden Bei falschem Benutzernamen – Anmeldung als Gast (nobody) Hinweis für NetBIOS Hinweis für NetBIOS Hinweis für LDAP Hinweis für die Druckerverwaltung NetBIOS-Name des Rechners
add machine script = domain logons = no preferred master = auto encrypt passwords = yes [homes] comment = Home Directories valid users = %S read only = No browseable = no guest ok = no
Hinweis für NetBIOS Hinweis für NetBIOS ab Windows98 immer encrypt = yes Alle Benutzer unter /home Beschreibungsfeld unter Windows %S = Variable für den aktuellen Service (home des Users) Bedeutet, dass auch das Schreibrecht gesetzt ist Anzeige unter Windows Keine Anmeldung als Gast
303
Netzwerke unter Linux
Tabelle 11-9: Erläuterungen zu /etc/samba/smb.conf (Fortsetzung) Inhalt der Datei printable = no
[users] comment = All users path = /home read only = No inherit permissions = Yes veto files = /aquota.user/groups/ shares/
browseable = yes guest ok = no printable = no [groups] comment = All groups path = /home/groups read only = No inherit permissions = Yes browseable = yes guest ok = no printable = no
Der direkte Ausdruck über den SambaServer (und damit das Anlegen einer Spool-Datei) ist nicht erlaubt Neu ab Samba 3 wenn nicht zusätzlich alle Benutzer unter /home angezeigt werden sollen – Dienst deaktivieren (siehe YaST-Änderung) Übertragen der Rechte auf Unterverzeichnisse Dateien, die nicht angezeigt und bearbeitet werden dürfen. Die Schrägstriche bedeuten hier Separationzeichen. Wildcards wie * oder ? sind erlaubt. /*.tmp/ würde bedeuten, dass alle Dateien, die auf .tmp enden, ›verboten‹ sind. Siehe oben Siehe oben Siehe oben Neu ab Samba 3 Voraussetzung Eintrag der Gruppen unter /home/groups Siehe comment Siehe oben Siehe oben Siehe oben Siehe oben Siehe oben
comment = PDF creator
Erstellen von PDF-Dateien wird ähnlich wie ein Drucker behandelt
path = /var/tmp
Pfad für die neuangelegten Druckdateien
create mask = 0600
Dateien werden angelegt mit den Zugriffsrechten 0600 (rw- --- ---) Siehe oben Kommando zum Ausdruck Variablen siehe Tabelle 11-10
[pdf]
printable = yes print command = /usr/bin/ smbprngenpdf -J '%J' -c %c -s %s -u '%u' -z %z browseable = yes guest ok = no [printers]
304
Erläuterung zum Inhalt
comment = All Printers path = /var/tmp create mask = 0600 printable = yes browseable = no guest ok = no
Siehe oben Siehe oben Alle installierten Drucker werden unter Windows standardmäßig bereitgestellt – automatische Verknüpfung über CUPS. Unter Windows muss der Drucker lediglich eingebunden werden
11.8 Samba – die Brücke zwischen Betriebssystemen
Tabelle 11-9: Erläuterungen zu /etc/samba/smb.conf (Fortsetzung) Inhalt der Datei
Erläuterung zum Inhalt
[print$]
Drucker, die der Gruppe lp angehören, können wie Windows-Drucker direkt benutzt werden Anzeige unter Windows
comment = Printer Drivers ...
Anlegen von Dateien mit Zugriffsrechten 0644 (rw- rw- r--) Anlegen von Verzeichnissen mit Zugriffsrechten 0775 (rwx rwx r-x) Siehe oben Siehe oben Siehe oben
create mask = 0664 directory mask = 0775 browseable = yes guest ok = no printable = no [systembuch] comment = Austauschdateien zu Linux-Systemadministration
Zusätzlich eingetragene Freigabe Kommentar Pfad des Verzeichnisses
path = /home/chr/Documents
valid users = juergen, carsten, Trotzdem müssen zu diesen Usern die Einchristine träge in /etc/passwd, /etc/shadow und / write list = juergen,carsten, etc/samba/passwd zur Authentifizierung christine eingetragen sein
Siehe oben Siehe oben Siehe oben Siehe oben
read only = No browseable = yes guest ok = no printable = no
Tabelle 11-10: Einige mögliche Variablen unter Samba Var.
Bedeutung
Var.
Bedeutung
%U
Benutzername des Clients
%J
Jobnummer bei Druckaufträgen
%G
Die Gruppe des Benutzers
%c
Bei Druckaufträgen die Anzahl der Seiten
%h
Hostname des Samba-Servers
%s
Bei Druckaufträgen der Pfad und Name der Spool-Datei
%m
Der NetBIOS-Name des Clients
%u
Benutzername des aktuellen Services
%L
Der NetBIOS-Name des SambaServers
%z
Bei Druckaufträgen die Größe des Druckjobs in Bytes
%T
Aktuelles Datum und Zeit
%p
Bei Druckaufträgen der entsprechende Druckername
305
Netzwerke unter Linux
Wie in der Erläuterung erwähnt, gibt es ab Samba 3.x zusätzlich noch die Shares ›Users‹ und ›Groups‹. Unter diesen Freigaben werden alle Verzeichnisse zur Verfügung gestellt, die unter /home und unter /home/groups eingetragen sind. Dies kann bei bestimmten Anwendungen nützlich sein, für eine normale Anwendung ist dies aber eher nicht gewünscht. Das Deaktivieren dieser Freigaben ist in diesem Fall schneller über YaST R Netzwerkdienste R Samba-Server zu erreichen (siehe Bild 11-24). SWAT und YaST behindern sich nicht, da sie auf dieselbe zentrale Konfigurationsdatei /etc/ samba/smb.conf zurückgreifen (es sei denn, sie bearbeiten die Datei zur selben Zeit mit beiden Programmen).
11.8.7 Kontrolle und Steuerung über SWAT STATUS Unter SWAT können die beiden Hauptprogramme smbd und nmbd unter ›Status‹ gestartet und gestoppt werden.
Im unteren Feld lässt sich kontrollieren, wer zur Zeit Verbindung mit dem Server hat. Per Anklicken in der Spalte ›Kill‹ können die Verbindungen sofort beendet werden (siehe Bild 11-22).
Bild 11-22: Kontrolle über SWAT/Status
306
11.8 Samba – die Brücke zwischen Betriebssystemen
Damit Samba beim Booten des Rechners gleich gestartet wird, müssen noch im Runlevel-Editor die Dienste smb und nmb aktiviert werden. Bild 11-23 zeigt einen zusammengesetzten Ausschnitt, der dies verdeutlicht:
Bild 11-23: Aktivieren der Dienste nmb und smb
11.8.8 Hinweise zur Version Samba 3.x Folgende Verbesserungen sind in Samba 3.x gegenüber Samba 2.x enthalten (siehe auch unter SUSE-Hilfe Samba Version 3): ❐
Active Directory Support – das bedeutet, dass nun Windows XP und Windows 2000 noch besser integriert werden können.
❐
Unicode Support wurde stark verbessert. Die manchmal aufgetretenen Schwierigkeiten bei Umlauten in Dateinamen dürften damit behoben sein.
❐
Die internen Authentifizierungsmechanismen wurden komplett überarbeitet (unter anderem möglicher Einsatz von Kerberos).
❐
Verbesserte Unterstützung für das Windows2000/XP-Drucksystem.
❐
Konfiguration als Mitgliedsserver in Active-Directory-Domäne.
11.8.9 Konfiguration von Samba über YaST Wie schon erwähnt, können ab SUSE 9.1 die wesentlichen Änderungen für Samba auch über YaST durchgeführt werden. Im Bild 11-24 sehen Sie die Anzeigen, die Sie unter YaST R Netzwerkdienste R Samba-Server erhalten. Wenn users, wie im Bild, markiert ist, kann über ›Status wechseln‹ der Dienst deaktiviert werden. In /etc/samba/smb.conf werden die entsprechenden Zeilen mit zwei Semikolons ;; zu Beginn der Zeile herauskommentiert.
307
Netzwerke unter Linux
Bild 11-24: Konfiguration von Samba über YaST
308
11.8 Samba – die Brücke zwischen Betriebssystemen
11.8.10 Nutzen des SMB-Clients Um den Samba-Client zu nutzen, mit dem auf Windows-Freigaben von einem Linux-Rechner zugegriffen werden kann, muss lediglich die Arbeitsgruppe eingegeben werden. Unter YaST lässt sich dies sehr einfach durchführen: YaST R Netzwerkdienst R Samba-Client
Bild 11-25: Samba-Client: Zuordnung der Arbeitsgruppe
Im Konqueror können Sie nun die unter Windows freigegebenen Verzeichnisse unter der Adresse smb://NetBIOS-Rechnername/Freigabe aufrufen.
Bild 11-26: Konqueror mit smb-Zugriff
Ab SUSE 9.1 lassen sich Netzwerkdienste auf dem Desktop über das spezielle Icon ›Netzwerk-Browser‹ starten:
Bild 11-27: Netzwerk-Browser ab SUSE 9.1
309
Netzwerke unter Linux
11.8.11 Das Wichtigste über Samba zusammengefasst Samba-Server Mit dem Samba-Server können Verzeichnisse und Drucker von Linux-Rechnern über NetBIOS/CIFS in der gleichen Arbeitsgruppe unter Windows genutzt werden. Zusätzlich kann ein Samba-Server für Windows als Backup Domain Controller oder als Primary Domain Controller fungieren. Voraussetzung, um von Windows auf Linux-Dateien und Drucker zuzugreifen, ist ein funktionierendes Netz, gleiches Subnetz und gleiche Arbeitsgruppe. Bei mehreren Subnetzen können mehrere Samba-Server eingerichtet werden. Zur Installation: Samba ist nicht in der Standardinstallation enthalten und muss nachinstalliert werden. Die wichtigsten Einstellungen für Samba können ab SUSE 9.1 auch über YaST eingetragen werden, ansonsten geschieht dies mit SWAT, das über einen Browser mit ausführlicher Hilfe die Arbeit erleichtert. Um SWAT zu nutzen, muss es im Runlevel-Editor Xinit.d aktiviert werden. Experten können die Samba-Konfigurationsdatei /etc/samba/smb.conf auch direkt editieren. Hier empfiehlt es sich, nach dem Editieren mit dem Programm testparm die Eingaben zu überprüfen. Die Eingaben sind unterteilt nach Globals (Eintragungen gelten global für alle Freigaben) und Shares (Eingaben gelten nur für die betreffende Freigabe). Die zentrale Konfigurationsdatei ist /etc/samba/smb.conf. Unter Globals muss die Arbeitsgruppe (workgroup), die nicht der Linux-Domain entsprechen muss, und der NetBIOS-Name des Rechners (Samba-Server) eingetragen werden. Als Voreinstellung ist unter Shares bereits eingerichtet, dass alle Home-Verzeichnisse der Linux-Anwender und Windows-Benutzer mit gleichem Namen und Passwort in der Windows-Umgebung zur Verfügung stehen (dort unter Netzwerkumgebung). Security = User ist die empfohlene und standardmäßige Einstellung. Nur wenn auf Windows-Seite für die Authentifizierung ein eigener Server eingesetzt wird, ist hier, je nach Art des Servers, Server, Domain oder bei Active Directory ADS einzusetzen. Damit haben Benutzer von Windows aus Zugang zu Home-Verzeichnissen unter Linux. Um eine Passwortkontrolle durchzuführen, muss unter Linux sowohl der Name in /etc/samba/smbpasswd mit einem Passwort eingetragen sein als auch in /etc/passwd mit gleichem Namen und dem entsprechenden Home-Verzeichnis existieren. Die Kommandos hierfür sind useradd (siehe Seite 91) und smbpasswd -a Benutzer für Samba. Bei Security = Share wäre die Passwortkontrolle nur auf das Verzeichnis bezogen, dies bedeutet, dass alle Benutzer, die dieses Passwort kennen, Zugriff auf die Freigabe haben. Allerdings muss auch unter Shares ein fingierter Benutzer zugewiesen werden, damit die Passwortkontrolle (smbpasswd) durchgeführt werden kann. 310
Ab Samba 3.x sind zusätzlich unter ›Users‹ alle Verzeichnisse von /home ange-
11.9 Kommunikation mit Apple Mac OS
zeigt. Wenn dies nicht gewünscht wird, ist es am einfachsten, diesen Dienst über YaST R Netzwerkdienste R Samba-Server zu deaktivieren (unter ›Erweitert R Shares‹). Zusätzlich können einzelne Verzeichnisse auch anderen Benutzern der gleichen Arbeitsgruppe freigeschaltet werden (unter SWAT R Shares R Neu Erstellen entsprechenden Pfad angeben und Benutzernamen eintragen). Die Hauptprogramme von Samba, smbd und nmbd, müssen gestartet sein (entweder über SWAT Status aktivieren oder generell beim Booten, dann müssen die Dienste smb und nmb über den Runlevel-Editor aktiviert sein). Samba Client Auch hier muss einmalig die Arbeitsgruppe zugewiesen werden (YaST R Netzwerkdienste R Samba-Client). Über das Kommando smbclient kann dann ein Datenaustausch erfolgen, bzw. die freigegebenen Verzeichnisse unter Windows können im Konqueror mit smb://Rechnername angezeigt werden. Zusätzlich ist über mount bzw. /etc/fstab ein permanentes Einbinden der Windows-Freigaben möglich.
11.9 Kommunikation mit Apple Mac OS Für den Datenaustausch und den Dateizugriff mit Apple Mac OS gibt es gleich mehrere Verfahren. Dabei ist zu unterscheiden, ob mit dem älteren Mac OS 9.x (Mac Classic) oder mit dem aktuellen Mac OS X kommuniziert werden soll: ❐
Mac OS X ist ein modernes, recht funktionales Unix-System (aufbauend auf Darwin bzw. FreeBSD 5). Es stellt fast alle von Linux unterstützten Kommunikationsverfahren zur Verfügung. Dazu gehören NFS, SMB/CIFS, HTTP und AFS/ AFP (Apple-File-Sharing) für den direkten Dateizugriff (Netzwerk-Dateisystem) sowie ssh, ftp, sftp, rsync und unison.22 Auch Zugriff über WebDAV23 (in beiden Richtungen) ist möglich – bei richtig aufgesetztem Apache-Server24. Man hat hier also (fast) die freie Wahl zwischen den Verfahren.
❐
Für Mac OS 9.x (Classic) gibt es folgende Verfahren: ftp, ssh, WebDAV mit einigen Einschränkungen und AppleShare. Für den SMB-Zugriff muss auf dem Mac eine kommerzielle Software wie etwa Dave [30] gefahren werden.
❐
Zusätzlich lassen sich durch die Aktivierung von AppleTalk auf der Linux-Seite sowohl auf dem neueren Mac OS X als auch auf älteren Mac OS Netzwerkver-
22. rsync und unison muss man dort über das Fink-Paket installieren. Siehe dazu [34]. 23. Die Abkürzung DAV steht für Distributed Authoring and Versioning. WebDAV ist ein Protokoll zum Verwalten von Dateien auf einem Webserver. 24. Der Apache-Server ist ein sehr mächtiger Webserver. Das Einrichten und Arbeiten mit Webservern wird in diesem Buch nicht behandelt.
311
Netzwerke unter Linux
bindungen von Apple zu Linux herstellen. Für eine schnelle Konfiguration sind hier nur zwei Schritte nötig: 1. Atalk im Runlevel-Editor aktivieren. Falls es nicht installiert sein sollte, werden Sie dazu aufgefordert, die entsprechende CD/DVD einzulegen und es wird nachinstalliert. 2. In der Datei /etc/netatalk/atalkd.conf das Kommentarzeichen in der Zeile für die Schnittstelle löschen: # eth0 -phase 2 -net 0-65534 -addr 65280.175
Damit können Sie bereits vom Mac auf Linux zugreifen, wenn Sie sich mit dem gültigen Benutzernamen und Passwort bei der Verbindung anmelden. Sollten Sie eine andere Schnittstelle als eth0 zur Verbindung an den Macintosh nutzen, müssten Sie obige Zeile entsprechend anpassen. Auf der Macintosh-Seite erfolgt der Zugriff auf freigegebene Verzeichnisse eines Linux-Systems über den Finder und dort unter der Menüfolge Gehe zu R Mit Server verbinden. Über die Schaltfläche ›Verbinden‹ wird ein Anmeldefenster geöffnet. In unserem Beispiel ist der Benutzer carsten auf dem Rechner Jogyli registriert, und mit dem richtigen Passwort wird sein Verzeichnis ähnlich eines eigenen Dateiträgers angezeigt. Durch Doppelklick wird die Ansicht seines Home-Verzeichnisses dargestellt (ähnlich wie beim Konqueror). Die Unterverzeichnisse dürfen nun je nach gesetzten Berechtigungen unter Linux eingesehen und bearbeitet werden.
Bild 11-28: Zugriff von Macintosh auf Linux-Verzeichnisse
312
11.9 Kommunikation mit Apple Mac OS
Soll Linux als AppleShare-Server (über TCP / IP) fungieren, so lässt sich dies hiermit realisieren. Die angebotenen (Apple-)Dienste (File-Sharing, Drucker, …) auf dem Linux-Server werden in der Konfigurationsdatei /etc/netatalk/netatalk.conf definiert und aktiviert. Die Konfiguration des AppleShare-Servers afpd erfolgt in der Datei /etc/netatalk/afpd.conf. In /etc/netatalk/AppleVolumes.default lassen sich weitere Verzeichnisse und die Zugriffsrechte angeben.
11.9.1 Zugriffe auf freigegebene Linux-Verzeichnisse Wir beschränken uns hier auf die Beschreibung für das aktuellere Mac OS X-System. Wie im obigen Fall wird die Verbindung über Gehe zu R Mit Server verbinden aufgerufen. Hier gibt man – fast analog zum Konqueror – an, mit welchem Protokoll und mit welchem Rechner und Verzeichnis man zu einem Server verbinden möchte. Über den Knopf lässt sich diese Einstellung in die Liste der Bevorzugten Server übernehmen, so dass man künftig nur noch auf den entsprechenden Eintrag in der Liste klickt. Mit ›Verbinden‹ baut der Finder die Verbindung auf – eventuell nach Abfrage von Login-Name und Passwort. Der Login-Name kann dabei auch in der Adress-Spezifikation gleich in folgender Form mitgegeben werden: protokoll://benutzer@hostadresse/verzeichnis Als Protokolle werden bisher HTTP, FTP, SFTP, SMB, NFS und AFS (Apple File Sharing) unterstützt. Das Passwort kann beim Verbindungsdialog in den Mac-Schlüsselbund25 übernommen werden, so dass bei erneutem Verbindungsaufbau das Passwort nicht wiederholt eingegeben werden muss. Auch ist ein Einhängen des freigegebenen Linux-Verzeichnisses per mount möglich, wobei etwas auf die Unterschiede bei den mount-Optionen zu achten ist. Für den Zugriff vom Mac aus am Beispiel des SMB/CIFS-Protokolls muss auf dem Linux-System ein freigegebenes SMB-Verzeichnis vorhanden sein und der SambaSMB-Server laufen. Zusätzlich müssen entsprechende Zugriffsrechte für den MacBenutzer auf dem Linux-System existieren – z.B. per Eintrag in der SambaPasswortdatei (siehe Seite 298). Entsprechendes gilt für die weiteren Dienste wie etwa NFS, FTP oder HTTP.
25. Mac-Schlüsselbund ist ein Programm, das die verschiedenen Passwörter für den Benutzer hinterlegt.
313
Netzwerke unter Linux
11.9.2 Von Linux zu Mac OS X-Systemen Für die verschiedenen Freigaben und Dienste sind unter Mac OS X zuerst die entsprechenden Services zu aktivieren: Systemeinstellungen
R
AppleSharing-Freigabe SMB-Service Apache HTTP-Server ssh-Server (S)FTP-Server CUPS-Server-Freigabe Bild 11-29: Dienste-Steuerung unter Mac OS X
Zunächst sind unter Mac OS X nach dem Aktivieren des entsprechenden Dienstes jeweils nur die Dateien im privaten Verzeichnis ›Öffentlich‹ des entsprechenden Benutzers freigegeben. Dateien, die der Mac-Nutzer in den gemeinsamen Ordner ›Für alle Benutzer‹ im Ordner Benutzer (oder Users) der Systemplatte ablegt, stehen allen Benutzern (auf dem Mac und über Netz bei Aktivierung des AppleShare-Dienstes) zur Verfügung. Bei NFS müssen die Verzeichnisse explizit freigegeben werden. Weitergehende Freigaben (auf dem Mac) sind zwar mit Shell-Kommandos und weiteren Einstellungen auch möglich, komfortabler setzt man dazu aber die Verwaltungskomponente SharePoints ein.26 SharePoints erlaubt sehr einfach auch die Einrichtung weiterer Benutzer und Benutzergruppen für den Remote-Zugriff. Verzeichnisse können dabei sowohl für den SMB-Zugriff wie auch für den AFS-Zugriff (Apple File Sharing) freigegeben werden. Wie auf der Linux-Seite können einzelne Verzeichnisse auch über mehrere Dienste freigegeben werden. Ein Dateizugriff von Linux zum Mac ist z.B. aus dem Konqueror heraus möglich (siehe Tabelle 11-11).
314
26. Zu SharePoints siehe www.hornware.com/sharepoints/.
11.9 Kommunikation mit Apple Mac OS
Bild 11-30: Verzeichnisfreigabe per SharePoints unter Mac OS X
Tabelle 11-11: Dateizugriff von Linux zum Mac im Linux Konqueror
unter Mac OS X aktiviert
smb://macintosh-adresse/mac-verzeichnis
Windows-Sharing
sftp://macintosh-adresse/mac-verzeichnis
FTP-Sharing
ftp://macintosh-adresse/mac-verzeichnis
FTP-Sharing
http://macintosh-adresse/…
Web-Sharing
nfs://macintosh-adresse/mac-verzeichnis
NFS-Server aktiviert
Auch müssen für den Zugriff natürlich die entsprechenden Clients und Pakete (etwa Samba/SMB, HTTP usw.) installiert sein. Man kann das freigegebene Macintosh-Verzeichnis (bei SMB- und NFS-Freigaben auf dem Mac) unter Linux ebenso per mount einhängen, wie in folgendem Beispiel gezeigt: mount -t smbfs -o username=carsten,password=xxx //macy/Doku /mnt/macy
Das Kommando hängt das vom Rechner Macy (unter Mac OS X) freigegebene Verzeichnis Doku im lokalen Linux-Mountpoint /mnt/macy ein. Die Anmeldung zum Dateizugriff (beim Mac-System) erfolgt unter dem Benutzer carsten und mit dessen Passwort auf dem Macintosh-System. Auch über /etc/fstab kann beim Hochfahren des Rechners das Mac-Verzeichnis mit eingebunden werden (für Details verweisen wir auf die Manualseiten von fstab und mount). Mac OS X setzt (ab Version 10.2x) den CUPS-Print-Server ein. Damit wird bei entsprechender Freigabe auf dem Mac (siehe Abbildung 11-29, Punkt ›Printer Sharing‹) die Nutzung eines am Mac verfügbaren Druckers von Linux problemlos möglich. Im einfachsten Fall muss das Linux-System dazu lediglich einen CUPSClient besitzen. Auch umgekehrt kann Mac OS X den CUPS-Print-Server auf einem Linux-System ansprechen. 315
Netzwerke unter Linux
11.10
Der Weg zur weiten Welt übers Internet
Es gibt mehrere Wege von einem Linux-Arbeitsplatz ins Internet. Einmal korrekt eingerichtet, sind sie weitgehend transparent für den Benutzer. Aus Administrationssicht gibt es prinzipiell drei Verfahren: 1. Das lokale System hat ein eigenes Modem, welches über einen ISP (Internet Service Provider) Zugang zum Internet ermöglicht. Das Modem kann ein Analog-Modem, ein ISDN-Modem oder ein Kabel- oder DSL-Modem sein. In diesem Fall ist das Modem lokal zu installieren und zu konfigurieren und das Einwahlverfahren festzulegen. Das lokale Linux-System kann auch anderen Systemen im LAN als Internetzugang dienen, wenn es über einen zusätzlichen LAN-Anschluss verfügt und entsprechend als Gateway konfiguriert ist. Bei dieser Konfiguration sollte das lokale System eine Firewall besitzen, die unerwünschte Zugriffe aus dem Internet zum lokalen PC bzw. Netz und ebenso vom lokalen PC oder Netz auf das Internet blockiert. Die Verbindung zum Internet kann entweder permanent bestehen, was bei Firmen und größeren Installationen zumeist der Fall ist, oder nur temporär. Im letzteren Fall baut man die Verbindung nur bei Bedarf auf. Nach einer voreingestellten Zeit der Inaktivität wird sie automatisch wieder beendet. 2. Das Linux-System hängt – eventuell zusammen mit anderen Systemen – in einem lokalen Netz, in dem ein anderer Rechner oder eigenständiger Router als Gateway den Zugang zum Internet herstellt. In diesem Fall muss man dem lokalen System lediglich die IP-Adresse des Gateways mitteilen. Das Gateway-System benötigt hier zumindest zwei Netzwerkanschlüsse: – einen zum Internet bzw. ISP hin und – einen zum lokalen Netz (in aller Regel ein Ethernet-Interface). Dieses System – es kann ein anderes Linux-System, ein Unix-System, ein Windows-System oder ein eigenständiger Router (wie unter 3 beschrieben) sein – sollte eine aktivierte Firewall besitzen und damit alle Systeme im Netz gegen Angriffe bzw. unzulässige Zugriffe aus dem Internet schützen. 3. Das Linux-System hängt an einem LAN, in dem ein eigenständiger Router (z.B. von Netgear) den Zugang zum Internet schafft. Wie in Variante 2 wird hier dem lokalen System lediglich dessen Adresse als Internet-Gateway (z.B. über YaST R Netzwerkgeräte) mitgeteilt. Dieses Verfahren bietet sich für kleine Firmennetze an oder wenn man mehreren lokalen PCs Zugang zum Internet geben möchte.
316
Der Preis solcher kleiner Router liegt inzwischen unter 100 Euro. Oft haben sie zusätzlich einen integrierten Switch mit 4–8 Eingängen. Möchte man mehr Systeme im LAN anbinden, kaskadiert man diese mit weiteren Switches. Für wenig Geld mehr enthält der Router auch noch ein WLAN-Gateway (Access Point) für eine LAN- und Internetverbindung per Funk (Wireless LAN). Zum ISP
11.11 Konfigurieren eines Analog- oder ISDN-Modems
hin verfügen sie entweder über eine Ethernet-Verbindung für einen Kabeloder DSL-Anschluss oder ein integriertes ISDN- oder Analog-Modem. Die Router in Punkt 2 und 3 arbeiten zusätzlich als NAT (Network Address Translation). Nach außen zum Internet hin sieht es dann so aus, als sei lediglich ein System am Netz. In Wirklichkeit können sich dahinter zahlreiche unterschiedliche Systeme verbergen. Welches der Verfahren das beste für Sie ist, wird bestimmt durch die Topologie Ihres Netzes, den Bandbreitenbedarf und den Komfort, den Sie haben möchten.
11.11 Konfigurieren eines Analog- oder ISDN-Modems Viele der Modems werden schon bei der Installation automatisch erkannt. In einem solchen Fall erhalten Sie, wie im Bild 11-31, die Anzeige der zugewiesenen Karte. ›Konfigurieren‹ 1 ist dann nicht nötig. Allerdings ist hierbei noch keine Konfiguration der Schnittstelle (ippp0) vorhanden. Über Ändern 2 geben Sie hierzu weitere Informationen an. Sollte die Karte nicht erkannt werden, so muss vorab der Hersteller zugewiesen werden ➂. In diesem Fall wählen Sie über Konfigurieren die ISDN-Karte, wie es im nachfolgenden Beispiel Schritt für Schritt aufgezeigt wird: YaST R Netzwerkgeräte R ISDN:
➊ ➋ ➌
Bild 11-31: Konfiguration ISDN-Karte
317
Netzwerke unter Linux
In der Regel müssen Sie bei der Konfiguration der Karte selbst keine weiteren Eingaben machen (siehe ➃ Bild 11-32). Hier werden die Grundinformationen einer ISDNKarte angezeigt. ➍
Bild 11-32: Konfiguration ISDN-Karte für contr0
Die spezifischen Angaben zum Provider werden unter ›Ändern‹ 2 (Bild 11-31) vorgenommen. Sie erhalten eine Aufforderung, den ISDN-Service auszuwählen (➄ in nebenstehendem Bild). SyncPPP als Schnittstelle ist der Standard. Nach der Auswahl werden die Standardeinstellungen der ISDN-Schnittstelle, hier ippp0, angezeigt. Wie Sie im nebenstehenden Bild sehen, wird bei SUSE der Neustart der Firewall als Standard eingestellt ➅. Dies sollte auch so übernommen werden, um die unter Linux angebotene Sicherheit zu nutzen. Es handelt sich hierbei um eine Personal Firewall, die den Rechner vor fremdem Zugriff schützt. Auf Seite 331 zeigen wir, wie Sie stattdessen die SUSE-Firewall2 einrichten können, die auch individuelle Anpassungen erlaubt. 318
➎
➏
Der Startmodus sollte ebenfalls auf OnBoot bleiben. Andernfalls müssten Sie den ISDN-Treiber manuell als root starten (rcisdn start). Die Einstellung ChargeHup
11.11 Konfigurieren eines Analog- oder ISDN-Modems
muss entsprechend von Ihrem Provider auch angeboten werden. Hiermit kann eine bestehende Verbindung jeweils vor der nächsten zu zahlenden Gebühreneinheit automatisch beendet werden. Falls Ihr Gerät und Ihr Provider Kanalbündelung (multilink) zulässt, können Sie es hier aktivieren (meist sind damit doppelte Telefonkosten verbunden). Wichtig ist, dass Sie auch bei späteren Änderungen grundsätzlich erst die Schnittstelle bearbeiten und mit ›Weiter‹ zu dem nachfolgenden Eingabedialog der Provider-Daten gehen. Leider war bei der Version 9.1 in YaST hier ein Fehler enthalten. Um diesen zu vermeiden, ist es wichtig, zuerst die Schnittstelle zu bearbeiten, auch wenn dort nichts geändert werden soll. Dann erst geben Sie die Daten für den Provider ein. Wenn Sie diese Vorgehensweise nicht beachten, kann die Konfigurationsdatei fehlerhaft zurückgeschrieben werden27. In unserem Beispiel geht es weiter zu den Provider-Einstellungen. Hier wird zuerst abgefragt, ob Sie eine eigene offizielle IP-Adresse haben, oder, wie es in den meisten Fällen für Heimanwender und mittlere Betriebe der Fall ist, diese dynamisch von Ihrem Provider zugeteilt bekommen (siehe ➆ in Bild 11-33). Wenn Ihr Provider nicht unter der Auswahlliste zu finden ist, wie in unserem Beispiel der Provider ›1und1‹, dann geben Sie über ›Neu‹ (siehe ➇ im Bild 11-33) die Daten selbst ein. Diese Angaben sind bei allen Modems etwa die gleichen (siehe ➈ im Bild 11-33). Sie erhalten diese Angaben von Ihrem Provider: ❐ ❐
❐ ❐
Name des Providers (diese Angabe ist nur für die Unterscheidung bei mehreren Providern notwendig, die Schreibweise bleibt Ihnen überlassen). Die Telefonnummer Ihres Providers. Beachten Sie, dass Provider für Analog und ISDN unterschiedliche Telefonnummern vergeben. Die Nummern dürfen keine Leerzeichen oder sonstige Trennungszeichen enthalten. Der Benutzername, so wie Sie ihn von Ihrem Provider mitgeteilt bekommen haben. Das Passwort, das Ihnen auch über den Provider mitgeteilt wird.
Damit ist die Konfiguration der ISDN-Karte abgeschlossen. Über ›Beenden‹ werden die nötigen Konfigurationsdateien erstellt, die Treiber geladen und die Netzwerkdienste eingerichtet und gestartet (siehe Bild 11-34). Für den Anschluss an eine Telefonanlage finden Sie im Benutzerhandbuch bzw. der Online-Dokumentation entsprechende Hinweise.
27. Bei fehlerhafter Konfiguration lassen sich keine ISDN-Verbindungen aufbauen und u.U. blockiert das System mit Fehlerhinweis beim Herunterladen. In solch einem Fall konnte durch Löschen der Datei /etc/sysconfig/network/ifcfg-ippp0 (bzw. zur Sicherheit Verschieben nach /tmp – Umbenennen hilft nicht) und nochmaliger Installierung (zuerst die Schnittstelle, dann der Provider) der Fehler behoben werden.
319
Netzwerke unter Linux
➐
➑
➒
222322
Bild 11-33: Notwendige Eintragungen für den Provider
320
11.11 Konfigurieren eines Analog- oder ISDN-Modems
Bild 11-34: Abschluss der ISDN-Konfiguration
Wenn alle Einstellungen fehlerfrei waren, dürften Sie nun in der Statuszeile einen Stecker als Symbol für ›Kinternet‹ sehen. Wenn Sie ihn anklicken, wird als Defaulteinstellung ›Einwählen‹ aktiviert. Bei einer zustandegekommenen Verbindung ändert sich das Symbol in zwei miteinander verbundene Stecker. Damit ist der Weg frei ins Internet – und dies verhältnismäßig sicher, da bei SUSE die Personal Firewall per Default installiert ist. Doch ganz sicher darf man hier nie sein (mehr darüber auf Seite 335). Sollten Sie dagegen eine Fehlermeldung erhalten, wie sie rechts zu sehen ist, dann dürfte es sich um einen Fehler bei der Installation handeln, denn laut den Abschlussarbeiten sollten sowohl smpppd als auch kinternet gestartet sein (siehe Bild 11-34). Auch sind die Benutzer ohne zusätzliche Gruppenauswahl standardmäßig in der Gruppe ›dialout‹. Ein ISDN-Modem über USB wurde bei unseren Tests nicht immer richtig erkannt. Bei ISDN-Karten sind dagegen unsere verschiedenen Testinstallationen einwandfrei gelaufen. Treten Probleme bei der Erkennung eines analogen Modems auf, kann es sich eventuell um ein Winmodem handeln, siehe hierzu Seite 59. Die Konfiguration von Analog- und DSL-Modems ist ähnlich. Im SUSE-Benutzerhandbuch und der Online-Dokumentation finden Sie hierzu detaillierte Beschreibungen. 321
Netzwerke unter Linux
11.12 Einrichten der KMail als Mail-Client Der Ablauf zum Einrichten von Mail-Programmen ist im Grunde bei den unterschiedlichen Mail-Programmen ähnlich und meist selbsterklärend. Als Beispiel werden wir anhand der KMail die wesentlichen Schritte zeigen, die notwendig sind, E-Mails zu versenden und zu bekommen. Rufen Sie :KMail auf, erhalten Sie ein Archiv, eingeteilt in die auch von anderen Mail-Programmen schon bekannten Fächer (Posteingang, Postausgang, Versandte Nachrichten). Für die Ablage kann man später noch zusätzliche Ordner einrichten. Falls nichts anderes eingegeben wird, werden die Daten unter dem Home-Verzeichnis des Benutzers im Ordner Mail gespeichert. Alle Fächer sind noch leer (dies wird sich wahrscheinlich bald ändern, sobald Sie Ihre E-Mail eingerichtet haben).
Bild 11-35: KMail – Startbildschirm
Geben Sie zum Einrichten der K-Mail folgende Menüfolge ein: Einstellungen R KMail einrichten
322
Bild 11-36: Einrichten der KMail
11.12 Einrichten der KMail als Mail-Client
Für die Verbindung ins Internet sind Eingaben unter Identitäten und Netzwerk notwendig. Nachstehende Aufstellung zeigt, wo welche Einstellung vorgenommen wird bzw. welche Unterpunkte vorhanden sind: Identitäten
Allgemein, Erweitert, Signatur Name, E-Mail-Adresse, Antwortadresse, Wörterbuch und Angabe der Datei für die Signatur
Netzwerk
Versand: Eingabemaske für SMTP laut Angaben des Providers, Sicherheit und Anmeldeart (z.B. Login) Empfang: Eingabemaske für POP/IMAP laut Angaben des Providers, zusätzlich noch Verschlüsselungsart und Anmeldemethode
Erscheinungsbild
Hier können Schriften, Farben, Layout etc. zugeordnet werden.
Nachrichten erstellen Allgemein (Zeilenlänge etc.), Redewendungen, Begriff, Zeichensatz, Vorspann, Anhänge Sicherheit
Allgemein (HTML), OpenPGP, Krypto-Module
Diverses
Ordner, Arbeitsgruppen
Für alle Eingaben gibt es sehr ausführliche Erläuterungen unter Hilfe. Wir zeigen hier am Beispiel der E-Mail von Christine Wolfinger (natürlich mit abgeänderten Daten) die wichtigsten Einstellungen:
Bild 11-37: KMail: Identität
323
Netzwerke unter Linux
Für die Signatur wird lediglich der Verweis auf eine Datei eingetragen (.signature). Über ›Datei bearbeiten‹ kann der gewünschte Text über KWrite für die Signatur eingegeben werden (als Beispiel die Datei .signature der Autorin):
Christine Wolfinger Fachautorin
Ortlindestr. 6 81927 München
Telefon +49 89 914872 Mobil +49 172 8668806 Web www.ChristineWolfinger.de Schulungen, Projektarbeit, Programmierung und Beratung rund um Unix/Linux (u.a. Einführung, Systemverwaltung, Netzwerk, Programmierung und Office-Anwendungen)
Unter dem Menü Netzwerk R Versandart wurde eingetragen:
222 222
Bild 11-38: KMail: Versandart SMTP
Um E-Mails zu empfangen, sind folgende Einstellungen unter ›Netzwerk: Empfang‹ notwendig:
324
11.12 Einrichten der KMail als Mail-Client
222 222
Als Postfachtyp wird in Regel von den Providern POP3 oder IMAP angeboten. Um auch interne Linux-Mail zu erhalten, wird Lokales Postfach mit ausgewählt.
Bild 11-39: KMail: Empfang POP3
Nach der Auswahl wird ein Eingabefenster mit der Unterteilung ›Allgemein‹ und ›Extras‹ geöffnet. Unter ›Allgemein‹ können Sie angeben, ob die eingegangenen E-Mails bei Ihrem Provider nach der Abholung gelöscht werden sollen (siehe Bild 11-39). Zum Thema Sicherheit sei noch erwähnt, dass beim Herunterladen der Mail per Default keine Verschlüsselung erfolgt. Verschlüsselung über SSL oder TLS können Sie unter ›Extras‹ einstellen. Prüfen Sie jedoch vorher im Online-Modus (über die Schaltfläche ›Fähigkeiten des Servers testen‹), ob Ihr Provider diese Möglichkeit einräumt (Einstellungen, die nicht möglich sind, werden dann ausgeblendet). Um auch interne Mails unter Linux in die KMail aufzunehmen, kreuzt man unter Postfach hinzufügen (siehe Bild 11-39) auch ›Lokales Postfach‹ mit an. Sie erhalten dann auch hierfür ein Eingangspostfach (siehe Eintrag von Bild 11-40):
325
Netzwerke unter Linux
Bild 11-40: Lokales Postfach einrichten
11.12.1 Kontakte und Nachrichten aus Outlook übernehmen Häufig möchte man aus anderen bisher genutzten Mail-Programmen Nachrichten und vor allem die Kontakte/Adressen übernehmen. Die meistgenutzten Mail-Programme unter Windows sind sicher Outlook und OutlookExpress. Übernahme von Adressen Unter Outlook können Sie gezielt auswählen, was exportiert werden soll. Wie Sie z.B. Ihre Adressen von Outlook in die KMail übernehmen, zeigen wir schrittweise in Stichpunkten: 1. Outlook unter Windows Datei R Exportieren/Importieren R Exportieren in eine Datei
326
11.12 Einrichten der KMail als Mail-Client
Weitere Auswahl: R Komma getrennt (.csv) R Auswahl Ordner Kontakte Abschließend speichern z.B. über Samba gleich in die Netzwerkumgebung von /home/chr/Kontakte.csv 2. Importieren unter Linux/KMail In KMail das Symbol für Adressbuch anklicken und im Adressbuch das Menü Datei R Importieren R CSV-Liste importieren aufrufen: Je nach Größe der csv-Datei dauert es einige Sekunden, bis Sie ein Dialogfenster erhalten, das entsprechende Einstellungen für das Importieren der Adressen abfragt (siehe Bild 11-41). Alle Spalten (die mit Komma getrennt waren) werden angezeigt, allerdings noch als ›Undefiniert‹. In der zweiten Zeile finden Sie die Überschriften aus Outlook. Nun gilt es nur noch, die Zuweisung der KMail-Spaltenbeschriftung vorzunehmen.
Bild 11-41: Import-Dialogfenster unter KDE-Adressbuch (KMail)
Hierfür wählen Sie den Pfeil in der ersten Zeile je Spalte und weisen die Daten einem adäquaten Namen zu. Nur die zugeordneten Spalten werden übernommen. Sollten Sie häufiger Import aus Outlook (z.B. für andere Benutzer) vornehmen, können Sie diese Zuordnungen auch in einer Datei hinterlegen (›Vorlage speichern‹). Mit ›Vorlage anwenden‹ kann dann beim nächsten Import die doch recht zeitaufwendige Zuordnung der einzelnen Spalten entfallen. Die Vorlagendatei wird im Unterverzeichnis des betreffenden Benutzers mit der Endung .desktop gespeichert: ~/.kde/share/apps/kaddressbook/csv-templates/namedervorlage.desktop.
327
Netzwerke unter Linux
Die wichtigsten Spalten, die Sie unbedingt zuordnen sollten, sind Name, Vorname, E-Mail-Adresse. Wichtig ist, dass Sie unbedingt das Adressbuch speichern. Wenn Sie dann KMail beenden und wieder starten, ist das Adressbuch voll integriert. Schreiben Sie beispielsweise eine neue Nachricht, so werden bereits nach den ersten Buchstaben für den Empfänger, alle zutreffenden Namen aus dem Adressbuch angezeigt und können über die Enter-Taste übernommen werden. Auch Adressdaten aus anderen Programmen lassen sich ähnlich importieren. Aus dem nebenstehenden Bild sehen Sie, für welche Programme Filter vorhanden sind. Übernahme von Nachrichten Für Nachrichten aus Outlook gibt es leider keinen direkten Import. Doch über einen kleinen Umweg lassen sich auch diese übernehmen. Hier die einzelnen Schritte wieder kurz zusammengefasst: Exportieren Sie unter Outlook die gewünschten Nachrichten (Auswahl der entsprechenden Fächer) in eine PST-Datei (Exportieren in Datei R Persönliches Verzeichnis). Diese Datei importieren Sie zunächst unter Windows in Outlook Express und exportieren Sie dort als .dbx-Datei. Daten im .dbx-Format lassen sich unter KMail problemlos importieren. Sie erhalten die bisherigen Ablagefächer als neue Ablage mit den Buchstaben OE (Outlook Express) markiert (siehe Bild 11-42).
328
Bild 11-42: Nachrichten aus Outlook Express importieren
11.13 Wichtige Aspekte zur Sicherheit
11.13 Wichtige Aspekte zur Sicherheit Die IT-Sicherheit betrifft unterschiedliche Bereiche. Einer davon ist die Datensicherung, der wir ein eigenes Kapitel gewidmet haben. Ein anderer ist, wie der Zugriff auf Dateien eingeschränkt werden kann, dies wurde in der Benutzerverwaltung und im Kapitel über Dateisysteme beschrieben. Wie Systemprogramme davor geschützt werden können, dass sie von anderen als vertraulichen Personen und root ausgeführt werden dürfen, steht unter Prozessverwaltung (Stichwort sudo). Die abhörsichere verschlüsselte Übertragung von Daten haben wir unter OpenSSH vorgestellt und dort auch auf die Möglichkeit eines VPN hingewiesen. Die Verschlüsselung von ganzen Datenträgern haben wir gleich zu Beginn bei der Installation auf Seite 34 behandelt. In diesem Abschnitt gehen wir auf Gefahren aus dem Internet ein. Der kurze Abschnitt kann bei diesem komplexen Thema natürlich bei weitem nicht den Anspruch auf Vollständigkeit erheben. Literatur finden Sie unter [3]. Das Thema Sicherheit in der Informationstechnologie wird ausführlich auf den Webseiten vom BSI28 erläutert. Es lohnt sich, dort die Empfehlungen zum Schutz vor Computerviren aus dem Internet zu lesen und zu beachten (zu finden unter www.bsi.de/av/empfehlung.htm). Dort finden Sie auch Querverweise zu den CERTs29, die Datenbanken mit Hinweisen zu allen bekannten Viren etc. geben. Durch den Anschluss an das Internet ist ein System bekanntermaßen potentiell einer Reihe von Risiken ausgesetzt. Dies können Viren, Würmer und andere Tiere wie trojanische Pferde sein, die durch Mail frei Haus geliefert oder in Dateien heruntergeladen werden, ebenso steht das System unter Umständen Angriffen über ungesicherte oder fehlerhaft implementierte Schnittstellen gegenüber. Man sollte sich bewusst sein, dass nahezu jede Art von Datei (z.B. auch eine Audio-, Bild- und Videodatei) dazu missbraucht werden kann, durch Ausnutzen von Fehlern in der zugehörigen Software lokale Daten oder das gesamte System zu schädigen. Selbst wenn unter Linux striktere Zugriffsrechte die Systemdaten schützen, können noch persönliche Daten gestohlen oder zerstört werden – schlimm genug. Striktere Zugriffsrechte helfen auch nicht, wenn durch Softwarefehler Schädlinge in Systemprogrammen (wie etwa Buffer-Overflows) Code als root ausführen oder sich als Root-Kits sogar dauerhaft in den Kernel einnisten. Auch die eben genannten ungesicherten Schnittstellen nach außen bieten einem Angreifer die Möglichkeit, sich unter root festzusetzen.30 In allen Fällen ist der Systemverwalter gefragt, die Risiken zu reduzieren. 28. www.bsi.de. Das BSI (Bundesamt für Sicherheit in der Informationstechnik) versteht sich als Beratungs- und Unterstützungsinstanz für Behörden, Wirtschaft und private Nutzer mit dem Ziel der Förderung der IT-Sicherheit. Diese Zielsetzung ergibt sich aus der gesetzlichen Verpflichtung des BSI. 29. CERTs (Computer Emergency Response Teams) beobachten die Gefahrenlage und informieren (angemeldete) Kunden von neu aufgetretenen Risiken. 30. Da ›gute‹ Root-Kits auf dem eigenen System praktisch nicht mehr zu entdecken sind, hilft es nur, das heruntergefahrene System von einem anderen System aus zu überprüfen (z.B. mit ›chkrootkit‹ unter Knoppix, s. S. 376).
329
Netzwerke unter Linux
Unter Linux richten infizierte Mails noch nicht so oft Schaden an wie unter Windows, da Viren und Würmer meist noch auf Windows angesetzt sind, doch ganz frei von Viren ist auch die Linux-Welt nicht. Sicherheitsvorsorge fängt bei Mails bei der Aufklärung der Benutzer an, wie sie mit Mails und deren Anhängen umgehen sollen, wenn sie den Absender nicht kennen, wenn Mails mit bekanntem Absender, aber möglicherweise gefälschtem Inhalt eintreffen oder wenn sie als ›undelivered mail‹ gekennzeichnet sind. Am sichersten ist es, diese Mails erst nach Rücksprache mit dem Absender zu öffnen bzw. gleich zu löschen. Noch besser ist, sie gar nicht erst vom Provider auf den eigenen Rechner herunterzuladen. Dies bedeutet, dass IMAP anstatt POP3 als Mail-Protokoll eingesetzt werden sollte. Auf keinen Fall sollte man als root E-Mails vom Internet herunterladen! Gegen Schwachstellen in der Software hilft nur, rechtzeitig informiert zu sein und die Fehler sofort zu beseitigen, bevor ein Angreifer sie ausnutzt. Ein Muss ist deshalb das regelmäßige Lesen der CERT-Sicherheitswarnungen, der Hinweise bei Heise Security [26] oder beim Linux-Distributor sowie das Herunterladen/Installieren von Sicherheits-Patches. Bei SUSE findet man diese Sicherheits-Updates unter: YaST → Software → Online-Update Mehr Information zum Herunterladen der Sicherheits-Patches finden Sie in Abschnitt 12.2. Zum Herunterladen benötigt man natürlich einen Internetzugang. Ebenso wie lokale Rechte auf einem Rechner aus Sicherheitsgründen möglichst sparsam vergeben werden, sollten Schnittstellen so konfiguriert sein, dass sie nur den minimal notwendigen Zugang zum Rechner erlauben. Neben den Konfigurationsdateien der einzelnen Dienste gibt es die Dateien hosts.allow und hosts.deny, mit denen Sie bestimmten Rechnern generell Rechte einräumen bzw. bestimmte Rechner generell von bestimmten Diensten ausschließen können. Hierauf gehen wir im nächsten Abschnitt ein. Einer der wichtigsten Punkte zur Absicherung der Schnittstellen zum Internet sind natürlich Firewalls. SUSE Linux installiert per Default eine Personal Firewall. Mehr über Firewalls erfahren Sie im Abschnitt 11.13.2.
11.13.1 Netzwerkdienste – wer hat Zugang?
330
xinetd (extended Internet services daemon, der Nachfolger von inetd) startet Programme, die Netzwerkdienste anbieten. Die Dienste werden durch xinetd erst dann gestartet, wenn eine Verbindungsanforderung zu einem Dienst vorliegt, die Dienste müssen also nicht beim Hochfahren des Rechners bereits mitgestartet werden. xinetd lauscht dazu an den in der Konfigurationsdatei angegebenen Ports. xinetd wertet für die Verbindungsanforderungen die Dateien /etc/ hosts.allow und /etc/hosts.deny aus. Sie legen fest, welche Rechner auf die von xinetd gestarteten Dienste des lokalen Systems zugreifen dürfen. Wenn ein Client über das Netz einen Dienst auf dem lokalen System benutzen möchte, so werden, bevor die Verbindung angenommen wird, die beiden Dateien ausgewertet. Erst
11.13 Wichtige Aspekte zur Sicherheit
danach wird der Netzwerkdienst gestartet bzw. die Verbindung freigegeben. Damit dazu die Dateien nicht ständig erneut geöffnet werden müssen, liest xinetd die Dateien beim Start ein und puffert deren Inhalt. Änderungen werden erst nach einem Neustart oder Reload wirksam, etwa per ›/etc/init.d/xinetd reload‹. Nicht mehr zulässige Dienste werden nach einem Reload beendet. Zur Prüfung wird zunächst host.allow herangezogen. Ist dort ein Dienst explizit freigegeben, so wird die Prüfung positiv abgeschlossen. Sind dort keine Freigaben vorhanden, so wird in host.deny überprüft, ob der Dienst für den anfragenden Host explizit gesperrt ist. Ist dies der Fall, wird die Anfrage abgelehnt. Nicht nur die von xinetd (oder inetd) gestarteten Dienste benutzen die beiden Kontrolldateien, sondern auch intern alle, die die TCP-Wrapper-Bibliothek verwenden. Hierzu gehören z.B. ssh, NFS und bei SUSE der CUPS-Daemon cupsd. Andere Dienste haben eigene Steuerdateien – wie z.B. Samba (/etc/samba/ smb.conf). Die Beschreibung zu den Angaben in host.allow und host.deny liefert ›man 5 hosts_access‹. Eine ganze Reihe von zunächst auskommentierten Anweisungen findet man bei SUSE bereits in der Datei /etc/host.allow. Weitere Informationen gibt es unter ›man xinetd‹, ›man tcpd‹ und www.synack.net/xinetd.
11.13.2 Zum Thema Firewall Um unterschiedliche Programme und Netzwerkdienste ansprechen zu können, die zur gleichen Zeit laufen, verwendet man den Diensten zugeordnete sogenannte Ports, die durch Portnummern identifiziert werden. Hierbei sind die Nummern 0–1023 festen Diensten zugeordnet (bezeichnet als wellknown ports). So sind z.B. die Nummern 80 für HTTP, 25 für SMTP (simple mail transfer protocol) oder 21 für ftp (file transfer protocol) reserviert (siehe auch die Aufstellung wichtiger Ports auf Seite 344). Damit Unbefugte nicht über diese ›Tore‹ in Ihren Rechner eindringen können, kann man Ports ›zusperren‹. Dies ist letztlich das Prinzip einer Firewall, dass Sie z.B. nur bestimmte Dienste wie HTTP, um im Web zu surfen, und SMTP im eigenem Netz zulassen bzw. von außen auf Ihren Rechner gar keine Eingänge erlauben. Firewalls sind die ›Brandmauern‹ gegen das unberechtigte Eindringen von Benutzern von außen. Mit außen ist zumeist das Internet gemeint – in Einzelfällen können aber auch interne Firewalls notwendig sein. Eine Firewall sollte in allen Fällen zwischen einem internen Netz und der Internetanbindung eingesetzt werden. Dies gilt selbst dann, wenn nur ein einzelner Arbeitsplatz mit dem Internet verbunden wird. Für Windows gibt es für einzelne PCs dafür die sogenannten Personal Firewalls; für Linux enthalten die meisten aktuellen Distributionen einfach zu konfigurierende Firewall-Schnittstellen – so auch SUSE Linux. 331
Netzwerke unter Linux
Die Aufgabe der Firewall-Konfiguration besteht darin, festzulegen, welche Systeme (Rechner) von außen nach innen zugreifen dürfen und welche Dienste (Protokolle, Ports) sie dabei nutzen dürfen. Aber auch die Zugriffe von innen nach außen werden darin festgelegt. So kann ein Systemverwalter z. B. unterdrücken, dass ein Benutzer über einen IRC-Chat-Client mit Chat-Foren im Internet kommuniziert oder mit Hilfe eines Kazaa-, Napster- oder anderen Tauschbörsen-Clients Daten herunterlädt. Die Firewall filtert dabei alle ein- und ausgehenden Datenströme (Datenpakete), analysiert sie hinsichtlich Protokoll, Absender- und Empfängeradresse und (teilweise) sogar auf bestimmte Inhalte hin und entscheidet dann, ob ein Paket angenommen und durchgelassen oder abgelehnt (bzw. einfach verworfen) wird. Man spricht hier deshalb auch von einem Paketfilter. Im einfachsten Fall setzt man zur Internetanbindung Router/Gateways ein, die bereits eine Firewall besitzen. Dies gilt inzwischen (in einfacher Form) selbst für billige Gateways/Router mit WAN-Anschluss (z.B. auch für die meisten DSL-Router). In aller Regel konfiguriert man bei ihnen die Firewall über ein Web-Interface (herstellerspezifisch). Da ein Linux-System jedoch häufig als Gateway zum Internet eingesetzt wird, besitzt Linux auch eine Reihe von Firewall-Funktionen. Für hohe Sicherheitsansprüche wird man unter Umständen aber eine kommerzielle Firewall wie etwa Firewall One der Firma Check Point einsetzen. Der Vorteil dieser Firewalls besteht darin, dass sie häufig aktualisiert werden und sehr fein abgestufte Filter- und Protokollregeln erlauben. Das Setup von Firewalls ist im ausgeprägten Fall eine eigene Wissenschaft und Fehler können recht ernste Sicherheitslücken aufreißen. Deshalb findet man dazu zahlreiche ausführliche Bücher (z.B. [5], [14]) und Schulungen sowie die unter Linux üblichen HOWTOs.31 Für den Bedarf eines privaten PCs oder eines kleinen privaten oder Firmennetzes reicht aber zumeist die vereinfachte Konfiguration aus. Es gibt unter Linux eine ganze Reihe von einfach zu bedienenden Tools, die auch eine grafische Oberfläche zum Aufbauen und Verwalten von Firewalls bieten (z.B. der Firewall Builder). Unter der Webadresse www.linuxinfozentrum.ch/softwarekat.php?kat=23 sind einige der Tools vorgestellt mit den jeweiligen Links zu den Anbietern. Wie bei anderen Administrationsaufgaben auch gilt es zunächst, dafür ein kleine Planung zu erstellen. In ihr legt man fest, welche Dienste man nutzen bzw. zulassen möchte und welche Rechner als vertrauenswürdig gelten – zumeist die des internen Netzes. Dabei ist eine sichere Strategie, zuerst alles zu verbieten und von da aus einzeln die Dienste und Ports freizugeben, die man benötigt.
332
31. Z.B. das ›Firewall und Proxy Server HOWTO‹ unter www.tldp.org/HOWTO/Firewall-HOWTO.html.
11.13 Wichtige Aspekte zur Sicherheit
11.13.3 Einrichten einer Firewall Die einfache Konfiguration der Firewall über YaST ist fast trivial und selbsterklärend. Bei SUSE findet man die Firewall-Konfiguration unter YaST → Sicherheit und Benutzer → Firewall Hier legt man zunächst fest, welche Netzwerkkarte als externe (zu sichernde) Schnittstelle betrachtet werden muss und was die Schnittstelle zum internen Netz ist. Bei einem GatewaySystem hat man hier zumindest zwei Netz-Interfaces, bei einem an das Internet anzuschließenden Einzelsystem ist das externe Interface im Standardfall eth0, bei ISDN ippp0 und bei AnalogModem und DSL ppp0. YaST bietet im nächsten Schritt eine Liste der meistbenutzten Internetdienste an. Hier aktiviert man die gewünschten Protokolle. Wenn kein Zugriff von außen erfolgen soll, also kein eigener Mail- oder Webserver installiert ist, was in der Regel bei privater Nutzung und kleineren Netzwerken der Fall ist, wird hier nichts angegeben. Nur Firmen, die direkten Zugang zu Ihrem Rechner vom Internet erlauben, kreuzen in aller Regel zumindest HTTP und fast immer auch die Mail-Protokolle an, zu denen SMTP und POP3 oder IMAP zählen In der Regel sollte man dabei telnet von außen nicht zulassen, sondern den Zugriff auf ssh beschränken. Auch rsync ist aus bzw. über Internet in der Regel nicht erforderlich oder sogar gefährlich. Möchte man weitere Ports öffnen (z.B. Port 531 für Chat, 20/21 für FTP oder 119 für den News-Service), so muss man zusätzlich über die Einstellungen Experten gehen. Hier gibt man durch Leerzeichen getrennt die weiteren Ports ein (siehe hierzu die Aufstellung wichtiger Ports auf Seite 344).
Nur für Firmen mit eigenem Internetauftritt – sonst wird hier in der Regel nichts angekreuzt!
333
Netzwerke unter Linux
Konfiguriert man hingegen eine Firewall zum internen Netz hin, so sind in der Regel eine ganze Reihe weiterer Ports zu öffnen, z.B. zur Nutzung von SMB, für DNS oder für NSF-Zugriffe. Im Schritt 3 legt man weitere Details fest. Konfiguriert die Firewall ein Gateway zum Internet, das auch anderen internen Systemen mit privaten IPAdressen den Internetzugang erlaubt ❶ – das System muss dann je ein Netz- ❷ werk-Interface nach außen und nach innen haben –, so muss die Datenweiterleitung mit Masquerading ❸ aktiviert sein ➀. Wie man an Punkt ➁ sieht, lassen sich (bei einem GatewayRechner) auch Sperren vom internen Netz setzen. Die Funktion ›IPsec-Pakettransfer als intern behandeln‹ ➂ gestattet einen VPN-Zugriff nach (oder von) außen durch die Firewall hindurch (siehe auch Seite 278). Im vierten Schritt wird bei YaST festgelegt, welche Vorkommnisse protokolliert werden sollen. Hier kann man im Normalfall recht tolerant sein und nur das Auftauchen kritischer Pakete aufzeichnen. Der Default ist hier bereits richtig gesetzt – weniger ist oft besser. Bevor die verschiedenen Skripts zum Aktivieren wirklich ausgeführt werden, erscheint bei YaST nochmals eine Rückfrage. Änderungen lassen sich später wie oben beschrieben wiederum mit YaST vornehmen. Möchte man tiefer in die Firewall-Konfiguration einsteigen, so muss man sich mit dem Paketfilter iptables auseinandersetzen. Dessen Beschreibung sprengt jedoch den Rahmen dieses Einstiegsbuches.
334
Eine weitere hier nicht näher beschriebene Sicherheitsstufe ist die Verwendung eines sogenannten Proxys. Dies ist eine Art Stellvertreterprozess zum Internet hin. Aus Sicht des Internets sieht es dann so aus, als kommuniziert man mit dem Proxy-Prozess. Dieser nimmt die Pakete entgegen, puffert sie und leitet sie (eventuell nach einer Prüfung) an den internen
11.13 Wichtige Aspekte zur Sicherheit
Client weiter. Der interne Client ist aus dem Internet direkt nicht sichtbar und damit auch schwieriger angreifbar. Der Proxy kann dabei auch den Zugriff auf bestimmte Daten (z.B. bestimmte Webseiten) blockieren oder auf vorgegebene Zeiten begrenzen. Zugleich kann er als Cache dienen, so dass z.B. häufig besuchte Internetseiten (sofern sie nicht dynamisch erzeugt werden) nach einem ersten Zugriff schneller verfügbar sind und den Datentransfer zum Internet-Provider etwas reduzieren können. Dies wirkt sich vor allem bei Bildern und Multimediadaten aus. Mit squid steht unter Linux ein solcher Proxy-Server zur Verfügung.
11.13.4 Firewall-Prüfung Hat man die Firewall und eventuell einen Proxy aufgesetzt, so ist es durchaus sinnvoll, das so gesicherte System zu prüfen. Dies tun sogenannte Scanner. Sie analysieren Systeme auf offene Dienste und Ports und teilweise auf zusätzliche bekannte Schwachstellen. Natürlich bietet Linux und die Open-Source-Szene auch dafür kostenfreie Tools. Eines der ausgereiften und verbreiteten Scan-Werkzeuge ist nmap. Mit ihm lassen sich natürlich nicht nur Linux-Systeme, sondern ebenso andere Betriebssysteme auf offene Dienste und Lücken testen. xnmap ist ein grafisches Frontend für nmap. Über Menüs und Schaltknöpfe kann man nmap-Kommandozeilen zusammenbauen. Eine Alternative zu nmap ist das nessus-Paket. Auch dieses ist Teil der SUSE LinuxDistribution. nessus ist noch stärker als nmap auf eine Sicherheitsuntersuchung von Systemen ausgelegt. Möchte man noch eine Stufe weitergehen und Angriffe und ein Eindringen in das System erkennen, so setzt man unter Linux dafür das snort-Paket ein. Dessen Konfiguration setzt jedoch einiges an Netzwissen voraus. Da es sich bei diesem Testen aber um eine Art Testangriff handelt, sollte man den Test explizit auf die eigenen Systeme beschränken und zuvor den Systemadministrator des getesteten Rechners informieren (sofern man dies nicht selbst ist). Ein unvorsichtig aufgesetzter Scan kann Ihnen massiven Ärger mit Ihrem ISP (Internet Service Provider) einbringen! Auch sollte man tunlichst vermeiden, ein Produktivsystem mit Tests zu belasten, die dessen Funktionalität vorübergehend beeinträchtigen können.
335
Netzwerke unter Linux
11.14 Linux-Rechner als Gateway und DNS-Server Um den Internetanschluss nun auch für andere Rechner im Netz zu nutzen, sind folgende Schritte notwendig: 1. Unter YaST R Netzwerkdienste R Routing wird die IP-Weiterleitung (IP-Forwarding) aktiviert:
Bild 11-43: Routing-Konfiguration für das Linux-Gateway
2. Bei den anderen Linux-Rechnern, die über das Gateway ins Internet verbunden werden sollen, ist bei der oben gezeigten Routing-Konfiguration (Bild 11-43) statt 0.0.0.0 die IP-Nummer des Gateway-Rechners einzutragen (in unserem Beispiel 192.168.0.60). Dieses Fenster wird auch geöffnet, wenn Sie bei der Netzkarten-Konfiguration die zusätzliche Schaltfläche Routing auswählen (siehe Bild 11-10 auf Seite 272). Auch bei allen anderen Rechnern, die über den GatewayRechner ins Internet gehen wollen, wird nun die IP-Adresse unter Standard-Gateway eingetragen (wie es unter Bild 11-28 auf der Konfiguration der Netzwerkkarte von Mac OS bereits zu sehen war). In unserem Beispiel tragen wir für den Windows2000-Rechner die Einstellung noch nach: Einstellungen R Systemsteuerung R Netzwerk- und DFÜ-Verbindung R LAN-Verbindung R Netzkarte (z.B. 3COM) R Internetprotokoll (TCP/IP) 336
11.14 Linux-Rechner als Gateway und DNS-Server
Die Weiterleitung funktioniert aber nur, wenn auch für alle Rechner, die über das Gateway ins Internet sollen, eine Namensauflösung erfolgt. Deshalb richten wir zuerst einen DNS-Server ein (in unserem Beispiel ebenfalls auf dem Gateway-Rechner). Die nachfolgenden Schritte sind auch im SUSE-Administrationshandbuch beschrieben, wobei wir uns hier auf das Allernotwendigste beschränken:32 3. Das Paket bind installieren (über die etwas schnellere Methode) mit yast -i bind
4. Die Konfigurationsdatei /etc/named.conf von bind muss nur geringfügig abgeändert werden: Für die IP-Adresse(n) des DNS-Servers des Providers wird nach der Zeile #forwarders { 192.0.2.1; 192.0.2.2; }; folgende Zeile eingefügt: forwarders { 217.237.151.97; 217.237.150.33; };
Außerdem wird das Kommentarzeichen der nachfolgenden Zeile entfernt: forward first;
Zusätzlich werden zwei Dateien für die interne Auflösung der Rechnernamen benötigt. Der Hinweis auf diese Dateien wird in named.conf nach der Zeile # /etc/sysconfig/named
wie folgt eingefügt: include "/etc/named.conf.include"; zone "wolfinger" { type master; notify no; file "wolfinger.zone"; };
Name der Zone (Domain) Art der Datei keine Benachrichtigung an andere Name der Datei unter /var/log/named
zone "0.168.192.in-addr.arpa" { type master; notify no; file "192.168.0.zone"; };
Name der Zone (IP in umgekehrter Richtung) sonst wie oben
5. Damit der DNS-Server die internen Namen auflösen kann, ist es erforderlich, in sogenannten Zonen-Dateien die Informationen hierfür abzulegen. In unserem Beispiel müssen wir im Verzeichnis /var/lib/named für die Auflösung der Namen der ›zone wolfinger‹ eine Datei ›wolfinger.zone‹ anlegen und für die Auflösung der die IP-Nummern die Datei ›0.168.192.in-addr.arpa.zone‹. Muster für diese Dateien finden Sie unter /usr/share/doc/packages/bind/sampleconfig/master/ und dort die Dateien 100.168.192.in-addr.arpa.zone und example.net.zone. 32. Leider ist unser Versuch (im August 2004), dies vereinfacht über YaST R Netzwerkdienste R DNS-Server einzurichten, fehlgeschlagen.
337
Netzwerke unter Linux
Muster von /var/lib/named/wolfinger.zone (Auflösung nach Namen): $TTL 2D @
IN SOA
wolfinger. root.wolfinger ( 1 ; serial (d. adams) 8H ; refresh 8 hours 2H ; retry 2 hours 1W ; expiry 1 week 1D ; minimum 1 day ) IN NS IN A IN A IN A IN A 192.168.0.25 IN A
localhost jogyli toshi toshili macy IN A lex
JOGYli.wolfinger. 127.0.0.1 192.168.0.60 192.168.0.2 192.168.0.10 192.168.0.99
Muster von /var/lib/named/192.168.0.zone (Auflösung nach IP-Nummern): $TTL 2D @
IN SOA
wolfinger. 1 8H 2H 1W 1D )
2 10 25
IN IN IN IN
jogyli.wolfinger. toshi.wolfinger. toshili.wolfinger. macy.wolfinger.
99
IN PTR
NS PTR PTR PTR
root.wolfinger. ( ; serial (d. adams) ; refresh 8 hours ; retry 2 hours ; expiry 1 week ; minimum 1 day
lex.wolfinger.
Beachten Sie, dass Sie die Einteilung wie in den Musterdateien übernehmen. So gibt die erste Zeile mit $TTL (time to live) die Gültigkeitsdauer an. Hier können als Werte wie z.B. 2D (days – Tage) oder 1W (week – Woche) stehen (Details zu den Eintragungen finden Sie im Administrationshandbuch bzw. in der Online-Dokumentation). 6. Nun muss der Namensdienst noch aktiviert werden (auch hier die schnellere Methode als über den Runlevel-Editor – mit insserv wird das Startskript unter die entsprechenden Runlevel-Verzeichnisse eingetragen): insserv named
7. Um ihn nun erstmalig zu starten, gibt man das nachfolgende Kommando an: rcnamed start
Über das Kommando host Rechnername
338
kann nun bereits die Namensauflösung getestet werden.
11.15 Netzplanung
Wenn Namensauflösung von Rechnern auch für Benutzer verfügbar sein soll, dann muss die Datei /etc/resolv.conf für andere lesbar sein (chmod 644). 8. Damit nun auch die anderen Rechner über das Gateway ins Internet kommen, benötigen sie eine internetfähige IP-Adresse. Hier wird das sogenannte Masquerading vorgenommen, das heißt, dem Internet gegenüber treten diese Rechner mit der IP-Adresse des GatewayRechners auf, die z.B. vom Provider übermittelt wurde. (Die Rechner werden sozusagen maskiert, siehe hierzu auch ›Einrichten einer Firewall‹ Seite 333.) Sobald die Verbindung zum Internet hergestellt ist (z.B. durch Anklicken des Steckers in der Statuszeile), können auch die anderen Rechner (in unserem Beispiel Macy, Jogy und Toshi) auf das Internet zugreifen.
11.15
Netzplanung
So wie die Konfiguration des einzelnen PCs vor der eigentlichen Installation geplant werden sollte, so muss auch ein lokales Netz geplant werden – wobei die Auswirkungen hier wesentlich gravierender sein können. Natürlich gibt es dabei Unterschiede zwischen der Planung eines kleinen und eines großen Netzes. Entsprechend dem Schwerpunkt dieses Buches fokussieren wir uns hier auf die Planung eines kleinen bis mittleren lokalen Netzes. Zunächst gilt es, grob abzuschätzen, wie viele Rechner in dem Netz voraussichtlich verbunden sein werden und wie bestimmte Funktionen verteilt werden sollen, wie etwa das Drucken (z.B. über einen Druck-Server) oder der zumeist zentrale Internetzugang (so gewünscht). Wie sieht ganz grob die Netztopologie aus, die Verkabelung der einzelnen Systeme in einem Raum, Stockwerk und im gesamten Haus? Darauf leiten sich eine Reihe weiterer Entscheidungen ab. Unterschätzen Sie nicht die Zahl der angeschlossenen Systeme – diese wächst (abgesehen vom Kleinstnetz zu Hause) oft überraschend schnell. Geht ein Netz über 5–10 lokale Rechner hinaus, sollte man von Beginn an einige zentrale Funktionen vorsehen. Dazu gehören typischerweise: ❐
Router (Gateway) als zentraler Zugang zum Internet.
❐
DHCP-Server, der für andere Rechner die IP-Adressen vergibt und ihnen an-
dere Informationen mitliefert – etwa die Adresse zum Internet-Gateway. 339
Netzwerke unter Linux
❐
Drucker-Server, der von anderen Rechnern Druckaufträge entgegennimmt, sie lokal zwischenspeichert und zu den lokalen Druckern und zu anderen Druckern im Netz schickt.
❐
File-Server, an dem größere Platten und eventuell auch Bandlaufwerke angeschlossen sind und der diese über NFS, Samba oder AppleTalk den Rechnern im Netz zur Verfügung stellt.
❐
Authentifikations-Server, also Systeme, welche Daten für die Benutzerauthentifizierung wie Login-Name und Passwort, eventuell Benutzerschlüssel (z.B. für ssh) und ähnliches zentral halten und verwalten und für andere Systeme zugänglich machen. Dies kann auf Basis von NIS, von Samba (als Windows-Domain-Controller) oder von Kerberos geschehen.
❐
Weitere dedizierte Applikations-Server (z.B. für SAP R/3). Auf sie soll hier nicht weiter eingegangen werden.
Solche Server vereinfachen die Verwaltung teilweise erheblich, da sie gewisse Verwaltungs- und Konfigurationsdaten zentral an einer Stelle halten und der Administrator Neueinträge und Änderungen nicht mehr auf den einzelnen verteilten Rechnern durchführen muss. Der Nachteil kann darin liegen, dass beim Ausfall eines zentralen Servers (z.B. des DHCP-Servers) alle anderen Systeme auch nicht arbeitsfähig sind, die sich auf die Dienste des Servers verlassen. Aus diesem Grund legt man bei etwas größeren Netzen Server redundant aus, d. h., man hat mehrere Systeme im Netz, die diese Aufgabe übernehmen können. Natürlich muss man nicht für jeden der zuvor aufgeführten Server einen eigenen Rechner spendieren, sondern kann mehrere Server-Funktionen auf einen Rechner legen. Bei steigendem Bedarf lassen sich dann später die Aufgaben wieder auf separate Systeme verteilen. Für die Zusammenlegung oder Trennung sollten sowohl Leistungs- als auch Sicherheitsaspekte betrachtet werden. So macht man z.B. aus Gründen der Sicherheit zumeist den Gateway-Rechner nicht zugleich auch zum zentralen File-Server. Neben der reinen Funktions-/Server-Verteilung gehört zu einer Netzplanung auch die Festlegung, wie und welche Netzwerkadressen vergeben werden, ein Namensschema für Rechner, Drucker und für Benutzer- und Gruppennamen und Nummern. Je größer das Netz, um so wichtiger ist hier ein einheitliches, dokumentiertes und nachvollziehbares Schema. Auch Benutzernamen sind als Rechnernamen möglich, führen aber oft zu Verwechslungen. In allen Fällen sollte man Namen ohne Umlaute oder Sonderzeichen verwenden.
340
11.15 Netzplanung
11.15.1 Netztopologie Rechner vernetzt man heute fast ausschließlich sternförmig – d. h., von jedem Rechner (oder anderer eigenständiger Netzkomponente mit eigener IP-Adresse) in einem Netzsegment geht ein Netzkabel zu einem zentralen Switch oder Hub.33 Dieser fungiert als Verteiler. Hat man so viele Komponenten, dass ein Switch (oder Hub) nicht mehr ausreicht, oder sind die Rechner zu stark räumlich verteilt, so kaskadiert man diese Switches – d.h., man verbindet sie ihrerseits untereinander wieder sternförmig. Damit ergibt sich etwa ein Topologiebild wie in Bild 11-44. Internet Gateway+Firewall Switch/Hub
Switch/Hub
Switch/Hub
Switch/Hub
Server File- Print- DHCP+NIS
Server Bild 11-44: Typische, sternförmige Netztopologie
11.15.2 Geschwindigkeit Die Netze sind in den vergangenen Jahren sehr schnell geworden und Geschwindigkeit dient hier dem Komfort und der Arbeitseffizienz. Waren früher 10 MBit/s bei Ethernet üblich, so sind es inzwischen bei allen neueren Komponenten 100 MBit oder sogar 1 GBit. Selbst die sehr preiswerten Switches und praktisch alle aktuellen Netzwerkkarten können dabei sowohl 10 MBit als auch 100 MBit bedienen – auch gemischt. Bei Neubeschaffungen sollte man nur noch solche Komponenten kaufen. Insbesondere für den Dateitransfer und den Dateizugriff über Netz sind 100 MBit sehr willkommen. Netzwerkkarten für 100 MBit beginnen preislich bereits ab 10 Euro – bei Servern wird man teurere, dafür aber leistungsfähigere Karten einsetzen. Die Preise von einfachen Switches beginnen bei etwa 25 Euro (bei 5 Anschlüssen). Sie reichen bereits für ein kleines Netz zu Hause aus. 33. Switches schalten zwei Kommunikationspartner für die Dauer eines IP-Paketes elektronisch zueinander durch, Hubs speichern das IP-Paket zunächst zwischen und schicken es dann weiter. Inzwischen setzt man – insbesondere in kleineren Netzen – nur noch Switches ein.
341
Netzwerke unter Linux
Für leistungsfähige Server sowie für die Verbindung größerer, schneller Netzsegmente setzt man bei der Neubeschaffung und Neuverdrahtung heute bereits 1-GBit-Komponenten ein. Kleine Switches für 1 GBit beginnen preislich bereits bei 100 Euro (bei 5 Anschlüssen) – mit Tendenz zum Preisverfall. Je größer die Netze, um so besser – und damit teurer – sollten die Netzwerkkomponenten wie Switches, Hubs und Router sein. Dabei sind auch Switches mit 12, 24, 36 oder 64 Anschlüssen möglich. Dann sind 1000 Euro und mehr für solche Komponenten durchaus angebracht und bieten weitere Funktionen (man spricht dann auch von Managed Switches). Sie haben optional auch Glasfaser-Anschlüsse zum Uplink (Verbinden) mit weiteren Switches. Als Kabel setzt man heute im Standardfall CAT5+ oder CAT6-Kupferkabel ein.34 Sie erlauben Geschwindigkeiten bis zu 500 MBit/s und auf kürzere Distanzen (bis ca. 80–100 Meter) auch 1 GBit/s. Für größere Distanzen setzt man bei 1 GBit Glasfaserkabel ein. Diese Kabel und die entsprechenden Komponenten sind jedoch wesentlich teurer und sollen nicht Thema dieses Buchs sein. Ältere Ethernet-Kabel (das dicke, gelbe Ethernet-Kabel sowie das Thin-EthernetKabel mit BNC-Buchsen) sollte man möglichst bald aussondern (oder verschenken) und durch aktuelle CAT5/6-Kabel ersetzen. Man erspart sich damit sehr viel Ärger und Fehlersuche!
11.16 Zusammenfassung Obwohl das Netzwerk-Kapitel als Einführung geschrieben wurde, ist es fast ein eigenes kleines Buch mit 90 Seiten geworden. Um so wichtiger ist es, das Wesentliche wieder in Stichpunkten kurz zusammenzufassen. Die Netzwerkkommandos finden Sie auf Seite 413. Dort sind auch solche mit aufgeführt, die in diesem Kapitel nicht behandelt wurden, aber eventuell für Sie von Nutzen sein könnten.
342
34. CAT5, CAT5+ und CAT6 sind Typen- und Qualitätsbezeichnungen für Kupferkabel.
11.16 Zusammenfassung
11.16.1 Wichtige Netzwerkdateien Datei/Begriff
Erläuterung
/etc/exports
Auf dem NFS-Server stehen in dieser Datei die freigegebenen Verzeichnisse.
/etc/host
Datei, in der IP -Adressen zu Rechnernamen lokal zugeordnet werden.
/etc/hosts.allow /etc/hosts.deny
Kontrolldateien für den generellen Zugriff anderer Rechner.
/etc/hosts.equiv
Datei, in der Rechner/Benutzer eingetragen sind, die ohne Passwort Zugang zum Rechner haben (für rlogin, rcp und rsh).
/etc/resolv.conf
Datei zur Steuerung der Namensauflösung z.B. der Adresse für den DNS-Server.
/etc/samba/smb.conf
Konfigurationsdatei unter Linux/Unix für Samba.
/etc/samba/smbpasswd
Datei zur Passwortüberprüfung zwischen Windows und Linux-Authentifikation.
/etc/services
Liste für die Portnummern (Internet Network Services List).
/etc/ssh/sshd_config
Server-Konfiguration
/etc/ssh/ssh_config
Client-Konfiguration (systemweit)
/etc/ssh/ssh_host_rsa_key
Privater Schlüssel des Hosts.
/etc/ssh/ssh_host_rsa_key.pub
Öffentlicher Schlüssel des Hosts.
/etc/ssh/ssh_known_hosts ~/.ssh/known_hosts
Öffentliche Schlüssel und Hostnamen der Clients (anderer Rechner).
/var/lib/named/domain.zone
Dateien zur Namensauflösung über bind.
/var/lib/named/nnn.nnn.0.zone /var/log/samba/log.nmbd /var/log/samba/log.smbd
Protokolldateien von Samba für nmbd (Namensauflösung) und smbd (Shares).
~/.rhosts
Datei, in der Rechner/Benutzer eingetragen werden, die ohne Passwort Zugang zu dem Benutzeraccount haben.
~/.ssh/id_rsa ~/.ssh/id_rsa.pub
Standard-Schlüsselpaar für Public-KeyAuthentifizierung.
~/.ssh/ssh_config
Client-Konfiguration (per User)
›~/‹ steht für das jeweilige Home-Verzeichnis des Benutzers 343
Netzwerke unter Linux
11.16.2 Aufstellung einiger Portnummern In der Datei /etc/services sind die für die Kommunikation zwischen Rechnern wichtigen Portnummern festgehalten. Insgesamt gibt es 65536 Nummern. Davon sind die von 0 bis 1023 mit festen, definierten Diensten belegt. Pro Portnummer sind oft mehrere Einträge vorhanden, einmal mit tcp und mit dem schnelleren, aber nicht kontrollierten udp. Auch können mehrere Protokollbezeichnungen (http, www oder www-http) gelten (die Groß- und Kleinschreibung ist in der Datei unterschiedlich gehandhabt). Das ›#‹ gilt auch hier als Kommentarzeichen. Nachstehend sind nur einige Zeilen aus dieser Datei aufgeführt: # Network services, Internet style ... # The Well Known Ports are those from 0 through 1023. ... ftp ftp # ssh ssh # telnet telnet ... smtp smtp ... http http www www www-http www-http ... audionews audionews sftp sftp ... https https ... printer printer ... conference conference ... ipp ipp ... rsync rsync ... swat smpnameres smpnameres
344
21/tcp 21/udp
23/tcp 23/udp
# File Transfer [Control] # File Transfer [Control] Jon Postel <
[email protected]> # SSH Remote Login Protocol # SSH Remote Login Protocol Tatu Ylonen # Telnet # Telnet
25/tcp 25/udp
mail# Simple Mail Transfer mail# Simple Mail Transfer
80/tcp 80/udp 80/tcp 80/udp 80/tcp 80/udp
# # # # # #
World World World World World World
114/tcp 114/udp 115/tcp 115/udp
# # # #
Audio News Multicast Audio News Multicast Simple File Transfer Protocol Simple File Transfer Protocol
443/tcp 443/udp
# http protocol over TLS/SSL # http protoc
515/tcp 515/udp
# spooler # spooler
531/tcp 531/udp
# chat # chat
631/tcp 631/udp
# IPP (Internet Printing Protocol) # IPP (Internet Printing Protocol)ol over TLS/SSL
873/tcp 873/udp
# rsync # rsync
901/tcp 901/tcp 901/udp
# CONFLICT, not official assigned! # SMPNAMERES # SMPNAMERES
22/tcp 22/udp
Wide Wide Wide Wide Wide Wide
Web Web Web Web Web Web
HTTP HTTP HTTP HTTP HTTP HTTP
11.17 Stichworte, die zum Netzwerk gehören
11.17 Stichworte, die zum Netzwerk gehören Internet Modem
Firewall Portnummern
Router Windows Nameserver
Passwortverschlüsselung ˜/.ssh/known_hosts KMail
ssh
sftp
hosts.allow hosts.deny
IP-Adressen DNS
Samba
DHCP
Gateway
Netzwerkmaske Switch TCP/IP
IP-Nummer
localhost Ethernet-Controller
345
Kapitel 12 Software nachinstallieren
Genauso wie eine Wohnungseinrichtung eigentlich nie ganz fertig ist, ist auch die Einrichtung des Rechners mit den passenden Möbelstücken, sprich Softwarepaketen, selten abgeschlossen. Mit YaST ist die Nachinstallation von Software ein Kinderspiel, und auch aus dem Internet geladene Pakete – egal ob fertige Binärpakete oder selbst zu übersetzende Software – sind einfach zu installieren, wenn man sich an die Regeln hält. 12.1
Installation mit YaST
12.2
YOU – YaST-Online-Update
12.3
Pakete installieren mit RPM
12.4
Installation von tar-Paketen
12.5
Die wesentlichen Stichpunkte
347
Software nachinstallieren
12.1 Installation mit YaST Der YaST-Paketmanager findet sich unter YaST R Software. Er basiert auf dem Paketmanager RPM, auf den wir unten noch näher eingehen. Bei der Installation einzelner Pakete sollte man sich mit RPM anfreunden: Die Direktinstallation mit RPM ohne den ›Komfort-Umweg‹ über YaST geht wesentlich schneller. Es gibt auch eine kommandozeilenbasierte Version (y2pmsh) des YaST-Paketmanagers – allerdings kann man dann eigentlich gleich RPM benutzen. YaST installiert Pakete standardmäßig von dem Medium, das auch bei der Installation von Linux benutzt wurde. Haben Sie Ihr System von DVD installiert und legen jetzt eine Installations-CD in Ihr CD/DVD-Laufwerk, fordert YaST die DVD. Das liegt daran, dass die DVD noch als Installationsmedium eingestellt ist und nicht die CD. Unter YaST – Software R Installationsquelle wechseln lässt sich dies ändern. Dort wird auch eingestellt, wenn Sie über Netz installieren möchten oder aus einem lokalen Verzeichnis, in dem sich RPM-Pakete befinden. Unabhängig von den gewählten Installationsquellen ist das weitere Vorgehen einheitlich: YaST R Software – Software installieren oder löschen öffnet nach etwas Wartezeit, in der die Paketinformation gelesen wird, das Installationsfenster (Bild 12-1). Pakete lassen sich einzeln oder in Gruppen installieren, dies wird über das Filtermenü oben links gesteuert. Die bereits installierten Pakete sind in der Paketliste rechts im Fenster mit einem blauen Häkchen versehen, neu zu installierende klicken Sie einfach direkt an (schwarzes Häkchen) oder Sie wählen auf der linken Seite eine ganze Gruppe aus. Die Erklärung der Häkchen und weiterer Icons bekommen Sie unter ›Filter: Zusammenfassung der Installation‹. Manchmal ist ein bestimmtes Kommando, das installiert werden soll, mit anderen Kommandos in einem Paket zusammengefasst. Eine Suche (Filter: Suche) liefert dann mit den Standardeinstellungen unter Umständen keine Ergebnisse. In so einem Fall wird man unter ›Suchen in‹ auch die Beschreibung oder sogar alle Kontrollkästchen mit ankreuzen. Die Suche dauert dann deutlich länger, führt aber zum Ziel. So liefert die Suche nach dem auf Seite 92 benutzten Kommando mkpasswd mit den Standardeinstellungen keinen Treffer, mit Suche in der Beschreibung dagegen das Paket ›whois‹, das dieses Kommando enthält. Und noch ein eigentlich banaler Hinweis: Wenn das Installationsfenster zu klein gewählt ist, werden die weiteren Suchoptionen aus Platzmangel unterschlagen. Nach Anklicken von ›Akzeptieren‹ prüft YaST eventuelle Abhängigkeiten zu anderen Paketen, installiert dann die ausgewählten Pakete und führt den Konfigurations-Update durch. 348
12.2 YOU – YaST-Online-Update
Bild 12-1: Nachinstallieren des Paketes für Samba-Server
12.2 YOU – YaST-Online-Update Der YaST-Online-Update (YOU) dient zum einfachen Einspielen von Patches, die SUSE bereitgestellt hat. Patches enthalten Fehlerkorrekturen, insbesondere auch sicherheitsrelevante Korrekturen (security patches). Natürlich braucht man hierzu eine Internetverbindung. Nach Auswahl von YaST – Software – Online-Update sieht YOU zuerst bei SUSE nach, auf welchen Servern Patches zur Verfügung stehen, und bietet diese im Menü Installationsquelle an (Bild 12-2). Die genannten Server stellen alle die gleichen Patches bereit, die Verteilung auf mehrere Server dient nur dazu, das Netz durch Zugriff auf einen lokalen Server zu entlasten und serverseitig die nötige Übertragungsbandbreite für die oft recht großen Updates sicherzustellen. Die Auswahl ›Filter: Paketgruppen‹ zeigt in einer Übersicht, welche Pakete von dem Update betroffen sind (markiert mit kreisförmigem Doppelpfeil). Mit der Standardeinstellung ›Manuelle Auswahl von Patches‹ und ›Weiter‹ holt YOU eine Liste der zur Verfügung stehenden Patches. Sicherheits-Patches sind in
der Patch-Liste (Bild 12-3 links) rot markiert. Die Patches lassen sich einzeln anbzw. abwählen, das Fenster unter der Patchliste gibt den Grund für die jeweiligen
349
Software nachinstallieren
Bild 12-2: YaST-Online-Update
Bild 12-3: YOU: Patch-Liste
350
12.3 Pakete installieren mit RPM
Updates an. Die Gesamtgröße der ausgewählten Patches (›Gesamtgröße des Downloads‹) wird ebenfalls angezeigt, eine wichtige Information für alle, die keine schnelle Internetverbindung besitzen. Sicherheits-Patches sollten grundsätzlich eingespielt werden, regelmäßiges Nachsehen nach neuen Sicherheits-Patches gehört zu den Pflichten bei der Systemverwaltung. Nach ›Akzeptieren‹ beginnt YOU mit dem Herunterladen und Installieren der Patches. Hier lässt sich auch ankreuzen, ob die heruntergeladenen Paket-Sourcen nach der Installation entfernt werden sollen. Da diese nicht mehr benötigt werden, kann man den Platz freigeben. Nach der Installation wird der übliche Konfigurations-Update durchgeführt.
12.3 Pakete installieren mit RPM Softwarepakete enthalten Programme/Libraries (oft auch mehrere inhaltlich verwandte) zusammen mit Informationen zu Abhängigkeiten von anderen Paketen oder Libraries, außerdem Installationsskripten sowie Dokumentation (man-Pages, info, HOWTOs und READMEs). Zum Begriff Paket gehört untrennbar auch der Begriff des Paketmanagers. Der Paketmanager sorgt dafür, dass Informationen über die installierten Pakete und Abhängigkeiten zwischen Paketen in einer Paketdatenbank abgelegt und gepflegt werden. Mit dieser Paketdatenbank und den in den Paketen selbst enthaltenen Informationen bietet der Paketmanager folgende Funktionen: ❐
Installieren von Paketen und Eintragen in die Paketdatenbank, wobei festgestellt wird, ob alle für das Funktionieren des Paketes notwendigen weiteren Pakete und Libraries in der richtigen Version vorhanden sind. Fehlen notwendige Pakete, wird das neue Paket nicht installiert und der Paketmanager teilt mit, welche Pakete fehlen.
❐
Deinstallieren von Paketen, wobei sichergestellt wird, dass keine von dem zu deinstallierenden Paket abhängigen Pakete existieren und durch die Deinstallation ein inkonsistentes System zurückbleibt. Gerade das saubere Deinstallieren ist eine Funktionalität, die man zum Beispiel bei Windows manchmal schmerzlich vermisst.
❐
Durchführen von Paket-Updates.
❐
Erstellen der Paketdatenbank oder Prüfen auf Integrität.
❐
Überprüfen der Signatur von Paketen und sicherstellen, dass das Paket auch von dem vorgeblichen Autor oder Distributor stammt.
❐
Abfragen der Paketdatenbank nach eine Reihe von Kriterien zur installierten Software.
❐
Abfragen einzelner Pakete nach einer Reihe von Kriterien.
351
Software nachinstallieren
Für Linux gibt es unterschiedliche Paketmanager. Der in der SUSE-Distribution eingesetzte ist der weit verbreitete RPM (RPM Packet Manager), der ursprünglich vom Distributor RedHat entwickelt wurde. Auch hinter der YaST-Paketverwaltung verbirgt sich letztlich RPM. RPM-Pakete haben die Dateinamenerweiterung ›.rpm‹. Die RPM-Pakete auf den Distributions-CDs sind auf die jeweilige Distribution abgestimmt, das heißt, sie nutzen dieselben Pakete und verwenden dieselben Libraries. Falls Sie andere Pakete – zum Beispiel aus dem Internet – installieren möchten, müssen Sie darauf achten, dass Sie ein zur Distribution bzw. Version passendes Paket auswählen. Diese Informationen sind in der Regel bei den Download-Seiten angegeben. Pakete für eine andere Distribution können eine andere Darstellung der Abhängigkeiten enthalten und so die Datenbank durcheinanderbringen. Ebenso sind Abhängigkeiten von tar-Paketen (Abschnitt 12.4) und selbstgeschriebenen Programmen in der Datenbank natürlich nicht erfasst. Wenn neu zu installierende Pakete andere Libraries als die in Ihrer Distribution benötigen, ist Vorsicht geboten. Die ›Zwangsbeglückung‹ einer Installation mit ›falschen‹ Paketen und Libraries kann schnell dazu führen, dass außer dem neuen Paket gar nichts mehr geht – und vermutlich selbst das nicht einmal. SUSE gibt in diesem Zusammenhang im Administrationshandbuch folgenden Hinweis: Bitte machen Sie keine Experimente mit wichtigen System-Komponenten (Paket glibc, Paket rpm, Paket sysvinit etc.), Sie setzen damit die Funktionstüchtigkeit Ihres Systems aufs Spiel. RPM installiert ein Paket übrigens immer vollständig, Teilinstallationen sind nicht
möglich. Der Midnight-Commander (mc) erlaubt Zugang zu einzelnen Teilen eines Paketes.
Das Kommando rpm RPM wird – sicher nicht völlig unerwartet – mit dem Kommando rpm aufgerufen.
Neben den unten aufgeführten Parametern kann man zusätzlich noch ›-v‹ (verbose) angeben, was zu detaillierteren Ausgaben/Meldungen führt. Zusätzlich gibt es den Parameter ›-h‹ (hash), der durch Ausgabe von 50 Doppelkreuzen einen ›Fortschrittsbalken‹ schreibt. Beachten Sie, dass je nach Parameter eine Paketdatei (mit Endung ›.rpm‹) inklusive Pfad oder ein Paketname anzugeben ist. Die Paketnamen enthalten in der Regel die Versionsnummer als Teil des Dateinamens, so enthält das Paket gimp-1.2.5-43 das Grafikprogramm GIMP in der Version 1.2.5, Release 43. Mit Release ist hier nicht die GIMP-Release, sondern die Paket-Release gemeint. Verschiedene Paket-Releases können durchaus die gleiche Software-Release enthalten, sich untereinander aber etwa durch geänderte Installationsskripten oder erweiterte Dokumentation unterscheiden. Im Paketnamen sind oft noch weitere Informationen untergebracht, wie die Prozessorarchitektur (›i386‹ für die Intel-PC-Architektur). Pakete, die Komponenten für die (Weiter-) 352
12.3 Pakete installieren mit RPM
Entwicklung von Software enthalten, sind meist am Namenszusatz ›-devel‹ (development) zu erkennen. Im folgenden gehen wir auf die wichtigsten rpm-Parameter ein, die in eckigen Klammern angegebenen Parameternamen sind alternativ möglich. rpm --import Key-Datei Importiert den Schlüssel, der sich in der Key-Datei befindet, in RPM. Key-Dateien bekommen Sie im Internet vom Ersteller oder Distributor signierter RPM-Pakete. Der SUSE-Schlüssel wurde bei der Installation von SUSE Linux bereits importiert, so dass hier keine Aktion notwendig ist. Bei der Installation von Paketen wird die Signatur des Paketes mit dem importierten Schlüssel verglichen und so die Authentizität des Paketes sichergestellt. Anstelle einer KeyDatei kann auch direkt eine Internetadresse angegeben werden, von der man den Schlüssel importiert: rpm --import http://Webadresse-des-Schlüssels rpm --checksig RPM-Datei Überprüft die Signatur eines Paketes, ohne das Paket zu installieren. Eine Überprüfung ist insbesondere bei Update-Paketen aus dem Internet sinnvoll. rpm -i RPM-Datei [--install] Installiert das Paket in der RPM-Datei unter Berücksichtigung der Abhängigkeiten. Sind die Abhängigkeiten nicht erfüllt oder ist das Paket schon installiert, wird die Installation nicht durchgeführt und RPM meldet die nicht erfüllten Abhängigkeiten. Sind mehrere Pakete voneinander abhängig, so dass sie sich nicht einzeln installieren lassen, kann man sie gemeinsam installieren: rpm -i RPM-Datei-1 RPM-Datei-2. Bei signierten Paketen wird die Signatur mit dem durch rpm --import importierten Schlüssel verglichen. Weitere Parameter sind: --nosignature Unterdrückt die Überprüfung einer Signatur. --nodeps Installiert das Paket, auch wenn RPM angibt, dass nicht alle Abhängigkeiten (Voraussetzungen) erfüllt sind. --force Erzwingt eine Installation auch dann, wenn das Paket bereits installiert ist. Eine Installation ›gegen den Willen‹ von RPM sollte man allerdings nicht leichtfertig durchführen. Die Option für vorsichtige Anwender ist --test: --test Zeigt die Meldungen, die bei einer Installation ausgegeben würden, installiert das Paket aber nicht. rpm -U RPM-Datei [--upgrade] Aktualisiert ein Paket, wobei ›RPM-Datei‹ die aktuelle Version des Paketes enthält. Falls das Paket noch nicht existiert, wird es installiert. Wie bei -i gibt es auch hier die Zusatzoption 353
Software nachinstallieren
--nodeps. Mit --oldpackage können Sie auch ein Paket durch ein älteres ersetzen. rpm -F RPM-Datei [--freshen] Aktualisiert ein Paket. Im Gegensatz zu ›-U‹ wird das Paket nicht installiert, wenn es noch nicht existiert. rpm -e Paket [--erase] Entfernt ein Paket aus dem System. Hierbei wird überprüft, ob laut RPM-Datenbank andere Pakete von diesem abhängen. Falls das der Fall ist, wird das Paket nicht deinstalliert. Auch hier ignoriert --nodeps eventuelle Paketabhängigkeiten und deinstalliert das Paket auf jeden Fall. Dies ist sinnvoll, wenn man ein Paket deinstallieren und anschließend neu installieren möchte (letzteres unter Umständen mit dem zusätzlichen Parameter --force). Falls RPM ein Paket nicht löscht, obwohl keine Abhängigkeiten mehr bestehen, kann eventuell ein Neuaufsetzen der Datenbank helfen (S. 354). rpm -V Paket
[--verify] Überprüft, ob sich einzelne Dateien des Paketes (ausgenommen Dokumentation) gegenüber der Erstinstallation geändert haben. Die geänderten Eigenschaften werden in Form einer Reihe von Flags ausgegeben, siehe hierzu man rpm.
rpm -q Zusatzoption Datei-oder-Paket [--query] Erlaubt eine Reihe von Anfragen an die Datenbank und an (auch nichtinstallierte) RPM-Pakete. Die entsprechenden Zusatzoptionen haben wir in Tabelle 12-1 aufgeführt. Ob eine RPM-Datei oder ein Paket angegeben werden muss, hängt von der Art der Anfrage ab. Pakete können ohne Version angegeben werden, es reicht also etwa rpm -qd gimp anstatt rpm -qd gimp-1.2.5-43. Die Zusatzoption --last gibt das Installationsdatum von Paketen mit aus und sortiert die Liste nach diesem Datum. Mit rpm -q -a --last erhält man so eine nach Installationsdatum sortierte Liste aller Pakete. Bei einem Update (-U oder -F) muss von RPM berücksichtigt werden, dass eventuell Konfigurationsdateien des zu aktualisierenden Paketes geändert worden sind. So können etwa in der zum Paket cron gehörenden /etc/crontab nach der Installation weitere Einträge dazugekommen sein. RPM bemerkt solche Änderungen und rettet die alten Konfigurationsdateien auf Backup-Dateien mit der Endung .rpmorig oder .rpmsave. Auf jeden Fall müssen die Änderungen der alten Konfigurationsdateien manuell in die neuen eingepflegt werden. Anschließend sollten die Hilfsdateien gelöscht werden, um beim nächsten Update eine geordnete Situation vorzufinden. Die RPM-Datenbank
354
Die Dateien der RPM-Datenbank finden sich unter /var/lib/rpm. Die hier gesammelten Informationen belegen recht viel Platz (30–40 MB für eine Standardinstallation), dementsprechend lange können auch RPM-Operationen dauern, die intensiv von der Datenbank Gebrauch machen. Das merken Sie zum Beispiel beim
12.3 Pakete installieren mit RPM
Tabelle 12-1: Zusatzoptionen zu rpm -q (alternative Namen in eckigen Klammern) Option
Erläuterung
Paket
Zeigt den vollständigen Namen des Paketes inklusive Versions- und Release-Nummer, falls es installiert ist.
-a
[--all] Zeigt alle installierten Pakete.
-l Paket
[--list] Zeigt eine Liste der zu einem Paket gehörenden Dateien. Die Zusatzoption -v zeigt weitere Dateiattribute analog zum Kommando ›ls -l‹.
-s Paket
[--state] Zeigt den Status der Paketdateien an. In der Ausgabe bedeutet ›normal‹, dass die Datei installiert ist.
-d Paket
[--docfiles] Zeigt die Dokumentationsdateien eines Paketes an.
-c Paket
[--configfiles] Zeigt die Konfigurationsdateien eines Paketes.
-f Datei
[--file] Zeigt, zu welchem Paket die Datei gehört.
-i Paket
[--info] Gibt Informationen zu einem Paket, unter anderem Installationsdatum, Version, Release, Signatur, Kurzbeschreibung und Autoren.
--scripts Paket
Zeigt die Shell-Skripte, die beim Installieren und Deinstallieren benutzt werden (den Inhalt der Skripte, nicht die Dateinamen!).
-p RPM-Datei
[--package] Zusätzlicher Parameter bei Abfragen zu einem nicht installierten Paket.
-R Paket
[--requires] Zeigt, welche Pakete Voraussetzung für dieses Paket sind.
--whatrequires Paket
Zeigt, welche Pakete von diesem Paket abhängen.
Aufruf des YaST-Paketmanagers (›Paketinformationen werden eingelesen. Bitte warten.‹). Auf keinen Fall sollten Sie die Dateien der Datenbank manuell ändern. Falls es Probleme mit der Datenbank gibt, also etwa Fehlermeldungen zu einer inkonsistenten Datenbank oder offensichtlich falsche Abhängigkeiten, kann man die Datenbank mit rpm --rebuilddb auf Basis der alten neu aufsetzen. Sicherheitshalber wird man sich vorher eine Kopie der alten Datenbank anlegen. Source-Pakete (auf die wir in diesem Buch nicht eingehen) werden in der RPMDatenbank nicht verwaltet. 355
Software nachinstallieren
Mehr Informationen zu RPM rpm bietet noch weit mehr Parameter als hier angegeben. Sie finden Informationen darüber wie üblich in den man-Pages (man rpm). Wenn Sie ein bestimmtes Paket für Ihren Rechner suchen, helfen Ihnen die Suchmaschinen rpmfind.net und rpmseek.com weiter. www.rpm.org ist die RPM-Homepage. Bei SUSE gibt es auch die Möglichkeit, Patch-RPMs einzuspielen (siehe dazu [16]). Dies reduziert bei kleineren Änderungen am Paket deutlich die Größe des RPMPaketes, da nur die Änderungen im Paket enthalten sind und nicht das komplette geänderte Paket. Beispiel: Installation von Filelight In diesem Abschnitt möchten wir die Installation eines Paketes am Beispiel des Programms ›filelight‹ zeigen. Filelight (Bild 12-3) bietet eine grafische Alternative zum Kommando du (disk usage). Es zeigt für ein ausgewähltes Verzeichnis die Größe der Unterverzeichnisse als farbige Kreissegmente, wobei die Größe der Segmente der anteiligen Größe der Unterverzeichnisse oder Dateien entspricht. Durch Bewegen des Mauszeigers über die Kreissegmente zeigt Filelight sofort die weitere Untergliederung und Größe der Segmente und die Anzahl der darin enthaltenen Dateien. Anklicken eines Kreissegmentes stellt das Segment als eigenes Diagramm dar. Mit dem Tool sieht der Systemverwalter auf einen Blick, wo die Großverbraucher zu finden sind. Im Menü ›Durchsuchen‹ von Filelight finden Sie ›Durchsuche Heimat-Verzeichnis‹ und ›Durchsuche "root" Verzeichnis‹ für die meistuntersuchten Directories. Um die deutlich über hunderttausend Dateien unter root zu begutachten, braucht das Tool verzeihliche ein bis zwei Minuten, anschließendes Anzeigen von Unterverzeichnissen kostet keine weitere Wartezeit mehr. Mehr Informationen zu Filelight finden Sie unter [24, 31]. Das RPM-Paket gibt es ebenfalls über [31]. Kommen wir nun zur Installation, die natürlich unter root stattfindet. Das RPM-Paket heißt filelight-0.6.4-0.pm.0.i586.rpm, es ist nur 118 819 Byte groß. Der Name verrät die Version 0.6.4, RPM-Release 0, ›pm‹ ist ein Namenskürzel des Paketerstellers, und ›i568‹ sagt, dass das Paket für einen Intel Pentium gedacht ist. Im folgenden testen wir ein paar Anfragen an das Paket; der Parameter p ist notwendig, da die Anfragen an das nichtinstallierte Paket gehen: # rpm -qdp filelight-0.6.4-0.pm.0.i586.rpm /usr/share/doc/packages/filelight/AUTHORS /usr/share/doc/packages/filelight/COPYING /usr/share/doc/packages/filelight/INSTALL /usr/share/doc/packages/filelight/README # rpm -qpc filelight-0.6.4-0.pm.0.i586.rpm /opt/kde3/share/config/filelightrc
rpm -qp --requires filelight-0.6.4-0.pm.0.i586.rpm gibt fast 40 Libraries aus, die das Paket benötigt. Mit rpm -i ist das Paket in wenigen Sekunden installiert: 356
12.4 Installation von tar-Paketen
Bild 12-3: Filelight # rpm -q filelight Paket filelight ist nicht installiert # rpm -i filelight-0.6.4-0.pm.0.i586.rpm # rpm -q filelight filelight-0.6.4-0.pm.0 # which filelight filelight: Befehl nicht gefunden. # whereis filelight filelight: /opt/kde3/bin/filelight
Das Kommando filelight findet sich also unter /opt/kde3/bin. Auch im KDEProgramm-Menü hat es sich eingeklinkt, und zwar unter ›System R Weitere Programme‹.
12.4 Installation von tar-Paketen Eine große Menge an Software steht nicht in Form von RPM-Paketen zur Verfügung, sondern nur als Quellcode, den man selbst übersetzen muss. Verpackt ist das Ganze im komprimierten tar-Format, die Pakete werden im Englischen deshalb auch als ›tarballs‹ bezeichnet. tar-Pakete gibt es in zwei verschiedenen Komprimierungsverfahren, und zwar mit dem klassischen gzip und dem neueren bzip2. bzip2 liefert (abhängig vom ›Ausgangsmaterial‹) 10% bis 50% kleinere Pakete als gzip. Die bessere Komprimierung schlägt sich in höheren Komprimierungszeiten nieder, beim Entpacken ist der Unterschied meist nicht relevant. Die Pakete haben die Endung ›.tar.gz‹ bzw. ›.tgz‹ (gzip-komprimiert) oder ›.tar.bz2‹ (bzip2-komprimiert).
357
Software nachinstallieren
Warnung
Voraussetzung zum Übersetzen ist eine vollständige Entwicklungsumgebung mit C-Compiler, make und passenden Libraries. Die notwendigen Werkzeuge bekommen Sie ›en bloc‹, wenn Sie im YaST-Paketmanager (YaST – Software – Software installieren oder löschen) mit Filter ›Selektionen‹ einfach ›C/C++ Compiler und Werkzeuge‹ ankreuzen und installieren. Bei Paketen für die Kernel- oder KDE-Entwicklung gibt es im YaST entsprechende Selektionen. Der Nachteil von selbstübersetzten Paketen ist, dass diese nicht vom Paketmanager RPM erfasst werden. Wenn Sie also ein RPM-Paket installieren, das sich auf ein tar-Paket bezieht, wird RPM letzteres als fehlend monieren. Hierüber muss man sich dann mit ›--nodeps‹ bei RPM hinwegsetzen. Gravierender ist, dass RPM auch ohne Murren ein Paket deinstalliert, das von einem tar-Paket noch benötigt wird, denn RPM weiß ja nichts von dieser Beziehung. Die tar-Pakete lassen sich in einem Schritt dekomprimieren und entpacken. Für gzip-Pakete heißt das Kommando tar -xzf Paket.tar.gz bzw. tar -xzf Paket.tgz und für bzip2-Pakete tar -xjf Paket.tgz Möchten Sie erst einmal sehen, was sich in dem Paket befindet, ersetzen Sie im tar-Aufruf den Parameter ›x‹ (extract) durch ›t‹ (table). Die tar-Pakete entpacken sich in der Regel in ein von ihnen angelegtes Directory, das den Namen des Paketes trägt. In dem Directory finden sich dann, wenn es sich um ein ›ordentliches‹ Paket handelt, auch ein README, Installationshinweise und Beispiele. Das weitere Vorgehen besteht aus dem Ausführen der drei Kommandos ./configure, make und make install. Für diese immer gleichen drei Kommandos findet man oft auch den Begriff ›Dreisprung‹ oder ›Dreisatz‹. Zum Ausführen der Kommandos wechselt man in das Verzeichnis, das tar angelegt hat. Hier befindet sich auch das Skript configure. ❐
358
./configure prüft, ob alle benötigten Pakete und Libraries auf Ihrem System vorhanden sind, wobei auch das Makefile für den folgenden Schritt angepasst wird. Das Makefile enthält die Anweisungen, die zum Übersetzen und Linken der Programmquellen notwendig sind. Bei kleinen tar-Paketen gibt es unter Umständen kein configure, dann lässt man diesen Schritt einfach aus. Stellt configure fest, dass benötigte Tools oder Libraries fehlen, müssen diese installiert werden. Die Standardwerkzeuge sind auf der Distributions-CD enthalten, oder Sie finden die nötigen Pakete auf den Webseiten Ihres Distributors. Falls Sie hier nicht fündig werden, müssen Sie im Internet suchen. Beachten Sie dabei, dass Sie Ihr System nicht durch ›Drüberinstallieren‹ von Libraries unbrauchbar machen!
12.4 Installation von tar-Paketen
❐
make veranlasst die Übersetzung der beteiligten Programmquellen und linkt sie zu einem ausführbaren Programm zusammen. Hierbei können endlose Kolonnen von kryptischen Meldungen im Terminal durchlaufen, die Sie aber getrost ignorieren dürfen. Problematisch wird es nur, wenn der Übersetzungsprozess mit einem Fehler abbricht. Die Gründe hierfür können vielfältig sein, mit einer genauen Kopie der Fehlermeldung findet man meist im Internet über die Suchmaschinen – insbesondere in den Use-Groups – Hilfe. Eine gängige Ursache sind Compiler oder Libraries auf Ihrem System, die zu alt oder zu neu sind. Hinweise zur Installation der richtigen Compilerversion findet sich manchmal auch in den READMEs des tar-Paketes. Auch hier gilt: Vorsicht beim ›Drüberinstallieren‹ bestehender Systemkomponenten! Kleinere Programme, die keine weitergehende Konfiguration benötigen, lassen sich nach make mit ./paketname gleich starten.
❐
make install installiert das Programm so, dass es allen Benutzern zugänglich ist. Dabei werden das ausführbare Programm und eventuelle Bibliotheken und Konfigurationsdateien in die entsprechenden Systemverzeichnisse kopiert. Ebenso werden, falls das tar-Paket dies mitliefert, man- und info-Seiten eingerichtet. Natürlich benötigen Sie für diesen Schritt Root-Rechte.
Beispiel: Installation der Bash 3.0 Wir möchten die Installation eines tar-Paketes am Beispiel der Bash 3.0 zeigen. Auf den meisten Distributionen ist, wie in unserem Beispiel, noch eine Bash 2.x installiert, die Standard-Shell unter Linux: > bash --version GNU bash, version 2.05b.0(1)-release (i586-suse-linux) Copyright (C) 2002 Free Software Foundation, Inc.
Das tar-File ›bash-3.0.tar.gz‹ bekommen Sie im Internet etwa auf den GNU-Seiten [27]. Die Datei wird mit > tar -xzf bash-3.0.tar.gz
in ein Verzeichnis bash-3.0 entpackt. Wir wechseln in das neu angelegte Verzeichnis mit > cd bash-3.0
Während das tar-File nur 2,4 MB groß ist, belegen die insgesamt etwa 1000 neu angelegten Dateien zusammen 11,5 MB. Die Ausführung des nur 25 000 Zeilen großen Skripts ./configure führt ca. 450 Checks aus und passt anschließend das Makefile an: > ./configure checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for emacs... emacs checking where .elc files should go... ${datadir}/emacs/site-lisp Beginning configuration for bash-3.0-release for i686-pc-linux-gnu checking for gcc... gcc
359
Software nachinstallieren
checking for C compiler default output... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no ...
Mit make wird die Übersetzung der beteiligten Programme angestoßen, das Ganze endet mit: ls -l bash -rwxr-xr-x 1 chr autoren 1733394 2004-08-07 14:07 bash size bash text data bss dec hex filename 600112 22560 19084 641756 9cadc bash
Wir fragen die Bash nach ihrer Version: > ./bash --version GNU bash, version 3.00.0(1)-release (i686-pc-linux-gnu) Copyright (C) 2004 Free Software Foundation, Inc.
Ein kurzer Ausflug in die neue Bash, die sich mit bash-3.00$ meldet und die wir gleich wieder mit exit verlassen, zeigt, dass sie zumindest die Minimalfunktion erfüllt: > ./bash bash-3.00$ exit exit >
Ein Blick in den Abschnitt ›install‹ des Makefiles und die dort benutzten Variablen zeigt, dass die neue Bash unter /usr/local installiert wird. Wechseln wir also nach root und installieren die neue Bash mit make install: > su Password: # make install ...
Auch jetzt laufen die Meldungen wieder schneller durch, als man sie lesen kann. Nach dem erfolgreichen Ende verlassen wir root: # exit exit > whereis bash bash: /bin/bash /etc/bash.bashrc /usr/local/bin/bash /usr/share/man/man1/bash.1.gz
Dieses Kommando zeigt die neue Bash unter /usr/local/bin, allerdings liegt die alte Bash immer noch vor der neuen im Pfad. Eine kurze Stippvisite beweist, dass auch die neue jetzt ihren Dienst tut: > /usr/local/bin/bash bash-3.00$ exit exit >
Wie Sie sehen, ist beim Installieren von tar-Paketen im Normalfall hauptsächlich der Rechner beschäftigt. Wenn Sie nicht den Normalfall erwischt haben, kann es beliebig aufwendig werden, siehe oben bei ./configure und make. 360
12.5 Die wesentlichen Stichpunkte
12.5 Die wesentlichen Stichpunkte
Installationsquelle
Nachinstallieren
YaSTR Software
YOU YaST-OnlineUpdate tar-Pakete tar -xzf tar -xjf .configure make make install
RPM-Pakete RPMPaketmanager
361
Kapitel 13 Hilfe zur Selbsthilfe
Wie bei anderen Systemen sind Fehlermeldungen auch bei Linux nicht immer intuitiv verständlich, und manchmal fällt einem partout das Kommando für eine bestimmte Funktion nicht ein. Wir zeigen Ihnen, wo Sie auf Ihrem System oder im Internet Hilfe finden. Was aber tun, wenn sich das System erst gar nicht starten lässt, man als root das Passwort vergessen hat oder auf der grafischen Oberfläche die Maus streikt? In diesem Kapitel finden Sie Hinweise, um sich in diesen Situationen helfen zu können. 13.1
Ordnung ist das halbe Leben
13.2
Selbstauskunft
13.3
Online-Hilfen: man, info und Co.
13.4
Hilfe im Internet
13.5
Notfall-CD und Knoppix
13.6
Root-Passwort vergessen
13.7
Wenn die Maus nicht funktioniert
13.8
Tastaturlayout
363
Hilfe zur Selbsthilfe
13.1 Ordnung ist das halbe Leben Wie in der Einleitung darauf hingewiesen, sollten Sie als Systemverwalter wichtige Informationen/Dateien nicht nur dem System (oder einem System) anvertrauen. Abgesehen von Sicherungen an unterschiedlichen Orten (gegen Feuer- und Wasserschaden) sollten Sie auch die wichtigsten Daten des Rechners z.B. für Neuinstallieren oder Reparaturen im Ernstfall parat haben, und zwar in einer Form, die ohne den heruntergefahrenen oder defekten Rechner noch lesbar ist. Dies ist im einfachsten Fall ein Ordner mit Ausdrucken auf Papier, aber es kann auch eine CD sein, wenn im Fall der Fälle ein weiteres System zum Lesen der CD zur Verfügung steht, oder es sind im Netz hinreichend redundant gesicherte Daten, auf die auch bei Ausfällen des Netzwerks noch zugegriffen werden kann. Ein Problem bei allen manuellen Erfassungen ist, die Daten auf dem aktuellen Stand zu halten. Wer sich die Disziplin nicht zutraut, kann alternativ die notwendigen Systeminformationen regelmäßig per cron-Job sammeln und zum Beispiel auf CD brennen. Zum Glück gibt es Tools wie ›sitar‹, die Systeminformationen zusammentragen und in übersichtlicher Form aufbereiten (siehe Seite 366). Natürlich wird man in einem Home-Office weniger Informationen dieser Art benötigen als in einem Firmennetz. Aber letztlich ist die Auswahl einfach: Was brauchen Sie, um Ihren Rechner oder Ihr Netz wieder neu aufzusetzen? Als Anregung sei die nachfolgende Aufstellung zu verstehen.
364
Nr.
Inhalt
Hinweis/Erläuterung
1
Ausdruck wichtiger Systemdateien
Konfigurationsdateien des Bootloaders, /etc/fstab, /etc/passwd, /etc/groups, /etc/hosts, XF86config, evtl. Teil-Ausdrucke des mit sitar erstellten Archivs (siehe ›sitar --help‹ und Bild 13-1 auf Seite 372).
2
Logbuch
Aufgetretene Fehler, Nachinstallieren von Hardware und Software, Besonderheiten.
3
Sicherungsprotokolle
Wer hat welche Sicherung wann durchgeführt, auf welchem Medium, wo gelagert.
4
Plattenbelegung
Ausdruck der mit ksnapshot erstellten Ansicht von System R Systemüberwachung R Infozentrum R Partitionen, Ausgabe von fdisk -l (bzw. der mit sitar erstellten Datei, siehe auch Nr. 1).
5
Netzwerk allgemein
IP-Nummern, Rechnernamen und Aufstellungsorte aller Rechner, die zum lokalen Netz gehören. Ein Ausdruck der /etc/hosts wäre hier auch zu empfehlen, außerdem ein Ausdruck von samba.conf, RoutingTabellen etc. (siehe auch sitar unter Nr. 1).
6
Modem-, ISDN-, DSLEinstellungen
Telefonnummern und sonstige Angaben, die notwendig sind, um eine Verbindung zu erhalten.
13.2 Selbstauskunft
Nr.
Inhalt
Hinweis/Erläuterung
7
Hardwareinformationen
Die wichtigsten Kenndaten (evtl. ksnapshot von YaST R Hardware R Hardwareinformationen).
8
Software
Aufstellung der installierten Standard- und optionalen Softwarepakete, eventuell mit zugehörigen Lizenzen.
13.2 Selbstauskunft Wir haben im folgenden eine Auswahl von Kommandos aufgeführt, mit denen Sie Auskunft über Ihr System bekommen können, angefangen vom einfachen ›hostname‹ bis zur umfangreichen Selbstauskunft über ›hwinfo‹ oder ›sitar‹. Einige der Kommandos finden Sie anstatt unter /bin unter /sbin oder /usr/sbin, auch sind einige nur unter root hinreichend auskunftsfreudig. Die Kommandos haben in der Regel eine Reihe von Optionen, mit denen Sie detailliertere Auskunft erhalten oder die entsprechenden Systemeinstellungen auch ändern können. Insbesondere bei einem Aufruf unter root sollte man sich über die man- oder infoSeiten informieren, was das Kommando alles kann bzw. anrichten kann. Tabelle 13-1: Kommandos, die Auskunft über das System geben Kommando
Auskunft
hostname
Rechnername
hostid
Host-ID
domainname
NIS/YP-Domainname
dnsdomainname
DNS-Domainname
kernelversion
Hauptversion des Kernels (2.4, 2.6, …)
uname --all
U.a. Name des Kernels und des Rechners, Kernel-Version
lsmod
Status der geladenen Kernel-Module
rpm -q Parameter
Paketinformationen (siehe Seite 355)
route
IP-Routing-Tabelle
ip Parameter
Netzwerkinformationen
ifconfig
Status/Einstellungen der Netzwerkschnittstellen
netstat
Umfangreiche Anzeigemöglichkeiten rund ums Netzwerk
fdisk -l
Plattengeometrie und Partitionstabelle
hwinfo
Umfassende Darstellung der Hardwareinformationen
sitar
Umfangreiche Darstellung nahezu aller Systeminformationen, siehe folgenden Abschnitt
365
Hilfe zur Selbsthilfe
Im KDE findet man (vorwiegend) hardwarenahe Informationen unter System R Überwachung R Infozentrum. Ebenso bietet natürlich YaST in nahezu allen Rubriken Informationen zum System an. Sitar Mit dem Kommando sitar (system information at runtime) erhalten Sie nachstehende Informationen, die je nach Aufruf im .html- oder .tex-Format (Latex) ausgegeben werden. Es muss als root ausgeführt werden, da nicht alle benötigten Informationen für normale Benutzer auswertbar sind. Die Ausgabedatei ist vor unbefugtem Zugriff zu schützen, da sie z.B. Passwörter für ISDN-Verbindungen im Klartext enthält. Zu sitar siehe auch ›man sitar‹ und den Manual-Ausschnitt auf Seite 372). JOGYli.Wolfinger, Thu Aug 26 13:25:38 2004 Linux Jogyli 2.6.5-7.75-default #1 Mon Jun 14 2004 i686 athlon i386 GNU/Linux - SuSE Linux 9.1 (i586) Table of Contents 1. CPU and Memory 2. Devices 2.1 PCI-Devices 3. Software-Raids 4. Partitions, Mounts, LVM 4.1 Overview 4.2 Configuration Files (fstab, lvm) 4.2.1 /etc/fstab 4.2.2 /etc/lvm/lvm.conf 4.2.3 /etc/lvm/.cache 5. IDE-Hard-Discs 6. Networking - Interfaces 7. Routing 8. Packet Filter (iptables) 8.1 Table mangle 9. /proc 9.1 /proc/sys/net 9.1.1 /proc/sys/net/appletalk 9.1.2 /proc/sys/net/core 9.1.3 /proc/sys/net/ipv4 9.1.4 /proc/sys/net/ipv6 9.1.5 /proc/sys/net/irda 9.1.6 /proc/sys/net/token-ring 9.1.7 /proc/sys/net/unix 9.2 Currently loaded modules (/proc/modules) 10. Automatic Startup (chkconfig-l) 11. Configuration 11.1 Common 11.1.1 SSH/OpenSSH /etc/ssh/sshd_config 11.1.2 Samba - /etc/samba/smb.conf
366
11.1.3 OpenLDAP Client /etc/openldap/ldap.conf 11.1.4 OpenLDAP Client /etc/ldap.conf 11.1.5 /boot/grub/menu.lst 11.1.6 /etc/crontab 11.1.7 /etc/group 11.1.8 /etc/grub.conf 11.1.9 /etc/hosts 11.1.10 /etc/hosts.allow 11.1.11 /etc/hosts.deny 11.1.12 /etc/init.d/boot.local 11.1.13 /etc/inittab 11.1.14 /etc/ntp.conf 11.1.15 /etc/passwd 11.1.16 /etc/ppp/options 11.1.17 /etc/printcap 11.1.18 /etc/resolv.conf 11.1.19 /etc/syslog.conf 11.1.20 /etc/xinetd.conf 11.2 Postfix (postconf -n) 11.2.1 /etc/aliases 11.3 Sysconfig 11.3.1 /etc/sysconfig/ide bis … 11.3.157 /etc/sysconfig/bootsplash 12. Installed Packages 12.1 Packages by (none) 12.2 SuSE Linux 9.1 (i586) 12.3 SuSE Linux 9.1 (i686) 12.4 Summary 13. Kernel Configuration
13.3 Online-Hilfen: man, info und Co.
13.3 Online-Hilfen: man, info und Co. Leider sind die Fehlermeldungen der meisten Linux-Programme – und hierzu gehört auch die Shell – recht spärlich (die Situation verbessert sich jedoch langsam). Kurzinformationen geben die Kommandos whatis und apropos. Eine gewisse, wenn auch knappe und trockene Hilfe bieten die Online-Manuale. Sie sind die eigentliche (Referenz-)Beschreibung der klassischen Programme auf Kommandozeilenebene sowie der wesentlichen Steuerdateien des Linux-Systems. Sie sind in der Regel auf dem Rechner vorhanden und lassen sich einfach abrufen. Der Klassiker ist man, die etwas modernere Variante info. Viele neuere Programme verzichten inzwischen auf ausführliche man-Seiten und bieten nur noch ›info‹ an. Beide Systeme gibt es optisch besser aufbereitet auch im KDE-Konqueror. Die nächste Stufe des Komforts sind GUI-Hilfen, sehr detaillierte Information findet sich in den HOWTOs. In den folgenden Abschnitten gehen wir auf die genannten Online-Hilfen ein. Bei allen aufgeführten Möglichkeiten ist zu beachten, dass sich Linux insgesamt sowie die einzelnen Anwendungen und die gesamte Desktop-Umgebung relativ schnell weiterentwickeln. So gibt es z.B. die frühere Anwendung gnome-helpbrowser nicht mehr – sie wurde durch yelp ersetzt. Auch die Dokumentationen und Distributionen werden ständig verbessert, man sollte deshalb durchaus in seinem System etwas herumstöbern. Da Dokumentation eine undankbare Aufgabe ist und von den Programmierern recht wenig geliebt wird, ist ein Teil der Linux-Dokumentation eher knapp gehalten und teilweise etwas veraltet – man sollte also auf das Datum der Dokumentation achten.
13.3.1 Hilfemeldungen Eine einfache, aber dennoch oft ausreichende Unterstützung für die syntaktisch korrekte Anwendung von Kommandos bieten die Hilfemeldungen, die von nahezu allen Linux-Kommandos bei falschem Aufruf ausgegeben werden. Diese Meldungen bestehen meist nur aus einer Zeile, in der aber die komplette Aufrufsyntax untergebracht ist. Da diese Meldung nur bei einem fehlerhaften Aufruf eines Kommandos ausgegeben wird, kann man einen solchen Fehler provozieren, um die Hilfemeldung angezeigt zu bekommen. Am einfachsten geschieht dies durch Angabe der Option –? oder –Z, die bei kaum einem Kommando tatsächlich vorkommt. Will man etwa die Hilfemeldung von ls erhalten, so behilft man sich mit einem Aufruf wie folgt: > ls -? /bin/ls: Ungültige Option -- ? „/bin/ls --help“ gibt weitere Informationen.
367
Hilfe zur Selbsthilfe
Da aber unter Linux viele Programme die Syntax und Kurzbeschreibung über die Option --help ausgeben, ist dies das bessere Verfahren. Das Programm bzw. Kommando endet danach, ohne eine weitere Funktion auszuführen. Die Option --version liefert in ähnlicher Weise die aktuelle Version des jeweiligen Programms zurück. Das Programm endet danach ebenfalls ohne eine weitere Aktivität.
13.3.2 whatis apropos? Einen ersten Überblick, welche Kommandos für welchen Zweck zuständig und verfügbar sind, bieten die beiden Programme whatis und apropos (bzw. man -k). whatis wird mit dem Namen eines Kommandos aufgerufen und gibt kurz aus, welche Aktionen dieses Kommando ausführt. Am Beispiel ls kann dies so aussehen: > whatis ls ls (1)
- list directory contents
Das Kommando apropos wird mit einem beliebigen Schlagwort aufgerufen und gibt dann eine Liste von Kommandos aus, die mit diesem Schlagwort in Verbindung gebracht werden können. apropos greift dabei auf einen Index zurück, der aus den gesammelten Manualseiten aufgebaut wird (also aus denen, die ›man‹ anzeigt). Möchte man z.B. wissen, wo Informationen zum Dateisystem ext2 zu finden sind, so sieht dies wie folgt aus: > apropos ext2 fs (5) - Linux filesystem types: minix, ext, ext2, ext3, xia, msdos, umsdos, vfat, proc, nfs, iso9660, hpfs, sysv, smb, ncpfs e2label (8) - Change the label on an ext2 filesystem resize2fs (8) - ext2 file system resizer dump (8) - ext2/3 filesystem backup mkfs.ext3 (8) - create an ext2/3 filesystem e2image (8) - Save critical ext2 filesystem data to a file mke2fs (8) - create an ext2/3 filesystem fsck.ext2 (8) - check a Linux second extended file system mkfs.ext2 (8) - create an ext2/3 filesystem rdump (8) - ext2/3 filesystem backup debugfs (8) - ext2 file system debugger
Die Angabe ›fs (5) …‹ in der ersten Ausgabezeile besagt z.B., dass unter dem Thema fs im Kapitel 5 der Linux-Manuale ext2 vorkommt. Diese Information könnte man nun über ›man 5 fs‹ abrufen. Weitere Informationen sind – jeweils über das man-Kommando – unter e2label, resize2fs und e2image im Kapitel 8 der Manuale zu finden.
13.3.3 man – das Manual
368
Die Grundversion der Online-Manuale sind die man-Seiten. Der Abruf der Seiten erfolgt über das Kommando man:
13.3 Online-Hilfen: man, info und Co.
man 5 fstab
liefert z.B. die Beschreibung zum Aufbau der fstab-Datei.
Die (vereinfachte) Syntax des man-Kommandos lautet: man [Kapitel] Titel Die Angabe des Parameters Kapitel ist hier optional. Es wird durch die Ziffern 1 bis 9 eingegeben und spezifiziert, in welchem Kapitel der Manuale nach der Beschreibung des mit Titel angegebenen Kommandos oder Begriffs gesucht werden soll. Die Unterteilung der Manuale entspricht dabei der (ehemals) gedruckten Unix-Dokumentation: 1 2 3 4 5 6 7 8 9
Unix/Linux-Kommandos (Utilities ) und Shell-Befehle Systemaufrufe (Kernel-Funktionen mit ihrer C-Schnittstelle) C-Bibliotheksroutinen (Linux-Systembibliotheken) Beschreibung der Gerätetreiber und Gerätecharakteristika (zumeist unter /dev) Formate spezieller Dateien (Systemdateien, z.B. /etc/fstab und Konfigurationen) Spiele – meist nicht sehr ergiebig Tabellen, Makropakete und Konventionen (z.B. ASCII-Code) Systemverwaltung (zumeist Befehle für root) Kernel-Routinen
Daneben gibt es noch die veralteten Kapitelbezeichner n für neue, l für lokale, p für öffentliche (public) und o für alte (old) Funktionen. Gibt man den Parameter Kapitel nicht an, so werden alle Kapitel nach dem Eintrag Titel durchsucht und entsprechend ausgegeben. Der Parameter Titel gibt das Kommando, den Systemaufruf oder ein anderes Stichwort an, dessen Beschreibung ausgegeben werden soll. Auch Konfigurationsdateien können angegeben werden (etwa ›man fstab‹). ›man chmod‹ würde sowohl die Beschreibung zum chmod-Kommando als auch die des chmod-Systemaufrufs ausgeben. Wollte man nur die Beschreibung des Systemaufrufs sehen, so müsste man das Manual mit ›man 2 chmod‹ aufrufen. Die einzelne Beschreibung selbst untergliedert sich in mehrere Abschnitte und hat folgenden allgemeinen Aufbau (die englischen Begriffe stehen in Klammern): NAME: SYNTAX: (SYNOPSIS) BESCHREIBUNG: (DESCRIPTION) OPTIONEN (OPTIONS)
Name des Kommandos mit einer knappen Funktionsangabe. Hier ist die Syntax des Kommandos angegeben. Bei Systemaufrufen wird hier auch der Parametertyp spezifiziert. Hier ist die eigentliche ausführliche Beschreibung des Kommandos mit seinen Funktionen zu finden. Hier werden die einzelnen Optionen zum Kommando beschrieben. 369
Hilfe zur Selbsthilfe
DATEIEN: (FILES) SIEHE AUCH: (SEE ALSO) DIAGNOSTICS: FEHLER: (BUGS) BEISPIELE: (EXAMPLE) AUTOR: (AUTHOR)
Dateien, welche von dem Kommando verwendet werden. Verweise auf Kommandos mit ähnlicher oder ergänzender Funktion. Kurze Erklärung der möglichen Fehlermeldungen. Hier werden bekannte Fehler, Inkonsistenzen oder Probleme bei dem beschriebenen Aufruf aufgeführt. Hier sind – leider nur in wenigen Fällen – Beispiele zum Aufruf des Kommandos aufgeführt. Kurze Angabe zum Autor des Programms, dem man auch – falls angegeben – Fehlerberichte schicken kann.
Bei ›man‹ erfolgt die Anzeige – so man sie nicht auf eine Datei umlenkt1 – seitenweise. Dazu ruft ›man‹ weitgehend transparent das Programm ›less‹ auf (korrekt: das in der Umgebungsvariablen PAGER definierte Programm). Dieses führt die eigentliche Bildschirmanzeige durch. less wartet nach der Ausgabe einer Seite auf eine Tastatureingabe, um weiterzumachen. Die Eingabe der Leerzeichentaste gibt die nächste Seite aus, die Eingabe/Enter-Taste ((¢)) lässt die Anzeige genau um eine Zeile hochrollen. d, <Strg+d> ↑) blättert eine Zeile zurück, b oder Bild ↑ eine ganze Bildschirmseite. Mit oder (_ <Strg+l> gibt less den Bildschirm erneut aus. Mit /muster wird im Text (vorwärts) das angegebene Textmuster gesucht und die Anzeige dort fortgesetzt – mit ?muster rückwärts. q beendet die Anzeige von less und man kehrt in die normale Shell zurück – und zwar nur damit.2
13.3.4 info Das info-System, in vielerlei Hinsicht sehr ähnlich den man-Manualseiten, ist für komplexere Kommandos und Funktionen eine der detailliertesten Informationsquellen – natürlich neben Büchern und den später noch beschriebenen HOWTOs . info hat die folgende Syntax beim Aufruf: info [Optionen] Begriffe Im Gegensatz zu ›man‹, dessen Seiten eine einfache lineare Struktur besitzen und in denen man deshalb nur vorwärts und rückwärts blättern kann, sind die infoSeiten hierarchisch strukturiert und besitzen Querverweise – sozusagen Hyperlinks im ASCII-Terminal. Die einzelnen Abschnitte des info-Manuals werden als Knoten (nodes) bezeichnet. info zeigt in der Kopfzeile den Namen des Abschnittes (node) sowie den nächsten Abschnitt (next), den vorhergehenden (previous) und den
370
1. Dies ist wegen der Steuerzeichen zur Textauszeichnung teilweise schlecht lesbar, die Ausgabe von info ist besser geeignet für die Umlenkung in eine Datei. 2. Je nach Konfiguration gelingt dies auch am Ende der Ausgabe oder mit <Strg+c>.
13.3 Online-Hilfen: man, info und Co.
übergeordneten (up). Durch Eingabe von n, p und u wechselt man zu diesen Abschnitten. Innerhalb eines Abschnittes blättert man mit der Zwischenraumtaste weiter und mit Backspace zurück, mit b (beginning) kommt man an den Anfang des Abschnittes zurück. Querverweise sind in Menüs mit einem Stern am Zeilenanfang markiert: Hier kann man den Cursor mit den Pfeiltasten hinbewegen und über die Eingabetaste zum Querverweis wechseln. info wird mit q verlassen. Weitergehende ausführliche Benutzungshinweise bekommt man – wie sonst? – mit ›info info‹. Wie das man-Kommando hat info eine eigene Datenbasis bzw. info-Dateien. Wo diese liegen, ist in der Shell-Umgebungsvariablen INFOPATH festgelegt – oder man gibt den Pfad explizit vor. Die Dokumentation geht insofern über die des man-Kommandos hinaus, als hier – sofern von einem gnädigen Entwickler erstellt – auch Beispiele für die Anwendungen des Programms oder Kommandos gegeben werden und auch zumeist eine sogenannte Rationale (Begründung) mitgeliefert wird. Dies ist ein Abschnitt, der die Intention des Programms darlegt und weitere Hintergrundinformationen liefert. Hier sind zum Teil die gültigen Restriktionen explizit genannt und Unterschiede der Implementierung auf unterschiedlichen Plattformen. Summa summarum ist z.B. die Information zum Programm a2ps ein etwa 120-seitiges Dokument. Zusätzlich sind die info-Dokumente stärker als die man-Seiten thematisch gruppiert, so dass auch benachbarte Kommandos aufgeführt werden. Über Optionen lässt sich die Information einschränken. Die Option --usage selektiert z.B. nur die eigentliche Aufrufsyntax und die Beschreibung der Optionen.
13.3.5 man und info im Browser Eine grafische Version von ›man‹ ist (das etwas schlichte) xman. Nach dem Aufruf von xman erscheint eine minimalistische grafische Oberfläche, die die Funktionen von man und apropos bietet inklusive der Möglichkeit, sich die man-Einträge kapitelweise gruppiert anzeigen zu lassen. Die KDE - und GNOME -Hilfesysteme können die man-Seiten ebenso anzeigen. Ab SUSE-Version 9.1 sind auch sehr viele man- und info-Seiten als HTML-Dateien ver-
371
Hilfe zur Selbsthilfe
fügbar und können über den Konqueror mit folgender URL aufgerufen werden: man:cmd oder info:cmd Die Vorteile sind neben dem ansprechenderen Layout die Hyperlinks, die man hierbei nutzen kann. Im Bild 13-1 sehen Sie hierzu als Beispiel einen Ausschnitt für das Kommando sitar.
Bild 13-1: man-Pages über den Konqueror mit ›man:thema‹
372
13.3 Online-Hilfen: man, info und Co.
13.3.6 Hilfesysteme mit grafischer Oberfläche Mit Einführung grafischer Oberflächen unter Linux entstanden Hilfesysteme mit einfach zu bedienender grafischer Oberfläche. Sie sind bei deutschsprachigen Distributionen – etwa bei SUSE – in Teilen auch deutschsprachig. Sie bieten im Gegensatz zu den Linux-Manuals aber vorwiegend Einführungen und geben Hinweise. Ersetzen können sie damit die man- oder info-Seiten nicht. Da zwischen den zwei Hauptrichtungen der grafischen Linux-Desktops ein ständiger Wettstreit besteht, gibt es hier auch (mindestens) zwei Help-Browser: jener von KDE und den GNOME -Help-Browser – letzterer in der neueren Version als Teil des Dateimanagers nautilus. Sie lassen sich jeweils aus dem entsprechenden Desktop über Menüfunktionen in der Task-Leiste aktivieren. SUSE- und KDE-Hilfesystem unter dem KDE-Desktop
Diese Systeme sind nach dem Hypertext-Prinzip aufgebaut, das am Bildschirm in einem Viewer ein Übersichtsdokument anzeigt, in dem man mit der Maus auf bestimmte Stichwörter klicken kann und daraufhin nähere Informationen dazu bekommt. Auf diese Weise ist es möglich, schnell durch Informationen zu browsen. Sowohl im Hilfezentrum von KDE (dieses verbirgt sich hinter dem SUSE-Hilfesystem
Bild 13-2: man-Seiten im KDE-Hilfezentrum u und Dokumentation im GNOME- Hilfezentrum r
373
Hilfe zur Selbsthilfe
bzw. dem -Symbol und kann auch direkt unter khelpcenter aufgerufen werden) als auch in der GNOME- Variante lassen sich man-Seiten und info-Seiten suchen und anzeigen. Zumeist werden hier auch noch weitere Informationsquellen angeboten – bei SUSE z.B. auch die später noch beschriebenen HOWTOs. Beim KDE -Hilfezentrum muss vor der ersten Suche/Nutzung zunächst ein Index aufgebaut werden, wozu Super-User-Rechte notwendig sind. Unter GNOME lässt sich der Hilfe-Browser entweder direkt über gnome-help aufrufen (dies ruft seinerseits yelp auf) oder über das GNOME-Kontrollzentrum. Über die Indexfunktion kann man im GNOME-Hilfe-Browser statt zu navigieren per Suchbegriff sehr schnell nach den Einträgen suchen (im KDE-Hilfezentrum erfolgt dies über Suche). Zu den verschiedenen Anwendungen gibt es oft neben oder statt der man-Seiten weitere Dokumentation. Sie kann bei Programmen mit grafischer Oberfläche zumeist über einen Hilfeknopf, das Hilfemenü oder über (F1) abgerufen werden. Die Dokumentation selbst liegt in der Regel unter /usr/share/doc/packages/name.
13.3.7 ›Wie man‘s macht‹ – HOWTOs Zu zahlreichen komplexeren Themenbereichen gibt es in der Linux-Gemeinde sogenannte HOWTO-Beschreibungen. Sie sind häufig sowohl in HTML als auch in PDF verfügbar und existieren in zwei Varianten: Linux-HOWTOs und Linux-MiniHOWTOs . In ihnen werden bestimmte Themenbereiche recht detailliert und mit konkreten Konfigurationsbeispielen erläutert – in aller Regel in englisch bzw. amerikanisch. So gibt es z.B. ein gutes HOWTO zum Thema LVM (Logical Volume Manager), zum Thema Samba-Konfiguration oder zum Thema Bootdisk – die verschiedenen Arten Linux zu booten. Ein Teil davon ist nicht nur in englisch, sondern auch in anderen Sprachen – viele davon auch in deutsch – geschrieben. Sind sie, anders als bei SUSE und RedHat3, nicht Teil der Linux-Distribution, so findet man sie im Internet. Leider sind diese HOWTOs nicht alle an einer Stelle im Internet zu finden, sondern teilweise verstreut. Man muss also z.B. bei Google suchen, etwa mit ›Linux howto thema‹, wobei man das Thema vorzugsweise in englisch benennt. Wir haben einige Internetadressen zu HOWTOs im Literaturverzeichnis aufgeführt [37, 41, 42, 49, 51, 60]. Dazu gehört auch die sehr umfangreiche HOWTO-Liste unter der Homepage des TLDPs (The Linux Documentation Project): www.tldp.org/docs.html#howto
374
3. Zumeist unter /usr/share/doc/howto oder /usr/doc/howto.
13.4 Hilfe im Internet
13.3.8 FAQs und Guides Eine weitere Art typischer Linux-Dokumentation sind FAQs – Frequently Asked Questions. Dies sind Zusammenstellungen von häufig gestellten Fragen zu einem Thema und Antworten dazu. Bevor man in einem Linux-News-Forum Fragen stellt, sollte man nach entsprechenden FAQs suchen und zunächst dort prüfen, ob das Problem bereits behandelt wurde. Bei einigen Distributionen – so auch bei SUSE – sind eine Reihe von FAQs Teil des Lieferumfangs. Hat die eigene Linux-Distribution keine deutschsprachigen man-Seiten, so findet man auch hier bei tldp.org (siehe zuvor genannte URL ) man-Seiten in mehreren Sprachen, darunter in deutsch, französisch, spanisch, polnisch oder japanisch. Die Homepage des Linux-Documentation-Projects bietet darüber hinaus – allerdings zu weniger Themen – sogenannte Guides. Dies sind ausführlichere, buchähnliche Beschreibungen zu den behandelten Themen.
13.4 Hilfe im Internet 13.4.1 Support-Datenbanken Die kommerziellen Linux-Distributoren unterhalten in der Regel eine Support-Datenbank. Bei SUSE findet man diese (in der deutschen Version) z.B. unter: portal.suse.com/sdb/de/index.html Hier lässt sich sowohl nach Themen bzw. Kategorien suchen als auch per Volltextsuche nach einem Begriff. Die Datenbank enthält aufgetretene Probleme oder vielfach gestellte Fragen und deren Lösung (FAQs) – soweit vorhanden. Bei der Volltextsuche lassen sich über logische Operatoren wie AND, OR oder NOT auch komplexere Anfragen stellen. Die Support-Datenbank steht allen Besuchern kostenlos zur Verfügung. Bei RedHat, die ebenso eine Support-Datenbank unter www.redhat.com/apps/support/knowledgebase/ führen, gelangt man erst nach einer Registrierung in die Datenbank. Im zuvor genannten SUSE-Portal findet man auch ein elektronisches Formular für Support-Anfragen, muss sich (und das gekaufte SUSE-Produkt) dazu zuvor aber online registriert haben. SUSE bietet unter www.suse.de/de/private/support/online_help/howto/index.html ein reiches Spektrum an HOWTOs und FAQs, die in der Regel aktueller und vollständiger sind als diejenigen der letzten Distribution.
375
Hilfe zur Selbsthilfe
13.4.2 Online-Foren, Usergroups und Newsgroups Reichen die bisher aufgeführten Informationsquellen nicht aus, so kann man sich auch an eines der zahlreichen Linux-Foren im Internet wenden und dort seine Frage absetzen bzw. sein Problem schildern. Man erhält in aller Regel dazu recht schnell Anwort, sollte aber – wie bei Internetforen üblich – zuvor die für die eigene Distribution vorhandenen Manuale durchsucht und die zu vielen Foren vorhandenen FAQs durchstöbert haben, um nicht eine bereits häufig gestellte und in einer FAQ bereits beantwortete Frage zum hundertsten Mal zu stellen. Informationen zu solchen Linux-Foren findet man z.B. unter: www.linuxforen.de/forums/
Für Fragen, die man nicht sofort beantwortet haben muss, und für den Erfahrungsaustausch zu Arbeiten mit Linux bieten sich auch die Linux-Usergroups an, die es in zahlreichen größeren Städten gibt. Dort trifft man sich zumeist einmal im Monat zu einem Linux-Stammtisch. Eine Liste der Gruppen findet man z.B. unter: www.linux.de/groups/ Manchen hilfreichen Kommentar gibt es auch in den zahlreichen LinuxNewsgroups, darunter eine ganze Reihe unter den Namen comp.os.linux.xxx. Die Newsgroups und die Möglichkeit der Suche in deren Beiträgen findet man bei Google unter ›Groups‹ – die Gruppen sind hier hierarchisch gegliedert (comp R comp.os R comp.os.linux) – bzw. direkt unter: groups.google.de/groups?hl=de&lr=&group=comp.os.linux Hier kann man mit einem News-Client (z.B. den Mail&News-Client von Mozilla) auch eigene Fragen stellen (posten) und auf eine baldige Beantwortung hoffen – in der Regel mit Erfolg.
13.5 Notfall-CD und Knoppix Es kommt beim Rechnerbetrieb immer mal wieder zu Fällen, in denen ein System nicht mehr startet, sei es, dass das Root-Dateisystem, eine wichtige Startdatei oder die Partitionstabelle beschädigt ist. Auch können im Einzelfall Viren das System unbrauchbar machen. In solchen Situationen kann eine bootfähige Notfall-LinuxCD helfen. Das von ihr gestartete Linux erlaubt, sofern richtig konfiguriert und mit den notwendigen Programmen versehen, Reparaturen an dem schadhaften System vorzunehmen oder gleich ganze Partitionen zurückzuladen. Dies bewährt sich nicht nur für Linux-Systeme, sondern erlaubt unter Umständen mit den richtigen Werkzeugen auch, Windows-Systeme zu reparieren oder zumindest wertvolle Daten auf einen anderen Datenträger oder über Netz zu sichern. 376
Am einfachsten ist es, bei der Notfall-CD auf eine fertige Version zurückzugreifen.
13.5 Notfall-CD und Knoppix
SUSE bietet in der ›Personal Edition‹ die sogenannte Live-CD. Am bekanntesten dürfte wohl die Knoppix-CD sein, auf die wir unten näher eingehen. Als Ersatz für eine Notfall-CD kann auch die Installations-CD mit dem Rettungssystem (rescue
system) herhalten, zumindest für einen Teil der Aufgaben. Sicher kann man sich mit etwas Arbeit auch selbst eine solche CD zusammenstellen. Hat man einen DVD-Brenner und kann von DVD booten, so bekommt man darauf ein sehr umfangreiches Linux mit praktisch allen Werkzeugen – sogar mit grafischer Oberfläche. Eine Anleitung dazu (in englisch) findet man auf der Internetseite gnubox.dyndns.org:8080/~sunil/knoppix.php von Sunil Thoms Thonikuzhiyil. Knoppix Eine rundum gelungene und praktische Notfall-CD hat Klaus Knopper zusammengestellt und diese als Knoppix-CD bekannte Version im Internet kostenlos verfügbar gemacht. Die ISO-Images bekommt man über www.knoppix.de bzw. www.knopper.net/knoppix, hier finden Sie auch Versandadressen für fertig gebrannte CDs. Knoppix liegt in regelmäßigen Abständen Fachzeitschriften bei [25, 26], außerdem erhält man die CD auf fast allen Linux-Messen für eine geringe Schutzgebühr. Knoppix wird ständig gepflegt und kann – nach einigen wenigen Fragen beim Starten – vollständig im Hauptspeicher und von CD laufen, ohne dass dazu Änderungen auf einer lokalen Platte notwendig sind. Da auch bereits ein ganzes Spektrum von Netzwerkkarten und Netzwerk-Tools darauf vorhanden sind, kann man sogar auf andere Rechner im lokalen Netz oder sogar Updates über Internet herunterladen. In der Zeitschrift c’t erschien dazu ein guter Überblick mit einer ganzen Reihe nützlicher Hinweise [7]. Die Knoppix-CD enthält für die Reparatur von Windows-Partitionen neben dem Programm fsck.ntfs und fsck.vfat auch das Programm ntfix. Defekte oder falsch gesetzte Partitionstabellen lassen sich mit Bedacht und unter Verwendung der entsprechenden Dokumentation mit dem Programm testdisk korrigieren, defekte Dateisysteme mit großer Vorsicht mit debugsfs (für Dateisysteme vom Typ ext2/etx3) oder mit debugreiserfs für das ReiserFS reparieren. Mit dem Programm lsdel lassen sich gelöschte Dateien auf einem ext2-Dateisystem wieder sichtbar machen, sofern die Dateiköpfe (Inodes) und Datenblöcke noch nicht wiederverwendet wurden. Dabei erhält man aber zunächst nur die Inode-Informationen zurück, welche nicht den Dateinamen enthalten. Man muss die Datei also über die im Inode vorhandenen Angaben wie Größe und Änderungsdatum einer gelöschten Datei zuordnen und neu benennen. Natürlich sind auch die Standardwerkzeuge wie dd, tar und cpio vorhanden. Mit parted lassen sich Platten partitionieren oder die Partitionen verändern. Das Programm partimage erlaubt ganze Partitionen zu sichern oder zu restaurieren – sowohl auf oder von lokalen Medien als auch zu anderen Rechnern im Netz.
377
Hilfe zur Selbsthilfe
Während dd bei einem Lesefehler (z.B. vom Band) abbricht, erlaubt das auf der Knoppix-CD vorhandene dd-rescue den Fehler zu überspringen und zumindest den Rest noch zu lesen. Auch sind rsync, ssh und scp darauf zu finden, so dass man mit ihnen sowohl Dateien oder ganze Verzeichnisse und Dateibäume auf andere Systeme im Netz kopieren als auch von dort laden kann. Virenscanner sind ebenfalls Teil der Notfall-CD – primär ausgelegt für die Reparatur von befallenen Windows-Partitionen. Die Virensignaturen lassen sich über Internet aktualisieren. Daten lassen sich, sofern ein Netzwerk-Interface vorhanden ist, sowohl auf andere (Remote-)Systeme sichern als auch von dort zurückladen – und all dies, ohne dass das eventuell defekte oder korrupte System auf der lokalen Bootplatte aktiviert werden muss. Die Knoppix-CD bietet mit der Unterstützung von Captive sowohl lesenden als auch schreibenden Zugriff auf Windows NTFSDateisysteme – was das Standard-Linux bis zur Version 2.6.0 noch nicht kann (schreiben). Diese Lösung ist noch nicht absolut stabil, in Notsituationen aber unter Umständen recht nützlich. Knoppix eignet sich auch dazu, ein Linux-System auf Root-Kits zu untersuchen. Root-Kits sind Schädlinge, die sich im Kernel eingenistet haben und sich dort erfolgreich gegen Entdeckungsversuche wehren können – natürlich nur, wenn der Kernel läuft. Root-Kits lassen sich entdecken, wenn das befallene Linux-System nicht gestartet ist und dessen Systemdateien von einem sauberen System, in diesem Fall Knoppix, gescannt werden. Das Kommando hierzu heißt chkrootkit.
13.6 Root-Passwort vergessen Das Root-Passwort neu zu setzen, wenn man es vergessen hat, ist keine allzu große Sache – weder für den Systemverwalter noch für einen Unbefugten. Voraussetzung ist, dass man Zugang zu einem bootfähigen Laufwerk hat und das hoffentlich gesetzte BIOS-Passwort kennt. Auch letzteres lässt sich übrigens auf vielen Rechnern mit mehr oder weniger Aufwand umgehen. Fahren Sie Ihr System mit der Installations-CD, der Rescue-CD oder mit Knoppix hoch, dann können Sie sich zwar als root ohne Passwort anmelden, doch dieses root gilt nur für die RAM-Disk. Mounten Sie nun Ihr bisheriges Dateisystem für root (/) z.B. unter mount /dev/hdb6 /mnt Wechseln Sie mit chroot /mnt die aktuelle root und ändern Sie nun mit 378
passwd root
13.7 Wenn die Maus nicht funktioniert
das Root-Passwort. Um wieder mit der vorherigen root zu arbeiten, schließen Sie mit exit Sie befinden sich dann wieder in der ursprünglichen root und können hier das System herunterfahren (hierbei wird die gemountete /dev/hdb6 automatisch wieder ausgehängt) bzw. den Rechner neu starten.
13.7 Wenn die Maus nicht funktioniert Mit Tastaturkürzeln kann man sich weiterhelfen, wenn die Maus nicht funktioniert oder KDE blockiert. Aber auch, um im Normalbetrieb schnell Zugriff auf bestimmte Programme bzw. Aktionen zu haben, können Tastaturkürzel sinnvoll sein. Wir haben die häufig benötigten Kombinationen in nachstehender Tabelle zusammengestellt. Tabelle 13-2: Wichtige Tastenzuordnungen in Linux Auswirkung
Tastaturkombination
Abmelden mit Auswahl für - Sitzung beenden - Rechner ausschalten - Rechner neu starten
<Strg+Alt+Ent>
Systemüberwachung
<Strg+Esc>
Befehlseingabe
Mausemulation
Aktuelles Fenster schließen
Fenster schließen (nach Auswahl mit der Maus)
Alle Fenster minimieren
Fenster verschieben
Auf ASCII-Terminal (virtuelle Konsole) wechseln (1 bis 6) Zurück zum grafischen Terminal Für weitere Sitzungen (soweit vorhanden)
... ...
Bildschirm sperren
379
Hilfe zur Selbsthilfe
Über das Kontrollzentrum R Regionaleigenschaften & Zugangshilfen R Tastenkürzel
finden Sie zudem eine Liste der standardmäßig zugeordneten Kürzel. Sie können hier auch noch weitere Tastaturkürzel anlegen. Nach Auswahl der Mausemulation mit kann der Mauscursor mit den Pfeiltasten bewegt werden, nach Drücken einer ›normalen‹ Taste wird der Modus wieder aufgehoben. In Fenstern können die Menüs der Menüleiste ausgewählt werden, indem man und den in der Menüleiste unterstrichenen Buchstaben drückt. Die Auswahl eines Menüpunktes geschieht analog.
13.8 Tastaturlayout Wie im Kapitel 4 (Bootvorgang) erwähnt, ist beim Start noch nicht die deutsche Tastatur zugeordnet. Hier sucht man oft verzweifelt nach den Zeichen =, |, \ oder /. Aus diesem Grunde haben wir hier die Gegenüberstellung der deutschen und amerikanischen/englischen Tastatur aufgenommen:
Bild 13-3: Deutsche und englische Tastatur
380
A Literaturhinweise und Quellenangaben
A.1
Bücher und Artikel aus Zeitschriften
[1]
J. Bager, V. Zota: System-Spagat: Windows- und Linux-Anwendungen parallel betreiben. c't 2003, Heft 12, S.126.
[2]
D. J. Barrett, R. E. Silverman: SSH. The Secure Shell. O’Reilly, 2001.
[3]
D. J. Barrett, R. E. Silverman, R. G. Byrnes: Linux-SicherheitsKochbuch O’Reilly, 2003.
[4]
O. Borkner-Delcarlo: Das Samba Buch. SUSE-Press, 2001. Dieses Buch wendet sich an alle, die Samba noch effektiver einsetzen möchten. Es behandelt allerdings noch die Version Samba 2.2.2.
[5]
W. Cheswick, St. Bellovin, A. Rubinx: Firewalls and Internet Security: Repelling the Wiley Hacker. Addison-Wesley, 2003.
[6]
O. Diedrich: Fürs Protokoll! Journaling Files Systems für Linux. In: c’t 2002, Heft 6, S. 228 ff.
[7]
O. Dietrich: Retter in der Not. Knoppix als Werkzeug zur Systemwartung und Netzwerkdiagnose. in: c´t 2003, Heft 4, S. 104 ff.
[8]
O. Diedrich: The Next Generation. Linux 2.6: Fit für die Zukunft. in: c't 2003, Heft 24, S. 1947 ff. 383
Literaturhinweise und Quellenangaben
384
[9]
T. Drilling: Drucken unter Linux. Software & Support Verlag, 2002. Das Buch behandelt die wesentlichen Print-Spooler unter Linux (LPR, LPRng, LPQ, CUPS, Turbo-Print, Gimp-Print, …).
[10]
J. Gulbins, K. Obermayr, Snoopy: Linux. Konzepte, Kommandos, Oberflächen. Ein umfassendes Nachschlagewerk als Ergänzung zu diesem Buch. Springer-Verlag, Berlin, Heidelberg, 2003.
[11]
M. Kofler: Linux. Installation, Konfiguration, Anwendung. Dies ist für fortgeschrittene Linux-Benutzer eine Art Referenzwerk zu verschiedenen Linux-Systemen. Addison-Wesley, München, 2004.
[12]
V. Lendecke: Samba für Linux/Unix-Administratoren. dpunkt.verlag, Heidelberg, 2003.
[13]
Christian Ney: Lese-Schutz. Verschlüsseltes Home-Filesystem unter Red Hat, Debian und Gentoo. Linux-Magazin 2004, Heft 3, S. 467 ff.
[14]
Stefan Strobel: Firewalls und IT-Sicherheit. Grundlagen und Praxis sicherer Netze: IP-Filter, Content Security, PKI, Intrusion Detection und Applikationssicherheit. dpunkt.verlag, Heidelberg, 2003.
[15]
SUSE LINUX professional Benutzerhandbuch Version 9.1. SUSE LINUX AG 2004.
[16]
SUSE LINUX professional Administrationshandbuch Version 9.1. SUSE LINUX AG 2004. Das Administrationshandbuch wird bei der preiswerteren ›Personal Version‹ zwar nicht in gedruckter Form mitgeliefert, findet sich aber als Online-Version unter der SUSE-Hilfe (Doppelklick auf ›Administration‹ im linken Rahmen der Hilfe).
[17]
M. R. Sweet: CUPS: Common Unix Printing System. For Beginner to Advanced. SAMS Publishing, Frankfurt, 2002. Ein umfassendes Buch zum Drucken mit und Einrichten von CUPS.
[18]
Karsten Violka: Geiselnahme – Microsofts NTFS-Treiber unter Linux nutzen. c’t 2004, Heft 4, Seite 200
[19]
U. Wolf: Jetzt: Samba! Mehrere gut verständliche Artikel zu Samba in: Linux-Magazin 2003, Heft 2, S. 29 ff.
A.2 Zeitschriften zum Thema Linux
[20]
Christine Wolfinger: Keine Angst vor Linux/Unix. Springer-Verlag, Heidelberg, 2002. Weitere Informationen unter: www.christinewolfinger.de
[21]
Block-Organisatoren. Journaling-Dateisysteme im Überblick. Linux-Magazin 2004, Heft 3, S. 32 ff.
[22]
Pisa-Studie. Performance-Vergleich von Ext 2/3, JFS, ReiserFS und XFS. Linux-Magazin, 2004, Heft 3, S. 38 ff.
[23]
Handwerk mit Format. Dateisystem-Werkzeuge benutzen. Mount-Optionen für Journaling-Dateisysteme. Linux-Magazin 2004, Heft 3, S. 41ff.
[24]
Frühjahrsputz. Festplatte aufräumen mit Filelight. Linux User 2004, Heft 8, S. 40 ff.
A.2
Zeitschriften zum Thema Linux
[25]
Linux New Media AG: Linux Magazin und Linux User Auf Linux spezialisierte deutschsprachige Zeitschriften mit Zugang zu Artikeln im Internet. Hier finden Sie eine breites Angebot an Softwarethemen, ebenso Artikel zur Eignung von Hardware für Linux und Hilfe bei Problemen verschiedenster Art: www.linux-magazin.de, www.linux-user.de
[26]
Heise Verlag: c‘t und iX Die beiden Zeitschriften c‘t und iX des Heise-Verlags bieten regelmäßig sehr fundierte Unix-/Linux-Artikel. Über die Suchfunktion der Internetseite gibt es Zugang zu zahlreichen Artikeln. Empfehlenswert auch die Sicherheitsseite (security) mit Hinweisen zu generellen Sicherheitsthemen sowie aktuellen Sicherheitsproblemen und deren Beseitigung: www.heise.de
A.3
Linux-Informationen im Internet
[27]
Bash 3.0 Die Quellen der aktuell neusten Bash-Version – bash 3.0 – lassen sich hier herunterladen: ftp://ftp.gnu.org/pub/gnu/bash/bash-3.0.tar.gz
[28]
CUPS – Common Unix Printing System Homepage von CUPS.org. Hier sind die neuesten Versionen von CUPS und eine Reihe von Dokumentationen dazu für unterschiedliche Plattformen: www.cups.org 385
Literaturhinweise und Quellenangaben
386
[29]
Cygnus: cygwin Die Firma Cygnus bietet freie Software-Gnu-Tools an, welche zahlreiche Unix-/Linux-Funktionen unter Windows zur Verfügung stellen: www.cygwin.com
[30]
Thursby: Dave Webseite des Softwareherstellers für Dave, einer Software zum Austausch von Daten zwischen Windows und Macintosch OS 9.x: www.thursby.com/products/dave.html
[31]
Filelight Das Programm Filelight stellt den Platzverbrauch von Verzeichnissen und Dateien grafisch dar. Die Internetseite enthält auch Links zu RPM-Paketen von Filelight für verschiedene Distributionen: www.methylblue.com/filelight/
[32]
Developer Shed: File Synchronization With Rsync www.devshed.com/c/a/Administration/File-Synchronization-WithRsync/
[33]
Filesystem Hierarchy Standard Group: Filesystem Hierarchy Standard www.pathname.com/fhs/
[34]
Fink-Projekt-Homepage Hier findet man für Mac OS X viele von Linux her bekannte Open-SourceKomponenten wie etwa rsync, unison, GIMP, eine KDE- und GNOME-Oberfläche und viele Pakete aus den KDE- und GNOME-Projekten: fink.sourceforge.net
[35]
Gnu: GNU Grub Hier findet man alles über den Bootloader GRUB (auch in einer deutschen Version): www.gnu.org/software/grub und www.gnu.org/software/grub/grub.de.html
[36]
Gnu-Org Hauptseite von GNU und der Free Software Foundation. Hier finden Sie praktisch alles, was an freier Software zu Linux gehört bzw. unter Linux läuft: www.gnu.org bzw. www.gnu.org/software
[37]
HOWTO HOWTOs des Linux Documentation Projects: www.tldp.org/HOWTO/HOWTO-INDEX/howtos.html Das deutsche Linux-HOWTO-Projekt findet man unter: www.linuxhaven.de/dlhp/
A.3 Linux-Informationen im Internet
[38]
ISO-Images Zugang zu ISO-Images vieler Distributionen. Ein ISO-Image ist das CD-Abbild einer Distribution, das direkt auf eine CD gebrannt werden kann. Man erhält so eine Kopie der Original-Distributions-CD. www.linuxiso.org
[39]
KDE-Dokumentation Dokumentation zu KDE-Programmen unter:
docs.kde.org [40]
Knoppix Klaus Knopper hat mit Knoppix eine kostenlose Distribution geschaffen, welche auf einer CD ein vollständig lauffähiges, jeweils aktuelles Linux auf Basis von Debian-Linux bietet. Es unterstützt ein relativ breites Hardwarespektrum. Der Vorteil besteht darin, dass man damit ein Linux starten kann, ohne auf der Festplatte eines PCs Änderungen oder Installationen vornehmen zu müssen. Man kann so problemlos Linux ausprobieren und testen. Auch zur Reparatur von Linux- und Windows-Systemen kann es nützlich sein. Das System lässt sich ebenso auf einer Festplatte installieren und danach von dort starten. Das CD-Image lässt sich aus dem Internet herunterladen, Sie finden hier auch Adressen, wo Sie eine Knoppix-CD kaufen bzw. bestellen können. www.knopper.net/knoppix
[41]
The Linux Documentation Project Das (große) Dokumentationsprojekt zu Linux. Hier sind zahlreiche Informationen zu Linux dokumentiert – darunter auch eine große Anzahl von LinuxHOWTOs: www.tldp.org
[42]
Linux Encryption-HOWTO Homepage Allerlei Informationen zur Verschlüsselung von Partitionen, allerdings nicht mehr ganz up to date: encryptionhowto.sourceforge.net
[43]
Th. Ermer, M. Myer: Die Linuxfibel Linuxfibel mit einer sehr guten und detaillierten Behandlung zahlreicher Linux-Themen, angefangen von ersten Schritten über die Shells und die Bash bis hin zu Netzwerkthemen. www.linuxfibel.de
[44]
LinuxPrinting.org Das Thema dieser Internetseite ist Drucken unter Linux. Hier findet man Druckertreiber und ähnliche Ressourcen für freie Betriebssysteme wie GNU/Linux: www.linuxprinting.org 387
Literaturhinweise und Quellenangaben
388
[45]
Linux-USB Zahlreiche Informationen zur USB-Unterstützung bei Linux, insbesondere Gerätetreiber-Unterstützung für die verschiedenen USB-Geräteklassen: www.linux-usb.org
[46]
Linux-Übersicht Rund um Linux, insbesondere auch eine Übersicht über Distributionen: www.planetpenguin.de
[47]
Linux Winmodem Support Die Seite bietet Informationen zur Unterstützung von ›Winmodems‹ unter Linux. Bei ihnen ist ein Teil der Hardwarefunktionalität in den (Windows-) Treiber verlagert. Werden diese Modems auch von Linux unterstützt, heißen sie Linmodems. www.linmodems.org
[48]
LinuxWiki.org Eine Informationdatenbank zu nahezu allen Themen rund um GNU/Linux. Wie es sich für ein Wiki gehört, kann jeder einfach Korrekturen, Verbesserungen oder eigene Beiträge einbringen: www.linuxwiki.org oder www.linuxwiki.de Eine Übersicht über Linux-Distributionen, angefangen von den großen bekannten über Rettungssysteme und Linux für Router bis hin zu speziellen Anforderungen und Sourcecode-Distributionen findet man unter: www.linuxwiki.org/Distribution
[49]
A. Lewis: LVM Howto www.tldp./HOWTO/LVM-HOWTO/
[50]
OpenSSH for Windows Die Internetseite bietet u.a. eine ssh-Server-Software für Windows an: sshwindows.sourceforge.net/
[51]
RPM.org – Homepage des ›RPM Packet Managers‹ Enthält weiterführende Links unter anderem zu HOWTOs und Tutorials. Nicht immer ganz frisch: www.rpm.org Suchmaschinen für RPM-Pakete findet man unter: www.rpmfind.net sowie unter www.rpmseek.com
[52]
Kurt Pfeifle: The KDEPrint Handbook Ausführliche Beschreibung zum Drucken unter Linux und zum Aufsetzen und Administrieren der Drucker-Server mit dem Fokus auf KDE und CUPS. printing.kde.org/documentation/handbook/
[53]
Namesys.com: ReiserFS Aktuelle Informationen zum Dateisystem ReiserFS sowie die Downloads dazu sind zu finden unter: www.namesys.com
A.3 Linux-Informationen im Internet
[54]
Samba Homepage der freien Samba-Entwicklung. Hier findet man neben Nachrichten, Neuigkeiten und den neuesten Versionen auch eine Reihe nützlicher Dokumentationen: www.samba.org/samba/samba.html
[55]
SelfLinux SelfLinux ist ein relativ junges Linux-Projekt, das umfassende und einfach erklärende Hypertext-Dokumentation zur Verfügung stellt: www.selflinux.org SelfLinux ist auch in neueren SUSE-Distributionen enthalten (nachzuinstallieren) und steht dort unter: /usr/share/doc/selflinux
[56]
SUSE-Homepage
www.suse.de Die offizielle Firmenseite von SUSE. Die SUSE Supportdatenbank mit Suche nach Stichwörten und nach Sachgebieten zu SUSE Linux findet man unter: cds.suse.de und portal.suse.de und die SUSE-Hardwaredatenbank mit den aktuell unterstützten Geräten unter: cdb.suse.de. [57]
SUSE: SLES – SUSE Linux Enterprise Server Information zur kommerziellen SUSE Linux-Variante:
www.suse.de/sles [58]
SUSE: AutoYaST AutoYaST ist ein nützliches Programm zur automatisierten Linux-Installation auf mehreren Rechnern: www.suse.de/~nashif/autoinstall/
[59]
System Administrator Appreciation Day Offizielle Webseite des Systemverwaltertages: System Administrator Appreciation Day – A special day, once a year, to acknowledge the worthiness and appreciation of the person occupying the role, especially as it is often this person who really keeps the wheels of your company turning. www.SysAdminDay.com
[60]
tuxmobil.org: Linux with Laptops, Notebooks, PDAs and Mobile Cell Phones. Anleitungen, Tipps und HOWTOs zur Installation und zum Betrieb von Linux (und anderen Unix-Varianten) auf mobilen Geräten, und zwar über die gesamte Palette von Laptops/Notebooks, PDAs bis hin zu Mobiltelefonen und portablen Musik- und Videoabspielgeräten: www.tuxmobil.org Eine weitere gute Quelle mit einem übersichtlichen Einstieg, sortiert nach Geräteherstellern, ist: www.linux-on-laptops.com bzw. linux-laptop.net 389
Literaturhinweise und Quellenangaben
[61]
390
Xtelligent: Steckbriefe Die Firma xtelligent bietet unter der Rubrik Wissen eine Sammlung von Steckbriefen. Hier finden Sie in prägnanter Form das Wesentliche u.a. über Linux, Apache, Bind, CUPS, OpenLDAP, OpenSSH, OpenSSL, Postfix, qmail, Sendmail, Samba, Squid und Webmin: www.xtelligent.de/wissen/steckbriefe/
B
Glossar
In diesem Anhang sind Begriffe aus diesem Buch und teilweise aus dem Einführungsbuch ›Keine Angst vor UNIX/Linux‹ zusammengestellt. Sollten Sie den von Ihnen gesuchten Begriff nicht gefunden haben, könnten einige Suchmaschinen und Enzyklopädien im Internet vielleicht weiterhelfen: http://de.wikipedia.org/wiki/Wikipedia:Portal http://en.wikipedia.org/wiki/ http://wombat.doc.ic.ac.uk/foldoc/ www.kleines-lexikon.de/
391
Glossar
A Ablaufsteuerung – In einer Shellprozedur können durch Abfragen wie ›if .. then‹, ›for .. do‹, ›case .. in .. ‹ usw. unterschiedliche Kommandofolgen je nach Ergebnis der Abfrage durchgeführt werden Absoluter Pfadname – Er beginnt immer mit root (der Wurzel des Dateibaumes ›/‹) und enthält alle Directories bis zu dem gewünschten Dateinamen (z.B. /home/monika/.profile) Account R Benutzerkennung ACL (Access Control List) – Hiermit können unter Linux feiner detaillierte Zugriffsrechte vergeben werden ACPI (Advanced Configuration and Power Interface) – Bietet u.a. Stromsparfunktionen (passende Hardware und passendes BIOS vorausgesetzt). Active Directory – Verzeichnisstruktur unter Windows-Netzen mit Domänen basierend auf LDAP. Es ist voll integriert mit DNS und TCP/IP. Administrator R Systemadministrator (Systemverwalter, Super-User) ADSL (Asymmetric Digital Subscriber Line) – Digitale Anbindung von Rechnern über Telefonleitung an das Internet. Geschwindigkeit bis 3 MBit/s (Megabit per second) zum Herunterladen (downstream) und 384 kBit/s zum ins Netz übertragen – Hochladen (upstream). Bei (symmetrischem) DSL ist die Geschwindigkeit in beiden Richtungen gleich schnell. AFS (Apple File Sharing) – Netzwerkprotokoll unter Apple Macintosh AIT (Advanced Intelligent Tape) – Ein von Sony entwickeltes Magnetband zum Speichern von großen Datenbeständen (über 50GB). Analog-Modem (Modulator/Demodulator) – Verbindung von Rechnern analog über Telefonleitung. Es wandelt die digitalen Daten eines Rechners in analoge Form (Töne bestimmter Frequenzen) für die Datenübertragung um und umgekehrt. Arbeitsfläche – Im KDE, GNOME oder CDE wird die Bildschirmfläche so benannt, auf der Objekte wie Ordner, Notizblätter oder ein symbolisierter Bildschirm (Terminalfenster) abgelegt werden können. Man spricht deshalb auch von einer Schreibtischumgebung. API (Application Program Interface) – Schnittstellenbeschreibung zur Programmierung von Anwendungen. Definiert, wie Programme miteinander kommunizieren sollen, z. B. für die Kommunikation mit dem Betriebssystem, einer Anwendung oder für die Ansteuerung von Geräten. APM (Advanced Power Management) R ACPI ARP (Address Resolution Protocol) – Im LAN-Bereich Zuordnung zu den Hardwareadressen (MAC) auf den Netzwerkkarten. Temporäre Speicherung im sog. ARP Cache. Ein auf R Broadcast basierendes Protokoll. ARPANET (ARPA network) – Erste Netzwerkverbindungen amerikanischer Universitäten aufbauend auf dem Netzwerk des Verteidigungsministeriums (1969) ASCII-Code (American Standard Code for Information Interchange/Amerikanischer Standard Code für Informationsaustausch) – Standard für die rechnerinterne Darstellung von Zahlen und Zeichen basierend auf 7 bzw. 8 Bit Atalk – Kommunikationsprotokoll unter Apple Macintosh ATAPI (Advanced Technology Attachment Packet Interface) – Standardschnittstelle für Massenspeichergeräte wie Platten oder CD-ROMs Authentifizierung – Identitätsprüfung eines Benutzers beim Anmelden an einen Rechner oder innerhalb eines Netzwerks (z.B. mittels Passwort oder Chipkarte)
392
Glossar
B Backend R Frontend Backup – Sicherung Bandmarke – Zeichen, das zur Trennung von Dateien auf ein Band geschrieben wird (z.B. um das Ende einer Datensicherung auf Band zu markieren) R Gap Bash (Bourne again Shell) – Wird unter Linux als komfortable Benutzerschnittstelle genutzt (einfachere Handhabung als die Korn-Shell) BASIC (Beginner´s All purpose Symbolic Instruction Code) – Einfache Programmiersprache Baumstruktur – Struktur eines Dateisystems, das ähnlich eines Baumes von der Wurzel über den Stamm sich zu Ästen verzweigt mit Verzeichnissen und Unterverzeichnissen. Benutzerkennung – Name, auch account genannt, mit dem sich der Benutzer anmeldet. Benutzer unter Linux sind in der Datei /etc/passwd eingetragen Bereitzeichen oder Prompt – Die Shell zeigt durch folgende Symbole am Bildschirm an, ob sie weitere Aufträge annehmen kann: $ Prompt für normale Benutzer in der Bourne- und Korn-Shell % Prompt für normale Benutzer in der C-Shell # Bereitzeichen für Systemverwalter > Hinweiszeichen, dass die Shell weitere Angaben erwartet name@host:~> Defaulteinstellung für den normalen Benutzer bei der Bash mit Anzeige des aktuellen Verzeichnisses Betriebssystem – Das Steuerungs- und Verwaltungsprogramm des Rechners, der damit alle Fähigkeiten und Möglichkeiten den Anwendungsprogrammen zur Verfügung stellt Binär – Bedeutet: aus 2 Einheiten bestehend. Zahlen werden nur z.B. aus den Werten 1 und 0 dargestellt: 1=00001, 2=00010, 3=00011, 4=00100 BIND (Berkeley Internet Name Domain) – Ein Programm zur Namensauflösung von und nach IPNummern BIOS (Basic Input/Output system) – ›Fest eingebautes‹ Programm, das beim Einschalten das System überprüft und nach einem ausführbaren Programm (Bootmanager, Betriebssystem) sucht R MBR R Bootmanager Bit (Binary Digit) – Kleinste Informations- oder Speichereinheit, z.B. 0 oder 1 Bluetooth – Industriestandard für die drahtlose Vernetzung von Geräten mit geringer Reichweite Bootmanager (Bootloader) – Unter Linux LILO (Linux Loader) und GRUB (Grand Unified Bootloader). Spezielle Software, die gewöhnlich vom BIOS aus von einem bootfähigen Medium geladen und anschließend ausgeführt wird. Der Bootloader lädt dann weitere Teile des Betriebssystems, gewöhnlich einen Kernel. Die Startsequenz des Bootmanagers befindet sich im ersten Block des bootfähigen Mediums R MBR, Master Boot Record Bridge (Brücke) – Verbindung zwischen Netzwerken auf der Data-Link-Ebene (R OSI-Schichtenmodell), Kontrolle und Weiterleitung der Daten Broadcast (›herausposaunen‹ bzw. Nachricht an alle senden, Radiomeldung) – IP-Adresse für eine Gruppe von Rechnern BSI (Bundesamt für Sicherheit in der Informationstechnik) – Versteht sich als Beratungs- und Unterstützungsinstanz für Behörden, Wirtschaft und private Nutzer mit dem Ziel der Förderung der IT-Sicherheit. Bugs (Wanze, Defekt) – Es handelt sich hierbei um Fehler in einem Programm Byte – Zusammenfassung von 8 Bit, mit der ein Zeichen oder eine Ziffer z.B. im ASCII-Code binär dargestellt werden kann. Meistens kleinste adressierbare Einheit bei Speichermedien.
393
Glossar
C C – Programmiersprache, in der u.a. Linux geschrieben ist. CAD (Computer Aided Design) – Rechnerunterstütztes Konstruieren, gemeinhin die Übertragung aller Arbeiten vom Zeichenbrett auf den grafischen Bildschirm eines CAD-Systems CAM (Computer Aided Manufacturing) – Rechnergestützte Produktion Carriage Return (CR) – Wagenrücklauf, entspricht auf dem Terminal der Eingabe- oder Entertaste CDE (Common Desktop Environment) – Eine grafische Oberfläche, die die bisher unterschiedlichen Desktop-Programme unter Unix-Derivaten ablöst bzw. erweitert. Es wurde gemeinsam von den Firmen Hewlett-Packard, IBM, Novell und Sun Microsystems entwickelt. Unter Linux wird vorwiegend R KDE oder R GNOME eingesetzt. CERTs (Computer Emergency Response Teams) – Zentrale Anlaufstellen zur Lösung von Problemen der Rechner- und Netzwerksicherheit. Beobachten die Gefahrenlage und informieren (angemeldete) Kunden von neu aufgetretenen Risiken. CIFS (Common Internet File Sxstem) R SMB CIM (Computer Integrated Manufacturing) – Gesamtunterstützung der Fertigung von Bestellung über Entwicklung und Konstruktion bis hin zur Auftragsabwicklung Client (Kunde) – Ein Computersystem oder -prozess, das/der einen Dienst von einem anderen Computersystem oder -prozess ( R Server) in Anspruch nimmt. Hierfür benötigen die Programme zum Austausch ein Protokoll. Ein Client ist ein Teil einer Client-Server-Softwarearchitektur. Client-Server-Architektur – Verteilung von Diensten in Netzwerken zur effektiven Nutzung der einzelnen Rechnerkomponenten und Ressourcen COBOL (Commercial Business Oriented Language) –Programmiersprache für kommerzielle Problemlösungen Compiler – Übersetzungsprogramm, um Quelldateien einer Programmiersprache in ein ausführbares Programm zu übersetzen (Binärcode oder Maschinencode). CPU (Central Processing Unit) – Prozessor CUPS (Common Unix Printing System) – Drucksystem unter Linux, welches auch recht einfach die Einbindung von (freigegebenen) Druckern an im Netz befindlichen Windows- und Mac OS-Systemen erlaubt. Es verwendet als Kommunikationsprotokoll IPP und besitzt damit ein gut ausgebautes API.
D Daemon-Programm (Disk and execution monitor) – Ein im Hintergrund wachender Prozess Data Link Layer – Auch MAC Layer genannt ( R MAC-Nummer der jeweiligen Netzwerkkarte), 2. Schicht des R OSI-Schichtenmodells DAT-Laufwerk (Digital Archiv Tape) – Laufwerk für Magnetbänder von 1,2 GB bis etwa 10 GB Datei – Logischer Datenbereich auf einem Speichermedium Dateinamenexpansion – Ersetzung von ›Metazeichen‹ durch alle vorhandenen Dateinamen, die den vorgegebenen Auswahlkriterien der Metazeichen entsprechen Dateitypen – Unter Linux/Unix gibt es verschiedene Dateitypen, die z.B. bei dem Kommando ls -l gekennzeichnet sind mit: d Verzeichnis, - normale Datei, l symbolischer Link, c (character) zeichenorientiertes Gerät, b blockorientiertes Gerät. Defragmentieren R Fragmentierung
394
Glossar
DENIC (Deutsches Network Information Center) – Gesellschaft, die Internetdomänen in Deutschland verwaltet und vergibt: DENIC eG Domain Verwaltungs- und Betriebsgesellschaft, Wiesenhüttenplatz 26, 60329 Frankfurt am Main. Device (Gerätezuordnung) – Unter Linux/Unix sind im Verzeichnis /dev die devices (Gerätedateien wie Drucker, Terminal, Platte etc.) eingetragen. Desktop – die Schreibtischumgebung oder Arbeitsfläche in einer grafischen Oberfläche DHCP (Dynamic Host Configuration Protocol) – Dienst, der innerhalb eines Netzes dynamische IP-Adressen vergibt. Dialogbox – Ein Menü-Fenster, in dem verschiedene Programmaktionen ausgewählt oder zusätzliche Angaben hierzu eingegeben werden können. Directory – Auch Verzeichnis genannt, beinhaltet unter Linux/Unix eine Liste der enthaltenen Dateien und Unterverzeichnisse. Disk – Magnetplatte oder optische Platte zur Datenspeicherung DISPLAY – Variable unter Unix/Linux. Notwendig, um auf einer grafischen Oberfläche (X-Window) zu arbeiten. DMA (Direct Memory Access) – Bedeutet, dass der Datentransfer direkt zwischen einem Gerät und dem Hauptspeicher erfolgt, ohne über die CPU zu gehen DNS (Domain Name System) – Zuordnung eines Namens zu einer eindeutigen Internetadresse. Der Rechner, der diese Zuordnung durchführt, wird als DNS-Server oder Nameserver bezeichnet R BIND R Nameserver Domainnamen – Domain ist eine Gruppe von Computern in einem Netz, deren letzter Teil des Namens den Domainnamen enthält. Die Syntax des Domainnamens: [Rechnername.][Abteilung.][...]Domain.de wobei ›.de‹ die R TLD darstellt, die je Land unterschiedlich ist. Der Domainname (oft die Firmenbezeichnung) und die TLD müssen über einen Provider bezogen werden, der sich wiederum an entsprechende Institutionen wendet, um die Domain genehmigen und registrieren zu lassen. Für deutsche Domanis (.de) ist R DENIC zuständig. Unter Windows wird beim R Active Directory ebenfalls von Domainnamen gesprochen. Hier kann es auch nur eine Zusammenlegung von Hosts und Router zu Verwaltungseinheiten bedeuten. In der Regel wird jedoch auch hierfür der offiziell zugewiesene ›DNSDomainname‹ verwendet, der dann dem obersten Windows-Domainnamen entspricht. DOS (Disk Operating System) – Historisches PC-Betriebssystem von Microsoft R FAT drag and drop – Ausgewählte Objekte auf der grafischen Oberfläche können auf andere Objekte gezogen werden (die Maustaste gedrückt lassen und auf oder in ein anderes Objekt, z.B. in ein anderes Fenster, ziehen und dort loslassen). Hiermit können z.B. Dateien in ein anderes Verzeichnis kopiert oder verschoben werden. DSL (Digital Subscriber Line) R ADSL DVD (Digital Versatile Disc / Digital Video Disc) – Optischer Datenspeicher. Eine DVD hat den gleichen Durchmesser wie eine CD, ist aber etwas dicker. DVDs können doppelseitig beschrieben sein, außerdem können Daten auf zwei Schichten gespeichert werden.
E EIDE (Enhanced Integrated Device Electronics) Interface R IDE EOF (End of file) – Zeichen für Dateiende Ersetzungsmechanismus – Hierzu gehört die Dateinamenexpansion durch Metazeichen und die Einschränkung dieser Expansion durch doppelte und einfache Anführungszeichen. EPROM (Erasable Programmable Read Only Memory) – Lösch- und programmierbarer Festwertspeicher
395
Glossar
Ethernet – Eine mögliche physikalische Art der Verbindung von Rechnern. Voraussetzung ist, dass beide Rechner über Ethernet-Karten verfügen. Die älteren Ethernet-Kabel mit BNCStecker sollten nicht mehr verwendet werden. Heutzutage werden für Netzwerkverbindungen Twisted Pair mit RJ-45-Stecker eingesetzt. Exitstatus – Jedes Kommando meldet der Shell zurück, ob es ›erfolgreich‹ (0) oder ›nicht erfolgreich‹ (ungleich 0) war. Expansion von Dateinamen – Werden Metazeichen/Platzhalter ( ?, * , [ ] ) in einem Kommandoaufruf angegeben, wird im betreffenden Directory/Verzeichnis nach passenden Dateien gesucht und diese werden hierfür eingesetzt. R Ersetzungsmechanismus ext2/ext3 – Dateisysteme unter Linux ext3 – Ein um Journaling erweitertes ext2
F FAT (File Allocation Table) – Dateisystem unter Windows. Es wird oft zum Austausch zwischen verschiedenen Betriebssystemen (u.a. auf Disketten und Memory-Sticks) verwendet. Hier gibt es mehrere Versionen: FAT16 (mobile Datenträger, die kleiner als 2 GB sind) VFAT (virtuelles FAT, erlaubt längere Dateinamen) FAT32 (mobile Speicher größer auch als 2 GB) FAQs (Frequently Asked Questions) – Sammlung von häufig gestellten Fragen und ihren Antworten FDDI (Fiber Distributed Data Interface) – Glasfasernetz im LAN (100 Mbit/s ANSI Standard LAN) FIFO-Datei (first in first out) – Eine Datei, die als Puffer dient, wobei das, was zuerst in die Datei geschrieben wurde, zuerst wieder gelesen wird, z.B. die named pipe, Kennzeichen ›p‹ File Manager – Dateimanager auf der grafischen Oberfläche. Unter Linux KDE ist es der R Konqueror. Files – Dateien File-Server – Rechner, der Dateien zentral in einem Netz hält, z.B. die Dateien der Benutzerverzeichnisse. Die Benutzerverzeichnisse sind dann beispielsweise per R NFS (Network File System) in den Arbeitsplatzrechner des Benutzers eingebunden (mount -nfs) oder über smbfs ( R Samba) zugänglich Firefox – Eine überarbeitete, schnellere und kleinere Version des Mozilla-Browsers Firewall (Brandschutzmauer) – Programm, um Rechner vor unerlaubtem Zugriff aus dem Internet zu schützen bzw. um Zugang zum Internet zu reglementieren (z.B. Blockierung bestimmter Ports – Zugang nur gezielt über einen bestimmten Rechner etc.). Floppy Disk – Diskette (Kapazität 1,44 MB) Fluchtsymbol (Aufhebungszeichen) – Unter der Shell wird mit dem nach hinten weisenden Schrägstrich (backslash) z.B. die Bedeutung der Sonderzeichen (wie *,?) aufgehoben Font – Damit wird ein kompletter Satz einer Schrift (mit Buchstaben, Zahlen und Zeichen) in einer Größe und Art (kursiv, fett) bezeichnet, wie z.B. Helvetica, 10 Punkt, Fettschrift Formatieren (Textformatierung) – Eine Textdatei wird für den Druck aufbereitet, wobei z.B. ein Randausgleich erfolgt, Kopfzeilen erstellt, Seiten automatisch umbrochen und Seitenzahlen vergeben werden. Formatieren von Platten R Partitionen FORTRAN (Formula Translation) – Eine Programmiersprache für technisch wissenschaftliche Anwendungen
396
FQDN (Fully Qualified Domain Name) – Der vollständige Domainname besteht aus Rechner.Domain.TDL Beispiel: laurent.suse.de R TLD
Glossar
Fragmentierung – Bedeutet, dass Dateien nicht zusammenhängend gespeichert sind, sondern dass einzelne Teile der Dateien über die Platte verstreut sind. Fragmentierung entsteht, wenn Dateien gelöscht und neue angelegt werden, die nicht genau in die freigewordenen Stellen passen. Die gängigen Linux-Dateisysteme fragmentieren nur sehr wenig, so dass Defragmentierung unter Linux kein Thema ist. Frontend – Bedeutet im allgemeinen den Teil eines Softwaresystems, der direkt mit dem Benutzer zu tun hat. Backend ist der Teil, der die eigentliche Verarbeitung der Daten durchführt Front Panel – Im KDE/CDE die Steuerleiste (Kontrolleiste), meist am unteren Rand der Bildschirmanzeige ftp (File Transfer Protocol) – Programm, um Daten von/auf andere Rechner unverschlüsselt zu übertragen, basierend auf TCP/IP. Funktionstasten – Tasten, denen bestimme Funktionen zugeordnet sind.
G Gap (Aussparung/Lücke/Spalt/Leerstelle) – Als Gap wird der Zwischenraum von jeweils zwei zusammenhängenden Dateien/Blöcken auf einem Speichermedium (z.B. Band) bezeichnet Gateway – Übergang von einem Netzwerk zum anderen bzw. ins Internet (s.a. Router u. Netzmaske). Im allgemeinen Schnittstelle zwischen zwei Kommunikationssystemen. GB (Gigabyte) – 1 GB hat 1.073.741.824 Byte (1024 MB), bei Platten oft nur 1.000.000.000 Byte. GNOME (GNU Network Object Model Environment) – Grafische Oberfläche unter Linux. Es ist eine Desktop-Umgebung für Unix-Systeme, die unter der freien GPL veröffentlicht ist. GNU (›GNU is not Unix‹) – Das GNU-Projekt wurde von Richard Stallman (MIT - Massachusetts Institute of Technology) mit dem Ziel gegründet, ein vollständig freies Betriebssystem, das GNU System, zu entwickeln. Aus diesem Projekt entstammt eine Vielzahl freier Software. GPG (Gnu Privacy Guard) – Verschlüsselungssoftware, Open-Source-Alternative zu PGP GPL (General Public License) – Ist eine von der FSF (Free Software Foundation) herausgegebene Lizenz für die Lizenzierung freier Software. GRUB (Grand Unified Bootloader) R Bootmanager
GUI (Graphical User Interface) – Grafische Benutzeroberfläche R KDE, GNOME GUUG (German Unix User Group) – Die GUUG ist ein Zusammenschluss von professionellen Computeranwendern aus dem Unix-Bereich. Aktivste Gruppe ist zur Zeit die sage@guug, die sich den Belangen der Systemadministratoren widmet.
H Hierarchisches Dateisystem – Unter Linux/Unix ist das Dateisystem hierarchisch angelegt, d.h., es beginnt bei einer Wurzel (root = /), die sich über Directories/Verzeichnisse in die Tiefe und Breite verzweigt (auch R Baumstruktur genannt). HFS (Hierachical File System) – Standarddateisystem in der Apple-Macintosh-Welt Home-Directory – Für jeden Benutzer ist das Verzeichnis, in dem er nach dem Anmelden arbeitet, in der Datei /etc/passwd eingetragen Host – Der eindeutige Name eines Rechners in einem Netzwerk. Auch werden Rechner, die einen Dienst für andere bereitstellen, als Host bezeichnet, richtigerweise wären dies R Server. host – Kommando unter Linux/Unix, um Rechnername oder IP-Adresse eines Hosts zu erfragen, wenn ein DNS-Server/Nameserver aktiv ist. Host-ID – Die eindeutige Kennummer eines Rechners hostname – Kommando unter Unix, um den in der Datei /etc/host eingetragenen eigenen Rechnernamen zu erfahren.
397
Glossar
HPFS (High Performance File System) – Dateisystem aus IBM OS/2 HSM-Systeme (Hierarchical Storage Management) – Für professionelle Datensicherungen zum Teil mit Brennen der Daten auf DVD oder Wechsel-Robotern (Jukeboxen) HTML (Hypertext Markup Language) – Seitenformat der Seiten im WWW. HTML-Seiten werden mit einem HTML-Browser dargestellt (Firefox, Mozilla, Netscape, Konqueror, …) HTTP (Hypertext Transfer Protocol) – Übertragunsprotokoll (Client-Server-Protokoll), das im WWW HTML-Dokumente austauscht (Port 80). HTTPS (Hypertext Transfer Protocol Secure) – Eine Variante von HTTP, die sichere Transaktionen gewährt (Port 443). Hubs – Sind Repeater mit mehr als zwei Anschlüssen. Sie schicken alle Daten immer an alle angeschlossenen Geräte.
I ICMP (Internet Control and Management Protocol) – Wird u.a. von dem Kommando ping verwendet, um die Erreichbarkeit anderer Rechner im Netz zu testen. Icon – Kleines Bild, das auf einer grafischen Oberfläche Programme, Verzeichnisse, Geräte oder Ähnliches symbolisiert. Bei einer Aktivierung (meist Doppelklick) wird das damit verbundene Programm gestartet. IDE (Integrated Drive Electronics) – Eine Hardware-Schnittstelle, die periphere Geräte mit dem PC verbindet (Plattenlaufwerke etc.). IMAP (Internet Message Access Protocol) – Verbesserung zu R POP3. Es bietet dem Anwender die Möglichkeit, seine Post direkt auf dem entfernten IMAP-Server zu verwalten. inetd (Internet Services Daemon) – Programm unter Linux, um Netzwerkdienste zu starten. Inode – Dateikopf einer Datei mit den wichtigsten Informationen über die Datei INIT-Taste – Von initialisieren, beginnen. Meist eine Taste oder ein Schalter, um einen Rechner zu starten Interface (oder Controller) – Steuereinheit, die dafür sorgt, dass die jeweiligen Geräte richtig betrieben und gesteuert werden. Internet – Netzwerke, die über TCP/IP weltweit miteinander verbunden sind. Ursprünglich Trennung des ARPANETS in militärisches (milnet) und ziviles Netzwerk (internet). IP (Internet Protocol) – Protokoll, um Datenpakete an die richtige Adresse weiterzuleiten. R Gateway R TCP/IP IP-Adressen – Adressen von Rechnern im Internet. Für den Internetzugang sind nur bestimmte IP-Adressen erlaubt, die registriert und zugeteilt werden (in der Regel über einen Provider). Schreibweise von IP-Adressen zusammen mit der R Netzwerkmaske. IPP (Internet Printing Protocol) – Protokoll für Druckerbetrieb über IP-Verbindung IPv4/IPv6 (Internet Protocol Version 4/Version 6) – Version 4 basiert auf 32-Bit-Adressierung (4x8 Bit in dotted decimal), Version 6 auf 128-Bit-Adressierung (acht Gruppen à 16 Bit in hexadezimaler Form dargestellt). Beide Versionen können sowohl im Internet als auch auf einem System koexistieren. R IP-Adressen IrDA (Infrared Data Association) – Gesellschaft für Standards, um die Qualität und Kompatibilität von Infrarotgeräten sicherzustellen sowie Protokoll zum Datenaustausch auf Infrarotbasis. ISCSI (SCSI over IP) R SCSI ISDN (Integrated Services Digital Network) – Standard zur Übertragung von Sprache und Daten in einem gemeinsamen Netzwerk.
398
ISDN-Modem – Verbindung von Rechnern über Telefonleitung (digital), 64.000 bit/s (bit per second) R Modem
Glossar
ISO (International Standards Organisation) – Sammlung von Standards für die Computerindustrie ISP (Internet Service Provider) – Privater Dienstleister für Netzwerkdienste, die für Firmen oder Privatpersonen einen Zugang ins Internet ermöglichen. Zugang zum Internet meist per Telefonleitung und Analog- oder DSL-Modem oder ISDN.
J JFS (Journaling File System) – Dateisystem, das von IBM als Server-Dateisystem für große Datendurchsätze entwickelt wurde. Journaling-Dateisysteme – Dateisysteme, die über alle Änderungen ab dem letzten konsistenten Stand ein Journal führen und damit auch nach einem Systemabsturz ein konsistentes Dateisystem wiederherstellen können. JPEG (Joint Pictures Expert Group) – Komprimierungsmethode für Bitmap-Grafik bzw. Bilder
K Kabel-Modem – Modem zur IP-Anbindung über Fernsehkabel R Modem kB (Kilobyte) – 1 kB hat 1.024 Byte KDE – KDE-Desktop Environment, eine der grafischen Oberflächen unter Linux R GNOME KMail – Eines der Mail-Programme unter Linux, basierend auf KDE Knoppix – Ist ein von Klaus Knopper zusammengestelltes Debian-Linux mit vielen hilfreichen Werkzeugen, das direkt von der CD gestartet werden kann. Kommandomodus – Bei den Editoren ed und vi wird nach Eingabe- und Kommandomodus unterschieden. Im Kommandomodus können Befehle wie z.B. ›lösche Zeile‹ oder ›drucke von bis‹ erteilt werden. Kommandos – Programmaufrufe. Kommandos können ausführbare Programme (ursprünglich in einer Programmiersprache geschrieben und in die Maschinensprache übersetzt), eigene Shell-Prozeduren (ausführbare Dateien mit Kommandos) oder Shell-interne Programme (Teil des Shell-Programms selbst) sein. Kommentarzeichen – In Shell-Prozeduren und vielen Konfigurationsdateien können Zeilen oder der Rest einer Zeile durch die Zeichen : und # als Kommentar gekennzeichnet werden. Konqueror – Dateiverwaltungsprogramm unter KDE, das zusätzlich als Browser genutzt werden kann (auf englisch: conqueror: Sieger, Eroberer). Krypto-Dateisystem – Verschlüsseltes Dateisystem. Bei der Installation wird die Verschlüsselungsart und ein Passwort angegeben. Auf die Platte wird hierbei über ein sogenanntes Loopback-Device mit einem Verschlüsselungsalgorithmus zugegriffen.
L LAN (Local Area Network) – Ist ein auf einem Gelände oder in einem Gebäude untergebrachtes lokales Netzwerk, das keine öffentlichen Leitungen benutzt. LaTeX (Lamport TeX von Leslie Lamport) – Ein in der wissenschaftlichen Welt weitverbreitetes Textsatzsystem LDAP (Leightweight Directory Access Protocol) – Basierend auf TCP/IP; vereinfachte Form des X.500-Protokolls, d.h. vereinfachter Zugriff auf Verzeichnisse von anderen Rechnern LILO (Linux Loader) – Bootmanager Login – Eine Terminal-Sitzung beginnen, sich anmelden Local Master Browser (LMB) – Lokale Namensauflösung in einem Windows-Netz, soweit diese nicht über DNS-Server übernommen wird.
399
Glossar
localhost – Rückverweis auf den eigenen Rechner. Der localhost hat 127.0.0.1 als fest zugewiesene IP-Adresse. loopback – Rückverweis R localhost Loopback-Device – Erlaubt ein virtuelles Dateisystem in einer großen Datei auf einem anderen Dateisystem zu simulieren oder ein Krypto-Dateisystem anzulegen. LVM (Logical Volume Manager) – Dateisysteme, die Speicherbereiche logisch zuteilen, wobei der Bereich auch größer als eine physikalische Platte sein kann. Die Zuteilung kann während des laufenden Betriebes erfolgen, kann vergrößert oder verkleinert werden, ohne dass dazu die Partitionierung aufwendig geändert werden muss.
M Main Memory – Hauptspeicher MAC (Multiple Access Control) – Auf Netzwerkkarten vom Hersteller eingetragene Nummer Magic number R MBR Major device number – Eine Zuordnungsnummer (Treibernummer) für Gerätedateien, um die entsprechende Software (Treiber) zuzuordnen, damit das Gerät richtig gesteuert wird. R minor device number Masquerading – Versteckt die Namen und IP-Adressen der internen Rechner hinter der IPAdresse/dem Namen des Gateways gegenüber dem Internet. MB (Megabyte) – 1MB hat 1024 kB R kB R GB R Byte MBR (Master Boot Record) – Erster Block/Record auf einer Platte, wird zum Starten des Systems genutzt. Er ist 512 Byte groß, 446 Byte enthalten den Startcode, 64 Byte die Partitionstabelle der Platte, 2 Byte eine Endemarkierung, die sogenannte magische Zahl (magic number). Metazeichen (Wildcards, Joker) – Die Zeichen können durch ein einzelnes Zeichen oder eine Auswahl verschiedener Zeichen oder Zeichenfolgen ersetzt werden. Unter der Shell wird z.B. das ›?‹ ersetzt durch ein beliebiges Zeichen, das ›*‹ ersetzt durch eine beliebige Zeichenfolge, oder es wird ein Zeichen der in eckige Klammern ›[...]‹ gesetzten Auswahl bestimmter Zeichen übernommen. MIME (Multipurpose Internet Mail Extension) – Oft ein Hinweis in der ersten Zeile einer Datei, um welche Anwendung es sich handelt und welcher Zeichensatz (ISO 8859 ..) verwendet wird. Minor device number – Zuordnungsnummer für Gerätedateien (z.B. 1. oder 2. Stecker der Terminalanschlüsse). Sie wird zusammen mit der R major device number angegeben. Modification date – Datum, an dem eine Datei zuletzt verändert (bzw. das erste Mal erstellt) wurde. Modem (Modulator/Demodulator) – Umwandlung digitaler Signalfolgen in analoge Signalfolgen (z.B. Töne) und umgekehrt zur Übertragung digitaler Signale über analoge Netze. Modulo – Restwert bei einer Division von ganzen Zahlen mount – Montieren, einhängen eines Dateisystems Mountpoints – Unter Linux die Verzeichnisse, in die Dateisysteme eingehängt werden. Mozilla – Open-Source-Nachfolger des Netscape Browsers MPEG (Motion Pictures Expert Group) – Eine Komprimierungsmethode für Videodateien Multicast – Versenden von Datenpaketen an mehrere Rechner gleichzeitig Multi-Tasking – Mehrere Programme können gleichzeitig ausgeführt werden. R Time Sharing
400
Multi-User-Systeme – Mehrbenutzerbetrieb. Mehrere Benutzer können gleichzeitig am System arbeiten.
Glossar
N Nameserver – Programm, das die Umwandlung von einem Rechnernamen zu einer bestimmten IP-Adresse durchführt. Ebenso wird Rechner, auf dem dieses Programm läuft, als Nameserver bezeichnet. R DNS-Server R BIND NAT (Network Address Translation) – Umwandlung der internen IP-Adresse in die internetfähige IP-Adresse NetBIOS (Network Basic Input Output System) – Ist eine unter Windows eingesetzte Netzwerkanwendung, die mit ›NetBIOS over TCP/IP‹ einen Zugang zu den Protokollen der unteren Schichten des TCP/IP-Schichtenmodells ermöglicht. Netzwerkmaske – Bestimmt, welcher Teil der IP-Adresse zu einem Subnetz gehört, und legt damit auch fest, wie viele Rechner zu diesem Subnetz gehören können. Die Netzwerkmaske wird in Verbindung mit IP-Adresse angegeben: IP-Adresse/Netzwerkmaske 192.168.0.0/255.255.255.0 oder andere Schreibweise: 192.168.0.0/24 R IP-Adressen. NFS (Network File System) – Entwickelt von Sun Microsystems zur Verwaltung und Verbindungskontrolle von Dateisystemen im Netz (meist im Local Area Network). Newsgroups – Kommunikation zwischen Teilnehmern im Internet zu bestimmten Themen (ähnlich eines schwarzen Brettes). Meist über einen Internet-Provider bzw. einen bereitgestellten News-Server. NIS (Network Information Service) – Verwaltung von Benutzer-Informationen im LAN. Es stellt sicher, dass Benutzer- und Gruppennummern innerhalb eines Linux/Unix-Netzes einheitlich vergeben werden. NTFS (New Technology File System) – Ist das Standarddateisystem unter Microsoft ab Windows NT und ersetzt das ältere FAT-Dateisystem von MS-DOS und bietet somit bessere Performance und Sicherheit, sowie ACLs und ein R Journaling-File-System.
O Objectcode – Ein übersetztes Quellcodeprogramm in dem für den betreffenden Prozessor ausführbaren Maschinencode Oktalzahl – Zahl im Achtersystem, d.h., jede Ziffer kann nur acht verschiedene Werte annehmen (üblicherweise mit 0-7 dargestellt). Optionen – Wahlweises Angeben z.B. von bestimmten Parametern, die eine unterschiedliche Ausführung des Programms bewirken. Opera – ein Fast Web Browser, also ein schneller bedienerfreundlicher Browser OSI-Schichtenmodell – Aufteilung der im Netzwerk notwendigen Aufgaben in 7 Schichten/Layers: 1 Physical (Bit-Übertragung)
5 Session (Kommunikation)
2 Data Link (Sicherung)
6 Presentation (Paketierung)
3 Network (Vermittlung)
7 Application (Anwendersoftware)
4 Transport (logische IP-Adr) In diesem Buch wurde das einfachere R TCP/IP-Schichtenmodell beschrieben
P Parameter – Zusätzliche Angaben bei einem Programmaufruf Patch (Flicken) – Ergänzung zu einem Programm, um damit z.B. Fehler oder vorhandene Lücken zu beheben.
401
Glossar
Partitionen – Aufteilung einer physikalischen Platte in logische Einheiten. Eine Platte kann in vier sogenannte primäre Partitionen aufgeteilt werden oder in drei primäre und eine sogenannte erweiterte Partition. Die erweiterte Partition kann wiederum in mehrere logische Partitionen unterteilt werden. PATH (Suchpfad) – Die Shell sucht der Reihe nach in all jenen Directories nach einem Kommando, die als Wert der Variablen PATH zugewiesen wurden. PCMCIA (Personal Computer Memory Card International Association) – Standard für Erweiterungskarten (in Scheckkartengröße) für mobile Computer. Diese Erweiterungskarten unterstützen Plug and Play, können also im laufenden Betrieb ausgewechselt werden. Es gibt verschiedene Typen, die sich in der Dicke unterscheiden, z.B. 3,3 mm (für Speicherkarten), 5,0 mm (für Modems, Netzwerkkarten, etc.). PCL (Printer Command Language) – Sprache zur Ansteuerung von Druckern, preiswertere Alternative zu R PostScript PDC (Primary Domain Controller) – Anmeldeservice unter Windows, der die Passwortkontrolle für Benutzer durchführt. PDF (Portable Document Format) – Ein von Adobe entwickeltes Dateiformat, das Dokumente aus unterschiedlichen Anwendungen plattformunabhängig darstellen kann und gleichzeitig als höhere Druckersprache verwendet wird. Dokumente werden mit Hilfe des Programms Acrobat in dieses Format übertragen. PDL (Print Description Language) – Druckersprache PGP (Pretty Good Privacy) – Verschlüsselungssoftware, die Open-Source-Variante ist GPG Physical Layer – 1. Schicht vom OSI-Schichtenmodel: Sendet und empfängt Bits auf Bit-Ebene. PID (Process IDentification Number) – Nummer des Prozesses R PPID Pipe (Rohr) – Mehrere Kommandos können über den Pipe-Mechanismus hintereinandergeschaltet werden, wobei jeweils die Ausgabe des vorhergehenden Kommandos die Eingabe des nachfolgenden Kommandos wird. Das Pipe-Zeichen ist ›|‹ (senkrechter Strich). Plattenkapazität – Ist der zur Verfügung stehende Platz zum Anlegen von Dateien (meist in Gigabyte ausgewiesen). POP3 (Post Office Protocol Version 3) – Protokoll, um die Mail von einem Provider abzuholen. Port (Portal) – Um unterschiedliche, zur gleichen Zeit laufende Programme und Netzwerkdienste anzusprechen, verwendet man den Diensten zugeordnete sogenannte Ports (z.B. 80 für http (www). Die Zuordnung selbst ist in /etc/services eingetragen. Über Firewall können bestimmte Ports blockiert werden. Positionsparameter – Beim Aufruf eines Kommandos werden die einzelnen Parameter den Variablen $1, $2 … $9 je nach Position (1.Parameter, 2.Parameter usw.) zugewiesen. $0 gibt den Namen des Kommandos wieder. PostScript – Eine Seitenbeschreibungssprache, die von Adobe entwickelt wurde und zur Ansteuerung von Druckern dient. PPID (Parent Process IDentification Number) – Eltern/Vater-ProzessnummerR PID PPP (Point-to-Point Protocol) – Protokoll, um sich per Modem über Telefonleitung ins Internet einzuwählen. Presentation Layer – 7. Schicht des OSI-Schichtenmodells: Austausch zwischen Programmen wie z.B. ftp, rlogin/telnet. primäre Partitionen – Auf der i386-Plattform (d.h. auf fast allen PCs) können Festplatten nur in vier sogenannte primäre Partitionen unterteilt werden. R Partitionen
402
Print-Spooler – ein Daemon, der die Verwaltung und Steuerung von Druckaufträgen durchführt. Prompt R Bereitzeichen
Glossar
Provider – Dienstleister, der einen Zugang ins Internet ermöglicht. R ISP Proxy – Stellvertreterprozess zum Internet, der Pakete entgegennimmt, sie puffert und an den internen Client (eventuell nach einer Prüfung) weiterleitet. Public-Key-Verfahren – Verfahren, bei dem ein privater und ein öffentlicher Schlüssel zur Authentifikation (oder zum Signieren) verwendet wird.
R RAID-System (Redundant Array of Inexpensive (Independent) Disks) – Hierbei werden die Dateien auf mehreren Platten verteilt, was je nach Art des RAID für höhere Datenübertragungsraten oder redundante Speicherung genutzt wird. RARP (Reverse Address Resolution Protocol) – Ein Protokoll das zur Auflösung von IP-Adressen benötigt wird. Realzeitsystem – Ein System, das auf Eingaben innerhalb einer fest vorgegebenen Zeit reagiert. Reboot (wieder booten) – Einen Rechner nach dem Herunterfahren gleich wieder Hochfahren. Relativer Pfadname – Die Datei wird vom jeweiligen Standpunkt (Arbeitsverzeichnis) relativ angesprochen. Liegt die Datei in einem Verzeichnis über dem aktuellen Directory, wird das ›Hinaufgehen‹ mit zwei Punkten (../) gekennzeichnet. Die einzelnen Verzeichnisse werden jeweils durch einen Schrägstrich voneinander getrennt. ReiserFS (nach dem ursprünglichen Entwickler Hans Reiser) – Journaling-Dateisystem unter Linux zur effizienten Datenhaltung insbesondere bei vielen kleinen Dateien. Repeater – Sind Verbindungen im Netz als Verlängerung von Netzkabeln (Zwischenverstärker). Beide angeschlossenen Geräte müssen die gleiche Übertragungsrate haben. Rescue-System (Rettungssystem) – Mit Hilfe eines Rescue-Systems kann das System von der CD geladen werden, und so ein bestehendes System überprüft und eventuelle Fehler korrigiert werden. Router – Ein Router entscheidet anhand der IP-Adresse und der ihm mitgeteilten Netztopologie über den weiteren Weg eines Paketes. Diese Aufgabe kann von einem Linux-Rechner übernommen werden oder von einem eigenständigen Gerät. R Gateway RJ-11 – Steckverbindung für Analog-Modems (vier Pole) RJ-45 – Steckverbindung für ISDN-Anschluss root (Wurzel) – Kennung des Super-Users, der uneingeschränkte Zugriffsrechte auf Dateien und Verzeichnisse hat. Auch bestimmte Systemkommandos sind nur von root ausführbar. Root-Verzeichnis (/) – Wurzel des gesamten Linux-Dateibaums (›/‹). Darunter sind die weiteren Dateien und Verzeichnisse angeordnet. Root-Terminal – Ein Terminalfenster auf der grafischen Oberfläche, das für den Benutzer root voreingestellt ist. RPM (RPM Packet Manager) – Archivformat für Softwarepakete. Auch unter der SUSE YaSTPaketverwaltung verbirgt sich letztlich RPM. RPM-Pakete haben die Dateinamenerweiterung ›.rpm‹. Runlevel – Durch Runlevel wird bestimmt, ob der Rechner in den Single-User- oder Multi-User Mode, ob mit oder ohne Netz, ob mit oder ohne grafischer Oberfläche hochgefahren werden soll. Die Runlevel unter SUSE bedeuten: 0 halt, 1 Single-User-Modus, 2 Multi-User-Modus, 3 Multi-User-Modus mit Network, (4 ist frei), 5 Multi-User-Modus mit Network und grafischer Oberfläche, 6 reboot.
S Samba – Frei verfügbare Netzsoftware, mit deren Hilfe beliebige Unix-Rechner zu einem Fileund Print-Server für DOS-, Windows-, OS/2-Rechner und Macintosh benutzt werden
403
Glossar
können, basierend auf TCP/IP und SMB (Server Message Block). Auf der Windows-Seite ist der Unix-Rechner dann in der Netzwerkumgebung mit aufgeführt und kann die NetBIOS-Dienste mitbenutzen. SCSI (Small Computer System Interface) – Standardisierte Schnittstelle zur Datenübertragung zwischen Geräten und einem Computer-Bus, wobei eine Verkettung von Geräten wie Plattenlaufwerken, CDs, Scannern und anderen Geräten möglich ist. Über Jumper wird die Reihenfolge festgelegt. sequentielle Verarbeitung – Daten können nur nacheinander gelesen oder geschrieben werden (z.B. bei einem Magnetband), im Gegensatz zu einer direkten Verarbeitung (direct access – z.B. beim Zugriff auf die Platte). Server (Diener, Dienstleister) – Rechner, der zentral Daten, Ressourcen oder Dienste in einem Netzwerk zur Verfügung stellt (File-Server, Druck-Server, Webserver, FTP-Server etc.). Session Layer – 5. Schicht des OSI-Schichtenmodells – Koordinierung zwischen Prozessen zweier Rechner Shares (share, mit jemandem etwas teilen) – Freigaben, Verzeichnisse, auf die andere Benutzer zugreifen dürfen. Shell – Benutzerschnittstelle. Unter Linux wird meist die Bash genutzt. Weitere oft genutzte Shells sind die Bourne-Shell, Korn-Shell und C-Shell. Shell-Prozedur – Datei mit einem oder mehreren Kommandos bzw. Kommandofolgen. Um eine Shell-Prozedur selbständig ablaufen zu lassen, muss die Datei ausführbar sein (chmod +x). Shell-Variable – Variable, die auf Shell-Ebene gesetzt und gelesen werden kann. Unter Linux werden beim Anmelden eines Benutzers bereits eine Reihe von Systemvariablen (wie $HOME, $PATH ...) gesetzt. shutdown – Das System herunterfahren. Single-User-Modus – Einbenutzerbetrieb, um z.B. als Systemverwalter allein an dem System bestimmte Arbeiten durchführen, wie Sicherung von gesamten Plattenbereichen oder Zuordnungen von Partitionen. SMB (Server Message Blocks) – Netzwerkprotokoll unter Windows R CIFS SMTP (Simple Mail Transfer Protocol) – Mail-Protokoll SNMP (Simple Network Management Protocol) – Das Internet-Standardprotokoll, um die Netzelemente wie Router, Server, Switches innerhalb eines Netzwerkes zu verwalten und zu überwachen. Spooler (Spool simultaneous peripheral operation online) – Ein Programm, das Druckaufträge sammelt und sie der Reihe nach abarbeitet. R Print-Spooler Standardeingabe, Standardausgabe – Unter der Shell ist die Standardeingabe und die Standardausgabe das Terminal. Die Ein- und Ausgabe kann durch entsprechende Zeichen (, >>, 2>) umgeleitet werden. Steuereinheiten (Controller) – Sie sorgen dafür, dass die einzelnen Geräte (Terminal, Drucker usw.) richtig betrieben, gesteuert werden. Sticky-Bit (sticky: klebrig, haftend) – Die Rechte des Dateibesitzers haften an der Datei oder einem Unterverzeichnis. Solche Dateien/Verzeichnisse können nur vom Besitzer (und root) gelöscht werden, auch wenn das Schreibrecht (und damit auch das Recht zu löschen) in dem dazugehörigen Verzeichnis für alle gesetzt sein sollte. Subdomains – Unternetzwerke im LAN (Local Area Network) Subnets – Unternetzwerke, z.B. die weitere Unterteilung der früheren offiziellen IP-AdressenKlassen (A-C)
404
Super-User, Systemverwalter R Systemadministrator
Glossar
SWAT (Samba Webbased Administration Tool) – Webbasiertes Verwaltungstool für Samba Switch – Verbindung zwischen Netzwerkleitungen. Hiermit können auch unterschiedliche Netzwerke miteinander verbunden werden. Synopsis – Knappe Zusammenfassung Systemadministrator – Ein mit besonderen Rechten (keine Einschränkung der Zugriffsrechte) versehener Benutzer.
T TCP/IP (Transmission Control Protocol / Internet Protocol), Ist die Grundlage des Internets und die bedeutendste Protokollfamilie, mit der die meisten Anbindungen zwischen Linux/UnixRechnern und zahlreichen anderen Systemen in einem LAN erfolgen. TCP/IP-Schichtenmodell – Aufteilung der Netzwerkdienste in unabhängige Schichten: 1 Link (Hardware, Gerätetreiber) – Kabel, Ethernet, FDDI, ISDN 2 Network (Paketzustellung, Routing) – IP, ICMP 3 Transport (Paketsicherung) – TCP, UDP 4 Application (Benutzerprozesse) – ftp, telnet, sftp, ssh, HTTP, NFS telnet (terminal emulation for network) – Arbeiten an einem entfernten Rechner über RemoteLogin. Terminal – Dialogstation (Bildschirm + Tastatur), im Buch bezieht sich der Begriff meist auf ein Terminalfenster auf der grafischen Oberfläche. Time Sharing – Mehrere Programme erhalten quasi gleichzeitig Rechnerzeit. In Wirklichkeit wird die Rechnerzeit in etwa gerecht aufgeteilt, und jeder Prozess erhält immer wieder kurzfristig Rechnerzeit zugeteilt. R Multi-Tasking TLD (Top Level Domain) Ergänzung des Domainnamens wie z.B. CC-TLD für country code und GENERIC TLD .de – Deutschland .at – Österreich .edu - Education .uk – Großbritannien.net .net – Netzwerkmanagement .fr – Frankreich .org – Organisation Transport Layer – 4. Schicht vom OSI-Schichtenmodell Trojanisches Pferd – In der Computerwelt im weitesten Sinne ein Programm, das etwas anderes tut, als es vorgibt, beispielsweise in einem System unbemerkt Schadsoftware (Malware) oder Ähnliches einschleust. TTL (time to live) – Begriff in Netzwerkverbindungen, der aussagt, wie lange eine Zuordnung existieren soll (Tage, Wochen, Monate). Twisted Pair – Kabelart, die für Netzwerkverbindungen im LAN verwendet werden kann (z.B. Switch zu Ethernet-Karte)
U UDP (Universal Datagram Protocol) – Übertragung von Daten ohne Fehlerprotokoll und Prüfzifferkontrolle wie bei TCP UFS – Dateisystem aus den Open-Source-Betriebssystemen (OpenBSD, netBSD, FreeBSD), üblich unter BSD-Unix und Sun-Solaris Umleitungszeichen – Unter der Shell können Standardausgabe (> und >>), Standardeingabe () mit den in Klammern angegebenen Zeichen umgeleitet werden. unmount – Demontieren, aushängen eines Dateisystems USB (Universal Serial Bus) – Bussystem für den Anschluss von externen Geräten (z.B. Maus, Tastaturen, Drucker, Scanner, Kamera) an einen Rechner
405
Glossar
Usenet – Weltweit verteiltes Diskussionssystem bestehend aus Newsgroups (Diskussionsforen) zu einer Vielzahl von Themen UTF8 (Unicode Transformation Format) – Zeichensatz, unter SUSE Linux ab Version 9.1 verwendet uucp (unix unix copy) – Einfachste Form einer Netzverbindung von Rechnern im Unix/LinuxNetz über Kabel ohne Netzwerkkarte
V VFAT R FAT
W WAN (Wide Area Network) – Verbindung von Rechnersystemen über ein überregionales Netzwerk WLAN (Wireless LAN) – Drahtlose Technik in einem LAN (z.B. über Funk) R LAN Workgroup – Arbeitsgruppe unter Windows, entspricht in etwa der Domain unter Windows XP oder dem unter Linux verwendeten Domainnamen. working directory – Arbeitsdirectory. Hierbei handelt es sich um jenes Verzeichnis, unter dem gerade gearbeitet wird. Mit dem Kommando pwd (print working directory) wird es angezeigt (bzw. ist im Prompt bei der Bash enthalten). workspace R Arbeitsfläche WORM-Medien (Write-Once Read-Many) – Datenspeicher, der einmal beschrieben wird, aber immer wieder gelesen werden kann (z.B. CD+R, CD-R). WPLAN (Wireless Personal Area Network) R WLAN
Wurzel (root) – Kennzeichen ›/‹, Beginn des Dateisystems R root Wysiwyg (What you see is what you get) – Damit werden Programme (in der Regel Textverarbeitungsprogramme) bezeichnet, die am Bildschirm die Ausgabe so anzeigen, wie sie später auch ausgedruckt werden.
X X11 – X-Window-System, ist die Basis für die grafische Oberfläche unter Linux/Unix. XFS (Extended File System) – Journaling-Dateisystem, das von Silicon Graphics (SGI) abstammt. Es ist für die effiziente Behandlung von besonders großen Dateien entwickelt worden. xinetd (extended internet services daemon) – Aktuelle Variante von inetd
Y YaST (Yet another Setup Tool) – Systemverwaltertool unter SUSE Linux, mit dem zahlreiche Verwaltungsaufgaben über eine grafische Oberfläche ausgeführt werden können (analog gibt es noch yast als textbasiertes Tool). YOU (YaST Online Update) – Unter SUSE Linux ein Dienst, um die aktuelle Software und Software-Patches übers Internet herunterzuladen
Z Zugriffsrechte – Für jede Datei sind Lese-, Schreib- und Ausführerlaubnis (read, write, execute) für den Besitzer einer Datei, Benutzer der gleichen Gruppe und die restlichen Benutzer (user, group, others) als Dateimerkmal eingetragen.
406
C
Kurzreferenz Administration
Diese Kurzreferenz soll Ihnen helfen, Kommandos schnell nachzuschlagen. Im ersten Teil haben wir die Kommandos nach Funktionen zusammengestellt, um Ihnen die Suche nach bestimmten Befehlen zu erleichtern. Mehr Informationen, wie einige häufig benötigte Optionen, finden Sie in der alphabetischen Sortierung der Kommandos. Befehle, die nur vom Systemverwalter ausgeführt werden dürfen, sind mit s gekennzeichnet. Das Wesentliche über die Bash ist im dritten Teil zusammengefasst, wobei auch Hinweise auf die Korn-Shell und die C-Shell enthalten sind. Da textorientierte Editoren wie der vi bzw. vim für den Systemverwalter spätestens dann notwendig werden, wenn kein grafisches Tool verfügbar ist, finden Sie anschließend die häufig benötigten Kürzel. Einen schnellen Überblick über wichtige Dateien und Verzeichnisse finden Sie zum Schluss der Kurzreferenz. C.1
Kommandoüberblick nach Funktionen
C.2
Kommandos alphabetisch
C.3
Bash (bash) – die Standard-Shell unter Linux
C.4
Editoren vi (vim) und batchorientierte Tools
C.5
Wichtige Verzeichnisse und Dateien
407
Kurzreferenz Administration
C.1
Kommandoüberblick nach Funktionen
Rechner hoch- und herunterfahren automatisches Hochfahren
Einstellungen erfolgen über einen Bootmanager (GRUB oder LILO). In welchen Runlevel der Rechner hochgefahren wird, bestimmt die /etc/inittab.
init 6
Startet das System neu. R reboot
init Runlevel
Fährt das System in den entsprechenden Runlevel.
reboot
Fährt das System herunter und startet es wieder.
shutdown -h
Fährt das System herunter.
shutdown -r
Fährt das System herunter und startet es wieder. R reboot
sync
Schreibt alle gepufferten Blöcke auf die jeweiligen Datenträger.
halt
Hält das System komplett an und ist Teil von R shutdown.
Systeminformation fdisk -l
Zeigt die vorhandenen Partitionen auf den Festplatten.
free
Zeigt den freien und belegten Speicher im System an.
hostname
Gibt den Rechnernamen und/oder IP-Adresse aus.
hwinfo
Überprüft die Hardware und gibt eine Aufstellung aus.
kernelversion
Gibt die Version des geladenen Kernels aus.
sitar
Erstellt eine druckbare Version aller wichtigen Informationen des Systems (Hardware und Software, Systemdateien etc.).
uname -a
Gibt Information über das System aus (Kernel-Version, Name des Betriebssystems, Rechnername u.a.).
Hilfe
408
apropos Schlüsselwort
Gibt eine Kurzbeschreibung des Kommandos aus. R man -k
info Kommando
Gibt, soweit vorhanden, eine Info-Seite aus.
khelpcenter
Startet das grafische Hilfe-Tool unter KDE.
Kommando --help Kommando [--info]
Soweit vorhanden, werden die Informationen des Kommandos angezeigt (manchmal in deutscher Sprache).
man [n] Kommando
Gibt die Online-Manualseiten aus.
man -k Schlüsselwort
Zeigt alle Kommandos an, die das Schlüsselwort (in irgendeiner Weise) betreffen. R apropos
whatis
Gibt eine Kurzbeschreibung des Kommandos aus (entsprechend der Manual-Seite).
whereis
Zeigt alle Vorkommen eines Kommandos an.
which
Gibt den absoluten Pfadnamen eines Kommandos aus.
C.1 Kommandoüberblick nach Funktionen
Benutzer einrichten – verwalten chfn
Ändert das Kommentarfeld der /etc/passwd. R chpass
chpass
Ändert Einstellungen der Passwortdatei.
chsh
Ändert die Login-Shell. R chpass
finger
Zeigt die Benutzerinformationen angemeldeter Benutzer innerhalb eines Netzes.
gpasswd
Ändert das Passwort einer Gruppe.
groupadd
Legt eine neue Gruppe an.
groupdel
Löscht eine Gruppe.
groupmod
Ändert eine vorhandene Gruppe.
groups
Zeigt alle Gruppen an, zu denen der Benutzer gehört.
grpck
Prüft die Gruppendateien auf Integrität.
id
Zeigt die Id-Nummer und Gruppenzugehörigkeit an.
last
Zeigt eine Liste der zuletzt angemeldeten Benutzer.
logname
Gibt den Login-Namen des Benutzers aus.
mkpasswd
Gibt das verschlüsselte Passwort aus.
newgrp
Meldet Benutzer unter einer anderen Gruppe an.
passwd
Setzt das Passwort und erlaubt es zu ändern.
passwd -g
Setzt Gruppenpasswörter.
passwd -l
Sperrt den Benutzer.
pwck
Prüft die /etc/passwd auf Konsistenz.
quota
Zeigt die Quota-Werte von Benutzern und Gruppen an.
su
Startet eine neue Shell unter anderer Identität.
useradd
Legt einen neuen Benutzer an.
userdel
Löscht Benutzereinträge.
usermod
Ändert Benutzereinträge.
users
Zeigt die Benutzer aller Shells auf einem Host an.
vipw
Editiert die Passwortdatei mit exklusivem Schreibrecht.
who
Wie ›users‹, aber mit Login-Zeit und Terminal.
whoami
Zeigt den Namen des aktuellen Benutzers an.
whodo
Zeigt an, welche Benutzer am System aktiv sind und was sie tun.
409
Kurzreferenz Administration
Dateiverwaltung
410
bzip2
Komprimiert Dateien (bunzip2 dekomprimiert sie).
bunzip2
Dekomprimiert mit bzip2 komprimierte Dateien.
cat
Gibt den Inhalt von Dateien aus oder führt Dateien zusammen.
chgrp
Ändert die Gruppenzugehörigkeit.
chmod
Ändert die Zugriffsrechte.
chown
Trägt einen neuen Besitzer als Owner ein.
compress
Komprimiert Dateien (aktueller und kompakter sind gzip und bzip2).
cp
Kopiert eine Datei oder ein ganzes Verzeichnis.
csplit
Zerteilt eine Datei kontextabhängig in mehrere einzelne Dateien.
dd
Kopiert Daten/Dateien im Raw-Format (z. B. blockweise).
df
Zeigt die freie Kapazität der Dateisysteme an.
du
Zeigt die belegten Blöcke der Verzeichnisse an.
expand
Ersetzt Tabulatorzeichen zu Leerzeichen.
file
Versucht, den Inhalt oder die Art einer Datei zu bestimmen.
find
Sucht Dateien in Dateibäumen nach unterschiedlichen Suchkriterien.
fsck
Überprüft die Konsistenz eines Dateisystems je nach Dateisystemtyp – in unterschiedlichen Varianten für die verschiedenen Dateisystemarten wie etwa fsck.ext2, fsck.ext3, reiserfsck oder fsck.vfat.
getfacl
Zeigt die zusätzlichen Zugriffsrechte über ACL an.
gunzip
Dekomprimiert Dateien im GNU-zip-Format (gzip komprimiert).
gzip
Komprimiert (und dekomprimiert) Dateien im GNU-zip-Format (gunzip dekomprimiert).
head
Gibt jeweils die ersten n Zeilen einer Datei aus.
less
Gibt Text seitenweise auf dem Bildschirm aus.
ln ln -s
Vergibt zusätzliche Namen für Dateien (hardlink). Erstellt einen symbolischen Link.
ls
Zeigt den Inhalt von Verzeichnissen
mkdir
Legt ein neues leeres Verzeichnis an.
mkfs s
Legt eine neues Dateisystem auf einem Datenträger an. Für die unterschiedlichen Dateisysteme gibt es spezifische Versionen wie etwa mkfs.ext2, mkfs.reiserfs, mkfs.jfs, mkfs.msdos.
mknod s
Schafft einen neuen Geräteeintrag oder legt eine FIFO-Datei an.
C.1 Kommandoüberblick nach Funktionen
Dateiverwaltung – Fortsetzung more
Gibt Text seitenweise auf dem Bildschirm aus.
mounts
Hängt Platten/Floppies/Geräte in den Dateibaum ein.
pr
Führt eine einfache Formatierung (z. B. Unterteilung in Druckseiten mit Kopfzeilen) von Dateien für die Druckausgabe durch.
setfacl
Setzt zusätzliche Zugriffsrechte für ACLs.
split
Teilt eine Datei in mehrere kleinere Dateien.
tail
Gibt jeweils die letzten Zeilen einer Datei aus.
umask
Definierte die Maske zur Voreinstellung der Zugriffsrechte bei neu anzulegenden Dateien und Verzeichnissen.
xxd
Hexadezimale Ausgabe eines Dateiinhalts mit zusätzlicher Darstellung in ASCII.
zcat
Gibt eine mit gzip komprimierte Datei aus, ohne dass sie zuvor dekomprimiert werden muss.
Kommandos rund ums Drucken accepts
Bewirkt, dass der Spooler Aufträge der angegebenen Drucker oder Druckerklasse akzeptiert.
cancel
Löscht Druckaufträge.
disables
Deaktiviert die angegebenen Drucker.
enables
Aktiviert die angegebenen Drucker (nach einem disable).
lp oder lpr
Schickt Dateien zur Druckausgabe mittels des Print-Spoolers.
lpadmins
Verwaltungskommando für Drucker + Druckaufträge unter CUPS.
lpmove s
Verschiebt die Aufträge eines Druckers (oder einer Druckerklasse) in die Warteschlange eines anderen Druckers / einer anderen Druckerklasse.
lppasswds
Setzt ein Passwort für die CUPS-Verwaltung.
lpr
Schickt Dateien zur Druckausgabe mittels des Print-Spoolers.
lpstat
Zeigt die Drucker und deren aktuelle Aufträge mit Status an.
rejects
Bewirkt, dass der Spooler Aufträge der angegebenen Drucker oder Druckerklasse nicht mehr akzeptiert.
Sicherung und Komprimierung cp
Kopiert Dateien und Verzeichnisse.
afio
Erlaubt die Übertragung und das Sichern von Dateien und Dateigruppen sowie das Wiedereinlesen (als Alternative zu cpio).
cpio –i
Liest eine zuvor unter cpio -o erstellte Sicherung wieder ein.
411
Kurzreferenz Administration
Sicherung und Komprimierung – Fortsetzung cpio –o
Erstellt eine Sicherung im cpio-Format auf einem Datenträger oder in einer Datei. Die Liste der Dateien kann z. B. über find und Pipe (find … | cpio …) übergeben werden.
cpio –p
Kopiert die Eingabedateien (z. B. mittels find) in ein Zielverzeichnis.
dd
Kopiert und/oder konvertiert Dateien und Dateisysteme.
dump
Führt eine dateisystemspezifische Totalsicherung oder inkrementelle Sicherung für Dateisysteme vom Typ ext2 oder ext3 durch.
restore
Liest eine mit dump erstellte Sicherung eines Dateisystems (ext2 oder ext3) wieder ein.
file-roller
Einfaches und kleines Archiv-Tool unter GNOME.
find ... | cpio -o
Sucht Dateien in Dateibäumen nach unterschiedlichen Kriterien und erstellt mit den gefundenen Dateien eine Sicherung im cpio-Format. R cpio
gunzip
Dekomprimiert mit gzip komprimierte Dateien.
gzip
Komprimiert (und dekomprimiert) Dateien.
karchiver
Einfaches und kleines Archiv-Tool unter KDE.
rsync
Erlaubt Verzeichnisse zu synchronisieren und über Netz zu kopieren/sichern.
scp
Kopiert Dateien netzwerkweit und verschlüsselt.
taper
Mächtiges Sicherungsprogramm zur Sicherung auf Bandmedien.
tar -c
Erstellt ein Sicherungsarchiv auf Band oder in eine Archivdatei.
tar -t
Erstellt eine Inhaltsliste von einem mit tar erstellten Archiv bzw. sucht im Archiv nach vorgegebenen Dateien.
tar -x
Liest vorgegebene Dateien aus dem Archiv wieder ein. Fehlt die Angabe der Dateien, so werden alle Dateien extrahiert.
unison
Sichert (wie rsync) Verzeichnisbäume und synchronisiert sie (unter Verwendung des rsync-Protokolls).
Prozessverwaltung
412
at
Führt Kommandos zu vorgegebenen Zeiten aus.
atq
Zeigt alle anstehenden at-Aufträge an.
atrm
Erlaubt at-Aufträge zu löschen.
atrun
Lässt alle anstehenden at-Kommandos sofort laufen.
batch
Führt Aufträge zu Zeiten niedriger Systembelastung aus.
bg
Lässt Prozess im Hintergrund laufen.
crontab
Setzt zeitgesteuerte Aufträge ab.
C.1 Kommandoüberblick nach Funktionen
Prozessverwaltung – Fortsetzung fg
Lässt Prozesse im Vordergrund laufen.
fuser
Zeigt die Prozessnummern an, die auf die angegebenen Geräte oder Verzeichnisse zugreifen.
kdesu
Ein grafisches Tool, um Kommandos unter einer anderen Benutzeridentität (z.B. Super-User) auszuführen.
kill Signal PID
Sendet das angegebene Signal an den Prozess mit der PID.
kill -9 PID
Beendet den Prozess mit der angegebenen Prozessnummer.
kill -SIGSTOP PID
Hält einen Prozess an (kill -SIGCONT PID setzt ihn fort).
killall -c Name
Beendet alle Prozesse eines Prozessnamens.
ksysguard
Grafisches Tool zur Systemüberwachung (ähnlich ps).
nohup
Lässt Programme nach dem Abmelden weiterlaufen.
ps
Zeigt die aktuell laufenden Prozesse an.
pstree
Zeigt die aktuellen Prozesse in einer Baumstruktur an.
renice
Verändert den nice-Wert eines laufenden Prozesses.
su
Erlaubt temporär unter der Identität eines anderen Benutzers zu arbeiten.
sudo
Erlaubt über die Definitionsdatei /etc/sudoers auch normalen Benutzern, bestimmte Programme mit dem Super-User-Recht auszuführen.
top
Zeigt interaktiv die ›Top‹-Prozesse an.
vcron
Grafisches Tool, um zeitgesteuerte Aufträge abzusetzen.
visudo
Editorbefehl für root, um die Datei sudoers zu bearbeiten.
which
Gibt den absoluten Pfadnamen eines Kommandos aus.
xhost
Setzt die Berechtigung, um grafische Ausgaben von anderen Rechnern/Benutzern zuzulassen.
Netzwerke (die mit * g ekennzeichneten Kommandos sind im Buch nicht behandelt) ethereal (tethereal*) findsmb*
Zeigt sämtlichen Netzwerkverkehr an (eine Art Sniffer).
finger*
Zeigt alle Benutzer an, auch jene, die über Netz angemeldet sind.
ftp*
Transferiert Dateien über das Netz.
host
Zeigt die jeweilige Auflösung der Namens in IP-Adresse oder umgekehrt.
hostname
Gibt den in der Datei /etc/host eingetragenen Rechnernamen aus.
Zeigt alle Rechner an, die auf smb-Anfragen antworten (im Samba-Paket).
413
Kurzreferenz Administration
Netzwerke Fortsetzung (* im Buch nicht behandelt) ifconfig
Gibt Kontrollwerte zu den installierten Netzwerkkarten aus (analog unter Windows: ipconfig).
ip
Ist mächtiger als ifconfig. Es kann sowohl Netzwerkgeräte, Routen und Tunnels anzeigen als auch diese verändern.
netstat
Liefert Statusinformationen über das Netzwerk.
nmblookup*
Zeigt NetBIOS-Namen an.
nmap
Kommando, um den Netztransfer zu kontrollieren.
ping
Prüft IP-Verbindungen auf unterster Ebene.
rlogin*
Remote-Login – ähnlich dem Kommando R telnet.
route*
Zeigt die IP-Routen-Tabelle an.
scp
Kopiert (wie cp) Dateien verschlüsselt über ein Netz.
sftp
Transferiert Dateien verschlüsselt über das Netz.
smbclient*
Greift auf Windows-Freigaben zu.
smbpasswd
Setzt Passwörter für Samba-Benutzer.
smbstatus*
Zeigt die aktuellen auf Samba-basierenden Verbindungen an.
smbtree*
Zeigt alle Freigaben über Samba im Netz an.
ssh
Öffnet eine Shell auf einem entfernten Rechner mit verschlüsselter Übertragung.
ssh-keygen
Generiert Schlüsselpaare für eine gesicherte Übertragung.
tcpdump
Zeigt allen Verkehr auf tcp an.
telnet*
Anmelden an einem entfernten Rechner.
testparm
Überprüft die Samba-Konfigurationsdatei smb.conf.
traceroute
Kontrolliert die Netzwerkverbindungen über Router.
xhost
Setzt die Berechtigung, um grafische Ausgaben von anderen Rechnern/Benutzern zuzulassen.
xnmap
Grafisches Tool, um den Netztransfer zu kontrollieren.
yppasswd
Vergibt Passwörter für Benutzer unter NIS.
Konfigurieren und Software nachinstallieren
414
insmod
Lädt ein Kernel-Modul.
insserv
Fügt ein installiertes System-Skript in die betreffenden InitVerzeichnisse der Runlevel.
lsmod
Zeigt den Status der Module im Linux-Kernel.
modprobe
Zeigt die eingebundenen Module des Linux-Kernels an, fügt neue hinzu oder löscht sie.
rpm
RPM installiert oder überprüft Softwarepakete, die als RPMPakete aufbereitet sind.
yast (yast2)
Zentrales Administrationswerkzeug und Konfigurationstool unter SUSE Linux
C.2 Kommandos alphabetisch
C.2
Kommandos alphabetisch
Kommandoeingabe
Funktion
accepts Drucker
Setzt die Auftragswarteschlange für einen Drucker oder eine Druckerklasse auf empfangsbereit.
afio [-oitr] [Optionen] Archivname (archive files input output) Erlaubt die Übertragung und das Sichern von Dateien und Dateigruppen sowie das Wiedereinlesen. -o (output) erstellt ein Archiv -i (install) liest Dateien vom Archiv wieder ein -t (table-of-contents) gibt ein Inhaltsverzeichnis aus -r vergleicht das Archiv gegenüber dem Dateisystem Optionen: -v (verbose) Anzeige der Aktionen -Z Dateien werden über zip komprimiert (bzw. beim Einlesen mit unzip dekomprimiert) -n (newer) beim Einlesen von Daten werden neuere Dateien nicht überschrieben alias [-x] kürzel="Befehl " Beispiel: alias ll="ls -l"
(Alias, Zusatzname) Setzt Kürzel für Befehle R C-Shell, Unterschiede R Wichtige Dateien für den Benutzer, .kshrc
apropos [-rwh] Schlüsselwort
Gibt eine Kurzbeschreibung des Kommandos aus. Hierfür muss die Kurzbeschreibung in der IndexDatenbank enthalten sein. -r interpretiert jedes Schlüsselwort als regulären Ausdruck, der im Befehlsnamen und in der Beschreibung gesucht wird (ohne Wortgrenzen) -w Wildcards können wie in der Shell (z. B. *, ?) im Schlüsselwort mit angegeben werden -h zeigt den Hilfetext an
arc
Älteres Tool, um Sicherungsarchive zu erstellen und zu bearbeiten (nachzuinstallierieren).
at [ Zeit [Datum] Kommando]
(at – zu bestimmter Zeit) Führt Kommandos zu bestimmten Zeiten aus. Um 18:00 wird ›hans‹ die Nachricht, die in der Datei ›Ende‹ steht, geschickt -l (list) listet vorhandene at-Jobs -r (remove) löscht den at-Job für das betreffende Kommando
Beispiel: at 18:00 write hans < Ende
Weitere Optionen:
at [-l] [-r Kommando] atq
(at queue)
Zeigt alle anstehenden at-Aufträge an.
415
Kurzreferenz Administration
Kommandoeingabe
Funktion
atrm Jobnummer
(at remove) Löscht at-Auftrag mit angegebener Jobnummer
atrun
Lässt alle anstehenden at-Kommandos sofort laufen.
bash
(bourne again shell) Ruft die Bash als Subshell auf. Die Datei $HOME/.bashrc wird hierbei gelesen. R Bash Seite 451
batch
Führt Aufträge zu Zeiten niedrigster Systembelastung aus (gleiche Syntax wie R at).
bg %Jobnummer
(background) Der Job läuft als Hintergrundprozess weiter. R fg
break
(brechen/abbrechen) Beendet vorzeitig eine Schleife.
bzip2 [-kfv ] [Dateie(n)]
Komprimiert Dateien mit sehr hoher Komprimierung. Werden keine Dateien angegeben, wird von der Standardeingabe gelesen. -k [--keep] erhält die Eingabedatei(en) -f [--force] überschreibt evtl. vorhandene Ausgabedateien -v [--verbose] zeigt die durchgeführten Aktionen an
Beispiel: bzip2 -k bild* ls -s bild* 111635 bild.jpg 65432 bild.jpg.bz2
cal [[Monat] [Jahr]] Beispiel: cal 2000 | pg
cancel Druck-Auftragsnr. Beispiel: cancel laser-124
(annullieren, abbrechen) Löscht gestartete Druckaufträge Auftragsnr. für Drucker-Queue laser R lp, lpstat
case ... esac
Case-Verarbeitung (Auswahl) R Konstrukte/Ablaufsteuerung der Shell (für sh, ksh und bash) Seite 451
cat Dateiname(n)
(concatenate – zusammenfügen) Zeigt den Inhalt von Dateien. Mehrere Dateien können in eine Datei umgeleitet werden. Mit cat kann über die Standardumleitung (>) eine neue Datei angelegt werden. Mit <Strg+d> wird die Eingabe abgeschlossen.
Beispiele: cat Datei1 Datei2 > \ Datei-neu cat > neu Dies ist eine neue Datei
cd [Directory] cd Beispiele: cd ..
416
(calendar) Kalenderausgabe Anzeige des aktuellen Kalenders oder des Kalenders vom angegebenen Monat/Jahr
cd ~hans cd /home/hans
(change directory) Wechselt in anderes Verzeichnis. Ohne Angabe kehrt man immer ins Home-Verzeichnis zurück. Wechselt in ein Verzeichnis nach oben Wechselt in das Home-Verzeichnis von hans (~ siehe auch Seite 451)
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
chgrp [-R] Gruppenname \ Dateinamen(Directories)
(change group) Ändert die Gruppenzugehörigikeit. -R (recursive) Änderung erfolgt für alle Dateien und Unterverzeichnisse des angegebenen Directories
Beispiel: chgrp -R
kurs /home/ben01
chmod [-R] Art Dateinamen/ Verzeichnis
(change modus) Ändert die Zugriffsrechte. Art: symbolisch oder über Oktalzahl -R (recursive) Änderung erfolgt für alle Dateien/ Unterverzeichnisse
für wen wie was + chmod ugo =- rtwx Datei
Ändert die Zugriffsrechte mit symbolischer Angabe. u (user) der Dateibesitzer g (group) die gleiche Gruppe o (other) alle anderen + hinzufügen - wegnehmen = absolut setzen r (read) Leseerlaubnis t (sticky bit) Datei oder Verzeichnis darf nur vom Besitzer oder root gelöscht werden w (write) Schreiberlaubnis x (execute) ausführbar
chmod Oktalzahl Datei(en)/ Verzeichnis Werte für die Oktalzahl:
Ändert die Zugriffsrechte mit Oktalzahl.
r w x
read write executable
4 2 1
Beispiel zur Errechnung der Oktalzahl Besitzer r w x 4+ 2+ 1 =7
Gruppe Andere r - x - - 4+ 0+ 1 0+ 0+ 0 =5 =0
chmod 750 ben01
Das Verzeichnis erhält die Zugriffsrechte: rwxr-x---
chmod +t Verzeichnis chmod 1000 Verzeichnis
Datei oder ein Unterverzeichnis darf nur vom Besitzer der Datei gelöscht werden.
chmod u+s Datei (4000 Oktalzahl für SUID)
SUID (Set User Identification) bedeutet, dass Programme im Namen des Besitzers (user) gestartet werden.
chmod g+s Datei (2000 Oktalzahl für SGID)
SGID (Set Group Identification) bedeutet, dass die Rechte der Gruppe beim Programmstart übergeben werden.
Beispiele:
417
Kurzreferenz Administration
Kommandoeingabe
Funktion
chown [-Rcv] Benutzer \ Datei(en)/Verzeichnis
(change owner) Ändert den Besitzer. -R (recursive) Die Änderung erfolgt für alle Dateien/ Unterverzeichnisse -c (change) zeigt nur an, wenn Änderungen durchgeführt wurden -v (verbose) zeigt alle Aktionen an
chpass [-e Datum] [-s shell] \ [Benutzer]
(change passwd) Ändert Eigenschaften vom Passwort. Ohne Angabe eines Benutzers betreffen die Änderungen den aktuellen Benutzer. -e (expire time) Ablaufdatum -s (shell) neues Startkommando/neue Startshell
chsh Benutzer
(change shell) Ändert die Login-Shell eines Benutzers.
Beispiel:
chsh uta Ändere Login-Shell für uta Password: Geben Sie den neuen Wert ein, oder drücken Sie ENTER für den Alten Login Shell[/bin/bash]: bin/sh Shell geändert
clear
(klären, reinigen) Löscht den aktuellen Bildschirminhalt und setzt den Cursor in die oberste Zeile.
cmp
(compare, vergleichen) Vergleicht Dateiinhalte. Bei Ungleichheit wird angezeigt, welche Zeilen unterschiedlich sind R diff
Beispiel: cmp
text1
text2
text1 text2 differieren: Byte 1, Zeile 1.
compress Dateiname(n)
Beispiel: compress sicherung.tar
418
(verdichten) Verdichtet/komprimiert Dateien, wird oft in Verbindung mit tar/ftp verwendet. Der Dateiname wird mit .Z erweitert. Eine bessere Komprimierung erhält man mit R zip bzw. R gzip R bzip2 Inhalt der Datei anzeigen R zcat Datei dekomprimieren R uncompress
continue
(fortfahren) Überspringt den Rest der Schleife, um mit dem nächsten Schleifenwert fortzufahren. R S. 456
cp [-i] Dateialt Dateineu cp [-i] Datei1 Datei2 ... Directory cp [-ir ] Directory Directory
(copy) Kopiert eine Datei oder kopiert mehrere Datei(en) in ein anderes Directory. -i (interactive) Falls eine Datei mit gleichem Namen schon existiert, wird nachgefragt, ob sie überschrieben werden darf -r (rekursiv) Der gesamte Dateibaum wird kopiert
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
cpio -i[dmuv] [Dateien] \ < Gerät- oder Archivdatei
(copy input output) -i Wiedereinlesen Liest Dateien aus einem mit cpio erstellten Datenarchiv (Datei oder Datenträger) zurück. Achtung! Eingabe-Umleitungszeichen < angeben! -i (input) Einlesen/Zurückschreiben der Sicherung -d (directory) Unterverzeichnisse werden angelegt, falls sie noch nicht vorhanden sind -m (modification date) Die kopierte Datei erhält das Datum der Originaldatei -u (unconditional) Die kopierte Datei überschreibt evtl. schon vorhandene Dateien, sonst werden Dateien nur dann überschrieben, wenn das Modifikationsdatum älter ist -v (verbose – geschwätzig) Alle ausgeführten Kopien werden angezeigt
Ausgabe-Dateiliste | cpio \ -o[vB] > Geräte- oder Archivdatei
(copy input output) -o Ausgabe/Erstellen Kopiert Dateien auf einen Datenträger oder in eine Archivdatei. Achtung: Ausgabe-Umleitungszeichen > angeben! -o (output) kopiert die als Dateiliste übergebenen Dateien und Unter-Directories auf das angegebene Gerät oder in die Archivdatei -v (verbose – geschwätzig) Alle ausgeführten Kopien werden angezeigt -B (block) Blockungsfaktor für Magnetband/Streamer Alle Dateien des aktuellen Verzeichnisses werden auf Magnetband geschrieben
Beispiel: find . -print | cpio -ovB \ > /dev/mt0
Ausgabe-Dateiliste | cpio \ -p[dmuv] Ziel-Directory
(copy input output) -p Eingabe und Ausgabe -p (pass – weiterreichen) Kopiert Dateien von Verzeichnis zu Verzeichnis über eine Dateiliste -d (directory) Unter-Directories werden angelegt, falls sie noch nicht vorhanden sind -m (modification date) Die kopierte Datei erhält das Datum der Originaldatei -u (unconditional) Die kopierte Datei überschreibt evtl. schon vorhandene Dateien. Dateien werden sonst nur dann überschrieben, wenn deren Modifikationsdatum älter ist -v (verbose – geschwätzig) Alle ausgeführten Kopien werden angezeigt
Beispiel siehe nächste Seite
419
Kurzreferenz Administration
Kommandoeingabe
Funktion
Beispiel zu cpio -p:
Kopiert Dateien von Verzeichnis zu Verzeichnis über eine Dateiliste, die mit ›find‹ erstellt wird. Alle Dateien des aktuellen Directories werden mit gleichem Namen in das Verzeichnis /tmp/Sicherung/hans kopiert.
cd /home/hans find . -print| cpio -pvmd \ /tmp/Sicherung/hans
crontab [-elr] [Datei]
Beispiel: 45 17 * * 1,2 DISPLAY=:0.0 \ /opt/kde3/bin/kpat
Die obige Angabe bewirkt, dass jeweils um 17:45 das Spiel Patiencen gestartet wird, und zwar an allen Tagen, jeden Monat jeweils montags und dienstags 0 18 * * 1,2 \ /usr/bin/killall -ce \ /opt/kde3/bin/kpat
Diese Zeile beendet jeweils um 18:00 das vorher gestartete Spiel
csh
Erstellen von Befehlen für eine zeitgesteuerte Ausführung bzw. Übergabe einer im crontab-Format erstellten Datei an den crond-Daemon bei Angabe einer Datei. -e (edit) erstellen, ändern der je Benutzer erstellten Tabelle (unter /var/spool/cron/tabs) -l (list) anzeigen der bestehenden Tabelle -r (remove) löschen einer crontab-Tabelle Aufbau der Zeitvorgaben von crontab-Tabellen: Min Stunde Tag Monat Wochentag 0-59 0-23 1-31 1-12 0-7 Mögliche Kombinationen: * für alle Einheiten 1-3 von bis 1,5,6 Reihung jeweils 1, 5 und 6 -*3 alle 3 Einheiten (z.B. alle 3 Minuten) Alle fünf Felder müssen durch Leerzeichen getrennt sein, anschließend folgt die Kommandoeingabe mit absolutem Pfadnamen. Ruft die C-Shell auf (unter Linux Link auf die tcsh). Die Datei .cshrc im Home-Directory des Benutzers wird dabei gelesen. R Seite 460
csplit [-f prefix] Datei \ [/Muster/ ] [Zahl] [{Wiederholung}]
Zerteilt eine Datei in mehrere einzelne Dateien. Die Ausgabedateien werden mit xx und fortlaufend 2 Ziffern (xx01, xx02 etc.) benannt. Als TrennungsBeispiel: merkmal kann ein Muster mit regulären Expressions csplit Inhaltsliste /^Ver/ \ (R Seite 465) vorgegeben werden, oder eine Zahl, {*} die angibt, nach wieviel Zeilen getrennt werden soll. 43 Zusätzlich kann ein Wiederholungsfaktor in Ziffern 37 oder mit * (für solange wie möglich) angegeben 36 werden. R split 20 -f (file name) verwendet den prefix-Namen statt xx 51 {*} Die Suche nach dem Muster wird wiederholt erstellt immer eine neue xx-Datei, so- {n} Die Suche wird n-mal wiederholt bald eine Zeile mit ›Ver‹ beginnt. Es wird die Byte-Größe der neuen Dateien ausgegeben
cat xx* > Inhaltsliste.neu
420
Mit R cat können alle Dateien wieder zusammengesetzt werden
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
cut [-dZeichen -fFeldnr -cZeichenposition] [Datei]
(schneiden) Schneidet/separiert Felder (Spalten) aus Dateien oder Zeichenketten. -d (delimiter) Trennungszeichen (Default ist das Tabulatorzeichen) -f (field) Feldnummer -c (character) Zeichenposition Gibt über Bildschirm die Felder 1, 5 und 6 aus: Name, Kommentar und Home-Directory
Beispiel: cut -d: -f1,5-6 \ /etc/passwd otto:Otto Gross:/home/otto
date [+"Formatangaben"]
Beispiel: date
+"%A, der %d.%m.%y"
Mittwoch, der 29.09.04
Zeigt das Datum an. Es kann nur vom Systemverwalter geändert werden. + Kennzeichen für Formatierung der Ausgabe, hierbei steht %y für Jahr YY %m für Monat MM %d für Tag TT %A für Wochentag %a für abgekürzten Wochentag weitere Platzhalter: %H für Stunden 00–23 %M für Minuten 00–59 %S Sekunde 00–59 %T für Uhrzeit im Format HH:MM:SS %w für den Wochentag in Zahlen (Sunday =0) %h für den abgekürzten Monat (Jan –Dez)
declare Name=Wert
Zuweisung einer Variablen unter bash R typeset R Besonderheiten der Bash auf Seite 459
dd if=Dateiname of=Gerät \ Option=Wert
(device to device) Kopiert Dateien, Dateibereiche oder gesamte Platten 1:1. Ausgabe von tar über Netz auf einen Streamer an einen entfernten Rechner bs block size Wert (in diesem Beispiel 64 kB) bs und bytes können folgende Endungen haben: b 512 , kB 1000, K 1024, MB 1000x1000, M 1024x1024, GB 1000x1000x1000, G 1024x1024x1024
Beispiel: tar -cvf - . | rsh Rechner \ dd of=/dev/rmt/0 bs=64K
df [-k] [-h] [-T]
(disk free) Zeigt die verfügbare Plattenkapazität in 512-Byte-Blöcken für alle montierten Plattenbereiche an. -k (kilo) zeigt die Kapazität in 1 kB-Blöcken an -h (human) gibt lesbare Werte wie kB oder MB aus -T (type) informiert über den Typ des Dateisystems
421
Kurzreferenz Administration
Kommandoeingabe
Funktion
diff Datei1 Datei2
Vergleicht Dateien miteinander. Die Ausgabe zeigt die unterschiedlichen Zeilen an: Inhalt Datei1 Inhalt Datei2
Beispiel: diff text1 text2 1c1,2 < 1. Datei erste Zeile --> 2. Datei erste Zeile > zweite Zeile
2. Datei erste Zeile zweite Zeile Ende
disable Drucker
Deaktiviert die angegebenen Drucker unter CUPS.
du [-sh] Directory
(disk used) Zeigt den verbrauchten Plattenplatz. -s (sum) gibt nur die Summe pro Verzeichnis aus -h (human) gibt lesbare Werte wie kB oder MB aus
dump
Führt eine dateisystemspezifische Totalsicherung oder inkrementelle Sicherung für Dateisysteme vom Typ ext2 oder ext3 durch.
echo [-n] [Text …]
Gibt Zeichenketten auf den Bildschirm aus. -n (no newline) am Ende der Zeile erfolgt kein Umbruch
Beispiele: echo "Soll die Datei gelöscht werden?" echo $PATH /usr/local/bin:/bin:/usr/ bin:/usr/X11R6/bin
422
1. Datei erste Zeile Ende
Zeigt den Wert einer Variablen. Im Text können folgende Steuerzeichen vorkommen: \a Alarmsignal \c Cursor in gleicher Zeile \n neue Zeile \t Tabulator
ed Dateiname
(editor) Ein zeilenorientierter Editor R Seite 466
enable s Drucker
Aktiviert einen Drucker für weitere Ausgaben.
emacs Dateiname
(editor) Bildschirmorientierter Editor Mächtiger Editor, der auf nahezu allen Plattformen verfügbar ist.
env
(environment) Zeigt die gesetzten Variablen an, die auch für Unterprozesse gelten (exportiert sind). Unter Linux auch: R printenv
ethereal tethereal
Zeigt sämtlichen Netzwerkverkehr an (muss nachinstalliert werden).
exit [Status]
(Ausgang) Bricht eine Shell-Prozedur ab bzw. beendet die aktuelle Shell. R kill, Signale (Exit-Status)
expand
Expandiert Tabulatorzeichen in Leerzeichen.
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
export Variable(n)
(exportieren) Die Variablen gelten dann auch für Unterprogramme R Variable Seite 454.
expr Wert1 Symbol Wert2 + \* / %
(expression) Rechenoperationen: addieren subtrahieren multiplizieren dividieren modulo (Restwert) Beispiel einer Rechenoperation Ergebnis
expr 10 + 3 \* 2 16
false
(falsch, unwahr) Der Exit-Status dieses Kommandos ist immer unwahr (ungleich 0).
fc [-l n]
(fix command) Wiederholt bereits eingegebene Kommandos/Befehle bzw. zeigt sie an (HistoryMechanismus). -l (list) zeigt die letzten 20 bzw. n Kommandos an (für fc -l gibt es den Alias R history)
fdisks -l
Zeigt die vorhandenen Partitionen auf den Festplatten.
fg %Jobnummer
(foreground) Der Job läuft als Vordergrundprozess weiter. fg kann für Hintergrund- oder gestoppte Prozesse aufgerufen werden. R bg R jobs
file [-i] Dateiname(n)
(Datei) Versucht den Inhalt oder die Art einer Datei zu bestimmen. -i gibt die MIME-Strings (Multipurpose Internet Mail Extension) aus z.B.
Beispiel: file * text1: Documents: grouptest: Stichw.pdf:
file-roller
ASCII text directory empty PDF document, version 1.2
print.ps: application/postscript printenvtext: text/plain; charset=us-ascii
file-roller ist ein Archivmanager für GNOME, der folgende Aufgaben erfüllt: Archive erzeugen und modifizieren Inhalt eines Archivs betrachten Dateien aus dem Archiv ansehen Dateien aus dem Archiv extrahieren Folgende Dateitypen werden u.a. unterstützt: gzip (.tar.gz, .tgz), bzip (.tar.bz, .tbz), bzip2 (.tar.bz2, .tbz2), compress (.tar.Z, .taz)
423
Kurzreferenz Administration
Kommandoeingabe
Funktion
find Startdir [Suchkriterien] \ [Ausgabeart]
(finden) Sucht (findet) Dateien rekursiv in Verzeichnissen nach unterschiedlichen Suchkriterien. Entgegen Unix-Systemen muss kein Start-Directory angegeben werden. Es wird das aktuelle Directory mit › . ‹ und die Ausgabeart -print als Default angenommen. Es wird eine Liste aller Dateien rekursiv durch alle Unterverzeichnisse mit relativem Pfadnamen ausgegeben. Wird das Start-Directory mit absolutem Pfadnamen angegeben, erfolgt auch die Ausgabe entsprechend. Verschiedene Suchkriterien können mit logischen Verknüpfungen -a (and und) -o (oder) -not (nicht) verbunden werden. Ohne Angabe wird eine andVerbindung (-a) angenommen -name Suche nach bestimmten Namen, wobei Dateinamenexpansion über Metazeichen ( *?[ ] ) möglich ist. Um zu verhindern, dass die Expansion für das aktuelle Verzeichnis vorgenommen wird, sind die Anführungszeichen zu setzen -mtime (Modifikationsdatum) Je nach Vorzeichen bedeutet die angegebene Zahl n n genau vor n Tagen -n innerhalb von n Tagen +n vor n Tagen und früher -newer (neuer als) Es werden alle Dateien gefunden, deren Modifikationsdatum neuer als die angegebene Datei ist -inum (Inode-Nr) Es werden alle Dateien ausgegeben, deren Inode-Nummer der angegebenen Nummer entspricht. Diese Suche sollte mit -a -mount verbunden werden, damit nur auf der aktuellen Partition gesucht wird -mount (aktuell montiert) Es werden keine Unterverzeichnisse durchsucht, die auf einem anderen Dateisystem (Partition) liegen (gemountet sind) -user Benutzername Es werden nur Dateien gefunden, die dem angegebenen Benutzer gehören
find . ./.profile ./Documents ./Documents/texta …
Suchkriterien können sein:
-name Dateiname -mtime n -mtime -n -mtime +n -newer Datei -inum inode-Nr -mount -user Benutzername Beispiele: find . -name "*.jpeg" ./Vogelatlas/Zilpzalp.jpg ./SuSE-kdm.jpeg find -mtime -1 | wc -l 182 find -mtime +1 | wc -l 7155 find . -newer "Sichprot" \ | cpio -ovf InkremSich find . -inum 129 -a -mount \ -ls 129 8 -rw-r--r-- ...
Beispiel: find /home -name "a*" -a \ -user hans 2>/dev/null
Fortsetzung nächste Seite
424
Sucht nach Dateien, die mit a beginnen und ›hans‹ gehören. Wird die Suche auf Verzeichnisse ausgedehnt, zu denen der Benutzer keine Zugriffsrechte hat, empfiehlt es sich, Fehlermeldungen umzuleiten nach /dev/null
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
Fortsetzung find Ausgabearten können sein:
-print zeigt die gefundenen Dateien an -ls (list) zeigt die gefunden Dateien mit den Eigenschaften wie unter ls -l an -exec (ausführen) führt das folgende Kommando für alle gefundenen Dateien aus. Die Angabe › {}‹ ist Platzhalter für die jeweils aktuell gefundene Datei. › \;‹ muss als Endemarkierung für das execKommandos eingegeben werden.
-print -ls -exec Kommando {} \;
Beispiel:
find /home -name "*.ps" -a -user chr -exec rm -i {} \; rm: reguläre Datei "/home/chr/Documents/print.ps" entfernen? y
findsmb
Zeigt alle Rechner an, die auf smb-Anfragen antworten (im Samba-Paket).
finger [Benutzer]
Zeigt die Benutzerinformationen angemeldeter Benutzer innerhalb eines Netzes.
for … do done
Leitet eine Schleife ein. R Shell-Ablaufsteuerung
free
Zeigt den freien und belegten Speicher im System.
total
used
Mem: 256656 -/+ buffers/cache: Swap: 1052216
fsck s fsck.ext2 fsck.ext3 reiserfsck fsck.vfat
free 249720 122876 0
shared 6936 133780 1052216
buffers
cached 0
49136
(filecheck) Konsistenzprüfung des Dateisystems – in unterschiedlichen Varianten für die verschiedenen Dateisystemarten. Wird keine spezifische Angabe gemacht, versucht fsck die Art des Dateisystems zu erkennen und führt danach die entsprechende Konsistenzprüfung durch.
fsck /dev/hdb20 fsck 1.34 (25-Jul-2003)reiserfsck 3.6.13 (2003 www.namesys.com) *Will read-only check consistency of the filesystem on /dev/hdb20 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 Oct 2 13:57:02 2004 Replaying journal.. Reiserfs journal '/dev/hdb20' in blocks [18..8211]: 0 transactions replayed Checking internal tree..finished Comparing bitmaps..finished Checking Semantic tree: finished No corruptions found reiserfsck finished at Sat Oct 2 13:59:36 2004
425
Kurzreferenz Administration
Kommandoeingabe
Funktion
ftp [[Benutzer@]Rechnername]
(file transfer protocol) Kopiert Dateien von/auf entfernte Rechner, hierbei kann der Rechnername oder die IP-Adresse des entfernten Rechners oder Benutzername@Rechner angegeben werden. Nach der Passwortabfrage kommt die Bestätigung und es wird meist der Übertragungsmodus angezeigt.
Beispiel: ftp christine@macy Connected to macy… Using binary mode to transfer files.
Kommandos unter ftp:
cd pwd ls [Directory] get Dateiname
mget Dateiname(n)
put Dateiname
mput Dateiname(n)
binary ascii delete Dateiname(n)
mkdir lcd Directory bye oder quit
function Name { Kommando … } Beispiel: function wo { find . -name $1 }
426
Auswahl der meistbenötigten Kommandos: (change directory) wechselt in das Directory auf dem entfernten Rechner (print working directory) zeigt das aktuelle Directory auf dem entfernten Rechner (list) zeigt den Inhalt des aktuellen Directories auf dem entfernten Rechner (get–holen, bekommen) kopiert die Datei des entfernten Rechners in das aktuelle Directory des lokalen Rechners (multiple get–mehrfach holen) kopiert alle angegebenen Dateien (z. B. über Dateinamenexpansion) in das aktuelle Directory des lokalen Rechners (put–abgeben) kopiert die angegebene Datei vom lokalen Rechner in das aktuelle Directory des entfernten Rechners (multiple put) Kopiert mehrere Dateien (evtl. über Dateinamenexpansion) vom lokalen Rechner in das aktuelle Directory des entfernten Rechners schaltet in den Binary-Mode (Default) um (wenn z. B. zuvor auf ASCII umgeschaltet wurde) schaltet in den ASCII-Mode um (löschen) soweit die Zugriffsrechte es zulassen, können Dateien auf dem entfernten Rechner gelöscht werden (make directory) legt auf dem entfernten Rechner ein Directory an (local chance directory) wechselt auf dem lokalen Rechner in das angegebene Directory beendet die Verbindung zum anderen Rechner (Funktion) Funktionen werden oft in Shell-Skripts verwendet und ähnlich eines Shell-internen Kommandos genutzt. Die Funktion kann ein oder mehrere Kommandos enthalten, wobei auch Positionsparameter ($1, $2 usw.) verwendet werden können. Beim Aufruf von wo wird der Name der Datei mitgegeben, nach der ab aktuellem Directory gesucht wird R Konstrukte Seite 456 (Bash und Korn-Shell)
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
fuser [-k] Gerät oder Directory
Zeigt evtl. Prozessnummern an, die auf die angegebenen Geräte oder Verzeichnisse zugreifen. -k bricht die angezeigten Prozesse ab (soweit die Berechtigungen es erlauben)
getfacl Datei
Zeigt die zusätzlichen Zugriffsrechte über ACL an.
Beispiel: getfacl Telefonliste # file: Telefonliste # owner: juergen # group: users user::rwuser:carsten:r-x group::r-mask::r-x other::r--
gpasswd
Ändert das Passwort einer Gruppe.
grep [-hilnvw] Muster \ Dateiname(n)
(get regular expression) Durchsucht Dateiinhalte nach bestimmten Zeichenvorgaben/Suchmustern. Im Muster können Metazeichen (regular expression) wie im ed/vi verwendet werden R Seite 465 -h (header) der Dateiname wird nicht mit ausgegeben -i (ignore) behandelt Groß- und Kleinbuchstaben gleich -l (line) nur die Dateinamen werden angezeigt -n (number) gibt zusätzlich die Zeilennummer mit aus -v (invert) gibt alle Zeilen aus, die nicht dem Muster entsprechen -w (word) Suchmuster muss ein einzelnes Wort sein Es werden alle Zeilen aus der Datei trofftext angezeigt, die nicht mit einem ›.‹ beginnen.
Beispiel: grep -v "^\." trofftext
groupadd s
Gestattet das Hinzufügen einer Benutzergruppe (in /etc/group).
groupdel s
Löscht einen Gruppeneintrag aus /etc/group.
groupmods
Erlaubt kontrolliert Änderungen in der Datei /etc/group.
groups
Zeigt die Gruppen an, denen ein Benutzer angehört.
grpck
Prüft die Gruppendateien auf Konsistenz.
gunzip Datei.gz
Dekomprimiert mit gzip komprimierte Dateien. R gzip R compress R zip R unzip R zcat
427
Kurzreferenz Administration
Kommandoeingabe
Funktion
gzip [Optionen] Ausgabedatei Datei ...
Komprimiert Dateien, Ergebnis wird in Datei.gz geschrieben. -c [--stdout] gibt auf Standardausgabe aus und verändert die Originaldateien nicht -d [--decompress] dekomprimiert eine Datei (R gunzip) -l [--list] zeigt den Inhalt von komprimierten Dateien -r [--recursive] bearbeitet Verzeichnisse rekursiv R gunzip R compress R zip R unzip R zcat
halt
Hält das System komplett an (Teil von R shutdown).
head [-n] Dateiname(n)
Zeigt die ersten 10 Zeilen einer Datei an. -n number zeigt n Zeilen der Datei an
history [n]
Zeigt die letzten bzw. n Kommandos an. (Alias zu R fc -l)
host Rechnername oder IPAdresse
Zeigt die jeweilige Auflösung der Namen in IP-Adresse oder umgekehrt (entweder vom DNS-Server des Providers oder über den mit bind eingerichteten Nameserver).
hostid
Eindeutige Identifikationsnummer eines Rechners
hostname
(Wirtsname) Zeigt den Rechnernamen an.
hwinfo
(hardware info) Überprüft die Hardware und gibt eine entsprechende Aufstellung aus. --short gibt eine kurze Liste aus -- Geprüft werden können: cdrom, floppy, disk, network, gfxcard, framebuffer, monitor, camera, mouse, joystick, keyboard, chipcard, sound, isdn, modem, storage-ctrl, netcard, printer, tv, dvb, scanner, braille, sys, bios, cpu, partition, usb-ctrl, usb, pci, isapnp, ide, scsi, bridge, hub, memory, smp u.a.
hwinfo --disk --short disk: /dev/hda WDC AC34300L /dev/hdb SAMSUNG SV1204H
id uid=1000(chr)gid=100(users) Gruppen=14(uucp),16 (dialout),17 (audio),33(video),100 (users),1001(support)
if ... then [else] fi
428
Zeigt Informationen über Benutzer mit Benutzer- und Gruppgennummer sowie die Zugehörigkeit aller Gruppen an.
Leitet eine if-Bedingung ein R Shell Ablaufsteuerung Seite 456
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
ifconfig ifconfig Schnittstelle [AF-Typ] Optionen | Adresse ...
Gibt Kontrollwerte zu den installierten Netzwerkkarten aus (unter Windows: ipconfig) bzw. konfiguriert die angegebene Schnittstelle. (Schnittstelle Treiber) Name des Netzgerätes z. B. eth0 (AF-Typ) Adressfamilie z.B. inet oder inet6 Optionen z.B. up aktiviert die Schnittstelle down deaktiviert die Schnittstelle netmask setzt die Netzwerkmaske für die IP-Adresse
ifconfig eth0 192.168.0.10 netmask 255.255.255.0
info Kommando
Online-Manual im ›info-Format‹. Ähnlich der manpages, oftmals in deutsch. Interne Steuerungen möglich durch: ? Hilfefunktionen h Tutorial nächste Seite q Beenden
init Runlevel
Wechsel des Runlevels: 1 (S) Single-User 2 Multi-User ohne Netz 3 Multi-User mit Netz 4 (frei) 5 Multi-User mit Netz und grafischer Oberfläche 6 (reboot) Neustart
insmod Moduldatei
(insert module) Ein älteres, einfaches Programm, um dem Kernel Module hinzuzufügen. Empfohlen wird stattdessen, R modprobe zu verwenden
insserv [-rdh] Name
(install service) Aktiviert ein installiertes Init-Skript für die entsprechenden Runlevel. -r [--remove] löscht das angegebene Skript aus allen Runlevel-Verzeichnissen -d [--default] aktiviert die Skripte für die im Skript definierten Runlevel -h [--help] gibt eine kurze Hilfeinformation aus
ip [Optionen] Objekt
Ist mächtiger als ifconfig. Es kann sowohl Netzwerkgeräte, Routen und Tunnels anzeigen als auch diese verändern.
jobs
(jobcontrol) Zeigt vorhandene Jobs an. Jobs sind angehaltene Vordergrundprozesse (Ctrl+z) oder Hintergrundprozesse (kill -SIGSTOP) R fg R bg
429
Kurzreferenz Administration
Kommandoeingabe
Funktion
karchiver
Ein kleines Archivierungsprogramm für KDE, mit dem man durch selbsterklärende grafische Tools Archive wie .tar.gz oder .tar.bz2 ein- oder auspacken, konvertieren oder durchsuchen kann. Weitere unterstützte Formate sind: lha-, arj-, rar-, reine gzip-, reine bzip2- und zip-Archive
kdesu [-u Benutzer] Kommando
Führt unter root bzw. dem angegebenen Benutzer (user) das Kommando aus, sofern die Berechtigung hierzu in der Datei /etc/sudoers von root eingetragen wurde. R visudo
kernelversion
Gibt die Version des geladenen Kernels aus.
khelpcenter
Startet das grafische Hilfe-Tool unter KDE.
kill [Signal] [-l] [PID] [%Jobnr]
(kill) Bricht einen Prozess ab. Als Signal kann entweder die Signalnummer oder die Signalbezeichnung eingesetzt werden. kill -l listet die Signale: 1 beendet Terminalverbindung 2 entspricht <Strg+c> Canceln 3 Abbruch mit Coredump 9 absoluter Prozessabbruch 19 stoppt einen Prozess (stop) 20 stoppt einen Prozess (<Strg+z> für Vordergrund)
einige Signale:
1 2 3 9 19 20
SIGHUP SIGINT SIGQUIT SIGKILL SIGSTOP SIGTSTP
killall [-live] [-Signal] \ [Kommandos]
(tötet alle) Ohne Option werden alle Prozesse des Benutzers abgebrochen. -Signal Bei killall wird standardmäßig das Signal ›9‹ gesendet. Um ein anderes Signal zu senden, kann man hier, wie bei kill, die Signalnummer oder den Signalnamen eingeben -l listet die möglichen Signalnummern auf (wie bei kill) -i (interactive) Erst durch die Bestätigung wird der Prozess beendet -v zeigt die beendeten Prozesse an -e (exact) Prozesse mit Namen länger als 15 Zei-
chen werden nicht abgebrochen, selbst wenn die ersten 15 Zeichen übereinstimmen. ksysguard
430
Grafisches Tool zur Systemüberwachung System R Überwachung R Systemüberwachung
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
ksh
(Korn-Shell) Startet eine Korn-Shell. Hierbei wird die Datei $HOME/.kshrc gelesen R Seite 467 R Variable Seite 454
last
Zeigt eine Liste der zuletzt angemeldeten Benutzer.
less
(less is more – weniger ist mehr) Zeigt den Inhalt von Dateien seitenweise an. Verbesserte Variante von more unter Linux R more
ln [-s] Originaldatei Linkname ln -s Orginal-Directory LinkDirectory
(link) Vergibt Dateien zusätzliche Namen bzw. verweist auf eine andere Datei oder ein anderes Verzeichnis. Der lokale Link (oft als hard link bezeichnet) kann nur auf Dateien innerhalb derselben Plattenpartition erfolgen. Er vergibt lediglich einen weiteren Namen für dieselbe Datei. -s (symbolic link) Der symbolische Link wird als eigener Dateityp mit l (klein L–link) gekennzeichnet
logname
Gibt den Login-Namen des Benutzers aus
logout oder exit oder
(abmelden) Beendet eine Shell.
<Strg+d>
lp [-d Druckername] Datei(en)
(line printer) Erstellt einen Druckauftrag. -d (destination) Mit -d"Druckerqueue" kann ein Zieldrucker angegeben werden, soweit mehrere Drucker eingerichtet wurden. R lpr R lpstat R cancel R lpq
lppasswd
Setzt ein Passwort für die CUPS-Verwaltung.
lpq
(line printer queue) Zeigt die Queue der gestarteten Druckaufträge an. R lpr R lp R lpstat R cancel
lpr
(line printer) Erstellt einen Druckauftrag (bei CUPS kann lp als auch lpr verwendet werden). R lpq R lp R lpstat R cancel
lprm Auftrag-Nr.
(line printer remove) Löscht gestartete Druckaufträge.
lpstat
(line printer status) Zeigt alle gestarteten Druckaufträge und deren Status an. R lpq R lp R lpr R cancel
431
Kurzreferenz Administration
Kommandoeingabe
Funktion
ls [-abdFilRst]
(list) Zeigt den Inhalt von Directories und Attribute von Dateien an. -a (all) Auch die mit Punkt beginnenden Dateien (.profile …) werden angezeigt -b (binary) zeigt auch nicht darstellbare Zeichen am Bildschirm an -d (directory) zeigt nur das Directory (nicht seinen Inhalt) an -F (Format short) Directories sind mit ”/” gekennzeichnet, ausführbare Kommandos/Programme mit ”*”, symbolische Links mit ”@” -i (inode) Die inode-Nummer wird mit angezeigt -l (long format) Anzeige mit Attributen -R (Rekursiv) Der Dateibaum mit sämtlichen UnterDirectories wird angezeigt -s (size) Es werden zusätzlich die benötigten Blöcke à 512 Bytes angezeigt -t (time) Die Liste wird chronologisch sortiert ausgegeben
lsmod
Zeigt den Status der Module im Linux-Kernel an.
mail [Benutzer[@Rechner] …]
(Post versenden) Verschickt an einen oder mehrere Benutzer Mails. Nach dem Aufruf erscheint die Aufforderung, einen Betreff einzugeben. Das mail-Kommando hat eine Reihe Zusatzmöglichkeiten, wie Kopien oder Anhänge zu senden etc. Da die Mail jedoch meistens über das grafische Tool KMail genutzt wird, sind hier nur die Basisfunktionen aufgeführt. Ohne Angaben von Parametern wird die Eingangsmail überprüft und entweder ›no mail‹ ausgegeben oder die eingegangenen Nachrichten angezeigt
Subject: Betreff Eingabe der Nachricht direkt über Tastatur – beenden mit
<Strg+d>
mail
>N 1 Absender Fri Oct1 19:47 18/564 test2 mail [-f mbox]
Interaktive Eingabe:
Fortsetzung nächste Seite
432
Mit der Option -f mbox werden die bereits gelesenen und gesicherten Nachrichten angezeigt Über die Enter-Taste wird der Inhalt der aktuellen Nachricht angezeigt oder durch Eingabe der Nachrichtennummer die entsprechende Nachricht ? gibt eine Kurzhilfe aus h (header) zeigt die Liste der Nachrichten an t (type) zeigt den Inhalt der aktuellen Nachricht n (next) zeigt die nächste Nachricht an d (delete) löscht die Nachricht
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
Fortsetzung mail Interaktive Kommandos
s Datei (save) hängt die Nachricht an mbox oder an
man [-k] [Kapitel-Nr] \ [Kommando] [Begriff]
(manual) Gibt eine Beschreibung des angegebenen Kommandos in Verbindung mit R more (less) aus. -k (kriteria) gibt alle möglichen Kommandos aus, zu denen der angegebene Begriff (Schlüsselwort) gefunden wurde R apropos
mesg [y] [n]
(messages) Verhindert oder erlaubt, Mitteilungen von anderen Benutzern mit write oder talk zu erhalten (Schreibrecht für Terminal). n keine Schreiberlaubnis (no) y wieder freigeben (yes) Ohne Angabe wird der jeweilige Berechtigungszustand angezeigt (is yes – is no).
mformat
Formatiert eine DOS-Floppy.
mkdir [-p] Verzeichnisname(n)
(make directory) Legt Directories neu an. -p (pass) noch nicht vorhandene Unter-Directories werden mit angelegt Soweit noch nicht vorhanden, werden folgende Directories angelegt:
Beispiel: cd /home mkdir -p ben01/Uebung
die angegebene Datei an R (reply) erstellt eine neue Nachricht an den Absender m Bemutzer (mail) leitet die mail weiter an den angegebenen Benutzer q (quit) beendet die Mail
/home/ben01 /home/ben01/Uebung
mkfifo s name
(make first in first out file) Legt eine Fifo-Datei (named pipe) an, die ähnliche Funktionen hat wie der Pipe-Mechnanismus unter der Shell. Ein Kommando schreibt eine Information in die Fifo-Datei, das andere liest die hinterlegte Information.
mkfs s mkfs.ext2 s mkfs.reiserfs s mkfs.jfs s mkfs.msdoss
Legt eine neues Dateisystem auf einem Datenträger an. Für die unterschiedlichen Dateisysteme gibt es dazu dateisystemspezifische Versionen. In der Regel werden diese Arbeiten über das grafische Tool YaST durchgeführt: YaST R System R Partitionieren
mknod s
Erstellt einen neuen Geräteeintrag. In der Regel werden Geräte automatisch durch die Hardwareerkennung angelegt bzw. zugeordnet.
433
Kurzreferenz Administration
Kommandoeingabe
Funktion
mkpasswds Passwort
Gibt das verschlüsselte Passwort aus.
modprobe
Ein Programm, um Module in den Linux-Kernel zu laden, zu entfernen oder den Status anzuzeigen. R lsmod
more Datei(en)
(mehr) Zeigt den Inhalt von Dateien seitenweise an.
Interaktive Eingaben:
h /Muster ?Muster q
h (help) zeigt die möglichen Kommandos, u. a.: / sucht vorwärts nach dem Muster ? sucht rückwärts nach dem Muster zeigt die nächste Seite an q (quit) beendet more R less
mounts /dev/Gerät \ Directory_mit_absolutem_Pfadnamen
(montieren) Montiert Platten/Floppies. Formatierte und mit einem UNIX-Dateisystem versehene Platten/Floppies werden in den Gesamtdateibaum unter dem angegebenen Directory eingehängt. R umount Existiert für das angegebene Gerät ein Eintrag in der /etc/fstab, kann das mount-Kommando auch nur mit dem Gerätenamen oder nur mit dem Verzeichnis aufgerufen werden.
mt [-f Gerät]
(magnetic tape) Kontrollfunktionen -f (file device) gibt das Gerät an Aktionen: rew [rewind] spult das Band an den Anfang zurück fsf (files forward) Das Band wird an den ersten Block der folgenden Datei positioniert bzw. an die n-te folgende Datei bsf (backward files) Das Band wird an den ersten Block der zurückliegenden Datei positioniert bzw. an die n-te zurückliegende Datei eof (end of file) schreibt eine Endemarke an die aktuelle Position
Aktionen nach dem Aufruf:
rew [rewind] fsf n bsf n eof
434
mv [-i] Dateialt Dateineu mv -i Datei1 Datei2 ... Directory
(move, bewegen) Ändert einen Dateinamen oder verschiebt Dateien in ein anderes Directory. -i (interactive) Eine bereits bestehende Datei wird nur dann überschrieben, wenn dies mit y bestätigt wird
netstat
(Netz-Status) Liefert Statusinformationen über das Netzwerk.
newgrp Gruppenname
Meldet Benutzer unter einer anderen Gruppe an.
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
nice -n Prioritätswert Kommando
Startet ein Kommando mit Prioritätsänderung. Der ›normale‹ Benutzer kann Priorität nur verringern. n Wert von 0–19 (je höher, desto geringer die Priorität). Nur root darf die Priorität erhöhen - -20 bis --1. R renice
nohup Kommando
(no hang up, nicht aufhören) Der Prozess wird fortgeführt, auch wenn der Vaterprozess beendet wird.
nmap
Kommando, um den Netztransfer zu kontrollieren (muss nachinstalliert werden).
passwd [Benutzername]
Ändert das Passwort. Das Passwort wird nicht angezeigt und sollte mindestens 6 Zeichen enthalten. Ohne Angabe des Benutzers wird das Passwort des aktuellen Benutzers geändert.
ping [IP-Nummer Rechnername]
(Ping-Pong) Prüft IP-Verbindungen auf unterster Ebene und kontrolliert somit, ob der angegebene Rechner erreichbar ist.
printenv
(print environment) Zeigt die gesetzten Variablen an, die auch für Subshells gelten (exportierte Variablen). R env
pr [-ln -on -wn -n Spalten] \ Dateiname(n)
(print format) Führt eine einfache Formatierung von Dateien für die Druckausgabe durch (z.B. Unterteilung in Druckseiten mit Kopfzeilen). -l (length) Anzahl der Zeilen (Seitenlänge) -o (offset) Zeicheneinrückung vom linken Rand (eine Einheit entspricht einem ›m‹) -w (width) Anzahl der Zeichen pro Zeile (Breite) -n (numbering) Die Zeilennummern werden mit ausgedruckt 1-9 (Spaltenanzahl) Der Text wird in die angegebene Anzahl Spalten aufgeteilt
ps [-efl] [-u Benutzer] ps -[axl]
(process status) Anzeige der aktuellen Prozesse -e (every) Anzeige aller Prozesse -f (full) volles Format -l (long) mit allen Attributen -u (user) Prozesse des angegebenen Benutzers Bei einigen Systemen werden unterschiedliche Optionen verlangt, so z. B.: -a (alle) Prozesse eines Terminals -x Systemprozesse
435
Kurzreferenz Administration
436
Kommandoeingabe
Funktion
pstree [-Ga]
Zeigt die aktuellen Prozesse in Baumstruktur an. -a mit vollständiger Kommandozeile -G mit VT100-Linienzeichnung
pwck
(password check) Prüft die /etc/passwd auf Richtigkeit.
pwconvs [-P]
Überprüft und ändert die Passwortdatei /etc/shadow. Falls /etc/shadow noch nicht existiert, wird sie angelegt. -P (path) Statt /etc wird der angegebene Pfad für das Anlegen oder Ändern der shadow-Datei verwendet.
pwd
(print working directory) Zeigt das aktuelle Directory mit absolutem Pfadnamen an. R Variable $PWD
quota
Mit diesem Programm kann der Systemverwalter einzelnen Benutzern und/oder Gruppen Obergrenzen für den Plattenplatzverbrauch und der Anzahl der verbrauchten Dateien vorgeben.
rcp Datei(en)[@Rechner] \ Datei(/Directory)[@Rechner]
(remote copy) Kopiert Dateien von/auf entfernte Rechner, die mit TCP/IP verbunden sind. Etwa gleiche Syntax wie R cp
read var1 [var2 … varn]
(lesen) Liest von der Standardeingabe und weist die gelesenen Zeichen der/den Variable(n) als Wert zu. Werden mehrere Variable angegeben, gilt das Leerzeichen als Trennungszeichen, sonst werden alle Zeichen bis Zeilenende als Wert zugewiesen.
rdump/rrestore
Arbeiten wie dump/restore, jedoch über Rechnergrenzen hinweg, und gehören zu den remote-Kommandos aus der r-Kommando-Suite wie R rlogin R rsh R rcp etc.
reboot s
Fährt das System herunter und startet es danach neu.
reject
Bewirkt, dass der Spooler Aufträge der angegebenen Drucker oder Druckerklassen nicht mehr akzeptiert.
renice -n Prioritätswert PID
Verändert den nice-Wert eines laufenden Prozesses. R nice
restore
Spielt ein mit dump gesichertes Dateisystem wieder ein. Wie bei dump müssen dafür die dateisystemspezifischen Versionen genutzt werden.
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
rlogin [-l Login-Name] Rechner
(remote login) Anmelden an einem entfernten Rechner, der mit TCP/IP verbunden ist. Wird die Verbindung hergestellt, muss ein gültiger Benutzername und ein Passwort eingegeben werden. R telnet R ssh
rm [-fir] [-] Dateiname(n)
(remove – löschen) Löscht Dateien. -f (forced – verstärkt) Auch bei Dateien, die schreibgeschützt sind, wird ohne Nachfrage gelöscht -i (interactive) Die Löschung muss erst mit ›y‹ bestätigt werden -r (rekursiv) Vorsicht! Löscht radikal alle Dateien und evtl. Unter-Directories! - (ohne weitere Angabe) Die nachfolgenden evtl. mit ›-‹ beginnenden Namen sind keine Optionen (sondern z.B. versehentlich mit ›-‹ beginnend angelegte Dateien)
rmdir Directory
(remove directory) Löscht Directories, die keine Dateien mehr enthalten.
route
Zeigt die IP-Routen-Tabelle an.
rpm [-iUFeq] [Zusatzoptionen] \ rpm-Datei [Suchbegriff] Zusatzoptionen: [-alvsdcfi]
RPM installiert oder überprüft Softwarepakete, die als RPM-Pakete aufbereitet sind. -i (install) installiert das Paket -U (upgrade) aktualisiert ein Paket, falls es noch nicht existiert, wird es installiert -F (freshen) aktualisiert ein Paket; im Gegensatz zu -U wird das Paket nicht installiert, wenn es noch nicht existiert -e (erase) entfernt ein Paket aus dem System -V (verify) prüft, ob sich einzelne Dateien des Paketes (ausgenommen Dokumentation) gegenüber der Erstinstallation gändert haben -q (query) erlaubt eine Reihe von Anfragen an die Datenbank und an (auch nichtinstallierte) RPMPakete Zusatzoptionen: [--Alternativkürzel] -a [--all] zeigt alle installierten Pakete -l [--list] zeigt eine Liste der zu einem Paket gehörenden Dateien -v zeigt weitere Dateiattribute analog zum Kommando ls -l
Beispiel: rpm -qs samba package samba is not installed
oder um eine Liste der dazugehörigen Dateien zu erhalten: rpm -ql samba /etc/init.d/nmb /etc/init.d/smb ... /var/log/samba /var/run/samba /var/spool/samba
Fortsetzung nächste Seite
437
Kurzreferenz Administration
Kommandoeingabe
Funktion
rpm Fortsetzung
Zusatzoptionen (Fortsetzung): s [--state] zeigt den Status der Paketdateien an. In der Ausgabe bedeutet ›normal‹, dass die Datei installiert ist --d [--docfiles] zeigt die Dokumentationsdateien eines Paketes an -c [--configfiles] zeigt die Konfigurationsdateien eines Paketes -f [--file] zeigt, zu welchem Paket die Datei gehört -i [--info] gibt Informationen zu einem Paket, unter anderem Installationsdatum, Version, Release, Signatur, Kurzbeschreibung und Autoren R Seite 352
rsh Rechner
(remote shell) Startet eine Shell auf einem entfernten Rechner. Auf dem entfernten Rechner muss der gleiche Benutzername eingetragen sein. Das Passwort wird abgefragt. R ssh
rsync [Option]... [Quelle] [Ziel]
438
Kopiert und synchronisiert Verzeichnisse auch netzwerkweit. Voraussetzung ist, dass auf beiden RechBeispiele: nern rsync installiert ist. Bei Kopien übers Netz kann rsync -a Texte/ /tmp/backup sowohl die Quelle als auch das Ziel am entfernten ls /tmp/backup Rechner sein. Einige Optionen: text1.txt text2.txt -v [--verbose] zeigt die Aktionen an Nach Veränderung von text1.txt -a [--archive] erstellt ein Archiv, entspricht den Optionen (-rlptgoD) rsync -avu Texte/ /tmp/backup -r [--recursive] berücksichtigt auch alle Unterverbuilding file list ... done zeichnisse text1.txt -e [--rsh=shell] spezifiziert die Remote-Shell wrote 1333 bytes read 40 bytes 2746.00 bytes/sec -R [--relative] verwendet relative Pfadnamen total size is 2227 speedup -u [--update] übernimmt nur veränderte Dateien is 1.62 und überschreibt nicht neuere Dateien -l [--links] kopiert symbolische Links als solche Kopieren netzwerkweit: -L [--copy-links] kopiert bei symbolischen Links rsync -a Texte/ \ die entsprechenden Dateien chr@toshili:Texte -p [--perms] erhält die Zugriffsrechte Kopieren netzwerkweit verschlüsselt: -A [--acls] erhält ACLs rsync -e ssh -a Texte/ \ -o [--owner] wird rsync von root ausgeführt, chr@toshili:Texte bleibt der ursprüngliche Eigentümer erhalten -g [--group] wird rsync von root ausgeführt, bleibt die ursprüngliche Gruppe erhalten -d [--devices] wird rsync von root ausgeführt, bleiben die ursprünglichen Geräteinformationen erhalten -t [--times] erhält die ursprünglichen Zeiten
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
scp [[Benutzer1@]Host1:] Datei1 \ [[Benutzer2@]Host2:] [Datei2]
(secure copy) Kopiert netzwerkweit Dateien verschlüsselt. Bei Kopien übers Netz kann sowohl die Quelle als auch das Ziel am entfernten Rechner sein.
scp -r carsten@toshili:Texte\ Textekopie
sed ‘script’ Datei > Dateineu sed -f Script-Datei Datei \ > Dateineu
Beispiel: sed ’s/neu/alt/g’ text1 \ >text2
set set [-vxn]
set set -o set -o noclobber set +o [noclobber, ... ] setfacl
(stream editor) sed ist ein Batch-orientierter Editor. Wird keine Umleitung in eine Datei angegeben, erfolgt die Ausgabe über Bildschirm. Unter script werden Kommandozeilen in Hochkomma eingegeben (etwa gleiche Syntax wie ed R 466). In Such- und Ersetzungsfunktionen können reguläre Ausdrücke verwendet werden. R 465 -f (file) Wurde das Skript vorab in einer Datei abgelegt, kann es mit -f Datei eingelesen werden Von der Datei text1 werden alle Zeichenketten ›alt‹ in ›neu‹ ersetzt und in text2 gespeichert. text1 bleibt unverändert. (setzen) Zeigt die gesetzten Variablen der aktuellen Shell an. Setzt Shell-Optionen. -n (no execution) die Kommandos werden nur gelesen und nicht ausgeführt -x (execute) zeigt alle ausgeführten Befehle an -v (verbose) zeigt alle Schritte einer Prozedur an Hebt gesetzte Optionen (-vxn) wieder auf Setzt zusätzliche Optionen. Wesentliche Optionen: Bestehende Dateien werden bei einer Ausgabeumleitung nicht überschrieben. Hebt die zusätzliche Option wieder auf. R Seite 455
Beispiel:
(set file Access Control Lists) Setzt zusätzliche Zugriffsrechte per ACLs.
setfacl m g:marketing:rx \ Telefonliste
Der Lesezugriff wird für die Datei Telefonliste für die Gruppe marketing ergänzt.
sftp \ [Benutzername@]Rechnername
(secure file transport protocol) Interaktive Kommandos ähnlich wie R ftp Einige der häufig benötigten Kommandos: cd wechselt ins Verzeichnis des entfernten Rechners lcd wechselt ins Verzeichnis des lokalen Rechners
Interaktive Kommandos:
cd Verzeichnis lcd Verzeichnis Fortsetzung nächste Seite
439
Kurzreferenz Administration
Kommandoeingabe
Funktion
sftp Fortsetzung get Datei mget Dateien put Datei mput Dateien mkdir Verzeichnis
get mget put mput mkdir
help bye oder quit oder exit
(holt) eine Datei vom entfernten Rechner (multiple) w. o. aber mehrere Dateien (gibt) eine Datei an den entfernten Rechner ab (multiple) w. o. aber mehrere Dateien legt ein Verzeichnis auf entferntem Rechner an lmkdir legt ein Verzeichnis auf lokalem Rechner an pwd zeigt das aktuelle Verzeichnis des entfernten Rechners an lpwd zeigt das aktuelle Verzeichnis des lokalen Rechners an help zeigt die möglichen Eingaben an exit beendet die Verbindung und sftp
sh
Startet eine Bourne-Shell.
shutdowns [-t sec] [-hr] time
Herunterfahren des Rechners. -t Sekunden an Wartezeit, bevor die Warnung an alle angemeldeten Benutzer geschickt wird und der Shutdown beginnt -h (halt) Das System wird nach dem Shutdown ausgeschaltet -r (reboot) Das System wird nach dem Shutdown neu gestartet Unter time muss entweder die Zeit hh:mm oder das Wort now (oder +0) oder mit +m die Anzahl der Minuten angegeben werden.
sitar
Erstellt eine druckbare Version aller wichtigen Informationen des Systems (Hardware und Software, Systemdateien etc.).
sleep Sekunden
(schlafen) Leitet einen Wartezustand ein (Anzahl Sekunden). Wird meist in Shell-Prozeduren verwendet. Der Prozess wartet 3 Minuten.
lmkdir Verzeichnis pwd lpwd
Beispiel: sleep 180
440
smbclient
Mit diesem Programm kann auf Windows-Freigaben zugegriffen werden.
smbpasswd [-a] Benutzername
Ein notwendiges Kommando unter Samba, um die Passwörter der Samba-Benutzer zusätzlich zum Eintrag in die /etc/passwd noch in /etc/samba/smbpasswd aufzunehmen, damit von Windows-Seite eine Authentifizierung erfolgen kann.
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
smbstatus
Zeigt die aktuellen Samba-basierten Verbindungen an.
smbtree
Zeigt alle Freigaben über Samba im Netz an.
sort [-bfnr] [-tZeichen] \ [-kPosition, Position[Nummer]] \ [-o A-Datei] Datei
(sortieren) Sortiert Dateiinhalte oder Zeichenketten nach verschiedenen Kriterien. -b (ignore blanks) führende Leerzeichen ignorieren -f (fold) Groß- und Kleinbuchstaben werden gleich behandelt -t (terminator Trennzeichen) Wenn nicht das Leerzeichen als Trennung zwischen Spalten dient, wird hier das Trennungszeichen vorgegeben -n (number) Numerische Werte am Anfang werden numerisch sortiert -r (reverse) Es wird in umgekehrter Richtung sortiert -k (Kriterien) Spaltennummer (hier beginnend ab 1) Von Position Zahl1.Zahl2 bis Position Zahl1.Zahl2 Zahl1=SpaltenNr Zahl2=ZeichenNr innerhalb der Spalte -o (output) Die Ausgabe erfolgt standardmäßig auf den Bildschirm, mit -o wird die Ausgabe in die Datei umgeleitet (Ausgabedatei darf gleich der Eingabedatei sein) Die Datei /etc/passwd wird nach den ersten 4 Buchstaben im Kommentar (Name) in aufsteigender Reihenfolge sortiert am Bildschirm angezeigt. Mit + kann die Position der zu sortierenden Spalte angegeben werden (wobei die Spalten ab 0 gezählt werden). Mit – wird die zu berücksichtigende Zeichenanzahl angegeben.
oder
sort [-bfnv] [-tZeichen] +n -n Ausschnitt /etc/passwd: Spaltenzuordnung getrennt durch ›:‹ 0
1
2
3
4...
ben01:x:101:20:Meier:... ben02:x:102:20:huber:... ben03:x:103:20:Beck:...
sort -ft: +4 -4 /etc/passwd ben03:x:103:20:Beck:.. ben02:x:102:20:huber:... ben01:x:101:20:Meier:...
sort -ft: -k 5.1,5.4 \ /etc/passwd
split [-dl n -b n] Datei
Zerteilt eine Datei in mehrere einzelne Dateien fester Größe. Die Ausgabedateien werden mit x benannt und mit einem Suffix nach den Buchstaben des Alphabets durchnumeriert R csplit -d verwendet für den Suffix Nummern statt Buchstaben -l teilt die Dateien nach n Zeilen -b teilt die Dateien nach n Byte
441
Kurzreferenz Administration
Kommandoeingabe
Funktion
ssh [-Optionen] [-l Benutzer@Host] [Kommando]
(secure shell) Mit der Shell verschlüsselt auf einem entfernten Rechner arbeiten. -l (login) -X (X11) grafische Oberflächen-Verbindung weiterleiten
Beispiel:
ssh -l carsten@toshili tar -cf Texte | tar -xC ˜/Textekopie -f -
442
ssh-keygen -t rsa
Generiert Schlüssel und dient zur Erstellung eines eigenen Schlüsselpaars für ssh.
su [-l] [Benutzername]
(switch user) Temporärer Benutzerwechsel -l mit Login-Prozedere (Home-Verzeichnis, Umgebungsvariable .profile, .bashrc etc.) Ohne Benutzernamen erfolgt die Anmeldung für root.
sudo [-l] [-u Benutzername] \ Kommando
Führt ein Kommando unter der Benutzernummer des Super-Users (root) oder eines explizit angegebenen Benutzers aus. Hierzu muss in der /etc/sudoers durch root vorab ein entsprechender Eintrag erfolgt sein. -l listet die möglichen Kommandos auf (entsprechend dem Eintrag in sudoers) -u (user) Benutzer, unter dessen Namen das Kommando ausgeführt werden soll
sync
(synchronisieren) Noch im Cache gehaltene Dateien werden auf das Dateisystem zurückgeschrieben.
tail [-fn,+n] Datei
Zeigt die letzten Zeilen einer Datei an. -n number Anzahl Zeilen (default 10) +n Gesamte Datei nach n Zeilen vom Beginn anzeigen -f (following) Bei laufender Verarbeitung werden kontinuierlich hinzukommende Zeilen angezeigt
talk Benutzername
(sprechen) Mit einem anderen Benutzer Mitteilungen über Bildschirm austauschen, Verbindung eröffnen bzw. sich dazuschalten. Komfortabler als R write
taper
Mächtiges Sicherungsprogramm zur Sicherung auf Bandmedien
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
tar -c [-bhjvzf Gerät-/Dateiname] \ Start-Directory
(tape archive – create) Sichert Dateien auf Magnetband/Streamer oder in eine Archivdatei. -c (create) erstellt ein neues Archiv -b (blocks) Blockungsfaktor für Magnetband -h (hardlink) verfolgt alle Links und kopiert die dort aufgefundenen Dateien -j [--bzip2] Das Archiv wird mit bzip2 komprimiert -v (verbose) zeigt alle kopierten Dateien an -z [--gzip] Das Archiv wird mit gzip komprimiert -f (file) Das direkt nachfolgende Wort ist die Bezeichnung für das Gerät oder der Name für die Archivdatei Kopiert alle Dateien des aktuellen Directories ( . ) in die Archivdatei /tmp/Si.tar.gz. Die Datei /tmp/ Si.tar.gz wird automatisch neu angelegt bzw. eine bereits vorhandene überschrieben. Das Archiv wird hierbei mit gzip komprimiert. Der Dateiname sollte mit entsprechenden Abkürzungen versehen werden.
tar -cvzf /tmp/Si.tar.gz .
tar -t[vf Gerät-/Dateiname ]
(tape archive – table) Zeigt den Inhalt eines mit tar erstellen Datenträgers oder einer Archivdatei an. -t (table) Es wird nur ein Inhaltsverzeichnis des Archivs ausgegeben -v (verbose) zeigt zusätzlich alle Attribute der Dateien Weitere Optionen siehe tar -c
tar -x[mjvzf Gerät-/Dateiname ] [Dateien]
(tape archive – extract) Liest Dateien von einem mit tar erstellten Datenträger oder einer Archivdatei zurück. -x (extract) extrahiert alle oder nur die angegebenen Dateien -m (modify) Die zurückgelesenen Dateien erhalten das Originaldatum (nicht das aktuelle Datum) -v (verbose) zeigt alle kopierten Dateien an -j [--bunzip2] Das Archiv wird mit bzip2 dekomprimiert, wenn es vorab mit bzip2 komprimiert wurde -z [--ungzip] Das Archiv wird mit gunzip dekomprimiert
Beispiel:
Weitere Optionen siehe tar -c
tar -xvmzf /tmp/Si.tar.gz \ ./text1
Kopiert und dekomprimiert aus der Archivdatei die Datei ./text1 zurück und ins aktuelle Directory.
443
Kurzreferenz Administration
Kommandoeingabe
Funktion
tcsh
Ruft die tcsh-Shell auf. Die Datei .tcshrc bzw. .cshrc im Home-Directory des Benutzers wird dabei gelesen. R Seite 460
tee
(T-Stück einer Pipeline) Leitet bei Pipe-Mechanismus die Ausgabe zusätzlich in eine Datei um. Die Liste der Dateien mit ls wird in die Datei inhalt geschrieben. Am Bildschirm wird nur die Anzahl der Dateien angezeigt.
Beispiel: ls -l | tee inhalt | wc -l
telnet [ -l Benutzer] Rechner
(terminal emulation over net) Anmelden an einem entfernten Rechner. Wird die Verbindung hergestellt, muss ein gültiger Benutzername und ein Passwort eingegeben werden. Etwa gleich wie R rlogin.
test [-fdrwxs] Datei
(testen, prüfen) Prüft Dateien auf Typ, Inhalt oder Zugriffsrechte. test wird meist in Verbindung mit if … verwendet. Modernere Schreibweise statt test nur die eckige Klammer [ ], hierbei muss auf Leerzeichen vor und nach den Klammern geachtet werden! Bei den Optionen wird geprüft, ob die angegebene Datei: -f (file) eine normale Datei ist -d (directory) ein Directory ist -r (read) Leseerlaubnis hat -w (write) Schreiberlaubnis hat -x (execute) ausführbar ist -s (size) nicht leer ist ! gefolgt von einem Leerzeichen und einer Option negiert die Abfrage test ist erfolgreich, wenn ›name‹ keine Datei ist, sondern z.B. ein Verzeichnis.
[ -f Datei
]
Negation:
[ ! Option Datei
]
Beispiel: test ! -f
name
test [-zn] Zeichenkette
Prüft Zeichenketten auf leer/nicht leer. -z (zero) ist leer -n (not zero) ist nicht leer
test String-a = String-b
Prüft Zeichenketten auf Gleichheit. Zwischen den Argumenten und ›=‹ müssen Leerzeichen stehen. Negation, d.h. test ist erfolgreich, wenn die Zeichenketten nicht gleich sind. != hier ohne Leerzeichen!
Negation: test String-a != String-b
444
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
test n1 -.. n2 moderne Schreibweise: [ n1 -.. n2 ]
algebraischer Vergleich:
test test test test test test
n1 -eq n1 -ne n1 -lt n1 -le n1 -gt n1 -ge
n2 n2 n2 n2 n2 n2
[ n1 -eq [ n1 -ne [ n1 -lt [ n1 -le [ n1 -gt [ n1 -ge
n2 ] n2 ] n2 ] n2 ] n2 ] n2 ]
Beispiel (Auszug aus einem Skript): read Datei
equal not equal less than less equal greater than greater equal
gleich nicht gleich kleiner als kleiner gleich größer als größer gleich
Kombination von test-Kommandos: -a (and) logische Und-Verknüpfung -o (or) logische Oder-Verknüpfung
if test -f $Datei -a -w \ $Datei then ... read antw if test $antw = ja -o \ $antw = Ja then ...
testparm
Überprüft die Samba-Konfigurationsdatei smb.conf.
touch Datei(en) Beispiel:
(berühren) Aktualisiert das Datum einer Datei bzw. legt sie neu an.
touch neu1 neu2
Legt die Dateien neu1 und neu2 an.
top
Interaktive Anzeige der Top-Prozesse (die die meiste Rechenzeit beanspruchen). Interaktive Aktionen: h (Hilfe) Anzeige der möglichen Aktionen u (user) Auswahl bestimmter Benutzerprozesse k (kill) abbrechen nach Eingabe der Prozessnummer PID r renice des über die PID angegebenen Prozesses mit Eingabe des Nice-Faktors (-20 bis 19) F Sortiermöglichkeit über Spaltenangabe
traceroute
Kommando, um die Netzwerkverbindungen über Router zu kontrollieren.
445
Kurzreferenz Administration
Kommandoeingabe
Funktion
trap "Kommandos" Signale
(Fallen stellen – Abfangen von Signalen) Bestimmte Signale mit "Kommandos" behandeln. R kill (Signale) Wird z.B. das Signal 2 <Strg+c> geschickt, wird, bevor der Prozess abgebrochen wird, die Datei hilfs.dat gelöscht. Ohne Angabe, d.h. nur mit Anführungszeichen " ", werden die Signale ignoriert. In diesem Fall kann z. B. nicht mit <Strg+c> (Signal 2) abgebrochen werden. R kill
Beispiele: trap "rm hilfs.dat;exit" 2 trap "" 1 2 3
true Beispiel: while true do ... done
tty
(terminal type) Zeigt den aktuellen Terminalnamen.
typeset [-iulx] Name
Setzt Variable (bash). -i (integer) unter ksh alias: integer für ganze Zahlen -u (upper case) nur für Großbuchstaben (nur ksh) -l (lower case) nur für Kleinbuchstaben (nur ksh) -x (export) Die Variable wird gleich exportiert R Variable
typeset -i \ Name[=Rechenoperation]
(integer) Bildet eine Integer-Variable (alias zu typeset -i). R typeset (entspricht unter ksh integer) Bei der Zuweisung und innerhalb der Rechenoperation dürfen keine Leerzeichen enthalten sein. Mögliche Operatoren R expr + Addition - Subtraktion * Multiplikation / Division % Modulo
Beispiel: typeset -i zahl=10 zahl=zahl+3*2 echo $zahl 16
umask Wert
Beispiel: umask 022
446
(wahr) Gibt immer den Exit-Status 0 aus, ist also immer wahr. Hiermit können z.B. für Tests Endlos-Schleifen gestartet werden.
Maske zur Voreinstellung der Zugriffsrechte bei neuanzulegenden Dateien und Verzeichnissen. Der mitgegebene Wert wird von den Defaultwerten der Bash für Neuanlagen (Verzeichnis 777, Datei 666) abgezogen Ändert die Zugriffsrechte: von der Defaulteinstellung auf
Verzeichnis 777 755
Datei 666 644
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
umount s /dev/Gerätenamen
(wieder abmontieren) Hängt montierte Dateisysteme wieder ab.
unalias Kürzel
Löst die Bedeutung eines Alias wieder auf.
bzw. nur nachfolgender Alias wird aufgehoben: \Kürzel
Alias wird nur temporär aufgelöst.
uname -a
(unix name) Gibt rechnerspezifische Informationen aus, z.B.:
Linux Jogyli 2.6.5-7.75-default #1 Mon Jun 14 10:44:37 UTC 2004 i686 athlon i386 GNU/Linux
uncompress Datei[.Z]
(dekomprimieren) Eine zuvor mit compress verdichtete Datei wird wieder in den Normalzustand gebracht. R gzip R gunzip R bzip2 R bunzip2
unison [Optionen]
Wie bei rsync werden Verzeichnisbäume und nicht Dateisysteme synchronisiert (unter Verwendung des rsync-Protokolls).
oder
unison Verzeichnis_1 \ Verzeichnis_2 [Optionen] oder
unison Profil [Optionen] unset Variable
Hebt den zugewiesenen Wert einer Variable wieder auf.
until ... do done
(solange nicht ...) Leitet eine Schleife ein R Shell-Ablaufsteuerung
unzip Datei(en).zip
Extrahiert und dekomprimiert mit zip erstellte Dateien. R zip
useradd [-m] [-uUID] [-gGID] \ [-dVerzeichnis] \ [-s Shell/Startprogramm] \ Benutzername
Legt einen neuen Benutzer an. Mit -m werden das Home-Verzeichnis eingerichtet und sämtliche Dateien und Unterverzeichnisse aus /etc/skel dorthin kopiert. R userdel -m (mkdir) bewirkt, dass ein Home-Verzeichnis mit dem Benutzernamen unter /home angelegt wird -u UID Es wird nicht die nächstfolgende Benutzernummer vergeben sondern die angegebene UID -g GID Es wird nicht die nächstfolgende Gruppennummer vergeben sondern die angegebene GID -s Shell Nur dann notwendig, wenn nicht die Bash verwendet werden soll sondern das angegebene Programm (Shell)
weitere Option: [-k Verzeichnis]
Fortsetzung nächste Seite
447
Kurzreferenz Administration
448
Kommandoeingabe
Funktion
Fortsetzung von useradd
-d Home-Verzeichnis Erlaubt die Vorgabe eines anderen Verzeichnisnamen als /home/Benutzername -g Gruppennummer Erlaubt die Vorgabe einer vom Standard (100) abweichenden Gruppennummer -k Verzeichnis gibt vor, dass statt /etc/skel das angegebene Verzeichnis als Vorlage verwendet werden soll
userdels [-r] Benutzername(n)
Löscht Benutzer und (optional) deren Dateien aus dem System. R useradd -r löscht – ohne Rückfrage – das Home-Verzeichnis des Benutzers mit sämtlichen Dateien und Unterverzeichnissen
usermods Benutzername(n)
Ändert Benutzereinträge. Optionen siehe R useradd
users
Zeigt die Benutzer aller Shells auf einem Host an.
vcron
(visual cron) Grafisches Tool für crontab und at Es muss nachinstalliert werden und befindet sich dann im Verzeichnis /usr/X11R6/bin/vcron.
vi [-rR] Datei(en)
(visual editor) Bildschirmorientierter Editor -r (recovery) Es wird ein Protokoll mitgeschrieben, so dass bei einem Absturz alle Eingaben nachzuvollziehen sind -R (Read only) Die angegebene Datei darf mit dem vi nur gelesen, nicht verändert werden R Metazeichen Seite 465 R Häufig benutzte Kommandos im vi Seite 462
vipw
Editiert die Passwortdatei mit exklusivem Schreibrecht.
visudos
Editorbefehl für root, um die Datei sudoers zu bearbeiten. Hierbei wird die Datei vor mehrfachem gleichzeitigem Editieren geschützt.
wc [-wcl]
(word count – Wörter zählen) Zählt Zeilen, Wörter und Buchstaben. -w (word) Anzahl der Wörter -l (line) Anzahl der Zeilen -c (character) Anzahl der Zeichen
whatis Kommando
(was ist das Kommando) Gibt eine Kurzinformation des angegebenen Kommandos aus.
C.2 Kommandos alphabetisch
Kommandoeingabe
Funktion
whereis Kommando
(wo ist das Kommando) Zeigt alle Vorkommen eines Kommandos mit absoluten Pfadnamen an.
which Kommando
(welches Kommando) Gibt den absoluten Pfadnamen eines Kommandos aus. Zeigt damit auch, welches bei mehreren gleichnamigen Kommandos entsprechend der Suchreihenfolge in $PATH genommern wird.
while .. do done
(solange ...) Leitet eine Schleife ein. R Shell-Ablaufsteuerung
who whoami
(Wer arbeitet am System?) Zeigt die angemeldeten Benutzer und Terminals. Es wird der Benutzername, die Terminalbezeichnung und die Anmeldezeit angezeigt. R finger
whodo
Zeigt an, welche Benutzer am System aktiv sind und was sie tun.
write Benutzername@Rechner
(schreiben) Einem anderen Benutzer Mitteilungen auf den Bildschirm schicken.
xhost +[localhost oder Rechnername] xhost -[localhost oder Rechnername]
Setzt die Berechtigung, um grafische Tools unter anderem Namen oder entfernte Rechner im Netz aufrufen zu können. xhost + beim Server genehmigt xhost – damit wird die Erlaubnis aufgehoben Auf dem Client bzw. unter anderem Namen muss zusätzlich die DISPLAY-Variable gesetzt werden: export DISPLAY="[Rechner]:0.0"
xnmap
Grafisch aufbereitetes Tool, um den Netztransfer zu kontrollieren.
xxd [Eingabedatei] \ [Ausgabedatei]
Hexadezimale Ausgabe eines Dateiinhalts mit zusätzlicher Darstellung in ASCII. Wird nur eine Eingabedatei angegeben, erfolgt die Ausgabe auf Standardoutput.
yast (yast2)
Zentrales Administrationswerkzeug unter SUSE Linux.
yppasswd
Kommando, um bei NIS Passwörter zu vergeben und zu ändern.
zcat Dateiname(n).Z
(cat von .Z-Dateien) Zeigt den Dateiinhalt von mit compress komprimierten Dateien an.
449
Kurzreferenz Administration
Kommandoeingabe
Funktion
zip [Optionen] Zip-Archiv Datei1 \ [Dateien]
Erstellt eine komprimierte Archivdatei mit den nachfolgend angegebenen Dateien. Hierbei sind Dateinamenexpansionen mit Metazeichen (*, ? und [ ] ) erlaubt.R unzip -d (delete) löscht Einträge aus einem Zip-Archiv -e (encrypt) Die Eingabe verlangt die Eingabe eines Passworts. Nur mit diesem Passwort kann die Datei später wieder bearbeitet werden -f (freshen) überprüft die Dateien im Zip-Archiv, ob sie seit der Archivierung verändert wurden und übernimmt neuere Dateien. Es werden keine Dateien übernommen, die bisher nicht im Archiv enthalten waren, entgegen R u (update) -h (help) gibt Hilfeinformation aus -R (recursive) erstellt eine Archivdatei von den Dateien des aktuellen Verzeichnisses sowie von allen Unterverzeichnissen -u (update) überschreibt Dateien, die in der Archivdatei mit älterem Datum bereits enthalten waren und ergänzt neu hinzugekommene Dateien R f (freshen) -y Speichert symbolische Links als Link anstatt der referenzierten Datei Alle Dateien vom aktuellem Verzeichnis und allen Unterzeichnissen die mit ›.c ‹ enden, werden in das Archiv ›archiv.zip‹ übertragen und komprimiert.
Beispiel: zip -R archiv.zip '*.c'
450
C.3 Bash (bash) – die Standard-Shell unter Linux
C.3
Bash (bash) – die Standard-Shell unter Linux
Die nachstehende Syntax trifft in den meisten Fällen auch für die Bourne- (sh) und Korn-Shell (ksh) zu. Ist dies nicht der Fall, finden Sie einen entsprechenden Hinweis (nicht sh bzw. nur ksh). Die Unterschiede zur C-Shell (csh bzw. tcsh) haben wir getrennt auf Seite 460 aufgeführt.
Sonderzeichen Zeichen
Bedeutung
Anzeige am Bildschirm: Bereitzeichen/Prompt Teil des Prompts > # > name@host:~>
Abhängig vom Inhalt der Variablen PS1/PS2 für den ›normalen‹ Benutzer (csh: %) für den Systemverwalter (root) Folgezeichen in der nächsten Zeile, wenn das Kommando noch nicht abgeschlossen war (Variable PS2) Defaulteinstellung für den normalen Benutzer bei der Bash mit Anzeige des aktuellen Verzeichnisses (~ bedeutet das Home-Verzeichnis des Benutzers) R Variable PS1 (Prompting) Seite 459
Umleitungen > >> 2>
R Prompting-Kürzel Seite 459 Bei anderen Shells (z.B. ksh) könnte auch eine Variable zugewiesen werden, wie PS1=’$PWD >’ z.B.: /home/hans/Texte >
$PS2
Enthält das Zeichen > (Fortsetzungszeile eines Kommandos).
$PWD
Enthält das aktuelle Directory (nicht sh).
$SHELL
Manche Programme fragen den Wert dieser Variablen ab, um die entsprechende Shell zu starten (z. B. csh, ksh).
$TERM
Enthält den Terminaltyp der Dialogstation. Die richtige Zuordnung ist wichtig bei vielen bildschirmorientierten Programmen ( grafische Oberfläche, vi, more, ls etc. Beispiel: xterm-color)
$TZ
Enthält Angaben zur Zeitzone (z. B. für automatische Berechnung der Ortszeiten bei mail).
$VISUAL
Ist diese Variable belegt, kann die Befehlszeile editiert werden (nicht sh). R Setzen von Optionen
Arbeiten mit Variablen Befehlseingabe
Bedeutung/Hinweise
Name=Wert
Der Variablen Name wird ein Wert zugewiesen. Enthält der Wert Leer- oder Sonderzeichen, muss der Wert in Anführungszeichen gesetzt werden. Bei der Zuweisung eines Wertes kann auch das Ergebnis eines Kommandos eingesetzt werden: $( cmd )
Beispiele: Name="Hans Meier" Datum=$( date )
454
C.3 Bash (bash) – die Standard-Shell unter Linux
Befehlseingabe
Bedeutung/Hinweise
export Name
Um Variable auch für Unterprogramme (Subshells) zur Verfügung zu stellen, werden sie exportiert. In der Korn-Shell (nicht aber der sh) kann dies gleich bei der Zuweisung erfolgen oder über eine generelle Voreinstellung mit: set -o allexport R Setzen von Optionen
Alternativen export Name=Wert typeset -x Name=Wert $Name ${Name} Beispiele: Name=Protokoll echo $Name Protokoll touch ${Name}_10.2004 ls Protokoll* Protokoll_10.2004
typeset -i Name[=Wert] Beispiele: typeset -i Zahl=5 Zahl=$Zahl+3 Zahl=$Zahl-3 Zahl=$Zahl*3 Zahl=$Zahl/3 Zahl=$Zahl%3
unset Variable
Der Inhalt einer Variablen kann mit $Name genutzt werden. Wird der Variablenname zur Bildung von neuen Namen verwendet, kann er über geschweifte Klammern { } abgegrenzt werden. Im Beispiel wird der Inhalt über echo ausgegeben. Mit { } kann der Wert der Variablen abgegrenzt werden, um z.B. mit dem Inhalt der Variablen einen neuen Dateinamen zu bilden.
Zuweisung einer Integer-Variablen. Mit dieser Variablen können Rechenoperationen durchgeführt werden: Zuweisung mit Wert (bei den Beispielen ist der Ausgangswert von $Zahl jeweils mit 5 angenommen): + Addition - Subtraktion * Mulitplikation / Division % Modulo, Restwert
(echo (echo (echo (echo (echo
$Zahl $Zahl $Zahl $Zahl $Zahl
liefert 8) liefert 2) liefert 15) liefert 1) liefert 2)
Aufheben einer Variablendefinition (nicht sh/csh).
Setzen von Optionen Mit dem Kommando set -o (gilt nicht für sh) können u.a. folgende Optionen gesetzt werden (mit set + o werden gesetzte Optionen wieder ausgeschaltet): Option
Bedeutung
allexport
Alle gebildeten Variablen werden grundsätzlich exportiert.
bgnice
Hintergrundprozesse laufen mit einer niedrigeren Priorität.
emacs oder vi
Wird diese Option gesetzt, kann die Befehlszeile mit dem angegebenen Programm editiert werden. Hierfür muss, um zu korrigieren, die ESC-Taste gedrückt werden. Der Befehlszeileneditor kann auch durch Setzen der Variable VISUAL=vi eingeschaltet werden. (Unter SUSE Linux ist per Default emacs gesetzt.)
ignoreeof
Mit der Tastenkombination <Strg+d> kann die Shell nicht mehr beendet werden (wird ignoriert).
455
Kurzreferenz Administration
Option
Bedeutung
noclobber
Bereits bestehende Dateien können über Umleitungszeichen > nicht mehr überschrieben werden.
Als Voreinstellung können Variable, set-Kommandos und alias-Funktionen für die Bash in die Datei $HOME/.bashrc, für die Korn-Shell in $HOME/.kshrc und für die C-Shell und tcsh in die Datei $HOME/.cshrc eingetragen werden. R Wichtige Verzeichnisse und Dateien Seite 467.
Konstrukte/Ablaufsteuerung der Shell (für sh, ksh und bash) Eingabe
Funktion
If-Verzweigung if Befehl1 then Befehlsfolge2 [ else Befehlsfolge3 ] oder elif Befehl4 then Befehlsfolge5 fi
Wenn Befehl1 den Wert 0 zurückliefert, dann tue … [ sonst tue … ] sonst wenn dann tue … fertig (Ende der if-Verzweigung)
Beispiel: if test -f $Antwort then pr -n $Antwort | less else echo "$Antwort ist keine Datei" fi
Wenn die Datei ($Antwort) existiert und es eine normale Datei ist, dann soll sie angezeigt werden, sonst soll eine entsprechende Nachricht ausgegeben werden.
Schleifenverarbeitung
for Name do Befehlsfolge done
Für verschiedene Werte der Variable Name (sie erhält nacheinander die Werte von $1 bis $n, also die beim Aufruf des Kommandos angegebenen Parameter) tue … fertig – gehe zu Beginn der Schleife
for Name in Wert1…Wertn do Befehlsfolge done
Für verschiedene Werte der Variable Name (hier wird nacheinander Wert1 .. Wertn zugewiesen) tue … fertig – gehe zu Beginn der Schleife.
while Kommando do Befehlsfolge done
Solange das Kommando erfolgreich ist (Exit-Status 0) tue … fertig – gehe zu Beginn der Schleife
Fortsetzung Schleifenverarbeitung nächste Seite
456
C.3 Bash (bash) – die Standard-Shell unter Linux
Eingabe
Funktion
Fortsetzung Schleifenverarbeitung until Kommando do Befehlsfolge done
Solange das Kommando nicht erfolgreich ist (ExitStatus ≠ 0) tue … fertig – gehe zu Beginn der Schleife
Case-Verarbeitung (Auswahl) case Muster in M1) Befehlsfolge1;; M2|M3) Befehlsfolge2;; … esac
Falls die Zeichenkette Muster übereinstimmt mit M1, dann führe die Befehlsfolge1 aus, stimmt das Muster mit M2 oder M3 überein, führe Befehlsfolge2 aus Ende der case-Bedingung
Sonstige Steuerungen in Prozeduren function name ( ) { Kommandofolge }
Funktionen Definiert eine Funktion, die ähnlich eines Shell-internen Kommandos genutzt werden kann. s. a. Alphabetische Kommandos
Besonderheiten der Bash (zum Teil auch csh und tcsh) Kommando
Auswirkung
basename
Gibt den Namen einer Datei ohne Pfadangabe zurück
Beispiel: basename /bin/date date
declare declare Log=Log10.2004
Zuweisung von Variablen declare entspricht typeset (gleiche Optionen) – beide Kommandos werden akzeptiert
dirname
Liefert nur den Pfad einer Datei.
Beispiel:
Beispiel: dirname /usr/bin/zip /usr/bin
dirs
Listet mit pushd gespeicherte Verzeichnisse/Directories. R popd R pushd
local Var[=Wert]
Wird innerhalb von function-Zuweisung für das Setzen von Variablen verwendet.
457
Kurzreferenz Administration
Kommando
Auswirkung
popd
Wechselt in das letzte mit pushd gespeicherte Verzeichnis und löscht es aus dem Stack heraus. Mit popd kann somit in mehrere Verzeichnisse zurückgekehrt werden, die zuvor gespeichert wurden.
pushd Directory
Speichert das angegebene Verzeichnis/Directory in einer eigenen Liste (Stack), die mit popd zurückverfolgt werden kann. Speichert das aktuelle Verzeichnis/Directory.
Beispiel: pushd .
printf Format [Argumente] Beispiel: printf "%6,2f Euro\n"\ 300 150
458
Aufbereitung der Druckausgabe; Druckformatangaben wie in der Programmiersprache C. Druckausgabe: 300,00 Euro 150,00 Euro
printenv
Gibt die Liste der globalen Variabeln aus (entspricht env in ksh).
setterm [Option] Optionen: -bold off | on -clear -default -half-bright on | off -underline on | off -reverse on | off
Terminal-Voreinstellung (siehe dazu: man setterm)
source Datei
Entspricht . Datei
trap -l
Zeigt alle Signale an.
ulimit Option Grenzwert Optionen: -f Dateigröße
Grenzwerte setzen (Größenangabe in kByte)
Fettschrift an/aus Löscht Bildschirm Setzt auf Defaulteinstellung zurück Text hervorgehoben Text unterstrichen Inverse Textdarstellung
Verhindert Erzeugung von Dateien, die größer sind als der angegebene Grenzwert.
C.3 Bash (bash) – die Standard-Shell unter Linux
Weitere Besonderheiten der Bash Begriff
Auswirkung
~/.bashrc
Die Datei wird bei jedem Start einer Bash gelesen, so z. B. beim Öffnen eines Terminalfensters, das automatisch eine neue Shell (in der Regel die Bash) startet.
>&
Umleitung von Standardausgabe und Standardfehler
{}
Erweiterungsmechanismus (brace expansion)
Beispiel: ls {a,b}{1,2,3,4}
Ergibt: a1 a2 a3 a4 b1 b2 b3 b4
$[ ]
Berechnung arithmetischer Ausdrücke
Beispiel: echo $[4+7*2] 18
PS1=’\h:\w \u\$’
Zuweisen des Prompts mit Prompting-Kürzel (Auswahl der oft genutzten Kürzel): \h Hostname vor dem Punkt \H Vollständiger Hostname \A die aktuelle Zeit im Format: HH:MM (24 Std.) \u der Benutzername \w das aktuelle Verzeichnis \W der Basisname des aktuellen Verzeichnisses
459
Kurzreferenz Administration
C-Shell (csh und tcsh) Während bash oder ksh ohne weiteres Shell-Skripte richtig interpretiert und ausführt, führen sh-Skripte, die mit csh gestartet werden, oft zu fehlerhaftem Abbruch. Werden verschiedene Shells genutzt, sollte in der ersten Zeile einer Shell-Prozedur der run-Befehl für die entsprechende Shell eingegeben werden, zum Beispiel: #!/bin/sh oder #!/usr/bin/bash oder #!/usr/bin/ksh oder #!/usr/bin/csh und #!/usr/bin/tcsh Der Prompt der C-Shell ist in der Regel das ›%‹, falls der Variablen PS1 kein anderer Wert zugewiesen wurde. Dateinamenexpansion, Ein-/Ausgabeumleitung außer FehlerausgabeUmleitung, Aufruf eines Hintergrundprozesses und die Positionsparameter werden genauso wie in der Bourne-, Korn-Shell oder Bash behandelt. Die Kommandos basename, dirname, dirs, popd, pushd, source, printf, printenv und ulimit (siehe Seite 457) stehen auch in der C-Shell zur Verfügung. Eine Erweiterung der C-Shell ist die tcsh. Die tcsh bietet u.a. einen Befehlszeileneditor, programmierbare Kommando- und Dateinamensergänzung, einen History-Mechanismus und Jobkontrolle (siehe man tcsh). Auch wer die csh benutzen möchte, kommt um die tcsh nicht herum: Unter Linux gibt es keine eigenständige C-Shell, die csh ist ein Link auf die komfortablere tcsh.
Unterschiede der C-Shell zur Bash und Korn-Shell Eingabe unter bash und ksh
Eingabe unter csh/tcsh
Ablaufsteuerung: If-Bedingung if Befehl then Befehlsfolge [else Befehlsfolge] fi
oder if Befehl then Befehlsfolge elif Befehl then Befehlsfolge [else Befehlsfolge] fi
if ( Ausdruck ) Befehl oder if ( Ausdruck ) then Befehlsfolge [else Befehlsfolge] endif oder if ( Ausdruck ) then Befehlsfolge else if ( Ausdruck ) then Befehlsfolge [else Befehlsfolge] endif
Schleifenverarbeitung
460
for Name in Argumente do Befehlsfolge done
foreach Name ( Argumente ) Befehlsfolge end
while Befehl do Befehlsfolge done
while ( Ausdruck ) Befehlsfolge end
C.3 Bash (bash) – die Standard-Shell unter Linux
Eingabe unter bash und ksh
Eingabe unter csh/tcsh
Case-Verarbeitung: case Textmuster in Muster_1 ) Befehlsfolge ;; Muster_2 ) Befehlsfolge ;; … esac
switch ( Textmuster ) case Muster1; Befehlsfolge; breaksw … case Mustern; Befehlsfolge; breaksw default: Befehlsfolge (optional) endsw
Goto-Anweisung
goto Marke … Marke: Befehlsfolge
nicht möglich Repeat-Anweisung nicht möglich
repeat n Befehlsfolge
Variablen: Positionsparameter: $0, $1, … Vordefinierte Variable: (in Großbuchstaben) $HOME Korn-Shell und Bash: zusätzlich ~[benutzer] Setzen von Variablen: Name=Wert export Name=Wert
$argv[0], $argv[1], … und $0, $1, … Viele auch in Kleinbuchstaben $home oder ~[benutzer] set Name = Wert setenv Name Wert setenv path ( $path /usr/kurs/bin )
export PATH=$PATH:/usr/kurs/bin
Bereitzeichen mit aktuellem Pfadnamen zuweisen: ksh: export PS1="` $PWD` >" bash export PS1=’\@\h:\W >’
setenv prompt "%B%m%b %C2%#" (nicht Original-BSD-C-Shell) hierbei steht: %B (%b ) für Fettschrift einstellen (aufheben) %m für den Hostnamen bis zum ersten ›.‹ %C2 für die letzten beiden Teile des Pfadnamens
Rechnen mit Variablen: Zuweisung als Integer: typeset -i
set Name = Wert set Name = `Expression`
typeset -i zahl=10 zahl=$zahl+1
set zahl = 10 set zahl = `expr $zahl + 1`
oder zahl=$( expr + 1 )
Fehlerumleitung: 2> oder >&
>&
Aliasbildung/-aufhebung: alias Kürzel="Befehl "
alias Kürzel Befehl
alias rm="rm -i"
unalias Kürzel
unalias Kürzel
461
Kurzreferenz Administration
C.4
Editoren vi (vim) und batchorientierte Tools
Häufig benutzte Kommandos im vi (vim) Verwendung
Befehl
Aufruf
vi (vim) Datei
Lädt die angegebene Datei in den Arbeitsspeicher.
Sichern und Beenden
:w [Datei]
Schreibt in die beim Aufruf oder bei :w angegebene Datei zurück.
:q
Beendet vi (falls noch nicht gesichert wurde (:w), wird eine Warnung ausgegeben).
:q!
Beendet den vi ohne Warnung, falls vorher noch nicht gesichert wurde.
ZZ
Sichert (schreibt den Arbeitspuffer zurück) und beendet den vi.
R oder l L oder h y oder j U oder k
Bewegung des Cursors durch die Cursortasten oder durch die angegebenen Buchstaben
W oder w B oder b
(word) Vorwärts springen um ein Wort (Anfang) (backwards) Wortweise rückwärts springen
$ ^ ( ) nG 4G $G
Sprung zum: Zeilenende Zeilenanfang Satzanfang Satzende (go) zur n-ten Zeile Setzt Cursor auf 4. Zeile der Datei. Setzt Cursor auf Ende der Datei.
Blättern
<Strg+f> <Strg+b>
Blättert eine Bildschirmseite vor Blättert eine Bildschirmseite zurück
Wechsel in den Eingabemodus
A a I i O o R S
(Append) Text am Zeilenende anhängen (append) Text nach dem Cursor einfügen (Insert) Text am Zeilenanfang einfügen (insert) Text vor dem Cursor einfügen (Open) Text vor der aktuellen Zeile einfügen (open) Text nach der aktuellen Zeile einfügen (Replace) Text ersetzen/überschreiben (Substitute) Ersetzen des Zeichens durch den eingegebenen Text (substitute) Ersetzen der ganzen Zeile durch den eingegebenen Text
Cursor positionieren
s
462
Bedeutung
C.4 Editoren vi (vim) und batchorientierte Tools
Häufig benutzte Kommandos im vi (vim) Verwendung
Befehl
Wechsel in den Eingabemodus
C c Objekt cw cG c$
(Change) Den Rest der Zeile ersetzen (change) Das Textobjekt durch Eingabe ersetzen: Wort ersetzen durch Texteingabe Ersetzen des Textes vom Cursor bis zum Dateiende Ersetzen von der Cursorposition bis Zeilenende
Eingabemodus beenden
<Esc>
Schließt die Eingabe ab und wechselt in den Kommandomodus.
Löschen
x
durch-x-en – Löscht das aktuelle Zeichen, auf dem der Cursor steht. (delete) Löscht das nachfolgende Objekt: das nachfolgende Wort nachfolgenden Text bis zum Ende der Datei vom Anfang der Zeile bis zur Cursorposition ab Cursorposition bis zum Zeilenende vom Anfang des Satzes bis zur Cursorposition von der Cursorposition bis zum Ende des Satzes Löscht die aktuelle Zeile. Löscht n Zeilen (3dd löscht z. B. 3 Zeilen).
d Objekt dw dG d^ d$ oder D d( d) dd ndd Übernahme aus p dem Puffer
"np
xp Rückgängig machen
u
(paste) Fügt das zuletzt Gelöschte (oder Gespeicherte) nach der Cursorposition ein, wenn es sich um Zeichenfolgen handelt. War das zuvor Gelösche/Gespeicherte eine vollständige Zeile, wird sie nach der aktuellen Zeile eingefügt. Fügt die n-te Speicherung/Löschung nach der Cursorposition ein – mit P oberhalb der aktuellen Zeile. z.B. 4-letzte Löschung: "4p Vertauscht 2 Buchstaben an der Cursorposition (z.B. hc in ch). (undo) Das zuletzt durchgeführte Kommando wird ungeschehen gemacht. Die aktuelle Zeile wird aus der Originaldatei wiederhergestellt.
U Speichern und Einfügen
Bedeutung
yy oder Y "[a-z]yObjekt "ayw "[a-z]p "ap
(yank) Kopiert die aktuelle Zeile in den Speicherpuffer. Speichert das angegebene Objekt in den Puffer (a-z). Speichert das Wort, auf dem der Cursor steht, in den Pufferspeicher ›a‹. (paste) Fügt den Inhalt des Pufferspeichers (a-z) nach der Cursorposition ein. Fügt den Inhalt des Pufferspeichers a nach der Cursorposition ein. Vorsicht: Ohne Anführungszeichen würde a für append ausgeführt!
463
Kurzreferenz Administration
Häufig benutzte Kommandos im vi (vim) Verwendung
Befehl
Suchen in der gesamten Datei
/Suchmuster / ?Suchmuster ? %
Sucht nach dem angegebenen Muster vorwärts. Wiederholt den letzten Suchvorgang (vorwärts). Sucht nach dem angegebenen Muster rückwärts. Wiederholt den letzten Suchvorgang (rückwärts). Wenn der Cursor auf einer Klammer steht, sucht dieses Kommando die dazugehörige schließende oder öffnende Klammer.
Suchen in der aktuellen Zeile
fx Fx ; ,
(find) Sucht in der aktuellen Zeile nach dem Zeichen x vorwärts (f) bzw. rückwärts (F). Wiederholt den letzten Suchvorgang nach rechts bzw. nach links.
Korrekturmöglichkeiten im Eingabemodus
oder <del> <Strg+h> <Strg+w> <Strg+x>
Backspace oder Delete löscht Zeichen unter dem Cursor. Löscht das zuletzt eingegebene Zeichen. Löscht das zuletzt eingegebene Wort. Löscht die zuletzt eingegebene Zeile.
LinuxKommando ausführen
:!Kommando :!date
Führt das angegebene Kommando aus. Gibt Datum und Uhrzeit auf der untersten Bildschirmzeile aus. Die editierte Datei wird dadurch nicht verändert. Mit der Return-Taste kehren Sie zu vi/vim zurück.
Sonstiges
<Strg+l> :rDatei
(Buchstabe klein L) Bereitet den Bildschirm neu auf. (read) Liest die angegebene Datei in den Arbeitspuffer und fügt sie nach der Cursorzeile ein. Führt das angegebene Kommando aus und fügt das Ergebnis hinter der aktuellen Zeile ein. Ersetzt unter dem ex-Modus zeilenorientiert die Zeichenfolge alt in neu Ersetzt im gesamten Dokument (Zeile 1 bis Ende) die Zeichenfolge, auch wenn sie mehrmals pro Zeile vorkommt (g global). R Seite 466 ( join) Fügt die aktuelle Zeile mit der nachfolgenden Zeile zusammen. Vertauscht Groß-/Kleinbuchstaben. (Punkt) Führt das letzte Änderungskommando nochmals aus.
:r!Kommando :s/alt/neu/ 1,$s/alt/neu/g
J
˜ .
464
Bedeutung
C.4 Editoren vi (vim) und batchorientierte Tools
Einige praktische Optionen für den vi Kommando
Bedeutung
:set wm=n
wrap margin – Zeilenumbruch. Mit Angabe von n (Anzahl Zeichen) wird automatisch ein Zeilenumbruch vorgenommen, sobald die maximale Zeilenlänge der Anzahl Zeichen erreicht wurde. Hiermit erfolgt kein automatischer Zeilenumbruch.
:set wm=0 :set number :set nonu
(number) Die Datei wird mit laufender Zeilennummer angezeigt. Setzt die obige Funktion zurück.
:set showmode
Hiermit wird in der letzten Bildschirmzeile beim Eingabemodus der Hinweis ›Input Mode‹ angezeigt.
:set nomagic
:set magic
Die Sonderzeichen ., [ ] und * haben dann keine Sonderbedeutung mehr, d.h., bei dem Such- und Ersetzungsmechanismus des ex-Modus werden sie nicht als Metazeichen behandelt. Z. B. gilt der Stern nicht mehr als Wiederholungsfaktor, sondern wird als Stern erkannt. Setzt die obige Funktion zurück.
:set all
Zeigt alle eingestellten Parameter an.
In der Datei $HOME/.exrc können diese Voreinstellungen generell gesetzt werden. Die Kommandos werden dort ohne : eingegeben. Mehrere Angaben können in einer Zeile stehen; z.B.: set number showmode. Als weitere Möglichkeit können die Optionen der Variablen EXINIT mitgegeben werden, z.B.: EXINIT="set number showmode"; export EXINIT
Metazeichen – reguläre Ausdrücke (grep, sed, vi ex-Modus) Zeichen
Suchbeispiel
Steht für
/.d/
(Punkt) Beliebiges einzelnes Zeichen. Sucht nach allen Wörtern, die ein beliebiges Zeichen, gefolgt von einem d, enthalten.
.
*
/.*m/
Mögliche Wiederholung des vorangestellten Zeichens. Sucht nach einem ›m‹ oder hintereinander mehrfach auftretenden ›m‹. Steht für mehrere beliebige Zeichen. Sucht nach Zeichenfolgen, in denen ein ›m‹ vorkommt.
/^ */
Nachfolgender Suchbegriff steht am Anfang einer Zeile. Sucht ein oder mehrere Leerzeichen am Anfang einer Zeile.
/Euro$/
Nachfolgender Suchbegriff steht am Ende einer Zeile. Sucht nach einer Zeile, die mit Euro endet.
/[a-z]/ /[137]/
Suchen eines in der Klammer angegebenen Zeichens. Sucht nach einem beliebigen Kleinbuchstaben. Sucht nach Ziffern 1, 3 oder 7.
/m*/ .* ^ $ [
]
465
Kurzreferenz Administration
Metazeichen – reguläre Ausdrücke (grep, sed, vi ex-Modus) \
&
/ \*/
Fluchtsymbol – hebt die evtl. Sonderfunktion des nachfolgenden Zeichens auf. Sucht nach einem ›*‹.
s/Muster/&../ s/Herr/&n/
Einsetzen des gefundenen Musters als neuen Begriff. Ersetzt ›Herr‹ durch ›Herrn‹.
Häufig benutzte Kommandos im ed (ex, sed) Verwendung
Befehl/Beispiel
Bedeutung
Aufruf
ed Datei
Von der angegebenen Datei wird eine Kopie in den Arbeitsspeicher geladen. Es wird nur die Anzahl der Bytes angezeigt.
Positionieren n bzw. 3 Angabe des Bereichs n1,n2 Kommando 2,5p n,$d 4,$n .n Umschalten in den Eingabemodus
a na 3a i ni 15i c
nc Beenden des Eingabemodus
466
.
Positioniert den Arbeitszeiger auf die Zeile n (mit 3 z.B. auf Zeile 3). Das Kommando betrifft den Bereich n1– n2. Zeigt (print) die Zeilen 2 bis 5 an. Löscht (delete) die Zeilen n bis zum Ende der Datei. Zeigt die Zeile 4 bis zum Ende der Datei mit der Zeilennummer an. Die aktuelle Zeile wird mit der Zeilennummer angezeigt. (append) Text wird nach der aktuellen Zeile als neue Zeilen angehängt. Nach Zeile n neue Zeile(n) anhängen. Fügt nach Zeile 3 neuen Text ein. (insert) Fügt Text als neue Zeilen vor der aktuellen Zeile ein. Fügt Text vor der Zeile 15 ein. (change) Die aktuelle Zeile wird ersetzt. Wird mehr als eine Zeile Text eingegeben, werden die weiteren Zeilen eingefügt. Ersetzt die Zeile n durch die nachfolgende Eingabe. Der Punkt muss am Anfang der Zeile stehen. Er beendet den Eingabemodus.
C.5 Wichtige Verzeichnisse und Dateien
C.5
Wichtige Verzeichnisse und Dateien
Ist unter der Rubrik Verzeichnis/Datei ›~/‹ angegeben, so bedeutet dies, dass die Datei im jeweiligen Home-Verzeichnis des Benutzers zu finden ist. Die systemspezifischen Benutzerdateien beginnen meist mit einem Punkt (.) und werden nur bei ls -a dem normalen Benutzer angezeigt. Verzeichnis/Datei
~/
Bedeutung
Home-Verzeichnis des jeweiligen Benutzers
~/.bashrc
Die Datei wird von der Bash bei jedem Aufruf einer neuen Bash-Subshell gelesen. Inhalt der Datei sind z. B. Alias-Zuweisungen, Shell-spezifische Variablen, Funktionen und Optionen. R .kshrc
~/.cshrc
Die Datei wird von der C-Shell jedes Mal ausgewertet, wenn eine C-Shell gestartet wird. R .login
~/.tcshrc
Die Datei wird von der tcsh jedes Mal ausgewertet, wenn eine tcsh gestartet wird. R .login
~/.kshrc*
Wird von der Korn-Shell bei jedem Aufruf einer neuen KornShell (Subshell) gelesen. Unter SUSE Linux erfolgt über /etc/profile die Zuordnung der jeweils Shell-spezifischen Startdatei. In .kshrc werden u.a. Alias-Zuweisungen und Korn-Shell-spezifische Variablen, Funktionen und Optionen gesetzt. R.profile
~/.login
Wird von der C-Shell beim Login statt der .profile gelesen. R .profile R .kshrc
~/.profile
Wird nach dem Anmelden/Login von der Bourne- oder KornShell gelesen, aber nicht von der C-Shell. In .profile werden u.a. Variablen gesetzt wie $PATH, $ENV und/oder spezielle Anfangsroutinen für den Benutzer gestartet. R Variable R .cshrc R .kshrc
~/.xinitrc ~/.xsession
Enthalten Anweisungen für die X-Window-Oberfläche.
/bin
Binaries – ausführbare Kommandos/Linux-Programme
/boot
Verzeichnis mit Kernel und speziellen Dateien (zum Booten)
/dev
Verzeichnis für Geräteeinträge (u. a. Platten, Terminals, z.T. mit Unterverzeichnissen)
/dev/fd0
Zuordnung für das Diskettenlaufwerk
/dev/lp
Zuordnung für den Drucker
467
Kurzreferenz Administration
Verzeichnis/Datei
Bedeutung
/dev/nst0
Zuordnung für Streamer, wobei nicht automatisch zurückgespult wird (no rewind) Zuordnung für Streamer, wobei automatisch jeweils an den Anfang zurückgespult wird
/dev/st0 /dev/null
Ist der umweltfreundliche Papierkorb unter Linux. Alle Ausgaben, die in diese Datei umgeleitet werden, sind null und nichtig. Eingabe-Umleitungen bewirken ein EOF (End of File).
/dev/ttyn oder /dev/ptn
Gerätebezeichnung für Terminals bzw. Pseudo-Terminals (für Remote-Login)
/etc
468
Verzeichnis für Systemverwalterdateien
/etc/fstab
(files-tab) Eintrag der beim Hochfahren zu montierenden Platten/Partitionen
/etc/group
Verwaltung der Gruppen. Hier werden Benutzer bestimmten Gruppen zugeordnet (zusätzlich zur Gruppennummer, die in /etc/passwd dem Benutzer zugewiesen wird (4. Spalte)).
/etc/host.conf
Eintrag für resolv-Konfiguration
/etc/HOSTNAME
Name des lokalen Rechners (host)
/etc/hosts
In dieser Datei sind alle Rechner eingetragen, die im Netz angesprochen werden können. Eintrag der IP-Adressen: IP FQN Short-Hostname localhost darf nicht verändert werden (127.0.0.1).
/etc/hosts.equiv Beispiel eines Eintrages: hostname [username] -hostname [username] + username
Datei, um den Zugriffsschutz im Netz zu steuern für die Netzkommandos wie rcp, rsh, rlogin oder telnet Für alle (ohne username) oder nur den angegebenen Benutzer des Rechners (hostname) erlaubt oder nicht (-) erlaubt. Für den angegebenen Benutzer von allen Rechnern aus erlaubt.
/etc/inetd.conf
Netzwerk-Konfigurationsdatei (z.B. swat, atalk, ftp)
/etc/init.d
Initialisierungsverzeichnis für Dateien/Skripte (Links) beim Systemstart
/etc/inittab
Initialisierungstabelle beim Starten eines Rechners (u. a. Eintrag des Default-Runlevels)
/etc/issue
Systemnachricht (beim Hochfahren)
/etc/lilo.conf
Konfigurationsdatei für den Bootmanager LILO
/etc/motd
(message of the day) Der Inhalt wird beim Anmelden eines Benutzers angezeigt.
/etc/mtab
Tabelle der aktuell gemounteten Dateisysteme
/etc/networks
Datei der Netzwerkadressen, die während des Bootvorgangs benötigt werden
C.5 Wichtige Verzeichnisse und Dateien
Verzeichnis/Datei
Bedeutung
/etc/passwd
Datei, die bestimmt, welche Benutzer sich an einem Rechner anmelden dürfen. Der Benutzer kann nur über das Kommando passwd in dieser Datei sein Passwort ändern.
/etc/printcap
Druckereinstellungsdatei, Eintrag aller angelegten Drucker. Die Datei wird automatisch über CUPS erstellt.
/etc/profile
Voreinstellungsdatei für alle Benutzer (wird bei login gelesen)
/etc/rc.config
Konfigurationsdatei unter SUSE für Einstellungen beim Systemstart. Nach Änderungen dieser Datei muss das Kommando SUSEconfig aufgerufen werden.
/etc/resolv.conf
Enthält Informationen zur Namensauflösung der IP-Adressen (DNS-Server).
/etc/route.conf
Konfigurationsdatei für die Routing-Tabelle
/etc/services
Zuordnungsdatei der Ports zu Diensten
/etc/shadow
Verschlüsselte Passwörter zu /etc/passwd und Hinweise wie Gültigkeitsdauer etc.
/etc/smb.conf
Konfigurationsdatei für Samba
/etc/vimrc
Voreinstellungsdatei für den vi/vim (entspricht ~/.exrc)
/floppy
Verweis (symbolischer Link) auf /media/floppy
/media
Verzeichnis zum Einhängen von Floppies und CDs/DVDs
/mnt
Freies Mount-Verzeichnis
/opt
Verzeichnis für optionale Softwarepakete
/root
Anmeldeverzeichnis des Benutzers root unter SUSE Linux
/sbin
Viele Systemverwalterprogramme (s.a. /usr/sbin)
/tmp
Temporäres Verzeichnis, für das alle Benutzer Schreib-, Lese- und Ausführrechte besitzen; auch werden dort Hilfsdateien für verschiedene Programme abgelegt.
/usr
Statische Daten und Programme, die oft in einem lokalen Netz gemeinsam genutzt werden
/usr/share/man/man1 …/man9
Verzeichnis für die Manuale der Benutzerkommandos
/usr/bin
Weitere Benutzerkommandos
/usr/sbin
Weitere Systemverwalterkommandos
/usr/share
Softwarepakete (vim, samba u.a.)
469
Kurzreferenz Administration
Verzeichnis/Datei
/var
Variable Daten, Protokolldateien wie /var/log/messages
/var/log/messages
Wichtige Systemprotokolldatei
/var/log/boot.msg
Systemprotokolldatei vom Hochfahren des Systems
/var/log/isdn.log
Protokolldatei des Netzverkehrs über isdn
/var/log/warn
Protokolldatei über ausgegebene Warnungen des Systems
/var/spool
Dateien für bestimmte Programme (at, cron, samba)
/var/spool/lpd
Queues der installierten Drucker
/var/log/cups/error
Fehlerprotokolldatei von CUPS
/var/spool/cron
Dateien für die zeitgesteuerten Aufgaben unter cron wie z.B. spool/cron/deny, spool/cron/tabs/root, spool/cron/lastrun
/var/spool/cups
Temporäre Dateien von CUPS
/windows (/windosws/D)
470
Bedeutung
Falls parallel Windows installiert ist, werden hier in der Regel die Partitionen des Windows-Betriebssystems eingehängt.
D
Stichwortverzeichnis
Symbole $HOME/.bashrc 97 $HOME/.cshrc 97 $HOME/.profile 98 $HOME/.ssh/id_rsa 282 $INFOPATH 371 .bashrc 83 .lpoptions 167 .profile 83 .ssh/known_hosts 279 .xinitrc 84 .xsession 84 / (root) 120 /bin 120 /dev 121, 148 /dev/fd0 148 /dev/null 150 /dev/pts 149 /etc 121 /etc/at.allow 242, 248 /etc/at.deny 242 /etc/cron.daily 245, 248 /etc/cron.hourly 248 /etc/cron.monthly 248 /etc/cron.weekly 248 /etc/crontab 244, 248 /etc/crontab/tabs 248 /etc/cups 182 /etc/CUPS/lpoptions 167 /etc/dhcpd.conf 266 /etc/exports 286 /etc/fstab 108, 110, 113, 286, 290 /etc/group 88, 98 /etc/gshadow 88 /etc/hosts 268, 276 /etc/hosts.allow 330
/etc/hosts.deny 330 /etc/init.d/xdm 74 /etc/inittab 68 /etc/mtab 114 /etc/passwd 84, 98 /etc/profile 82, 98 /etc/profile.dos 84 /etc/resolv.conf 268 /etc/shadow 80, 87, 98 /etc/skel 83, 98, 121 /etc/smbpasswd 293 /etc/sudoers 235, 248 /etc/sysconfig 121 /home 121 /lib/modules 122 /media/CD 122 /media/floppy 122 /mnt/floppy 122 /opt 122 /proc 103, 122 /proc/filesystems 110 /root 122 /sbin 122 /sbin/kernelversion 222 /sbin/mount.smbfs 114 /tmp 122 /usr 123 /var 123 /var/cron/allow 249 /var/cron/deny 249 /var/log/boot.msg 75 /var/log/samba 293 /var/spool/cron/allow 242 /var/spool/cron/deny 242 /var/spool/cups 182
471
Stichwortverzeichnis
A Ablaufsteuerung der Shell 2, 456 Abmelden 81 accept 178, 415 Account 84 -Name 87 Accounting Drucker 165 ACLs 135 ACPI 58, 61 ADDR 224 Address Resolution Protocol 257 adduser 418 Administratorrechte 4 Adobe Photoshop 14 ADSL 256, 392 afio 415 afpd 313 AFS 105 AIT 190 allow 242 Anmelden 81 Anmeldebildschirm 80 Anmeldungsmanager 80 eines Benutzers 80 APM 58 AppleTalk 276 -Protokoll 105 apropos 368 Arbeitsgruppe 294 ARP 257 async 114 at 242, 415 at.allow 242 at.deny 242 atd 243 atq 242, 415 atrm 242, 416 atrun 243, 416 Atalk 312 ATAPI-CD-ROM 49, 392 Aufgaben des Systemverwalters 8 ausführbar 222 Aushängen des Dateisystems 109 Ausschalten 81 Authentifizierung 280 auto 112 automatische Anmeldung 57 AutoYaST 22
B 472
badblocks 208 Bandsicherungsmedien 189
Banner 155 basename 457 Bash 451 bash (Kommando) 416 Basis-Installation 50 batch 243, 416 benötigter Plattenplatz 16 Benutzer $HOME/.profile 81 Authentifikation 57 bearbeiten und anlegen 89 -daten 12 -name 12, 85 -nummer 85 Voreinstellungen 81 Bereitzeichen 451 bg 416 Big Endian 203 Bildschirmauflösung 50 Bildschirmfotos XI Bildverarbeitung 14 bin 120 Binärzahlen 262 BIND 268 BIOS 66 Setup 49 block oriented 149 Blockdevice 35 Bluetooth 59 Boot -diskette 25, 49 -loader 51, 61, 66 -manager 25, 61 -menü 40 -parameter 41 -reihenfolge 49 -sektor 61 -sektor-Backup 62 -sektor-Restaurierung 61 -Vorgang 65 boot 69, 121 bootwait 69 -fähig 49 Bourne-Shell 451 break 416 Bridge 255 Broadcast 262, 264 Browser 256 BRU 206 BSD -LPD 159 -Unix 100, 405 BSI 329 bzip2 416
Stichwortverzeichnis
C Captive (Kernel-Modul) 34 case 457 Case-Anweisung 2, 73 CD-Brenner 111 cd-burner 195 cdfss 112 CD-ROM 111 CERT 329 cfdisk 108 Chainloader 42, 47 character oriented 149 ChargeHup 318 chgrp 139 child 222 chkrootkit 378 chmod 132 chown 138 chroot 5 CIFS 105, 258 clear 418 cmp 418 Coda 209 Common Internet File System 258 Common UNIX Printing System (CUPS) 160, 394 continue 418 convmv 139 cp 418 cpio 202, 203, 419 cron 241 cron.daily 245, 248 cron.hourly 248 cron.monthly 248 cron.weekly 248 crond 244 crontab 246, 420 crontab 244 Crossover Office 14 cryptotab 110 csh 86, 420 C-Shell 460 csplit 420 CSV-Liste 327 Ctrl-Taste XI CUPS 160, 161 CUPS_SERVER 179 cupsd 168, 182 cupsd.conf 182 -Daemon (cupsd) 168 GUI-Oberfläche 167 Konfigurationsdateien 182 Print-Spooling-System 166
cupsomatic 164 cut 421
D Daemon 158, 243 DAT-Bänder 189 date 421 Datei -baum sichern 195 -endungen 141 -informationen 101 sichern 192 -zuordnungen 140 Dateinamen 13, 139 -expansion 452 -expansion, Ersetzungen 2 Dateisystem 33 duplizieren 206 Journaling 33, 101, 399 synchronisieren 209 verschlüsseln 34, 399 Daten -austausch 277 -blöcke 101 -sicherung 186, 218 -träger 190 Datenbank 14 Dave 277 dcopserver 243 dd 62, 206, 421 dd-rescue 378 debugfs 109 debugreiserfs 377 declare 421, 457 Defragmentierung 26 Deinstallation 61 DENIC 267 deny 242 Desktop 394 dev 114, 121 device.map 39 Device-Namen 27 df 421 DHCP 266, 271 diff 422 digitaler Schlüssel 281 dirname 457 dirs 457 disable 178, 422 Disketten-Image 49 DISPLAY=localhost:0 239 Distribution 20 DLT 190
473
Stichwortverzeichnis
DNS 267 -Server 267 domain 269 Domainname 267, 269 DOS 12 Dotted Decimal 262 Drucken 166 Kommandos 168 Drucker Einrichten 153 -filter 154 -instanzen 167 -klasse 164 -modell 154 -profil 167 Standarddrucker 179 du 422 dump 109, 219, 422 dumpreiserfs 422 DVD 111 dynamische IP-Adresse 267
E
474
e2label 206 echo 422 ed 422, 466 Edit-Modus (GRUB) 43 Editoren 14 Ein-/Ausgabeumleitung 2 Einhängen des Dateisystems 108 Einsatzmöglichkeiten von Linux 14 emacs 422 enable 178, 422 entferntes Anmelden 277 env 422 Epiphany 253 EPROM 66 erweiterte Partition 26, 28 etc 121 etc/passwd 80 ethereal 422 Ethernet-Controller 254 Evolution 14 ex 466 Excel 14 exec 114 executeable 222 exit 422, 431 expand 422 Expertenmodus 53 Explorer 14 export 423 expr 423
ext2 33, 100 ext3 34, 100, 102 Extends 105
F Failsafe (Bootabschnitt) 42 false 423 Farbwiedergabe 24 FAT 100 fc 423 fdisk 29, 108, 117, 423 Festplatten 17, 27 fg 423 FHS (Filesystem Hierarchy Standard) 120 file 423 file transfer protocol 258 file-roller 423 Filesysteme 33 find 138, 424 findsmb 425 finger 425 Firefox 15, 253, 256 Firewall 255 -Prüfung 335 -Rechner 16 Floppy 111 Fluchtsymbol 452 for 3, 425, 456 foreach 460 Formatieren 55 Fotofix 15 FQDN 269 Fragmentierung 26 free 425 FreeBSD 100, 405 frei verfügbare IP-Bereiche 263 Freiblocklisten 101 fsck 101, 109, 110, 425 fsck.ext2 425 fsck.ext3 425 fsck.ntfs 377 fsck.vfat 377, 425 reiserfsck 425 fstab 108, 110, 113, 286, 290 Optionen 56 fstype 114 FTP 257 ftp 258, 426 -Client 260 -Server 260 Fully-Qualified-Hostname 269 function 426, 457 fuser 226, 427
Stichwortverzeichnis
G Galeon 253 Gateway 255, 265 GDI-Drucker 18, 24 Generic TLD 267 Gerätedateien 148 getfacl 136, 427 GID 57 GIMP 14, 160 Gimp-Print 160 GNOME 80 Hilfe-Browser 374 goto 461 gpasswd 427 Grafikkarte 58 grafische Oberfläche 238 grafisches Systemprogramm 5 grep 427, 465 groupadd 96, 427 groupdel 427 groupmod 96, 427 groups 427 grpck 427 GRUB 37 grub (Kommando) 42, 44 grub.conf 42 Menüdatei 40 -Shell 44 Grundlagen der Shell (Bash oder Korn-Shell) 2 Gruppen anlegen, ändern, löschen 95 -nummer 86 gtkam 15 gtoaster 195 gzip 428
H halt 428 Hardware -erkennung 23, 151 -information 150 -unterstützung 23 head 428 Herunterfahren 81 hexadezimale Inhalte 140 HFS 100 Hilfe 363, 373 -Browser (GNOME) 374 -system 373 Hintergrundprozess 222 history 428 Hochfahren 81 host 428
hostid 428 hostname 428 hosts.allow 330 hosts.deny 330 HOWTO 374 HPFS 100 HTML 256 HTTP http 257, 398 https 398 HyperText Transfer Protocol 256, 257 HyperText Transfer Protocol, Secure 257 Hub 255 hwinfo 151, 428
I ICMP 257 id 428 IDE-Controllern 148 if 2, 428, 456 ifconfig 274, 429 ifhp 160 IMAP 257, 330 inetd 330 info 370, 429 INFOPATH 371 init 74, 429 init-Befehl 74 Initial-RAM-Disk 67 initrd 148 inittab 68 inkrementelle Sicherung 191 Inodes 101 insmod 148, 429 insserv 278, 429 Installation 19 automatische 22 Nachinstallation 347 Installationsquelle 348 wechseln 348 Instanz 167 InterMezzo 209, 217 interne Adressierung IP-Bereiche 263 Internet Control Message Protocol 257 Explorer 15 Message Access Protocol 257 Printing Protocol (IPP) 160, 168, 398 Protocol (IP) 256 InterSync 217 IP 257 -Adressen 260 -Bereiche 263
475
Stichwortverzeichnis
IPP (Internet Printing Protocol) 160, 168, 394 IPv4 260 IPv6 260, 269 ip 429 IrDA 59 ISDN 256 -Modem Konfiguration 317 ISO 9660 100 iso9660 (Filesystem) 114
J JFS 100, 103 jfs 114 jobs 429 Journaling 100, 101, 396 -Dateisysteme 33, 101, 102, 399
K
476
k3b 15, 195 Kabel-Modem 256 karchiver 430 kate 14 kcmshell 167, 175 KDE 80 -Hilfezentrum 374 -Print-Manager 168, 175 kdesu 232, 239, 430 KDiskFree 118 Kernel-Parameter 41 kernelversion 222, 430 khelpcenter 374, 430 kill 225, 430 killall 226, 430 kjobviewer 175 KMail 15 einrichten 322 Empfang POP3 325 KDE-Adressbuch 327 Nachrichten aus Outlook 326 Signatur 324 Versandart 324 Knoppix 23, 61, 376 -CD 377 Kommandomodus (GRUB) 44 Kommandosubstitution 3, 452 Kommentar 86 kommerzielle Linux-Software 14 Konfiguration 17, 20, 50, 57 Konfigurationsdatei cron 244 CUPS 165, 182
GRUB 42 LILO 45 sudo 235 Konqueror 14, 15, 202, 252 Konsistenzprüfung 109 Kontrollzentrum 5 Konventionen zu diesem Buch X KOrganizer 14 Korn-Shell 451 Krypto -Dateisystem 34, 55, 110, 116 -Partition 54 ksh 86, 431 ksysguard 430 kups 167, 175 KWrite 14
L LAN 255 last 431 Laufwerksbuchstaben 27 less 431 LILO 37, 44 lilo (Kommando) 45 lilo.conf 45 Map-Datei 45 Map-Installer 45 links (Browser) 253 Linmodem 59 Little Endian 203 ln 431 local 457 Local Master Browser 291 localhost 263, 268, 400 Logical Volume 106 Manager 105, 400 Login-Verzeichnis 86 logische Partition 28 logname 431 logout 431 Loopback -Device 35, 217, 399 localhost 263, 400 LP 159 lp 170, 172, 431 lpadmin 179, 181 LPD 159 lphelp 178 lpinfo 178 lpmove 179 lpoptions 179, 180 lppasswd 431 lpq 431
Stichwortverzeichnis
LPR 159 lpr 170, 431 lprm 431 LPRng 160 lprngtool 160 lpstat 173, 174, 431 ls 432 lsdel 377 lsmod 148, 432 LTO 190 LV 106 LVM 105, 400 Lynx 253
more 434 Mount -point 53, 56, 117 -Verzeichnis 56 mount 110, 113, 434 -Optionen 114 Mozilla 15, 253 Mozilla Mail 15 MSWord 14 mt 434 mtab 114 Multi-User 12 mv 434
M
N
Mac OS X-Netzwerkkonfiguration 274 mail 432 Mail-Client 322 mailsync 210 Major-Device-Nummer 148 Mammoth Tape 190 man 433 Map-Datei (LILO) 45 Map-Installer (LILO) 45 Master Boot Record 24 MBR 24 erzeugen 63 sichern 62 wiederherstellen 62 media /CD 122 /floppy 122 menu.lst (Datei) 40 Menüdatei (GRUB) 40 mesg 149, 433 Metazeichen 452, 465 mformat 433 Midnight Commander 14 Minor-Device-Nummer 149 Mirroring 105 mkdir 433 mkfifo 433 mkfs 108, 433 mkfs.ext2 108, 433 mkfs.jfs 433 mkfs.msdos 433 mkfs.reiserfs 108, 433 mkisofs 195 mknod 148, 433 mkpasswd 434 Modem 256 modprobe 434 Module 148
Nachinstallation 347 Nachrichten aus Outlook 326 Nameserver 256, 267 NAT 265 nautilus-cd-burner 195 nedit 14 Nero 14, 15 nessus 335 netatalk 312 NetBIOS 273, 291 netBSD 100, 405 netstat 434 Network Adress Translation 265 File System 105, 258 Information Service 258, 290 Netzadresse 262 Netzwerk 57 -basisadresse 262 -drucker 155 -maske 260 neue Benutzer anlegen 89 newgrp 88, 95, 139, 434 Newsgroups 376 NFS 105, 258 -Client 286 -Server 286 nfs 114 nice 435 NIS 258, 290 -Client 290 nmap 335, 435 nmbd 293, 306 nmblookup 293 no rewind 149 nodev 112 noexec 114 nohup 240, 435
477
Stichwortverzeichnis
nosuid 112, 114 Notebooks Laptops 18, 58 Notfall-CD 376 nouser 114 ntfix 377 NTFS 34, 100 ntfs 114
O Oder-Verknüpfung 451 Oktalzahl 133, 135 OnBoot 318 OnCD 14 Online -Hilfe 367 -Manuals 367 Online-Update 57 OpenBSD 100, 405 OpenOffice Calc 14 Impress 14 Writer 14 Opera 253 Optionen 13 OS/2 100, 398 OS-Level 292 Outlook 14, 15, 328
P
478
Paketmanager 348 Parent-Process-Identification 222 parted 108, 377 PartGUI 208 partimage 206, 208, 377 Partition 28, 118 aktive 38, 63 anlegen 54 erweiterte 26, 28 formatieren 55 logische 28 primäre 28, 402 Partitionieren 108, 118 Partitionierung 53 Partitionstabelle 62 Passphrase 282 passwd 84, 94, 98, 435 Passwort 85 ändern 93 -Einstellungen 89 PC 12 PCL 164
PCMCIA 59 PDC, Primary Domain Controller 292, 402 PDL 163 PDQ 160 Physical Volume 105 PID 222 ping 275, 435 Pipe 2 Pipe-Zeichen 451 Platten 27 -aufteilung 29 -platz 16 POP3 257, 330 popd 458 Port 331 -nummern 257, 331, 344 Positionsparameter 453 Post Office Protocol 257 Power-Management 59 PowerPoint 14 PPD 154 PPID 222 PPR 160 pr 435 Präsentation 14 primäre Partition 28, 402 Print -Client 162 -Description-Language 163 -Job 162 -Job-ID 162 -Manager (KDE) 175 -Server 162 -Spooler 158 -Spooler-Administration 174 -Spooling 162 printenv 435, 458 Printer-Command-Language 164, 402 printf 458 printmgr 167, 175 Print-Spooling 158 Priorität 224 proc 249 process status 222 Process-Identification 222 procuid 112 Profil 167 Programmabstürze 109 Prompt 451 Prompting-Kürzel 459 Protokoll 256 Prozessor 17 Prozesszustand 223 ps 435
Stichwortverzeichnis
Pseudo-Terminal 149 pstree 224, 436 Public-Key 282 -Verfahren 282 pushd 458 putty 277 PV 105 pwck 436 pwconv 436 pwd 436
Q qprint 162 Queue 153 quota 436 Quoting 452
R RAID 107, 186 -Controller 107, 187 Level 0 107 Level 1 107, 186 Level 5 186 Software- 186 RAM-Speicher 17 RARP 258 rcp 210, 436 rdump 219, 436 read 436, 445 reboot 436 Rechte des Systemverwalters 8 Redundant Array of Inexpensive (Independent) Disks 107 reguläre Ausdrücke 2, 465 ReiserFS 34, 100, 103, 388 reiserfs 114 reiserfsck 425 reject 178, 436 remount 114 removable media 111 renice 436 repeat 461 Repeater 255 rescue 5 resize_reiserfs 109 respawn 69 restore 109, 219, 436 Reverse Address Resolution Protocol 258, 403 RFC-1179 159 RFC-2568 166 RIPE (Reseaux IP Europeens) 263 RJ-45 254
RJ-45-Buchse 254 rlogin 277, 278, 437 RLPR 159 rm 437 rmdir 437 ro (read only) 111, 115 Root -Kits 329, 378 -Passwort 57, 378 -Terminals 4 root 3 -only 122 route 437 Router 255, 265 RPM 348 rpm 437 rrestore 219, 436 rsback 219 rsh 438 rsnapshot 219 rsync 210, 278, 438 Runlevel-Editor 77, 278 Runlevel-Skripten restart 73 start 73 stop 73 rw (read write) 115
S Samba 291 ADS 297 -Client 309 DOMAIN 297 Homes 298 nmbd 293, 306 nmblookup 293 smb.conf 293 smbclient 293, 440 smbd 293, 306 smbstatus 293 smbtar 293 SWAT 294 testparm 293 valid users 301 SAN 190 Scannen 14 Scanner 335 Schleifen 3 Schnellinstallation 21 scp 210, 278, 280, 439 SCSI-CD-ROM 49 S-DLT 190 secure file transfer protocol 258
479
Stichwortverzeichnis
480
secure shell 258 sed 439, 465, 466 SERVER 297 Server Message Block 258 set 439 setenv 461 setfacl 439 setterm 458 sftp 258, 260, 278, 285, 439 SGID 135 sh 440 shadow 80, 87, 98 SharePoints 314, 315 Shell Ablaufsteuerung 456 -Optionen 455 -Variable 453 shutdown 440 Sicherheit 13, 329 Sicherheitsaspekte Datensicherung 218 Sicherung 22 Dateibaum 195, 197 inkrementelle 191 Medien 188 Vollsicherung 191 Werkzeuge 192, 219 Sicherungsmedien Bänder 189 Signale 224 SIGHUP 225 SIGINT 225 SIGKILL 225 SIGQUIT 225 SIGSTOP 225 SIGTERM 225 Simple Mail Transfer Protocol 258 sitar 440 sleep 440 SLES 21 slogin 278 SmartCard 282 SMB 105, 258, 291 smb.conf 293 smbclient 293, 440 smbd 293, 306 smbfs 114 smbpasswd 440 smbstatus 293, 441 smbtar 293 smbtree 441 smpppd 321 SMTP 257, 258 Snapshot 106 -Volume 107
Software für Linux 14 Sohnprozess 222 Sonderzeichen 451 sort 441 source 458 Speicherauslastung 151 split 441 Spooling 158 -Verwaltung 168, 172 ssh 258, 260, 278, 279, 442 -Server 278 ssh-add 283 ssh-agent 283 sshd 280 ssh-keygen 281, 282 SSL 325 Stacker 190 Standard -drucker 179 -Runlevel 53 StarCalc 14 Start -partition 63 -programm 86 -protokoll 76 StarWriter 14 statische IP-Adressen 272 Status 223 STIME 223 Streamer-Laufwerk 149 Strg-Taste XI Striping 106 Stromausfall 101 Stromsparfunktionen 58 su 4, 232, 234, 442 subfs 111 Submount 111, 112 Subnetz 262, 263, 264 sudo 232, 234, 442 sudoers 235, 248 Suffix 141 SUID 135 suid 115 Sun-Solaris 100, 405 Superblock 101 SUSE XI -Distribution 20 Linux Enterprise Server 21 suse.de-cron-local 245 Suspend to memory 59 Swap-Dateisystem 33, 100 SWAT 294 Interface 297 NetBIOS-Name 297
Stichwortverzeichnis
Security 297 Server String 297 Workgroups 297 Switch 254, 255 switch (Kommando) 461 sync 111, 112, 115, 442 System -absturz 101 -aufrufe 148 -ausfall 118 -Calls 148 -daten 12 -start 51 -verwaltermodus 4 -verwaltertag 9 -voraussetzungen 23 SYSV 100
T Tabellenkalkulation 14 tail 442 talk 149, 442 Tape-Library 190 taper 206, 219, 442 tar 197, 443 Tastatur 66 -belegung 53 -kürzel 379 -layout 53, 380 -Taste (Steuerung) XI TCP 257 TCP/IP 256 TCP/IP-Schichtenmodell 260 tcsh 86, 460 tee 444 telnet 258, 278, 405, 444 temporäres Root-Dateisystem 67 Terminal 149 test 444 Testanweisungen 2 testdisk 377 testparm 293, 302, 445 tethereal 422 Textdateien 14 Textverarbeitung 14 time 227 TLS 325 top 224, 445 touch 445 traceroute 445 Transmission Controll Protocoll (TCP) 256 trap 446, 458 Treiber 148
true 446 tty 446 tune2fs 109 tunneln 278 TurboPrint 160 typeset 446
U UDF 100, 189 udf 114 UDP 258 UFS 100 UID 57 ulimit 458 umask 133, 446 Umlaute 139 Umleitungen 451 umount 109, 110, 447 unalias 447 uname 447 uncompress 447 Und-Verknüpfung 451 unison 209, 214, 278, 447 unset 447 Unterschiede Linux und Windows 13 until 3, 447, 457 unzip 447 USB 59 -Memory-Sticks 113, 116 Usenet-Groups 60, 376 user 115 User Datagram Protocol 258 useradd 91, 447, 448 userdel 94, 448 Usergroups 376 usermod 94, 448 users 115, 448 UTF8 139
V Variablen 3, 452, 454 vcron 247, 448 Verkettung von Kommandos 2, 451 Verschlüsselung Dateisystem 34 Grub-Passwort 44 version 368 Verzeichnis synchronisieren 209 Verzeichnisfreigabe unter Mac OS 315 vfat 114 VG 105 vi 448, 462, 465
481
Stichwortverzeichnis
vim 462 vipw 448 Viren 12, 329, 406 Virtuelle Dateisysteme 103 visudo 235, 448 vmlinuz 68 VNC 277 Vollsicherung 191 Volume 105 Groups 105 Manager 105 Voraussetzungen für den Systemverwalter 2 Vordergrundprozess 222 VPN 277, 278
X xauth 239 xcdroast 195 XFS 100, 103, 406 xfs 114 xhost 239, 449 xhost + 243 xinetd 330 xman 371 XMMS 15 X-Netzwerkkonfiguration Mac OS 274 xnmap 335, 449 xpp 162 XScanImage 14 xxd 140, 449
W wait 69 Warteschlange 153 wc 448 WCHAN 224 WebDAV 105, 218 whatis 368, 448 whereis 449 which 449 while 3, 449, 456 who 449 whoami 449 whodo 449 WinAmp 15 Windows Media Player 15 Windows vor Linux 24 Windows-Netzwerk-Konfiguration 273 Winmodem 18, 58, 59 WinOnCD 15 WINS 291 WINS-Server 292 WLAN 59 WordPad 14 World Wide Web 256 write 149, 449 Würmer 329 Wurzelverzeichnis 120 WWW 256
482
Y y2pmsh (Kommando) 348 YaST V, 6, 20, 276, 348 Netzwerkdienste 294 Netzwerkgeräte, ISDN 317 NFS-Server 287 -Online-Update 349 -Paketmanager 348 Samba 293 Xinetd 294 yast 449 yelp 374 YOU 349 yppasswd 290, 449
Z zcat 449 Zeichnung 14 zeitgesteuerte Prozesse 241 Zieldruckangabe 170 zip 450 Zombie 224 Zugriffsrechte 12 Zylinder 55