Linux Benutzer und Gruppen verwalten – useradd, sudo und Berechtigungen

Benutzer erstellen, Gruppen verwalten, sudo einrichten und Dateirechte verstehen – die vollständige Anleitung zur Linux-Benutzerverwaltung für Administratoren.

8 min Lesezeit

Linux Benutzer und Gruppen verwalten – useradd, sudo und Berechtigungen

Die Benutzerverwaltung ist ein zentrales Konzept der Linux-Sicherheit: Jeder Prozess läuft unter einem Benutzer, jede Datei gehört einem Benutzer und einer Gruppe. Wer diese Mechanismen versteht, kann Systeme granular absichern und gezielt Rechte vergeben.


Benutzer und Gruppen – die Grundlagen

UIDs und GIDs

Jeder Benutzer hat eine eindeutige numerische UID (User ID), jede Gruppe eine GID (Group ID).

UID 0         → root (Superuser)
UID 1–999     → Systembenutzer (Daemons: www-data, postgres, nginx)
UID 1000+     → Normale Benutzer

Wichtige Konfigurationsdateien

# Alle Benutzer
cat /etc/passwd
# format: name:x:uid:gid:kommentar:home:shell
# andre:x:1000:1000:Andre,,,:/home/andre:/bin/bash

# Passwörter (gehasht, nur root lesbar)
sudo cat /etc/shadow

# Alle Gruppen
cat /etc/group
# format: name:x:gid:mitglieder
# docker:x:999:andre

# sudo-Konfiguration
cat /etc/sudoers   # (besser: sudo visudo)

Aktuellen Benutzer und Gruppen anzeigen

# Aktueller Benutzer
whoami

# UID, GID und Gruppen-Mitgliedschaften
id
# uid=1000(andre) gid=1000(andre) groups=1000(andre),27(sudo),999(docker)

# Alle Gruppen des aktuellen Benutzers
groups

# Alle eingeloggten Benutzer
who
w

Benutzer verwalten

Benutzer erstellen

# Neuen Benutzer erstellen (mit Home-Verzeichnis, Standard-Shell)
sudo useradd -m -s /bin/bash -c "Max Mustermann" max

# -m  → Home-Verzeichnis erstellen (/home/max)
# -s  → Standard-Shell
# -c  → Kommentarfeld (Vollständiger Name)

# Passwort setzen
sudo passwd max

# Alles in einem (interaktiv)
sudo adduser max    # Ubuntu/Debian: freundlicher Wrapper um useradd

Benutzer-Optionen

# Mit spezifischer UID
sudo useradd -m -u 1500 -s /bin/bash spezial

# Mit primärer Gruppe
sudo useradd -m -g webteam -s /bin/bash webdev

# Ohne Login (für Daemons/Services)
sudo useradd --system --no-create-home --shell /usr/sbin/nologin myapp

# Home-Verzeichnis woanders
sudo useradd -m -d /opt/deploy -s /bin/bash deploy

Benutzer ändern

# Shell ändern
sudo usermod -s /bin/zsh max

# Home-Verzeichnis verschieben
sudo usermod -d /new/home -m max

# Benutzername ändern
sudo usermod -l neuer-name alter-name

# Kommentar ändern
sudo usermod -c "Neuer Kommentar" max

# Konto deaktivieren (Login verhindern)
sudo usermod -L max    # Lock
sudo usermod -U max    # Unlock

# Ablaufdatum setzen
sudo usermod -e 2026-12-31 max

Benutzer löschen

# Benutzer löschen (Home-Verzeichnis bleibt)
sudo userdel max

# Mit Home-Verzeichnis löschen
sudo userdel -r max

# Prüfen ob Dateien des Benutzers noch existieren
sudo find / -user max 2>/dev/null

Passwort-Verwaltung

# Eigenes Passwort ändern
passwd

# Passwort anderes Benutzers (als root)
sudo passwd max

# Passwort-Ablauf erzwingen (Benutzer muss beim nächsten Login ändern)
sudo passwd -e max

# Passwort-Politik anzeigen
sudo chage -l max

# Passwort-Ablauf in 90 Tagen
sudo chage -M 90 max

Gruppen verwalten

Gruppe erstellen und verwalten

# Neue Gruppe erstellen
sudo groupadd webteam

# Mit spezifischer GID
sudo groupadd -g 1500 webteam

# Benutzer zu Gruppe hinzufügen
sudo usermod -aG webteam max
# -a = append (ohne -a werden alle anderen Gruppen entfernt!)
# -G = Supplementary Groups

# Alternativ:
sudo gpasswd -a max webteam

# Benutzer aus Gruppe entfernen
sudo gpasswd -d max webteam

# Gruppe umbenennen
sudo groupmod -n neuer-name alter-name

# Gruppe löschen
sudo groupdel webteam

Wichtige Systemgruppen

