Um das Berechtigungssystem zu konfigurieren und zu verwalten, benötigt der Administrator eine Liste aller Benutzer. Es gibt Befehle zum Erstellen von Benutzern und zum Löschen von Benutzern, aber es ist eine wichtige Aufgabe, alle Benutzer im Linux-System aufzulisten. Außerdem ist es aus Sicherheitsgründen unbedingt erforderlich, sicherzustellen, dass Sie die richtige Anzahl von Benutzern haben und dass Sie nicht vergessen haben, einige zu löschen.
Hier bei LinuxAPT helfen wir unseren Kunden im Rahmen unserer Server Management Services regelmäßig bei der Durchführung verwandter Linux-Systemabfragen.
In diesem Zusammenhang werden wir untersuchen, wie Benutzer in Linux-Systemen aufgelistet werden.
Wie listet man alle Benutzer mit der /etc/passwd-Datei auf?
Benutzerinformationen werden in der Datei /etc/passwd gespeichert. Es enthält eine Zeile mit dem Benutzernamen für jedes Benutzerkonto im System. Sie können den Befehl less oder cat verwenden, um den Dateiinhalt anzuzeigen:
$ cat /etc/passwd
In der Ausgabe sehen Sie, dass jede Zeile sieben durch Doppelpunkte getrennte Felder hat, die die folgenden Informationen enthalten:
- Benutzername.
- Verschlüsseltes Passwort, wobei x bedeutet, dass das Passwort in etc/shadow file gespeichert ist.
- UID (Benutzer-ID).
- GID (Gruppen-ID des Benutzers).
- Vollständiger Name des Benutzers.
- Benutzer $HOME-Verzeichnis.
- Login-Shell-Pfad.
Wenn Sie nur den Benutzernamen auflisten möchten, können Sie awk- oder cut-Befehle verwenden, um nur den Benutzernamen auszugeben:
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
Die Ausgabe sieht wie folgt aus:
Output
root
daemon
bin
sys
sync
games
man
lp
news
uucp
proxy
www-data
...
...
geoclue
gdm
gnome-initial-setup
sshd
Wie listet man alle Benutzer mit dem getent-Befehl auf?
Der Getent-Befehl liest Einträge aus Datenbanken. Es listet Benutzer sowohl aus der LDAP-Datenbank als auch aus der /etc/passwd-Datei auf.
Um eine Liste aller Linux-Benutzer zu erhalten, geben Sie den folgenden Befehl ein:
$ getent passwd
Die Ausgabe entspricht dem Inhalt der Datei /etc/passwd. Sie können auch awk oder cut verwenden, um nur den Benutzernamen auszugeben:
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
So prüfen Sie, ob ein Benutzer im Linux-System existiert ?
Jetzt wissen wir, wie man eine Benutzerliste erhält. Aber was ist, wenn Sie überprüfen möchten, ob ein Benutzer auf dem aktuellen System vorhanden ist oder nicht. Sie können mit dem grep-Befehl und ohne den grep-Befehl prüfen.
Zum Beispiel möchten wir überprüfen, ob der Linuxapt-Benutzer existiert oder nicht, dann sollten Sie den folgenden Befehl eingeben:
$ getent passwd | grep linuxapt
$ getent passwd linuxapt
Output
linuxapt:x:1001:1001:,,,:/home/linuxapt:/bin/bash
Wenn der Benutzer im System vorhanden ist, werden Details dieses Benutzers gedruckt, andernfalls wird nichts gedruckt.
Wenn Sie möchten, dass die Gesamtzahl der Benutzer auf Ihrem System vorhanden ist, können Sie sie wie folgt abrufen:
$ getent passwd | wc -l
Es gibt die Anzahl der Benutzer als folgende Ausgabe zurück:
Output
47
Wie kann man System- und normale Benutzer unterscheiden?
Systembenutzer werden erstellt, wenn Sie das Betriebssystem installieren oder neue Pakete aktualisieren. Es gibt keinen Unterschied mehr zwischen Systembenutzern und normalen Benutzern.
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 UID (Benutzer-ID), entweder er ist Systembenutzer oder normaler Benutzer. Wenn ein normaler Benutzer einen Benutzer mit dem Befehl adduser hinzufügt. Der Benutzer wird hinzugefügt und die UID wird automatisch mit Referenz auf UID_MIN und UID_MAX aus der Datei /etc/login.defs.
zugewiesenSie können UID_MIN und UID_MAX mit dem folgenden Befehl überprüfen:
$ grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
Die Ausgabe wird wie folgt angezeigt:
Output
UID_MIN 1000
UID_MAX 60000
Aus der obigen Ausgabe können wir ersehen, dass alle normalen Benutzer eine eindeutige ID zwischen 1000 und 60000 haben sollten.
Jetzt geben wir den Befehl aus, um eine Liste normaler Benutzer zu erhalten, deren eindeutige ID zwischen 1000 und 60000 liegt.
$ getent passwd {1000..60000}
Output
linuxapt:x:1000:1000:LinuxAPT,,,:/home/linuxapt:/bin/bash
demouser:x:1001:1001:,,,:/home/demouser:/bin/bash
Um nur Benutzernamen zu drucken, geben Sie folgenden Befehl ein:
$ eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
Output
linuxapt
demouser
Wie erhalte ich eine Gruppenliste unter Linux?
Sie können alle Gruppen in Linux auflisten, indem Sie den folgenden Befehl verwenden:
$ getent group
Mit dem folgenden Befehl können Sie alle Gruppen mit einem bestimmten Benutzer auflisten:
$ getent group | grep linuxapt