Begrenzung des sudo-Zugangs mit der sudoers-Datei
In diesem Schritt lernen Sie, wie Sie die sudo-Rechte eines Benutzers auf bestimmte Befehle beschränken können, indem Sie die sudoers-Datei verwenden. Dies implementiert das Prinzip des geringsten Privilegs, das besagt, dass Benutzer nur die minimal erforderlichen Rechte haben sollten, um ihre Aufgaben auszuführen.
Die sudoers-Datei verstehen
Die /etc/sudoers
-Datei kontrolliert, wer den sudo-Befehl verwenden kann und welche Befehle er ausführen darf. Diese Datei sollte niemals direkt mit einem normalen Texteditor bearbeitet werden, da Syntaxfehler Sie aus dem System sperren könnten. Verwenden Sie stattdessen immer den visudo
-Befehl, der vor dem Speichern auf Syntaxfehler prüft.
Die sudoers-Datei bearbeiten
Um die sudoers-Datei sicher zu bearbeiten, verwenden Sie den visudo
-Befehl:
sudo visudo
Dadurch wird die sudoers-Datei im Standardeditor (meist nano oder vi) geöffnet.
Die sudoers-Syntax verstehen
Die grundlegende Syntax für einen sudo-Eintrag in der sudoers-Datei lautet:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
Dabei bedeuten:
user_or_group
: Der Benutzer oder die Gruppe, auf die diese Regel angewendet wird
host
: Der Hostname, auf den diese Regel angewendet wird (meist ALL)
run_as_user
: Der Benutzer, unter dem die Befehle ausgeführt werden (meist ALL, was root bedeutet)
run_as_group
: Die Gruppe, unter der die Befehle ausgeführt werden (kann weggelassen werden)
NOPASSWD
: Optionaler Tag, der es ermöglicht, Befehle ohne Passworteingabe auszuführen
commands
: Die spezifischen Befehle, die mit sudo ausgeführt werden können
Eingeschränkten sudo-Zugang hinzufügen
Scrollen Sie ans Ende der Datei und fügen Sie die folgende Zeile hinzu, um trusted_advisor
die Berechtigung zu erteilen, nur die Befehle cp
und mv
ohne Passwort auszuführen:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
Um die Datei in nano zu speichern, drücken Sie Ctrl+O
, dann Enter
, und um zu beenden, drücken Sie Ctrl+X
.
Den eingeschränkten sudo-Zugang testen
Jetzt testen wir, ob der eingeschränkte sudo-Zugang wie erwartet funktioniert. Zunächst erstellen wir eine Testdatei im aktuellen Verzeichnis:
echo "This is a test file" > important_file.txt
Wechseln Sie nun zum Benutzer trusted_advisor
:
su - trusted_advisor
Geben Sie bei entsprechender Aufforderung das Passwort ein.
Versuchen Sie, die Datei in das Root-Verzeichnis zu kopieren, was erlaubt sein sollte:
sudo cp /home/labex/project/important_file.txt /root/
Dies sollte ohne Passworteingabe erfolgreich sein.
Versuchen Sie nun, einen Befehl auszuführen, der nicht in der erlaubten Liste steht, wie z.B. cat
:
sudo cat /root/important_file.txt
Sie sollten eine Fehlermeldung über verweigerten Zugang erhalten, da cat
nicht in der Liste der erlaubten Befehle steht.
Vergewissern Sie sich schließlich, dass die Datei in das Root-Verzeichnis kopiert wurde:
sudo ls /root/
Sie sollten important_file.txt
in der Ausgabe sehen.
Beenden Sie die Sitzung des Benutzers trusted_advisor
:
exit
Die Testdatei entfernen
Um aufzuräumen, entfernen Sie die Testdatei:
sudo rm important_file.txt