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}
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:
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
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 |


