4 sudo vs su

Die Wahl zwischen sudo und su kann von der Situation und den spezifischen Anforderungen abhängen, aber hier sind einige Gründe, warum sudo gegenüber su bevorzugt wird:

  1. Erhöhte Sicherheit: Mit sudo können Sie für einen einzelnen Befehl Administratorenrechte erteilen, während su einen dauerhaften Wechsel zur Root-Benutzer-Sitzung bewirkt. Das Verwenden von sudo hilft, versehentlichen Schaden zu vermeiden, der durch Befehle verursacht werden könnte, die als Root ausgeführt werden.

  2. Bessere Protokollierung: sudo protokolliert jeden Befehl, der ausgeführt wird, was im Nachhinein sehr nützlich sein kann, um zu verstehen, was passiert ist, falls Probleme auftreten. Bei su gibt es so eine Protokollierung nicht.

  3. Feinkörnige Kontrolle: Mit sudo können Sie spezifischen Benutzern (oder Gruppen von Benutzern) den Zugriff auf bestimmte Befehle als Root erlauben. Das ist nützlich, um die Berechtigungen zu beschränken, die ein Benutzer hat, ohne ihnen vollständigen Root-Zugang geben zu müssen.

  4. Kein Root-Passwort erforderlich: Bei sudo gibt der Benutzer sein eigenes Passwort ein, während bei su das Root-Passwort benötigt wird. In vielen modernen Systemen ist das Root-Konto standardmäßig deaktiviert, und Benutzer verwenden sudo für administrative Aufgaben.

  5. Verlässt ein Mitarbeiter mit root Rechten das Unternehmen, so muss nur der personalisierte Account gesperrt werden und nicht das root Passwort geändert und kommuniziert werden

Diese Vorteile machen sudo in vielen Fällen zur bevorzugten Option, obwohl es Situationen gibt, in denen su nützlich sein kann. Es ist wichtig, sich der Unterschiede und möglichen Risiken bewusst zu sein, um die beste Wahl für Ihre spezielle Situation zu treffen.

4.1 root sperren

In vielen Linux-Distributionen, einschließlich Ubuntu und anderen auf Debian basierenden Systemen, ist der root-Benutzer standardmäßig gesperrt. Das bedeutet, dass Sie sich nicht direkt als root-Benutzer anmelden können, sondern stattdessen sudo verwenden müssen, um Befehle mit Root-Rechten auszuführen.

Wenn Sie sicherstellen möchten, dass der root-Benutzer auf Ihrem Debian-System gesperrt ist, können Sie den folgenden Befehl verwenden:

sudo passwd -l root

Dieser Befehl sperrt das root-Konto, indem er das Passwort in eine Form ändert, die nicht als gültiges Passwort eingegeben werden kann. Dadurch wird verhindert, dass sich jemand direkt als root-Benutzer anmeldet.

Bitte beachten Sie, dass Sie weiterhin sudo verwenden können, um Befehle mit Root-Rechten auszuführen. Sie werden aufgefordert, Ihr eigenes Passwort einzugeben, nicht das root-Passwort.

Wenn Sie den root-Benutzer in der Zukunft entsperren müssen, können Sie den folgenden Befehl verwenden:

sudo passwd -u root

Dieser Befehl entsperrt das root-Konto und ermöglicht es Ihnen, ein neues Passwort für den root-Benutzer festzulegen. Sie sollten jedoch vorsichtig sein, das root-Konto nur zu entsperren, wenn es unbedingt notwendig ist.

4.2 Benutzer der sudo Gruppe hinzufügen

Um einem Benutzer in einem Linux-System sudo-Rechte zu erteilen, müssen Sie ihn der sudo-Gruppe hinzufügen. Die genauen Befehle können je nach Linux-Distribution variieren, aber im Allgemeinen können Sie das mit dem Befehl usermod tun.

Möchten Sie einen Benutzer namens username zur sudo-Gruppe hinzufügen, müssen Sie folgendes mit root Rechten tun:

   usermod -aG sudo username

Überprüfen Sie, ob der Benutzer erfolgreich zur sudo-Gruppe hinzugefügt wurde:

   groups username   

Die Ausgabe sollte “sudo” irgendwo in der Liste der Gruppen enthalten, zu denen der Benutzer gehört.

Bitte beachten Sie, dass der -aG-Parameter für usermod bedeutet, dass der Benutzer den angegebenen Gruppen hinzugefügt wird und dass seine bestehenden Gruppenzugehörigkeiten beibehalten werden (-a steht für “append” und -G für “groups”).

Bitte beachten Sie auch, dass in einigen Linux-Distributionen die Gruppe, die sudo-Rechte erteilt, nicht “sudo” sondern “wheel” ist. In diesem Fall würden Sie usermod -aG wheel username verwenden.

