====== 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}}