Gruppe Zugang zu
sudo / wheel sudo-Rechte
docker Docker-Daemon
www-data Webserver-Dateien
adm Log-Dateien lesen
audio Audio-Geräte
video Video-Geräte
plugdev USB-Geräte
# Alle Gruppen eines Benutzers anzeigen
groups max
id max

# Alle Mitglieder einer Gruppe
getent group docker
# docker:x:999:andre,max

Wichtig: Neue Gruppen-Mitgliedschaften gelten erst in neuen Login-Sessions! newgrp docker oder aus-/einloggen.


sudo – Administratorrechte vergeben

sudo (superuser do) erlaubt regulären Benutzern, spezifische oder alle Root-Befehle auszuführen.

Benutzer sudo-Rechte geben

# Auf Ubuntu/Debian: sudo-Gruppe
sudo usermod -aG sudo max

# Auf Fedora/RHEL: wheel-Gruppe
sudo usermod -aG wheel max

# Sofort testen (in neuer Shell oder nach Neuanmeldung)
su - max
sudo whoami
# root

sudoers-Datei bearbeiten

Immer visudo verwenden – es prüft die Syntax vor dem Speichern:

sudo visudo

Syntax der sudoers-Datei:

# Format:
# wer    wo=(als_wer)    Befehle

# Alles erlauben (wie sudo-Gruppe)
max ALL=(ALL:ALL) ALL

# Nur bestimmte Befehle
max ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/bin/systemctl reload nginx

# Ohne Passwort (NOPASSWD)
deploy ALL=(ALL) NOPASSWD: /usr/bin/docker

/etc/sudoers.d/ – modulare Konfiguration

Statt die Haupt-sudoers zu bearbeiten, eigene Dateien in /etc/sudoers.d/ anlegen:

# Neue Datei für deploy-Benutzer
sudo visudo -f /etc/sudoers.d/deploy
# deploy darf Docker und systemctl ohne Passwort nutzen
deploy ALL=(ALL) NOPASSWD: /usr/bin/docker, /usr/bin/systemctl
# Berechtigungen korrekt setzen (Pflicht!)
sudo chmod 440 /etc/sudoers.d/deploy

sudo-Nutzung einschränken

# Wer hat sudo-Rechte?
grep -E '^%sudo|^%wheel' /etc/sudoers

# sudo-Historie anzeigen
sudo journalctl _COMM=sudo
# oder
sudo grep sudo /var/log/auth.log  # Ubuntu/Debian
sudo grep sudo /var/log/secure    # Fedora/RHEL

Dateiberechtigungen im Detail

chmod im Oktal-System

# Rechte anzeigen
ls -la datei.txt
# -rw-r--r-- 1 andre www-data 1024 Feb 18 10:00 datei.txt

# Aufbau: [Typ][User][Group][Others]
# -  rw-  r--  r--
Oktal Binär rwx Bedeutung
7 111 rwx lesen, schreiben, ausführen
6 110 rw- lesen, schreiben
5 101 r-x lesen, ausführen
4 100 r-- nur lesen
0 000 --- kein Recht
# Gängige Berechtigungen
chmod 755 script.sh       # rwxr-xr-x (Skripte/Verzeichnisse)
chmod 644 datei.txt       # rw-r--r-- (Dateien)
chmod 600 privat.key      # rw------- (private Schlüssel)
chmod 700 ~/.ssh          # rwx------ (private Verzeichnisse)
chmod 664 gemeinsam.txt   # rw-rw-r-- (Teamdatei)

# Rekursiv
chmod -R 755 /var/www/html

# Symbolische Notation
chmod u+x script.sh       # User: ausführbar hinzufügen
chmod g-w datei.txt       # Gruppe: Schreibrecht entfernen
chmod o-rwx privat/       # Others: alle Rechte entfernen
chmod a+r public.txt      # All: Leserecht für alle

chown – Eigentümer ändern

# Eigentümer ändern
sudo chown andre datei.txt

# Eigentümer und Gruppe
sudo chown andre:www-data datei.txt

# Nur Gruppe (chgrp)
sudo chgrp www-data datei.txt

# Rekursiv
sudo chown -R www-data:www-data /var/www/meine-app

umask – Standard-Berechtigungen

umask bestimmt die Standard-Berechtigungen für neu erstellte Dateien:

# Aktuellen umask anzeigen
umask
# 0022

# Berechnung:
# Dateien: 666 - 022 = 644 (rw-r--r--)
# Verzeichnisse: 777 - 022 = 755 (rwxr-xr-x)

# Restriktiver (nur Eigentümer)
umask 077
# Dateien: 666 - 077 = 600
# Verzeichnisse: 777 - 077 = 700

# umask dauerhaft setzen (in ~/.bashrc)
echo "umask 022" >> ~/.bashrc

Spezielle Berechtigungsbits: SUID, SGID, Sticky

SUID (Set User ID) – Bit 4000

Führt ein Programm mit den Rechten des Eigentümers aus, nicht des ausführenden Benutzers.

