sudo
Was ist sudo?
Sudo ist ein Kommandozeilen-Dienstprogramm für Unix und Unix-basierte Betriebssysteme wie Linux und macOS. Das Dienstprogramm bietet eine effiziente Möglichkeit, Benutzern oder Benutzergruppen vorübergehend privilegierten Zugriff auf Systemressourcen zu gewähren, damit sie Befehle ausführen können, die sie mit ihren normalen Konten nicht ausführen können. Benutzern kann sogar die Berechtigung erteilt werden, Befehle unter dem Root-Konto auszuführen – dem Konto mit den höchsten Berechtigungen auf Unix-Systemen. Sudo protokolliert auch alle Befehle und Argumente, so dass Administratoren das Verhalten der sudo-Benutzer verfolgen können.
In vielen Quellen heißt es, dass sudo für Superuser do steht, was früher auch zutraf. Die Gruppe, die sudo entwickelt, hat jedoch vor mehr als zehn Jahren aufgehört, diese Bezeichnung zu verwenden. Laut der Website der Gruppe bedeutet sudo mittlerweile su "do", was auf ein Tool hinweist, das su-ähnliche Funktionen bietet.
Su ist ein Kommandozeilenprogramm und steht für switch user oder substitute user. Wie sudo ermöglicht das Dienstprogramm einem Benutzer, Befehle unter einem anderen Konto auszuführen. Allerdings hat sudo einige wichtige Vorteile gegenüber su.
Wie funktioniert der Befehl sudo?
Mit sudo wird ein Benutzer beim Ausführen eines Befehls nach dem Passwort seines Kontos gefragt, nicht nach dem des privilegierten Kontos. Der Benutzer kann dann andere Befehle ausführen, ohne jedes Mal ein Passwort eingeben zu müssen, aber die Dauer ist begrenzt.
Standardmäßig wird eine Sitzung nach fünf Minuten Inaktivität beendet, und der Benutzer muss erneut ein Passwort eingeben. Administratoren können jedoch bei der Konfiguration von sudo eine andere Zeit als fünf Minuten festlegen.
Mit su kann der Benutzer manuell zu root oder einem anderen privilegierten Konto wechseln, indem er den Namen und das Passwort für dieses Konto verwendet. Das Konto bleibt so lange aktiv, bis der Benutzer ausdrücklich wieder zum ursprünglichen Konto wechselt. Dieser Ansatz funktioniert gut, kann aber riskant sein.
Ein Administrator kann beispielsweise mit su zum Root-Konto wechseln, ein paar Systembefehle ausführen und dann etwas anderes tun und dabei die privilegierte Verbindung vergessen. Wenn der Administrator dann zur Konsole zurückkehrt und versehentlich einen falschen Befehl ausführt, kann dies zu einem enormen Schaden führen, ganz zu schweigen von dem erhöhten Sicherheitsrisiko.
sudo hilft, solche Risiken zu minimieren, und gibt Systemadministratoren mehr Kontrolle. Ein Administrator kann Folgendes tun:
- Konfigurieren Sie die sudoers-Datei, um bestimmten Benutzern oder Gruppen die Möglichkeit zu geben, einige oder alle Befehle unter dem Root-Konto oder einem anderen privilegierten Konto auszuführen.
- Behalten Sie die detaillierte Kontrolle darüber, welche Befehle ein Benutzer auf jedem Host ausführen kann, basierend auf den Befehlsnamen und ihren Verzeichnispositionen.
- Zeigen Sie die protokollierte Aktivität an, die anzeigt, welche sudo-Benutzer welche Befehle ausgeführt haben und wann sie ausgeführt wurden.
- Steuern Sie, wie lange Benutzer Befehle auf privilegierter Ebene ausführen können, nachdem sie ihr Passwort eingegeben haben.
- Konfigurieren Sie Einstellungen für sudo-Plug-ins, Dateipfade, Debugging und die Frontend-Schnittstelle.
- Verwalten Sie eine einzige sudoers-Datei, die den Zugriff für mehrere Benutzer auf mehreren Systemen steuert.
Wie man sudo mit privilegierten Zugriff ausführt
Um mit sudo einen Befehl auf einer privilegierten Ebene auszuführen, stellt der Benutzer dem Befehl einfach das Schlüsselwort sudo voran, vorausgesetzt, ein Administrator hat ihm in der Datei sudoers die erforderlichen Rechte erteilt. Ein Benutzer kann zum Beispiel den folgenden Befehl ausführen, um die Host-Datei eines Systems zu bearbeiten.
sudo vi /etc/hosts
Wenn der Benutzer versucht, diesen Befehl ohne Einbindung von sudo auszuführen und nicht über die erforderlichen Berechtigungen verfügt, gibt das Hostsystem eine Meldung aus, dass der Zugriff verweigert wird. Durch die Einbindung von sudo kann der Benutzer nun den Inhalt der Datei auf privilegierter Ebene abrufen und bearbeiten.