Linux-Benutzerkonten mit useradd, usermod und userdel verwalten

CompTIABeginner
Jetzt üben

Einführung

In diesem Lab erlernen Sie die grundlegenden Fertigkeiten zur Verwaltung von Benutzerkonten auf einem Linux-System. Sie werden den gesamten Prozess der Benutzeradministration in der Praxis erproben: von der Erstellung und Absicherung neuer Konten über die Anpassung ihrer Eigenschaften bis hin zur sicheren Löschung. Diese praktische Erfahrung ist für jeden Systemadministrator unerlässlich, der für die Wartung einer Linux-Mehrbenutzerumgebung verantwortlich ist.

Sie beginnen mit dem Befehl useradd, um einen neuen Benutzer samt Home-Verzeichnis anzulegen, und sichern das Konto anschließend mit passwd ab. Danach untersuchen Sie die Unterschiede zwischen su und su - beim Benutzerwechsel und lernen, wie man Konten sperrt und wieder entsperrt. Zudem modifizieren Sie Benutzerattribute, wie etwa Richtlinien zum Kennwortablauf mit chage und Gruppenmitgliedschaften mit usermod. Das Lab schließt mit der Demonstration ab, wie ein Benutzer und die dazugehörigen Daten mit dem Befehl userdel ordnungsgemäß entfernt werden.

Benutzer erstellen und absichern mit useradd und passwd

In diesem Schritt lernen Sie, wie Sie mit dem Befehl useradd ein neues Benutzerkonto erstellen und es anschließend durch Vergabe eines Passworts mit dem Befehl passwd absichern. Dies sind grundlegende administrative Aufgaben bei der Verwaltung eines Linux-Systems.

Zuerst erstellen wir einen neuen Benutzer namens student1. Da der Befehl useradd Root-Rechte erfordert, müssen Sie sudo voranstellen.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

sudo useradd -m student1

Die Option -m ist wichtig; sie weist useradd an, das Home-Verzeichnis des Benutzers zu erstellen, das standardmäßig unter /home/student1 liegt. Ohne -m wird der Benutzer zwar angelegt, verfügt aber über kein persönliches Verzeichnis zum Speichern von Dateien.

Nach der Ausführung des Befehls erstellt das System Einträge für den neuen Benutzer in mehreren kritischen Systemdateien. Sie können dies überprüfen, indem Sie mit dem Befehl grep nach Zeilen suchen, die mit student1 in den Dateien /etc/passwd, /etc/shadow und /etc/group beginnen. Da das Lesen von /etc/shadow Root-Rechte erfordert, müssen Sie sudo verwenden:

sudo grep ^student1 /etc/passwd /etc/shadow /etc/group

Ihre Ausgabe sollte in etwa so aussehen. Die User-ID (UID) und Group-ID (GID) können variieren, aber die Struktur bleibt gleich:

/etc/passwd:student1:x:5001:5001::/home/student1:/bin/sh
/etc/shadow:student1:!:20265:0:99999:7:::
/etc/group:student1:x:5001:

Lassen Sie uns diese Ausgabe aufschlüsseln:

  • /etc/passwd: Diese Datei enthält grundlegende Informationen zum Benutzerkonto. Das x im zweiten Feld zeigt an, dass das verschlüsselte Passwort aus Sicherheitsgründen nicht hier, sondern in der Datei /etc/shadow gespeichert ist.
  • /etc/shadow: Diese Datei enthält die sicheren Kontoinformationen. Das zweite Feld enthält anfangs ein ! oder *, was bedeutet, dass noch kein Passwort gesetzt wurde und das Konto nicht für die Anmeldung genutzt werden kann.
  • /etc/group: Es wurde automatisch eine neue Gruppe namens student1 erstellt, die als Primärgruppe für diesen Benutzer dient.

Da der Benutzer nun existiert, müssen Sie ein Passwort festlegen, um das Konto nutzbar und sicher zu machen. Dafür verwenden wir den Befehl passwd. Wie useradd erfordert auch dieser Befehl sudo, wenn das Passwort eines anderen Benutzers geändert wird.

sudo passwd student1

