Linux-Benutzerkonten verwalten mit useradd, usermod und userdel

CompTIACompTIABeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einleitung

In diesem Lab lernen Sie die wesentlichen Fähigkeiten zur Verwaltung von Benutzerkonten auf einem Linux-System. Sie üben den vollständigen Lebenszyklus der Benutzeradministration, von der Erstellung und Sicherung neuer Konten über die Änderung ihrer Eigenschaften bis hin zur sicheren Löschung. Diese praktische Erfahrung ist grundlegend für jeden Systemadministrator, der für die Wartung einer Multi-User-Linux-Umgebung verantwortlich ist.

Sie beginnen mit dem Befehl useradd, um einen neuen Benutzer und sein Home-Verzeichnis zu erstellen, und sichern das Konto dann mit passwd. Als Nächstes untersuchen Sie die Unterschiede zwischen su und su - zum Wechseln von Benutzern und lernen, wie man Konten sperrt und entsperrt. Sie ändern auch Benutzerattribute wie Passwort-Aging-Richtlinien mit chage und Gruppenmitgliedschaften mit usermod. Das Lab endet mit der Demonstration, wie ein Benutzer und seine zugehörigen Daten ordnungsgemäß mit dem Befehl userdel entfernt werden.

Benutzer erstellen und sichern mit useradd und passwd

In diesem Schritt lernen Sie, wie Sie ein neues Benutzerkonto mit dem Befehl useradd erstellen und es dann durch Festlegen eines Passworts mit dem Befehl passwd sichern. Dies sind grundlegende administrative Aufgaben für die Verwaltung eines Linux-Systems.

Zuerst erstellen wir einen neuen Benutzer namens student1. Der Befehl useradd erfordert Root-Privilegien zur Benutzererstellung, daher müssen Sie dem Befehl 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 /home/student1 sein wird. Wenn Sie -m nicht verwenden, wird der Benutzer zwar erstellt, hat aber kein persönliches Home-Verzeichnis zum Speichern seiner Dateien.

Nachdem der Befehl ausgeführt wurde, erstellt das System Einträge für den neuen Benutzer in mehreren kritischen Systemdateien. Sie können dies überprüfen, indem Sie den Befehl grep verwenden, um nach Zeilen zu suchen, die mit student1 beginnen, in den Dateien /etc/passwd, /etc/shadow und /etc/group. Da /etc/shadow zum Lesen Root-Privilegien erfordert, müssen Sie sudo verwenden:

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

Ihre Ausgabe sollte in etwa so aussehen. Die Nummern für User ID (UID) und Group ID (GID) können variieren, aber die Struktur wird dieselbe sein:

/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 hier nicht gespeichert ist, sondern aus Sicherheitsgründen in der Datei /etc/shadow.
  • /etc/shadow: Diese Datei enthält sichere Informationen zum Benutzerkonto. Das zweite Feld enthält anfangs ! oder *, was bedeutet, dass noch kein Passwort festgelegt wurde und das Konto nicht für die Anmeldung verwendet werden kann.
  • /etc/group: Eine neue Gruppe, ebenfalls student1 genannt, wurde automatisch erstellt, um die primäre Gruppe für diesen Benutzer zu sein.

Nachdem der Benutzer nun existiert, müssen Sie ein Passwort festlegen, um das Konto nutzbar und sicher zu machen. Dazu verwenden wir den Befehl passwd. Wie useradd erfordert dieser 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 dann erneut einzugeben. Verwenden Sie für dieses Lab bitte student1pass als Passwort. Beachten Sie, dass aus Sicherheitsgründen Ihre Eingabe nicht auf dem Bildschirm angezeigt wird.

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

Nachdem das Passwort festgelegt wurde, überprüfen wir die Datei /etc/shadow erneut, um zu sehen, was sich geändert hat. Da /etc/shadow zum Lesen Root-Privilegien erfordert, müssen Sie sudo verwenden:

sudo grep ^student1 /etc/shadow

Die Ausgabe wird nun anders sein. Der Platzhalter ... steht für eine lange, eindeutige Zeichenkette.

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

Beachten Sie, dass das zweite Feld nun eine lange, komplexe Zeichenkette enthält. Dies ist die gehashte (verschlüsselte) Version des gerade festgelegten Passworts. Das Konto ist nun aktiv und kann für die Anmeldung verwendet werden.

Benutzer wechseln und Umgebungsunterschiede mit su vs su - verstehen

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

Zuerst untersuchen 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 von student1 gefragt, das Sie auf student1pass gesetzt haben.

su student1

