Der sudo-Befehl ermöglicht es Nicht-Root-Benutzern, andere Linux-Befehle auszuführen, die normalerweise Superuser-Rechte erfordern würden, während die sudoers-Datei das System anweist, wie der sudo-Befehl zu handhaben ist. In diesem Tutorial zeigen wir Ihnen alle Grundlagen des sudo-Befehls und wie Sie die sudoers-Datei bearbeiten.
Sudo verstehen
Um zu zeigen, wie sudo funktioniert, greifen Sie zuerst über SSH auf Ihren VPS zu. Wenn Sie Probleme haben, sehen Sie sich das PuTTY-Tutorial an.
Standardmäßig muss der Root-Benutzer das Präfix sudo nicht verwenden. Sie haben bereits alle möglichen Privilegien. Wenn hingegen ein Nicht-Root-Benutzer einen anderen Benutzer hinzufügen möchte, müsste er das sudo-Präfix wie folgt zum useradd-Befehl hinzufügen:
sudo useradd edward
Wenn der Benutzer das sudo-Präfix nicht verwendet, erhält er eine Berechtigung verweigert Ausgabe.
Die Sudoers-Datei
Der sudo-Befehl wird über eine Datei konfiguriert, die sich in /etc/ befindet Sudoers genannt .
Über den Befehl sudo erteilen Sie regulären Benutzern Administratorrechte. Normalerweise hat der erste Benutzer, den Sie bei der Installation von Ubuntu erstellen, sudo-Rechte. In einer VPS-Umgebung ist dies der Standard-Root-Benutzer. Sie können andere Benutzer so konfigurieren, dass sie den Befehl sudo ebenfalls ausführen können. Das kann durch Bearbeiten von sudoers erfolgen.
Sudoers-Dateisyntax
Sie können die Datei mit Ihrem bevorzugten Texteditor öffnen. Wir verwenden vi :
vi /etc/sudoers
Die Datei unseres VPS sieht so aus:
Schauen wir uns einige der Formate und Regeln an, die beim Bearbeiten von Sudoern zu befolgen sind:
- Alle Zeilen beginnend mit # sind Kommentare
- root ALL=(ALL:ALL) ALL – diese Zeile bedeutet, dass der Root-Benutzer unbegrenzte Rechte hat und jeden Befehl auf dem System ausführen kann
- %admin ALLE=(ALLE) ALLE – das %-Zeichen gibt eine Gruppe an. Jeder in der Admin-Gruppe hat die gleichen Rechte wie der Root-Benutzer
- %sudo ALL=(ALLE:ALLE ) ALLE – alle Benutzer in der sudo-Gruppe haben die Berechtigung, jeden Befehl auszuführen
Eine weitere interessante Zeile ist #includedir /etc/sudoers.d, das bedeutet, dass wir Konfigurationen zur Datei sudoers.d hinzufügen und hier verlinken können.
Bearbeiten der Sudoers-Datei
Zum Bearbeiten von /etc/sudoers verwenden Sie folgenden Befehl:
sudo visudo -f /etc/sudoers
Es wird empfohlen, visudo zu verwenden, um die sudoers-Datei zu bearbeiten. Visudo stellt sicher, dass sudoers jeweils von einem Benutzer bearbeitet wird, und bietet die erforderlichen Syntaxprüfungen.
Um zu sehen, welche Benutzer in der sudo-Gruppe sind, können wir einen grep-Befehl verwenden:
grep ‘sudo’ /etc/group
Dies gibt eine Liste mit Benutzernamen aus.
Um einen Benutzer namens bill zur sudo-Gruppe hinzuzufügen, verwenden wir den adduser Befehl in der Befehlszeile, etwa so:
adduser bill sudo
Wenn wir den grep-Befehl verwenden, um zu überprüfen, wer in der Gruppe ist, sehen wir die Rechnung des Benutzernamens.
Wenn Sie jemandem Root-Rechte geben möchten, fügen Sie ihn einfach zu sudo hinzu.
So entfernen Sie einen Benutzer aus sudo:
deluser bill sudo
Der deluser-Befehl entfernt bill aus der sudo-Gruppe.
Jetzt kann der Benutzer bill keine Aktionen mehr ausführen, die sudo-Berechtigungen erfordern.
Verwenden Sie die Sudoers-Datei, um bestimmte Berechtigungen zu gewähren
Was ist, wenn wir möchten, dass Bill nur bestimmte Arten von Befehlen mit sudo-Berechtigungen ausführen kann, wie z. B. Netzwerke?
Dazu erstellen wir eine Konfigurationsdatei in /etc/sudoers.d/ Netzwerk genannt.
Verwenden Sie den folgenden Befehl, um die Datei zu erstellen:
sudo visudo -f /etc/sudoers.d/networking
Fügen Sie folgenden Text in die Datei ein:
Cmnd_Alias CAPTURE = /usr/sbin/tcpdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
In der obigen Datei haben wir eine netadmin-Gruppe erstellt. Benutzer in der netadmin-Gruppe können in NETALL angegebene Befehle ausführen. NETALL enthalten wiederum alle Befehle unter den Aliasnamen CAPTURE und SERVER. Der Befehl tcpdump befindet sich unter dem Alias CAPTURE, d. h. /usr/sbin/tcpdump.
Als nächstes fügen wir den Benutzer bill zur netadmin-Gruppe hinzu:
sudo adduser bill netadmin
Jetzt kann der Benutzer bill den Befehl tcpdump zusammen mit anderen netzwerkbezogenen Befehlen ausführen.
Fazit
Wenn Sie mit mehreren Benutzern arbeiten, ist das Verständnis des sudo-Befehls und der sudoers-Datei ein absolutes Muss. In diesem Tutorial haben Sie alle Grundlagen gelernt, um die Kontrolle über die Privilegien Ihres Systems zu übernehmen!