Linux-Berechtigungen vergeben

LinuxBeginner
Jetzt üben

Einführung

Unter Linux gehören die Verwaltung von Benutzerberechtigungen und die Zugriffskontrolle zu den grundlegenden Aufgaben der Systemadministration und Sicherheit. Mit dem Befehl sudo (kurz für „superuser do“) können berechtigte Benutzer Befehle mit erhöhten Rechten ausführen, normalerweise mit den Rechten des Superusers oder des Kontos root.

In diesem Lab lernen Sie, wie Sie Benutzern in einer Linux-Umgebung Berechtigungen erteilen und entziehen. Sie fügen Benutzer zur Gruppe sudo hinzu, damit sie administrative Aufgaben ausführen können, und beschränken ihre Berechtigungen auf bestimmte Befehle. Diese Fähigkeiten sind wichtig, um Systeme zu schützen, in denen der Zugriff auf sensible Vorgänge sorgfältig kontrolliert werden muss.

Benutzerverwaltung und sudo-Grundlagen

In diesem Schritt lernen Sie die Benutzerverwaltung unter Linux und die Grundlagen des Befehls sudo kennen. Sie erstellen einen neuen Benutzer und erfahren, wie Sie ihm administrative Rechte erteilen.

Was ist sudo?

Mit dem Befehl sudo können berechtigte Benutzer Befehle mit den Sicherheitsrechten eines anderen Benutzers ausführen, in der Regel mit den Rechten des Superusers (root). So lassen sich administrative Aufgaben erledigen, ohne sich als Benutzer root anzumelden. Das gilt als bewährte Sicherheitsmaßnahme.

Einen neuen Benutzer erstellen

Erstellen Sie zunächst ein neues Benutzerkonto. Öffnen Sie ein Terminal und führen Sie diesen Befehl aus:

sudo adduser trusted_advisor

Sie werden aufgefordert, ein Passwort und einige optionale Angaben für den neuen Benutzer einzugeben. Für dieses Lab können Sie ein einfaches Passwort wie password123 festlegen. Lassen Sie die übrigen Felder leer, indem Sie jeweils die Eingabetaste drücken.

Die Ausgabe sollte ungefähr so aussehen:

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
Is the information correct? [Y/n] Y

Benutzerinformationen überprüfen

Prüfen Sie den Inhalt der Datei /etc/passwd, um sicherzustellen, dass der Benutzer angelegt wurde:

grep trusted_advisor /etc/passwd

Die Ausgabe sollte eine Zeile mit den Benutzerinformationen enthalten.

sudo-Berechtigungen erteilen

Um einem Benutzer sudo-Berechtigungen zu erteilen, fügen Sie ihn der Gruppe sudo hinzu. Unter Ubuntu dürfen Mitglieder dieser Gruppe den Befehl sudo verwenden. Führen Sie dazu diesen Befehl aus:

sudo usermod -aG sudo trusted_advisor

Der Befehl fügt (-a) den Benutzer trusted_advisor zur Gruppe sudo hinzu (-G sudo). Der Benutzer kann nun Befehle mit administrativen Rechten ausführen.

sudo-Zugriff überprüfen

Wechseln Sie zum Benutzerkonto, um den sudo-Zugriff zu überprüfen. Versuchen Sie anschließend, den Inhalt des Verzeichnisses /root aufzulisten, auf das normalerweise nur der Benutzer root zugreifen kann:

su - trusted_advisor

Geben Sie bei der Aufforderung das Passwort ein, das Sie für diesen Benutzer festgelegt haben. Führen Sie anschließend diesen Befehl aus:

sudo ls /root

Bei der ersten Verwendung von sudo werden Sie erneut nach dem Passwort gefragt. Nach der Eingabe sollten Sie den Inhalt des Verzeichnisses /root sehen. Das bestätigt, dass der Benutzer sudo-Berechtigungen hat.

Beenden Sie zum Schluss die Sitzung des Benutzers trusted_advisor, um zu Ihrem ursprünglichen Benutzer zurückzukehren:

exit

sudo-Zugriff mit der sudoers-Datei einschränken

In diesem Schritt lernen Sie, sudo-Berechtigungen eines Benutzers mithilfe der sudoers-Datei auf bestimmte Befehle zu beschränken. Damit setzen Sie das Prinzip der minimalen Rechte um: Benutzer sollten nur die Berechtigungen erhalten, die sie für ihre Aufgaben benötigen.

Die sudoers-Datei verstehen

In der Datei /etc/sudoers ist festgelegt, wer den Befehl sudo verwenden darf und welche Befehle ausgeführt werden dürfen. Bearbeiten Sie diese Datei niemals direkt mit einem gewöhnlichen Texteditor. Syntaxfehler könnten dazu führen, dass Sie sich selbst aus dem System aussperren. Verwenden Sie stattdessen immer den Befehl visudo, der die Syntax vor dem Speichern überprüft.

Umfassenden Gruppenzugriff entfernen

Berechtigungen aus passenden sudo-Regeln werden miteinander kombiniert. Eine Regel für bestimmte Befehle hebt den umfassenden Zugriff durch die Gruppe sudo nicht auf. Entfernen Sie diesen umfassenden Zugriff zuerst in Ihrer ursprünglichen labex-Sitzung:

