# id — Benutzer- und Gruppen-IDs anzeigen

> id zeigt UID, GID und alle Gruppen eines Nutzers – ideal für Rechte-Diagnose, Root-Checks in Skripten und das Debuggen von Berechtigungen unter Linux.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/id/

<!-- PROSE:intro -->
`id` beantwortet die Frage „Wer bin ich – und was darf ich?" in einer Zeile: Es gibt die UID (Benutzer-ID), die primäre GID (Gruppen-ID) und sämtliche Gruppenmitgliedschaften aus, unter SELinux zusätzlich den Sicherheitskontext. Damit ist es das Werkzeug der Wahl, wenn Dateirechte klemmen, ein Dienst unter dem falschen Konto läuft oder ein Skript prüfen muss, ob es als root ausgeführt wird. Dieser Guide zeigt dir die Optionen für Mensch und Maschine – von der vollen Übersicht bis zu maschinenlesbaren Einzelwerten für deine Skripte.
<!-- PROSE:intro:end -->

## Grundlagen

`id` — Gibt UID, GID und alle Gruppenmitgliedschaften des aktuellen Nutzers aus.

```bash
id
```

`id <user>` — Gibt UID, GID und Gruppen eines bestimmten Nutzers aus.

```bash
id www-data
```

`id root` — Zeigt die Informationen des root-Nutzers. UID und GID sind hier jeweils 0.

```bash
id root
```

## Numerische IDs

`id -u` — Gibt nur die UID (Benutzer-ID) des aktuellen Nutzers als Zahl aus.

```bash
id -u
```

`id -u <user>` — Gibt nur die UID eines bestimmten Nutzers aus.

```bash
id -u www-data
```

`id -g` — Gibt nur die primäre GID (Gruppen-ID) des aktuellen Nutzers aus.

```bash
id -g
```

`id -g <user>` — Gibt nur die primäre GID eines bestimmten Nutzers aus.

```bash
id -g deploy
```

`id -G` — Gibt alle Gruppen-IDs (primär + zusätzlich) als leerzeichengetrennte Zahlen aus.

```bash
id -G
```

`id -G <user>` — Gibt alle Gruppen-IDs eines bestimmten Nutzers aus.

```bash
id -G jpk
```

## Namen statt Nummern

`id -un` — Gibt nur den Benutzernamen aus (Name statt UID). Entspricht `whoami`.

```bash
id -un
```

`id -gn` — Gibt nur den Namen der primären Gruppe aus.

```bash
id -gn
```

`id -Gn` — Gibt alle Gruppennamen (primär + zusätzlich) als leerzeichengetrennte Namen aus.

```bash
id -Gn
```

`id -Gn <user>` — Gibt alle Gruppennamen eines bestimmten Nutzers aus.

```bash
id -Gn jpk
```

## Praxisbeispiele & Skripte

`[ $(id -u) -eq 0 ] && echo root` — Prüft, ob der aktuelle Nutzer root ist (UID 0). Verbreitetes Muster in Installationsskripten.

```bash
[ $(id -u) -eq 0 ] && echo 'Running as root' || echo 'Not root'
```

`id -nG | grep -qw docker && echo 'in docker group'` — Prüft, ob der aktuelle Nutzer Mitglied der Gruppe docker ist.

```bash
id -nG | grep -qw docker && echo 'docker access OK'
```

`id -u $USER` — Gibt die UID des in der Umgebungsvariablen `$USER` gespeicherten Nutzers aus.

```bash
id -u $USER
```

`stat -c '%u %g' <file>` — Zeigt UID und GID des Dateieigentümers. Praktisch zum Abgleich mit der Ausgabe von `id`.

```bash
stat -c '%u %g' /var/www/html/index.php
```

## Verwandte Werkzeuge

`whoami` — Gibt nur den aktuellen Benutzernamen aus. Entspricht `id -un`.

```bash
whoami
```

`groups` — Gibt alle Gruppennamen aus, denen der aktuelle Nutzer angehört. Entspricht `id -Gn`.

```bash
groups
```

`groups <user>` — Gibt die Gruppenmitgliedschaften eines bestimmten Nutzers aus.

```bash
groups www-data
```

`getent passwd <user>` — Zeigt den vollständigen passwd-Eintrag eines Nutzers: UID, GID, Home-Verzeichnis, Shell.

```bash
getent passwd www-data
```

`getent group <group>` — Zeigt Details einer Gruppe samt aller Mitglieder.

```bash
getent group sudo
```

`grep <user> /etc/passwd` — Zeigt den rohen passwd-Eintrag eines Nutzers direkt aus der Systemdatei.

```bash
grep www-data /etc/passwd
```

<!-- PROSE:outro -->
## Fazit

`id` ist ein reines Lese-Kommando ohne destruktives Risiko und damit die schnellste Antwort auf jede Rechte-Frage. Für Menschen liefert der nackte Aufruf die volle Übersicht; für Skripte sind die maschinenlesbaren Varianten Gold wert: `id -u` für die reine UID, `id -g` für die primäre Gruppe und `id -nG` für eine leerzeichengetrennte Liste der Gruppennamen. Der Klassiker `[ "$(id -u)" -eq 0 ]` als root-Check gehört in jedes ernsthafte Installationsskript. Ein Detail für den Ernstfall: Bei setuid-Programmen unterscheiden sich reale und effektive UID – `id` zeigt beide an, sodass du erkennst, mit welchen Rechten ein Prozess tatsächlich läuft.

## Weiterführende Links

- [ubuntuusers-Wiki: Benutzer und Gruppen](https://wiki.ubuntuusers.de/Benutzer_und_Gruppen/) – deutschsprachige Einführung in UIDs, GIDs und Gruppenverwaltung
- [Wikipedia: Benutzerkennung (Unix)](https://de.wikipedia.org/wiki/Benutzerkennung) – Hintergrund zu UID, GID sowie realer und effektiver Kennung
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [useradd](https://www.jpkc.com/db/cheatsheets/shell-system/useradd/) – neue Benutzerkonten samt UID und Gruppen anlegen
- [su](https://www.jpkc.com/db/cheatsheets/shell-system/su/) – zu einem anderen Benutzer oder zu root wechseln
- [sudo](https://www.jpkc.com/db/cheatsheets/shell-system/sudo/) – einzelne Befehle mit erhöhten Rechten ausführen

