Linux Benutzer anzeigen und Gruppen auflisten

Linux 10 Min. Lesezeit

Wer hat Zugriff auf den Server, wer ist gerade angemeldet und welcher Benutzer gehört zu welcher Gruppe? Diese Fragen stellen sich sowohl bei der Übernahme eines neuen Servers als auch bei einer Sicherheitsüberprüfung oder bei der Suche nach einem Berechtigungsfehler. Dieser Artikel zeigt Ihnen, wie Sie Benutzer und Gruppen auflisten, wie Sie einen Benutzer in eine Gruppe aufnehmen und auf welche Fallstricke Sie dabei achten sollten.

Wir haben die Befehle im November 2026 auf den Systemen AlmaLinux 10.2, AlmaLinux 9.8, Ubuntu 24.04.5 und Debian 13.7 getestet, und zwar auf virtuellen Maschinen, die aus den eigenen Cloud-Images der jeweiligen Distributionen installiert wurden; auf einem KVM-VPS funktionieren sie auf dieselbe Weise. Für die Auflistung ist kein sudo erforderlich, für Änderungen hingegen schon. In den Beispielen lautet der Benutzername janos und der Gruppenname fejlesztok.

Auflistung der Benutzer

Die Datei /etc/passwd

Die lokalen Benutzer sind in der Datei /etc/passwd gespeichert, jeweils eine Zeile pro Benutzer, mit durch Doppelpunkte getrennten Feldern:

janos:x:1001:1001::/home/janos:/bin/bash
Feld Beispiel Bedeutung
1. janos Benutzername
2. x Der Speicherort des Passworts: Der Hash des Passworts befindet sich tatsächlich in der Datei /etc/shadow
3. 1001 Benutzer-ID (UID)
4. 1001 Die primäre Gruppen-ID (GID)
5. (leer) Anmerkung, z. B. vollständiger Name
6. /home/janos Eigenes (Home-)Verzeichnis
7. /bin/bash Beim Einloggen gestartete Shell

Die vollständige Liste wird durch den Befehl getent passwd ausgegeben. Dieser zeigt den Inhalt der Datei /etc/passwd an, und falls der Server zudem ein zentrales Verzeichnis (LDAP, Active Directory, SSSD) nutzt, auch die von dort stammenden Benutzer:

getent passwd

# Nur die Namen
getent passwd | cut -d: -f1

# Daten eines Benutzers
getent passwd janos

Echte Benutzer und Systembenutzer

Der Großteil der Einträge in der Liste bezieht sich nicht auf Personen, sondern auf Systembenutzer: Die Dienste (sshd, nginx, mysql, polkitd und ähnliche) laufen mit eigenen Konten. Die beiden werden durch die UID unterschieden, die Grenzen sind in der Datei /etc/login.defs festgelegt:

System Systembenutzer Normale Benutzer
AlmaLinux 9 und 10 201–999 (sowie einige ältere Konten unter 200) 1000–60000
Ubuntu 24.04, Debian 13 100–999 1000–60000 (der Befehl adduser vergibt Nummern bis 59999)

Die UID des root-Benutzers ist immer 0. Die Liste der normalen Benutzer anhand der Grenzen aus der Datei /etc/login.defs:

min=$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)
max=$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)
awk -F: -v min="$min" -v max="$max" '$3 >= min && $3 <= max {print $1}' /etc/passwd

Kürzer, wenn der übliche Bereich von 1000 bis 60000 ausreicht (der zweite Befehl zeigt auch die Benutzer aus dem zentralen Verzeichnis an):

awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3, $7}' /etc/passwd
getent passwd {1000..60000}

Die mit dem Befehl awk aufgelisteten normalen Benutzer, die Mitglieder der Gruppe wheel sowie die Ausgabe der Befehle who und last -n 4 auf einem AlmaLinux-10.2-System

Wer kann sich anmelden?

Das letzte Feld, die Shell, gibt an, ob der Benutzer Zugriff auf die Befehlszeile erhält. Bei Systembenutzern lautet diese /usr/sbin/nologin oder /bin/false, sodass mit diesen Konten kein Login möglich ist. Konten mit einer davon abweichenden Shell:

