Product SiteDocumentation Site

8.9. Weitere Konfigurationen: Zeitsynchronisation, Protokolle, Gemeinsamer Zugang…

Die zahlreichen in diesem Abschnitt aufgeführten Elemente sind für jeden wissenswert, der alle Aspekte der Konfigurierung eines GNU/Linux-Systems beherrschen möchte. Sie werden jedoch nur kurz behandelt, und häufig wird auf die Dokumentation verwiesen.

8.9.1. Zeitzone

Die Zeitzone wird während der Erstinstallation eingestellt und ist ein Konfigurationspunkt für das Paket tzdata. Sie wird mit dpkg-reconfigure tzdata geändert, der es erlaubt, die gewünschte Zeitzone interaktiv auszuwählen. Seine Konfiguration wird in der Datei /etc/timezone gespeichert. Zusätzlich wird die entsprechende Datei aus dem Verzeichnis /usr/share/zoneinfo nach /etc/localtime kopiert; diese Datei enthält die Regeln, die die Dauer der Sommerzeit für jedes Land, das sie einsetzt, festlegt.
Wenn man die Zeitzone vorübergehend ändern muss, verwendet man die Umgebungsvariable TZ, die Vorrang vor der konfigurierten Voreinstellung des Systems hat:
$ date
Wed Mar 28 15:51:19 CEST 2012
$ TZ="Pacific/Honolulu" date
Wed Mar 28 03:51:21 HST 2012

8.9.2. Zeitsynchronisierung

Zeitsynchronisierung, die auf einem Rechner überflüssig erscheinen mag, ist in einem Netzwerk sehr wichtig. Da Benutzer keine Berechtigung zur Änderung des Datums und der Zeit haben, ist es wichtig, dass diese Information genau stimmt, um Verwirrung zu vermeiden. Außerdem können Informationen aus den Protokollen verschiedener Rechner besser aufeinander bezogen werden, wenn alle Rechner eines Netzwerks synchronisiert sind. Im Falle eines Angriffs ist es so einfacher, die zeitliche Abfolge der Ereignisse auf verschiedenen von der Störung betroffenen Rechnern zu rekonstruieren. Daten, die auf verschiedenen Rechnern zu statistischen Zwecken gesammelt werden, wären nicht sehr sinnvoll, wenn sie nicht synchronisiert wären.

8.9.2.1. Für Arbeitsplatzrechner

Da Arbeitsplatzrechner häufig neu gestartet werden (selbst wenn dies nur zur Energieersparnis dient), genügt es, sie beim Hochfahren über NTP zu synchronisieren. Hierzu installieren Sie einfach das Paket ntpdate. Bei Bedarf können Sie den verwendeten NTP-Server durch Änderung der Datei /etc/default/ntpdate wechseln.

8.9.2.2. Für Server

Server werden nur selten neu gestartet, und es ist sehr wichtig, dass ihre Systemzeit korrekt ist. Um dauerhaft die richtige Zeit beizubehalten, sollten Sie einen lokalen NTP-Server installieren, einen Dienst, der vom Paket ntp angeboten wird. In seiner voreingestellten Konfiguration synchronisiert sich dieser Server mit pool.ntp.org und stellt die Zeit auf Anfragen aus dem lokalen Netzwerk hin bereit. Sie können ihn konfigurieren, indem Sie die Datei /etc/ntp.conf editieren, wobei die wichtigste Änderung in dem NTP-Server besteht, an den er sich wendet. Falls das Netzwerk viele Server hat, könnte es von Interesse sein, einen lokalen Server einzurichten, der sich mit den öffentlichen Servern synchronisiert und der dann von den anderen Servern des Netzwerks als Quelle benutzt wird.

8.9.3. Protokolldateien rotieren

