Channel Header
2427623

Know-How: Konfigurationsdateien unter Linux

24.05.2019 | 10:08 Uhr | Hermann Apfelböck

Linux-Software wird überwiegend durch Dateien im Textformat konfiguriert, aber auch das dconf-Konzept trägt seinen Teil bei. Dieser Beitrag benennt wichtige Konfigurationsorte und macht Vorschläge für mehr Durchblick und Zugriffskomfort.

In puncto System- und Softwarekonfiguration herrscht unter Linux mehr oder weniger Wildwuchs. Die jeweilige Software bestimmt, wie und wo sie ihre Direktiven ablegen und einlesen will. Klassische Linux-Dienste wie Samba, FTP, Cron, SSH vertrauen grundsätzlich auf konventionelle Textdateien, grafische Programme und Desktops nutzen zum Teil auch die dconf-Zentrale. Wer den Durchblick gewinnen will, sollte Pfade und Namen wichtiger Konfigurationsdateien im Blick haben, eigene Eingriffe sauber dokumentieren und sich den Zugriff so einfach und komfortabel wie einrichten.

Die typischen Pfade der Konfiguration

Konfigurationsdateien mit globaler Geltung liegen im Pfad „/etc“ und ihre Bearbeitung benötigt folglich root-Recht. Je nach Umfang erscheint die Datei direkt unter „/etc“ als Einzeldatei wie etwa „/etc/crontab“ oder aber in einem Unterverzeichnis wie „/etc/ samba/smb.conf“, wenn die betreffende Software mehrere Konfigurationsdateien benötigt. Für benutzerspezifische Einstellungen gibt es den Sammelordner „/home/ [user]/.config“, jedoch erwarten manche Programme auch direkt unter „/home/ [user]“ ihre Anweisungsdatei, so etwa die Bash-Shell von der Datei „/home/[user]/. bashrc“. Namen und Extensionen folgen keinen strengen Regeln: Manche Konfigurationsdateien tragen den Namen der betreffenden Software wie etwa „nginx.conf“ oder „vsftpd.conf“, andere heißen schlicht „ini“ oder „config“, und die Zuordnung zur Software erschließt sich durch einen Ordner wie „/mc/“ oder „/radicale/“, in dem sie liegen. Selbstverständlich basieren auch solche Programme auf Konfigurationsdateien, die kein manuelles Editieren dieser Dateien benötigen. Populäre Software wie Firefox, Chrome, Libre Office, Thunderbird oder VLC ebenso wie Systemkomponenten wie Desktop, Dateimanager, Autostart oder Editoren lassen sich bequem an der grafischen Oberfläche einrichten. Die getroffenen Einstellungen legen sie benutzerbezogen als Dateien unter „/home/[user]/“ ab und lesen sie von dort wieder ein. Manuelles Lesen oder Bearbeiten ist weder vorgesehen noch erwünscht, wie zum Teil ausdrücklich vermerkt: „Don‘t edit!“ oder „The parser is very primitive, and not human-friendly“.

Trotzdem gibt es Situationen, in denen es hilfreich ist, die betreffenden Konfigurationsdateien und Ordner aufzusuchen: Wenn eine Software nicht mehr startet oder unbenutzbar verkonfiguriert wurde, können Sie unter „/home/[user]/“ alle benutzerbezogenen Einstellungen löschen.

Siehe auch: Kleines ABC der Linux-Systemwartung

So wird etwa ein Chrome-Browser nach vollständigem Löschen des Ordners „/home/[user]/.config/google-chrome“ wieder so starten, als wäre er eben neu installiert. Nicht bei jeder Software ist die Benutzerkonfiguration so eindeutig in einem Ordner oder einer Datei zu lokalisieren: Einstellungen für den KDE-Desktop sind nicht nur unter „/home[user]/.kde“ zu finden, sondern auch unter „/home[user]/.config/menus“ und „/home[user]/.local/ share/“. Auch die Einstellungen des Cinnamon-Desktops (Linux Mint) verteilen sich auf die Ordner „/home[user]/.cinnamon“, „/home[user]/.config/cinnamon-session“ sowie „/home/[user]/.config/dconf“, wobei der wichtigste dconf-Teil nicht lesbar ist (binär). Da die dconf-Datei auch Anweisungen für andere Software enthalten kann, ist deren komplettes Löschen nicht ratsam. Dazu unten gleich mehr …