Nach Eingabe des Passworts wird Ihre Sitzung nun mit der Identität von student1 ausgeführt. Die Umgebung ist 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 sagt uns Folgendes:

  • whoami: Sie sind jetzt effektiv student1.
  • echo $HOME: Die Umgebungsvariable HOME verweist immer noch auf das Home-Verzeichnis des ursprünglichen Benutzers (labex).
  • pwd: Sie befinden sich immer noch im selben Verzeichnis wie vor dem Benutzerwechsel (/home/labex/project).

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

Geben Sie nun exit ein, um zu Ihrem Benutzer labex zurückzukehren.

exit

Als Nächstes versuchen wir erneut, Benutzer zu wechseln, aber diesmal mit dem Flag -. Dieses Flag weist su an, eine Login-Shell zu starten, was einen vollständigen Login für den neuen Benutzer simuliert. Das bedeutet, dass die vollständige Umgebung von student1, einschließlich seines Home-Verzeichnisses und seines Shell-Profils, geladen wird.

su - student1

Geben Sie das Passwort (student1pass) erneut ein. Führen Sie nun dieselben 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 immer noch student1.
  • echo $HOME: Die Variable HOME verweist nun korrekt auf /home/student1.
  • pwd: Ihr aktuelles Arbeitsverzeichnis wurde in das Home-Verzeichnis von student1 geändert.

Dies zeigt, dass su - <Benutzername> die empfohlene Methode ist, um Benutzer auf der Kommandozeile zu wechseln, da sie eine saubere, vorhersagbare Umgebung für den neuen Benutzer bietet und Probleme mit falschen Pfaden und 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 es dann durch Entsperren wieder aktivieren. Dies ist eine gängige administrative Praxis für Situationen, in denen Sie verhindern müssen, dass ein Benutzer sich anmeldet, ohne sein Konto und seine Dateien zu löschen.

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

sudo passwd -l student1

Der Befehl bestätigt, dass das Passwort gesperrt wurde. Die Ausgabemeldung kann leicht variieren, zeigt aber den Erfolg an.

passwd: password for user student1 changed.

Aber was bedeutet "sperren" eigentlich? Lassen Sie uns die Datei /etc/shadow erneut untersuchen, um die Auswirkung zu sehen.

sudo grep ^student1 /etc/shadow

Sie werden eine subtile, aber wichtige Änderung bemerken. Die verschlüsselte Passwortzeichenkette ist nun mit einem oder zwei Ausrufezeichen (!) präfixiert. Der Platzhalter ... steht für den Rest Ihres eindeutigen Hashes.

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

Dieses !-Präfix macht den gespeicherten Passwort-Hash ungültig, wodurch es für das System unmöglich wird, ein vom Benutzer bereitgestelltes Passwort abzugleichen. Infolgedessen kann sich der Benutzer nicht anmelden. Testen wir das. Versuchen Sie, zum Benutzer student1 zu wechseln:

su - student1

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

Password:
su: Authentication failure

Dies bestätigt, dass das Konto erfolgreich gesperrt ist. Entsperren wir es nun. Um das Konto wieder zu aktivieren, kehren Sie einfach den Prozess um, indem Sie die Option -u (unlock) mit dem Befehl passwd verwenden.

sudo passwd -u student1

Auch hier bestätigt der Befehl die Änderung.

passwd: password for user student1 changed.

Überprüfen wir ein letztes Mal die Datei /etc/shadow, um zu verifizieren, dass das Konto entsperrt ist.

sudo grep ^student1 /etc/shadow

Die Ausgabe zeigt, dass das !-Präfix entfernt wurde und 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 sich erfolgreich beim Benutzer student1 anmelden. 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

Benutzerpasswort-Alterung und Gruppenmitgliedschaften mit chage und usermod ändern

In diesem Schritt verwalten Sie erweiterte Benutzereigenschaften. Sie lernen, wie Sie Passwortsicherheitsrichtlinien erzwingen, indem Sie mit chage die Passwortablaufzeiten steuern, und wie Sie die Gruppenmitgliedschaften eines Benutzers mit usermod verwalten, um seine Berechtigungen und Zugriffsrechte zu kontrollieren.

Zuerst untersuchen wir die Informationen zur Passwortalterung 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 für das Konto. Die Daten entsprechen dem Zeitpunkt, zu 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 eine gute Praxis, Benutzer aufzufordern, ihre Passwörter regelmäßig zu ändern. Legen wir 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 nun die Einstellungen erneut an, um Ihre Ä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 zu einer primären Gruppe und kann mehreren sekundären (oder ergänzenden) Gruppen angehören. Sie können die Gruppen eines Benutzers mit dem Befehl id anzeigen.

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

