Linux: PUID und PGID herausfinden und anzeigen

Die PUID und PGID herauszufinden ist unter Linux vor allem dann wichtig, wenn du Docker-Container oder Netzwerkfreigaben wie NFS mit korrekten Dateiberechtigungen betreiben willst. Die PUID (Process User ID) und die PGID (Process Group ID) legen fest, unter welchem Benutzer- und Gruppenkonto ein Prozess laeuft und auf welche Dateien er zugreifen darf. In dieser Anleitung zeigen wir dir Schritt fuer Schritt, wie du PUID und PGID unter Linux anzeigst und die Ausgabe richtig interpretierst.

Was sind PUID und PGID?

Jeder Benutzer und jede Gruppe unter Linux besitzt eine eindeutige numerische Kennung. Die PUID entspricht der User-ID (uid) eines Kontos, die PGID der zugehoerigen Group-ID (gid). Der Benutzer root hat immer die ID 0, normale Benutzerkonten beginnen unter den meisten Distributionen bei 1000.

Viele Container-Images (etwa von LinuxServer.io) erwarten die Variablen PUID und PGID, damit der Container Dateien mit den richtigen Rechten auf dem Host anlegt. Stimmen die Werte nicht mit deinem Host-Benutzer ueberein, kommt es haeufig zu Zugriffsproblemen bei gemounteten Volumes.

Auch bei Netzwerkfreigaben ueber NFS spielen PUID und PGID eine zentrale Rolle: Der NFS-Server ordnet Zugriffe anhand der numerischen IDs zu, nicht anhand der Benutzernamen. Ein Konto media mit der ID 1000 auf dem Server wird deshalb nur dann korrekt erkannt, wenn der Client denselben Zahlenwert verwendet. Wer PUID und PGID kennt, kann Berechtigungen ueber mehrere Systeme hinweg konsistent halten und vermeidet, dass Dateien ploetzlich einem falschen oder unbekannten Benutzer gehoeren.

PUID und PGID unter Linux herausfinden

Um PUID und PGID des Benutzers zu ermitteln, unter dem beispielsweise Docker laeuft, gehst du in drei Schritten vor.

Siehe auch  Adobe Lightroom Fehler: "KI Änderungsspeicher konnte nicht initialisiert werden" - Ursachen & Lösungen

Schritt 1: Benutzer des Prozesses finden

Zunaechst ermittelst du, unter welchem Benutzer der Prozess laeuft. Fuer den Docker-Daemon nutzt du dazu den folgenden Befehl:

ps aux | grep dockerd

Der Befehl listet alle Prozesse auf, die mit dockerd zu tun haben. In der ersten Spalte siehst du den Benutzernamen, unter dem der Docker-Daemon laeuft. Meist ist das root, es kann aber auch ein anderer Benutzer sein, wenn Docker mit speziellen Berechtigungen eingerichtet wurde.

Schritt 2: User-ID (PUID) und Gruppen-ID (PGID) ermitteln

Nachdem du den Benutzernamen kennst, gibst du PUID und PGID mit dem id-Befehl aus:

id <username>

Ersetze <username> durch den tatsaechlichen Benutzernamen aus Schritt 1. Wenn Docker als root laeuft, gibst du zum Beispiel ein:

id root

Schritt 3: Ausgabe verstehen

Die Ausgabe des id-Befehls sieht ungefaehr so aus:

uid=0(root) gid=0(root) groups=0(root)
  • Die PUID (User-ID) ist die Zahl direkt nach uid=.
  • Die PGID (Group-ID) ist die Zahl direkt nach gid=.

In diesem Beispiel sind sowohl PUID als auch PGID 0, was typisch fuer den root-Benutzer ist. Bei einem normalen Konto siehst du in der Regel Werte wie uid=1000 und gid=1000.

PUID und PGID in Docker richtig einsetzen

Sobald du deine Werte kennst, uebergibst du sie dem Container als Umgebungsvariablen. In einer docker-compose.yml sieht das zum Beispiel so aus:

services:
  app:
    image: linuxserver/example
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - ./data:/config

Wenn du diese Werte in einem eigenen Startskript automatisch setzen willst, hilft dir unsere Anleitung, wie du ein Bash-Skript unter Linux erstellst. So kannst du PUID und PGID direkt beim Deployment auslesen und uebergeben.

Siehe auch  Docker Engine auf Debian installieren

Haeufige Stolperfallen

Der haeufigste Fehler ist, PUID und PGID eines anderen Benutzers zu verwenden, als dem die Host-Dateien tatsaechlich gehoeren. Pruefe die Eigentumsrechte eines Verzeichnisses mit ls -ln und gleiche die numerischen IDs mit deiner id-Ausgabe ab. Beachte ausserdem, dass root (ID 0) aus Sicherheitsgruenden fuer Container meist keine gute Wahl ist. Wer den Zugriff zusaetzlich absichern will, richtet passend dazu eine Firewall mit UFW ein. Aehnlich systematisch gehst du uebrigens beim Pruefen der PHP-Version unter Linux vor.

Fazit

Du findest PUID und PGID unter Linux in wenigen Sekunden heraus: den Benutzer mit ps aux | grep dockerd ermitteln, anschliessend id <username> ausfuehren und die Zahlen hinter uid= und gid= ablesen. Diese Werte brauchst du fuer korrekte Dateiberechtigungen in Docker-Containern und bei NFS-Freigaben, damit Prozesse genau die Rechte erhalten, die sie benoetigen.

Haeufig gestellte Fragen (FAQ)

Was bedeuten PUID und PGID unter Linux?

PUID steht fuer die Process User ID (User-ID eines Kontos), PGID fuer die Process Group ID (Group-ID). Sie bestimmen, unter welchem Benutzer und welcher Gruppe ein Prozess laeuft und auf welche Dateien er zugreifen darf.

Wie finde ich meine eigene PUID und PGID heraus?

Gib im Terminal einfach id ohne Argument ein. Die Ausgabe zeigt deine eigene uid (PUID) und gid (PGID) sowie alle Gruppen, denen dein Benutzer angehoert.

Warum sind PUID und PGID fuer Docker wichtig?

Viele Container legen Dateien auf gemounteten Volumes ab. Stimmen PUID und PGID mit deinem Host-Benutzer ueberein, erhaelt der Host die richtigen Zugriffsrechte und du vermeidest typische Permission-Denied-Fehler.

Welche PUID und PGID hat der root-Benutzer?

Der Benutzer root hat immer die PUID 0 und die PGID 0. Normale Benutzerkonten starten unter den meisten Distributionen dagegen bei der ID 1000.

Kann ich PUID und PGID eines Benutzers aendern?

Ja. Mit usermod -u aenderst du die User-ID und mit groupmod -g die Group-ID. Anschliessend solltest du die Eigentumsrechte betroffener Dateien mit chown anpassen, damit der Zugriff weiter funktioniert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen