Grundlegendes Kontomodell (1 Minute Theorie)
- Benutzer: /etc/passwd (UID, GID, Shell, $HOME).
- Passwort-Hashes: /etc/shadow (nur root).
- Gruppen: /etc/group (GID und Mitglieder).
- Home-Verzeichnisse – normalerweise /home/<Benutzer>, Vorlage für den Anfangsinhalt – /etc/skel.
Benutzer erstellen
1. Praktischer Adduser-Assistent (Debian/Ubuntu)
sudo adduser alice
# The wizard will ask for a password and profile, create /home/alice, and copy files from /etc/skel.
2. „Low-Level” über useradd (universell)
# стандартний home і bash
sudo useradd -m -s /bin/bash alice
sudo passwd alice
Individuelles Zuhause + Rechte:
sudo mkdir -p /srv/users/alice
sudo cp -rT /etc/skel /srv/users/alice
sudo useradd -d /srv/users/alice -s /bin/bash alice
sudo chown -R alice:alice /srv/users/alice
sudo passwd alice
Überprüfung:
getent passwd alice
sudo -u alice -H bash -lc 'whoami && pwd'
Gruppen und Rollen
Zu weiteren Gruppen hinzufügen
sudo usermod -aG sudo,adm alice
id alice
groups alice
Aus einer Gruppe entfernen
sudo gpasswd -d alice adm
Rollengruppe für das Projekt/die Dienstleistung
sudo groupadd deploy
sudo usermod -aG deploy alice
Sichern Sie sudo (über visudo und /etc/sudoers.d)
Bearbeiten Sie Regeln nur über visudo – validiert die Syntax und bewahrt Sie vor dem „Brick“ des Admin-Panels.
# preferably — a separate user file
sudo visudo -f /etc/sudoers.d/alice
Vollständiges sudo (wie in der sudo-Gruppe):
alice ALL=(ALL:ALL) ALL
Minimale Berechtigungen (Beispiel für nginx):
Cmnd_Alias NGINX_CMDS = /bin/systemctl restart nginx, /bin/systemctl status nginx, /bin/journalctl -u nginx
alice ALL=(root) NOPASSWD: NGINX_CMDS
Tipps
- Vergeben Sie Berechtigungen über eine Gruppe, wann immer dies möglich ist:
- %webadmins ALL=(root) NOPASSWD: NGINX_CMDS → Benutzer zu webadmins hinzufügen.
- NOPASSWD – nur dort, wo Automatisierung erforderlich ist.
Passwortrichtlinie (Passwortalterung) und Komplexität
Individuelle Bedingungen über chage
# current status
sudo chage -l alice
# maximum 90 days, warn 7 days in advance, do not change more often than once a day
sudo chage -M 90 -W 7 -m 1 alice
# deactivate by date
sudo chage -E 2025-12-31 alice
Standardeinstellungen für neue Benutzer (login.defs)
/etc/login.defs:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_WARN_AGE 7
Passwortkomplexität (PAM, Ubuntu/Debian)
Installieren Sie libpam-pwquality und konfigurieren Sie /etc/pam.d/common-password, zum Beispiel:
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
SSH-Schlüssel und SSH-Einschränkungen
Einen öffentlichen Schlüssel zu einem Benutzer hinzufügen
sudo -u alice -H bash -lc “mkdir -p ~/.ssh && chmod 700 ~/.ssh”
sudo -u alice -H bash -lc “cat >> ~/.ssh/authorized_keys” # paste the contents of *.pub, then Ctrl+D
sudo -u alice -H bash -lc “chmod 600 ~/.ssh/authorized_keys”
Zugriff in sshd_config einschränken
# when keys are configured — disable passwords
PasswordAuthentication no
PubkeyAuthentication yes
# prohibit direct root login (after issuing sudo to administrators)
PermitRootLogin no
# restrict access by group
AllowGroups sshusers
sudo groupadd sshusers
sudo usermod -aG sshusers alice
sudo systemctl restart sshd
„Technischer“ Benutzer ohne Shell
sudo useradd -m -s /usr/sbin/nologin backupbot
Zusammenarbeit in einem Verzeichnis (Gruppe + ACL)
setgid im Projektverzeichnis (Gruppenvererbung)
sudo mkdir -p /srv/project
sudo chgrp project /srv/project
sudo chmod 2775 /srv/project
Punkt-ACLs (wenn Rechte über den Standard hinaus erforderlich sind)
sudo setfacl -m u:bob:rwx /srv/project
sudo getfacl /srv/project
Prüfung und Fehlerbehebung von Eingaben
# successful logins
last -n 10
# who is in the system
w
who
# failed attempts (if faillog is active)
faillog -a
# SSH logs for today
sudo journalctl -u ssh --since “today”
sudo journalctl -u ssh --grep “Failed password”
Sperren und Löschen von Konten
# lock password (key login can remain)
sudo usermod -L alice
# unlock
sudo usermod -U alice
# immediate deactivation (expired)
sudo chage -E 0 alice
# terminate processes and delete account from home
sudo pkill -KILL -u alice
sudo userdel -r alice
# (Debian/Ubuntu is convenient:)
sudo deluser --remove-home alice
Checkliste für die Produktionsbereitschaft
- Benutzer erstellt, $HOME und Shell sind korrekt, SSH-Schlüssel hinzugefügt.
- Rollenbasierte Gruppen zugewiesen (sudo/adm/www-data/docker/…).
- sudo über /etc/sudoers.d mit minimalen Berechtigungen ausgegeben.
- Passwortrichtlinie: chage/login.defs/PAM konfiguriert.
- Passwörter und Root-Login sind in SSH deaktiviert; die Einschränkung AllowGroups sshusers ist aktiviert.
- Setgid und, falls erforderlich, setfacl sind für Projekte konfiguriert.
- Anmeldungen werden überprüft; es gibt ein Offboarding-Verfahren (Sperren → Löschen → Sichern → Entfernen).