Achtung vor Tabula-rasa-Aktionen: Generell setzt das Löschen der Benutzerkonfiguration sämtliche Optionen der Software auf den Standard zurück. Ein sorgfältig eingestellter Browser, ein Linux-Desktop oder ein Libre Office muss dann komplett neu konfiguriert werden. Allergrößte Vorsicht ist angebracht, wenn der Konfigurationsordner auch Benutzerdaten enthält. Dies ist an sich untypisch, aber bei Mailprogrammen wie Thunderbird oder Sylpheed die Regel.

Gconf- und dconf-Einstellungen

Dconf-Editor und sein Terminalkollege gsettings.
Vergrößern Dconf-Editor und sein Terminalkollege gsettings.

Wer die komplette Benutzerkonfiguration einsehen will oder muss, kommt an speziellen Hilfswerkzeugen nicht vorbei. Wie am obigen Beispiel Cinnamon schon angesprochen, liegt nicht alles in klar lesbaren Textdateien vor. Bei Gnome-affinen Oberflächen (und das ist die Mehrzahl mit Gnome, Cinnamon, Unity, XFCE, Mate, LXDE) gibt es Ansätze zur Standardisierung und Zentralisierung der Softwareeinstellungen. Diese Konzepte werden nicht konsequent und nur neben den traditionellen Textdateien genutzt, spielen aber bei grafischer Standardsoftware eine wichtige Rolle.

Das ältere Konzept gconf (Gnome Configuration) versammelt seine Konfigurationsdateien unter „/home/[user]/.gconf“ in Form von lesbaren, aber strukturierten XML-Dateien. Es gibt nach wie vor ältere Software, die diesem eigentlich längst obsoleten gconf-Konzept folgt (Erbe von Gnome 2). Wer die gconf-Einstellungen nicht manuell am XML-Text einsehen oder ändern will, kann auf den gconf-editor zurückgreifen (mit gleichnamigem Paketnamen). Beachten Sie, dass dieser Editor in jedem Fall seine komplette Hierarchie anzeigt („apps“, „desktop“, „system“), selbst wenn das gconf-Konzept auf dem System nur noch von wenigen Programmen genutzt wird. Aussagekräftiger für die Relevanz ist der Blick in den Ordner „/home/[user]/.gconf“. Das neuere, mit Gnome 3 eingeführte dconf-Konzept benutzt statt XML-Dateien die Binärdatei „/home/[user]/.config/dconf/ [user]“. Zum manuellen Lesen und Bearbeiten dieser Konfigurationszentrale dient das grafische Tool dconf-editor, das in der Regel nicht vorinstalliert, aber mit dem gleichnamigen Paketnamen überall erreichbar ist.

Wichtigere Schnittstelle für Softwareinstallationen und für automatische Anpassungen ist aber das Kommandozeilentool gsettings, das sich ebenfalls überall nachrüsten lässt. Die Syntax für die jeweilige Einstellung folgt dabei exakt der Hierarchie, wie sie der dconf-editor anzeigt – etwa:

gsettings set org.gnome.desktop.background picture-uri /home/ha/bild.png 

Die Hierarchie „org.gnome.desktop.background“ finden Sie identisch im grafischen Editor, ebenso den Wert „picture-uri“. Das Beispiel ändert den Bildschirmhintergrund. Die dconf-Einstellungen gelten hauptsächlich für Gnome (oder die diversen Gnomeaffinen Desktops) und für dessen typische Standardprogramme wie Dateimanager, Mailprogramm, Editor, Brennprogramm, Bildschirmfoto etc. Externe Programme verlassen sich traditionsgemäß auf ihre eigenen Textdateien.

Kommentierung und Formatierung von Konfigurationsdateien

Persönlich kommentierte und sauber formatierte „crontab“.
Vergrößern Persönlich kommentierte und sauber formatierte „crontab“.

Welche Anweisungen eine Software in ihrer Konfigurationsdatei erwartet, ist so unterschiedlich wie die Software selbst. Einheitlich ist nur, dass je eine Zeile eine abgeschlossene Anweisung darstellt. Es gibt unstrukturierte Dateien, wo es keine Rolle spielt, an welcher Stelle eine Anweisung steht, so etwa in der SSH-Konfiguration über „/etc/ssh/sshd_config“. Andere Konfigurationsdateien wie etwa die Samba-Konfiguration „/etc/samba/smb.conf“ oder die „desktop“-Dateien unter „/usr/share/applications“ gliedern in Sektionen, die unterschiedliche Anweisungen erwarten. Wer sich dann mit den genauen Details beispielsweise einer „smb.conf“ beschäftigt, liest häufig den lapidaren Hinweis, dass diese Datei „gut kommentiert“ sei. Das stimmt einerseits, andererseits nicht.