Das System fordert Sie auf, ein neues Passwort für student1 einzugeben und zu bestätigen. Verwenden Sie für dieses Lab bitte student1pass als Passwort. Beachten Sie, dass Ihre Eingabe aus Sicherheitsgründen nicht auf dem Bildschirm angezeigt wird.

New password:
Retype new password:
passwd: password updated successfully

Nachdem das Passwort gesetzt ist, prüfen wir die Datei /etc/shadow erneut. Da /etc/shadow Root-Rechte erfordert, nutzen Sie wieder sudo:

sudo grep ^student1 /etc/shadow

Die Ausgabe hat sich nun geändert. Der Platzhalter ... steht für eine lange, eindeutige Zeichenfolge.

student1:$y$j9T$lUM1RtLPQdrCOHmaFf1po/$xqNw.5dz54yR9whxsID9teI28/BOyvKocK5dA9X7GoD:20265:0:99999:7:::

Beachten Sie, dass das zweite Feld nun eine lange, komplexe Zeichenfolge enthält. Dies ist die gehashte (verschlüsselte) Version des Passworts, das Sie gerade festgelegt haben. Das Konto ist nun aktiv und bereit für die Anmeldung.

Benutzer wechseln und Umgebungsunterschiede verstehen: su vs. su -

In diesem Schritt untersuchen Sie, wie Sie innerhalb Ihrer aktuellen Terminalsitzung mit dem Befehl su (substitute user) zu einem anderen Benutzerkonto wechseln. Sie lernen zudem den entscheidenden Unterschied zwischen der Verwendung von su mit und ohne das Flag - (oder --login) kennen, was die Benutzerumgebung erheblich beeinflusst.

Zuerst prüfen wir Ihre aktuelle Umgebung als Benutzer labex. Führen Sie diese Befehle aus, um Ihren aktuellen Benutzer, Ihr Home-Verzeichnis und Ihr Arbeitsverzeichnis anzuzeigen:

whoami
echo $HOME
pwd

Sie sehen die folgende Ausgabe, die bestätigt, dass Sie der Benutzer labex in Ihrem Projektverzeichnis sind:

labex
/home/labex
/home/labex/project

Wechseln wir nun zum Benutzer student1, den Sie im vorherigen Schritt erstellt haben. Verwenden Sie den Befehl su gefolgt vom Benutzernamen. Sie werden nach dem Passwort für student1 gefragt (student1pass).

su student1

Nach der Passworteingabe operiert Ihre Sitzung nun unter der Identität von student1. Die Umgebung wurde jedoch nicht vollständig geladen. Führen wir dieselben Befehle erneut aus, um zu sehen, was sich geändert hat und was nicht.

whoami
echo $HOME
pwd

Beachten Sie die Ausgabe:

student1
/home/student1
/home/labex/project

Das bedeutet Folgendes:

  • whoami: Sie sind jetzt effektiv student1.
  • echo $HOME: Die Umgebungsvariable HOME zeigt nun auf das Home-Verzeichnis des neuen Benutzers (student1).
  • pwd: Sie befinden sich immer noch in demselben Verzeichnis wie vor dem Benutzerwechsel (/home/labex/project).

Dieses Verhalten kann problematisch sein, da Skripte und Anwendungen oft auf die Variable HOME angewiesen sind, um Konfigurationsdateien zu finden, was zu unerwartetem Verhalten führen kann.

Geben Sie nun exit ein, um zu Ihrer labex-Shell zurückzukehren.

exit

Versuchen wir den Benutzerwechsel erneut, diesmal jedoch mit dem Flag -. Dieses Flag weist su an, eine Login-Shell zu starten, was eine vollständige Anmeldung simuliert. Das bedeutet, dass die komplette Umgebung von student1 geladen wird, einschließlich des Home-Verzeichnisses und des Shell-Profils.

su - student1

Geben Sie das Passwort (student1pass) erneut ein. Führen Sie nun wieder die Diagnosebefehle aus:

whoami
echo $HOME
pwd

Vergleichen Sie die Ausgabe mit dem vorherigen Versuch:

student1
/home/student1
/home/student1

