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:
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.
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.
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.
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.
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.
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 rootDieser 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 rootDieser 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.
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.
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.
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) ALLIn 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.
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/shutdownDies gibt “bob” die Möglichkeit, das System herunterzufahren, jedoch keine weiteren root-Berechtigungen.
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-getHier kann Alice das apt-get-Kommando als jeder Benutzer
ohne Passworteingabe ausführen.
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) ALLBeachten Sie, dass Gruppennamen mit einem Prozentzeichen
(%) beginnen.
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.
/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.
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.
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_execDie 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