Unter Linux gewähren Sie Benutzern in der sudoers-Datei erhöhte Berechtigungen. Standardmäßig hat nur der Root-Benutzer diese Rechte. In einigen Fällen kann es jedoch erforderlich sein, dass auch normale Benutzer erhöhte Berechtigungen haben.
Kein Leser? Sehen Sie sich dieses zugehörige Video-Tutorial an! Sie sehen das Video nicht? Stellen Sie sicher, dass Ihr Werbeblocker deaktiviert ist.Die sudoers-Datei ist in erster Linie für Systemadministratoren zu verwalten und kann für Neulinge etwas entmutigend sein. Lassen Sie sich davon nicht entmutigen! Mit Geduld und Liebe zum Detail kann jeder lernen, die sudoers-Datei effektiv zu verwalten.
In diesem Handbuch erfahren Sie, wie Sie die Sudoers bearbeiten und Benutzern sicher erhöhte Berechtigungen erteilen. Sie lernen auch einige Best Practices kennen, die Sie bei der Arbeit mit Sudoern beachten sollten. Geh nirgendwo hin; machen Sie sich bereit, die Verwaltung Ihrer Linux-Benutzerrechte auf die nächste Stufe zu heben!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie ein Linux-System mit einem regulären Benutzerkonto haben, das Sie verwenden können. Dieses Handbuch verwendet ein Ubuntu 20.04-System, aber jede andere Linux-Distribution sollte auch funktionieren.
Die Linux-Sudoers-Dateiübersicht
Die sudoers-Datei befindet sich in /etc/sudoers, einer einfachen Textdatei, die die Richtlinien enthält, welche Privilegien ein Benutzer erhält, wenn er den sudo-Befehl ausführt. Bevor Sie fortfahren, ist es wichtig, sich mit den Standardinhalten und Abschnitten der sudoers-Datei vertraut zu machen.
Der folgende Screenshot zeigt den Inhalt der Standard-Sudoers-Datei unter Ubuntu 20.04. Der Standardinhalt der sudoers-Datei kann je nach Linux-Distribution unterschiedlich sein.
Das Folgende ist ein kurzer Überblick über die Abschnitte in der sudoers-Datei.
Standardbereich
Defaults env_reset - Executing commands with sudo creates a new environment with minimal or default environment variables. In most Linux distros, sudo will load the environment variable in the /etc/environment file.
- Defaults mail_badpass – Diese Zeile löst das Senden einer E-Mail an den Stamm aus, wenn ein Benutzer mit sudo ein falsches Passwort eingibt.
Defaults secure_path - This line defines the PATH environment variable that sudo uses instead of the user’s PATH environment.
Benutzer- und Gruppen-Sudo-Berechtigungen
Diese Zeile definiert die sudo-Berechtigungen für bestimmte Benutzer oder Mitglieder von Gruppen.
Hinweis:Das % am Anfang zeigt an, dass die Richtlinie für die Gruppenmitglieder gilt.
- Das erste Feld definiert, dass seine Richtlinie für
root
gilt Benutzer und die Mitglieder deradmin
undsudo
Gruppen. - Der erste
ALL
bedeutet, dass die Regel für alle Hosts gilt. - Die zweite
ALL
erlaubt denroot
Konto, um Befehle als beliebiger Benutzer auszuführen. - Der dritte
ALL
erlaubt denroot
Konto, um Befehle als beliebige Gruppe auszuführen. - Der letzte
ALL
bedeutet, dass diese Richtlinie für Befehlsbefehle gilt.
Anweisungen einschließen
Am Ende der Datei sehen Sie eine Zeile, die wie ein Kommentar aussieht, aber keiner ist. Die Zeilen, die mit #include und #includedir beginnen, heißen include-Direktiven.
#includedir /etc/sudoers.d – Diese Zeile weist sudo an, in /etc/sudoers.d zu suchen Verzeichnis für zusätzliche Konfigurationsdateien.
Bearbeiten der Sudoers-Datei mit dem richtigen Werkzeug
Die sudoers-Datei ist eine einfache Textdatei, die Sie mit Ihrem bevorzugten Texteditor öffnen können – dies ist jedoch nicht ratsam. Wieso den? Da der Inhalt der sudoers-Datei einer bestimmten Syntax folgt, hat ein normaler Texteditor keine Sicherheitsvorkehrungen, um Sie daran zu hindern, die sudoers-Datei zu beschädigen.
Unsachgemäße Konfiguration kann zu Sicherheitsproblemen führen; Im schlimmsten Fall kann jeder Benutzer die Möglichkeit verlieren, seine Berechtigungen zu erhöhen.
Was ist das richtige Werkzeug? — visudo
. Dieses Tool öffnet die sudoers-Datei im Standard-Texteditor. Zusätzlich visudo
verhindert die gleichzeitige Bearbeitung und führt vor dem Beenden eine Fehlerprüfung durch.
In Ubuntu 20.04 ist der Standardeditor vim
, aber Sie können einen alternativen Editor festlegen, z. B. nano
, wenn Sie möchten.
1. Öffnen Sie eine Terminalsitzung oder SSH auf Ihrem Linux-Rechner.
2. Führen Sie den folgenden Befehl aus, um die verfügbaren Texteditoren auf Ihrem Computer aufzulisten.
sudo update-alternatives --config editor
Wie Sie sehen können, ist der aktuelle Standardeditor Auswahl 5, also vim. Angenommen, Sie möchten die Standardeinstellung beibehalten, drücken Sie die Eingabetaste. Wenn Sie einen anderen Editor bevorzugen, drücken Sie die entsprechende Auswahlnummer, z. B. 0 für Nano, und drücken Sie die Eingabetaste.
3. Führen Sie nun den folgenden Befehl aus, um die sudoers-Datei im Standardeditor zu öffnen.
sudo visudo
Wenn die sudoers-Datei in einer anderen Sitzung geöffnet ist, wird der folgende Fehler angezeigt, und visudo verhindert, dass Sie die Datei öffnen. Auf diese Weise können keine zwei Benutzer gleichzeitig widersprüchliche Änderungen vornehmen.
visudo:/etc/sudoers beschäftigt, versuchen Sie es später erneut
4. Sobald die sudoers-Datei geöffnet ist, absichtlich einen Syntaxfehler verursachen indem Sie die letzte Instanz von ALL löschen, dann speichern und den Editor verlassen.
5. visudo will warn you that there’s a syntax error and asks, “What now?”. At this point, you have three options.
- Geben Sie
e
ein und drücken Sie die Eingabetaste, um die Datei erneut zu bearbeiten. Mit dieser Option können Sie die sudoers-Datei im Editor noch einmal korrigieren.
- Geben Sie
x
ein und drücken Sie die Eingabetaste, um die Änderungen zu verwerfen undvisudo
zu verlassen .
- Geben Sie Q ein, drücken Sie die Eingabetaste, um den Fehler zu ignorieren, speichern Sie die sudoers-Datei und beenden Sie visudo. Wählen Sie diese Option nur, wenn Sie sich der Konsequenzen sicher sind.
Drücken Sie in diesem Beispiel x, um die Änderungen zu verwerfen und den Inhalt der alten sudoers-Datei beizubehalten.
Wie Sie sehen können, wäre es schwierig, die sudoers-Datei mit visudo
durcheinander zu bringen dauerhaft.
Gewähren spezifischer Privilegien
Das direkte Vornehmen von Änderungen an der sudoers-Datei ist machbar, kann aber unhandlich werden, wenn die Richtlinien und Regeln wachsen. Die bessere Alternative ist die Verwendung von include-Direktiven. Auf diese Weise können Sie mehrere Konfigurationsdateien erstellen, die verschiedene benutzerdefinierte Richtlinien und Regeln enthalten.
Angenommen, Sie möchten einer Gruppe von Benutzern die Möglichkeit geben, bestimmte Netzwerkbefehle als root auszuführen. Dazu müssten Sie eine Datei im Verzeichnis /etc/sudoers.d erstellen, die die benutzerdefinierten Regeln für diese Gruppe enthält.
1. Erstellen Sie zunächst die gewünschte Gruppe, die das Ziel der benutzerdefinierten Regel sein soll. In diesem Beispiel lautet der Name der Gruppe netadmin.
sudo addgroup netadmin
2. Als nächstes erstellen Sie ein reguläres Benutzerkonto und machen es zu einem Mitglied der netadmin-Gruppe.
sudo adduser ata
sudo usermod -aG netadmin ata
id ata
3. Erstellen Sie nun eine neue Sudoers-Datei mit dem Namen /etc/sudoers.d/networking und öffnen Sie sie mit visudo.
sudo visudo -f /etc/sudoers.d/networking
4. Kopieren Sie die folgenden Zeilen und fügen Sie sie in das Netzwerk ein Datei.
Cmnd_Alias CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL
Die Cmnd_Alias-Zeilen erstellen Aliase für die Befehle. In diesem Beispiel weisen Sie dem Befehl tcpdump den Alias CAPTURE und den Befehlen apache2ctl und htpasswd SERVER zu. Stellen Sie sich diese Zeilen als Gruppierung von Befehlen vor und geben Sie ihnen einen gemeinsamen Namen.
Die letzte Zeile gibt an, dass Mitglieder der netadmin-Gruppe jeden Befehl im NETALL-Alias als root ausführen können. Diese Zeile muss nach den Cmnd_Alias-Zeilen kommen.
5. Um die sudo-Berechtigungen des ata-Kontos zu testen, wechseln Sie zum ata-Benutzerkonto.
su - ata
6. Führen Sie nun einen der Befehle aus, auf die der Benutzer sudo-Zugriff hat, z. B. tcpdump.
sudo tcpdump -c 5
Wie Sie unten sehen können, sollte der sudo-Befehl funktionieren, da das Konto Zugriff hat, um ihn auszuführen.
7. Testen und bestätigen Sie als Nächstes, dass das Konto keine anderen Befehle ausführen kann, die nicht in der benutzerdefinierten Regel enthalten sind, z. B. lshw.
sudo lshw
Daher schlägt der sudo-Versuch fehl, da Ihr Konto nicht über die Berechtigung verfügt, den Befehl als root auszuführen.
8. Wechseln Sie schließlich zurück zu Ihrem Konto, indem Sie den folgenden Befehl ausführen.
exit
Härten der Sicherheit mit der passwd_tries-Option
Sie können niemanden so oft versuchen lassen, ein falsches Passwort mit sudo einzugeben, wie er möchte – das wäre eine offene Einladung für Brute-Force- oder Passwort-Spraying-Angriffe. Als vorbeugende Maßnahme müssen Sie die maximale Anzahl der Wiederholungen festlegen, indem Sie die Option passwd_tries in der sudoers-Datei hinzufügen.
1. Öffnen Sie zuerst die benutzerdefinierte sudoers-Datei mit visudo.
sudo visudo -f /etc/sudoers.d/networking
2. Fügen Sie die folgende Zeile am Ende der sudoers-Datei hinzu. Diese Zeile lässt bis zu vier falsche sudo-Passwortversuche zu, bevor weitere Versuche verhindert werden.
Defaults passwd_tries=4
Die benutzerdefinierten Sudoers-Dateien sollten jetzt genauso aussehen wie im folgenden Screenshot. Achten Sie darauf, die Datei zu speichern und den Editor zu verlassen.
3. Wechseln Sie nun zum Benutzerkonto ata und führen Sie den Befehl tcpdump erneut als root aus. Geben Sie dieses Mal jedoch ein falsches Passwort ein, bis die Passwortabfrage endet.
sudo tcpdump
Nach Ihrem vierten Versuch mit einem falschen Passwort sehen Sie, dass sudo Sie daran hindert, zum fünften Mal ein anderes Passwort einzugeben.
Schlussfolgerung
In diesem Tutorial haben Sie die Grundlagen der Standard-Sudoers-Datei gelernt. Sie haben benutzerdefinierte Regeln in einer separaten sudoers-Datei erstellt, um benutzerdefinierte Berechtigungen zu gewähren. Das Erstellen und Anwenden benutzerdefinierter Regeln ist sicherer als das Hinzufügen von Benutzern zu sudo
Gruppe.
Sie haben auch gelernt, wie Sie die passwd_tries-Option anwenden, um anzugeben, wie viele falsche Kennwortversuche ein Benutzer machen kann, bevor sudo den Authentifizierungsversuch beendet. Sie können genauer steuern, welche Benutzer Zugriff auf welche Befehle haben.
Hören Sie hier nicht auf! Mit der sudoers-Datei können Sie viel mehr tun, z. B. das Hinzufügen einer Vorlesungsdatei, um das sudo-Erlebnis des Benutzers aufzupeppen. Vielen Dank fürs Lesen und viel Spaß beim Sichern Ihres Linux-Systems!