Chemenu 2.1.0 - deterministischer Wissenskompiler
CI / verify (push) Failing after 32s
Release / release (push) Successful in 38s

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.
This commit is contained in:
2026-09-01 16:24:34 +02:00
commit 18ae28f918
368 changed files with 50628 additions and 0 deletions
+339
View File
@@ -0,0 +1,339 @@
---
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/