Die typischen Standarddateien enthalten zwar alle Direktiven, aktivieren aber nur wenige fundamentale. Die übrigen werden, meist mit der Raute „#“, vorerst auskommentiert. Dazu gibt es erläuternde, in der Regel englischsprachige Textkommentare vor den eigentlichen Anweisungen, welche die Bedeutung der Direktiven erklären. Problem dabei ist, dass der Ersteinstieg in eine solche Konfigurationsdatei viel Lesestoff bedeutet, der nicht nach Relevanz gewichtet ist. Viele Einstellungen sind spezielle Optionen, die man im Alltag kaum benötigt. Die Filterleistung, das Wesentliche vom Optionalen zu trennen, müssen Sie also erst einmal erbringen. Und dafür sollten Sie sich anschließend belohnen: Eine „smb.conf“ wird sehr viel übersichtlicher, wenn sie nur noch die benötigten Zeilen enthält und auch auf die Kommentare zu unbenötigten Einträge verzichtet. Da man allerdings nie weiß, welche Optionen später wichtig werden könnten, speichern Sie die Datei zunächst etwa als „smb.conf.org“ (mit Kommentaren) und schmeißen dann in der „smb.conf“ alles raus, was für Ihre aktuelle Konfiguration unwesentlich ist.

Auf der anderen Seite ist es sehr zu empfehlen, eigene Eingriffe zu kommentieren und dies so, dass sich die Einträge von Standardkommentaren unterscheiden – etwa:

#ha# SSH-Standardport 22 nach 22222 geändert …
Port 22222 

Dann erkennen Sie eigene Eingriffe sofort, auch wenn Sie die Datei monatelang nicht angefasst haben.

Persönlich kommentierte und sauber formatierte „fstab“.
Vergrößern Persönlich kommentierte und sauber formatierte „fstab“.

Formatierung von Konfigurationsdateien: Fundamentale Konfigurationsdateien wie „crontab“ und „fstab“ sind nicht kompliziert, aber schwer lesbar. Das liegt daran, dass die nötigen Parameter pro Zeile wegen unterschiedlichen Textlängen visuell schlecht abzugrenzen sind. Als Trenner für die Parameter dienen wahlweise Leerzeichen oder Tabulatoren. Die Menge der Leerzeichen und Tabulatoren spielt aber in diesen wie in fast allen Konfigurationsdateien keine Rolle. Es bietet sich daher an, solche Dateien mit diesen simplen Mitteln in eine übersichtliche Tabellenform zu bringen. Das ist in zwei Minuten erledigt und sorgt dauerhaft für besseren Durchblick.

Festplatten & SSDs: Tipps zum Umgang unter Linux

Terminalzentrale für Konfigurationsdateien

Die Tabelle unten zeigt eine Anzahl prominenter Konfigurationsdateien inklusive Pfad. Erfahrende Linux-Nutzer kennen die Orte und Dateinamen wichtiger Einstellungen und wer nur die eine oder andere Datei häufiger benötigt, wird mit einigen Aliases im Terminal auskommen. Dafür genügen in der Datei „/home/[user]/.bashrc“ Einträge wie der Folgende:

alias smb='sudo gedit /etc/samba/smb.conf'  

Danach reicht im Terminal die Eingabe smb, um diese Konfigurationsdatei zu editieren. Wer häufig mit verschiedenen Dateien zugange ist, kommt mit Alias-Abkürzungen an seine Grenzen.

Hier eignet sich ein kleines Shell-Script, das die Dateien anzeigt

echo " 1 /etc/ssh/sshd_config SSH-Server"
echo " 2 $HOME/.bashrc Bash-Startscript" 

und dann mit

read -n 1 -p " " answer
case $answer in
    1) sudo gedit /etc/ssh/sshd_config
    ;;
    2) gedit ~/.bashrc
    ;;  

die Auswahl mit Kennziffer oder Kennbuchstabe vorsieht. Das „conf.sh“ finden Sie unter https://paste.ubuntu.com/p/cJsm26ZT29/ . Kopieren Sie die Datei „conf.sh“ in Ihr home-Verzeichnis und spendieren Sie ihm dann das Alias

