Die Benutzer- und Gruppenverwaltung ist fundamental für Linux-Server. Sie kontrolliert Zugriff, Berechtigungen und Sicherheit auf dem System.
Benutzer
Benutzer auflisten
# Alle Benutzer
cat /etc/passwd
# Nur Benutzernamen
cut -d: -f1 /etc/passwd
# Angemeldete Benutzer
who
w
users
# Aktuelle Benutzer-Info
id
id username
whoamiBenutzer erstellen
# Mit Standardeinstellungen
useradd username
# Mit Home-Verzeichnis
useradd -m username
# Mit Shell
useradd -m -s /bin/bash username
# Mit Gruppe
useradd -m -g users -G sudo,docker username
# Mit Kommentar
useradd -m -c "Max Mustermann" mmustermann
# Vollständiges Beispiel
useradd -m \
-s /bin/bash \
-g users \
-G sudo,www-data \
-c "Webentwickler" \
-e 2025-12-31 \
webdevPasswort setzen
# Interaktiv
passwd username
# Direkt setzen (unsicher, nur für Scripts)
echo "username:passwort" | chpasswd
# Passwort-Hash generieren
openssl passwd -6 "passwort"Benutzer ändern
# Shell ändern
usermod -s /bin/zsh username
# Gruppe hinzufügen
usermod -aG docker username
usermod -aG sudo username
# Home-Verzeichnis ändern
usermod -d /new/home -m username
# Benutzernamen ändern
usermod -l newname oldname
# Benutzer sperren
usermod -L username
# Benutzer entsperren
usermod -U username
# Ablaufdatum setzen
usermod -e 2025-12-31 usernameBenutzer löschen
# Ohne Home-Verzeichnis
userdel username
# Mit Home-Verzeichnis
userdel -r username
# Prozesse beenden und löschen
pkill -u username
userdel -r usernameGruppen
Gruppen auflisten
# Alle Gruppen
cat /etc/group
# Gruppen eines Benutzers
groups username
id -Gn username
# Mitglieder einer Gruppe
getent group groupnameGruppe erstellen
# Neue Gruppe
groupadd developers
# Mit GID
groupadd -g 2000 developers
# System-Gruppe
groupadd -r myserviceGruppe ändern
# Umbenennen
groupmod -n newname oldname
# GID ändern
groupmod -g 3000 groupnameGruppe löschen
groupdel groupnameBenutzer zu Gruppen
# Zu Gruppe hinzufügen (WICHTIG: -a = append)
usermod -aG groupname username
# Ohne -a werden alle anderen Gruppen entfernt!
# FALSCH: usermod -G docker username
# Primäre Gruppe ändern
usermod -g newgroup username
# Mehrere Gruppen
usermod -aG group1,group2,group3 usernameSystem-Dateien
/etc/passwd
username:x:1000:1000:Full Name:/home/username:/bin/bash
│ │ │ │ │ │ │
│ │ │ │ │ │ └─ Shell
│ │ │ │ │ └─ Home-Verzeichnis
│ │ │ │ └─ Kommentar/Name
│ │ │ └─ Primäre GID
│ │ └─ UID
│ └─ Passwort (x = in /etc/shadow)
└─ Benutzername/etc/shadow
username:$6$hash...:19000:0:99999:7:::
│ │ │ │ │ │
│ │ │ │ │ └─ Warnzeit vor Ablauf
│ │ │ │ └─ Max. Passwort-Alter
│ │ │ └─ Min. Passwort-Alter
│ │ └─ Letzte Änderung (Tage seit 1970)
│ └─ Passwort-Hash
└─ Benutzername/etc/group
groupname:x:1000:user1,user2
│ │ │ │
│ │ │ └─ Mitglieder
│ │ └─ GID
│ └─ Passwort (x oder leer)
└─ GruppennameSudo
Sudo-Berechtigung
# Zur sudo-Gruppe hinzufügen
usermod -aG sudo username # Debian/Ubuntu
usermod -aG wheel username # CentOS/RHEL/etc/sudoers
# Editieren (nie direkt!)
visudo
# Syntax
# user HOST=(RUNAS) COMMANDS
username ALL=(ALL:ALL) ALL
# Ohne Passwort
username ALL=(ALL) NOPASSWD: ALL
# Bestimmte Befehle
username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl
# Gruppe
%developers ALL=(ALL) /usr/bin/dockersudoers.d
# Datei in /etc/sudoers.d/
echo "username ALL=(ALL) NOPASSWD: /usr/bin/docker" > /etc/sudoers.d/username
chmod 440 /etc/sudoers.d/usernamePraktische Szenarien
Webentwickler-Benutzer
#!/bin/bash
# Webentwickler einrichten
USERNAME="webdev"
# Benutzer erstellen
useradd -m -s /bin/bash -c "Web Developer" $USERNAME
# Passwort setzen
echo "$USERNAME:$(openssl rand -base64 12)" | chpasswd
# Gruppen
usermod -aG www-data,docker $USERNAME
# SSH-Key
mkdir -p /home/$USERNAME/.ssh
chmod 700 /home/$USERNAME/.ssh
# Public Key einfügen
chown -R $USERNAME:$USERNAME /home/$USERNAME/.sshService-Account
# Benutzer ohne Login
useradd -r -s /usr/sbin/nologin -d /var/lib/myapp myapp
# Oder
adduser --system --group --no-create-home myappSFTP-only Benutzer
# Benutzer erstellen
useradd -m -s /usr/sbin/nologin -g sftp sftpuser
passwd sftpuser
# /etc/ssh/sshd_config
Match Group sftp
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
# Chroot-Verzeichnis vorbereiten
chown root:root /home/sftpuser
chmod 755 /home/sftpuser
mkdir /home/sftpuser/upload
chown sftpuser:sftp /home/sftpuser/upload
systemctl restart sshdShared Directory
# Gruppe für geteilte Dateien
groupadd shared
# Benutzer hinzufügen
usermod -aG shared user1
usermod -aG shared user2
# Verzeichnis
mkdir /srv/shared
chown root:shared /srv/shared
chmod 2775 /srv/shared # SGIDPasswort-Richtlinien
PAM-Konfiguration
# /etc/security/pwquality.conf
minlen = 12
minclass = 3
maxrepeat = 3
reject_username = yesPasswort-Ablauf
# Ablauf setzen
chage -M 90 username # Max 90 Tage
chage -m 1 username # Min 1 Tag
chage -W 14 username # Warnung 14 Tage vorher
# Status anzeigen
chage -l username
# Sofortiger Ablauf (Passwort-Änderung erzwingen)
chage -d 0 usernameSicherheit
Unbenutzte Accounts deaktivieren
# Sperren
usermod -L username
# Shell auf nologin
usermod -s /usr/sbin/nologin username
# Ablaufdatum in Vergangenheit
usermod -e 1 usernameRoot-Login
# Root-Passwort sperren
passwd -l root
# In /etc/ssh/sshd_config
PermitRootLogin noBenutzer-Audit
# Letzte Logins
last
lastlog
# Fehlgeschlagene Logins
lastb
# Login-History eines Users
last usernameZusammenfassung
| Befehl | Funktion | |--------|----------| | useradd | Benutzer erstellen | | usermod | Benutzer ändern | | userdel | Benutzer löschen | | passwd | Passwort setzen | | groupadd | Gruppe erstellen | | groupmod | Gruppe ändern | | groupdel | Gruppe löschen | | id | Benutzer-Info | | groups | Gruppen anzeigen |
| Datei | Inhalt | |-------|--------| | /etc/passwd | Benutzer-Daten | | /etc/shadow | Passwort-Hashes | | /etc/group | Gruppen | | /etc/sudoers | Sudo-Regeln |
| Option | useradd | usermod | |--------|---------|---------| | -m | Home erstellen | Home verschieben | | -s | Shell | Shell ändern | | -g | Primäre Gruppe | Primäre Gruppe | | -G | Zusätzliche Gruppen | Gruppen ersetzen | | -aG | - | Gruppe hinzufügen |
Fazit
Die Benutzer- und Gruppenverwaltung ist zentral für Linux-Sicherheit. Service-Accounts sollten ohne Login-Shell erstellt werden. sudo ermöglicht kontrollierte Privilegien-Eskalation. Passwort-Richtlinien erhöhen die Sicherheit. Regelmäßige Audits helfen, ungenutzte Accounts zu identifizieren. Die richtige Gruppenstruktur vereinfacht die Berechtigungsverwaltung.