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.
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 dockerdDer 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 rootSchritt 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:/configWenn 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.
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.