Die Unterschiede sind signifikant:

  • whoami: Sie sind weiterhin student1.
  • echo $HOME: Die Variable HOME zeigt auf /home/student1.
  • pwd: Ihr aktuelles Arbeitsverzeichnis wurde automatisch in das Home-Verzeichnis von student1 geändert.

Dies zeigt, dass su - <benutzername> der empfohlene Weg für den Benutzerwechsel auf der Kommandozeile ist, da es eine saubere und vorhersehbare Umgebung bereitstellt und Probleme mit falschen Pfaden oder Berechtigungen vermeidet.

Um diesen Schritt abzuschließen, geben Sie exit ein, um zu Ihrer ursprünglichen labex-Sitzung zurückzukehren.

exit

Benutzerkonten sperren und entsperren mit passwd -l und passwd -u

In diesem Schritt lernen Sie, wie Sie ein Benutzerkonto vorübergehend deaktivieren, indem Sie es sperren, und wie Sie es später wieder entsperren. Dies ist eine gängige administrative Praxis, wenn Sie verhindern möchten, dass sich ein Benutzer anmeldet, ohne dessen Konto und Dateien sofort zu löschen.

Zuerst sperren wir das Konto student1. Dazu verwenden wir den Befehl passwd mit der Option -l (lock). Da dies administrative Rechte erfordert, müssen Sie sudo verwenden.

sudo passwd -l student1

Der Befehl bestätigt, dass das Passwort gesperrt wurde. Die Meldung kann leicht variieren, signalisiert aber den Erfolg.

passwd: password for user student1 changed.

Doch was bewirkt das "Sperren" eigentlich? Schauen wir uns die Datei /etc/shadow erneut an.

sudo grep ^student1 /etc/shadow

Sie werden eine kleine, aber wichtige Änderung bemerken. Der verschlüsselten Passwort-Zeichenfolge sind nun ein oder zwei Ausrufezeichen (!) vorangestellt. Der Platzhalter ... steht für den Rest Ihres Hash-Werts.

student1:!$y$j9T$...:20265:0:99999:7:::

Dieses Präfix ! macht den gespeicherten Passwort-Hash ungültig. Das System kann somit kein vom Benutzer eingegebenes Passwort mehr erfolgreich abgleichen. Infolgedessen kann sich der Benutzer nicht mehr anmelden. Testen wir das, indem wir versuchen, zum Benutzer student1 zu wechseln:

su - student1

Sie werden nach einem Passwort gefragt, aber selbst wenn Sie das korrekte Passwort (student1pass) eingeben, schlägt die Anmeldung fehl.

Password:
su: Authentication failure

Dies bestätigt, dass das Konto erfolgreich gesperrt wurde. Um es wieder zu aktivieren, kehren wir den Prozess mit der Option -u (unlock) des passwd-Befehls einfach um.

sudo passwd -u student1

Auch hier bestätigt der Befehl die Änderung.

passwd: password for user student1 changed.

Prüfen wir die Datei /etc/shadow ein letztes Mal, um sicherzustellen, dass das Konto entsperrt ist.

sudo grep ^student1 /etc/shadow

Die Ausgabe zeigt, dass das Präfix ! entfernt wurde, wodurch der ursprüngliche Passwort-Hash wiederhergestellt ist.

student1:$y$j9T$...:20265:0:99999:7:::

Das Konto ist nun wieder aktiv. Sie können dies bestätigen, indem Sie erfolgreich zum Benutzer student1 wechseln. Geben Sie bei Aufforderung das Passwort student1pass ein.

su - student1

Sie sollten nun als student1 angemeldet sein. Geben Sie abschließend exit ein, um zu Ihrer labex-Sitzung zurückzukehren.

exit

Kennwortablauf und Gruppenmitgliedschaften mit chage und usermod verwalten

In diesem Schritt verwalten Sie fortgeschrittene Benutzereigenschaften. Sie lernen, wie Sie Sicherheitsrichtlinien für Passwörter mit chage erzwingen und wie Sie Gruppenmitgliedschaften mit usermod verwalten, um Berechtigungen und Zugriffsrechte zu steuern.