grep -Ev '(nologin|false)$' /etc/passwd | cut -d: -f1,7

Im Test wurden neben dem root-Benutzer und den normalen Benutzern auch einige spezielle Konten aufgeführt (sync, shutdown und halt unter AlmaLinux): Diese führen jeweils nur einen einzigen Befehl aus und haben kein Passwort. Die Liste der zulässigen Shells befindet sich in der Datei /etc/shells.

Die Shell allein reicht nicht aus: Für den Zugriff per SSH-Schlüssel ist kein Passwort erforderlich, für den Passwortzugriff hingegen schon. Den Status des Passworts zeigt der Befehl passwd -S an:

sudo passwd -S janos

L oder LK in der zweiten Spalte bedeutet, dass das Passwort gesperrt (oder gar nicht festgelegt) ist, während P oder PS ein festgelegtes Passwort anzeigt. Bei dem Test waren auf den aus Cloud-Images installierten Rechnern die Passwörter aller Konten gesperrt; der Zugriff war nur über einen SSH-Schlüssel möglich.

Wer ist angemeldet?

# Aktuell angemeldete Benutzer
who

# Dasselbe, mit dem laufenden Befehl und der Last
w

# Nur die Namen, in einer Zeile
users

# Frühere Anmeldungen und Neustarts (die letzten 10)
last -n 10

# Fehlgeschlagene Anmeldeversuche
sudo lastb -n 10

# Letzte Anmeldung jedes Benutzers
lastlog

Die Befehle who und last zeigen die am Terminal (TTY, pts/0) oder über SSH angemeldeten Benutzer zusammen mit der IP-Adresse des Remote-Rechners an. SSH-Verbindungen, bei denen lediglich ein Befehl ohne Terminal ausgeführt wird (z. B. scp, rsync oder ssh szerver parancs), werden in der last-Liste nicht angezeigt.

Unter Debian 13 fehlen die Befehle last, lastb und lastlog: Laut den Release-Hinweisen zu Debian 13 führt das alte Dateiformat von wtmp und lastlog nach dem Jahr 2038 zu einem Überlauf. Aus diesem Grund ist Debian auf neue, SQLite-basierte Tools umgestiegen, die auf dem Cloud-Image standardmäßig nicht installiert sind. Bitte installieren Sie diese:

sudo apt install wtmpdb libpam-wtmpdb lastlog2 libpam-lastlog2

Anschließend ist der Befehl last wieder verfügbar (aus dem Paket wtmpdb), und anstelle von lastlog verwenden Sie bitte den Befehl lastlog2. Anstelle von lastb empfehlen die Release-Hinweise den Befehl sudo lslogins --failed. Im Test zeigte last erst nach dem nächsten Neustart Daten an; frühere Anmeldungen wurden nicht erfasst. Auf den Systemen AlmaLinux 9 und 10 sowie Ubuntu 24.04 waren last, lastb und lastlog standardmäßig vorhanden.

Ein detaillierteres Protokoll der Anmeldungen finden Sie in der Datei /var/log/secure (AlmaLinux) bzw. /var/log/auth.log (Ubuntu, Debian) sowie in der Ausgabe des Befehls journalctl -u sshd (unter Ubuntu und Debian -u ssh); siehe: Lesen von Protokolldateien unter Linux.

Auflistung der Gruppen

Die Gruppen befinden sich in der Datei /etc/group:

fejlesztok:x:1000:janos,anna

Die Felder: Name der Gruppe, Passwortfeld (wird praktisch nicht verwendet), Gruppen-ID (GID) und schließlich die Mitglieder, durch Kommas getrennt.

# Alle Gruppen
getent group

# Daten und Mitglieder einer Gruppe
getent group fejlesztok

# Gruppen eines Benutzers
groups janos
id janos

# Ihre eigenen Gruppen
id

