Wollten Sie schon immer alle Benutzer in Ihrem Linux-System auflisten oder die Anzahl der Benutzer im System zählen? Es gibt Befehle, um einen Benutzer zu erstellen, einen Benutzer zu löschen, angemeldete Benutzer aufzulisten, aber wie lautet der Befehl, um alle Benutzer in Linux aufzulisten?
Dieses Tutorial zeigt Ihnen, wie Sie Benutzer in Linux-Systemen auflisten.
Erhalten Sie eine Liste aller Benutzer mit /etc/passwd
Datei #
Lokale Benutzerinformationen werden in /etc/passwd
gespeichert Datei. Jede Zeile in dieser Datei stellt Anmeldeinformationen für einen Benutzer dar. Um die Datei zu öffnen, können Sie entweder cat
verwenden oder less
:
less /etc/passwd
Jede Zeile in der Datei hat sieben durch Doppelpunkte getrennte Felder, die die folgenden Informationen enthalten:
- Benutzername.
- Verschlüsseltes Passwort (
x
bedeutet, dass das Passwort in/etc/shadow
gespeichert ist Datei). - Benutzer-ID-Nummer (UID).
- Gruppen-ID-Nummer (GID) des Benutzers.
- Vollständiger Name des Benutzers (GECOS).
- Home-Verzeichnis des Benutzers.
- Login-Shell (standardmäßig
/bin/bash
).
Wenn Sie nur den Benutzernamen anzeigen möchten, können Sie entweder awk
verwenden oder cut
Befehle, um nur das erste Feld mit dem Benutzernamen zu drucken:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne
Rufen Sie eine Liste aller Benutzer mit dem getent-Befehl #
Der getent
zeigt Einträge aus Datenbanken an, die in /etc/nsswitch.conf
konfiguriert sind Datei, einschließlich passwd
Datenbank, mit der eine Liste aller Benutzer abgefragt werden kann.
Um eine Liste aller Linux-Benutzer zu erhalten, geben Sie den folgenden Befehl ein:
getent passwd
Wie Sie sehen können, ist die Ausgabe die gleiche wie bei der Anzeige des Inhalts von /etc/passwd
Datei. Wenn Sie LDAP für die Benutzerauthentifizierung verwenden, wird der getent
zeigt alle Linux-Benutzer von beiden /etc/passwd
an Datei und LDAP-Datenbank.
Sie können auch awk
verwenden oder cut
um nur das erste Feld mit dem Benutzernamen zu drucken:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Überprüfen Sie, ob ein Benutzer im Linux-System # existiert
Jetzt, da wir wissen, wie man alle Benutzer auflistet, können wir, um zu überprüfen, ob ein Benutzer in unserer Linux-Box existiert, einfach die Benutzerliste filtern, indem wir die Liste an grep
weiterleiten Befehl.
Zum Beispiel, um herauszufinden, ob ein Benutzer mit dem Namen jack
in unserem Linux-System existiert, können wir den folgenden Befehl verwenden:
getent passwd | grep jack
Wenn der Benutzer existiert, druckt der obige Befehl die Anmeldeinformationen des Benutzers. Keine Ausgabe, was bedeutet, dass der Benutzer nicht existiert.
Wir können auch prüfen, ob ein Benutzer existiert, ohne den grep
zu verwenden Befehl wie unten gezeigt:
getent passwd jack
Wie zuvor, wenn der Benutzer existiert, zeigt der Befehl die Anmeldeinformationen des Benutzers an.
Wenn Sie herausfinden möchten, wie viele Benutzerkonten Sie auf Ihrem System haben, leiten Sie getent passwd
weiter Ausgabe an wc
Befehl:
getent passwd | wc -l
33
Wie Sie der obigen Ausgabe entnehmen können, hat mein Linux-System 33 Benutzerkonten.
System- und normale Benutzer #
Es gibt keinen wirklichen technischen Unterschied zwischen dem System und normalen (normalen) Benutzern. Normalerweise werden Systembenutzer erstellt, wenn das Betriebssystem und neue Pakete installiert werden. In einigen Fällen können Sie einen Systembenutzer erstellen, der von einigen Anwendungen verwendet wird.
Normale Benutzer sind die Benutzer, die vom Root oder einem anderen Benutzer mit sudo-Berechtigungen erstellt wurden. Normalerweise hat ein normaler Benutzer eine echte Login-Shell und ein Home-Verzeichnis.
Jeder Benutzer hat eine numerische Benutzer-ID namens UID. Wenn nicht angegeben beim Erstellen eines neuen Benutzers mit dem useradd
Befehl wird die UID automatisch aus der /etc/login.defs
ausgewählt Datei abhängig von der UID_MIN
und UID_MIN
Werte.
Um die UID_MIN
zu überprüfen und UID_MIN
Werten auf Ihrem System können Sie den folgenden Befehl verwenden:
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
UID_MIN 1000
UID_MAX 60000
Aus der obigen Ausgabe können wir ersehen, dass alle normalen Benutzer eine UID zwischen 1000 und 60000 haben sollten. Wenn wir den minimalen und maximalen Wert kennen, können wir eine Liste aller normalen Benutzer in unserem System abfragen.
Der folgende Befehl listet alle normalen Benutzer in unserem Linux-System auf:
getent passwd {1000..60000}
vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin
Ihr System UID_MIN
und UID_MIN
Werte können unterschiedlich sein, daher wäre die allgemeinere Version des obigen Befehls:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
Wenn Sie nur die Benutzernamen drucken möchten, leiten Sie die Ausgabe einfach an cut
weiter Befehl:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Schlussfolgerung #
In diesem Tutorial haben Sie gelernt, wie Sie Benutzer in Ihrem Linux-System auflisten und filtern und was die Hauptunterschiede zwischen System- und normalen Linux-Benutzern sind.
Dieselben Befehle gelten für alle Linux-Distributionen, einschließlich Ubuntu, CentOS, RHEL, Debian und Linux Mint.
Fühlen Sie sich frei, einen Kommentar zu hinterlassen, wenn Sie Fragen haben.