# Root-Rechte ohne Passwort und Gruppe docker > English version: [en/ROOT-RIGHTS.md](en/ROOT-RIGHTS.md) Die Kurzfassung steht in der [Erst-Einrichtung, Anhang F](11-ERST-EINRICHTUNG.md#f-root-rechte-ohne-passwort-und-gruppe-docker). Hier steht alles im Detail: wofür die Module root brauchen, was der Einrichtungsbefehl dafür auf dem Server einrichtet, was die Hilfsskripte dürfen und wie du eine volle sudo-Regel wieder loswirst. - [Wofür die Haken nötig sind](#wofür-die-haken-nötig-sind) - [Was der Haken „Root-Rechte“ genau tut](#was-der-haken-root-rechte-genau-tut) - [Die volle sudo-Regel](#die-volle-sudo-regel) - [Das ist praktisch root](#das-ist-praktisch-root) - [Hilfsskripte](#hilfsskripte) und [was sie dürfen](#was-die-hilfsskripte-dürfen) - [Docker auf „Nur bedienen“ umstellen](#docker-auf-nur-bedienen-umstellen) - [Proxmox-Knoten und vorhandene Benutzer](#proxmox-knoten-und-vorhandene-benutzer) - [Was der Datei-Wächter nach der Einrichtung meldet](#was-der-datei-wächter-nach-der-einrichtung-meldet) ## Wofür die Haken nötig sind Meldet sich Nodvard Deck auf einem Server **nicht als root** an (z. B. auf dem Pi), führt es root-Befehle über `sudo -n` aus, also ohne Passwortabfrage. Verlangt sudo ein Passwort, scheitert die Funktion mit „Keine root-Rechte: Das Dashboard ist auf diesem Server nicht als root angemeldet und darf sudo nicht ohne Passwort nutzen.“ Den Einrichtungsbefehl ([Erst-Einrichtung, 3.3](11-ERST-EINRICHTUNG.md#33-einrichtungsbefehl-auf-dem-server-ausführen)) musst du dafür **nicht von Hand ändern**: Die Seite setzt die passenden Haken selbst, weil die Erweiterungen melden, was sie brauchen. Dieselben Haken gelten, wenn du den Server mit Passwort einrichtest (Nodvard Deck führt dann denselben Befehl aus). - **„Root-Rechte ohne Passwort“** – nötig für (die Seite nennt es hinter dem Haken): - **Nodvard Shield, Virenschutz:** Datei in Quarantäne verschieben, wiederherstellen oder löschen, Lynis-Härtungsaudit, Werkzeuge installieren (ClamAV, Lynis, Signaturen, Fail2ban, automatische Updates). Scans laufen auch ohne root, prüfen dann aber nur Dateien, die der Benutzer lesen darf. Ob ClamAV und Lynis installiert sind, erkennt Nodvard Shield auch ohne root (Lynis liegt bei Debian und dem Betriebssystem des Pi unter `/usr/sbin`); nach einer Installation fragt es den Server gleich neu ab. Das **Härtungs-Audit** läuft auf dem Server im Hintergrund mit niedriger Priorität und kann je nach Server einige Minuten bis über eine Stunde dauern (Obergrenze 3 Stunden). Nach dem Klick steht sofort „Audit läuft seit …“ beim Server, ein zweiter Klick startet kein zweites Audit, und das Dashboard darf währenddessen neu starten. Die häufigsten Hinweise von Lynis stehen im Ergebnis mit deutscher Überschrift; ein Klick darauf zeigt „Was heißt das?“ und „Was kannst du tun?“ (vieles ist für ein Heimnetz bewusst nicht nötig, das steht dann dabei). Ganz oben stehen „Deine wichtigsten Baustellen“: höchstens fünf Hinweise mit der größten Wirkung auf den angezeigten Servern, mit den Servern, auf denen sie vorkommen. Die Protokolle liegen auf dem Server unter `/var/lib/nodvard-shield-audit/`. Scans und Echtzeit-Wächter laufen auf einem Server nie gleichzeitig; für diese Sperre legt Shield dort einen kleinen Ordner an: `/run/nodvard-shield` (als root) bzw. `~/.nodvard-shield`. In die Quarantäne kommt eine Datei nur, wenn ClamAV sie dabei selbst noch einmal als Fund meldet, erst an ihrem Ort und dann in einem Prüfordner, in den nur root schreibt; das gilt mit und ohne Hilfsskript. Fehlt ClamAV oder antwortet es nicht, bleibt die Datei, wo sie ist. Wiederhergestellt wird nur an den Ort und mit den Rechten, die Shield beim Verschieben auf dem Server hinterlegt hat (auch besondere wie `4755` oder `044`), ebenfalls mit und ohne Hilfsskript. Rückfrage und Freigabe nennen den Pfad aus dem Fund deshalb nur „laut Fund“; nach dem Zurücklegen nennt Shield den Ort, an den die Datei wirklich ging, und weicht er vom Fund ab, steht das auch am Fund. Fehlt der Eintrag oder ist er ungültig (etwa bei einer Datei, die mit Nodvard Deck 0.8 oder älter in die Quarantäne kam), bleibt die Datei dort, und du legst sie auf dem Server von Hand zurück oder löschst sie. Einen Fund, den du ignoriert oder wiederhergestellt hast, verschiebt der nächste Scan nicht noch einmal in die Quarantäne (außer ClamAV meldet dieselbe Datei mit einer anderen Signatur). Zurück geht das unter „Funde & Quarantäne“ mit dem Filter „Alle, inkl. erledigt“ und „Wieder beachten“: Der Fund ist dann wieder offen, und der nächste Scan meldet die Datei wieder. - **Schutzwert** (0 bis 100, auf der Übersicht): zählt den Virenschutz (ClamAV, Signaturen, Scans, offene Funde), die Härtung und außerdem offene Sicherheitsupdates, nötige Neustarts, Fail2ban, die SSH-Einstellungen (root oder Anmeldung mit Passwort, nach der Zahl der betroffenen Server) und offene kritische Sicherheitsereignisse (je 5 Punkte, höchstens 15). Darunter steht, was ihn gerade senkt und wie viele Punkte das kostet. Ist die letzte Update- oder Einbruchschutz-Prüfung eines Servers gescheitert oder älter als drei Tage, zählt sein alter Stand nicht; das steht dann als Grund „zuletzt nicht geprüft (ohne Abzug)“ da. - **Update-Zentrale:** Updates einspielen und neu starten. Das Neuladen der Paketlisten vor der Prüfung braucht root – ohne bleibt es beim zuletzt geladenen Stand. Updates laufen auf dem Server im Hintergrund (mit systemd als `lattice-upgrade-…`, ein [alter Name, der bleibt](11-ERST-EINRICHTUNG.md#m-alte-namen-bei-älteren-installationen), sonst per `setsid`) und laufen weiter, auch wenn die Verbindung abreißt oder das Dashboard neu startet. Das Protokoll jedes Laufs liegt 30 Tage unter `/var/lib/nexus-updates/`. Das Dashboard wartet 45 Minuten auf das Ergebnis; dauert ein Lauf länger, steht er zunächst als „Keine Rückmeldung“ da (beendet wird er nie), das Dashboard fragt aber noch bis zu etwa 3 Stunden nach, berichtigt dann den Eintrag und meldet das Ergebnis per Push. Startet das Dashboard in dieser Zeit neu, bleibt der Eintrag stehen – dann im Protokoll auf dem Server nachsehen. - **Einbruchschutz und Datei-Wächter:** SSH-Log, Fail2ban-Status, Prozesse hinter offenen Ports, SSH-Einstellungen, Prüfsummen von Dateien wie `/etc/shadow`. Ohne root nur eingeschränkt – Nodvard Deck sagt das dann dazu, statt falsch Entwarnung zu geben. IP-Adressen per Fail2ban sperren/entsperren geht nur mit root. Läuft Fail2ban, zeigt jeder Server unter „Gesperrte Adressen“ die gesperrten IPs, nach Jail (der Schutzregel für einen Dienst, etwa `sshd` für SSH) sortiert, mit „Entsperren“ an jeder Adresse. Ab 20 Adressen gibt es eine Suche, gezeigt werden höchstens 200 auf einmal. Darunter sperrst du eine einzelne Adresse von Hand, im Jail `sshd` oder einem anderen, den der Server hat; welche das sind, weiß Shield erst nach einer Prüfung des Servers. Eine Sperre endet meist nach der Sperrzeit des Jails von selbst. Nicht gesperrt werden Adressen, die zu keinem anderen Rechner gehören (etwa `127.0.0.1`), die Adresse deines Browsers (hinter einem Reverse-Proxy sicher erst, wenn er unter „Vertrauenswürdiger Proxy“ steht; sonst vergleicht Shield zusätzlich die Angaben des Proxys in `X-Forwarded-For`) und die Adresse, über die Nodvard Deck den Server erreicht; sonst sperrt man sich selbst aus. Die letzte prüft auch der Server selbst, bevor er sperrt (aus `SSH_CLIENT` bzw. `SSH_CONNECTION`); kann er sie nicht feststellen, sperrt er nichts. Hat der Server keinen Jail für SSH, bietet Shield bei Angreifern kein „Sperren“ an. War eine Adresse beim Entsperren schon frei, sagt Shield das, statt einen Fehler zu melden. Einen neuen offenen Port meldet der Einbruchschutz einzeln („Neuer offener Port“). Programme, die bei jedem Start oder je Anfrage zufällige Ports wählen (NFS, Tailscale, Pi-hole und andere DNS-Dienste), zählen als ein Eintrag. Für ein Programm mit eigenem Portbereich, etwa einen Spieleserver, trägst du unter Einstellungen → Erweiterungen → „Nodvard Shield“ → „Erweitert“ → „Eigene Portbereiche je Programm“ Programm, Protokoll und Bereich ein. Neue Ports darin melden dann nicht mehr einzeln. Den Programmnamen kann sich jedes Programm selbst geben, auch eine Schadsoftware: nur Programme eintragen, denen du vertraust, und die Bereiche klein halten. Ports unter 1024 zählen nur mit dem Häkchen „Auch Ports unter 1024“. Ein Bereich umfasst höchstens 1000 Ports (ein größerer zählt nur bis dahin), mehr nur mit dem Häkchen „Breiter Bereich“; ein breiter Bereich beginnt immer frühestens bei 1024, SSH und andere feste Dienste bleiben also sichtbar. Es zählen höchstens 50 Bereiche. - **Server-Zustand:** Dienste (systemd) neu starten. Danach sieht Deck bis zu 45 Sekunden lang nach, ob der Dienst läuft und laufen bleibt (zweimal im Abstand von 10 Sekunden ohne neuen Start; das Nachsehen braucht kein root). Fällt er gleich wieder aus oder startet er immer wieder neu, gilt die Aktion als fehlgeschlagen und sagt das. - **Docker im Modus „Nur bedienen“** (Server nur mit der Markierung `docker-bedienen`): Container ansehen, Logs lesen, starten, stoppen und neu starten über das Hilfsskript `docker-root`, ohne die Gruppe docker. - **„Zur Gruppe docker hinzufügen“** – nötig für das Modul Docker und die KI-Container-Wache von Nodvard Shield; sie rufen `docker` ohne sudo auf. Die Gruppe wird nur eingetragen, wenn es sie auf dem Server gibt. Einem Server nur mit der Markierung `docker-bedienen` bietet die Seite die Gruppe nicht an; dort reicht das Hilfsskript. Ohne beide Haken bekommst du die **schlanke Variante**: eigener Benutzer, nur Schlüssel, keine Root-Rechte. Die reicht für Terminal, Dateien und Skripte. ## Was der Haken „Root-Rechte“ genau tut Das hängt davon ab, welche Module auf diesem Server root brauchen. - **Nur die Hilfsskripte (Standard):** Braucht hier mindestens ein Modul root und hat jedes davon ein Hilfsskript (Nodvard Shield, Server-Zustand und Docker im Modus „Nur bedienen“ haben eins), richtet der Haken nur diese Skripte ein (siehe „Hilfsskripte“ unten). Jedes bekommt eine eigene Regel ` ALL=(root) NOPASSWD: sha256: /usr/local/lib/nodvard-deck/-root`, eine volle sudo-Regel gibt es nicht. Mit der Prüfsumme startet sudo das Skript nur, solange es Byte für Byte das ist, für das die Regel eingerichtet wurde. Kennt sudo auf dem Server keine Prüfsummen in Regeln oder zeigt es sie in `sudo -l` nicht (sudo-rs, der Standard ab Ubuntu 25.10, und ältere sudo-Versionen), gilt die Regel ohne sie, und der Befehl sagt das. Zu tun ist dann nichts: Das Skript kann weiter nur root ändern. Schon eingerichtete Server bekommen die Prüfsumme, wenn der Einrichtungsbefehl das nächste Mal läuft. Der Benutzer darf per sudo genau diese Skripte starten, und was sie tun, steht in ihnen selbst (etwa Updates einspielen, Quarantäne, Dienste neu starten). Unter „Was macht der Befehl?“ kannst du jedes Skript lesen. Vorher prüft der Befehl, ob sich die Skripte sicher einrichten lassen: `sudo`, `base64`, `sha256sum` und `stat` müssen da sein, jeder Ordner über `/usr/local/lib/nodvard-deck` muss ein echter Ordner sein, der root gehört und in dem außer root niemand schreiben darf: keine Gruppe, auch nicht die Gruppe root, und kein anderer. Eine ACL kann dabei nur schreiben lassen, wenn die Gruppenbits es erlauben (sie sind dann die Maske), deshalb reicht der Blick auf sie. Gibt es `/usr/local/lib/nodvard-deck` schon, gilt für ihn dasselbe (sonst legt der Befehl ihn an). Klappt das nicht, ändert er **nichts**, nennt den Ordner, den Grund und die Abhilfe (etwa `chmod g-w /usr/local/lib` oder `mkdir -p /usr/local/lib`) und endet mit einem Fehler; „Mit Passwort einrichten“ zeigt dieselben Zeilen. Ältere Debian lassen die Gruppe staff in `/usr/local` und `/usr/local/lib` schreiben; dort hilft als root `chmod g-w /usr/local /usr/local/lib`. Dann den Grund beheben oder, außer wenn sudo fehlt, „Volle Rechte“ wählen und noch einmal einrichten. Docker im Modus „Nur bedienen“ hilft „Volle Rechte“ nicht: Es arbeitet nur über sein Hilfsskript, und das sagt der Befehl dann auch. - **Volle Rechte:** Braucht ein Modul root und hat kein Hilfsskript, oder setzt du unter „Erweitert“ das Häkchen „Volle Rechte“, kommt die volle Regel dazu. Das Häkchen brauchst du nur, wenn du über Nodvard Deck eigene Befehle mit sudo startest, etwa in Skripten. - **Kein Modul braucht root:** Dann richtet der Haken gar kein sudo ein, auch keine volle Regel. Die Seite sagt das unter dem Haken. Willst du trotzdem sudo, etwa für eigene Befehle in Skripten, setz unter „Erweitert“ „Volle Rechte“. ## Die volle sudo-Regel Eine schon vorhandene volle Regel nimmt der Befehl nur zurück, wenn du es ausdrücklich willst: Ein Server, der sie hat, läuft weiter wie bisher, auch wenn du den Befehl dort noch einmal ausführst. Willst du sie loswerden, führ den Befehl zuerst noch einmal aus und drück „Verbindung prüfen“. Hat dann jedes Hilfsskript seine eigene Regel, steht bei „Root-Rechte“ gelb „sudo ohne Passwort für alles ist hier nicht nötig. Die Hilfsskripte reichen.“, und unter „Braucht Aufmerksamkeit“ in der Übersicht steht ein dezenter Hinweis (alle 6 Stunden geprüft, mit × ausblendbar). Der Hinweis führt zum Einrichtungsbefehl, dort ist unter „Erweitert“ schon „Volle sudo-Regel entfernen“ angekreuzt. Führ den Befehl aus (selbst einfügen oder „Mit Passwort einrichten“) und prüf noch einmal: Bei „Root-Rechte“ steht dann „sudo erlaubt nur die Hilfsskripte der Module, keine volle Regel. Das reicht.“ So geht der Befehl dabei vor, damit du dich nicht aussperrst: - Er richtet zuerst wie immer die Hilfsskripte und ihre Regeln ein. Geht dabei etwas schief, rührt er die volle Regel nicht an. - Gibt es keine Regel von Nodvard Deck (nur Links, andere Inhalte oder gar keine), sagt er das und ändert nichts. - Er löscht nur `/etc/sudoers.d/nodvard-` und `lattice-`, und nur, wenn die Datei genau die Zeile ` ALL=(root) NOPASSWD: ALL` enthält. Links und Dateien mit anderem Inhalt bleiben stehen, mit Hinweis. - Vorher fragt er jedes Skript über sudo nach seiner Version. Das zeigt nur, dass es läuft (noch mit voller Regel); antwortet eins nicht, bleibt die volle Regel stehen. - Nach dem Löschen prüft er die sudo-Konfiguration mit `visudo -c` (wenn sie vorher in Ordnung war) und fragt jedes Skript noch einmal, jetzt ohne volle Regel. Klappt etwas davon nicht oder bricht der Lauf ab (etwa weil die Verbindung reißt), legt er die Regel sofort wieder an. Schlüssel und Anmeldung ändert er nie. - Darf der Benutzer danach über eine fremde Regel weiter alles (etwa `010_pi-nopasswd` auf Raspberry Pi OS oder die Gruppe `sudo` mit NOPASSWD), sagt er das. Diese Regel bleibt stehen, ob sie weg kann, entscheidest du. Solange sie gilt, zeigt die Prüfung nicht, ob die Hilfsskripte allein reichen. Danach gehen eigene Befehle mit sudo über Nodvard Deck nicht mehr. Bringt ein Update von Nodvard Deck neue Hilfsskripte, haben die Module dort erst wieder root, wenn du den Server noch einmal einrichtest; die Übersicht sagt es dir. Willst du die volle Regel zurück, richte den Server mit „Volle Rechte“ noch einmal ein. Brauchst du sie für eigene Befehle mit sudo, setz beim Server unter „Bearbeiten“, „Erweitert“ das Häkchen „Volle sudo-Regel gewollt“: Dann bleibt „Root-Rechte“ grün, und der Hinweis kommt nicht. Braucht auf dem Server gar kein Modul root, bringt der Befehl keine Hilfsskripte mit und kann die Regel darum nicht entfernen. Brauchst du sudo dann nicht für eigene Befehle über Nodvard Deck, lösch sie selbst (`sudo rm /etc/sudoers.d/nodvard-`, auf älteren Servern `lattice-`). „Verbindung prüfen“ zeigt danach bei „Root-Rechte“: „Kein eingeschaltetes Modul braucht hier root, sudo ohne Passwort ist nicht nötig.“ Die volle Regel ist `/etc/sudoers.d/nodvard-` mit der Zeile ` ALL=(root) NOPASSWD: ALL`. Die Zeile wird erst in eine Probedatei geschrieben und mit `visudo -c` geprüft; nur dann kommt sie mit den Rechten `0440` (root) an ihren Platz. Danach prüft `visudo` die eingetragene Datei und die ganze Konfiguration noch einmal. Bei einem Fehler wird die Datei sofort wieder entfernt („sudo-Regel zurückgenommen“), darunter steht, was `visudo` meldet. Meldet `visudo -c` schon **vor** der Einrichtung einen Fehler in einer fremden Datei (z. B. „bad permissions, should be mode 0440“, weil eine Datei in `/etc/sudoers.d` die Rechte `0644` hat), zählt nur die Prüfung der eigenen Dateien. Der Befehl nennt dann die fremde Datei im Hinweis; mit `sudo chmod 0440 ` und `sudo chown root:root ` ist sie in Ordnung. Eine ältere Regel `lattice-` löscht der Befehl erst nach dieser Prüfung und nur, wenn sie aus genau der Zeile oben besteht; sonst bleibt sie stehen, und du bekommst einen Hinweis. Ist `sudo` gar nicht installiert, sagt der Befehl das (als root `apt install sudo`; bei Proxmox am besten gleich als `root` anmelden). ## Das ist praktisch root Die Seite sagt es dir auch: Wer in der Gruppe `docker` ist oder die volle sudo-Regel hat, kann auf dem Server praktisch alles. Nodvard Deck startet ohne Hilfsskript einige root-Befehle als `sudo -n sh -c '…'`, darum braucht es dann die volle sudo-Regel, und wer `sh` als root starten darf, darf alles. Die Sicherheit kommt daher, dass **nur** dieser eine Benutzer die Rechte bekommt, er sich **nur mit dem Schlüssel** anmelden kann und der Schlüssel verschlüsselt in Nodvard Deck liegt. ## Hilfsskripte Mit dem Haken „Root-Rechte“ legt der Befehl die Hilfsskripte der Module (Nodvard Shield, Server-Zustand und Docker im Modus „Nur bedienen“) nach `/usr/local/lib/nodvard-deck` und erlaubt jedes mit einer eigenen, engen sudo-Regel. Klappt das für ein Skript nicht, nennt der Befehl den Grund (Ordner oder Datei nicht sicher, Werkzeug fehlt, Regel von `visudo` abgelehnt). Mit voller Regel ist das ein Hinweis, das Modul nimmt dann die volle Regel; nur Docker nimmt sie nie, für `docker-root` ist es darum immer ein Fehler. Ohne volle Regel ist es ein Fehler, denn dann hätte das Modul gar kein root: Ordner und Werkzeuge prüft dort schon die Vorprüfung, bevor sich etwas ändert (siehe oben); ein beschädigtes Skript oder eine abgelehnte Regel meldet der Befehl unterwegs mit „FEHLER: …“ und am Ende „Nicht alles hat geklappt“. Die Module rufen ein Skript nur auf, wenn es auf dem Server Byte für Byte das mitgelieferte ist. Ausnahme ist Docker: Es ruft auch eine ältere Fassung auf. Kann nur root sie ändern und erlaubt sudo sie, behält Docker damit bis zur neuen Einrichtung root (bei „Veraltet“ steht dann „Docker ruft es trotzdem auf …“); die Regel mit Prüfsumme gehört ja zu dieser älteren Fassung. Liegt dagegen ein anderer Inhalt da als der, für den die Regel gilt, startet sudo das Skript nicht, und „Verbindung prüfen“ zählt die Regel nicht als eigene. „Verbindung prüfen“ zeigt je Skript, ob es passt, und bei „Root-Rechte“: „sudo erlaubt nur die Hilfsskripte der Module, keine volle Regel. Das reicht.“, wenn alle passen. Fehlt ein Skript, steht dort „Fehlt auf dem Server“ (gelb), ohne volle Regel und bei Docker immer mit dem Zusatz, dass das Modul hier kein root hat; fehlt `docker-root` neben der vollen Regel, ist auch „Root-Rechte“ gelb. Nach einem Update, das ein neues Skript mitbringt, steht dort „Veraltet“: dann den Einrichtungsbefehl noch einmal ausführen. Das musst du nicht selbst bemerken: Fehlt ein Skript oder ist es veraltet, während sudo dort Skripte ausführen darf (volle Regel oder die Regel eines Skripts), steht unter „Braucht Aufmerksamkeit“ in der Übersicht ein dezenter Hinweis mit Link zur Einrichtung. Nodvard Deck prüft das alle 6 Stunden und bei jedem „Verbindung prüfen“. Mit dem × blendest du den Hinweis für diesen Server aus, bis ein Update neuere Skripte mitbringt. ## Was die Hilfsskripte dürfen Diese Unterbefehle kann der Benutzer des Dashboards per sudo als root aufrufen, auch am Dashboard vorbei. Jeder prüft seine Argumente selbst und bricht bei allem anderen ab, bevor er etwas tut. Ein Test ruft jedes Skript in `sh` und `dash` mit über 200 ungültigen Eingaben auf (Optionen statt Namen, Leerzeichen, Zeilenumbrüche, `;`, `$(…)`, `..`, relative Pfade, überlange Werte) und verlangt, dass dabei kein Programm mit Nebenwirkung startet. Die volle sudo-Regel erlaubt dagegen alles. | Skript | Unterbefehl | Was es als root tut | Grenzen | |---|---|---|---| | alle | `version` | nennt die Version | keine Argumente | | `system-root` | `service-restart` | startet einen systemd-Dienst neu und meldet seinen Zustand | nur `.service`, `.socket`, `.timer`; nie SSH, D-Bus, `systemd-*`, `networking`, `NetworkManager`, `dhcpcd`, `wpa_supplicant` oder Nodvard Deck; andere Netzwerkdienste wie `firewalld` oder `wg-quick@…` schon. Docker und containerd auf dem Rechner des Dashboards sperrt nur das Dashboard, das Skript kann diesen Rechner nicht erkennen | | `docker-root` | `ps`, `stats` | listet Container und ihre Last | keine Argumente | | `docker-root` | `inspect`, `id`, `id-state`, `state`, `ports` | liest Angaben zu Containern in festen Formaten | nur gültige Namen bzw. IDs, höchstens 200 | | `docker-root` | `logs` | liest das Protokoll eines Containers | zu Beginn höchstens 5000 Zeilen, auf Wunsch danach mitlaufend; Zeitraum nur in Minuten oder Stunden | | `docker-root` | `start`, `stop`, `restart` | startet, stoppt oder startet einen Container neu | genau ein gültiger Name; Löschen gibt es nicht | | `shield-root` | `guard` | liest Anmeldungen aus dem SSH-Protokoll, die wirksamen Einstellungen von sshd (Port, Anmeldung als root, Passwort- und Schlüssel-Anmeldung und ähnliche), Fail2ban, offene Ports samt Bereich für ausgehende Verbindungen sowie Prüfsumme, Rechte, Besitzer, Änderungszeit und Größe der überwachten Dateien und Programme | nur lesend; absolute Pfade ohne `..`, `*` nur bei Dateien | | `shield-root` | `detect-templates`, `refresh-packages` | liest die Einstellungen von Samba, NFS und Nextcloud bzw. lädt die Paketliste neu | keine Argumente | | `shield-root` | `quarantine`, `restore`, `delete`, `quarantine-state` | verschiebt eine von ClamAV gemeldete Datei in die Quarantäne, legt sie zurück, löscht sie dort oder nennt ihren Zustand | ClamAV prüft die Datei vorher noch einmal; zurück nur an den Ort, den das Skript selbst notiert hat; keine Links | | `shield-root` | `ban`, `unban` | sperrt oder entsperrt eine Adresse in Fail2ban | Adresse nur aus Hex-Ziffern, `:` und `.`, höchstens 45 Zeichen; Jail nur aus Buchstaben, Ziffern, `_`, `.` und `-`, höchstens 64 Zeichen. Was keine gültige Adresse ist, lehnt Fail2ban ab | | `shield-root` | `install` | installiert ClamAV, Lynis, Fail2ban oder unattended-upgrades, lädt neue Virensignaturen | nur diese fünf | | `shield-root` | `reboot` | startet den Server in einer Minute neu (ohne `shutdown` nach 5 Sekunden) | keine Argumente | | `shield-root` | `upgrade-start`, `upgrade-run`, `upgrade-poll` | spielt Updates mit apt, dnf oder apk ein und meldet den Stand | feste Arten; einzelne Pakete nur bei Sicherheitsupdates mit apt, Namen aus festen Zeichen | | `shield-root` | `audit-start`, `audit-run`, `audit-poll`, `audit-stop` | startet, verfolgt oder beendet eine Prüfung mit Lynis | Lauf-ID in fester Form, feste Zeitgrenze, beendet nur den eigenen Lauf | | `shield-root` | `scan`, `watch` (intern `scan-run`, `watch-run`, `odd-scan`) | prüft Ordner mit ClamAV | absolute Pfade, Zahlen mit Obergrenze, ein Lauf zur Zeit, Zeitgrenze | | `shield-root` | `realtime-on`, `realtime-off`, `realtime-log`, `realtime-confirm` | schaltet den Echtzeit-Schutz von ClamAV ein oder aus, liest sein Protokoll, prüft gemeldete Dateien erneut | schreibt nur feste Dateien unter `/etc/clamav` und eine Ergänzung für systemd; Ordner absolut ohne `..`, höchstens 50 Dateien | Welche Dateien `guard` liest, kommt aus den Einstellungen des Datei-Wächters von Nodvard Shield („Überwachte Dateien“). Wer diese Einstellung ändern darf, bestimmt damit auch, von welchen Dateien root Prüfsumme, Rechte, Besitzer, Änderungszeit und Größe liest. Den Inhalt dieser Dateien gibt das Skript nie aus. ## Docker auf „Nur bedienen“ umstellen Bekommt ein Server, der schon mit der Gruppe docker oder der vollen sudo-Regel eingerichtet ist, die Markierung `docker-bedienen` statt `docker`, bleibt beides erhalten. Der Einrichtungsbefehl nimmt weder die Gruppe noch die Regel zurück, der Zugang ist dort also weiter praktisch root. „Verbindung prüfen“ zeigt das in den Punkten „Nur bedienen: Zugang nicht in der Gruppe docker“ und „Nur bedienen: keine volle sudo-Regel“ (gelb). Meldet sich der Zugang als `root` an, schränkt „Nur bedienen“ nichts ein; dann ist „Nur bedienen: Zugang ist nicht root“ gelb, und der Zugang braucht einen eigenen Benutzer. Hat ein Server beide Markierungen (`docker` und `docker-bedienen`), ist er ein voller Docker-Server: Die Punkte „Nur bedienen: …“ und das Hilfsskript `docker-root` entfallen dann, Docker läuft über die Gruppe docker. So stellst du um: 1. Den Einrichtungsbefehl mit „Root-Rechte ohne Passwort“ noch einmal ausführen. Er legt `docker-root` ab und bietet die Gruppe docker nicht mehr an. 2. „Verbindung prüfen“: Bei „Docker nur bedienen“ muss stehen, dass das Hilfsskript antwortet. 3. Den Zugang aus der Gruppe nehmen: `sudo gpasswd -d docker` (gilt ab der nächsten Anmeldung). 4. Braucht kein anderes Modul hier volle Rechte, die volle Regel entfernen wie oben beschrieben. 5. Noch einmal „Verbindung prüfen“: Die Prüfung meldet sich dafür neu an, die Punkte „Nur bedienen: …“ sind also gleich grün, und danach nutzt Nodvard Deck auch sonst nur neue Verbindungen. Zurück zum vollen Docker-Server: Markierung `docker` wieder setzen und den Einrichtungsbefehl mit „Zur Gruppe docker hinzufügen“ ausführen. ## Proxmox-Knoten und vorhandene Benutzer **Proxmox-Knoten:** Dort meldet sich Nodvard Deck am einfachsten direkt als `root` an (Benutzer `root` beim Erzeugen eintragen). Dann braucht es kein sudo und keine Haken. Der Schlüssel landet in `/root/.ssh/authorized_keys`, das bei Proxmox ein Verweis in den Cluster-Ordner ist – er gilt dann auf **allen Knoten des Clusters**. **Vorhandenen Benutzer nehmen** (auf dem Pi z. B. `admin`): beim Erzeugen statt `nodvard` dessen Namen eintragen. `sudo -n true && echo geht-schon` auf dem Server zeigt, ob er sudo schon ohne Passwort darf (auf Raspberry Pi OS oft beim ersten Benutzer der Fall). ## Was der Datei-Wächter nach der Einrichtung meldet Nicht wundern: Kopierst du den Befehl und führst ihn selbst aus, meldet der Datei-Wächter von Nodvard Shield die neue sudo-Datei und die neue `authorized_keys` einmal – das warst du. Haben die Regeln der Hilfsskripte eine Prüfsumme, meldet er sie wieder, wenn du den Befehl nach einem Update erneut ausführst: Die Prüfsumme ändert sich mit jeder neuen Fassung eines Skripts. Mit **„Mit Passwort einrichten“** meldet der Befehl Nodvard Deck genau, was er geändert hat: für die Benutzer- und Gruppendateien und die `authorized_keys` des Deck-Benutzers Prüfsumme, Rechte und Besitzer vorher und nachher. Die eigenen sudo-Regeln (`nodvard-`, die Regeln der Hilfsskripte) kennt Nodvard Deck sowieso, es schreibt sie selbst. Der Wächter übernimmt bei seiner nächsten Prüfung still nur, was genau dazu passt: Der bestätigte Stand ist der von vorher, der jetzige der von nachher, und der Befehl hat die passende Aktion gemeldet (Benutzer angelegt, in eine Gruppe eingetragen, Schlüssel eingetragen, alte Regel ersetzt). Das steht im Verlauf als „Nach der Einrichtung durch Nodvard Deck um HH:MM übernommen“, schon erledigt und ohne Meldung. Alles andere meldet er wie immer: andere Dateien, fremde sudo-Regeln (auch solche, die mit `nodvard` oder `lattice` beginnen), nur geänderte Rechte oder Besitzer, ein anderer Inhalt als gemeldet und jede spätere Änderung. Jeder Lauf zählt nur einmal, bei der ersten Prüfung danach. Dasselbe gilt, wenn du den Befehl mit Haken „Root-Rechte“ auf einem Server erneut ausführst, der noch die alte Regel `lattice-` hat: Dann kommt `nodvard-` dazu, und die alte fällt weg, wenn sie unverändert ist (siehe oben).