Zuerst untersuchen wir die Informationen zum Kennwortablauf für das Konto student1. Der Befehl chage (change age) mit dem Flag -l (list) zeigt diese Details an.

sudo chage -l student1

Die Ausgabe zeigt die Standardeinstellungen des Kontos. Die Daten entsprechen dem Zeitpunkt, an dem Sie den Benutzer erstellt haben.

Last password change     : Dec 08, 2024
Password expires     : never
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 0
Maximum number of days between password change  : 99999
Number of days of warning before password expires : 7

Aus Sicherheitsgründen ist es ratsam, Benutzer zum regelmäßigen Ändern ihrer Passwörter zu verpflichten. Wir legen eine Richtlinie fest, bei der das Passwort alle 90 Tage geändert werden muss (-M 90), nur alle 7 Tage geändert werden kann (-m 7) und der Benutzer 14 Tage vor Ablauf eine Warnung erhält (-W 14).

sudo chage -M 90 -m 7 -W 14 student1

Zeigen Sie die Einstellungen erneut an, um die Änderungen zu bestätigen:

sudo chage -l student1

Die Ausgabe spiegelt die neue Richtlinie wider:

Last password change     : Dec 08, 2024
Password expires     : Mar 08, 2025
Password inactive     : never
Account expires      : never
Minimum number of days between password change  : 7
Maximum number of days between password change  : 90
Number of days of warning before password expires : 14

Als Nächstes ändern wir die Gruppenmitgliedschaften. Ein Benutzer gehört einer Primärgruppe an und kann Mitglied in mehreren Sekundärgruppen (zusätzlichen Gruppen) sein. Mit dem Befehl id können Sie die Gruppen eines Benutzers anzeigen.

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1)

Dies zeigt, dass die Primärgruppe von student1 ebenfalls student1 ist (gid=5001) und der Benutzer noch keinen Sekundärgruppen angehört.

Erstellen wir eine neue Gruppe namens developers und fügen student1 hinzu. Erstellen Sie zuerst die Gruppe:

sudo groupadd developers

Fügen Sie nun student1 mit usermod zu dieser neuen Gruppe hinzu. Die Flags -aG sind hierbei entscheidend: -G gibt die Sekundärgruppen an und -a (append) fügt den Benutzer hinzu, ohne ihn aus anderen Gruppen zu entfernen.

sudo usermod -aG developers student1

Prüfen Sie die Gruppen des Benutzers erneut:

id student1

Die Ausgabe enthält nun die Gruppe developers:

uid=5001(student1) gid=5001(student1) groups=5001(student1),1002(developers)

Was passiert, wenn Sie das Flag -a vergessen? Erstellen wir eine weitere Gruppe namens testers und fügen student1 nur mit -G hinzu.

sudo groupadd testers
sudo usermod -G testers student1

Prüfen Sie die Gruppen ein weiteres Mal:

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers)

Beachten Sie, dass student1 nicht mehr Mitglied der Gruppe developers ist. Die Verwendung von usermod -G ohne -a ersetzt alle bestehenden Sekundärgruppen durch die neue Liste. Damit der Benutzer in beiden Gruppen ist, müssten Sie entweder alle Gruppen aufzählen (-G developers,testers) oder das Append-Flag verwenden. Korrigieren wir dies, indem wir student1 wieder korrekt zur Gruppe developers hinzufügen.

sudo usermod -aG developers student1

Überprüfen Sie den Endzustand. Der Benutzer sollte nun Mitglied in beiden Gruppen sein.

id student1
uid=5001(student1) gid=5001(student1) groups=5001(student1),1003(testers),1002(developers)

Benutzer und deren Daten löschen mit userdel und userdel -r

In diesem Schritt lernen Sie, wie Sie Benutzerkonten mit dem Befehl userdel dauerhaft vom System entfernen. Sie werden den wichtigen Unterschied zwischen dem einfachen Löschen der Kontoinformationen und dem Löschen des Kontos mitsamt aller zugehörigen Dateien (wie dem Home-Verzeichnis) kennenlernen.

Um beide Löschmethoden zu demonstrieren, erstellen wir zunächst einen zweiten Benutzer namens student2.

sudo useradd -m student2