sudo deluser trusted_advisor sudo

Öffnen Sie für Tests eine neue Sitzung mit su - trusted_advisor, damit die aktualisierte Gruppenmitgliedschaft übernommen wird.

Die sudoers-Datei bearbeiten

Verwenden Sie zum sicheren Bearbeiten der sudoers-Datei den Befehl visudo:

sudo EDITOR=vim visudo

Damit wird ausdrücklich Vim geöffnet, sodass die folgenden Tasteneingaben zum Bearbeiten und Speichern für diesen Editor gelten. Drücken Sie G, um zur letzten Zeile zu springen, und dann o, um eine neue Zeile im Einfügemodus zu öffnen.

Die Syntax der sudoers-Datei verstehen

Ein sudo-Eintrag in der sudoers-Datei hat grundsätzlich folgende Syntax:

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

Dabei gilt:

  • user_or_group: Der Benutzer oder die Gruppe, für den beziehungsweise die diese Regel gilt
  • host: Der Hostname, für den die Regel gilt (normalerweise ALL)
  • run_as_user: Der Benutzer, als der die Befehle ausgeführt werden (root, wenn nur root zulässig ist, oder ALL für beliebige Benutzer)
  • run_as_group: Die Gruppe, als der die Befehle ausgeführt werden (kann weggelassen werden)
  • NOPASSWD: Ein optionales Tag, mit dem Befehle ohne Passworteingabe ausgeführt werden können
  • commands: Die einzelnen Befehle, die mit sudo ausgeführt werden dürfen

sudo-Zugriff auf bestimmte Befehle beschränken

Gehen Sie ans Ende der Datei und fügen Sie die folgende Zeile hinzu. Sie erlaubt trusted_advisor, ausschließlich die Befehle cp und mv ohne Passwort auszuführen:

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Fügen Sie außerdem diese separate Zeile hinzu, um in diesem Container ein eigenes sudo-Protokoll zu aktivieren. Der Container stellt /var/log/auth.log nicht bereit:

Defaults logfile="/var/log/sudo.log"

Drücken Sie Esc, geben Sie :wq ein und drücken Sie die Eingabetaste, um die Änderungen zu speichern und Vim zu schließen. Meldet visudo einen Syntaxfehler, drücken Sie e, um die Datei erneut zu bearbeiten und den Fehler zu korrigieren. Um die Änderungen in Vim zu verwerfen, drücken Sie Esc, geben Sie :q! ein und drücken Sie die Eingabetaste.

Bei dieser Übung geht es nur darum, passende Befehle zu erkennen: Unbeschränkter Zugriff auf cp oder mv mit Root-Rechten kann sensible Dateien überschreiben und ist keine sichere Einschränkung für den Produktionseinsatz.

Den eingeschränkten sudo-Zugriff testen

Testen Sie nun, ob der eingeschränkte sudo-Zugriff wie erwartet funktioniert. Kehren Sie zuerst zum Lab-Arbeitsverzeichnis zurück und erstellen Sie eine Testdatei:

cd /home/labex/project
echo "This is a test file" > important_file.txt

Wechseln Sie anschließend zum Benutzer trusted_advisor:

su - trusted_advisor

Geben Sie bei der Aufforderung das Passwort ein.

Versuchen Sie, die Datei in das Verzeichnis root zu kopieren. Dieser Vorgang sollte erlaubt sein:

sudo cp /home/labex/project/important_file.txt /root/

Der Befehl sollte erfolgreich ausgeführt werden, ohne nach einem Passwort zu fragen.

Versuchen Sie nun, einen nicht freigegebenen Befehl wie cat auszuführen:

sudo -n cat /root/important_file.txt

Der Befehl muss fehlschlagen, weil cat nicht erlaubt ist. Die Option -n verhindert eine Passwortabfrage. Die Fehlermeldung kann darauf hinweisen, dass ein Passwort erforderlich ist oder der Befehl nicht erlaubt ist. Der Dateiinhalt darf nicht ausgegeben werden.

Beenden Sie die Sitzung des eingeschränkten Benutzers, bevor Sie die Kopie überprüfen, denn auch ls gehört nicht zu den erlaubten Befehlen:

exit

Überprüfen Sie als labex, ob die Datei kopiert wurde:

sudo ls /root/

Die Ausgabe sollte important_file.txt enthalten.

Testdatei entfernen

Entfernen Sie zum Aufräumen die Testdatei:

sudo rm /home/labex/project/important_file.txt /root/important_file.txt

sudo-Protokolle und Sicherheitsaspekte

In diesem Schritt lernen Sie die Protokollierung von sudo-Aktivitäten und bewährte Sicherheitsmaßnahmen kennen. Die Überwachung der sudo-Nutzung ist für Sicherheitsprüfungen und die Nachvollziehbarkeit wichtig.

sudo-Protokollierung

Wenn Benutzer Befehle mit sudo ausführen, werden diese Aktionen protokolliert. So entsteht ein Prüfprotokoll, das bei der Sicherheitsüberwachung und der Fehlerbehebung hilfreich sein kann.

