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.
This commit is contained in:
59
backend/scripts/checkPermissions.js
Normal file
59
backend/scripts/checkPermissions.js
Normal file
@@ -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!');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user