Protokolldateien können größer werden, und zwar schnell, und es ist wichtig, sie zu archivieren. Das häufigste System besteht in einem rotierenden Archiv: die Protokolldatei wird regelmäßig archiviert, und nur die letzten X Archivdateien aufbewahrt. logrotate, das für diese Rotationen zuständige Programm folgt den Anweisungen, die ihm in der Datei /etc/logrotate.conf und in allen im Verzeichnis /etc/logrotate.d/ befindlichen Dateien gegeben werden. Der Administrator kann diese Dateien verändern, falls er die von Debian festgelegten Richtlinien zur Protokollrotation anpassen möchte. Die Handbuchseite logrotate(1) beschreibt alle in diesen Konfigurationsdateien verfügbaren Optionen. Sie möchten vielleicht die Anzahl der in der Protokollrotation zurückbehaltenen Dateien erhöhen oder Protokolldateien in ein besonderes Verzeichnis verschieben, um sie zu archivieren statt zu löschen. Sie könnten sie auch per E-Mail verschicken, um sie andernorts zu archivieren.
Das Programm logrotate wird täglich durch das Termimsteuerungssprogramm cron ausgeführt (beschrieben in Abschnitt 9.7, „Aufgaben mit cron und atd zeitlich festlegen“).

8.9.4. Administratorrechte gemeinsam nutzen

Häufig arbeiten mehrere Administratoren am selben Netzwerk. Die Root-Passwörter gemeinsam zu nutzen, ist nicht sehr elegant und öffnet die Tür zu Missbrauch wegen der Anonymität, die eine derartige gemeinsame Nutzung schafft. Die Lösung dieses Problems besteht in dem Programm sudo, das es bestimmten Benutzern ermöglicht, bestimmte Befehle mit besonderen Rechten auszuführen. Im gewöhnlichsten Fall erlaubt sudo einem vertrauenswürdigen Benutzer die Ausführung jeden Befehls als Root. Hierzu führt der Benutzer einfach sudo befehl aus und authentifiziert sich dabei mit seinem persönlichen Passwort.
Wenn es installiert ist, gibt das Paket sudo volle Root-Rechte an Mitglieder der Gruppe sudo. Um andere Berechtigungen zu vergeben, muss der Administrator mit dem Befehl visudo die Konfigurationsdatei /etc/sudoers verändern (auch hier wird der Editor vi aufrufen oder ein anderer in der Umgebungsvariablen EDITOR definierter Editor). Das Hinzufügen einer Zeile mit benutzername ALL=(ALL) ALL ermöglicht es dem betreffenden Benutzer, einen beliebigen Befehl als Root auszuführen.
Komplexere Konfigurationen ermöglichen es, bestimmte Befehle nur bestimmten Benutzern zu erlauben. Alle Einzelheiten der verschiedenen Möglichkeiten werden auf der Handbuchseite sudoers(5) beschrieben.

8.9.5. Liste der Einhängepunkte

