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
xverweist 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
| Aufgabe | Befehl |
|---|---|
| Alle Benutzer anzeigen | getent passwd |
| Nur Benutzernamen | getent passwd | cut -d: -f1 |
| Benutzer suchen | getent passwd benutzername |
| Anzahl der Konten | getent passwd | wc -l |
| UID-Grenzen prüfen | grep -E '^UID_MIN|^UID_MAX' /etc/login.defs |
Diese Befehle funktionieren auf allen gängigen Distributionen, darunter Ubuntu, Debian, CentOS, RHEL und Arch Linux.