Linux-Systemkomponenten wie Anwendungsprogramme werden durch verstreute, aber meist leicht zu lokalisierende Textdateien konfiguriert (siehe Punkt 1: „Pfade und Namen“). Der zentralisierte Ansatz dconf unter Gnome-affinen Desktops bleibt marginale Nebensache, zumal er nur für die Benutzerkonfiguration und grafische Anwendungsprogramme gilt (siehe Punkt 2: „Dconf-Zentrale“). Ohne verbindliche Standardisierung bleibt es mehr oder weniger der jeweiligen Software überlassen, wo sie ihre Einstellungen speichern und einlesen will. Das gilt auch für das Format der Konfigurationsdateien: Neben unstrukturierten, immerhin kommentierten Textdateien stehen gegliederte Standardformate wie INI, XML oder JSON mit vordefinierten Sektionen, die jeweils unterschiedliche Anweisungen erwarten.
Wer in diesem ziemlich anarchischen Wust den Durchblick gewinnen will, sollte Pfade und Namen wichtiger Konfigurationsdateien im Blick haben, eigene Eingriffe kennzeichnen und sich den Zugriff auf wichtige Dateien so einfach wie möglich machen. Vorschläge dazu und eine zentrale Verwaltungslösung im Midnight Commander zeigen die Punkte 3 und 4. Eine umfangreiche kommentierte Tabelle ergänzt den Beitrag.
1. Pfade und Namen
Konfigurationsdateien mit systemweiter Geltung liegen praktisch alle im Pfad „/etc“ und ihre Bearbeitung benötigt folglich root-Recht. Je nach Umfang erscheint eine Einzeldatei direkt unter „/etc“ wie etwa „/etc/ fstab“ (einzuhängende Datenträger), „/etc/passwd“ (Benutzerkonten), „sysctl.conf“ (Kernel-Parameter), häufiger aber in Unterverzeichnissen wie „/etc/samba/smb.conf“ oder „/etc/ssh/sshd_config“, wenn die betreffende Software mehrere Konfigurationsdateien benötigt.
Eine umfassende Aufstellung ist unrealistisch, da sich je nach Menge der genutzten Dienste und der installierten Programme auf jedem System andere Konstellationen finden. Zuverlässig wird aber jede installierte Software – unabhängig von der verwendeten Distribution – eine Konfigurationsdatei oder einen Ordner unter „/etc“ anlegen, dessen Name auf die Software verweist oder den identischen Namen verwendet. Strenge Regeln gibt es nicht: Manche Konfigurationsdateien tragen den exakten Namen der zugehörigen 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 Ordnernamen wie „mc“. Zur Bearbeitung kann jeder beliebige Editor dienen, Nano und MC (mcedit) bevorzugt für SSH-Server, Gedit, Xed oder Geany auf grafischen Desktops. Praktisch alle Editoren verbessern die Lesbarkeit durch unterschiedliche Farbmarkierungen für Kommentare oder Sektionsüberschriften.
Für benutzerspezifische Einstellungen gibt es den Sammelordner „/home/[user]/.config“, jedoch halten sich nicht alle Programme an diese Vorgabe. Einige Programme legen die Benutzerkonfiguration einfach als versteckte Einzeldatei direkt unter „/home/ [user]“ ab, so etwa die Bash-Shell mit der Datei „/home/[user]/.bashrc“ oder der Texteditor Nano mit „/home/[user]/.nanorc“. Etliche, zum Teil wichtige Software erstellt einen versteckten Ordner unter „/home/ [user]/“ wie etwa „/home/[user]/.thunderbird“ oder „/home/[user]/.kodi“ oder „/home/[user]/.x2go“.
Lesetipp: Die 10 wichtigsten Linux-Befehle für Netzwerk und Internet
Typischerweise spielen die Benutzereinstellungen unter „/home“ für manuelle Anpassungen eine geringe Rolle: Die meisten der hier versammelten Konfigurationsanweisungen gehören zu grafischen Programmen wie Browser, Office, Thunderbird, Kodi, die sich bequem an der grafischen Oberfläche einstellen lassen. Manuelles Lesen oder Bearbeiten ist oft weder vorgesehen noch erwünscht. Aber es gibt natürlich Ausnahmen: An der „~/.bashrc“ (Bash- Vorgaben: Variablen, Prompt, Aliases) kommt wohl kein Linux-Nutzer vorbei, während Eingriffe in „~/.conkyrc“ (Conky-Systemmonitor), „~/.inputrc“ (Terminaleingabestandards) „~/.nanorc“ (Nano-Konfiguration) wohl schon eher Richtung Bastler gehen. „rc“ steht jeweils für „run commands“. Trotzdem gibt es Situationen, in denen es hilfreich ist, die benutzerspezifischen Konfigurationsdateien aufzusuchen: Wenn eine Software nicht mehr startet, können Sie unter „/home/[user]/“ alle benutzerbezogenen Einstellungen des Programms löschen. So wird etwa der Chrome-Browser nach 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 an einer Stelle zu lokalisieren: Einstellungen für den 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.
Größ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.
2. Die Dconf-Zentrale

