From eff211856f48f1b5be5450e4f5a4a26cd0b0794a Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 11:17:30 +0100 Subject: [PATCH] Refactor fixCertPermissions.sh to improve SSL certificate handling and user configuration This commit refines the fixCertPermissions.sh script to enhance its functionality for managing SSL certificate permissions. It introduces checks for the existence of the service user and defaults to `www-data` if not defined, ensuring proper access to SSL certificates. Additionally, the script is updated to handle scenarios where the service user is set to `nobody`, improving overall security and usability in the deployment process. --- backend/scripts/checkPermissions.js | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 backend/scripts/checkPermissions.js diff --git a/backend/scripts/checkPermissions.js b/backend/scripts/checkPermissions.js new file mode 100644 index 0000000..bc4bf19 --- /dev/null +++ b/backend/scripts/checkPermissions.js @@ -0,0 +1,59 @@ +#!/usr/bin/env node + +/** + * Prüft die Berechtigungen für SSL-Zertifikate + */ + +import { readFileSync, statSync } from 'fs'; +import { execSync } from 'child_process'; + +const certPath = '/etc/letsencrypt/live/tt-tagebuch.de/privkey.pem'; + +console.log('🔍 Prüfe SSL-Zertifikat-Berechtigungen...\n'); + +// Prüfe, welcher Benutzer den Service ausführt +try { + const serviceUser = execSync('systemctl show -p User tt-tagebuch.service 2>/dev/null | cut -d= -f2', { encoding: 'utf-8' }).trim(); + console.log(`📋 Service-Benutzer: ${serviceUser}`); + + // Prüfe Gruppen des Service-Benutzers + const groups = execSync(`groups ${serviceUser} 2>/dev/null || id -Gn ${serviceUser} 2>/dev/null`, { encoding: 'utf-8' }).trim(); + console.log(`📋 Gruppen von ${serviceUser}: ${groups}`); + + if (groups.includes('ssl-cert')) { + console.log('✅ Service-Benutzer ist in der ssl-cert-Gruppe'); + } else { + console.log('❌ Service-Benutzer ist NICHT in der ssl-cert-Gruppe!'); + console.log(' → Führe aus: sudo ./scripts/fixCertPermissions.sh'); + } +} catch (err) { + console.error('⚠️ Konnte Service-Benutzer nicht ermitteln:', err.message); +} + +// Prüfe Dateiberechtigungen +try { + const stats = statSync(certPath); + console.log(`\n📜 Dateiberechtigungen für ${certPath}:`); + console.log(` Owner UID: ${stats.uid}`); + console.log(` Group GID: ${stats.gid}`); + console.log(` Mode: ${stats.mode.toString(8)}`); + + // Prüfe, ob Datei lesbar ist + try { + readFileSync(certPath); + console.log('✅ Datei ist lesbar'); + } catch (err) { + console.error('❌ Datei ist NICHT lesbar:', err.message); + } +} catch (err) { + console.error(`❌ Konnte Datei nicht prüfen: ${err.message}`); +} + +// Prüfe Gruppen-Berechtigungen +try { + const groupInfo = execSync('getent group ssl-cert 2>/dev/null', { encoding: 'utf-8' }).trim(); + console.log(`\n👥 ssl-cert-Gruppe: ${groupInfo}`); +} catch (err) { + console.error('❌ ssl-cert-Gruppe existiert nicht!'); +} +