Bei Ubuntu-Installationen mit einem Systemprotokollierungsdienst wird häufig /var/log/auth.log verwendet. Dieser Container nutzt stattdessen das in Schritt 2 eingerichtete separate Protokoll. Prüfen Sie als labex die letzten sudo-Aktivitäten:

sudo tail -n 10 /var/log/sudo.log

Dieser Befehl zeigt die letzten 10 sudo-bezogenen Protokolleinträge an. Die Ausgabe sollte Zeitstempel, Benutzernamen und die mit sudo ausgeführten Befehle enthalten.

Bewährte Sicherheitsmaßnahmen für sudo

Beachten Sie beim Verwalten von sudo-Berechtigungen die folgenden bewährten Maßnahmen:

  • Prinzip der minimalen Rechte: Benutzer sollten nur die Berechtigungen erhalten, die sie für ihre Aufgaben benötigen.

  • Bestimmte Befehle freigeben: Legen Sie genau fest, welche Befehle ein Benutzer ausführen darf, anstatt umfassenden sudo-Zugriff zu gewähren.

  • Passworteingabe verlangen: Stellen Sie bei sensiblen Vorgängen sicher, dass Benutzer bei der Verwendung von sudo ihr Passwort eingeben müssen.

  • Regelmäßige Prüfungen: Überprüfen Sie regelmäßig die sudo-Protokolle und die sudoers-Datei, um eine korrekte Konfiguration sicherzustellen.

  • Nicht mehr benötigte Berechtigungen entziehen: Entfernen Sie Benutzer umgehend aus der Gruppe sudo, wenn sie keine erhöhten Rechte mehr benötigen.

sudo-Zugriff entfernen

In Schritt 2 haben Sie trusted_advisor bereits aus der Gruppe sudo entfernt. Um auch den verbleibenden, auf bestimmte Befehle beschränkten Zugriff zu widerrufen, entfernen Sie zusätzlich die entsprechende Regel:

sudo EDITOR=vim visudo

Drücken Sie Esc, geben Sie /^trusted_advisor ein und drücken Sie die Eingabetaste, um die Regel zu suchen. Drücken Sie dd, um die gesamte Zeile zu löschen:

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

Lassen Sie die Zeile Defaults logfile stehen. Geben Sie :wq ein und drücken Sie die Eingabetaste, um die Änderungen zu speichern und Vim zu schließen. Überprüfen Sie die Gruppenmitgliedschaft:

groups trusted_advisor

Die Ausgabe darf sudo nicht enthalten.

Widerrufenen sudo-Zugriff testen

Überprüfen Sie nun, ob der Benutzer keine Befehle mehr mit sudo ausführen kann:

su - trusted_advisor

Geben Sie bei der Aufforderung das Passwort ein.

Versuchen Sie, einen Befehl mit sudo auszuführen:

sudo -n ls /root

Nun sollte die Meldung trusted_advisor is not in the sudoers file erscheinen. Der Befehl muss fehlschlagen.

Beenden Sie die Sitzung des Benutzers trusted_advisor:

exit

sudo-Zugriff wieder erteilen

Fügen Sie den Benutzer für dieses Lab wieder zur Gruppe sudo hinzu:

sudo usermod -aG sudo trusted_advisor

Überprüfen Sie, ob der Benutzer wieder Mitglied der Gruppe sudo ist:

groups trusted_advisor

Die Ausgabe sollte sudo nun in der Liste der Gruppen enthalten.

Zusammenfassung

In diesem Lab haben Sie wichtige Techniken zur Linux-Benutzerverwaltung und zur Kontrolle von Berechtigungen kennengelernt. Sie haben die folgenden Konzepte und Arbeitsschritte praktisch angewendet:

  1. Benutzer erstellen: Sie haben gelernt, mit dem Befehl adduser neue Benutzerkonten anzulegen.

  2. sudo-Berechtigungen erteilen: Sie haben erfahren, wie Sie Benutzern administrative Rechte erteilen, indem Sie sie zur Gruppe sudo hinzufügen.

  3. sudo-Zugriff einschränken: Sie haben das Prinzip der minimalen Rechte umgesetzt, indem Sie den sudo-Zugriff eines Benutzers über die sudoers-Datei auf bestimmte Befehle beschränkt haben.

  4. sudo-Aktivitäten protokollieren und überwachen: Sie haben sich mit der Protokollierung von sudo-Aktivitäten und der Bedeutung der Protokollüberwachung für die Sicherheit beschäftigt.

  5. sudo-Zugriff verwalten: Sie haben gelernt, Benutzern sudo-Berechtigungen je nach Bedarf zu erteilen und zu entziehen.

Diese Fähigkeiten sind wichtige Grundlagen der Linux-Systemadministration und -Sicherheit. Wenn Sie Benutzerberechtigungen sorgfältig verwalten, können Sie ein sicheres System betreiben, in dem Benutzer auf die benötigten Ressourcen zugreifen können, ohne die Integrität oder Sicherheit des Systems zu gefährden.