id-Befehl: UID und Gruppen prüfen, whoami, groups und zusätzliche Gruppen
Auf einem Linux-Server werden UID und Gruppen des aktuellen Kontos mit dem id-Befehl geprüft; wird nur der Kontoname gebraucht, dient dazu whoami, für nur die Gruppennamen groups. Auf Servern mit AlmaLinux 9 und Debian 12 wurden die drei Befehle nacheinander ausgeführt und die Ausgaben verglichen: id -un und whoami gaben denselben Kontonamen aus, und groups gab die Gruppenliste von id nur mit den Namen aus.
Die Ausgabe unten stammt von einem AlmaLinux-9.8-Server mit dem root-Konto und von einem Debian-12-Server mit einem normalen Konto. Name und Nummern des Anmeldekontos sowie die zusätzlichen Gruppen wurden durch Beispielwerte (user1, 1000, adm, systemd-journal) ersetzt.
1️⃣ Grundlegende Verwendung des id-Befehls
Ohne Optionen gibt id die Informationen des Kontos, das die aktuelle Shell gestartet hat, in einer Zeile aus. Im root-Konto standen alle drei Felder auf 0(root).
iduid=0(root) gid=0(root) groups=0(root)Das Feld uid enthält Nummer und Name des Kontos, das Feld gid Nummer und Name der primären Gruppe (primary group). Das Feld groups enthält alle Gruppen, denen das Konto angehört, mit der primären Gruppe an erster Stelle.
Steht hinter id ein Kontoname, werden die Informationen dieses Kontos ausgegeben. Beim normalen Konto user1, das zusätzliche Gruppen hat, folgten im Feld groups auf die primäre Gruppe user1 die Gruppen adm und systemd-journal. Diese Gruppen, denen das Konto neben der primären Gruppe angehört, sind die zusätzlichen Gruppen (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Bei vielen Konten haben UID und gid dieselbe Nummer, sodass die beiden Zahlen leicht für denselben Wert gehalten werden; das auf dem Server standardmäßig vorhandene Konto adm hatte aber die UID 3 und die Nummer 4 als primäre Gruppe. Das Konto operator hatte root als primäre Gruppe.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Werden mehrere Konten angegeben, erscheint je eines pro Zeile.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Bei einem Konto, das es nicht gibt, erscheint der Fehler [no such user], und der Exit-Code war 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1Bei einem vorhandenen Konto ist der Exit-Code 0, sodass er sich in einem Skript als Bedingung eignet, um zu prüfen, ob ein Konto existiert.
2️⃣ Optionen des id-Befehls
Soll aus der gesamten Ausgabe nur eine Nummer an ein Skript übergeben werden, wird mit einer Option ein einzelnes Feld ausgewählt. -u gibt die UID aus, -g die Nummer der primären Gruppe und -G alle Nummern der Gruppen, denen das Konto angehört.
id -u0id -u daemon2id -G user11000 4 190Zusammen mit -n erscheinen Namen statt Nummern. Die Prüfung der Gruppen von user1 mit [id -Gn] machte aus den drei Nummern drei Namen.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n und -r werden zusammen mit einer der Optionen -u, -g und -G verwendet. -n allein ergab den Fehler unten.
id -nid: cannot print only names or real IDs in default format-r gibt die reale (real) ID statt der effektiven (effective) ID aus. In einer Shell des root-Kontos gab [id -ur] 0 aus. Werden zwei oder mehr Optionen, die eine Nummer auswählen, wie -u und -g zusammen angegeben, erscheint der Fehler [cannot print "only" of more than one choice]. Die Optionen sind unten zusammengefasst.
| Option | Kopieren | Beschreibung |
|---|---|---|
| -u--user | Gibt die UID-Nummer aus | |
| -g--group | Gibt die Nummer der primären Gruppe aus | |
| -G--groups | Gibt alle Nummern der Gruppen aus, denen das Konto angehört | |
| -n--name | Gibt zusammen mit -u, -g oder -G den Namen statt der Nummer aus | |
| -r--real | Gibt zusammen mit -u, -g oder -G die reale (real) ID statt der effektiven ID aus |
| Option | Kopieren | Beschreibung |
|---|---|---|
| -Z--context | Gibt nur den Sicherheitskontext des Prozesses aus | |
| -z--zero | Trennt die Ausgabeelemente mit NUL-Zeichen statt Leerzeichen; im Standardformat nicht verwendbar | |
| -a | Wird nur zur Kompatibilität mit anderen Versionen von id angenommen und ignoriert | |
| --help | Gibt die Hilfe aus | |
| --version | Version ausgeben |
🔲 Simulator für den id-Befehl
Der Simulator unten startet mit dem Konto user1, das zusätzliche Gruppen hat. Nach dem Hinzufügen der Gruppe wheel mit dem Chip [🖊 Anderes Fenster] lassen sich [id] und [id user1] vergleichen und mit dem Chip [🔁 Erneut anmelden] die Gruppen einer neuen Shell prüfen.
3️⃣ Der whoami-Befehl und id -un
Wird nur der Kontoname der aktuellen Shell gebraucht, wird whoami ausgeführt. Die man-Seite beschreibt whoami als denselben Befehl wie [id -un]. Im root-Konto gaben beide Befehle root aus.
whoamirootid -unrootAuch in einem normalen Konto auf dem Debian-12-Server gaben die beiden Befehle denselben Kontonamen aus.
whoamiuser1id -unuser1whoami gibt den Kontonamen aus, der zur aktuell effektiven (effective) UID gehört. Der Befehl prüft nur das aktuelle Konto; wird dahinter ein Kontoname angegeben, erscheint ein Fehler.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.Name oder Nummer eines anderen Kontos werden geprüft, indem dieses Konto hinter id angegeben wird.
id -un user1user1Mit -u statt -un erscheint an derselben Stelle die UID-Nummer statt des Kontonamens.
4️⃣ Der groups-Befehl und zusätzliche Gruppen
groups gibt nur die Gruppennamen in einer Zeile aus. Ohne Kontonamen erscheinen die Gruppen der aktuellen Shell; im root-Konto war das nur root.
groupsrootMit einem Kontonamen erscheinen der Kontoname und nach dem Doppelpunkt die Gruppen. Bei mehreren Konten wurde je eines pro Zeile ausgegeben.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonDie primäre Gruppe und die zusätzlichen Gruppen werden an verschiedenen Stellen gespeichert. Zusätzliche Gruppen stehen als Mitglieder im vierten Feld der Gruppendatenbank (/etc/group), die primäre Gruppe steht als Nummer im vierten Feld der Kontoinformationen (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinBei der Gruppe user1, der primären Gruppe von user1, war das vierte Feld leer, und bei der zusätzlichen Gruppe adm war user1 als Mitglied eingetragen. Die 2 im vierten Feld der Zeile des Kontos daemon ist die Nummer der primären Gruppe.
Um ein Konto einer zusätzlichen Gruppe hinzuzufügen, dient der usermod-Befehl in der Form [usermod -aG Gruppe Konto]. Mit -G allein ohne -a fällt das Konto aus den bestehenden zusätzlichen Gruppen heraus, die nicht in der Liste stehen; deshalb wird -a mit angegeben.
groups ohne Kontonamen gibt die Gruppen des aktuellen Shell-Prozesses aus. Die man-Seite erklärt, dass dieser Wert von der Datenbank abweichen kann, wenn sich die Gruppendatenbank ändert.
Deshalb werden direkt nach einer Gruppenänderung die Gruppen in der Datenbank mit [groups Konto] oder [id Konto] geprüft, und für die Übernahme in die Shell ist eine erneute Anmeldung nötig. Ein Befehl, der die aktuelle Gruppen-ID bei bestehender Anmeldung ändert, ist newgrp.
🔢 FAQ & empfohlene Inhalte
Konten anlegen
Linux: useradd-Befehl & passwd-Befehl
Befehle, die ein neues Benutzerkonto anlegen und das Passwort dieses Kontos festlegen.
Konto löschen
[Linux] userdel-Befehl: Benutzerkonten löschen
Ein Befehl, der ein nicht mehr benötigtes Benutzerkonto löscht und auch dessen Home-Ordner aufräumt.
Passwortablauf
Linux-chage-Befehl
Ein Befehl, der die Gültigkeitsdauer und das Ablaufdatum des Passworts eines Benutzerkontos prüft und ändert.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.