Linux warten: System pflegen
Kein Betriebssystem dieser Welt kommt ohne regelmäßige Wartung und Kontrolle aus - auch nicht Linux. Dieser Beitrag zeigt, wie Sie Ihr Debian-System am Laufen halten und immer über den aktuellen Zustand informiert sind.
Ist Linux erst einmal konfiguriert, läuft es bis zum Sankt Nimmerleinstag. Abstürze kommen so gut wie nie vor und lediglich tief greifende Änderungen in der Konfiguration erfordern überhaupt einen Neustart. Dennoch: Auch Linux will betreut und gewartet werden.
Falls Sie Linux als Desktop-System einsetzen, werden Sie recht wenig Zeit mit der Wartung verbringen. Ihre regelmäßigen Aufgaben beschränken sich auf die folgenden Tätigkeiten:
- Suchen, kopieren, verschieben und löschen von Dateien.
- Erzeugen, verschieben und löschen von Verzeichnissen.
- Ändern von Zugriffsrechten.
Das klingt nicht nach allzu viel Arbeit. Dennoch sollten Sie täglich ein wenig Zeit dafür einrechnen.
Wer einen Server betreibt, an den sich viele Teilnehmer anmelden, wird mehr Zeit mit der Administration verbringen. Zu seinen regelmäßigen Aufgaben gehören:
- Hinzufügen und Löschen von Benutzern
- Ändern von Benutzerrechten
- Kontrollieren von Log-Files
Wie Sie diese Aufgaben erledigen, zeigt Ihnen dieser Artikel.
Dateien kopieren, verschieben, löschen mit dem Midnight Commander
Wer mit Linux intensiv arbeitet, kennt die Kommandos „cp“ „mv“ und „rm“ zum Kopieren, Verschieben und Löschen von Dateien. Mit „mv“ können Sie übrigens auch Dateien umbenennen. Genauere Informationen zu den Befehlen und ihrer Anwendung finden Sie in den jeweiligen manpages.
Wer sich mit den Kommandos und den oft langen Parameter-Zeilen nicht anfreunden mag, der kann die Wartungsarbeiten von KDE aus erledigen. Wie in anderen grafischen Benutzeroberflächen auch können Sie die Dateisymbole verschieben, kopieren oder in den Mülleimer werfen.
Doch das ist auch nicht immer das Wahre: ein Systemverwalter ist auf der Shell zu Hause. Da ist er flexibler und bei komplexen Aufgaben schneller.
Ein guter Kompromiss aus blanker Kommandozeile und komfortablen Fenstern ist der Midnight-Commander. Dieses für die Shell vorgesehene Programm teilt die Konsole in zwei gleich große Fenster auf. Links und rechts findet sich jeweils der Inhalt eines Verzeichnisses. In jedem Verzeichnisfenster können Sie mit den Cursor-Tasten und RETURN die Verzeichnisse wechseln.
Über die Funktionstasten stellt der Midnight-Commander Kommandos zum Erzeugen, Kopieren, Verschieben oder Löschen von Dateien und Verzeichnissen zur Verfügung. Ebenso gibt es Befehle zum Ändern von Attibuten und natürlich einen kleinen Editor.
DOS-Veteranen wird der Midnight-Commander bekannt vorkommen. Er ist nämlich die Linux-Umsetzung des unter DOS bekannten Norton Commander. Entsprechend sind auch die Bedienelemente gleich -- selbst der Editor arbeitet ähnlich wie sein Vorbild.
Einziger Nachteil: die von der Shell her gewohnte Funktion zur automatischen Ergänzung von Verzeichnis- und Dateinamen steht im Midnight-Commander nicht zur Verfügung. Aber das macht nichts. Denn per Tastenkombination eröffnet das Programm eine weitere Shell -- oder Sie verlassen den Commander einfach kurz und laden ihn danach wieder.
Dateien suchen mit find
Das Tool „find“ ist ein Schweizer Taschenmesser für alle Administratoren und Linux-Benutzer. Es erlaubt, Dateien aller Art zu finden. Als Kriterien gelten neben Dateinamen auch Art und Größe der Dateien.
Um beispielsweise alle Files mit der Endung *.conf zu suchen geben Sie ein:
find / -name *.conf
Find legt dann im Hauptverzeichnis / los und überprüft jede Datei darauf, ob sie die Endung ".conf" enthält.
Diese Suche bringt ziemlich viele Dateien hervor. Doch die Recherche läßt sich wunderbar verfeinern. Um alle Konfigurationsdateien zu finden, die in der letzten Stunde geändert wurden, geben Sie ein
find / -name *.conf -amin -60
Der Parameter -amin holt alle Einträge hervor, die zur angegeben Zahl von Minuten geändert wurden. Entscheidend ist hier das Minuszeichen vor der 60. Das bedeutet: Alles, was vor höchstens 60 Minuten geändert wurde. Steht hier nur eine 60 würden nur Dateien angezeigt, die vor genau 60 Minuten geändert wurden. Übrigens funktioniert das auch mit dem Plus-Zeichen: mit +60 sehen Sie alle Dateien, die vor mehr als einer Stunde geändert wurden.
Sehr hilfreich ist find bei der Suche nach großen Dateien. Ein Beispiel: Sie betreuen einen Fileserver, auf dem sich der Speicherplatz in den letzten Stunden dramatisch reduziert hat. Also geht es darum, die Speicher fressenden Dateien zu finden. Geben Sie dazu ein:
find / -type f -size +10m
Find ermittelt dann die Dateien, die mehr als 10 MByte Speicherplatz verbrauchen.
Mit find ist es auch möglich, nur Verzeichnisse anzeigen zu lassen. Dazu geben Sie den Befehl
find /home -type d
ein. Analog dazu funktioniert „-type f“, das nur Dateien anzeigt.
Mehr zu find und dessen Fähigkeiten finden Sie mit „man find“.
Suchmaschine für das System
Wer eben mal nur schnell eine Datei aufstöbern möchte, braucht sich nicht bei der Syntax von find aufhalten. Ein praktisches Utility nimmt Ihnen die Recherche-Arbeit ab: locate.
Bevor Sie allerdings locate einsetzen können, starten Sie als root das Programm updatedb&. (Mit dem & packen Sie den Prozess in den Hintergrund und können derweil auf derselben Shell weiterarbeiten). Updatedb legt einen Index aller Dateien und Verzeichnisse des Systems an und speichert diesen. Mit der Eingabe beispielsweise von
locate XF86Config
finden Sie im Handumdrehen alle Dateien, die „XF86Config“ im Namen enthalten -- darunter auch die /etc/x11/XF86Config-4, also die Konfigurationsdatei für das Window-System XFree86.
Nachteil von Locate: Die Suche ist recht unscharf und kann manchmal zu viele Ergebnisse zu Tage fördern. Dann heißt es, die Ausgabe mit grep filtern oder gleich zu find zu greifen.
Log-Dateien auswerten
Was wirklich auf Ihrem Linux-Rechner passiert, steht in den Log-Dateien. Die finden Sie im Verzeichnis „/var/log“. Jedes Programm, das etwas zu sagen hat, verewigt sich hier -- entweder in einer eigenen Datei oder in „/var/log/messages“. In genau diese Datei sollten Sie als erstes sehen, falls auf Ihrem Linux-System Fehler auftreten.
Die Datei mit einem „cat /var/log/messages“ anzusehen führt zu einem ziemlichen Chaos auf Ihren Bildschirm. Denn dieses File wächst auch auf einem mäßig genutzten Desktop-System schnell auf einige Hundert Kilobyte. Mehrere Megabyte Dateigröße sind ebenfalls nicht selten.
Wie also Informationen aus /var/log/messages ziehen? Ganz einfach: Lassen Sie sich nur die neusten Informationen zeigen.
An die letzten Einträge der Log-Datei kommen Sie am besten mit
tail /var/log/messages
Damit werden die letzten zehn Zeilen der Datei angezeigt.
Sollen es mehr Zeilen sein, probieren Sie es mit
tail -n40 /var/log/messages
An Stelle der 40 können Sie auch höhere Werte eingeben.
Analog zu tail funktioniert „head“. Damit zeigen Sie die ersten zehn Einträge einer Log-Datei an:
head /var/log/messages
Und für die ersten 40 Zeilen schreiben Sie
head -n40 /var/log/messages
Wollen Sie es noch ein wenig genauer und zum Beispiel die Zeilen 20 bis 30 einer Datei anzeigen lassen? Dann probieren Sie es damit:
head -n30 /var/log/messages | tail
Damit werden zunächst die ersten 30 Zeilen der Datei ermittelt. Das Ergebnis schickt die Shell weiter an tail -- und das nimmt dann nur die letzten 10 Zeilen heraus -- also die Zeilen 20 bis 30.
Und noch einen Trick hat „tail“ auf Lager: Wollen Sie Ihr System ständig im Auge behalten, schalten Sie die tail auf Dauerüberwachung. Dazu geben Sie ein
tail -f /var/log/messages
Sobald eine neue Zeile zum Logfile hinzukommt, wird sie sofort angezeigt. Natürlich funktioniert dieses Verfahren auch mit allen anderen Log-Dateien. Ideal ist das zum Beispiel, wenn Sie die Aktivitäten auf Ihrem Web-Server im Auge behalten wollen.
Log-Dateien filtern
Ein anderer Weg, Durchblick in den Logs zu behalten ist, die Daten zu filtern. Hierbei hilft das Programm „grep“. Probieren Sie es an einem Beispiel aus:
cat /var/log/messages | grep "Oct 15"
Damit erscheinen nur Meldungen, die am 15. Oktober eingetragen wurden. Das kann allerdings eine ganze Menge sein. Aber Sie können noch weiter filtern:
cat /var/log/messages | grep "Oct 15" | grep "kernel"
Damit erscheinen nur Meldungen vom 15. Oktober, die das Wörtchen „kernel“ in der zeile stehen haben.
Natürlich geht das auch eleganter. Die beiden Greps können Sie zu einem zusammenfassen. Wie wäre es mit:
cat /var/log/messages | grep "Oct 15.*kernel"
Hierbei handelt es sich um einen kleinen, regulären Ausdruck. Er liest sich so: Zeige alles, wo Du „Oct 15“ und „kernel“ findest. Das „.*“ bedeutet: zwischen den beiden Suchbegriffen dürfen beliebig viele Zeichen stehen.
Mit „grep“ können Sie noch raffinierter filtern: Sollen zum Beispiel die Einträge vom 15 und 16 Oktober angezeigt werden? Dann probieren Sie es so:
cat /var/log/messages | grep -E "Oct (15|16).*kernel"
Damit sucht Grep nach allen Vorkommen von Oct hinter denen nach einem Leerzeichen entweder eine 15 oder eine 16 vorkommt. Entscheidend ist hier, dass die beiden, wahlweise möglichen Daten in Klammern stehen und mit einem | getrennt sind.
Mit Hilfe der regulären Ausdrücken können Sie in Grep raffinierte Auswertungen schreiben.
Einzelne Felder von Log-Dateien ansehen
Ein zweites, mächtig nützliches Filter-Werkzeug heißt „cut“. Es erlaubt, Zeilen einer Datei anhand eines Zeichens zu trennen. Sprich: Sie können auf diese Weise Teile einer Zeile ausschneiden. Das lohnt bei sehr ausführlichen Logfiles, wenn Sie nur einen Teil der Information sehen wollen.
Als Beispiel dient das Log des Apache-Webservers. Angenommen, Sie wollen nur anzeigen lassen, von welchen IP-Adressen die letzten 100 Besuche kamen. Dann geben Sie ein:
tail -n100 /var/log/apache2/access.log | cut -d' ' -f1
Mit dem Parameter -d' ' legen Sie fest, dass ein Leerzeichen als Feldtrenner dient. Danach lassen Sie mit -f1 das Feld 1 anzeigen. Im Apache-Logfile ist das die IP-Adresse des Clients, der gerade eine Seite abgerufen hat.
Benutzer anlegen
Zu den Pflichten eines Administrators gehört die Benutzerverwaltung. Sei es der Server, auf dem sich viele User tummeln oder die Einrichtung eines Testnutzers auf dem privaten System -- der Befehl bleibt immer derselbe: „adduser“ ist das Mittel der Wahl. Um diesen Befehl auszuführen brauchen Sie root-Rechte.
Ein Benutzerkonto besteht aus
- Benutzername
- Kennwort
- Heimatverzeichnis
- Shell
- Gruppen
Die Debian-Version von Adduser bietet viel Komfort. Um einen normalen Benutzer anzulegen, geben Sie lediglich dessen Benutzernamen hinter „adduser“ ein, zum Beispiel
adduser max
Daraufhin legt adduser den Benutzer an, erzeugt gleich das passende Heimatverzeichnis und fragt nach dem Kennwort. Außerdem sieht das Programm noch im Verzeichnis /etc/skel nach und kopiert alle dort vorhandenen Dateien in das Home-Verzeichnis des neuen Nutzers. Auf diese Weise lassen sich Dateien und Ordner festlegen, die automatisch in jedes neue Nutzerverzeichnis kopiert werden - beispielsweise Konfigurationseinstellungen für die Shell.
Nach der Kopierarbeit geben Sie das Kennwort und schließlich ein paar genauere Informationen zum Nutzer ein, beispielsweise seinen Namen oder seine Telefonnummer. Diese Informationen lassen sich von anderen Usern mit dem Befehl „finger“ abrufen.
Von Haus aus wird für den neuen Nutzer eine gleichnamige Gruppe erzeugt. Außerdem erhält er Zugriff auf die Shell /bin/bash.
Damit der Benutzer auch auf dem System arbeiten kann, beispielsweise auf das CD-ROM-Laufwerk oder Disketten, sollte er noch einigen Gruppen mehr angehören, zum Beispiel „dialout“, „cdrom“, „floppy“, „audio“ und „video“.
Das Hinzufügen geht mit „addgroup“, das Sie ebenfalls als root ausführen müssen. Ein Beispiel:
addgroup max floppy
fügt den Benutzer max der Gruppe floppy hinzu. Sie können mit diesem Befehl einen User immer nur einer Gruppe auf einmal zuordnen.
Welchen Gruppen ein User bereits angehört, finden Sie übrigens mit „groups username“ heraus.
Um einen Benutzer wieder zu entfernen, verwenden Sie den Befehl
deluser username
Dabei bleibt das Heimatverzeichnis des Benutzers erhalten. Das ist in den meisten Fällen auch sinnvoll -- denn vielleicht braucht man noch einmal irgendeine Datei aus dessen Verzeichnis. Falls Sie den Home-Ordner gleich mit löschen wollen, geben Sie ein
deluser --remove-home
Übrigens verwenden Sie diesen Befehl auch, um Benutzer aus einer Gruppe zu löschen. Dann gilt
deluser max video
Damit wird „max“ aus der Gruppe „video“ genommen.
Gruppen erzeugen und löschen
Mit Hilfe von Gruppen haben Sie eine gute Möglichkeit Zugriffsrechte zu steuern. Jeder Datei und jedem Verzeichnis können Sie eine Gruppe zuordnen. Für diese Gruppe vergeben Sie gesonderte Rechte. Jedes Mitglied einer Gruppe erhält automatisch diese Rechte. Auf diese Weise müssen Sie einen User nur einer zuvor festgelegten Gruppe hinzufügen, um ihm Zugriff auf Dateien und Verzeichnisse zu verschaffen.
Um eine Gruppe anzulegen, geben Sie den Befehl
addgroup webadmin
ein. Damit erzeugt Linux eine neue Gruppe namens „webadmin“. Der können Sie gleich, wie im vorherigen Abschnitt beschrieben, neue Benutzer hinzufügen.
Um die Gruppe wieder zu entfernen, geben Sie ein
delgroup webadmin
Schon ist die Gruppe weg. Um vor dem Löschen sicher zu gehen, dass keine Benutzer mehr dieser Gruppe angehören, geben Sie ein
delgroup --only-if-empty webadmin
Falls noch ein oder mehrere Benutzer dieser Gruppe angehören, verweigert Linux das Entfernen der Gruppe.
Komfortable Verwaltung mit KUser
Das KDE-Programm KUser ist eine komfortable Alternative zu den Shell-Kommandos. KUser erlaubt, Benutzer und Gruppen anzulegen und verwaltet die Gruppenzugehörigkeit von Benutzern. Um das Programm aufzurufen, geben Sie nach einem Tastendruck auf „[Alt - F2]“ den Befehl „kuser“ ein. Nach der Eingabe des Root-Kennworts können Sie mit der Benutzerverwaltung loslegen. Vorteil gegenüber der Kommandozeilen-Variante: Sie sehen beim Anlegen, welche Shell und welches Home-Verzeichnis der Benutzer erhält.
Rechte ändern
Bleiben noch die Benutzerrechte. Jede Datei und jedes Verzeichnis erlaubt, Rechte für den Eigentümer, die Gruppe und für alle anderen zu ändern. Das geht mit dem Befehl „chmod“. Um beispielsweise einer Gruppe zu erlauben, die Datei auch zu ändern, geben Sie ein
chmod g+w brief.txt
Das „g+w“ bedeutet, gib der Gruppe (g) das Recht zu schreiben (w), also auch die Datei zu ändern. Um das Recht wieder zu entziehen, verwenden Sie
chmod g-w brief.txt
Mit „ls -l“ können Sie das Ergebnis ansehen. Um die Rechte für den Benutzer zu ändern, nehmen Sie an Stelle des „g“ ein „u“ und für alle anderen Benutzer das „o“. Sie können diese Buchstaben auch kombinieren. Damit die Datei für alle ausführbar ist, schreiben Sie
chmod ugo+x brief.txt
Natürlich hat es keinen Sinn, eine Textdatei auszuführen, deswegen machen Sie diese Zuweisung gleich wieder rückgängig:
chmod ugo-x brief.txt
User und Gruppe einer Datei ändern
Um ein Datei oder einen Ordner einen anderen Besitzer zuzuweisen geben Sie als Benutzer root ein
chown max brief.txt
Ähnlich geht’s mit der Gruppe
chgrp webadmin brief.txt
Pfiffig ist die kombinierte Variante. Um Benutzer und Gruppe auf einmal zu ändern, schreiben Sie
chown max:webadmin brief.txt
Fazit
Damit kennen Sie die wichtigsten Aufgaben der Linux-Systemverwaltung und die entsprechenden Werkzeuge. Denken Sie immer daran: Bei einem Fehler oder Problem zuerst in den Log-Dateien nachsehen und immer fleißig die manpages studieren.
Der root-Account
Viele Arbeiten auf Ihren Computer müssen Sie als root ausführen. Dieser Benutzer darf alles -- und das macht ihn so gefährlich. Denn ein kleiner Tippfehler genügt schon, um aus einem gut gemeinten Kommando einen alles zerstörenden Befehl zu machen. Deshalb sollten Sie sich nur dann als root anmelden, wenn das wirklich notwendig ist. Am besten ist es, sich mit dem normalen Benutzernamen anzumelden und dann bei Bedarf eine root-Shell zu öffnen. Das geht ganz schnell, indem Sie in einer Shell den Befehl „su“ und danach das root-Kennwort eingeben. Und wenn die Wartungsarbeiten erledigt sind, verlassen Sie die Shell wieder.




