Sudo/Konfiguration: Unterschied zwischen den Versionen
| Zeile 87: | Zeile 87: | ||
* Die Dateien haben keine Erweiterung. | * Die Dateien haben keine Erweiterung. | ||
=== Regeln (User Specifications) === | === '''Regeln (User Specifications)''' === | ||
Jeder dieser Einträge beschreibt: | Jeder dieser Einträge beschreibt: | ||
Version vom 5. November 2025, 10:19 Uhr
Sudo/Konfiguration - Beschreibung
Beschreibung
- Modulare Regeln werden als Drop-Ins bezeichnet und befinden sich standardmäßig unter: /etc/sudoers.d/
Die Datei sollte mit visudo bearbeitet werden
- visudo führt vor dem Speichern eine Syntaxprüfung durch
Konfiguration
Sudoers
Nach der Installation muss jeder Benutzer, der SuperUser-Rechte erhalten soll, der Gruppe "sudo" hinzugefügt werden
usermod -G sudo -a BENUTZERNAME
- Ausführen von sudo ohne Passwort
visudo
In der sudoers.d Datei in der letzten Zeile folgenden Befehl einfügen
'USER' ALL=(ALL) NOPASSWD:ALL
- User ist der Name des Users, den das betreffen soll
- Einzelne Befehle auszuschließen
- in der Klammer die Befehle listen, die gewünscht sind, in diesem Fall sind das alle Befehle (ALL)
- Allgemeiner Grundsatz für die Konfiguration von sudoers
- Öffnen Sie die gewünschte Datei mit visudo (Haupt- oder Drop-in-Datei).
- Nehmen Sie Änderungen vor und speichern Sie die Datei.
- visudo überprüft die Syntax.
- Wenn die Überprüfung fehlschlägt, werden die Änderungen nicht übernommen und visudo gibt eine Fehlermeldung aus.
- Überprüfung: sudo -l. Führen Sie einen Testbefehl aus.
- Konfiguration Öffnen
Sie können den Konfigurationseditor mit folgendem Befehl öffnen:
sudo visudo
Unter Debian erfolgt der Start mit nano, da dies standardmäßig in der Systemvariablen editor angegeben ist.
Sie können dies wie folgt überprüfen:
readlink -f /usr/bin/editor
Änderung des Standard-Editors:
sudo update-alternatives --config editor
- Drop-Ins einschalten
- Am Ende von /etc/sudoers steht normalerweise:
@includedir /etc/sudoers.d
- Sie können auch eine separate Datei mit der Anweisung @include in die Konfiguration einfügen.
@include /usr/local/etc/sudoers.custom
- Hinweis
- In älteren Versionen von sudo (<1.9.1) begannen die Anweisungen mit dem Zeichen # statt mit @. Beide Formate werden jedoch unterstützt.
- Bezeichnung der Drop-in-Dateien
Allgemein übliche Bezeichnung der Drop-in-Dateien:
- NN-topic, wobei NN die Dateinummer ist. Die Reihenfolge der Lesbarkeit ist lexikografisch (alphabetisch, von 00 bis 99).
- Beispiel:
/etc/sudoers.d/ ├── 00-defaults ├── 10-groups ├── 50-nginx └── 90-local
- Die Dateien haben keine Erweiterung.
Regeln (User Specifications)
Jeder dieser Einträge beschreibt:
- wer (USER)
- auf welchen Hosts (HOSTS)
- was ausführen darf (COMMANDS)
- im Namen von wem (RUNAS)
- mit welchen Modifikatoren (TAGS)
- Schreiben von sudoers-Regeln
Allgemeiner Aufbau einer Zeile:
USER HOSTS = (RUNAS) [TAGS] COMMANDS
- USER — Für dieses Feld kann einer der folgenden Werte angegeben werden:
- Benutzer
- Gruppe (GID-Gruppe)
- Netgroup (NIS)
- Alias
- HOSTS – auf welchen Hosts die Regel gilt (Namen/Masken/IP, Aliase sind möglich).
- (RUNAS) – in wessen Namen und/oder mit welcher Gruppe ausführen (Standardwert root).
- Benutzer
- Mehrere Benutzer: (postgres, mysql)
- Gruppe (GID-Gruppe)
- Alias
- [TAGS] – Modifikatoren
- NOPASSWD: – kein Passwort für die aufgeführten Befehle abfragen.
- PASSWD: – Passwort für die aufgeführten Befehle abfragen.
- SETENV: – Verwaltung der Umgebung zulassen.
- NOEXEC: – Unterprozesse innerhalb des Befehls verbieten.
- COMMANDS – Liste der vollständigen Pfade zu Befehlen (vorzugsweise ohne Wildcards), Aliase sind möglich.
Defaults
Mit Defaults können Sie das Sicherheitsprofil und die Verhaltenseinstellungen von sudo festlegen, z. B.:
- Zeitlimit für zuvor eingegebene Passwörter, erneute Passwortabfrage nach ...
- I/O-Protokollierung
- Verwendung eines vordefinierten PATH
- usw.
- Ausführungspriorität
Defaults haben die folgende Priorität (von oben nach unten):
- Defaults! /Befehl
- Defaults>runas
- Defaults:Benutzer/Gruppe
- Defaults@Host
- Globale Defaults
# Reine Umgebung
Defaults env_reset
# PATH definieren
Defaults secure_path="/usr/sbin:/usr/bin:/sbin:/bin"
# sudo-Passwort-Cache (Minuten); 0 – immer fragen
Defaults timestamp_timeout=5
# Pseudo-TTY für I/O-Protokolle
Defaults use_pty
# Authentifizierungsparameter/
Defaults passwd_tries=3, passwd_timeout=30
Defaults lecture=once
Beispiele für Defaults für bestimmte Entitäten
# Für den Befehl vi: Unterprozesse verbieten und I/O-Protokolle aktivieren
Defaults! /usr/bin/vi noexec, log_input, log_output
# Für den Benutzer alice: Immer nach dem Passwort fragen
Defaults:alice timestamp_timeout=0
# Für die Gruppe (GID) webops: Proxy-Variablen zulassen
Defaults:%webops env_keep += "http_proxy https_proxy"
# Für den Host (jump-host): TTY und strenge Passwortabfragepolitik
Defaults@backupsrv use_pty, timestamp_timeout=0
# Für RunAs-Benutzer: Beim Ausführen von Befehlen von postgres wird kein Passwort abgefragt.
Defaults>postgres !authenticate
# Für RunAs-Benutzer: Beim Ausführen von Befehlen von postgres wird kein Passwort abgefragt.
- Aliase
User_Alias WEBOPS = alice, bob Runas_Alias DBUSERS = postgres, mysql Host_Alias WEBSERVERS = www01, www02 Cmnd_Alias NGINX_CTL = /bin/systemctl start nginx, /bin/systemctl stop nginx, /bin/systemctl restart nginx, /bin/systemctl status nginx
Beispiel für eine vollständige Zeile:
WEBOPS WEBSERVERS = (root) NOPASSWD: NGINX_CTL
Aufruf
Optionen
| Unix | GNU | Parameter | Beschreibung |
|---|---|---|---|
Parameter
Umgebungsvariablen
Exit-Status
| Wert | Beschreibung |
|---|---|
| 0 | Erfolg |
| >0 | Fehler |
Anwendung
Problembehebung
Konfiguration
Dateien
| Datei | Beschreibung |
|---|---|
Anhang
Siehe auch
Dokumentation
- Man-Page