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!'); +} +