Mit dem Befehl sudo kann ein Administrator eine Konfigurationsdatei namens /etc/sudoers einrichten und bestimmte Befehle definieren, die bestimmte Benutzer unter einer angenommenen Identität ausführen dürfen.
Der sudo-Befehl ist in vielerlei Hinsicht wie su, hat aber einige wichtige zusätzliche Fähigkeiten. Der Administrator kann sudo so konfigurieren, dass ein normaler Benutzer auf kontrollierte Weise Befehle als ein anderer Benutzer (normalerweise der Superuser) ausführen kann. Insbesondere kann ein Benutzer auf einen oder mehrere spezifische Befehle beschränkt sein und auf keine anderen. Ein weiterer wichtiger Unterschied besteht darin, dass die Verwendung von sudo keinen Zugriff auf das Passwort des Superusers erfordert. Die Authentifizierung mit sudo erfordert das eigene Passwort des Benutzers. Nehmen wir zum Beispiel an, dass sudo so konfiguriert wurde, dass wir ein fiktives Backup-Programm namens backup_script ausführen können, das Superuser-Rechte erfordert. Mit sudo geht das so:
$ sudo backup_script Password: System Backup Starting...
Nach der Eingabe des Befehls werden wir nach unserem Passwort gefragt (nicht das des Superusers), und sobald die Authentifizierung abgeschlossen ist, wird der angegebene Befehl ausgeführt.
sudo V/s su
Ein wichtiger Unterschied zwischen su und sudo besteht darin, dass sudo weder eine neue Shell startet noch die Umgebung eines anderen Benutzers lädt. Das bedeutet, dass Befehle nicht anders in Anführungszeichen gesetzt werden müssen, als dies ohne die Verwendung von sudo der Fall wäre. Beachten Sie, dass dieses Verhalten durch Angabe verschiedener Optionen außer Kraft gesetzt werden kann. Beachten Sie auch, dass sudo verwendet werden kann, um eine interaktive Superuser-Sitzung zu starten (ähnlich wie su -), indem Sie die Option -i angeben. Weitere Informationen finden Sie auf der sudo-Manpage.
Um zu sehen, welche Berechtigungen von sudo gewährt werden, verwenden Sie die Option -l, um sie aufzulisten.
$ sudo -l User me may run the following commands on this host: (ALL) ALL
sudo-Befehlsbeispiele
1. Um den aktuellen sudo-Status für den Benutzer aufzulisten:
# sudo -l # sudo -U santosh -l (for specific user)
2. So listen Sie die Ausgabe in einer langen Liste auf:
# sudo –U santosh -ll
3. So entfernen Sie zwischengespeicherte Anmeldeinformationen von Benutzern:
# sudo -k
4. So erhalten Sie eine Dateiliste eines nicht lesbaren Verzeichnisses:
# sudo ls /usr/local/protected
5. So zeigen Sie Systemprotokolle an, auf die nur root und Benutzer in der Gruppe adm zugreifen können:
# sudo -g adm view /var/log/syslog
6. So fahren Sie eine Maschine herunter:
# sudo shutdown -r +15 "quick reboot"
7. So führen Sie den Befehl im Hintergrund aus:
# sudo -b mount /dev/cdrom /DVD
8. Um den Befehl als ein anderer Benutzer auszuführen:
# sudo –u oracle /xyz/abc.sh
9. So führen Sie den angegebenen Befehl aus, indem Sie die primäre Gruppe auf die angegebene Gruppe setzen:
# sudo –g DBA /xyz/abc.sh
10. So validieren Sie die Benutzeranmeldeinformationen:
# sudo –v ### updates his cached credentials, like if password has been changed.
Abschließender Gedanke
Wenn Sie berechtigt sind, führt sudo den Befehl als Superuser aus. Autorisierte Benutzer von sudo und die Befehle, die sie ausführen dürfen, sind in der sudo-Konfigurationsdatei /etc/sudoers aufgeführt . Wenn ein nicht autorisierter Benutzer versucht, einen Befehl auszuführen, informiert sudo einen Administrator per E-Mail. Standardmäßig wird die Nachricht an das Root-Konto gesendet. Benutzer, die versuchen, Befehle auszuführen, werden zur Eingabe ihres Kennworts aufgefordert. Nach der Authentifizierung setzt sudo einen Zeitstempel für den Benutzer. Für fünf Minuten ab dem Zeitstempel kann der Benutzer weitere Befehle ausführen, ohne nach seinem Passwort gefragt zu werden. Diese Nachfrist kann durch Einstellungen in der Datei /etc/sudoers außer Kraft gesetzt werden. Siehe auch /etc/sudoers für Konfigurationsbeispiele.