# Beispiel: passwd darf /etc/shadow ändern (obwohl root-Eigentum)
ls -la /usr/bin/passwd
# -rwsr-xr-x 1 root root ... /usr/bin/passwd
#    ^-- s = SUID

# SUID setzen
sudo chmod u+s datei
sudo chmod 4755 datei

# SUID-Dateien finden (potenzielle Sicherheitsrisiken)
find / -perm -4000 -type f 2>/dev/null

SGID (Set Group ID) – Bit 2000

Bei Verzeichnissen: neue Dateien erben die Gruppe des Verzeichnisses.

# Teamverzeichnis: alle neuen Dateien gehören zur Gruppe "team"
sudo mkdir /opt/teamprojekt
sudo chown root:team /opt/teamprojekt
sudo chmod 2775 /opt/teamprojekt
# drwxrwsr-x  ← s = SGID

# SGID setzen
chmod g+s /opt/teamprojekt
chmod 2775 /opt/teamprojekt

Sticky Bit – Bit 1000

Bei Verzeichnissen: Dateien können nur vom Eigentümer gelöscht werden.

# Klassisches Beispiel: /tmp
ls -la /
# drwxrwxrwt ... tmp   ← t = Sticky Bit

# Jeder kann schreiben, aber nur der Eigentümer kann seine Dateien löschen
chmod +t /shared/uploads
chmod 1777 /shared/uploads

ACLs: feinere Berechtigungskontrolle

Standard-Unix-Rechte kennen nur User/Group/Others. Mit ACLs (Access Control Lists) kannst du für beliebige Benutzer/Gruppen individuelle Rechte setzen.

# acl-Paket installieren
sudo apt install acl

# ACLs einer Datei anzeigen
getfacl datei.txt
# # file: datei.txt
# # owner: andre
# # group: www-data
# user::rw-
# group::r--
# other::r--

# ACL für zusätzlichen Benutzer setzen
setfacl -m u:max:rw datei.txt

# ACL für Gruppe setzen
setfacl -m g:dev:rx /var/www/app

# ACL rekursiv setzen
setfacl -R -m u:deploy:rwx /opt/meine-app

# ACL entfernen
setfacl -x u:max datei.txt

# Alle ACLs entfernen
setfacl -b datei.txt

Häufige Szenarien

Webserver-Deployment: Benutzer und Rechte einrichten

# Deploy-Benutzer erstellen (kein interaktiver Login)
sudo useradd -m -s /bin/bash -c "Deployment User" deploy

# Webroot gehört deploy und www-data
sudo chown -R deploy:www-data /var/www/meine-app
sudo chmod -R 755 /var/www/meine-app
sudo chmod -R 664 /var/www/meine-app/*.php  # Schreibbar für Gruppe

# deploy darf systemctl restart (für CI/CD)
sudo visudo -f /etc/sudoers.d/deploy
# deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

Gemeinsamer Team-Ordner

# Gruppe erstellen
sudo groupadd webteam

# Benutzer hinzufügen
sudo usermod -aG webteam alice
sudo usermod -aG webteam bob

# Ordner einrichten
sudo mkdir /opt/webprojekt
sudo chown root:webteam /opt/webprojekt
sudo chmod 2775 /opt/webprojekt  # SGID: neue Dateien gehören webteam

Service-Benutzer (ohne Login)

# Minimaler Benutzer für einen Daemon
sudo useradd \
  --system \
  --no-create-home \
  --shell /usr/sbin/nologin \
  --comment "Meine App Service Account" \
  myapp

# Verzeichnisse zuweisen
sudo mkdir -p /opt/myapp /var/log/myapp /run/myapp
sudo chown -R myapp:myapp /opt/myapp /var/log/myapp /run/myapp

Troubleshooting

Benutzer kann sudo nicht nutzen

# In sudo-Gruppe?
groups max | grep sudo

# Nicht drin: hinzufügen und neu einloggen
sudo usermod -aG sudo max
# Danach: max muss sich neu einloggen!

Neue Gruppe-Mitgliedschaft nicht aktiv

# Ohne Logout: für aktuelle Session aktivieren
newgrp docker

# Oder: komplett neu einloggen

Datei gehört root, kann nicht gelöscht werden

# Als root oder mit sudo löschen
sudo rm datei.txt

# Oder Eigentümer ändern
sudo chown dein-nutzer datei.txt
rm datei.txt

Fazit

Linux-Benutzerverwaltung folgt dem Least-Privilege-Prinzip: Jeder Benutzer und Prozess bekommt nur die Rechte, die er wirklich braucht.

Kurzreferenz:

useradd -m -s /bin/bash user     # Benutzer erstellen
passwd user                       # Passwort setzen
usermod -aG gruppe user           # Zu Gruppe hinzufügen
sudo visudo                       # sudo-Rechte vergeben
chown user:gruppe datei           # Eigentümer setzen
chmod 755 datei                   # Rechte setzen

War dieser Artikel hilfreich?