18ae28f918
Chemenu kompiliert Rohnotizen zu einem verlinkten, quellengebundenen Wiki: raw/ -> types/ + tools/ -> kb/ -> reports/. Was mechanisch ist, macht tools/wikitool; was Urteil braucht, macht ein Agent unter Contracts, deren Grenzen in Code durchgesetzt sind statt im Prompt. Dieser Commit ist der Startpunkt der oeffentlichen Historie. Die vorherige Entwicklung fand in einer privaten Instanz statt und ist nicht Teil dieses Repositorys; ihre Erzaehlung steht vollstaendig in CHANGES.md, das mit 44 Eintraegen von 0.1.0 bis 2.1.0 erhalten geblieben ist. Der mitgelieferte Korpus ist ein Testbett und eine Demo: 170 Seiten ueber den Stack selbst - Gates, Lint, Versionierung, Suche, das Wiki-Muster. Er dokumentiert das Werkzeug mit den eigenen Mitteln des Werkzeugs. Lizenz: AGPL-3.0 fuer den Stack (tools/, types/), CC-BY-4.0 fuer die Inhalte. Die Grenze zwischen beiden ist der Dateiplan, den dist export berechnet - siehe NOTICE.
340 lines
7.2 KiB
Markdown
340 lines
7.2 KiB
Markdown
---
|
|
type: types/concept.md
|
|
concept_type: workflow
|
|
tags: [linux, administration, security, users, groups]
|
|
created: 2026-07-31
|
|
modified: 2026-08-29
|
|
related: [Arch Linux, AUR, Aura, makepkg]
|
|
sources: [Source - Arch Linux Cheat Sheet]
|
|
confidence: 0.95
|
|
confidence_base: 0.95
|
|
provenance: sourced
|
|
summary: Linux-Ablauf zum Anlegen, Ändern, Überwachen und Löschen von Benutzerkonten mit useradd, usermod und userdel, samt Gruppenverwaltung und sudoers-Konfiguration.
|
|
---
|
|
# User Management
|
|
|
|
**Typ:** workflow
|
|
|
|
## Definition
|
|
|
|
Benutzerverwaltung umfasst die Erstellung, Änderung, Überwachung und Löschung von Benutzerkonten auf einem Linux-System. Dies beinhaltet die Verwaltung von Passwörtern, Gruppenmitgliedschaften, Berechtigungen und Kontostatus (gesperrt/entsperrt, aktiviert/deaktiviert).
|
|
|
|
## Kernpunkte
|
|
|
|
- **Kernwerkzeuge:** `useradd`, `usermod`, `userdel`, `passwd`
|
|
- **Konfiguration:** `/etc/passwd`, `/etc/shadow`, `/etc/group`, `/etc/sudoers`
|
|
- **Kontostatus:** Aktiv, gesperrt, abgelaufen, deaktiviert
|
|
- **Best Practice:** Principle of least privilege
|
|
|
|
## Sperrung von Konten
|
|
|
|
Die Sperrung eines Benutzerkontos verhindert die kennwortbasierte Authentifizierung, während das Konto und seine Dateien erhalten bleiben. Das Konto kann später ohne Datenverlust entsperrt werden.
|
|
|
|
### Methoden zum Sperren von Konten
|
|
|
|
#### Methode 1: usermod (Empfohlen)
|
|
|
|
```bash
|
|
# Lock an account
|
|
sudo usermod -L username
|
|
|
|
# Unlock an account
|
|
sudo usermod -U username
|
|
```
|
|
|
|
**Was passiert:** Fügt das Präfix `!` zum Passwort-Hash in `/etc/shadow` hinzu
|
|
|
|
#### Methode 2: passwd
|
|
|
|
```bash
|
|
# Lock an account
|
|
sudo passwd -l username
|
|
|
|
# Unlock an account
|
|
sudo passwd -u username
|
|
```
|
|
|
|
**Was passiert:** Gleiches wie `usermod -L`, fügt das Präfix `!` zum Passwort hinzu
|
|
|
|
### Sperrstatus überprüfen
|
|
|
|
```bash
|
|
# Check if user account is locked
|
|
passwd --status username
|
|
```
|
|
|
|
**Beispielausgabe:**
|
|
```
|
|
username LK 2026-07-31 0 99999 7 -1 (Password set, SHA512 crypt.)
|
|
```
|
|
|
|
Das Flag `LK` zeigt **G**esperrtes Konto an (Passwort gesperrt).
|
|
|
|
### Alle Benutzer überprüfen
|
|
|
|
```bash
|
|
# List all users with account status
|
|
passwd -a --status
|
|
|
|
# Alternative: check /etc/shadow
|
|
sudo grep '^username:' /etc/shadow
|
|
```
|
|
|
|
**Format für gesperrtes Passwort:** Präfix `!` oder `!!` im zweiten Feld von `/etc/shadow`
|
|
|
|
## Benutzer erstellen
|
|
|
|
### Einfache Benutzererstellung
|
|
|
|
```bash
|
|
# Create user with home directory
|
|
sudo useradd -m username
|
|
|
|
# Set password
|
|
sudo passwd username
|
|
|
|
# Create user with custom home, shell, and comment
|
|
sudo useradd -m -d /home/customdir -s /bin/bash -c "Full Name" username
|
|
```
|
|
|
|
### Benutzer mit Ablaufdatum erstellen
|
|
|
|
```bash
|
|
# Create user that expires on specific date
|
|
sudo useradd -e 2026-12-31 username
|
|
|
|
# Modify expiry of existing user
|
|
sudo usermod -e 2026-12-31 username
|
|
```
|
|
|
|
### Massenerstellung von Benutzern
|
|
|
|
```bash
|
|
# Create multiple users
|
|
for user in user1 user2 user3; do
|
|
sudo useradd -m $user
|
|
sudo passwd $user
|
|
done
|
|
```
|
|
|
|
## Benutzer löschen
|
|
|
|
### Benutzer entfernen (Home-Verzeichnis behalten)
|
|
|
|
```bash
|
|
sudo userdel username
|
|
```
|
|
|
|
### Benutzer und Home-Verzeichnis entfernen
|
|
|
|
```bash
|
|
sudo userdel -r username
|
|
```
|
|
|
|
### Erzwungenes Löschen (Benutzer ist angemeldet)
|
|
|
|
```bash
|
|
# Kill user processes first
|
|
sudo pkill -u username
|
|
sudo pkill -9 -u username
|
|
|
|
# Then delete
|
|
sudo userdel -r -f username
|
|
```
|
|
|
|
## Gruppenverwaltung
|
|
|
|
### Gruppen erstellen und verwalten
|
|
|
|
```bash
|
|
# Create group
|
|
sudo groupadd groupname
|
|
|
|
# Add user to group
|
|
sudo usermod -aG groupname username
|
|
|
|
# Remove user from group
|
|
sudo gpasswd -d username groupname
|
|
|
|
# Delete group
|
|
sudo groupdel groupname
|
|
```
|
|
|
|
### Primäre vs. ergänzende Gruppen
|
|
|
|
- **Primäre Gruppe:** Wird bei Anmeldung gesetzt, Standard für neue Dateien
|
|
- **Ergänzende Gruppen:** Zusätzliche Gruppenmitgliedschaften
|
|
|
|
```bash
|
|
# Set primary group
|
|
sudo usermod -g primarygroup username
|
|
|
|
# Add to supplementary group
|
|
sudo usermod -aG supplementarygroup username
|
|
```
|
|
|
|
## Sudo-Konfiguration
|
|
|
|
### Benutzer zu Sudoers hinzufügen
|
|
|
|
```bash
|
|
# Add to wheel group (most distributions)
|
|
sudo usermod -aG wheel username
|
|
|
|
# Manual sudoers entry
|
|
sudo visudo
|
|
# Add line: username ALL=(ALL) ALL
|
|
```
|
|
|
|
### Passwortloses Sudo
|
|
|
|
```bash
|
|
# Add to sudoers with NOPASSWD
|
|
sudo visudo
|
|
# Add line: username ALL=(ALL) NOPASSWD: ALL
|
|
|
|
# For CI/CD containers (example from [[Arch Linux]] page)
|
|
echo "builder ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
|
|
```
|
|
|
|
## Passwortverwaltung
|
|
|
|
### Passwort ändern
|
|
|
|
```bash
|
|
# Change own password
|
|
passwd
|
|
|
|
# Change another user's password (requires sudo)
|
|
sudo passwd username
|
|
```
|
|
|
|
### Erzwinge Passwortänderung beim nächsten Anmelden
|
|
|
|
```bash
|
|
sudo passwd -e username
|
|
```
|
|
|
|
### Passwortrichtlinien
|
|
|
|
Konfigurieren in `/etc/login.defs`:
|
|
- `PASS_MAX_DAYS` - Maximales Paswortalter
|
|
- `PASS_MIN_DAYS` - Minimales Paswortalter
|
|
- `PASS_MIN_LEN` - Minimale Passwortlänge
|
|
|
|
## Benutzer überwachen
|
|
|
|
### Angemeldete Benutzer auflisten
|
|
|
|
```bash
|
|
# Show logged in users
|
|
who
|
|
|
|
# Show with more details
|
|
w
|
|
|
|
# Show login history
|
|
last
|
|
|
|
# Show user processes
|
|
ps -u username
|
|
```
|
|
|
|
### Anmeldestatus des Benutzers überprüfen
|
|
|
|
```bash
|
|
# Check when user last logged in
|
|
lastlog | grep username
|
|
|
|
# Check user's login shell
|
|
getent passwd username | cut -d: -f7
|
|
```
|
|
|
|
## Kontoablauf
|
|
|
|
### Ablauf überprüfen
|
|
|
|
```bash
|
|
# Check when account expires
|
|
chage -l username
|
|
|
|
# Check via /etc/shadow (field 8 = expiry date)
|
|
sudo grep username /etc/shadow | cut -d: -f8
|
|
```
|
|
|
|
### Ablauf einstellen
|
|
|
|
```bash
|
|
# Set expiry date (YYYY-MM-DD)
|
|
sudo chage -E 2026-12-31 username
|
|
|
|
# Set password expiry (days until must change)
|
|
sudo chage -M 90 username
|
|
```
|
|
|
|
## Deaktivieren vs. Sperren
|
|
|
|
| Aktion | Methode | Umkehrbar | Erhält Dateien | Erhält UID/GID |
|
|
|--------|--------|------------|------------------|-------------------|
|
|
| Sperren | `usermod -L` oder `passwd -l` | Ja | Ja | Ja |
|
|
| Deaktivieren | `usermod --expiredate 1` | Ja | Ja | Ja |
|
|
| Löschen | `userdel` | Nein | Vielleicht (mit -r) | Nein |
|
|
|
|
## Best Practices
|
|
|
|
1. **Gruppen verwenden:** Berechtigungen über Gruppen verwalten, nicht über einzelne Benutzer
|
|
2. **Least Privilege:** Nur notwendige Berechtigungen erteilen
|
|
3. **Kontobereinigung:** Regelmäßig ungenutzte Konten entfernen
|
|
4. **Passwortrichtlinien:** Starke Passwörter und Rotation erzwingen
|
|
5. **Audit-Protokolle:** Benutzeraktivitätsprotokolle überwachen
|
|
6. **Sudoers sichern:** Immer `visudo` verwenden, nie direkt bearbeiten
|
|
7. **SSH-Schlüssel:** SSH-Schlüsselverwaltung gegenüber Passwörtern bevorzugen
|
|
|
|
## Häufige Probleme
|
|
|
|
### Benutzer kann sich nicht anmelden
|
|
|
|
```bash
|
|
# Check account status
|
|
passwd -S username
|
|
|
|
# Check if locked
|
|
passwd --status username | grep LK
|
|
|
|
# Check if expired
|
|
chage -l username | grep "Account expires"
|
|
|
|
# Check if shell is valid
|
|
getent passwd username | cut -d: -f7
|
|
```
|
|
|
|
### Berechtigung verweigert
|
|
|
|
```bash
|
|
# Check group membership
|
|
groups username
|
|
|
|
# Check file permissions
|
|
ls -la /path/to/file
|
|
|
|
# Check effective permissions
|
|
sudo -u username test -r /path/to/file
|
|
```
|
|
|
|
## Beziehungen
|
|
|
|
- **Verwendet in:** [[Arch Linux]]-Paketentwicklung (Non-Root-Builder-Benutzer)
|
|
- **Verwendet von:** [[AUR]] und [[Aura]] für Paketverwaltung
|
|
- **Verwendet mit:** [[makepkg]] in CI/CD-Workflows
|
|
und andere Systeme
|
|
|
|
## Siehe auch
|
|
|
|
- [[Arch Linux]]
|
|
- [[AUR]]
|
|
- [[Aura]]
|
|
- [[makepkg]]
|
|
- [[Source - Arch Linux Cheat Sheet]]
|
|
- https://wiki.archlinux.org/title/Users_and_groups
|
|
- https://www.thegeekdiary.com/unix-linux-how-to-lock-or-disable-an-user-account/
|