Dies zeigt, dass die primäre Gruppe von student1 student1 (gid=5001) ist und er noch keiner sekundären Gruppe 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 student1 nun mit usermod zu dieser neuen Gruppe hinzu. Die Flags -aG sind entscheidend: -G gibt die sekundären Gruppen an, und -a fügt den Benutzer zur Gruppe hinzu, ohne ihn aus anderen Gruppen zu entfernen.

sudo usermod -aG developers student1

Überprü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, testers, und fügen student1 nur mit -G hinzu.

sudo groupadd testers
sudo usermod -G testers student1

Überprüfen Sie nun noch einmal die Gruppen:

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

Beachten Sie, dass student1 nicht mehr in der Gruppe developers ist. Die Verwendung von usermod -G ohne -a ersetzt alle vorhandenen sekundären Gruppen durch die neue Liste. Damit der Benutzer beiden Gruppen angehört, müssen Sie entweder alle Gruppen auflisten (-G developers,testers) oder das Flag zum Anhängen verwenden. Korrigieren wir dies, indem wir student1 korrekt wieder zur Gruppe developers hinzufügen.

sudo usermod -aG developers student1

Überprüfen Sie den endgültigen Zustand. Der Benutzer sollte nun Mitglied beider Gruppen sein.

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

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

In diesem Schritt lernen Sie, wie Sie Benutzerkonten dauerhaft vom System entfernen, indem Sie den Befehl userdel verwenden. Sie werden den wichtigen Unterschied zwischen dem einfachen Löschen der Kontoinformationen eines Benutzers und dem Löschen des Kontos zusammen mit allen zugehörigen Dateien, wie z. B. 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 früheren Schritten) und den neuen student2.

Beginnen wir mit dem Löschen des Benutzers student1 ohne spezielle Optionen. Der Standardbefehl userdel entfernt die Einträge des Benutzers aus den Systemkontodateien wie /etc/passwd und /etc/shadow, aber er entfernt nicht dessen Home-Verzeichnis. Dies kann nützlich sein, wenn Sie die Daten des Benutzers archivieren müssen, bevor Sie sie vollständig entfernen.

sudo userdel student1

Um zu bestätigen, dass das Benutzerkonto gelöscht wurde, versuchen Sie, es in /etc/passwd mit grep zu suchen.

grep ^student1 /etc/passwd

Dieser Befehl liefert keine Ausgabe, was bestätigt, dass der Kontoeintrag des Benutzers gelöscht wurde. Was ist jedoch mit seinem Home-Verzeichnis? Überprüfen wir, ob /home/student1 noch existiert.

ls -ld /home/student1

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

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

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

sudo userdel -r student2

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

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

Diese Warnung zeigt keinen Fehler an – sie bedeutet lediglich, dass keine Mail-Spool-Datei zum Löschen vorhanden war, was für einen neu erstellten Benutzer, der keine E-Mails erhalten hat, zu erwarten ist.

Überprüfen Sie zunächst, ob der Kontoeintrag aus /etc/passwd entfernt wurde. Wie zuvor sollte dieser Befehl keine Ausgabe liefern.

grep ^student2 /etc/passwd

Überprüfen Sie als Nächstes und am wichtigsten das Vorhandensein des Home-Verzeichnisses /home/student2.

ls -ld /home/student2

Dieses Mal schlägt der Befehl mit einer Fehlermeldung fehl, 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 beide Methoden zum Löschen von Benutzern erfolgreich geübt und verfügen so über die Flexibilität, die Daten eines Benutzers nach Bedarf entweder zu erhalten 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 mit useradd -m, stellten sicher, dass auch ein Home-Verzeichnis erstellt wurde, und sicherten das Konto dann durch Festlegen eines Passworts mit passwd. Sie übten den Wechsel zwischen Benutzern mit su und su - und lernten den entscheidenden Unterschied zwischen einer Standard- und einer Login-Shell-Umgebung kennen. Sie lernten auch, wie Sie den Kontozugriff verwalten, indem Sie ihn mit den Optionen -l und -u des passwd-Befehls sperren und entsperren.

Das Lab wurde mit der Änderung bestehender Benutzerattribute fortgesetzt. Sie verwendeten chage zur Verwaltung von Passwort-Aging-Richtlinien und usermod zur Änderung der Gruppenmitgliedschaften eines Benutzers. Schließlich untersuchten Sie den Prozess der Entfernung von Benutzern aus dem System und unterschieden zwischen dem Befehl userdel, der das Benutzerkonto entfernt, und dem Befehl userdel -r, der auch das Home-Verzeichnis und das Mail-Spool des Benutzers für eine vollständige Bereinigung löscht.