Waechter: Rechte wurden gesetzt, aber wirkten nicht
Nachgemessen: /var/lib/dogfather-waechter stand auf 755 -- weltweit lesbar, mit einer vollstaendigen Liste aller Dienste, Adressen und ihres Zustands darin. Also genau das, was der Commit von heute Nachmittag verhindern sollte. Die Absicht stand im Code, die Wirkung fehlte. Zwei Gruende, beide still: 1. "mode" bei mkdirSync gilt nur, wenn das Verzeichnis dabei NEU entsteht. Beim zweiten Lauf existiert es immer -- dann laesst mkdirSync die Rechte unberuehrt. Hier war es sogar schon vor dem Einbau der Zeile angelegt worden. 2. Selbst beim Neuanlegen zieht die umask des Prozesses Bits ab. Der Unterschied zur Sicherung ist lehrreich: /var/backups/dogfather steht korrekt auf 700, weil dort ein ausdrueckliches chmod im Skript steht. Dieselbe Ueberlegung, einmal umgesetzt und einmal nur gemeint. Jetzt chmod bei jedem Lauf, fuer Verzeichnis UND Dateien. Aufgefallen ist es nur, weil die Rechte nachgesehen wurden statt angenommen -- der Code sah richtig aus. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -37,7 +37,7 @@
|
||||
===================================================================== */
|
||||
|
||||
import { execFileSync } from "node:child_process";
|
||||
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
|
||||
import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from "node:fs";
|
||||
import { dirname, join } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import tls from "node:tls";
|
||||
@@ -303,8 +303,33 @@ async function meldung(titel, text) {
|
||||
Adressen und ihres Zustands -- fuer jemanden, der einen Angriff
|
||||
vorbereitet, eine bequeme Landkarte. Sie kostet nichts, also gibt es
|
||||
auch keinen Grund, sie herzugeben. */
|
||||
/* ⚠️ mode: 0o700 beim Anlegen REICHT NICHT (nachgemessen 26.08.2026).
|
||||
|
||||
Zwei Gruende, und beide sind still:
|
||||
|
||||
1. "mode" gilt nur, wenn das Verzeichnis dabei NEU entsteht. Existiert
|
||||
es schon -- und beim zweiten Lauf existiert es immer --, laesst
|
||||
mkdirSync die Rechte unberuehrt. Das Verzeichnis war beim allerersten
|
||||
Lauf entstanden, bevor diese Zeile ueberhaupt eingebaut war, und
|
||||
blieb deshalb auf 755.
|
||||
|
||||
2. Selbst beim Neuanlegen zieht die umask des Prozesses noch Bits ab.
|
||||
|
||||
Gemessen: /var/backups/dogfather steht auf 700, weil dort ein
|
||||
ausdrueckliches chmod im Skript steht. /var/lib/dogfather-waechter
|
||||
stand auf 755 -- weltweit lesbar, mit einer vollstaendigen Liste
|
||||
aller Dienste, Adressen und ihres Zustands darin.
|
||||
|
||||
Die Absicht stand also im Code, die Wirkung fehlte. Deshalb jetzt
|
||||
ausdruecklich chmod, bei jedem Lauf, fuer Verzeichnis UND Datei. */
|
||||
function verzeichnisSichern(pfad) {
|
||||
mkdirSync(dirname(pfad), { recursive: true, mode: 0o700 });
|
||||
const ordner = dirname(pfad);
|
||||
mkdirSync(ordner, { recursive: true, mode: 0o700 });
|
||||
try { chmodSync(ordner, 0o700); } catch { /* nicht Eigentuemer: dann eben nicht */ }
|
||||
}
|
||||
|
||||
function dateiSichern(pfad) {
|
||||
try { chmodSync(pfad, 0o600); } catch { /* Datei noch nicht da */ }
|
||||
}
|
||||
|
||||
function protokoll(text) {
|
||||
@@ -327,6 +352,7 @@ function zustandLesen() {
|
||||
function zustandSchreiben(z) {
|
||||
verzeichnisSichern(ZUSTAND_DATEI);
|
||||
writeFileSync(ZUSTAND_DATEI, JSON.stringify(z, null, 1), { encoding: "utf8", mode: 0o600 });
|
||||
dateiSichern(ZUSTAND_DATEI);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user