Die Datei /etc/fstab enthält eine Liste aller möglichen Einhängepunkte, die entweder während des Hochfahrens automatisch eingehängt werden oder bei auswechselbaren Speichergeräten von Hand. Jeder Einhängepunkt wird in einer Zeile mit mehreren durch Leerzeichen getrennten Feldern beschrieben:
  • einzuhängendes Gerät: dies kann eine lokale Partition sein (Festplatte, CD-ROM) oder ein entferntes Dateisystem (wie zum Beispiel ein NFS).
    Dieses Feld wird häufig durch die eindeutige ID des Dateisystems ersetzt (die man mit dem Befehl blkid gerät feststellen kann) mit vorausgestellter UUID=. Dies schützt vor einer Änderung des Gerätenamens, falls ein Gerät hinzugefügt oder entfernt wird, oder falls Platten in einer anderen Reihenfolge erkannt werden.
  • mount point: dies ist der Ort innerhalb des lokalen Dateisystems, an dem das Gerät, das entfernte System oder die Partition eingehängt werden.
  • type: dieses Feld legt das auf dem eingehängten Gerät verwendete Dateisystem fest. ext4, ext3, vfat, ntfs, btrfs, xfs sind einige Beispiele.
    Eine vollständige Liste bekannter Dateisysteme steht auf der Handbuchseite mount(8) zur Verfügung. Der besondere Wert swap gilt für Swap-Partitionen; der besondere Wert auto weist das Programm mount an, das Dateisystem selbstständig zu ermitteln (was besonders bei Laufwerken und USB-Sticks hilfreich ist, da jedes ein anderes Dateisystem haben kann);
  • options: es gibt viele in Abhängigkeit vom Dateisystem, und sie sind auf der Handbuchseite von mount dokumentiert. Die häufigsten sind
    • rw und ro bedeuten, dass das Gerät mit den Berechtigungen zum Lesen und Schreiben beziehungsweise nur zum Lesen eingehängt wird.
    • noauto deaktiviert das automatische Einhängen beim Hochfahren.
    • user erlaubt es allen Benutzern, dieses Dateisystem einzuhängen (ein Vorgang, der sonst nur auf den Root-Benutzer beschränkt wäre).
    • defaults bezeichnet die Gruppe der voreingestellten Optionen: rw, suid, dev, exec, auto, nouser und async, von denen jede einzeln nach defaults abgestellt werden kann, indem man nosuid, nodev und so weiter hinzufügt, um suid, dev und so weiter zu sperren. Das Hinzufügen der Option userreaktiviert diese wieder, da defaults die Option nouser enthält.
  • backup: dieses Feld ist fast immer auf 0 gesetzt. Falls es 1 ist, weist dies das Hilfsprogramm dump darauf hin, dass die Partition Daten enthält, die gesichert werden müssen.
  • check order: dieses letzte Feld zeigt an, ob die Integrität des Dateisystems beim Hochfahren überprüft werden soll, und in welcher Reihenfolge diese Überprüfung durchgeführt werden soll. Falls es 0 ist, wird keine Überprüfung durchgeführt. Das Wurzelverzeichnis sollte den Wert 1 haben, während andere dauerhaft eingehängte Dateisysteme den Wert 2 erhalten.

Beispiel 8.5. Beispiel der Datei /etc/fstab:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# / was on /dev/sda1 during installation
UUID=c964222e-6af1-4985-be04-19d7c764d0a7 / ext3 errors=remount-ro 0 1
# swap was on /dev/sda5 during installation
UUID=ee880013-0f63-4251-b5c6-b771f53bd90e none swap sw  0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0
/dev/fd0        /media/floppy   auto    rw,user,noauto  0       0
arrakis:/shared /shared         nfs     defaults        0       0

Der letzte Eintrag dieses Beispiels bezieht sich auf ein Netzwerk-Dateisystem (NFS): das Verzeichnis /shared/ auf dem Server arrakis wird auf dem lokalen Rechner unter /shared/ eingehängt. Das Format der Datei /etc/fstab ist auf der Handbuchseite fstab(5) dokumentiert.

8.9.6. locate und updatedb

Der Befehl locate kann den Ort einer Datei finden, wenn Sie nur einen Teil ihres Namens kennen. Er zeigt das Ergebnis fast sofort an, da er in einer Datenbank nachschlägt, die den Ort aller auf dem System befindlichen Dateien speichert; diese Datenbank wird täglich durch den Befehl updatedb aktualisiert. Es gibt -zig Implementierungen des Befehls locate und Debian hat mlocate für sein Standard-System gewählt.
mlocate ist so intelligent, dass es nur Dateien zurückliefert, auf die der Anwender Zugriff hat, auch wenn die zugrundeliegende Datenbank alle Dateien auf dem System kennt (weil die Implementierung des zugehörigen updatedb ohne Root-Rechte läuft). Als zusätzliche Absicherung kann der Administrator mit PRUNEDPATHS in /etc/updatedb.conf einzelne Verzeichnisse von der Indexierung ausschließen.