From 2ffa5d8a205ecb562f4ccaa84778b416d5e32964 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 8 Sep 2025 20:00:16 +0200 Subject: [PATCH] =?UTF-8?q?setup-user.sh=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup-user.sh.-.md | 103 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 setup-user.sh.-.md diff --git a/setup-user.sh.-.md b/setup-user.sh.-.md new file mode 100644 index 0000000..370c135 --- /dev/null +++ b/setup-user.sh.-.md @@ -0,0 +1,103 @@ +# setup-user.sh + +**System-Benutzer für furt erstellen** + +## Zweck + +Erstellt den System-Benutzer für furt mit betriebssystem-spezifischen Konventionen. BSD-Systeme verwenden `_furt`, Linux-Systeme `furt` mit `--system` Flag. + +## Script-Code + +```bash +#!/bin/sh +# scripts/setup-user.sh - Create _furt system user and group + +set -e + +# Detect operating system +if [ "$(uname)" = "OpenBSD" ] || [ "$(uname)" = "FreeBSD" ]; then + # BSD systems use _furt user convention + groupadd _furt 2>/dev/null || true + useradd -g _furt -s /bin/false -d /var/empty _furt 2>/dev/null || true + echo "Created BSD system user: _furt" +else + # Linux systems use furt user with --system flag + groupadd --system furt 2>/dev/null || true + useradd --system -g furt -s /bin/false -d /var/empty furt 2>/dev/null || true + echo "Created Linux system user: furt" +fi + +echo "User setup completed successfully" +``` + +## Betriebssystem-Unterschiede + +### OpenBSD/FreeBSD +- **Benutzer:** `_furt` (Underscore-Präfix für System-Services) +- **Gruppe:** `_furt` +- **UID-Bereich:** System wählt automatisch freie UID + +### Linux (Debian, Arch) +- **Benutzer:** `furt` (Service-Name direkt) +- **Gruppe:** `furt` +- **UID-Bereich:** `--system` Flag verwendet niedrige UIDs (< 1000) + +## Sicherheits-Konfiguration + +**Shell:** `/bin/false` verhindert Login-Versuche auf den Service-Account + +**Home:** `/var/empty` ist ein Standard-Dummy-Verzeichnis ohne Schreibrechte + +**Zweck:** Service-Accounts sollten nur für den Service selbst nutzbar sein + +## Idempotenz + +Das `|| true` verhindert Script-Abbruch wenn Benutzer bereits existieren: + +```bash +groupadd _furt 2>/dev/null || true +# Läuft durch auch wenn Gruppe bereits existiert +``` + +Das Script kann mehrfach ausgeführt werden ohne Schaden anzurichten. + +## Troubleshooting + +### "User already exists" +Normal bei mehrfacher Ausführung - wird durch `|| true` abgefangen. + +### "Permission denied" +Script benötigt Root-Rechte: +```bash +sudo ./scripts/setup-user.sh # Linux +doas ./scripts/setup-user.sh # OpenBSD +``` + +### Benutzer prüfen +```bash +# BSD +id _furt + +# Linux +id furt + +# Cross-platform +getent passwd | grep furt +``` + +## Erweiterungen + +### Zusätzliche Betriebssysteme +```bash +elif [ "$(uname)" = "NetBSD" ]; then + # NetBSD-spezifische User-Erstellung + groupadd _furt 2>/dev/null || true + useradd -g _furt -s /bin/false -d /var/empty _furt 2>/dev/null || true +``` + +### Custom UID/GID +```bash +# Feste UIDs für Konsistenz zwischen Servern +groupadd -g 1100 _furt 2>/dev/null || true +useradd -u 1100 -g _furt -s /bin/false -d /var/empty _furt 2>/dev/null || true +``` \ No newline at end of file