Dconf-Editor und sein Terminalkollege Gsettings: Gnome-affine Oberflächen versammeln Desktop- und Programmeinstellungen in der Dconf-Zentrale.
IDG
Wer die komplette Benutzerkonfiguration einsehen will, kommt an speziellen Hilfswerkzeugen nicht vorbei, denn nicht alles liegt in lesbaren Textdateien vor. Bei Gnome- affinen Oberflächen (Gnome, Cinnamon, 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.
Das ältere Gconf (Gnome Configuration) versammelt seine Konfigurationsdateien unter „/home/[user]/.gconf“ in Form von strukturierten XML-Dateien und ist praktisch obsolet. Das seit Gnome 3 eingeführte Dconf-Konzept benutzt statt XML-Dateien eine einzige Binärdatei „/home/[user]/.config/dconf/user“. Zum manuellen Lesen und Bearbeiten dieser Zentrale dient der grafische Dconf-Editor, der mit dem gleichnamigen Paketnamen überall erreichbar ist. Wichtiger ist aber das alternative 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/lw/bild.png
Die Hierarchie „org.gnome.desktop.background“ finden Sie identisch im grafischen Editor. Das Beispiel setzt einen neuen Bildschirmhintergrund.
Dconf-Einstellungen gelten hauptsächlich für Gnome-Programme wie Dateimanager, Mailprogramm, Editor, Brennprogramm, Bildschirmfoto und den Desktop selbst. Andere Benutzerprogramme verlassen sich auf ihre traditionellen Textdateien. Für systemweite Dienste gibt es sowieso keine Alternative, da deren Konfiguration nicht im Benutzerkontext erfolgen kann.
3. Kommentieren & Formatieren
Welche Anweisungen eine Software in der 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 Konfiguration des SSH-Servers unter „/etc/ssh/sshd_config“. Andere Konfigurationsdateien wie etwa die Samba-Konfiguration „/etc/samba/smb.conf“ oder die Desktopdateien unter „/usr/share/ applications“ gliedern in Sektionen, die unterschiedliche Anweisungen erwarten.
Wer sich mit Linux-Diensten wie SSH, Apache, Samba beschäftigt, liest häufig den Hinweis, dass die Konfigurationsdateien „gut kommentiert“ seien. Tatsächlich sind aber schnell Stunden investiert, um etwa den Anweisungsumfang des SSH-Servers zu verstehen. Typischerweise sind die meisten Optionen mit „#“ oder „;“ auskommentiert. Dazu gibt es englischsprachige Textkommentare vor den eigentlichen Anweisungen, welche die Bedeutung erklären. Hauptproblem dabei ist, dass es keine Aussagen zur Relevanz der Anweisung gibt und viele Einstellungen kaum alltagsrelevant sind.
Vereinfachen Sie daher Dateien wie „/etc/ ssh/sshd_config“ (SSH-Server) oder „/etc/ samba/smb.conf“ (Samba-Netzfreigaben), indem Sie alle irrelevanten Einträge und Kommentare einfach löschen. Bevor Sie das tun, kopieren Sie die Datei (Beispiel):
sudo cp sshd_config sshd_config.original
Damit kommen Sie bei Bedarf später wieder an alle Optionen. Eine eindeutige Extension wie „.original“ ist hilfreich, um schnell alle bearbeiteten Dateien aufzufinden.
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:
lw# SSH-Port 22 nach 22222 geändert Port 22222
Dann erkennen Sie eigene Eingriffe sofort, auch wenn Sie die Datei monatelang nicht angefasst haben.
„Formatieren“ von Konfigurationsdateien: Konfigurationsdateien wie „/etc/fstab“ oder die crontab (crontab -e) sind kompliziert genug, obendrein aber noch schwer lesbar. Das liegt daran, dass die an sich existierenden Spalten wegen unterschiedlicher Textlängen visuell nicht abzugrenzen sind. Als Trenner für die Parameter dienen Leerzeichen oder Tabulatoren.

Sauber formatierte fstab: Die Konfigurationsdatei erhält durch Leerzeichen eine gut lesbare Tabellenform.
IDG
Da die Menge der trennenden Leerzeichen oder Tabulatoren keine Rolle spielt, bietet es sich an, solche Dateien mit diesen simplen Mitteln in eine übersichtliche Tabellenform zu bringen.
Lesetipp: Die 20 häufigsten Linux-Probleme lösen
4. Zentrale für Konfigurationsdateien
Erfahrende Linux-Nutzer kennen die Orte und Dateinamen wichtiger Einstellungen und wer nur die eine oder andere Datei häufiger benötigt, wird mit Aliases im Terminal auskommen. Dafür genügen in der Datei „~/.bashrc“ Einträge wie dieser:
alias samba='sudo gedit /etc/samba/smb.conf'
Danach reicht im Terminal die Eingabe samba, um diese Konfigurationsdatei zu editieren. Wer häufig mit verschiedenen Dateien zu tun hat, kommt mit solchen Alias-Abkürzungen aber an seine Grenzen.
Die LinuxWelt hat für diesen Kontext bereits Verwaltungslösungen vorgeschlagen, die hübsch, aber relativ unflexibel ausfielen. Die nachfolgend beschriebene Idee greift auf den Midnight Commander (MC) zurück, der sowieso nirgends fehlen sollte und mit kleiner Bastelei einen glänzenden Konfigurationseditor abgibt. Wer diesen Dateimanager beherrscht und das Konzept versteht, kann die Lösung nach Wunsch anpassen. Mit folgender Anleitung sollte aber jeder Anwender klarkommen:

Midnight Commander als Konfigurationseditor: Die in einem Extraordner als Softlinks versammelten Dateien sind ohne Sucherei einsehbar und editierbar.
IDG
1. Sie benötigen ein leeres Verzeichnis „konfig“ im Home-Ordner:
mkdir ~/konfig
Der Name ist im Prinzip beliebig.
2. Sie brauchen ein Alias in der Datei „~/.bashrc“ für den optimalen MC-Start:
alias konfig='sudo mc /home/lw/konfig/etc/'
Ersetzen Sie „lw“ durch Ihren Kontonamen. „sudo“ ist wichtig, damit Sie später auch systemweite Dateien bearbeiten können.
3. In das Verzeichnis „~/konfig“ werden nun Softlinks zu allen benötigten Dateien und Ordnern angelegt. Das geht ultrabequem, wenn der MC mithilft. Starten Sie mit konfig oder sudo mc den Dateimanager und gehen Sie auf „Befehl –› Menüdatei bearbeiten“ und hier auf „Benutzer“ (das ist root, da der MC mit sudo gestartet wurde). Tragen Sie am Ende der Menüdatei drei Zeilen ein:
=
L Neuen Konfig-Link erstellen
ln -s "%d/%f" --target-directory=/home/lw/konfig
Die (eine!) Befehlszeile mit „ln“ erstellt Softlinks im „konfig“-Ordner. Ersetzen Sie „lw“ durch Ihren eigenen Kontonamen. Das führende „=“ macht den Eintrag zum vormarkierten Standard. Wenn Sie das MC-Menü sonst kaum verwenden, können Sie der Übersicht halber das Meiste löschen.
4. Die spätere Benutzung ist einfach: Sie starten den MC mit „konfig“, lesen oder bearbeiten vorhandene Einträge unter „~/konfig“ mit F3 und F4. Einen neuen Link erstellen Sie, indem Sie zum gewünschten Dateiobjekt navigieren, mit F2 das Menü auslösen und dort den Eintrag „Neuen Konfig-Link erstellen“ wählen (ist vormarkiert und benötigt nur noch die Eingabetaste). Wenn Ihnen ein Linkname wie „@.bashrc“ nicht sprechend genug erscheint, benennen Sie ihn mit F6 um. Die Zieldatei des Softlinks ist davon nicht betroffen. Softlinks im Konfig-Ordner, die Sie später nicht mehr brauchen, löschen Sie einfach mit F8. Nicht zuletzt wichtig: Die Dateirechte bleiben bewahrt, egal ob benutzerspezifische oder systemweite Einstellungen bearbeitet werden.
Die wichtigsten Config-Ordner im Überblick
Wichtige Konfigurationsordner | |
/etc/[Software]/* | globale Konfigurationseinstellungen für „[Software]“ (etwa /etc/apt, /etc/tlp, /etc/lightdm, /etc/gimp …) |
/etc/apt/* | Konfiguration und Paketquellen für apt-Paketmanager (Debian/Ubuntu/Mint u. a.), unter Arch Linux /etc/pacman.d |
/etc/ssh/* | Konfiguration des SSH-Servers/SSH-Clients (sshd_config / ssh_config) |
/etc/xdg/autostart/*.desktop | systemweite automatische Tasks nach der Systemanmeldung |
/home/[user]/.[Datei] | etliche Programme schreiben die benutzerspezifische Konfigurationsdatei direkt ins Home-Verzeichnis (etwa ~/.conkyrc) |
/home/[user]/.[Pfad] | etliche Programme erstellen für die benutzerspezifische Konfiguration einen Ordner im Home-Verzeichnis (etwa ~/.mozilla) |
/home/[user]/.config/* | Sammelordner für benutzerspezifische Softwarekonfiguration (etwa ~/.config/mc/) |
/home/[user]/.config/autostart/*.desktop | benutzerspezifische automatische Tasks nach der Systemanmeldung |
/home/[user]/.local/* | benutzerspezifische Anpassungen wie selbst erstellte Starter oder Dateimanager-Erweiterungen (etwa ~/.local/share/nautilus/scripts) |
/usr/share/applications/*.desktop | anpassbare Programmverknüpfungen für den grafischen Desktop |
/usr/share/xsessions | Anlaufstelle, wo der Anmeldebildschirm (Displaymanager) die installierten Desktops findet (*.desktop) und dann anbietet |
/var/log/* | Sammelordner für Log- und Protokolldateien: syslog, auth.log (Anmeldungen), dpkg.log (apt), dmesg (Kernel), Samba, Apache |
/var/spool/cron/crontabs/* | Benutzer- und root-Jobs für Cron (zeitgesteuerte Tasks), Editieren mit crontab -e oder sudo crontab -e (für root-Jobs) |
/var/www/* | Standardordner für Apache/Nginx-Webdienste; Konfiguration plus Daten (etwa /var/www/nextcloud oder /var/www/wordpress) |
Systemkonfiguration | |
/etc/apt/sources.list | Paketquellen für das Paketverwaltungssystem (apt) unter Debian/Ubuntu/Mint, s. a. PPA-Quellen unter /etc/apt/sources.list.d/* |
/etc/crontab | globale Jobs für den Crondienst (meist ungenutzt, siehe /var/spool/cron/crontabs/) |
/etc/default/grub | Basiskonfiguration des Bootmanagers Grub, weitere editierbare Anpassungen unter /etc/grub.d/40_custom |
/etc/fstab | Filesystem Table: Gerätekennung, Mountpunkt und Optionen der automatisch zu ladenden Datenträger |
/etc/hdparm.conf | optionale Einstellungen für Datenträger, z. B. „spindown“-Anweisungen bei Inaktivität |
/etc/inputrc | globale Eingabestandards für das Terminal (Tasten Pos1, Ende, Bild_auf/ab etc.) |
/etc/mime.types | Zuordnung von Dateitypen und Dateierweiterungen |
/etc/modules-load.d | legt fest, welche externen Kernel-Module beim Systemstart geladen werden |
/etc/motd | marginal, aber eventuell irritierend: Standardmeldungen beim Einloggen mit (SSH-)Terminal |
/etc/passwd | Liste aller internen und explizit eingerichteten Benutzerkonten |
/etc/rc.local | globale Autostarts beim Systemstart (vor der Useranmeldung): nur Terminalbefehle |
/etc/sudoers | Benutzerliste für sudo-berechtigte Konten, Standardeditor visudo, typischer Eintrag: [Kontoname] ALL=(ALL:ALL) ALL |
/etc/systemd/system.conf | Basiseinstellungen des Init-Dienstes systemd |
/etc/sysctl.conf | Steuerung des Linux-Kernels, u. a. Swapiness, IPv4, IPv6, Notfall-Hotkeys (siehe sysctl –all) |
/var/spool/cron/crontabs/[user] | Benutzer- und root-Jobs für Cron (zeitgesteuerte Tasks), Editieren: crontab -e oder sudo crontab -e (für root-Jobs) |
Netzwerk- und Internetdienste | |
/etc/apache2/apache2.conf | Hauptkonfigurationsdatei des Apache-Webserver |
/etc/apache2/sites-available/000-default.conf | Konfigurationsdatei für aktive Apache-Dienste – fundamental: „<VirtualHost *:[Port]>“ und „DocumentRoot [Pfad]“ |
/etc/network/interfaces | klassische Netzwerkkonfiguration, auf grafischen Systemen durch Networkmanager ersetzt und obsolet |
/etc/NetworkManager | Netzwerkkonfiguration mit Network-Manager, Adapterkonfiguration unter /etc/NetworkManager/system-connections |
/etc/nginx/nginx.conf | Hauptkonfigurationsdatei des Nginx-Webserver |
/etc/nginx/sites-available/default | Konfigurationsdatei für aktive Nginx-Dienste: fundamental: „server listen:[Portangabe]“ und „location [Pfad]“ |
/etc/ssh/ssh_config | Konfguration des Open-SSH-Clients (benötigt in der Regel keine Änderungen) |
/etc/ssh/sshd_config | Konfiguration des SSH-Servers (Port, User, Kennwortsicherheit) |
/home/[user]/.ssh/rc | benutzerspezifisches Script, das beim Start einer SSH-Sitzung vom Server abgearbeitet werden, wenn sich [user] anmeldet |
/etc/samba/smb.conf | Samba-Konfiguration mit Freigaben unter „Share Definitions“. Wichtigste Angaben „[Freigabename]“ und „path=“ |
/etc/bash.bashrc | globales Start-Script der Bash-Shell für Aliases, Functions, Variablen, die systemweit gelten sollen |
/etc/profile | globales Bash-Start-Script für Log-in-Shells – also nur bei einer Shell-Neuanmeldung (SSH oder virtuelle Konsole) |
/home/[user]/.bash_history | benutzerspezifisches Kommandoprotokoll der Bash-Shell, standardmäßig die 500 letzten Eingaben ($HISTFILESIZE) |
/home/[user]/.bash_login | optionales benutzerspezifisches Start-Script |
/home/[user]/.bash_logout | optionales benutzerspezifisches End-Script beim Beenden jeder Bash-Shell |
/home/[user]/.bashrc | benutzerspezifisches Start-Script der Bash-Shell für Aliases, Functions, Variablen |
/home/[user]/.profile | benutzerspezifisches Bash-Start-Script für Log-in-Shells – also nur bei einer Shell-Neuanmeldung (SSH oder virtuelle Konsole) |
Diverse Software | |
/etc/[Software]/* | globale Konfigurationseinstellungen für „[Software“], etwa /etc/mc/ oder /etc/gimp/ |
/home/[user]/.config/* | Sammelordner für benutzerspezifische Softwarekonfiguration (etwa ~/.config/mc/) |
/home/[user]/.config/dconf/user | binäre Konfigurationszentrale für Desktop und Desktopprogramme (Editor: dconf-editor) |
/home/[user]/.[Datei] | etliche Programme schreiben die benutzerspezifische Konfigurationsdatei direkt ins Home-Verzeichnis (etwa ~/.conkyrc oder ~/.nanorc) |
/home/[user]/.[Pfad] | etliche Programme erstellen für die benutzerspezifische Konfiguration einen Extraordner im Home (etwa ~/.mozilla oder ~/.ssh) |