sudoers und visudo: Rechte gezielt vergeben
Kurz: In /etc/sudoers legt man fest, wer welche Befehle als root ausführen darf; mit visudo und Dateien in /etc/sudoers.d vergibt man nur die nötigen Rechte statt vollen Root-Zugriff.
Genauer: sudo führt Befehle mit höheren Rechten aus und protokolliert das. Wer in der Gruppe sudo (Debian/Ubuntu) oder wheel (Fedora/Arch) ist, darf meist alles. Feiner geht es mit der sudoers-Konfiguration.
Im Detail
Bearbeiten nur mit visudo
sudo visudo (oder sudo visudo -f /etc/sudoers.d/webadmin) prüft die Syntax vor dem Speichern; ein Fehler in /etc/sudoers kann sudo komplett sperren. Eigene Regeln gehören in separate Dateien unter /etc/sudoers.d/ (Rechte 0440).
Beispielregeln
# Benutzer mia darf alles (mit Passwort)
mia ALL=(ALL:ALL) ALL
# Gruppe webadmin darf nur nginx neu laden, ohne Passwort
%webadmin ALL=(root) NOPASSWD: /bin/systemctl reload nginx, /bin/systemctl restart nginx
# Benutzer deploy darf ein Skript als www-data ausführen
deploy ALL=(www-data) /usr/local/bin/deploy.sh
Format: wer wo=(als_wer) was. Absolute Pfade angeben, Argumente festlegen (sonst darf der Befehl beliebige Argumente haben). NOPASSWD nur für eng begrenzte Befehle (Automatisierung).
Sicherheitsfallen
- Befehle mit Shell-Ausbruch (vim, less, find, python, git, tar) in sudo erlauben = faktisch Root-Shell (siehe GTFOBins). Lieber
sudoedit. - Wildcards (
*) in Befehlen sind riskant. - Schreibbare Skripte in sudo-Befehlen: Wer sie ändern kann, wird root.
ALL=(ALL) NOPASSWD: ALLnur in Wegwerf-VMs.- Umgebung (
env_reset,secure_path) nicht lockern. - Mit
sudo -ldie eigenen Rechte anzeigen,sudo -kZeitstempel zurücksetzen. - Logs:
/var/log/auth.logbzw.journalctl _COMM=sudo.
Praxis und Alternativen
Prinzip der geringsten Rechte: Dienste unter eigenen Benutzern (ohne Login-Shell), Nutzer nicht pauschal in sudo-Gruppe. Root-Login per SSH abschalten, Schlüssel statt Passwörter. Alternativen: doas (OpenBSD, schlank), polkit (Desktop-Aktionen), systemd-run, Capabilities (setcap) für einzelne Rechte, Containers/Rootless. Prüfe regelmäßig, wer sudo darf (getent group sudo).
Siehe auch: sudo und Root-Rechte, Prinzip der geringsten Rechte, Benutzer, Gruppen und Dateirechte, SSH-Config