Der Befehl id liefert die genauesten Ergebnisse: Er gibt die UID des Benutzers, seine primäre Gruppe (gid=) sowie alle seine Gruppen einschließlich der Nummern aus, zum Beispiel uid=1001(janos) gid=1001(janos) groups=1001(janos),1000(fejlesztok). Wenn Sie nur die Gruppennamen benötigen, verwenden Sie den Befehl id -nG janos.

Problem: Die Mitglieder der primären Gruppe werden nicht angezeigt

Jeder Benutzer hat eine Primärgruppe (das vierte Feld in der Datei /etc/passwd); in der Regel handelt es sich dabei um eine Gruppe mit demselben Namen wie der Benutzer. Die Mitglieder der Primärgruppe werden in der Datei /etc/group nicht aufgeführt, weshalb sie auch vom Befehl getent group nicht angezeigt werden. Im Test war die Primärgruppe des Benutzers admin die Gruppe users, dennoch zeigte die Ausgabe von getent group users eine leere Mitgliederliste an:

users:x:100:

Wenn Sie alle Mitglieder einer Gruppe anzeigen möchten, sollten Sie auch die Benutzer einbeziehen, die dieser Gruppe als primäre Gruppe zugeordnet sind:

g=users
gid=$(getent group "$g" | cut -d: -f3)
{ getent group "$g" | cut -d: -f4 | tr , '\n'
  getent passwd | awk -F: -v gid="$gid" '$4 == gid {print $1}'
} | grep -v '^$' | sort -u

Benutzer zu einer Gruppe hinzufügen

usermod -aG

sudo usermod -aG fejlesztok janos

# Mehrere Gruppen auf einmal, durch Kommas getrennt
sudo usermod -aG fejlesztok,docker janos

Der Schalter -a ist obligatorisch. Ohne -a (append) fügt usermod -G keine zusätzlichen Gruppen hinzu, sondern ersetzt alle zusätzlichen Gruppen des Benutzers durch die angegebene. Im Test war der Benutzer janos Mitglied der Gruppe fejlesztok; nach einem usermod -G adm janos-Befehl blieb er nur noch in der Gruppe adm:

Der Befehl usermod -G adm entfernt den Benutzer ohne den Schalter -a aus der Gruppe fejlesztok, während usermod -aG ihn wieder hinzufügt; Debian 13

Dieser Fehler kann auch zu einem Verlust der sudo-Berechtigungen führen: Wenn Sie einen Administrator-Benutzer ohne -a in eine neue Gruppe aufnehmen, wird er aus der Gruppe wheel oder sudo entfernt. Lassen Sie daher während der Änderung stets eine Verbindung mit Root- oder sudo-Rechten offen. Beheben lässt sich dies durch erneutes Hinzufügen der fehlenden Gruppen (usermod -aG).

gpasswd: Hinzufügen und Entfernen

Der Befehl gpasswd ändert jeweils nur eine Gruppe, sodass die Gruppenliste damit nicht versehentlich geleert werden kann. Auch das Entfernen aus einer Gruppe ist damit am einfachsten:

# Hinzufügen
sudo gpasswd -a janos fejlesztok

# Entfernen
sudo gpasswd -d janos fejlesztok

Unter Ubuntu und Debian erfüllen die Befehle adduser janos fejlesztok und deluser janos fejlesztok denselben Zweck. Unter AlmaLinux ist adduser lediglich ein anderer Name für useradd; dort sollten Sie diese Schreibweise nicht verwenden.

Wann tritt dies in Kraft?

Die Gruppenzugehörigkeit wird beim Einloggen geladen. In einer bereits laufenden Sitzung ist die neue Gruppe noch nicht sichtbar: id janos zeigt sie bereits an, das in der eigenen Shell des Benutzers ausgeführte id jedoch noch nicht, und die Berechtigungen der Gruppe sind ebenfalls noch nicht wirksam. Der Benutzer muss sich abmelden und erneut anmelden (bei SSH eine neue Verbindung herstellen).

Wenn Sie sich nicht abmelden möchten, startet der Befehl newgrp eine neue Shell, in der die neue Gruppe bereits gültig ist:

newgrp fejlesztok

