From 903b036a635c73f3f1bcb09c6dd2232efbf9c956 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 11:24:23 +0100 Subject: [PATCH] Enhance fixCertPermissions.sh to improve SSL certificate permission handling This commit updates the fixCertPermissions.sh script to include more specific permission settings for SSL certificate files by using the `-type f` option with the `find` command. It also adds a new feature to display the found private key files, improving visibility and debugging capabilities during the permission setting process. --- backend/scripts/fixCertPermissions.sh | 14 +++++--- backend/scripts/testCertAccess.sh | 50 +++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 backend/scripts/testCertAccess.sh diff --git a/backend/scripts/fixCertPermissions.sh b/backend/scripts/fixCertPermissions.sh index 7b02a27..46aeb3a 100755 --- a/backend/scripts/fixCertPermissions.sh +++ b/backend/scripts/fixCertPermissions.sh @@ -58,10 +58,16 @@ ARCHIVE_DIR="/etc/letsencrypt/archive/tt-tagebuch.de" if sudo test -d "$ARCHIVE_DIR"; then echo "📜 Setze Berechtigungen für archive-Verzeichnis..." sudo chgrp -R "$CERT_GROUP" "$ARCHIVE_DIR" - sudo find "$ARCHIVE_DIR" -name "privkey*.pem" -exec chmod 640 {} \; - sudo find "$ARCHIVE_DIR" -name "fullchain*.pem" -exec chmod 644 {} \; - sudo find "$ARCHIVE_DIR" -name "cert*.pem" -exec chmod 644 {} \; - sudo find "$ARCHIVE_DIR" -name "chain*.pem" -exec chmod 644 {} \; + + # Setze Berechtigungen für alle privkey-Dateien (privkey.pem, privkey1.pem, privkey8.pem, etc.) + sudo find "$ARCHIVE_DIR" -type f -name "privkey*.pem" -exec chmod 640 {} \; + sudo find "$ARCHIVE_DIR" -type f -name "fullchain*.pem" -exec chmod 644 {} \; + sudo find "$ARCHIVE_DIR" -type f -name "cert*.pem" -exec chmod 644 {} \; + sudo find "$ARCHIVE_DIR" -type f -name "chain*.pem" -exec chmod 644 {} \; + + # Zeige, welche Dateien gefunden wurden + echo " Gefundene privkey-Dateien:" + sudo find "$ARCHIVE_DIR" -type f -name "privkey*.pem" -exec ls -la {} \; fi echo "✅ Berechtigungen gesetzt!" diff --git a/backend/scripts/testCertAccess.sh b/backend/scripts/testCertAccess.sh new file mode 100644 index 0000000..da59e98 --- /dev/null +++ b/backend/scripts/testCertAccess.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Testet, ob www-data Zugriff auf die SSL-Zertifikate hat + +CERT_PATH="/etc/letsencrypt/live/tt-tagebuch.de/privkey.pem" + +echo "🔍 Teste Zugriff auf SSL-Zertifikate als www-data...\n" + +# Prüfe, ob die Datei existiert +if ! sudo test -f "$CERT_PATH"; then + echo "❌ Datei nicht gefunden: $CERT_PATH" + exit 1 +fi + +# Prüfe Berechtigungen +echo "📋 Dateiberechtigungen:" +sudo ls -la "$CERT_PATH" + +# Prüfe, auf welche Datei der Symlink zeigt +REAL_PATH=$(sudo readlink -f "$CERT_PATH") +echo "\n📋 Symlink zeigt auf: $REAL_PATH" +echo "📋 Berechtigungen der echten Datei:" +sudo ls -la "$REAL_PATH" + +# Teste, ob www-data die Datei lesen kann +echo "\n🔍 Teste Lesezugriff als www-data..." +if sudo -u www-data test -r "$CERT_PATH"; then + echo "✅ www-data kann die Datei lesen!" +else + echo "❌ www-data kann die Datei NICHT lesen!" + echo "\n📋 Prüfe Gruppen-Berechtigungen:" + sudo stat -c "%A %U:%G" "$REAL_PATH" + echo "\n📋 Prüfe, ob www-data in ssl-cert-Gruppe ist:" + sudo groups www-data +fi + +# Versuche, die Datei als www-data zu lesen +echo "\n🔍 Versuche, Datei als www-data zu öffnen..." +if sudo -u www-data cat "$CERT_PATH" > /dev/null 2>&1; then + echo "✅ www-data kann die Datei erfolgreich öffnen!" +else + echo "❌ www-data kann die Datei NICHT öffnen!" + echo "\n💡 Mögliche Lösungen:" + echo " 1. Prüfe, ob die Datei im archive-Verzeichnis die richtige Gruppe hat:" + echo " sudo ls -la $REAL_PATH" + echo " 2. Setze Gruppe und Berechtigungen erneut:" + echo " sudo chgrp ssl-cert $REAL_PATH" + echo " sudo chmod 640 $REAL_PATH" +fi +