Mit dem Befehl su kann jeder Benutzer, der das Root-Passwort kennt, „root bekommen“ und alles tun, was der Root-Benutzer tun kann. Ein Konto, das „su – root“ verwendet, ist im Wesentlichen der Serveradministrator. Dies ist oft viel mehr Macht, als an Benutzer delegiert werden sollte. Eine bessere Vorgehensweise ist es, bestimmte Funktionen an Benutzer zu delegieren, anstatt systemweite Root-Rechte zu gewähren.
Der Befehl sudo ermöglicht es dem Serveradministrator, bestimmte Befehle an bestimmte Benutzer zu delegieren, ohne ihnen volle Berechtigungen auf dem Server zu gewähren. Die Delegierung erfolgt in der Datei /etc/sudoers mithilfe des Visudo-Editors. Benutzern und Gruppen können bestimmte Befehle zur Ausführung gegeben werden, um ihre Aufgaben zu erfüllen, ohne über vollständige Administratorrechte zu verfügen.
Syntax
Die Syntax des sudo-Befehls lautet:
$ sudo [options] {command}
Wenn beim Ausführen des sudo-Befehls der folgende Fehler auftritt:
sudo: command not found
Sie können versuchen, das sudo-Paket wie unten gezeigt entsprechend Ihrer Wahl der Distribution zu installieren.
Verteilung | Befehl |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
Alpin | apk sudo hinzufügen |
Arch Linux | pacman -S sudo |
Kali-Linux | apt-get install sudo |
CentOS | yum install sudo |
Fedora | dnf install sudo |
Raspbian | apt-get install sudo |
sudo-Befehlsbeispiele
1. Führen Sie einen Befehl als Superuser aus:
$ sudo less /var/log/syslog
2. Bearbeiten Sie eine Datei als Superuser mit Ihrem Standardeditor:
$ sudo --edit /etc/fstab
3. Führen Sie einen Befehl als ein anderer Benutzer und/oder eine andere Gruppe aus:
$ sudo --user=user --group=group id -a
4. Wiederholen Sie den letzten Befehl mit vorangestelltem `sudo` (nur in `bash`, `zsh`, etc.):
$ sudo !!
5. Starten Sie die Standard-Shell mit Superuser-Rechten und führen Sie Login-spezifische Dateien aus (`.profile`, `.bash_profile` usw.):
$ sudo --login
6. Starten Sie die Standard-Shell mit Superuser-Rechten, ohne die Umgebung zu ändern:
$ sudo --shell
7. Starten Sie die Standard-Shell als der angegebene Benutzer, laden Sie die Umgebung des Benutzers und lesen Sie Login-spezifische Dateien (`.profile`, `.bash_profile` usw.):
$ sudo --login --user=user
8. Listen Sie die erlaubten (und verbotenen) Befehle für den aufrufenden Benutzer auf:
$ sudo --list
Schlussfolgerung
Wie genau funktioniert das can-do-anything sudo-Programm? Es ist einfacher als Sie denken! Siehe folgenden Code:
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
Wir stellen fest, dass die ausführbare Binärdatei sudo in Wirklichkeit ein Setuid-Root-Programm ist! Denken Sie also darüber nach:Immer wenn Sie ein Programm mit sudo ausführen, wird der sudo-Prozess sofort mit Root-Rechten ausgeführt – ohne Passwort, ohne viel Aufhebens. Aber natürlich muss der Benutzer aus Sicherheitsgründen das Passwort eingeben; Sobald sie es richtig eingegeben haben, fährt sudo mit der Ausführung fort und führt den gewünschten Befehl aus – als root. Wenn der Benutzer das Passwort nicht korrekt eingibt (in der Regel innerhalb von drei Versuchen), bricht sudo die Ausführung ab.