Benutzerinformationen werden in der Datei /etc/passwd gespeichert. Mit wenigen Befehlen kannst du alle Konten auflisten, nach bestimmten Benutzern suchen oder zwischen System- und normalen Benutzern unterscheiden.

Benutzer mit /etc/passwd anzeigen

Die Datei /etc/passwd enthält alle lokalen Benutzerkonten. Zeige den Inhalt mit cat oder less an:

cat /etc/passwd

Jede Zeile repräsentiert einen Benutzer. Die sieben Felder sind durch Doppelpunkte getrennt:

  • Benutzername - Der Login-Name
  • Passwort - Ein x verweist auf /etc/shadow
  • UID - Numerische Benutzer-ID
  • GID - Numerische Gruppen-ID
  • GECOS - Vollständiger Name oder Beschreibung
  • Home-Verzeichnis - Pfad zum Benutzerverzeichnis
  • Login-Shell - Standard ist /bin/bash

Nur Benutzernamen extrahieren

Mit awk oder cut filterst du das erste Feld heraus:

awk -F: '{ print $1 }' /etc/passwd
cut -d: -f1 /etc/passwd

Beide Befehle liefern das gleiche Ergebnis - eine Liste aller Benutzernamen.

Benutzer mit getent auflisten

Der Befehl getent ist flexibler als das direkte Lesen von /etc/passwd. Er fragt alle konfigurierten Namensquellen ab, darunter auch LDAP oder NIS:

getent passwd

Die Ausgabe hat das gleiche Format wie /etc/passwd. Bei Systemen mit LDAP-Authentifizierung zeigt getent zusätzlich die Benutzer aus dem Verzeichnisdienst an.

Nur Benutzernamen mit getent

Kombiniere getent mit awk oder cut:

getent passwd | awk -F: '{ print $1 }'
getent passwd | cut -d: -f1

Prüfen, ob ein Benutzer existiert

Übergib den Benutzernamen direkt an getent:

getent passwd jack

Existiert der Benutzer, zeigt der Befehl dessen Eintrag an. Keine Ausgabe bedeutet: Der Benutzer existiert nicht.

Alternativ filterst du mit grep:

getent passwd | grep jack

Anzahl der Benutzerkonten zählen

Leite die Ausgabe an wc -l weiter:

getent passwd | wc -l

Das Ergebnis zeigt die Gesamtzahl aller Benutzerkonten im System.

System- und normale Benutzer unterscheiden

Das System unterscheidet zwischen Systembenutzern und normalen Benutzern anhand der UID:

  • Systembenutzer werden bei der Installation des Betriebssystems oder von Paketen angelegt. Sie haben niedrige UIDs und dienen Diensten und Daemons.
  • Normale Benutzer sind echte Login-Konten mit Home-Verzeichnis und Shell. Ihre UIDs liegen in einem höheren Bereich.

UID-Grenzen ermitteln

Die Datei /etc/login.defs definiert den UID-Bereich für normale Benutzer:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Typische Ausgabe:

UID_MIN                  1000
UID_MAX                 60000

Normale Benutzer haben also UIDs zwischen 1000 und 60000.

Nur normale Benutzer auflisten

Mit diesem Befehl filterst du alle Benutzer im definierten UID-Bereich:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

Für eine reine Namensliste:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

Zusammenfassung

AufgabeBefehl
Alle Benutzer anzeigengetent passwd
Nur Benutzernamengetent passwd | cut -d: -f1
Benutzer suchengetent passwd benutzername
Anzahl der Kontengetent passwd | wc -l
UID-Grenzen prüfengrep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Diese Befehle funktionieren auf allen gängigen Distributionen, darunter Ubuntu, Debian, CentOS, RHEL und Arch Linux.