fix: update database permissions script to set ownership to root
- Modify the script to explicitly set the owner of the database directory to root, ensuring proper access for SQLite. - Include error handling to attempt ownership change with sudo if the initial command fails, improving robustness of the script.
This commit is contained in:
65
scripts/check-db-permissions.sh
Executable file
65
scripts/check-db-permissions.sh
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script zum Prüfen der Datenbank-Berechtigungen und User-Konfiguration
|
||||||
|
|
||||||
|
echo "🔍 Datenbank-Berechtigungen und User-Check"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe User im Container
|
||||||
|
echo "👤 User im Container:"
|
||||||
|
docker exec hoerdle whoami
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe UID/GID
|
||||||
|
echo "🆔 UID/GID des laufenden Prozesses:"
|
||||||
|
docker exec hoerdle id
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe Datenbankdatei
|
||||||
|
echo "💾 Datenbank-Datei-Informationen (im Container):"
|
||||||
|
docker exec hoerdle ls -lh /app/data/prod.db
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe Datenbankverzeichnis
|
||||||
|
echo "📁 Datenbankverzeichnis-Berechtigungen (im Container):"
|
||||||
|
docker exec hoerdle ls -ld /app/data
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe ob Datei schreibbar ist
|
||||||
|
echo "✍️ Schreibbarkeitstest:"
|
||||||
|
if docker exec hoerdle sh -c "test -w /app/data/prod.db && echo '✅ Datei ist schreibbar' || echo '❌ Datei ist NICHT schreibbar'"; then
|
||||||
|
echo " Datei ist schreibbar"
|
||||||
|
else
|
||||||
|
echo " ❌ Datei ist NICHT schreibbar!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prüfe ob Verzeichnis schreibbar ist
|
||||||
|
if docker exec hoerdle sh -c "test -w /app/data && echo '✅ Verzeichnis ist schreibbar' || echo '❌ Verzeichnis ist NICHT schreibbar'"; then
|
||||||
|
echo " Verzeichnis ist schreibbar"
|
||||||
|
else
|
||||||
|
echo " ❌ Verzeichnis ist NICHT schreibbar!"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe Host-Seite
|
||||||
|
echo "🖥️ Host-Seite Berechtigungen:"
|
||||||
|
ls -ld ./data
|
||||||
|
ls -lh ./data/prod.db
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Prüfe Container-User aus docker-compose
|
||||||
|
echo "🐳 Docker Compose Konfiguration:"
|
||||||
|
if [ -f "docker-compose.yml" ]; then
|
||||||
|
grep -E "^[[:space:]]*user:" docker-compose.yml || echo " Keine 'user:' Direktive gefunden"
|
||||||
|
else
|
||||||
|
echo " ⚠️ docker-compose.yml nicht gefunden (verwende example?)"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Empfehlung
|
||||||
|
echo "💡 Empfehlung:"
|
||||||
|
echo " Wenn die Datei 'node:node' gehört und Container als 'root' läuft,"
|
||||||
|
echo " sollte es funktionieren. Falls nicht, setze Besitzer auf root:"
|
||||||
|
echo " sudo chown root:root ./data/prod.db"
|
||||||
|
echo " Oder entferne 'user: root' aus docker-compose.yml"
|
||||||
|
|
||||||
@@ -48,14 +48,15 @@ if [ -f "$DB_FILE" ]; then
|
|||||||
chmod 664 "$DB_DIR"/*.db-journal 2>/dev/null || true
|
chmod 664 "$DB_DIR"/*.db-journal 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setze Besitzer (wichtig: Container läuft als root laut docker-compose.yml)
|
# Setze Besitzer: Container läuft als root, aber Datei kann node:node gehören
|
||||||
# Aber falls ein bestimmter User benötigt wird:
|
# SQLite funktioniert, solange root die Datei lesen/schreiben kann
|
||||||
if [ -n "$SUDO_USER" ]; then
|
# Setze Besitzer auf root, damit es definitiv funktioniert
|
||||||
echo "👤 Setze Besitzer auf: $SUDO_USER"
|
echo "👤 Setze Besitzer auf root (Container läuft als root)"
|
||||||
chown -R "$SUDO_USER:$SUDO_USER" "$DB_DIR"
|
chown -R root:root "$DB_DIR" 2>/dev/null || {
|
||||||
else
|
echo "⚠️ Konnte Besitzer nicht ändern (vielleicht keine sudo-Rechte?)"
|
||||||
echo "ℹ️ Container läuft als root, keine Besitzer-Änderung nötig"
|
echo " Versuche mit sudo..."
|
||||||
fi
|
sudo chown -R root:root "$DB_DIR" || echo "❌ Besitzer-Änderung fehlgeschlagen"
|
||||||
|
}
|
||||||
|
|
||||||
# Prüfe aktuelle Berechtigungen
|
# Prüfe aktuelle Berechtigungen
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
47
scripts/quick-fix-db.sh
Executable file
47
scripts/quick-fix-db.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Quick-Fix für Datenbank-Berechtigungen
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🔧 Quick-Fix für Datenbank-Berechtigungen..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
cd "$(dirname "$0")/.." || exit 1
|
||||||
|
|
||||||
|
# Setze Berechtigungen
|
||||||
|
echo "1️⃣ Setze Berechtigungen..."
|
||||||
|
chmod 775 ./data
|
||||||
|
chmod 664 ./data/prod.db 2>/dev/null || echo " ⚠️ Datenbankdatei nicht gefunden"
|
||||||
|
|
||||||
|
# Setze Besitzer auf root (Container läuft als root)
|
||||||
|
echo "2️⃣ Setze Besitzer auf root..."
|
||||||
|
sudo chown -R root:root ./data
|
||||||
|
|
||||||
|
# Zeige aktuelle Berechtigungen
|
||||||
|
echo ""
|
||||||
|
echo "✅ Berechtigungen gesetzt!"
|
||||||
|
echo ""
|
||||||
|
echo "📋 Aktuelle Berechtigungen:"
|
||||||
|
ls -ld ./data
|
||||||
|
ls -lh ./data/prod.db 2>/dev/null || echo " (Datei nicht gefunden)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Teste im Container
|
||||||
|
echo "3️⃣ Teste Zugriff im Container..."
|
||||||
|
if docker ps | grep -q hoerdle; then
|
||||||
|
echo " Container läuft, teste Zugriff..."
|
||||||
|
docker exec hoerdle sh -c "test -r /app/data/prod.db && echo '✅ Lesbar' || echo '❌ Nicht lesbar'"
|
||||||
|
docker exec hoerdle sh -c "test -w /app/data/prod.db && echo '✅ Schreibbar' || echo '❌ Nicht schreibbar'"
|
||||||
|
docker exec hoerdle sh -c "test -w /app/data && echo '✅ Verzeichnis schreibbar' || echo '❌ Verzeichnis nicht schreibbar'"
|
||||||
|
else
|
||||||
|
echo " ⚠️ Container läuft nicht"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🔄 Starte Container neu..."
|
||||||
|
docker compose restart hoerdle 2>/dev/null || echo " ⚠️ Konnte Container nicht neustarten (vielleicht läuft docker compose nicht?)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Fertig! Prüfe jetzt die Logs:"
|
||||||
|
echo " docker logs hoerdle --tail=50"
|
||||||
|
|
||||||
Reference in New Issue
Block a user