Zum Inhalt springen

Sudo/Konfiguration

Aus Foxwiki

Sudo/Konfiguration - Beschreibung

Beschreibung

/etc/sudoers

  • 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

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
  1. Öffnen Sie die gewünschte Datei mit visudo (Haupt- oder Drop-in-Datei).
  2. Nehmen Sie Änderungen vor und speichern Sie die Datei.
  3. visudo überprüft die Syntax.
  4. Wenn die Überprüfung fehlschlägt, werden die Änderungen nicht übernommen und visudo gibt eine Fehlermeldung aus.
  5. Ü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

Übersetzt mit DeepL.com (kostenlose Version)

# 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
  1. sudoers(5)

Links

Projekt

Weblinks