Wie man prüft, ob ein Benutzerkonto in Linux existiert

LinuxLinuxBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie, wie Sie mithilfe mehrerer gängiger Methoden prüfen können, ob ein Benutzerkonto auf einem Linux-System existiert. Wir werden untersuchen, wie Sie die Existenz eines Benutzers mit dem Befehl id abfragen, nach Benutzer-Einträgen in der Datei /etc/passwd suchen und die Benutzerinformationen mit dem Befehl getent passwd validieren können. Diese Techniken bieten verschiedene Möglichkeiten, um schnell und effektiv festzustellen, ob ein Benutzerkonto vorhanden ist.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") subgraph Lab Skills linux/cat -.-> lab-558680{{"Wie man prüft, ob ein Benutzerkonto in Linux existiert"}} linux/grep -.-> lab-558680{{"Wie man prüft, ob ein Benutzerkonto in Linux existiert"}} linux/id -.-> lab-558680{{"Wie man prüft, ob ein Benutzerkonto in Linux existiert"}} end

Abfrage der Benutzer-Existenz mit dem id-Befehl

In diesem Schritt lernen wir, wie wir mithilfe des Befehls id prüfen können, ob ein bestimmter Benutzer auf dem System existiert. Der Befehl id ist ein vielseitiges Werkzeug, das Benutzer- und Gruppeninformationen für den aktuellen Benutzer oder einen angegebenen Benutzer anzeigt.

Wir haben bereits id verwendet, um Ihre eigenen Benutzer- und Gruppeninformationen anzuzeigen. Jetzt verwenden wir es, um Informationen über einen anderen Benutzer abzufragen.

Die Grundsyntax für die Prüfung eines bestimmten Benutzers lautet:

id [username]

Wenn der Benutzer existiert, gibt der Befehl seine Benutzer-ID (uid), Gruppen-ID (gid) und die Gruppen aus, zu denen er gehört. Wenn der Benutzer nicht existiert, gibt der Befehl in der Regel eine Fehlermeldung zurück, die darauf hinweist, dass der Benutzer unbekannt ist.

Versuchen wir, nach einem existierenden Benutzer wie root zu suchen. Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

id root

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

uid=0(root) gid=0(root) groups=0(root)

Dies bestätigt, dass der Benutzer root existiert und zeigt seine Benutzer- und Gruppen-IDs an.

Jetzt versuchen wir, nach einem Benutzer zu suchen, der wahrscheinlich auf diesem System nicht existiert, beispielsweise einem Benutzer namens nonexistentuser. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

id nonexistentuser

Sie sollten eine Fehlermeldung sehen, die darauf hinweist, dass der Benutzer nicht gefunden wurde, wie diese:

id: ‘nonexistentuser’: no such user

Dies zeigt, wie der Befehl id verwendet werden kann, um schnell festzustellen, ob ein Benutzerkonto auf dem System existiert.

Denken Sie daran, dass der Befehl id eine leistungsstarke Möglichkeit ist, detaillierte Informationen über Benutzer und ihre Gruppenmitgliedschaften zu erhalten.

Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.

Suchen nach einem Benutzer in der /etc/passwd-Datei

In diesem Schritt werden wir eine weitere Möglichkeit untersuchen, um die Existenz eines Benutzers zu prüfen, indem wir die Datei /etc/passwd untersuchen. Diese Datei ist ein grundlegender Bestandteil von Linux-Systemen und enthält Informationen über Benutzerkonten.

Die Datei /etc/passwd speichert für jeden Benutzer wesentliche Details, darunter seinen Benutzernamen, seine Benutzer-ID (UID), Gruppen-ID (GID), Home-Verzeichnis und Standard-Shell. Jede Zeile in der Datei repräsentiert ein einzelnes Benutzerkonto, wobei die Felder durch Doppelpunkte (:) getrennt sind.

Wir können den Befehl cat verwenden, um den Inhalt der Datei /etc/passwd anzuzeigen, und den Befehl grep, um nach einem bestimmten Benutzernamen darin zu suchen.

Zunächst lassen wir uns den gesamten Inhalt der Datei /etc/passwd anzeigen. Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

cat /etc/passwd

Sie werden eine lange Liste von Zeilen sehen, wobei jede Zeile ein Benutzerkonto repräsentiert. Die Ausgabe sieht in etwa so aus (nur einige Zeilen gezeigt):

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
...

Jetzt verwenden wir grep, um nach einem bestimmten Benutzer wie labex zu suchen. Wir leiten die Ausgabe von cat /etc/passwd an grep labex weiter. Das Pipe-Symbol (|) sendet die Ausgabe des Befehls auf der linken Seite als Eingabe an den Befehl auf der rechten Seite.

Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

cat /etc/passwd | grep labex

Wenn der Benutzer labex existiert, sehen Sie die Zeile aus der Datei /etc/passwd, die dem Benutzer labex entspricht:

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Wenn der Benutzer nicht existiert, findet grep keine Übereinstimmung, und es wird keine Ausgabe angezeigt.

