mint-image: device_fingerprint ohne sudo lesbar machen

/etc/tuxflotte auf 0755 gelockert (war 0700) + device_fingerprint
explizit chmod 0644 - andere Dateien darin (agent.credentials) bleiben
per eigenem chmod 0600 individuell geschuetzt, wie /etc/shadow trotz
durchsuchbarem /etc selbst.

Nutzer-Feedback (01.09.2026, echter Hardware-Test): "/etc/tuxflotte/
device_fingerprint sollte für User lesbar ohne sudo sein" - war trotz der
schon vorhandenen Absicht (Klartext, kein Secret, siehe Kommentar dort)
nicht moeglich, weil das umschliessende Verzeichnis 0700 blieb.
This commit is contained in:
Thomas Stallinger 2026-09-01 15:45:57 +02:00
parent 3f17885d55
commit 06ba89697b
2 changed files with 26 additions and 6 deletions

View File

@ -16,7 +16,12 @@ tuxflotte_agent_fatal() {
ANODE_URL="https://anode.tuxflotte.de" ANODE_URL="https://anode.tuxflotte.de"
AGENT_REPO_RAW="https://git.tuxflotte.de/admin/provisioning-agent/raw/branch/main" AGENT_REPO_RAW="https://git.tuxflotte.de/admin/provisioning-agent/raw/branch/main"
install -d -m 0700 /etc/tuxflotte || # 0755 statt 0700: /etc/tuxflotte muss fuer alle Nutzer durchsuchbar sein,
# damit device_fingerprint (siehe unten) ohne sudo lesbar ist - einzelne
# Dateien darin bleiben trotzdem individuell geschuetzt (agent.credentials
# unten explizit chmod 0600, genau wie /etc/shadow trotz durchsuchbarem
# /etc selbst geschuetzt bleibt).
install -d -m 0755 /etc/tuxflotte ||
tuxflotte_agent_fatal "Verzeichnis /etc/tuxflotte konnte nicht angelegt werden." tuxflotte_agent_fatal "Verzeichnis /etc/tuxflotte konnte nicht angelegt werden."
# Identifikation soll in beide Richtungen moeglich sein: die Geraeteliste # Identifikation soll in beide Richtungen moeglich sein: die Geraeteliste
@ -24,10 +29,15 @@ install -d -m 0700 /etc/tuxflotte ||
# gab es auf dem installierten Geraet selbst keine Datei, um ihn mit einem # gab es auf dem installierten Geraet selbst keine Datei, um ihn mit einem
# einfachen "cat" gegenzupruefen - build_device_fingerprint() (10_hardware.sh) # einfachen "cat" gegenzupruefen - build_device_fingerprint() (10_hardware.sh)
# berechnet ihn nur einmalig waehrend des Live-Boots und haelt ihn sonst # berechnet ihn nur einmalig waehrend des Live-Boots und haelt ihn sonst
# nirgends fest. Absichtlich Klartext, kein Secret - reiner Hardware-Hash, # nirgends fest. Absichtlich Klartext, kein Secret - reiner Hardware-Hash.
# kein chmod 0600 noetig wie bei agent.credentials. # Live gefunden (01.09.2026, echter Hardware-Test): trotz dieser Absicht
# war die Datei vorher nicht ohne sudo lesbar, weil das umschliessende
# Verzeichnis 0700 war (siehe oben) - explizites chmod 0644 hier, damit
# sich das nicht auf einen zufaelligen umask verlaesst.
echo "${TUXFLOTTE_DEVICE_FINGERPRINT}" > /etc/tuxflotte/device_fingerprint || echo "${TUXFLOTTE_DEVICE_FINGERPRINT}" > /etc/tuxflotte/device_fingerprint ||
tuxflotte_agent_fatal "device_fingerprint konnte nicht abgelegt werden." tuxflotte_agent_fatal "device_fingerprint konnte nicht abgelegt werden."
chmod 0644 /etc/tuxflotte/device_fingerprint ||
tuxflotte_agent_fatal "Rechte fuer device_fingerprint konnten nicht gesetzt werden."
cat > /etc/tuxflotte/runtime_blueprint.json <<'RUNTIME_BLUEPRINT_EOF' cat > /etc/tuxflotte/runtime_blueprint.json <<'RUNTIME_BLUEPRINT_EOF'
${TUXFLOTTE_BLUEPRINTS_JSON} ${TUXFLOTTE_BLUEPRINTS_JSON}

View File

@ -16,7 +16,12 @@ tuxflotte_agent_fatal() {
ANODE_URL="https://anode.tuxflotte.de" ANODE_URL="https://anode.tuxflotte.de"
AGENT_REPO_RAW="https://git.tuxflotte.de/admin/provisioning-agent/raw/branch/main" AGENT_REPO_RAW="https://git.tuxflotte.de/admin/provisioning-agent/raw/branch/main"
install -d -m 0700 /etc/tuxflotte || # 0755 statt 0700: /etc/tuxflotte muss fuer alle Nutzer durchsuchbar sein,
# damit device_fingerprint (siehe unten) ohne sudo lesbar ist - einzelne
# Dateien darin bleiben trotzdem individuell geschuetzt (agent.credentials
# unten explizit chmod 0600, genau wie /etc/shadow trotz durchsuchbarem
# /etc selbst geschuetzt bleibt).
install -d -m 0755 /etc/tuxflotte ||
tuxflotte_agent_fatal "Verzeichnis /etc/tuxflotte konnte nicht angelegt werden." tuxflotte_agent_fatal "Verzeichnis /etc/tuxflotte konnte nicht angelegt werden."
# Identifikation soll in beide Richtungen moeglich sein: die Geraeteliste # Identifikation soll in beide Richtungen moeglich sein: die Geraeteliste
@ -24,10 +29,15 @@ install -d -m 0700 /etc/tuxflotte ||
# gab es auf dem installierten Geraet selbst keine Datei, um ihn mit einem # gab es auf dem installierten Geraet selbst keine Datei, um ihn mit einem
# einfachen "cat" gegenzupruefen - build_device_fingerprint() (10_hardware.sh) # einfachen "cat" gegenzupruefen - build_device_fingerprint() (10_hardware.sh)
# berechnet ihn nur einmalig waehrend des Live-Boots und haelt ihn sonst # berechnet ihn nur einmalig waehrend des Live-Boots und haelt ihn sonst
# nirgends fest. Absichtlich Klartext, kein Secret - reiner Hardware-Hash, # nirgends fest. Absichtlich Klartext, kein Secret - reiner Hardware-Hash.
# kein chmod 0600 noetig wie bei agent.credentials. # Live gefunden (01.09.2026, echter Hardware-Test): trotz dieser Absicht
# war die Datei vorher nicht ohne sudo lesbar, weil das umschliessende
# Verzeichnis 0700 war (siehe oben) - explizites chmod 0644 hier, damit
# sich das nicht auf einen zufaelligen umask verlaesst.
echo "${TUXFLOTTE_DEVICE_FINGERPRINT}" > /etc/tuxflotte/device_fingerprint || echo "${TUXFLOTTE_DEVICE_FINGERPRINT}" > /etc/tuxflotte/device_fingerprint ||
tuxflotte_agent_fatal "device_fingerprint konnte nicht abgelegt werden." tuxflotte_agent_fatal "device_fingerprint konnte nicht abgelegt werden."
chmod 0644 /etc/tuxflotte/device_fingerprint ||
tuxflotte_agent_fatal "Rechte fuer device_fingerprint konnten nicht gesetzt werden."
cat > /etc/tuxflotte/runtime_blueprint.json <<'RUNTIME_BLUEPRINT_EOF' cat > /etc/tuxflotte/runtime_blueprint.json <<'RUNTIME_BLUEPRINT_EOF'
${TUXFLOTTE_BLUEPRINTS_JSON} ${TUXFLOTTE_BLUEPRINTS_JSON}