====== Wichtige Konfigurationsdateien unter Linux ======
Linux-Systeme werden hauptsächlich über Textdateien im ''/etc''-Verzeichnis konfiguriert. Diese Seite bietet eine Übersicht der wichtigsten Konfigurationsdateien und ihrer Funktion.
===== System-Konfiguration =====
==== /etc/fstab ====
**Filesystem Table** - Automatisches Einbinden von Dateisystemen beim Systemstart.
# Beispiel /etc/fstab
UUID=1234-5678 /boot/efi vfat defaults 0 1
UUID=abcd-efgh / ext4 defaults 0 1
UUID=ijkl-mnop none swap sw 0 0
^ Spalte ^ Bedeutung ^
| 1. Gerät/UUID | Dateisystem-Quelle |
| 2. Mountpoint | Einhängepunkt im Verzeichnisbaum |
| 3. Typ | Dateisystemtyp (ext4, xfs, vfat, etc.) |
| 4. Optionen | Mount-Optionen (defaults, ro, noatime, etc.) |
| 5. Dump | Backup-Flag (meist 0) |
| 6. Pass | Prüfreihenfolge beim Boot (0, 1 oder 2) |
**Wichtige Befehle:**
# fstab-Syntax prüfen
sudo mount -a
# Alle Einträge neu mounten
sudo systemctl daemon-reload && sudo mount -a
# UUID von Partitionen anzeigen
sudo blkid
**Siehe auch:** [[sammlung:fstab|Detaillierte fstab-Dokumentation]]
==== /etc/hosts ====
**Hostname-zu-IP-Zuordnung** - Lokale DNS-Auflösung vor Abfrage externer DNS-Server.
# Beispiel /etc/hosts
127.0.0.1 localhost
127.0.1.1 meinrechner
::1 localhost ip6-localhost
192.168.1.10 server01.local server01
192.168.1.20 nas.local nas
**Format:** ''IP-Adresse Hostname [Aliase...]''
**Anwendungsfälle:**
* Lokale Testsysteme ohne DNS
* Überschreiben von DNS-Einträgen
* Schnellerer Zugriff auf häufig genutzte Hosts
* Blockieren von Websites (auf 127.0.0.1 umleiten)
==== /etc/resolv.conf ====
**DNS-Resolver-Konfiguration** - Definiert DNS-Server für Namensauflösung.
# Beispiel /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
search local.domain
**Wichtige Optionen:**
* ''nameserver'' - DNS-Server-IP (max. 3)
* ''search'' - Suchdomain für kurze Hostnamen
* ''domain'' - Lokale Domain
**Achtung:** Auf Systemen mit systemd-resolved oder NetworkManager wird diese Datei oft automatisch generiert und sollte nicht manuell bearbeitet werden!
**Moderne Alternativen:**
# SystemD-resolved Status
resolvectl status
# NetworkManager DNS-Konfiguration
nmcli device show | grep DNS
**Siehe auch:** [[sammlung:ip_dns_dhcp|IP, DNS und DHCP]]
==== /etc/hostname ====
**System-Hostname** - Name des Rechners im Netzwerk.
# Dateiinhalt
meinserver
**Verwaltung:**
# Hostname anzeigen
hostname
hostnamectl
# Hostname setzen (persistent)
sudo hostnamectl set-hostname neuer-name
# Temporär ändern (bis Reboot)
sudo hostname temp-name
==== /etc/timezone ====
**System-Zeitzone** - Definiert die lokale Zeitzone.
# Beispiel
Europe/Berlin
**Verwaltung:**
# Zeitzone anzeigen
timedatectl
# Zeitzone setzen
sudo timedatectl set-timezone Europe/Berlin
# Verfügbare Zeitzonen auflisten
timedatectl list-timezones
===== Netzwerk-Konfiguration =====
==== /etc/network/interfaces ====
**Klassische Netzwerkkonfiguration** (Debian/Ubuntu ohne NetworkManager).
# Beispiel
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
**Hinweis:** Auf modernen Ubuntu-Systemen wird stattdessen **netplan** verwendet (siehe unten).
==== /etc/netplan/*.yaml ====
**Moderne Netzwerkkonfiguration** (Ubuntu ab 17.10).
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
**Verwaltung:**
# Konfiguration testen
sudo netplan try
# Konfiguration anwenden
sudo netplan apply
**Siehe auch:** [[sammlung:networkmanager|NetworkManager]]
===== SSH-Konfiguration =====
==== /etc/ssh/sshd_config ====
**SSH-Server-Konfiguration** - Einstellungen für den SSH-Daemon.
# Wichtige Optionen
Port 22
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
X11Forwarding no
AllowUsers user1 user2
**Wichtige Parameter:**
^ Parameter ^ Bedeutung ^ Empfehlung ^
| Port | SSH-Port | Standard 22, oder geändert für mehr Sicherheit |
| PermitRootLogin | Root-Login erlauben | ''no'' (Sicherheit) |
| PasswordAuthentication | Passwort-Login erlauben | ''no'' (Key-only) |
| PubkeyAuthentication | SSH-Key-Login erlauben | ''yes'' |
| AllowUsers | Erlaubte Benutzer | Whitelist verwenden |
**Nach Änderungen:**
# Syntax prüfen
sudo sshd -t
# Service neu starten
sudo systemctl restart sshd
**Siehe auch:** [[sammlung:ssh|SSH-Konfiguration]]
==== /etc/ssh/ssh_config ====
**SSH-Client-Konfiguration** - Einstellungen für ausgehende SSH-Verbindungen.
# Beispiel
Host server01
HostName 192.168.1.10
User admin
Port 2222
IdentityFile ~/.ssh/id_rsa_server01
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
===== Benutzer und Gruppen =====
==== /etc/passwd ====
**Benutzer-Datenbank** - Informationen über alle Systembenutzer.
# Format: username:x:UID:GID:Kommentar:Home:Shell
root:x:0:0:root:/root:/bin/bash
user:x:1000:1000:User Name:/home/user:/bin/bash
^ Feld ^ Bedeutung ^
| 1 | Benutzername |
| 2 | Passwort (x = in /etc/shadow) |
| 3 | User ID (UID) |
| 4 | Primary Group ID (GID) |
| 5 | Kommentar/Vollständiger Name |
| 6 | Home-Verzeichnis |
| 7 | Login-Shell |
==== /etc/shadow ====
**Passwort-Hashes** - Verschlüsselte Passwörter (nur root lesbar).
# Format: username:hash:lastchange:min:max:warn:inactive:expire
user:$6$rounds=...:18500:0:99999:7:::
**Sicherheit:** Diese Datei sollte nur von root gelesen werden können (Rechte 640 oder 600).
==== /etc/group ====
**Gruppen-Datenbank** - Informationen über alle Systemgruppen.
# Format: groupname:x:GID:members
sudo:x:27:user1,user2
docker:x:999:user1
==== /etc/sudoers ====
**Sudo-Berechtigungen** - Definiert wer sudo verwenden darf.
# NIEMALS direkt bearbeiten! Immer visudo verwenden!
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl
**Bearbeitung nur mit:**
sudo visudo
**Siehe auch:** [[sammlung:sudo|Sudo-Konfiguration]]
==== /etc/skel/ ====
**Skeleton-Verzeichnis** - Vorlage für neue Benutzer-Home-Verzeichnisse.
Alle Dateien in ''/etc/skel/'' werden beim Anlegen eines neuen Benutzers in dessen Home-Verzeichnis kopiert.
# Inhalt anzeigen
ls -la /etc/skel/
# Beispiel: Eigene Vorlage erstellen
sudo nano /etc/skel/.bashrc
sudo cp /etc/skel/.bashrc /etc/skel/.bash_aliases
**Typischer Inhalt:**
* ''.bashrc'' - Bash-Konfiguration
* ''.profile'' - Login-Skript
* ''.bash_logout'' - Logout-Skript
===== Boot und Init =====
==== /etc/default/grub ====
**GRUB-Bootloader-Konfiguration** - Einstellungen für den Bootvorgang.
# Wichtige Optionen
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
**Nach Änderungen:**
sudo update-grub
# oder
sudo grub-mkconfig -o /boot/grub/grub.cfg
==== /etc/systemd/system/ ====
**SystemD-Unit-Dateien** - Dienste und Timer.
Eigene Service-Dateien oder Overrides ablegen.
# Service-Override erstellen
sudo systemctl edit service-name
# Eigenen Service anlegen
sudo nano /etc/systemd/system/myservice.service
sudo systemctl daemon-reload
sudo systemctl enable myservice
**Siehe auch:** [[sammlung:systemd|SystemD-Grundlagen]]
===== Paketmanagement =====
==== /etc/apt/sources.list ====
**APT-Repository-Quellen** (Debian/Ubuntu).
# Beispiel
deb http://de.archive.ubuntu.com/ubuntu/ jammy main restricted
deb http://de.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
deb http://security.ubuntu.com/ubuntu jammy-security main restricted
**Zusätzliche Repositories:**
# In /etc/apt/sources.list.d/
ls /etc/apt/sources.list.d/
**Nach Änderungen:**
sudo apt update
**Siehe auch:** [[sammlung:paketmanagement|Paketmanagement]]
===== Weitere wichtige Dateien =====
^ Datei ^ Funktion ^
| ''/etc/crontab'' | System-Cron-Jobs |
| ''/etc/environment'' | System-weite Umgebungsvariablen |
| ''/etc/profile'' | System-weites Login-Skript |
| ''/etc/bash.bashrc'' | System-weite Bash-Konfiguration |
| ''/etc/motd'' | Message of the Day (Login-Nachricht) |
| ''/etc/issue'' | Login-Banner (vor Anmeldung) |
| ''/etc/login.defs'' | Login-Einstellungen |
| ''/etc/security/limits.conf'' | Ressourcen-Limits für Benutzer |
| ''/etc/sysctl.conf'' | Kernel-Parameter |
| ''/etc/modules'' | Kernel-Module beim Boot laden |
===== Best Practices =====
* **Backup vor Änderungen:** ''sudo cp /etc/datei /etc/datei.backup''
* **Kommentare nutzen:** ''# Geändert am 2024-01-15: Grund...''
* **Syntax prüfen:** Viele Tools haben Test-Optionen (''sshd -t'', ''nginx -t'', etc.)
* **Versionskontrolle:** ''/etc'' in Git verwalten (etckeeper)
* **Dokumentation:** Änderungen dokumentieren
===== Siehe auch =====
* [[sammlung:filesystem|Linux Dateisystem-Struktur]]
* [[sammlung:systemd|SystemD Konfiguration]]
* [[sammlung:vim|vim - Dateien bearbeiten]]
* [[sammlung:nano|nano - Einfacher Editor]]
{{tag>linux konfiguration etc system administration}}