Weiter können Sie die Eingabe des Benutzerpassworts erlassen wenn Sie mit dem Befehl visudo folgenden Eintrag hinzufügen:

USERNAME ALL=(ALL) NOPASSWD:ALL

Ersetzen Sie USERNAME durch den entsprechenden Benutzer.

4.3 Policies

4.3.1 Sudo Policies: Anwendungsbeispiele und Praxis

Sudo ist flexibel und erlaubt detaillierte Zugriffsrichtlinien, die über die /etc/sudoers-Datei oder über Dateien im /etc/sudoers.d/-Verzeichnis gesteuert werden.

Dieses System ermöglicht es Systemadministratoren, spezifische Zugriffsrechte zu gewähren, anstatt den Benutzern vollständige root-Rechte zu geben, was sowohl das System als auch die Sicherheit gefährden könnte.

4.3.1.1 Beispiel 1: Grundlegende Richtlinie

Eine grundlegende sudo-Richtlinie kann darin bestehen, dass ein normaler Benutzer administrative Befehle ausführen kann. Diese würde in der sudoers-Datei folgendermaßen aussehen:

alice ALL=(ALL:ALL) ALL

In diesem Beispiel kann der Benutzer “alice” auf jedem Host als jeder Benutzer und jede Gruppe jeden Befehl ausführen. Die “ALL”-Konvention wird häufig verwendet, um “alle” in sudo-Kontexten darzustellen.

4.3.1.2 Beispiel 2: Beschränkung auf bestimmte Befehle

Es ist oft sinnvoller, den Benutzern nur den Zugriff auf bestimmte Befehle zu gestatten. Im folgenden Beispiel kann der Benutzer “bob” nur den Befehl “/sbin/shutdown” ausführen:

bob ALL=(root) /sbin/shutdown

Dies gibt “bob” die Möglichkeit, das System herunterzufahren, jedoch keine weiteren root-Berechtigungen.

4.3.1.3 Beispiel 3: Sudo ohne Passworteingabe

In einigen Fällen, insbesondere bei Skripten, kann es notwendig sein, dass bestimmte Befehle ohne Passworteingabe ausgeführt werden können. Dies ist über die NOPASSWD-Direktive möglich:

alice ALL=(ALL) NOPASSWD: /usr/bin/apt-get

Hier kann Alice das apt-get-Kommando als jeder Benutzer ohne Passworteingabe ausführen.

4.3.1.4 Beispiel 4: Benutzergruppen

Sudo kann auch mit Benutzergruppen arbeiten, was es einfacher macht, Richtlinien auf viele Benutzer anzuwenden. Zum Beispiel könnten alle Benutzer in der Gruppe “admins” volle sudo-Rechte erhalten:

%admins ALL=(ALL) ALL

Beachten Sie, dass Gruppennamen mit einem Prozentzeichen (%) beginnen.

4.3.2 sudo Command Logging

sudo bietet detaillierte Protokollierungsoptionen, die es ermöglichen, die Verwendung von Administratorrechten durch verschiedene Benutzer im System nachzuvollziehen. Verschiedene Logs überwachen sudo-Befehle und bieten eine klare Übersicht über alle ausgeführten Administratoraktionen.

  1. /var/log/auth.log (bei Debian-basierten Systemen) oder /var/log/secure (bei RHEL-basierten Systemen):

    tail -f /var/log/auth.log | grep 'sudo'

    oder

    tail -f /var/log/secure | grep 'sudo'

    Diese Logs enthalten detaillierte Authentifizierungsinformationen, einschließlich aller sudo-Aufrufe. Hier werden sowohl erfolgreiche als auch fehlgeschlagene sudo-Befehle protokolliert.

  2. Separate sudo Logdatei (wenn aktiviert):

    Falls in /etc/sudoers festgelegt, kann sudo seine Aktivitäten auch in eine eigene Logdatei schreiben. Dafür muss die folgende Konfiguration in die sudoers-Datei eingefügt werden:

    Defaults logfile="/var/log/sudo.log"

    Diese Datei protokolliert alle sudo-Befehle, was nützlich ist, um die Ausführungshistorie separat und übersichtlich nachzuverfolgen.

  3. Auditd (für tiefergehende Protokollierung):

    Der auditd-Dienst kann verwendet werden, um systemweite Ereignisse detailliert zu überwachen, einschließlich sudo-Befehlen. Mit einer Regel wie dieser lässt sich jeder sudo-Aufruf protokollieren:

    auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec

    Die Ergebnisse dieser Protokollierung finden sich in /var/log/audit/audit.log und können spezifisch für sudo-Aufrufe gefiltert werden:

    ausearch -k sudo_exec