alias conf='bash ~/conf.sh'  

in der Datei „~/bashrc“. Nach Aufruf conf erhalten Sie die Dateien angezeigt und die Eingabe der Kennziffer führt sofort oder nach Passworteingabe in den Editor. Dateien, deren Kennziffer Sie wissen, laden Sie noch schneller per Kennziffer als Parameter – etwa mit „conf 1“. Als Editor ist überall der einfache Nano eingetragen, weil dieser überall installiert und auch in der SSH-Konsole erreichbar ist. Wenn es die Umstände erlauben, können Sie „nano“ jeweils durch einen bequemeren Editor wie „gedit“ oder „xed“ ersetzen.

Grafische Zentrale für Konfigurationsdateien

Konfigurationszentralen für Server und Desktop.
Vergrößern Konfigurationszentralen für Server und Desktop.

Die obige Terminallösung funktioniert natürlich auch auf Desktopsystemen. Am grafischen Desktop kann man es sich aber noch ein wenig komfortabler einrichten. Die Verknüpfungsdatei „conf.desktop“, die Sie auf https://paste.ubuntu.com/p/nsxVX8TTDK/ finden, lässt sich in Starter-Docks einbauen, welche mit den typischen Desktopdateien zusammenarbeiten. Das gilt etwa für das Plank-Dock (Paketname „plank“) oder für die Starterleiste des neuen Ubuntu 18.04. Die Verknüpfung zeigt nach einem Rechtsklick eine ganze Reihe von Konfigurationsdateien an, die sich dann direkt bearbeiten lassen. Mit normalen Klick auf das Script-Icon können Sie die Datei selbst editieren und anpassen (mindestens den Pfad zur Datei in Zeile 4 des Scripts müssen Sie in jedem Fall anpassen).

Der Einbau des Icons in die Starterleiste in das Plank-Dock ist einfach: Es genügt, die Datei ins Home-Verzeichnis, etwa nach „/home/[user]/.local/share/applications“ zu kopieren, dort über den Dateimanager und „Eigenschaften“ ausführbar zu schalten und anschließend mit der Maus in das Dock zu ziehen.

Zum Einbau in den Starter von Ubuntu 18.04 muss das Script unbedingt nach „/home/[user]/.local/share/applications“ und dort ausführbar geschaltet werden. Nur an dieser Stelle wird es von der Gnome-Programmübersicht (das Symbol mit neun Punkten) in die Liste der Programme aufgenommen. Von dort holen Sie es dann per Rechtsklick und der Option „Zu Favoriten hinzufügen“ in die Ubuntu-Starterleiste. Beachten Sie, dass Änderungen am Script hier immer erst nach einer Neuanmeldung aktiv werden (das Plank-Dock liest Änderungen hingegen im laufenden Betrieb ein).

Kleine Tipps zu Konfigurationsdateien

Wenn Sie erfahrungsgemäß mehrere Konfigurationsdateien gleichzeitig benötigen, dann kann der Editor Ihrer Wahl alle gewünschten Dateien mit einem Befehl laden:

alias apache='sudo gedit /etc/apache2/apache2.conf /etc/php5/apache2/php.ini'

Editoren wie gedit, xed, geany, nano oder mcedit laden auch jederzeit nach dem Muster

nano *.sh
geany .bash*  

sämtliche Dateien eines Verzeichnisses oder – wie in den Beispielen – alle Dateien eines bestimmten Typs.

Wenn Sie sich an den Speicherort oder Dateinamen einer Konfigurationsdatei nicht mehr erinnern, die Sie vor geraumer Zeit schon einmal bearbeitet haben, hilft – sofern das damals im Terminal geschah – die „.bash_history „im home-Verzeichnis. Filtern Sie diese mit

cat .bash_history | grep nano  

nach Editoraufrufen. Statt „nano“ setzen Sie den von Ihnen hauptsächlich genutzten Editor ein.

Pfad und Name

Kurzbeschreibung

/etc/apache2/apache2.conf

Hauptkonfigurationsdatei des Apache Webserver