Versuchen wir erneut, nach dem Benutzer nonexistentuser zu suchen:

cat /etc/passwd | grep nonexistentuser

Dieser Befehl sollte keine Ausgabe liefern, was darauf hinweist, dass der Benutzer nonexistentuser in der Datei /etc/passwd nicht gefunden wurde.

Das direkte Suchen in der Datei /etc/passwd ist eine gängige Methode, um die Existenz eines Benutzers zu prüfen, insbesondere in Skripten. Es ist jedoch wichtig zu beachten, dass diese Datei nur lokale Benutzerkonten enthält. Benutzer, die über Netzwerkdienste (wie LDAP) verwaltet werden, erscheinen möglicherweise nicht hier.

Klicken Sie auf Weiter, um zur nächsten Methode zu gelangen.

Validieren eines Benutzers mit dem getent passwd-Befehl

In diesem Schritt lernen wir den Befehl getent kennen, der eine robuster Methode ist, um Einträge aus Name Service Switch (NSS)-Datenbanken, einschließlich der Passwortdatenbank, abzurufen. Der Befehl getent ist besonders nützlich, da er nicht nur lokale Dateien wie /etc/passwd abfragen kann, sondern auch netzwerkbasierte Quellen wie LDAP oder NIS.

Die Grundsyntax für die Verwendung von getent zur Abfrage der Passwortdatenbank lautet:

getent passwd [username]

Wenn der Benutzer in einer der konfigurierten NSS-Quellen existiert, gibt getent die entsprechende Zeile aus der Passwortdatenbank aus, ähnlich wie bei der Verwendung von cat /etc/passwd. Wenn der Benutzer nicht existiert, gibt getent keine Ausgabe und beendet sich mit einem Nicht-Null-Status.

Lassen Sie uns getent verwenden, um nach dem Benutzer labex zu suchen. Geben Sie den folgenden Befehl in Ihrem Terminal ein und drücken Sie die Eingabetaste:

getent passwd labex

Sie sollten die Zeile für den Benutzer labex sehen:

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

Jetzt verwenden wir getent erneut, um nach dem Benutzer nonexistentuser zu suchen. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

getent passwd nonexistentuser

Dieser Befehl sollte keine Ausgabe liefern, genau wie bei der Verwendung von grep auf /etc/passwd. Allerdings wird getent im Allgemeinen der direkten Analyse von /etc/passwd vorgezogen, da es die NSS-Konfiguration des Systems berücksichtigt und Benutzer aus verschiedenen Quellen finden kann.

Um den Unterschied im Exit-Status zu sehen, können Sie den Wert von $? nach dem Ausführen eines Befehls überprüfen. $? enthält den Exit-Status des zuletzt ausgeführten Befehls. Ein Wert von 0 zeigt in der Regel Erfolg an, während ein Nicht-Null-Wert auf einen Fehler hinweist.

Führen Sie den getent-Befehl für labex erneut aus und überprüfen Sie dann den Exit-Status:

getent passwd labex
echo $?

Sie sollten die Benutzerinformationen gefolgt von 0 sehen.

Jetzt führen Sie den getent-Befehl für nonexistentuser aus und überprüfen Sie den Exit-Status:

getent passwd nonexistentuser
echo $?

Sie sollten keine Ausgabe von getent sehen, gefolgt von einem Nicht-Null-Wert (oft 1 oder 2).

Die Verwendung von getent und die Überprüfung seines Exit-Status ist eine zuverlässige Methode, um programmgesteuert festzustellen, ob ein Benutzer auf einem Linux-System existiert, unabhängig davon, ob der Benutzer lokal oder über einen Netzwerkdienst definiert ist.

Sie haben nun drei verschiedene Methoden gelernt, um die Existenz eines Benutzers in Linux zu prüfen!

Klicken Sie auf Weiter, um dieses Lab abzuschließen.

Zusammenfassung

In diesem Lab haben wir drei Methoden gelernt, um zu prüfen, ob ein Benutzerkonto in Linux existiert. Zunächst haben wir den Befehl id verwendet, der Benutzer- und Gruppeninformationen liefert, wenn der Benutzer existiert, und einen Fehler ausgibt, wenn er nicht existiert. Wir haben dies demonstriert, indem wir nach dem Benutzer root und einem nicht existierenden Benutzer gesucht haben.

Als Nächstes haben wir uns die Datei /etc/passwd angeschaut, eine Kernsystemdatei, die Details zu Benutzerkonten enthält. Durch die Suche in dieser Datei können wir feststellen, ob ein Eintrag für einen Benutzer vorhanden ist. Schließlich haben wir den Befehl getent passwd genutzt, der eine robuster Methode ist, um Benutzerinformationen aus verschiedenen Quellen, einschließlich /etc/passwd, abzufragen und im Allgemeinen für Skripterstellung und Automatisierung bevorzugt wird.