Zurück zur Startseite

Linux Benutzer UID GID Gruppenverwaltung

Der Artikel zerlegt die Benutzeridentifikation durch UID/GID in Linux, Zugriffsmodell, Dateien /etc/passwd shadow group. Befehle id getent useradd vipw für Diagnostik und Kontoverwaltung.

Linux Benutzerverwaltung: UID Gruppen useradd
Advertisement 728x90

Linux-Benutzer- und Gruppenverwaltung: UID, GID und Kontrollmechanismen

Der Linux-Kernel arbeitet mit numerischen Kennungen – UIDs und GIDs. Ein Benutzername ist lediglich ein menschenlesbarer Alias, der in /etc/passwd gespeichert wird. Prozesse und Dateien sind an diese Zahlen gebunden, daher führt das Ändern eines Benutzernamens ohne Beibehaltung der ursprünglichen UID zwangsläufig zum Verlust des Zugriffs auf Ressourcen.

Aktuellen Benutzer prüfen:

id
# uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo),998(docker)

id -u  # Nur UID
whoami # Nur Benutzername
getent passwd deployer

getent fragt NSS-Module ab – inklusive LDAP – im Gegensatz zum direkten Dateilesen.

Google AdInline article slot

Zugriffsmodell und Besitz

Jede Inode speichert einen Besitzer (UID) und eine Gruppe (GID). Der Kernel prüft die Berechtigungen in dieser Reihenfolge: Prozess-UID/GID → Besitzer? → Gruppe? → Andere. Die erste Übereinstimmung bestimmt den Zugriff.

Beispiel:

ls -la /var/log/nginx/
# -rw-r----- 1 www-data adm 187234 Mar 26 10:41 access.log

Besitzer ist www-data, Gruppe ist adm. Ein Prozess, der als www-data läuft, erhält Besitzerzugriff, unabhängig von seiner Gruppenmitgliedschaft.

Google AdInline article slot

UID-Bereiche:

  • 0: root
  • 1–999: Systemkonten (Daemons, kein Login)
  • 1000+: reguläre Benutzer
  • 65534: nobody

Konfiguriert in /etc/login.defs.

Systembenutzer verwenden /usr/sbin/nologin oder /bin/false, um das Login zu verhindern:

Google AdInline article slot
awk -F: '$3 < 1000 && $3 > 0 {print $1, $3, $7}' /etc/passwd

Gruppen: Gemeinsamer Zugriff

Primäre Gruppe (GID in /etc/passwd) gilt für neue Dateien. Zusätzliche Gruppen sind in /etc/group aufgeführt.

Mitgliedschaft prüfen:

groups  # Aktuelle Gruppen
getent group docker  # Mitglieder
docker:x:998:deployer,ci

Gruppen vereinfachen die Zugriffssteuerung: Fügen Sie einen Benutzer zur docker-Gruppe hinzu, um Socket-Zugriff ohne sudo zu gewähren.

Konfigurationsdateien

/etc/passwd (für alle lesbar):

deployer:x:1001:1001:Deploy Bot,,:/home/deployer:/bin/bash

Felder: Benutzername | Passwortschlüssel (x) | UID | GID | GECOS | Heimatverzeichnis | Shell.

/etc/shadow (nur für root): enthält SHA-512- oder yescrypt-Hashes sowie Passwort-Ablaufeinstellungen.

deployer:$6$rounds=5000$xPwF...$kE9...hash...:19800:0:99999:7:::

/etc/group:

docker:x:998:deployer,ci-bot

Sichere Bearbeitungsbefehle:

vipw    # Passwd mit Sperrung bearbeiten
vigr    # Gruppe bearbeiten
pwck    # Konfiguration validieren

Erstellen und Konfigurieren von Benutzern

Verwenden Sie useradd mit wichtigen Optionen:

| Option | Beschreibung |

|--------|-------------|

| -m | Home-Verzeichnis erstellen |

| -s | Standard-Shell festlegen |

| -G | Zusätzliche Gruppen hinzufügen |

| -r | Systemkonto |

| -u | UID angeben |

Beispiele:

useradd -m -s /bin/bash -G sudo,docker ivan
useradd -r -s /usr/sbin/nologin ci-bot

passwd ivan  # Passwort setzen
chpasswd <<< 'ivan:secret'
passwd -e ivan  # Passwort beim nächsten Login erzwingen

useradd -m kopiert aus /etc/skel und setzt die Eigentümerschaft des Home-Verzeichnisses.

umask zieht von 0666 (Dateien) oder 0777 (Verzeichnisse) ab. Standard: 0022.

Umgebung und Vorlagen

/etc/skel enthält Vorlagen für neue Benutzerheime: .bashrc, .profile.

Globale Einstellungen:

  • /etc/default/useradd: Standardeinstellungen für useradd
  • /etc/profile.d/*.sh: Umgebungs-Skripte für Anmeldungen
  • /etc/login.defs: umask, UID-Bereichseinstellungen

Wichtige Erkenntnisse:

  • UID steuert den Zugriff, nicht der Benutzername.
  • Verwenden Sie getent statt cat /etc/passwd für NSS-kompatible Abfragen.
  • Gruppen sind das primäre Mittel zur Delegation von Rechten.
  • Ändern Sie Konfigurationsdateien stets über vipw oder vigr.
  • Systemkonten sollten /usr/sbin/nologin oder /bin/false nutzen und eine UID unter 1000 haben.

— Editorial Team

Advertisement 728x90

Weiterlesen