/etc/apache2/sites-enabled/*

Konfigurationsdateien der Apache-Dienste

/etc/apt/sources.list

Paketquellen für das Paketverwaltungssystem apt unter Debian/Ubuntu/Mint

/etc/crontab

zeitgesteuerte Jobs für den Cron-denst (global)

/etc/cups/printers.conf

Druckerkonfigurationsdatei (Cups)

/etc/dhcpd.conf

Konfigurationsdatei des DHCP-Servers

/etc/fstab

UUID, Mountpunkt und Optionen der automatisch zu ladenden Datenträger

/etc/ftpusers

Liste der Benutzer ohne FTP-Zugriffsrecht, pro Zeile ein Benutzername

/etc/group

Liste der Benutzergruppen

/etc/hostname

Hostname des Systems

/etc/hosts.allow

Rechner, denen der Zugang zum lokalen System erlaubt ist

/etc/hosts.deny

Rechner, denen der Zugang zum lokalen System verboten ist

/etc/inputrc

globale Eingabestandards für das Terminal (Tastendefinitionen)

/etc/issue

Infodatei vor dem Textlogin zu Distribution, Kernel, IP (ähnlich „/etc/motd“)

/etc/mime.types

Zuordnung von Dateitypen und Dateierweiterungen

/etc/modules

legt fest, welche Module beim Systemstart geladen werden

/etc/motd

Rechner-„Welcome“ beim Einloggen auf einem (SSH-)Terminal

/etc/nginx/nginx.conf

Hauptkonfigurationsdatei des Nginx-Webservers

/etc/nginx/sites-enabled/*

Konfigurationsdateien der Nginx-Dienste

/etc/openvpn/server.conf

Hauptkonfigurationsdatei des Open-VPN-Servers

/etc/passwd

Liste der Benutzerkonten

/etc/php5/apache2/php.ini

PHP-Konfiguration unter Apache

/etc/php5/cgi/php.ini

PHP-Konfiguration unter Nginx

/etc/profile globales

Start-Script der Bash-Shell

/etc/proftpd/proftpd.conf

Konfiguration des FTP-Servers proftp

/etc/rc.local

globale Autostarts beim Systemstart (nur Bash-Kommandos)

/etc/resolv.conf

Liste der lokalen DNS-Server (Router-Adresse)

/etc/samba/smb.conf

Samba-Konfigurationsdatei mit Freigabedefinitionen

/etc/services

Liste der IP-Dienste, Transportprotokolle und Ports

/etc/shadow

Passwortdatei der Systembenutzer

/etc/skel/

Skelettverzeichnis als Grundlage für das Anlegen neuer Benutzer (Bash)

/etc/ssh/sshd_config

Konfiguration des SSH-Servers

/etc/sudoers

Benutzerliste für sudo-Berechtigung (Standardeditor: visudo)

/etc/sysctl.conf

Parameter für den Linux-Kernel (Swapverhalten, Notfall-Hotkeys)

/etc/syslog.conf

Konfiguration für den Syslog-Daemon

/etc/vsftpd.conf

Konfiguration des FTP-Servers vsftp

/home/[user]/.bash_history

benutzerspezifisches Kommandoprotokoll der Bash-Shell

/home/[user]/.bash_logout

Standardbefehle beim Exit der Bash-Shell

/home/[user]/.bashrc

benutzerspezifisches Start-Script der Bash-Shell

/home/[user]/.config/dconf/user

Binärdatei der dconf-Zentrale für Desktop und grafisches Zubehör

/home/[user]/.config/mc/ini

benutzerspezifische Konfiguration des Midnight Commander

/home/[user]/.config/mc/mc.keymap

benutzerspezifische Tastenbelegung des Midnight Commander

/home/[user]/.gconf/*.xml

XML-Konfigurationsdateien der gconf-Zentrale (praktisch obsolet)

/home/[user]/.inputrc

benutzerspezifische Eingabestandards für das Terminal (Tastendefinitionen)

/usr/share/applications/*.desktop

anpassbare Programmverknüpfungen

/var/log/

diverse Logdateien

/var/spool/cron/crontabs/[user]

benutzerspezifische Jobs für den Crondienst (zeitgesteuerte Tasks)

Google bringt ein neues Pixel-Smartphone auf den Markt: Google Pixel 3a und 3a XL. Die größte Neuerung ist vor allem der Preis: Je nachdem, für welches Gerät man sich entscheidet, liegt der Preis zwischen 400 und 480 Euro. Ob das neue Google Pixel 3a und 3aXL mit der deutlich teureren Konkurrenz mithalten kann und was es mit dem mysteriösen Quietschen auf sich hat, erklärt euch Dennis in diesem Video.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
2427623