Der Sammler-User â nichts Schwammiges mehr đž
Wer greift eigentlich die alten Nodes ab? Hier ist er, präzise definiert.
Wer er ist
Ein eigener, unprivilegierter Systemnutzer auf jedem Ziel-Node (Default-Name
sammler). Kein Mensch, kein Admin â ein read-only Dienstkonto fĂźr den rostigen
Sammler auf dem Jetson.
| Eigenschaft | Wert | Warum |
|---|---|---|
| Login | nur SSH-Key (Passwort gesperrt) | kein ratbares Geheimnis auf alten Nodes |
| Shell | /bin/bash |
SSH-exec braucht eine Shell fĂźr die Probe-Kommandos |
| root-Rechte | keine â auĂer der engen dmidecode-Allowlist |
Passkante = geringste Rechte |
| Netz | optional an die Jetson-IP gebunden (from=) |
der Sammler kommt nur von einem Ort |
| Schreibrechte auf dem Node | keine | er liest, er schreibt nie. raw.json entsteht auf dem Jetson |
Warum Ăźberhaupt sudo?
Fast alle Probes laufen unprivilegiert: cat /etc/os-release, uname,
/proc/cpuinfo, /proc/meminfo, lsblk -J, ip -j addr, pveversion.
Nur dmidecode (Hersteller, Serial, Chassis, RAM-DIMMs) braucht root â es
liest SMBIOS. Deshalb bekommt der Sammler-User eine NOPASSWD-Allowlist fĂźr
genau dieses eine read-only Werkzeug und sonst nichts. collect ruft es als
sudo -n dmidecode ⌠und degradiert sauber auf leer, wenn die Erlaubnis fehlt
(dann sieht der Node aus wie eine VM â eine Beobachtung, kein Fehler).
Die Allowlist: provisioning/sammler.sudoers.
Einrichten (Stufe 0)
Auf dem Jetson einmal den Sammler-Key erzeugen:
ssh-keygen -t ed25519 -f ~/.ssh/crumb_sammler -C "crumbcollector@jetpack" -N ""
Auf jedem Ziel-Node (als root) den User anlegen und den Public-Key einspielen:
# provisioning/ auf den Node kopieren, dann:
bash sammler-user.sh sammler ~/.ssh/crumb_sammler.pub <jetson-ip>
Danach vom Jetson lesen:
crumbcollector collect crumbzero01 22 sammler ~/.ssh/crumb_sammler
FreeBSD (die ältere Schlange)
sammler-user.sh ist Linux (useradd/sudoers.d). Auf FreeBSD von Hand:
pw useradd sammler -m -s /bin/sh
# Key nach ~sammler/.ssh/authorized_keys, chmod 600
# dmidecode aus ports; sudo aus ports, /usr/local/etc/sudoers.d/
Der Sammler selbst kennt den Unterschied nicht â er schickt nur read-only
Kommandos. Fehlt eines, wird es geloggt, nicht erzwungen.