<< Back to man.lupaworld.com


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]

Debian-Referenz
Kapitel 9 - Tunen eines Debian-Systems


Dieses Kapitel beschreibt nur die Grundlagen der Systemkonfiguration mittels textbasierter Schnittstellen. Sinnvolles Vorwissen liefert Debian-System-Installationshinweise, Kapitel 3.

Für diejenigen Leser, die besonders Wert auf die Sicherheit ihres Systems legen, sollte das Securing Debian Manual Pflichtlektüre sein. Dieses Dokument findet sich auch im Paket harden-doc.


9.1 Hinweise zur System-Inititalisierung

Der Abschnitt Das init-Programm, Abschnitt 2.4.1 beschreibt die Grundlagen der Debian init-Skriptdateien.


9.1.1 Anpassen der Init-Skripte

Die Debian-Distribution verwendet das sys-V System für die Init-Skripte. Da alle Dateien unterhalb von /etc/init.d/* als Konfigurationsdateien angesehen werden, können sie vom Systemadministrator beliebig verändert werden. Dennoch ist der empfohlene Ansatz, die Dateien in /etc/default/* anzupassen.

Die Datei /etc/init.d/rcS dient z.B. zum Einstellen von Vorgaben, die beim Systemstart aktiviert werden sollen. Hier können Programme wie motd oder sulogin konfiguriert bzw. gestartet werden.


9.1.2 Anpassen der System-Protokollierung

Die Art und Weise der System-Protokollierung kann in der Konfigurationsdatei des syslogd in /etc/syslog.conf bestimmt werden. Das colorize Paket kann die Ausgaben dieses Daemons nach belieben färben, um die Übersicht zu erhöhen. Vergleichen Sie syslogd(8) und syslog.conf(5).


9.1.3 Hardware-Optimierung

Einige Optimierungen der Hardware überlässt Debian dem Systemadministrator.

Das Mounten eines Dateisystems mit der noatime Option ist auch sehr effektiv zur Beschleunigung von Lesezugriffen auf Dateien. Vergleichen Sie fstab(5) und mount(8).

Bestimmte Hardware kann direkt durch den Linux Kernel und das proc Dateisystem getunt werden. Vergleichen Sie Tunen des Kernels mittels des proc-Dateisystems, Abschnitt 7.3.

Es gibt viele hardwarespezifische Konfigurationshilfsmittel in Debian. Viele von diesen beziehen sich auf Laptops. Einige interessante in Debian verfügbare Pakete sind:

ACPI ist ein moderneres Protokoll für das Power-Management als APM.

Einige dieser Pakete erfordern spezielle Kernel-Module. Diese sind in der Regel bereits in den neuesten Kernelquellen enthalten. Bei Problemen kann es notwendig sein, selbst den neuesten Patch in den Kernel einzuspielen.


9.2 Zugriffskontrolle


9.2.1 Zugriffskontrolle mit PAM und login

PAM (Pluggable Authentication Modules) erlaubt die Kontrolle von Logins.

     /etc/pam.d/*             # PAM Konfiguration
     /etc/pam.d/login         # PAM Konfiguration des Logins
     /etc/security/*          # PAM Modulparameter
     /etc/securetty           # Konfiguration des root-Login auf der Konsole
     /etc/login.defs          # generelle Logins

Falls wirklich (auf eigene Gefahr) ein Login an der Konsole ohne Passwort möglich sein soll, kann die Datei /etc/pam.d/login wie folgt geändert werden:

     #auth       required   pam_unix.so nullok
     auth       required   pam_permit.so

Ähnlich funktioniert das auch mit xdm, gdm, ..., um sich ohne Passwort an der X-Konsole anzumelden.

Andererseits kann cracklib2 installiert werden und /etc/pam.d/passwd wie folgt angepasst werden, um einen guten Passwortschutz zu erhalten.

     password required       pam_cracklib.so retry=3 minlen=6 difok=3

Ein einmaliges Nutzen eines Login Passworts zur Zugangsaktivierung kann auch hilfreich sein. Dafür muss das passwd Kommando mit der Option -e verwendet werden. Vergleichen Sie passwd(1).

Die maximale Anzahl an Prozessen kann mit ulimit -u 1000 in der Bash-Shell gesetzt werden oder auch in der Datei /etc/security/limits.conf mit PAM. Andere Parameter, wie z.B. core können so ebenfalls gesetzt werden. Die Anfangseinstellung von PATH kann in /etc/login.defs festgelegt werden, bevor die Shell Skripte startet.

Die Dokumentation von PAM befindet sich im Paket libpam-doc. Das Buch Linux-PAM System Administrator's Guide behandelt PAM, die verfügbaren Module, usw. Die Dokumentation enthält auch The Linux-PAM Application Developers' Guide und The Linux-PAM Module Writers' Guide.


9.2.2 "Warum GNU su nicht die wheel Gruppe unterstützt"

Dieser Satz entstammt dem Ende der alten info su Seite von Richard M. Stallman. Man sollte sich aber nicht verwirren lassen. Die aktuelle su Version in Debian benutzt PAM. Somit kann der Gebrauch von su leicht auf eine beliebige Gruppe eingeschränkt werden. Dazu dient das Modul pam_wheel.so, welches in /etc/pam.d/su konfiguriert wird. Im folgenden Beispiel wird die adm Gruppe äquivalent zu der BSD Gruppe wheel eingerichtet und erlaubt den Gruppenmitgliedern den Gebrauch des su Kommandos ohne Passwort.

     # anti-RMS Konfiguration in /etc/pam.d/su
     auth       required   pam_wheel.so group=adm
     
     # wheel Mitglieder die su ohne Passwort verwenden können
     auth       sufficient pam_wheel.so trust group=adm

9.2.3 Bedeutung verschiedener Gruppen

Interessante Gruppen sind:

Eine vollständige Liste bietet der "FAQ"-Abschnitt in Securing Debian Manual, dieses Dokument befindet sich im harden-doc Paket in Woody. Auch das neue base-passwd (>3.4.6) enthält eine maßgebliche Liste: /usr/share/doc/base-passwd/users-and-groups.html.


9.2.4 sudo – eine sicherere Arbeitsumgebung

Ich verwende sudo hauptsächlich als Selbstschutz. sudo ist die etwas sicherere Alternative zur Verwendung des Administrator-Accounts.

sudo wird wie üblich installiert und mittels der Datei /etc/sudoers konfiguriert. Überprüfen Sie auch die Merkmale der sudo Gruppe in /usr/share/doc/sudo/OPTIONS.

Diese Beispielkonfiguration verwendet eine Gruppe "staff", welche es den Mitgliedern erlaubt, beliebige Befehle mit root-Rechten mittels sudo auszuführen. Desweiteren wird dieses Recht einer Gruppe "src" mit Einschränkungen auf bestimmte Befehle gegeben.

Der Vorteil von sudo ist, dass nur ein normales Benutzerpasswort zum Einloggen benötigt wird. Die Aktivitäten eines sudo Benutzers werden aufgezeichnet. Dies ermöglicht es, einige Aufgaben an Hilfsadministratoren zu delegieren. Zum Beispiel:

     $ sudo chown -R ich:meineGruppe .

Selbstverständlich kann jeder der das Administratorpasswortes kennt (wie es bei den meisten Heimanwendern der Fall ist) auch auf andere Weise root-Kommandos absetzen:

     $ su -c "shutdown -h now"
     Password:

(Mit sudo können feiner abgestufte Sicherheitsbarrieren eingebaut werden. Ich hätte dies tun können. Da aber nur ich Zugriff auf meinen Rechner habe, hielt ich das nicht für nötig.)

Ein anderes Programm mit ähnlicher Funktionalität ist im super Paket zu finden.


9.2.5 Zugriffskontrolle auf Daemonen

Der Internet-Superserver inetd wird beim Systemboot aus /etc/rc2.d/S20inetd (für das Runlevel 2) gestartet; dies wiederum ist ein symbolischer Link auf /etc/init.d/inetd. Durch die Verwaltung verschiedener Dienste/Daemonen in diesem einen Daemon wird die Systemlast verringert.

Wenn eine Anfrage via Netzwerk an den Rechner gestellt wird, sieht der Daemon in der Datei /etc/protocols und /etc/services nach, welches Protokoll und welcher Service nachgefragt werden. Bei einem normalen Internetservice schaut inetd dann in /etc/inetd.conf nach oder bei Sun-RPC-Anfragen in /etc/rpc.conf.

Die Sicherheit des Systems kann durch die Abschaltung nicht gebrauchter Services in /etc/inetd.conf immens gesteigert werden. Sun-RPC-Services werden gebraucht, wenn NFS oder andere RPB-basierte Protokolle verwendet werden.

Für einige Daemonen wird der gewünschte Server nicht direkt gestartet. Stattdessen wird der tcpd TCP/IP-Daemon-Wrapper mit dem gewünschten Server als Argument aus /etc/inetd.conf aufgerufen. In diesem Fall wird der Server von tcpd erst nach Log-Einträgen und Sicherheitsüberprüfungen gestartet (/etc/hosts.deny und /etc/hosts.allow werden ausgewertet).

Falls beim entfernten Zugriff in einem Debian-System Probleme auftreten, kann eine Ursache der Eintrag: "ALL: PARANOID" in /etc/hosts.deny sein, der dann auskommentiert werden muss.

Details dazu liefern: inetd(8), inetd.conf(5), protocols(5), services(5), tcpd(8), hosts_access(5) und hosts_options(5).

Weitere Informationen zu Sun-RPC liefern: rpcinfo(8), portmap(8) und /usr/share/doc/portmap/portmapper.txt.gz.


9.2.6 LDAP – Leichtgewichtiges Verzeichniszugangsprotokoll

Literatur zu LDAP (Lightweight Directory Access Protocol):


9.3 CD-Brenner

CD-Brenner mit ATAPI/IDE-Schnittstelle sind in der letzten Zeit populär geworden, da sie gut geeignet für Archivierungs- und Backupzwecke kleiner Datenmengen (< 640 MB) sind. Das wichtigste Dokument zu diesem Thema ist das CD-Writing-HOWTO.


9.3.1 Einführung

Der Abbruch des Datenstroms zum CD-Brenner während des Brennvorgangs wird unweigerlich dazu führen, dass der Rohling unbrauchbar wird. Deshalb sollte der Puffer-Speicher so groß wie möglich sein. Wenn Geld keine Rolle spielt, sollte man lieber einen SCSI-Brenner kaufen, hat man eine Wahl bzgl. des Bussystems, sollte man den Brenner unbedingt über den PCI-Bus (z.B. auf dem Motherboard), statt den ISA-Bus (wie bei der SB16) anschließen.

Ist ein CD-Brenner am IDE-Bus angeschlossen, wird der IDE-SCSI Treiber anstatt eines gewöhnlichen IDE CD-Treibers für Linux 2.2 und 2.4 Kernel verwendet. Auch der allgemeine SCSI-Treiber muss aktiviert sein. Es gibt zwei Möglichkeiten, wenn man einen Kernel, wie er mit modernen Distributionen (März 2001) ausgeliefert wird, hat:


9.3.2 Ansatz 1: Module + lilo

Die folgende Zeile muss in der Datei /etc/lilo.conf hinzugefügt werden, wenn ein Standard-Debian-Kernel verwendet wird. Falls dort schon Einträge vorhanden sind, können diese mit Leerzeichen getrennt werden.

     append="hdx=ide-scsi ignore=hdx"

Der Anschlussname eines CD-Brenners, der durch den IDE-SCSI-Treiber angesprochen wird, ergibt sich dabei wie folgt: In hdx ist x zu ersetzen gemäß:

     hda          für den Master am ersten IDE-Anschluss
     hdb          für den Slave am ersten IDE-Anschluss
     hdc          für den Master am zweiten IDE-Anschluss
     hdd          für den Slave am zweiten IDE-Anschluss
     hde ... hdh  für ein Laufwerk an einem externen oder ATA66/100
                  IDE-Anschluss.

Die neue Lilo-Konfiguration wird mit root-Rechten aktiviert durch:

     # lilo
     # shutdown -h now

9.3.3 Ansatz 2: Neukompilieren des Kernels

Debian benutzt make-kpkg um einen Kernel zu erstellen. Die Option --append_to_version ist beim Erzeugen mehrerer Kernel sinnvoll. Siehe dazu Der Linux-Kernel unter Debian, Kapitel 7.

Nach Eingabe von make menuconfig geht man wie folgt vor:


9.3.4 Weitere Schritte nach der Konfiguration

Die Kernel-Unterstützung für den CD-Brenner kann während des Boot-Prozesses aktiviert werden durch:

     # echo ide-scsi >>/etc/modules
     # echo sg       >>/etc/modules
     # cd /dev; ln -sf scd0 cdrom

Manuelle Aktivierung geschieht durch:

     # modprobe ide-scsi
     # modprobe sg

Nach dem Neustart kann die Installation geprüft werden durch

     $ dmesg|less
     # apt-get install cdrecord
     # cdrecord -scanbus

[Von Warren Dodge] Manchmal gibt es Konflikte zwischen den ide-scsi- und ide-cd-Treibern, wenn für beide Treiber Geräte installiert sind. Durch die folgende Zeile, die zu der Datei /etc/modutils/aliases hinzugefügt werden soll, kann das Problem beseitigt werden. Vor dem Neustart ist noch ein Lauf von update-modules nötig.

     pre-install      ide-scsi      modprobe ide-cd

Durch diese Zeile wird der IDE-Treiber vor ide-scsi geladen. Der IDE-Treiber ide-cd übernimmt die Kontrolle über die ATAPI-CD-ROM Geräte – über alle die nicht ignoriert werden sollen. Die anderen bisher ignorierten Geräte übernimmt dann das ide-scsi-Modul.


9.3.5 Bootfähiges CD-Image

Um eine bootfähige CD-Image cd-image.raw mit den Dateien unterhalb vom Zielverzeichnis zu erzeugen, geht man wie folgt vor: Man legt eine bootfähige Diskette in das erste Diskettenlaufwerk ein und erzeugt davon ein Image:

     # dd if=/dev/fd0 Zielverzeichnis/boot.img
     # mkisofs -r -V volume_id -b boot.img -c bootcatalog -J -T \
               -o cd-image.raw Zielverzeichnis/

Die -t Option erzeugt die Übersetzungstabelle für lange Dateinamen, -b und -c steht für bootfähig.

Tatsächlich kann sogar eine bootfähige CD mit DOS erstellt werden. Wenn die Datei boot.img im obigen Beispiel eine DOS-Boot-Diskette beinhaltet, dann wird die CD gestartet, als ob diese Diskette im Diskettenlaufwerk stecken würde. Vielleicht möchte ja mal jemand das mit Freedos probieren.

Das CD-Image kann man mounten mit:

     # mount -t iso9660 -o ro,loop cd-image.raw /cdrom
     # cd /cdrom
     # mc
     # umount /cdrom

9.3.6 Brennen mit dem CD-Brenner (R, RW):

Ein erster Test mit einem Double-Speed-Laufwerk sieht so aus (dabei wird keine CD gebrannt, sondern nur simuliert):

     # nice --10 cdrecord -dummy speed=2 dev=0,0 disk.img

Falls dies erfolgreich ist, kann die CD-R gebrannt werden:

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Eine wiederbeschreibbare CD-RW muss zudem erst gelöscht werden:

     # nice --10 cdrecord -v -eject blank=fast speed=2 dev=0,0 disk.img

Manche CD-RW-Laufwerke funktionieren besser mit:

     # nice --10 cdrecord -v blank=all speed=2 dev=0,0 disk.img

gefolgt von:

     # nice --10 cdrecord -v -eject speed=2 dev=0,0 disk.img

Diese getrennten Schritte sollen SCSI-Timeouts während des Löschens vorbeugen, die den Brenn-Prozess stören oder sogar unterbrechen können. Der nice-Wert kann noch der Systemlast angepasst werden.


9.3.7 Eine Abbilddatei (Image) einer CD erzeugen

Manche CD-R oder auch kommerzielle CD's haben defekte Sektoren, die eine Kopie mit dd verhindern (die Windows 98 CD ist ein Beispiel). Das cdrecord Paket beinhaltet den readcd Befehl, der dann verwendet werden kann, um CD-Images zu erzeugen. Bei einer Daten-CD ist die Vorgehensweise wie folgt: Die CD wird gemountet, mount zeigt dann die Anzahl der Blöcke an (1 Block=1024 Bytes). Teilt man diese Zahl durch 2, so erhält man die Anzahl der CD-Blöcke, die 2048 Bytes groß sind. readcd liest also die CD z.B. mit folgenden Parametern:

     # readcd dev=Ziel,lun,scsibusnr # wähle Funktion 11

Hier sind alle 3 Kommandozeilenparameter meistens 0. Gewöhnlich ist die Anzahl der Sektoren, die von readcd zurückgegeben wird, zu hoch! Dann sollte man die Sektorzahl, die man aus dem mount Befehl gewonnen hat, verwenden.

Es sollte bemerkt werden, dass die Verwendung von dd einige Probleme bei CD-ROMs hat. Der erste Lauf von dd kann eine Fehlermeldung erzeugen und ein kürzeres Image mit unvollständigem Ende zur Folge haben. Der zweite Lauf von dd kann zu einem größeren Image mit am Ende angehangenen falschen Daten führen. Dies ist bei einigen Systemen möglich, wenn die Größe des Images nicht angegeben wird. Nur der zweite dd Aufruf mit der korrekten Größe ohne vorherigen CD-Auswurf nach der Fehlermeldung scheint diese Probleme zu umgehen. Wenn die von df bestimmte Größe des Images z.B. 46301184 Blöcke ist, muss das folgende Kommando zweimal angewandt werden, um ein korrektes Image zu erhalten (dies ist eine rein empirische Information):

     # dd if=/dev/cdrom of=cd.img bs=2048 count=$((46301184/2))

9.3.8 Debian-CD-Images

Um aktuelle Informationen zu Debian-CD's zu erhalten, sollte die Debian-CD Seite besucht werden.

Wenn man eine schnelle Internet-Verbindung hat, kann man auch eine Netz-Installation durchführen:

Wenn man keine schnelle Internet-Verbindung hat, kann man auch einfach ein Komplettpaket von einem der bekannten CD Distributoren kaufen.

Bandbreite sollte nie verschwendet werden, deswegen sollte man die Wahl des Installationsmechanismus ruhig besonnen überlegen.

Ein bemerkenswertes Projekt ist KNOPPIX \|[ndash ]\| Linux Live-Dateisystem auf CD. Diese CD bootet ein vollständiges Debian-System völlig ohne Installation.


9.3.9 Sicherheitskopien auf CD-R

Um grundlegende Konfigurations- und Datendateien auf CD zu sichern, kann das "backup" Skript backup verwendet werden. Siehe dazu auch Kopieren und Archivieren eines Unterverzeichnis, Abschnitt 8.3 und Differenzielles Backup und Datensynchronisation, Abschnitt 8.4.


9.3.10 Eine Musik-CD kopieren

Noch nicht ausreichend getestet ist folgendes:

     # apt-get install cdrecord cdparanoia
     # cdparanoia -s -B
     # cdrecord dev=0,0,0 speed=2 -v -dao -eject defpregap=1 -audio *.wav

oder

     # apt-get install cdrdao # disk at once
     # cdrdao read-cd --device /dev/cdrom --paranoia-mode 3 my_cd # CD auslesen
     # cdrdao write --device /dev/cdrom --speed 8 my_cd    # auf neue CD schreiben

cdrdao erzeugt eine echte Kopie (ohne Sprünge, etc.).


9.4 Das X-Window Paket

Die graphische Arbeitsumgebung X wird von Xfree86 bereitgestellt. Derzeit sind zwei Hauptvarianten bei Debian in Benutzung: Version 3.x und 4.x.

X-Server, Abschnitt 9.4.3
dies ist das Programm, das auf dem lokalen Monitor die X-Fenster und die Oberfläche zeichnet und die Tastatureingaben und Mausbewegungen auswertet.
X-Client Programme, Abschnitt 9.4.4
dies ist ein Programm, das (lokal auf einem eventuell fernen Rechner) per X-Window-Protokoll Applikationen laufen lässt.

Diese Definition kehrt den gewöhnlichen Gebrauch der Begriffe Client und Server um. Eine Erklärung hierfür liefert: X(7), das LDP XWindow-User-HOWTO und die Remote X Apps mini-HOWTO.

Es gibt verschiedene Wege, um X-basierte Programme, die lokal angezeigt werden sollen ("X-Server seitig"), auf einem fremden Rechner (einem "X-Client") zu starten.

Alle Netzzugänge zum X-System (außer SSH) erfordern TCP/IP Verbindungen. Siehe TCP/IP-Verbindungen mit X, Abschnitt 9.4.6.


9.4.1 X-System Pakete

Es gibt einige Metapakete, um die Installation von X zu vereinfachen.

x-window-system-core
Dieses Metapaket stellt die grundlegenden Komponenten des X-Window-Systems für eine Workstation bereit. Es beinhaltet Bibliotheken, einen X-Server (genauer das Paket xserver-xfree86), eine Reihe von Schriften und einige X-Client-Programme und Werkzeuge.
x-window-system
Dieses Metapaket beinhaltet alle X-Window Komponenten, so wie sie vom XFree86-Projekt bereitgestellt wurden. Hinzu kommen einige Hilfsprogramme. Es hängt von x-window-system-core, twm und xdm ab. Das bedeutet, diese Abhängigkeiten werden automatisch aufgelöst und diese Pakete müssen nicht manuell zur Installation ausgewählt werden.
xserver-common-v3
In diesem Paket befinden sich die Dateien und Programme für das alte XFree86 Version 3.X (X3)
xserver-*
Zusätzliche X3-Server Pakete zur Unterstützung von Hardware, die aus irgendwelchen Gründen nicht von XFree86 4.X unterstützt werden. Einige alte ATI mach64-Grafikkarten fallen darunter; einige andere Grafikkarten hängen sich mit der XFree Version in der Debian-Version woody auf, etc. (Alle Serverpakete findet man durch apt-cache search xserver-|less. Alle diese X3-Server hängen vom Paket xserver-common-v3 ab.)

In den meisten Fällen allerdings sollte das Paket x-window-system installiert werden. (Möchte man keinen grafischen Login, sollte das Paket xdm entfernt werden. Eine genaue Beschreibung dieses Vorganges findet sich im Kapitel Abschalten von X beim Booten, Abschnitt 8.1.4.)


9.4.2 Hardware-Erkennung für X

Um eine automatische Hardware-Erkennung durchzuführen, braucht man folgende Pakete, die vor der X-Installation vorhanden sein sollten:


9.4.3 X-Server

Siehe XFree86(1x) für weitere Informationen zum X-Server.

Der X-Server kann direkt von der Konsole gestartet werden:

     $ startx -- :<display> vtXX
     z.B.:
     $ startx -- :1 vt8 -bpp 16
     ... startet auf vt8 am Rechner  localhost:1 mit 16 bpp-Farbmodus.

Argumente nach dem -- werden an den X-Server weitergeleitet.

Wenn eine ~/.xserverrc Konfigurationsdatei verwendet wird, um das Starten des X-Servers genauer im Griff zu haben, muss darauf geachtet werden, dass der Server auch explizit mit exec gestartet wird, sonst werden Start und Beenden des Servers sehr langwierig:

     #!/bin/sh
     exec /usr/bin/X11/X -dpi 100 -nolisten tcp

9.4.3.1 Konfiguration des X4-Servers

Um den X4-Server zu konfigurieren kann dpkg benutzt werden.

     # dpkg-reconfigure --priority=low xserver-common
     # dpkg-reconfigure --priority=low xserver-xfree86

Es wird eine /etc/X11/XF86Config-4 Datei erzeugt, die mit dem Skript dexconf modifiziert werden kann.


9.4.3.2 Konfiguration des X3-Servers

Um den X3-Server zu konfigurieren kann auch dpkg benutzt werden.

     # dpkg-reconfigure --priority=low xserver-common-v3
     # dpkg-reconfigure --priority=low xserver-mach64

Die Konfigurationsdatei von X3 heißt /etc/X11/XF86Config und wird mit xf86config-v3 bearbeitet.


9.4.3.3 Manuelle Konfiguration von X4

Um Benutzer spezifische Einstellungen vorzunehmen, darf nicht der Text verändert werden, der von debconf erstellt wurde, also ist der Bereich zwischen dem BEGIN und dem END tabu.

     ### BEGIN DEBCONF SECTION
     [snip]
     ### END DEBCONF SECTION

Statt dessen können die Anpassungen vor dem BEGIN eingetragen werden, wie in dem folgenden Beispiel:

     Section "Device"
       Identifier        "Custom Device"
       Driver            "ati"
       Option            "NoAccel"
     EndSection
     
     Section "Screen"
       Identifier  "Custom Screen"
       Device      "Custom Device"
       Monitor     "Generic Monitor"
       DefaultDepth 24
       Subsection "Display"
         Depth       8
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       16
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
       Subsection "Display"
         Depth       24
         Modes       "1280x960" "1152x864" "1024x768" "800x600" "640x480"
       EndSubsection
     EndSection
     
     Section "ServerLayout"
         Identifier        "Custom"
         Screen            "Custom Screen"
         InputDevice       "Generic Keyboard" "CoreKeyboard"
         InputDevice       "Configured Mouse" "CorePointer"
     EndSection

9.4.4 X-Client Programme

Die meisten X-Programme können einfach von der Kommandozeile aus gestartet werden:

     client $ xterm -geometry 80x24+30+200 -fn 6x10 -display hostname:0 &

Die hier angeführten Parameter bedeuten:

Der Standard displayname für die X-Client-Programme kann mit der DISPLAY Umgebungsvariablen gesetzt werden. Bevor man nun ein X-Programm startet kann die Umgebungsvariable z.B. wie folgt gesetzt werden:

     $ export DISPLAY=:0
             # Die Standardeinstellung
     $ export DISPLAY=hostname.fulldomain.name:0.2
     $ export DISPLAY=localhost:0

Der Start kann in der Datei ~/.xinitrc konfiguriert werden. Zum Beispiel:

     xrdb -load $HOME/.Xresources
     xsetroot -solid gray &
     xclock -g 50x50-0+0 -bw 0 &
     xload -g 50x50-50+0 -bw 0 &
     xterm -g 80x24+0+0 &
     xterm -g 80x24+0-0 &
     twm

Wie in Angepasste X-Sitzung, Abschnitt 9.4.5.1 beschrieben, haben diese Einstellungen Vorrang vor denen von Xsession, welches bei startx verwendet wird. Diese Methode sollte nicht verwendet werden.


9.4.5 X-Session

Eine X-Session kann auf folgende Weisen gestartet werden:

Die Konsole erhält man mittels Abschalten von X beim Booten, Abschnitt 8.1.4.


9.4.5.1 Angepasste X-Sitzung

Im Endeffekt ist der Start durch /etc/X11/Xsession nur eine Kombination von /etc/X11/Xsession.d/50xfree86-common_determine-startup und /etc/X11/Xsession.d/99xfree86-common_start.

Die Ausführung von /etc/X11/Xsession wird beeinflusst durch /etc/X11/Xsession.options und ist im Wesentlichen bestimmt für die Ausführung des ersten Programms, das in folgenden Skripten durch 'exec' ausgeführt wird:

  1. ~/.xsession oder ~/.Xsession, wenn vorhanden.
  2. /usr/bin/x-session-manager, wenn vorhanden.
  3. /usr/bin/x-window-manager, wenn vorhanden.
  4. /usr/bin/x-terminal-emulator, wenn vorhanden.

Was nun genau gestartet wird, hängt von den Einstellungen des Debian-Alternativen-Systems ab, wie es in Alternative Befehle, Abschnitt 6.5.3 erklärt wird. Zum Beispiel:

     # update-alternatives --config x-session-manager
     ... oder
     # update-alternatives --config x-window-manager

Um einen anderen X-Window-Manager einzustellen als die Voreinstellung und dennoch KDE oder Gnome als Sitzungsmanager beizubehalten, muss die Datei /etc/X11/Xsession.d/50xfree86-common_determine-startup durch die im zweiten Fehlerreport (siehe http://bugs.debian.org/168347) ersetzt werden. (Ich hoffe, dass dies bald mit aufgeführt wird.) Dann kann die Datei /etc/X11/Xsession.options wie folgt geändert werden, um den X-Sitzungsmanager zu umgehen:

     # /etc/X11/Xsession.options
     #
     # configuration options for /etc/X11/Xsession
     # See Xsession.options(5) for an explanation of the available options.
     # Default enabled
     allow-failsafe
     allow-user-resources
     allow-user-xsession
     use-ssh-agent
     # Default disabled (enable them by uncommenting)
     do-not-use-x-session-manager
     #do-not-use-x-window-manager

Ohne die gezeigten Veränderungen sind die Pakete gnome-session und kdebase dafür zuständig, einen X-Sitzungsmanager bereitzustellen. Das Entfernen dieser beiden Pakete ermöglicht die Einstellung eines beliebigen X-Window-Managers.

Wenn die Datei /etc/X11/Xsession.options eine Zeile wie allow-user-xsession (ohne führende Zeichen) enthält, kann der Benutzer die Datei ~/.xsession oder ~/.Xsession für eine beliebige benutzerseitige Erweiterung der Datei /etc/X11/Xsession verwendet werden.

Der letzte Befehl in ~/.xsession sollte die Form exec some-window/session-manager haben, um den Window-Manager zu starten.

Ein gutes Beispiel für eine ~/.xsession Datei findet sich hier: /usr/share/doc/xfree86-common/examples/xsession.gz.

Ich benutze dies, um den Window-Manager, Bildschirmzugang und die Sprache für jeden Benutzer einzeln zu setzen. Siehe Start eines gewählten X-Sitzungs-/Window-Managers, Abschnitt 9.4.5.2, Administratorrechte unter X, Abschnitt 9.4.11 und Beispiel für ein zweisprachiges System (japanisches EUC und ISO-8859-1), Abschnitt 9.7.8.

Benutzerspezifische X-Einstellungen können in ~/.Xresources gespeichert werden, wohingegen sich systemweite Einstellungen in /etc/X11/Xresources/* befinden. Siehe xrdb(1x).

Benutzerspezifische Tastaturbelegungen und Maustastenbelegungen können in ~/.xmodmaprc definiert werden. Siehe xmodmap(1x).


9.4.5.2 Start eines gewählten X-Sitzungs-/Window-Managers

Eine benutzergewählte Sitzungs-/Window-Manager-Konfiguration kann also gemäß Angepasste X-Sitzung, Abschnitt 9.4.5.1 in ~/.xsession durch das Ändern der letzten Zeile eingestellt werden. (Ich mag blackbox wegen dessen Geschwindigkeit und Einfachheit):

Siehe X-Window-Manager.


9.4.5.3 KDE/GNOME-Umgebung konfigurieren

Um eine komplette KDE/Gnome-Umgebung einzurichten empfiehlt sich die Installation der folgenden Metapakete:

Es sollte ein Installationswerkzeug gewählt werden, das die Installationsempfehlungen (recommends) des Paketes auflösen kann; dies sind u.a. dselect und aptitude. Sie sind menügesteuert und können auch durch die automatische Abhängigkeitserfassung die Installation im Vergleich zu apt-get beschleunigen und erleichtern.

Wer nur ein Konsolen-Login benötigt, sollte die Login-Manager kdm, gdm, wdm oder auch xdm nicht installieren (d.h. wieder markieren zur nicht-Installation), die bei einer Installation von X schnell automatisch mit ausgewählt werden. Erklärung hierzu in Abschalten von X beim Booten, Abschnitt 8.1.4.

Wenn Gnome anstelle von KDE als Sitzungsmanager gewünscht wird, muss dies der x-session-manager, wie in Alternative Befehle, Abschnitt 6.5.3 beschrieben, geändert werden.


9.4.6 TCP/IP-Verbindungen mit X

Da X-TCP/IP-Verbindungen nicht verschlüsselt werden, besteht bei Fernverbindungen die Gefahr des Abgehörtwerdens. Aus diesem Grund ist in Debian die Standardeinstellung so gewählt, dass TCP/IP-Socket deaktiviert ist. Eine TCP/IP-Verbindung auch zur Übertragung von graphischen Elementen kann aber sicher mit ssh erzeugt werden. Siehe dazu X-Fernverbindungen mit ssh, Abschnitt 9.4.8.

Die Methode, die hier im folgenden beschrieben wird, ist also nur in Umgebungen zu empfehlen, die als sicher charakterisiert werden können, wie z.B. ein hinter einer gut gewarteten Firewall agierendes Intranet oder ein kleines Heimnetzwerk. Mit dem folgenden Befehl kann die momentane X-Server-Einstellung bzgl. TCP/IP herausgefunden werden:

     # find /etc/X11 -type f -print0 | xargs -0 grep nolisten
     /etc/X11/xinit/xserverrc:exec /usr/bin/X11/X -dpi 100 -nolisten tcp

Entfernen von -nolisten stellt das Lauschen auf dem X-Server wieder ein.


9.4.7 X-Fernverbindungen mit xhost

xhost erlaubt Zugriff auf den X-Server basierend auf dem Namen des Rechners. Dies ist sehr unsicher. Das folgende Beispiel unterdrückt den Test der Rechnernamen und erlaubt so Verbindungen von jedem Rechner aus, falls TCP/IP-Socket ebenfalls aktiviert sind. (Siehe auch TCP/IP-Verbindungen mit X, Abschnitt 9.4.6):

     $ xhost +

Das Testen der Rechnernamen kann wieder aktiviert werden mit:

     $ xhost -

xhost kann keine Unterscheidung auf Benutzerebene vornehmen. Desweiteren können Rechnernamen natürlich gefälscht werden.

Diese Methode sollte nicht verwendet werden, wenn man sich in einer ungesicherten Netzumgebung befindet – dies betrifft auch Wählverbindungen mittels PPP. Siehe xhost(1x).


9.4.8 X-Fernverbindungen mit ssh

Die Verwendung von ssh ermöglicht die sichere Übertragung von Daten von einem lokalen X-Server zu einem Applikations-Server.

Diese Methode erlaubt es, die graphische Ausgabe eines X-Clients anzuzeigen, als liefe er über den lokalen Unix-Domain-Socket.


9.4.9 xterm

Alles was mit xterm zu tun hat, findet man hier: http://dickey.his.com/xterm/xterm.faq.html.


9.4.10 X-Ressourcen Datenbank

Viele ältere X-Programme, wie z.B. xterm, verwenden die X-Ressourcen, um ihr Erscheinungsbild zu konfigurieren. Die Datei ~/.Xresources wird verwendet um derartige Daten benutzerabhängig zu speichern. Die Datei wird automatisch während des Logins an die systemweiten Einstellungen angehängt.

Es folgen einige nützliche Einstellungen, die man in ~/.Xresources vornehmen kann.

     ! Die Schrift in den Terminals vergrößern:
     XTerm*font: 9x15
     
     ! Scrollbalken anzeigen
     XTerm*scrollBar: true
     
     ! Puffergröße einstellen
     XTerm*saveLines: 1000

Diese Einstellungen können auch sofort aktiviert werden durch:

     xrdb -merge ~/.Xresources

9.4.11 Administratorrechte unter X

Wenn ein graphisches Programm mit root-Rechten gestartet werden muss, müssen einige Vorkehrungen getroffen werden. Keinesfalls sollte man als Superuser einen X-Server starten, wegen der beträchtlichen Sicherheitsrisiken.

Man startet den X-Server als gewöhnlicher Benutzer und öffnet ein xterm Fenster. Dann folgen:

     $ XAUTHORITY=$HOME/.Xauthority
     $ export XAUTHORITY
     $ su root
     Password:*****
     # printtool &

Wenn man diesen Trick verwendet und sich mit su als ein Nicht-root-Benutzer anmeldet, muss darauf geachtet werden, dass die Datei ~/.Xauthority für diesen speziellen Benutzer Gruppen-lesbar ist.

Um diesen Vorgang zu automatisieren, kann der betreffende Benutzer eine Datei ~/.xsession anlegen, die folgende Zeilen enthält.

     # So funktioniert X auch wenn su benutzt wurde.
     if [ -z "$XAUTHORITY" ]; then
             XAUTHORITY=$HOME/.Xauthority
             export XAUTHORITY
     fi
     unset XSTARTUP
     # Wenn ein besonderer Window/Sitzungsmanager gewünscht wird
     # kann der hier eingestellt werden.
     #XSTARTUP=/usr/bin/blackbox
     # This start x-window/session-manager program
     if [ -z "$XSTARTUP" ]; then
       if [ -x /usr/bin/x-session-manager ]; then
         XSTARTUP=x-session-manager
       elif [ -x /usr/bin/x-window-manager ]; then
         XSTARTUP=x-window-manager
       elif [ -x /usr/bin/x-terminal-emulator ]; then
         XSTARTUP=x-terminal-emulator
       fi
     fi
     # Ausführung des Window/Sitzungsmanagers.
     exec $XSTARTUP

Nun kann su (nicht su -) in einem xterm Fenster vom Benutzer gestartet werden. Auch graphische Programme, die von der Shell mit Superuser-Rechten gestartet wurden, können nun angezeigt werden. Dieser Trick funktioniert nur solange, wie die übliche /etc/X11/Xsession ausgeführt wird. Wenn der Benutzer eine eigene Datei ~/.xinit oder ~/.xsession Datei anlegt, muss die oben erwähnte Umgebungsvariable XAUTHORITY an diese Skripte angepasst werden.

Alternativ, kann das Paket sudo verwendet werden, um diese Sequenz abzuarbeiten.

     $ sudo xterm
     ... oder
     $ sudo -H -s

Hier muss die /root/.bashrc folgendes enthalten:

     if [ $SUDO_USER ]; then
         sudo -H -u $SUDO_USER xauth extract - $DISPLAY | xauth merge -
     fi

Dies funktioniert auch, wenn das Home-Verzeichnis des Benutzers mit NFS gemountet wird, da root die Datei .Xauthority nicht lesen muss.

There are also several specialized packages for this purpose: kdesu, gksu, gksudo, gnome-sudo, and xsu. Some other methods can be used to achieve similar results: creating a symlink from /root/.Xauthority to the user's corresponding one; use of the script sux; or putting "xauth merge ~USER_RUNNING_X/.Xauthority" in the root initialization script.

See more on the debian-devel mailing list.


9.4.12 TrueType-Schriften unter X

Der Standard-X-Font-Server xfs in Free86-4 kommt problemlos mit TrueType Schriften zurecht. Wenn man XFree86-3 verwendet, braucht man zusätzlich den Font-Server xfs-xtt.

Wenn man selbst Programme kompiliert, muss man darauf achten, diese gegen libXft oder libfreetype zu linken. Wenn man nur die Pakete aus der Distribution verwendet, gibt es weiter nichts zu beachten.

Zu den neuen Schriften müssen die Dateien fonts.{scale,dir} erzeugt werden, da diese nötige Verwaltungsinformationen für den X-Server bereitstellen.

Da freie Schriften oft eingeschränkt sind, kann das Installieren von Shareware- oder kommerziellen TrueType-Schriften eine Alternative sein. Um diesen Schritt zu vereinfachen, gibt es einige Pakete:

Man muss schon eine gute Auswahl an Schriften haben, um das besonders frei gestaltete System mit kommerziellen Schriften zu 'verunreinigen'.


9.4.13 Web-Browser (graphische)

Es gibt eine Handvoll graphischer Web-Browser in Debian

Die Version des mozilla muss zu der galeon Version passen, da zweiteres die Gecko-HTML-Rendering-Engine des ersteren verwendet.

Plugins für die Browser wie mozilla und galeon können installiert werden, indem man einfach die "*.so" in das entsprechende Plugin-Verzeichnis kopiert (dies findet man z.B. mit locate libnullplugin).

Erhältliche Plugins:


9.5 SSH

SSH (Secure SHell) ist ein sicheres Werkzeug, um Verbindungen über das Internet herzustellen. Eine freie Version von SSH namens OpenSSH ist als openssh Paket in Debian enthalten.


9.5.1 Grundlagen

Zunächst müssen der OpenSSH-Server und -Client installiert werden.

     # apt-get update && apt-get install ssh

In /etc/apt/sources.list muss ein non-US-Eintrag vorhanden sein und es darf keine Datei /etc/ssh/sshd_not_to_be_run bestehen.

SSH beherrscht zwei Arten von Authentisierungsprotokollen:

Die unterschiedlichen unterstützten Protokolle müssen beachtet werden, wenn man von oder nach Woody migriert, da man sonst vielleicht keine SSH-Verbindungen mehr zu den gewohnten Rechnern aufbauen kann.

Siehe dazu auch /usr/share/doc/ssh/README.Debian.gz, ssh(1), sshd(8), ssh-agent(1) und ssh-keygen(1) für Details.

Die wichtigsten Konfigurationsdateien für SSH sind:

Mit folgendem Kommando kann man eine ssh-Verbindung aufbauen:

     $ ssh username@hostname.domain.ext
     $ ssh -1 username@hostname.domain.ext # SSH version 1 erzwungen

ssh ersetzt so auf sichere und praktische Weise telnet.


9.5.2 Port-Umleitung – für das Tunneln mit SMTP/POP3

Um eine Weiterleitung ('pipe') einzurichten, die den Port 25 eines entfernten Servers (remote-server) auf den Port 4025 lokal und den Port 110 des entfernten Servers auf den Port 4110 auf dem lokalen Rechner einzurichten, kann ssh folgendermaßen benutzt werden:

     # ssh -q -L 4025:remote-server:25 4110:remote-server:110 \
                benutzername@remote-server

Auf diese Weise können sichere SMTP/POP3-Übertragungen realisiert werden. Man setze die Option AllowTcpForwarding auf yes in der Datei /etc/ssh/sshd_config auf dem entfernten Rechner.


9.5.3 Mit weniger Passwörter agieren

Man kann die sich immer wiederholende Eingabe von Passwörtern umgehen, wenn man auf das RSAAuthentication (SSH1 Protokoll)-Verfahren, bzw. PubkeyAuthentication (SSH2 Protokoll)-Verfahren zurückgreift.

Auf dem entfernten System wird dazu in der Konfigurationsdatei /etc/ssh/sshd_config "RSAAuthentication yes" bzw. "PubkeyAuthentication yes" gesetzt.

Dann werden Schlüssel lokal erzeugt und der dazugehörige öffentliche Schlüssel auf dem entfernten System hinterlegt.

     $ ssh-keygen          # RSAAuthentication: RSA1 Schlüssel für SSH1
     $ cat .ssh/identity.pub | ssh benutzer1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t rsa   # PubkeyAuthentication: RSA Schlüssel für SSH2
     $ cat .ssh/id_rsa.pub | ssh benutzer1@remote \
             "cat - >>.ssh/authorized_keys"
     ...
     $ ssh-keygen -t dsa   # PubkeyAuthentication: DSA Schlüssel für SSH2
     $ cat .ssh/id_dsa.pub | ssh benutzer1@remote \
             "cat - >>.ssh/authorized_keys"

Später kann das Passwort mit "ssh-keygen -p" neu gesetzt werden. Bei Problemen können vermehrt Statusinformationen ausgegeben werden mit: "ssh -v".

In der Datei authorized_keys können zu einem beliebigen Rechner Optionen hinzugefügt werden, um dort z.B. Kommandos auszuführen. Siehe sshd(8) für weitere Details.

SSH2 verfügt über HostbasedAuthentication. Damit dies funktioniert, muss auf dem Server in der Datei /etc/ssh/sshd_config HostbasedAuthentication auf yes gesetzt werden, desgleichen in /etc/ssh/ssh_config oder $HOME/.ssh/config auf dem Client.


9.5.4 Weitere SSH-Client-Programme

Es gibt einige freie SSH-Client-Programme auf nicht-Unix-artigen Plattformen.

Windows
puTTY (GPL)
Windows (cygwin)
SSH in cygwin (GPL)
Macintosh Classic
macSSH (GPL) [Mac OS X beinhaltet OpenSSH; es wird gestartet mit ssh im Terminal]

Siehe auch SourceForge.net, site documentation, "6. CVS Instructions".


9.5.5 SSH-Agent

Der öffentliche Schlüssel kann einfach in der Datei ~/.ssh/authorized_keys hinterlegt werden, worauf er von ssh anerkannt wird.

     $ ssh-agent
     $ # die Ausgabe in der Shell einfügen
     $ ssh-add .ssh/identity
     $ # oder ssh-add .ssh/id_dsa oder wie auch immer der private Schlüssel heißt
     $ scp remote.host.with.public.key

Weitere Informationen liefern ssh-agent(1) und ssh-add(1).


9.5.6 Problemlösungen

Wenn Probleme bei der Benutzung von ssh auftreten, sollte man zuerst einmal die Berechtigungen der Konfigurationsdateien mittels der ssh Option -v prüfen.

Wenn man root-Rechte hat, kann mit -P die Benutzung der Ports 1–1023 unterbunden werden, welche bei Firewalls Schwierigkeiten bereiten.

Wenn ssh-Verbindungen, die ursprünglich funktionierten plötzlich nicht gestartet werden können, hat der Systemadministrator wahrscheinlich die Datei host_key geändert. Nachdem man sich vergewissert hat, dass dies der Fall ist und es sich nicht um den Versuch handelt, eine Verbindung zu einem gehackten Rechner zu etablieren, kann einfach die zu dem Remote-Rechner gehörige host_key Zeile in der Datei $HOME/.ssh/known_hosts gelöscht werden. Bei der nächsten Verbindungsaufnahme wird die Zeile neu generiert.


9.6 E-Mail Programme

Die E-Mail Konfiguration eines Systems zerfällt in drei Kategorien:


9.6.1 E-Mail Transport/Transfer Agenten (Exim)

Literatur:

Wenn exim als MTA eingesetzt wird, müssen die folgenden Dateien angepasst werden:

     /etc/exim/exim.conf     "eximconfig" bearbeitet diese Datei
     /etc/inetd.conf         durch Auskommentieren von smtp läuft exim als Daemon
     /etc/email-addresses    Add spoofed source address lists
     Die Filter können mittels exim -brw, -bf, -bF, -bV, ...  getestet werden.

9.6.1.1 Ein Fangnetz für nicht existierende Email-Adressen (Exim)

In der Datei /etc/exim/exim.conf (Woody oder später), kann am Ende des Abschnittes DIRECTORS (gleich nach localuser: director) ein Ausdruck eingefügt werden, der auf alle Email-Adressen passt, die vorher nicht aufgelöst werden konnten (nach Miquel van Smoorenburg):

     catchall:
       driver = smartuser
         new_address = webmaster@mydomain.com

Wer eine komplexere Anordnung von virtuellen Domänen angelegt hat, wird an das Ende der Datei /etc/exim/exim.conf einen Eintrag wie folgt vornehmen: (von mir, nicht sehr ausführlich getestet):

     *@yourdomain.com ${lookup{$1}lsearch*{/etc/email-addresses} \
             {$value}fail} T

Dazu benötigt man einen "*" Eintrag in der Datei /etc/email-addresses.


9.6.1.2 Selektive Adressen-Umschreibung für ausgehende Email (Exim)

Mit exim kann auch die From: Zeile der ausgehenden Emails manipuliert werden. Auch dies kann in der exim Konfigurationsdatei /etc/exim/exim.conf erledigt werden:

     *@host1.something.dyndns.org \
       "${if eq {${lookup{$1}lsearch{/etc/passwd}{1}{0}}} {1}  \
        {$0}{$1@somethig.dyndns.org}}"  frFs

Dies schreibt alle Adressen um, die auf den Ausdruck *@host1.something.dyndns.org passen.

  1. Zuerst wird in /etc/password nachgesehen, ob der Ausdruck $1 auf einen lokalen Benutzer zutrifft.
  1. Wenn dies der Fall ist, wird daraus das, was es vorher schon war ($0).
  1. Wenn es den Benutzer lokal nicht gibt, wird der Domänenanteil ersetzt.

9.6.2 Mail-Hilfsprogramme (Fetchmail)

fetchmail wird im Daemon-Modus gestartet und ist für die Abholung von Email von POP3-Accounts von einem ISP zuständig, um die Mails dann in das lokale Email-System einzufügen. Die Konfiguration geschieht über die Dateien:

     /etc/init.d/fetchmail
     /etc/rc?.d/???fetchmail startet update-rc.d fetchmail Default Priorität 30
     /etc/fetchmailrc        Konfigurationsdatei (chown 600, Besitzer ist fetchmail)

In der alten Debian-Version Potato war das Starten von fetchmail aus init.d heraus noch schwierig. Dies ist mit Woody behoben. Beispiele sind außerdem zu finden in den Dateien /etc/init.d/fetchmail und /etc/fetchmailrc unter der Adresse example scripts.

Wenn im Email-Kopf ^M Zeichen vorkommen, sollte "stripcr" in den Optionen der Datei $HOME/.fetchmailrc hinzugefügt werden:

     options fetchall no keep stripcr

9.6.3 Mail-Hilfsprogramme (Procmail)

procmail ist ein Programm zur lokalen Mail-Zustellung und kann auch als Filter verwendet werden. Die Datei $HOME/.procmailrc wird für jeden Benutzer benötigt. Beispiel: _procmailrc


9.6.4 Email-Programme (Mail user agent) am Beispiel Mutt

Ein beliebtes Email-Programm für die Konsole ist mutt in Kombination mit vim. Einstellungen liegen in ~/.muttrc; z.B.

     # diese Einstellungen modifizieren
     # das Verhalten des Editors.
     set editor="vim -c 'set tw=72 et ft=mail'"
     #
     # header weeding taken from the manual (Sven's Draconian header weeding)
     #
     ignore *
     unignore from: date subject to cc
     unignore user-agent x-mailer
     hdr_order from subject to cc date user-agent x-mailer
     auto_view application/msword
     ...

Um HTML-Email oder MS-Word-Dokumente als Text anzeigen zu können, muss antiword installiert sein und folgende Zeilen an entweder /etc/mailcap (global) oder $HOME/.mailcap (per User) angehängt werden.

     text/html; lynx -force_html %s; needsterminal;
     application/msword; /usr/bin/antiword '%s'; copiousoutput;
     description="Microsoft Word Text"; nametemplate=%s.doc

9.7 Lokalisation und Sprachen

Debian ist eine internationale Distribution, die eine wachsende Anzahl an Sprachen und regionaler Besonderheiten berücksichtigt. Die folgenden Abschnitte zeigen, in welcher Form Debian dies bewerkstelligt und an welchen Stellen eine Lokalisierung eingestellt werden kann. Dies betrifft in erster Linie Ein- und Ausgaben in der jeweiligen Muttersprache, Daten, numerische und finanzielle Formate, die von System zu System unterschiedlich sein können.


9.7.1 Grundlagen

Es folgen die wichtigsten Anpassungen für die Lokalisierung.


9.7.1.1 Tastatur

Debian stellt Tastaturbelegungen für nahezu zwei Dutzend Tastaturvarianten bereit. In Woody, können diese eingestellt werden mit:


9.7.1.2 Daten

Die große Mehrheit an Debian-Software unterstützt den Umgang mit nicht-US-ASCII-Zeichen durch die LC_CTYPE Umgebungsvariable, welche den locale-Mechanismus der glibc konfiguriert.


9.7.1.3 Anzeige

X-Windows kann jede Zeichen-Kodierung anzeigen, inklusive UTF-8 und unterstützt viele Schrifttechnologien. Die Unterstützung reicht über 8-bit-Schriften über 16-bit-Schriften für Chinesisch, Japanisch oder Koreanisch. Multi-byte-Zeichen werden über den XIM-Mechanismus unterstützt. Siehe Beispiel für ein zweisprachiges System (japanisches EUC und ISO-8859-1), Abschnitt 9.7.8.

Japanischer EUC-Kode kann auch (mit dem Paket kon2) auf der (S)VGA-Konsole angezeigt werden. Eine neue Möglichkeit, welche die FB-Konsole verwendet ist jfbterm. In diesen Umgebungen muss allerdings die Applikation selbst die Unterstützung dieser Sprachen mitbringen. egg ist ein Paket für Emacs und jvim ein japanisiertes Vim.


9.7.1.4 Übersetzungen

Viele Text-Nachrichten und Dokumente für das Debian-System liegen übersetzt vor, z.B. Fehlermeldungen, Standardausgaben, Menüs und Handbuchseiten. Derzeit gibt es Projekte zur Übersetzung in: Deutsch, Spanisch, Finnisch, Französisch, Ungarisch, Italienisch, Japanisch, Koreanisch und Polnisch. Hierzu muss natürlich das entsprechende Paket in der Form manpages-LANG installiert sein. (LANG ist hier ein eindeutiger Sprachkennzeichner gemäß den zweibuchstabigen ISO-Länderkodes.) Um herauszufinden, welche Pakete zur Auswahl stehen, kann apt-cache search manpages-|less verwendet werden.

Um eine NLS Handbuchseite anzuzeigen, muss die Umgebungsvariable LC_MESSAGES gesetzt sein. Um z.B. deutsche Handbuchseiten zu sehen, muss LC_MESSAGES=de gesetzt sein. Das man Programm wird die Handbuchseite dann in /usr/share/man/de/ suchen.


9.7.2 Lokalisierung mit locale

Debian unterstützt die locale Technologie. Locale ist ein System zur Ausgabe von Zeichen, Daten und Zeiten und Währungseinheiten entsprechend lokaler Gegebenheiten. Es verwendet Umgebungsvariablen, um die Region festzustellen. Wenn z.B. englische und deutsche locale Pakete installiert sind, werden die Fehlermeldungen mehrsprachig.

     $ LANG="en_US" cat foo
     cat: foo: No such file or directory
     $ LANG="de_DE" cat foo
     cat: foo: Datei oder Verzeichnis nicht gefunden

Diese Funktionalität wird von der glibc bereitgestellt. (localeconf erlaubt eine komfortable Konfiguration der locale-Einstellungen.) Siehe auch locale(7).


9.7.3 Aktivierung der Lokalisierung

Debian hat nicht alle verschiedenen Sprachen einkompiliert. Die Datei /usr/lib/locale zeigt, welche Sprachen sofort verfügbar sind (neben der Standardeinstellung "C"). Wenn die benötigte Sprache fehlt, gibt es zwei Möglichkeiten:


9.7.4 Eine Locale aktivieren

Die folgenden Umgebungsvariablen werden ausgewertet, um die lokalen Formate zu berücksichtigen.

  1. LANGUAGE: Diese Umgebungsvariable enthält eine durch Doppelpunkte separierte Liste von Sprachen (mit absteigender Priorität). Sie wird nur verwendet, wenn die POSIX-locale nicht "C" ist [in Woody; in Potato hat LANGUAGE immer Priorität vor POSIX]. (GNU-Erweiterung)
  1. LC_ALL: Wenn dieser Eintrag nicht leer ist, wird er für alle Kategorien verwendet. (POSIX.1) Voreinstellung ist "" (null).
  1. LC_*: Wenn dieser Eintrag nicht leer ist, wird er für die entsprechende Kategorie gesetzt. (POSIX.1). Voreinstellung "C".

    Mögliche LC_*-Variablen sind:

  1. LANG: Wenn diese nicht leer ist und LC_ALL nicht definiert ist, wird dieser Wert für alle bis dahin nicht definierten Variablen gesetzt. (POSIX.1) Voreinstellung "C".

Einige Programme ignorieren allerdings diese Variablen. In der Regel haben diese Programme ein eigenes Sprachen-Management (z.B. Netscape Navigator 4).

Das locale-Programm kann die aktiven locale-Einstellungen sowie andere installierte locale anzeigen. Siehe locale(1). (NOTIZ: locale -a zeigt alle locales an, die das System kennt; das bedeutet nicht, dass sie verwendbar sind (weil unübersetzt). Aktivierung der Lokalisierung, Abschnitt 9.7.3.)


9.7.5 ISO 8601 Datum-Format-locale

Die Unterstützung für die Darstellung des internationalen Datums wird durch die locale en_DKEnglisch in Dänemark – in Form des ISO 8601-Standards (yyyy-mm-dd) geleistet. Dies scheint aber nur für die Konsole mit ls zu funktionieren.


9.7.6 Beispiel für die USA (ISO-8859-1)

Zu der Datei ~/.bash_profile folgendes hinzufügen:

     LC_CTYPE=en_US.ISO-8859-1
     export LC_CTYPE

9.7.7 Beispiel für Frankreich mit Euro-Symbol (ISO-8859-15)

Zu der Datei ~/.bash_profile folgendes hinzufügen:

     LANG=fr_FR@euro
     export LANG
     LC_CTYPE=fr_FR@euro
     export LC_CTYPE

Die Tastatur kann auf das deutsche "QWERTZ" umgestellt werden wie beschrieben in Tastatur, Abschnitt 9.7.1.1. Die deutschen Handbuchseiten befinden sich im Paket manpages-de. Die rechte Alt-Taste heißt in Europa Alt-Gr. Durch Drücken dieser Taste können diverse Sonderzeichen erreicht werden. So erzeugt z.B. AltGr-E das Euro-Symbol.

Die meisten westeuropäischen Sprachen können wie beschrieben eingestellt werden.

Siehe Debian Euro HOWTO für die Konfiguration des Euro-Symbols. Das Paket XXX für weitere Details zur Nutzung deutscher Anpassungen.


9.7.8 Beispiel für ein zweisprachiges System (japanisches EUC und ISO-8859-1)

In diesem Beispiel wird ein System aufgesetzt, das japanisch und englisch unterstützt. Die Umgebungsvariable für die japanische Sprache heißt in diesem Fall ja_JP.eucJP (japanisches EUC für traditionelle japanische Unix Umgebung). Die Unterstützung betrifft X mit gleichzeitig englischen Ausgaben und Datumsangaben nach ISO-Standard. Hinzu kommt Englisch als primäre Sprache der Text-Konsole mit der Umgebungseinstellung en_US.ISO-8859-1 (ASCII mit zusätzlichen Akzenten).

Sieh auch die SuSE Seiten für CJK.


9.7.9 Beispiel für UTF-8 in X

In Zukunft wird Unicode alle Schriftprobleme lösen. Siehe Das Unicode HOWTO.


9.7.10 Beispiel für UTF-8 in der FB-Konsole

Die UTF-8 Unterstützung in der Konsole wird vom Paket bterm bereitgestellt. Der debian-installer verwendet dies.


9.7.11 Über locale hinaus

Wenn eine größere Anpassung an eine Sprache gewünscht wird, sollte man zunächst nachsehen, ob tasksel oder aptitude bereits eine Option für die betreffende Sprache hat. So kann eine Paketsammlung geladen werden, die bereits Dateien für die nationale Anpassung enthält, was auch für mehrsprachige Systeme Sinn macht. Wenn bei einem System mit feinjustierter Sprachunterstützung Paketkonflikte auftreten, sollte zunächst die Ursache genau festgestellt werden, damit die Spracheinstellungen nicht verloren gehen. Eventuell muss update-alternative verwendet werden, um den vorherigen Status wieder her zu stellen.

Die meisten größeren Programme nutzen bereits die glibc 2.2 und sind größtenteils internationalisiert. Aus diesem Grund sind lokalisierte Versionen eines speziellen Programms wie z.B. VIM überflüssig. So wird die Funktionalität von jvim für VIM von vim ab Version 6.0 in X automatisch bereitgestellt. Tatsächlich ist die Unterstützung noch etwas holprig. Da jvim die japanische Unterstützung eingebaut hat, sollte man sich das Programm zumindest doch einmal ansehen.

Es kann sein, dass Programme über die locale Konfiguration hinaus angepasst werden müssen. Das language-env Paket und dessen Kommando set-language-env erleichtern diesen Schritt.

Siehe auch die Internationalisierungsdokumente unter Einführung in i18n. Es richtet sich an Entwickler und Systemadministratoren.


[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ weiter ]

Debian-Referenz

CVS, Mon 3. Apr 2005, 22:57:58 UTC

Osamu Aoki osamu@debian.org
Übersetzer: Jens Seidel tux-master@web.de
Autoren, Abschnitt A.1