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.
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.
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:
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üruseradd/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
getentstattcat /etc/passwdfür NSS-kompatible Abfragen. - Gruppen sind das primäre Mittel zur Delegation von Rechten.
- Ändern Sie Konfigurationsdateien stets über
vipwodervigr. - Systemkonten sollten
/usr/sbin/nologinoder/bin/falsenutzen und eine UID unter 1000 haben.
— Editorial Team
Noch keine Kommentare.