EMZETT.
Login

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: ALL nur in Wegwerf-VMs.
  • Umgebung (env_reset, secure_path) nicht lockern.
  • Mit sudo -l die eigenen Rechte anzeigen, sudo -k Zeitstempel zurücksetzen.
  • Logs: /var/log/auth.log bzw. 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