Nun haben Sie zwei Benutzer zur Verfügung: student1 (aus den vorherigen Schritten) und den neuen student2.

Beginnen wir damit, den Benutzer student1 ohne spezielle Optionen zu löschen. Der Standardbefehl userdel entfernt die Einträge des Benutzers aus den Systemdateien wie /etc/passwd und /etc/shadow, löscht aber nicht dessen Home-Verzeichnis. Dies kann nützlich sein, wenn Sie die Daten des Benutzers archivieren möchten, bevor Sie sie endgültig löschen.

sudo userdel student1

Um zu bestätigen, dass das Konto entfernt wurde, suchen Sie mit grep in /etc/passwd danach.

grep ^student1 /etc/passwd

Dieser Befehl sollte keine Ausgabe liefern, was bestätigt, dass der Kontoeintrag gelöscht wurde. Aber was ist mit dem Home-Verzeichnis? Prüfen wir, ob /home/student1 noch existiert.

ls -ld /home/student1

Sie werden sehen, dass das Verzeichnis noch vorhanden ist, obwohl der Besitzer nun als Nummer (die alte UID des Benutzers) angezeigt wird, da das System diese ID keinem Benutzernamen mehr zuordnen kann.

drwxr-x--- 2 5001 5001 78 Jun 26 08:18 /home/student1

Löschen wir nun den Benutzer student2, aber diesmal mit dem Flag -r (remove). Diese Option weist userdel an, zusätzlich zu den Kontoeinträgen auch das Home-Verzeichnis und das Mail-Postfach des Benutzers zu entfernen. Dies ist eine vollständige und unwiderrufliche Löschung.

sudo userdel -r student2

Möglicherweise sehen Sie eine Warnmeldung, dass das Mail-Postfach nicht gefunden wurde. Das ist normal, da der Benutzer nie E-Mails erhalten hat:

userdel: student2 mail spool (/var/mail/student2) not found

Diese Warnung deutet nicht auf einen Fehler hin – sie besagt lediglich, dass keine Postfach-Datei zum Löschen vorhanden war.

Verifizieren Sie zuerst, dass der Kontoeintrag in /etc/passwd verschwunden ist. Wie zuvor sollte dieser Befehl keine Ausgabe liefern.

grep ^student2 /etc/passwd

Prüfen Sie nun das Wichtigste: die Existenz des Home-Verzeichnisses /home/student2.

ls -ld /home/student2

Diesmal wird der Befehl mit einer Fehlermeldung fehlschlagen, was beweist, dass das Verzeichnis zusammen mit dem Benutzerkonto vollständig entfernt wurde.

ls: cannot access '/home/student2': No such file or directory

Sie haben nun erfolgreich beide Methoden zum Löschen von Benutzern geübt und verfügen über die Flexibilität, Benutzerdaten je nach Bedarf zu bewahren oder dauerhaft zu löschen.

Zusammenfassung

In diesem Lab haben Sie die grundlegenden Befehle zur Verwaltung von Benutzerkonten auf einem Linux-System kennengelernt. Sie begannen mit der Erstellung eines neuen Benutzers mittels useradd -m, wobei sichergestellt wurde, dass auch ein Home-Verzeichnis angelegt wird, und sicherten das Konto durch Vergabe eines Passworts mit passwd ab. Sie übten den Benutzerwechsel mit su und su - und lernten dabei den entscheidenden Unterschied zwischen einer Standard-Umgebung und einer Login-Shell kennen. Zudem erfuhren Sie, wie man den Zugriff auf Konten durch Sperren und Entsperren mit den Optionen -l und -u des passwd-Befehls steuert.

Das Lab wurde mit der Modifikation bestehender Benutzerattribute fortgesetzt. Sie nutzten chage, um Richtlinien für den Kennwortablauf zu verwalten, und usermod, um Gruppenmitgliedschaften zu ändern. Abschließend untersuchten Sie den Prozess der Benutzerlöschung und unterschieden dabei zwischen dem Befehl userdel, der nur das Konto entfernt, und userdel -r, der für eine vollständige Bereinigung auch das Home-Verzeichnis und das Mail-Postfach löscht.