Nach dem Befehl usermod -aG zeigt der Befehl id -nG in der laufenden Shell die Gruppe fejlesztok noch nicht an, während der Befehl id -nG admin und die Shell nach dem Befehl newgrp dies bereits tun; AlmaLinux 10.2

In der newgrp-Shell wird die angegebene Gruppe zur primären Gruppe, sodass auch die dort erstellten Dateien dieser Gruppe zugeordnet werden; mit dem Befehl exit kehren Sie zur ursprünglichen Shell zurück. Dasselbe gilt für die Dienste: Wenn Sie einen Nutzer eines Dienstes einer neuen Gruppe zugeordnet haben, starten Sie den Dienst neu.

Die Gruppen „wheel“ und „sudo“

Die Berechtigung zur Nutzung von sudo ist je nach Distribution an eine andere Gruppe gebunden:

System Gruppe Eintrag in der Datei /etc/sudoers
AlmaLinux, Rocky Linux, RHEL wheel %wheel ALL=(ALL) ALL
Ubuntu, Debian sudo %sudo ALL=(ALL:ALL) ALL

Wer Administratorrechte erhalten kann, wird durch getent group wheel oder getent group sudo angezeigt. Was ein bestimmter Benutzer genau ausführen darf, wird durch den Befehl sudo -l -U ausgegeben, zusammen mit den individuellen Regeln, die im Verzeichnis /etc/sudoers.d/ festgelegt sind:

sudo -l -U janos

Im Test lautete die Meldung bei einem Benutzer ohne Gruppenzugehörigkeit User janos is not allowed to run sudo on ..., nach der Aufnahme in die sudo-Gruppe (ALL : ALL) ALL. Die schrittweise Erstellung eines Benutzers und die Vergabe von sudo-Rechten werden im Artikel Benutzer erstellen und sudo-Rechte vergeben unter Linux beschrieben, die Verwendung von sudo im Artikel Verwendung des sudo-Befehls mit Beispielen.

Gruppe erstellen und löschen

# Neue Gruppe (das System wählt die GID, über 1000)
sudo groupadd fejlesztok

# Megadott GID-del
sudo groupadd -g 2000 projekt

# Systemgruppe für einen Dienst (GID unter 1000)
sudo groupadd -r myapp

# Gruppe löschen
sudo groupdel projekt

Die primäre Gruppe eines Benutzers kann mit dem Befehl usermod -g (kleines g) geändert werden; dies ist jedoch nur selten erforderlich. Im Test hat der Befehl usermod -g die Dateien im Home-Verzeichnis des Benutzers auf die neue Gruppe umgeschrieben, während seine Dateien außerhalb des Home-Verzeichnisses (beispielsweise unter /tmp) bei der alten Gruppe verblieben sind. Eine Gruppe kann nicht gelöscht werden, solange sie die primäre Gruppe eines Benutzers ist (groupdel: cannot remove the primary group of user 'janos'); zunächst muss der Benutzer umgestellt oder gelöscht werden.

Für ein gemeinsames Verzeichnis, in das alle Mitglieder der Gruppe schreiben dürfen, müssen auch die Verzeichnisgruppe und die Berechtigungen festgelegt werden (chgrp, chmod 2775); Einzelheiten hierzu finden Sie im Artikel Dateiberechtigungen (chmod, chown) unter Linux.

Zusammenfassung

Aufgabe Befehl
Alle Benutzer getent passwd
Normale Benutzer awk -F: '$3 >= 1000 && $3 < 60000 {print $1}' /etc/passwd
Angemeldete Benutzer who, w
Frühere Anmeldungen last, lastlog (Debian 13: lastlog2)
Alle Gruppen getent group
Mitglieder einer Gruppe getent group fejlesztok (ohne die Mitglieder der primären Gruppe)
Die Benutzergruppen eines Benutzers id janos, groups janos
Zu Gruppe hinzufügen sudo usermod -aG fejlesztok janos oder sudo gpasswd -a janos fejlesztok
Aus einer Gruppe entfernen sudo gpasswd -d janos fejlesztok
Sudo-Rechte sudo -l -U janos
Zurück: Linux-Artikel (76)