Erweitere das Setup-Skript um die Konfiguration der X11-Autorisierung für den Kiosk-User. Füge ein X11-Startup-Hilfsskript und ein Reparaturskript zur Behebung von X11-Problemen hinzu. Stelle sicher, dass die DISPLAY-Variable und die .Xauthority-Datei korrekt eingerichtet sind.
This commit is contained in:
parent
821883141e
commit
6f16cbd612
307
setup.sh
307
setup.sh
@ -1420,6 +1420,79 @@ EOF
|
||||
mkdir -p "$kiosk_home/.chromium-kiosk"
|
||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.chromium-kiosk"
|
||||
|
||||
# X11-Autorisierung für kiosk-User konfigurieren
|
||||
progress "Konfiguriere X11-Autorisierung für kiosk-User..."
|
||||
|
||||
# Erstelle .Xauthority Datei
|
||||
touch "$kiosk_home/.Xauthority"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
|
||||
chmod 600 "$kiosk_home/.Xauthority"
|
||||
|
||||
# Füge DISPLAY-Variable zum .bashrc hinzu
|
||||
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
|
||||
cat >> "$kiosk_home/.bashrc" << 'EOF'
|
||||
|
||||
# X11 Display Konfiguration
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
# X11 Session Management
|
||||
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then
|
||||
export DISPLAY=:0.0
|
||||
fi
|
||||
|
||||
EOF
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
|
||||
fi
|
||||
|
||||
# Erstelle X11-Startup-Hilfsskript
|
||||
cat > "$kiosk_home/start-x11.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# X11-Startup-Hilfsskript für kiosk-User
|
||||
# Behebt .Xauthority und DISPLAY-Probleme
|
||||
|
||||
export HOME=/home/kiosk
|
||||
export USER=kiosk
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
# Erstelle .Xauthority falls nicht vorhanden
|
||||
if [ ! -f "$XAUTHORITY" ]; then
|
||||
touch "$XAUTHORITY"
|
||||
chmod 600 "$XAUTHORITY"
|
||||
fi
|
||||
|
||||
# Prüfe ob X11-Server läuft
|
||||
if ! pgrep -x "X" > /dev/null && ! pgrep -x "Xorg" > /dev/null; then
|
||||
echo "Starte X11-Server..."
|
||||
startx /home/kiosk/.xinitrc -- :0 vt1 &
|
||||
sleep 3
|
||||
fi
|
||||
|
||||
# Warte bis X11-Server verfügbar ist
|
||||
timeout=30
|
||||
elapsed=0
|
||||
while [ $elapsed -lt $timeout ]; do
|
||||
if xset q >/dev/null 2>&1; then
|
||||
echo "X11-Server ist bereit"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
elapsed=$((elapsed + 1))
|
||||
done
|
||||
|
||||
if [ $elapsed -ge $timeout ]; then
|
||||
echo "FEHLER: X11-Server nicht verfügbar nach ${timeout}s"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "X11-Session erfolgreich gestartet"
|
||||
EOF
|
||||
|
||||
chmod +x "$kiosk_home/start-x11.sh"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/start-x11.sh"
|
||||
|
||||
log "✅ Automatischer Kiosk-Start konfiguriert"
|
||||
info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER"
|
||||
}
|
||||
@ -1820,6 +1893,28 @@ EOF
|
||||
mkdir -p "$kiosk_home/.npm-global" 2>/dev/null || true
|
||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.npm-global" 2>/dev/null || true
|
||||
|
||||
# X11-Autorisierung sicherstellen
|
||||
progress "Sicherstelle X11-Autorisierung für kiosk-User..."
|
||||
if [ ! -f "$kiosk_home/.Xauthority" ]; then
|
||||
touch "$kiosk_home/.Xauthority"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
|
||||
chmod 600 "$kiosk_home/.Xauthority"
|
||||
success "✅ .Xauthority Datei erstellt"
|
||||
fi
|
||||
|
||||
# DISPLAY-Variable in bashrc sicherstellen
|
||||
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
|
||||
cat >> "$kiosk_home/.bashrc" << 'EOF'
|
||||
|
||||
# X11 Display Konfiguration
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
EOF
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
|
||||
success "✅ X11-Variablen zu .bashrc hinzugefügt"
|
||||
fi
|
||||
|
||||
success "✅ Projekt-Berechtigungen für kiosk-User konfiguriert"
|
||||
info " 📁 Kiosk-Arbeitsverzeichnis: $kiosk_project_dir"
|
||||
info " 👤 Besitzer: $KIOSK_USER"
|
||||
@ -1967,6 +2062,30 @@ if [ -d "$SCRIPT_DIR/static" ]; then
|
||||
chmod -R 775 "$SCRIPT_DIR/static" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# X11-Autorisierung für kiosk-User sicherstellen
|
||||
log "Sicherstelle X11-Autorisierung..."
|
||||
kiosk_home="/home/$KIOSK_USER"
|
||||
|
||||
if [ ! -f "$kiosk_home/.Xauthority" ]; then
|
||||
touch "$kiosk_home/.Xauthority"
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
|
||||
chmod 600 "$kiosk_home/.Xauthority"
|
||||
log "✅ .Xauthority Datei erstellt"
|
||||
fi
|
||||
|
||||
# DISPLAY-Variable in bashrc sicherstellen
|
||||
if [ -f "$kiosk_home/.bashrc" ] && ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
|
||||
cat >> "$kiosk_home/.bashrc" << 'EOF'
|
||||
|
||||
# X11 Display Konfiguration
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
EOF
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
|
||||
log "✅ X11-Variablen zu .bashrc hinzugefügt"
|
||||
fi
|
||||
|
||||
log "✅ Berechtigen-Reparatur abgeschlossen"
|
||||
info ""
|
||||
info "📋 Zusammenfassung:"
|
||||
@ -1986,6 +2105,194 @@ EOF
|
||||
|
||||
success "✅ Berechtigen-Reparatur-Skript erstellt: $fix_script"
|
||||
info " 💡 Verwendung nach Setup: sudo ./fix-permissions.sh"
|
||||
|
||||
# Erstelle zusätzliches X11-Fix-Skript
|
||||
local x11_fix_script="$CURRENT_DIR/fix-x11.sh"
|
||||
|
||||
progress "Erstelle X11-Reparatur-Skript..."
|
||||
|
||||
cat > "$x11_fix_script" << 'EOF'
|
||||
#!/bin/bash
|
||||
|
||||
# ===================================================================
|
||||
# MYP X11-Reparatur-Skript
|
||||
# Behebt X11/.Xauthority-Probleme für kiosk-User
|
||||
# Kann als root oder kiosk-User ausgeführt werden
|
||||
# ===================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
KIOSK_USER="kiosk"
|
||||
|
||||
# Farben für Ausgabe
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() {
|
||||
echo -e "${GREEN}[$(date '+%H:%M:%S')] $1${NC}"
|
||||
}
|
||||
|
||||
warning() {
|
||||
echo -e "${YELLOW}[WARNUNG] $1${NC}"
|
||||
}
|
||||
|
||||
error() {
|
||||
echo -e "${RED}[FEHLER] $1${NC}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
info() {
|
||||
echo -e "${BLUE}[INFO] $1${NC}"
|
||||
}
|
||||
|
||||
log "=== MYP X11-REPARATUR ==="
|
||||
|
||||
# Prüfe ob kiosk User existiert
|
||||
if ! id "$KIOSK_USER" &>/dev/null; then
|
||||
error "Kiosk-User '$KIOSK_USER' existiert nicht!"
|
||||
fi
|
||||
|
||||
kiosk_home="/home/$KIOSK_USER"
|
||||
|
||||
# Stoppe laufende X11-Prozesse
|
||||
log "Stoppe laufende X11-Prozesse..."
|
||||
pkill -f "startx" 2>/dev/null || true
|
||||
pkill -f "X " 2>/dev/null || true
|
||||
pkill -f "Xorg" 2>/dev/null || true
|
||||
pkill -f "chromium" 2>/dev/null || true
|
||||
sleep 2
|
||||
|
||||
# Bereinige alte X11-Session-Dateien
|
||||
log "Bereinige alte X11-Session-Dateien..."
|
||||
rm -f /tmp/.X0-lock 2>/dev/null || true
|
||||
rm -f /tmp/.X11-unix/X0 2>/dev/null || true
|
||||
|
||||
# X11-Autorisierung neu erstellen
|
||||
log "Erstelle X11-Autorisierung neu..."
|
||||
|
||||
# Entferne alte .Xauthority
|
||||
if [ -f "$kiosk_home/.Xauthority" ]; then
|
||||
rm -f "$kiosk_home/.Xauthority"
|
||||
fi
|
||||
|
||||
# Erstelle neue .Xauthority
|
||||
touch "$kiosk_home/.Xauthority"
|
||||
|
||||
# Setze korrekte Berechtigungen (funktioniert sowohl als root als auch als kiosk)
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.Xauthority"
|
||||
fi
|
||||
chmod 600 "$kiosk_home/.Xauthority"
|
||||
|
||||
log "✅ .Xauthority neu erstellt"
|
||||
|
||||
# Prüfe und korrigiere .bashrc
|
||||
log "Prüfe X11-Umgebungsvariablen..."
|
||||
|
||||
if [ -f "$kiosk_home/.bashrc" ]; then
|
||||
if ! grep -q "export DISPLAY=" "$kiosk_home/.bashrc" 2>/dev/null; then
|
||||
log "Füge X11-Variablen zu .bashrc hinzu..."
|
||||
cat >> "$kiosk_home/.bashrc" << 'BASHEOF'
|
||||
|
||||
# X11 Display Konfiguration
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
BASHEOF
|
||||
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc"
|
||||
fi
|
||||
log "✅ X11-Variablen hinzugefügt"
|
||||
else
|
||||
log "✅ X11-Variablen bereits konfiguriert"
|
||||
fi
|
||||
else
|
||||
warning "⚠️ .bashrc nicht gefunden"
|
||||
fi
|
||||
|
||||
# Erstelle X11-Test-Skript
|
||||
log "Erstelle X11-Test-Skript..."
|
||||
cat > "$kiosk_home/test-x11.sh" << 'TESTEOF'
|
||||
#!/bin/bash
|
||||
|
||||
# X11-Test für kiosk-User
|
||||
|
||||
export DISPLAY=:0.0
|
||||
export XAUTHORITY=/home/kiosk/.Xauthority
|
||||
|
||||
echo "=== X11-Test ==="
|
||||
echo "DISPLAY: $DISPLAY"
|
||||
echo "XAUTHORITY: $XAUTHORITY"
|
||||
echo ""
|
||||
|
||||
if [ -f "$XAUTHORITY" ]; then
|
||||
echo "✅ .Xauthority existiert"
|
||||
ls -la "$XAUTHORITY"
|
||||
else
|
||||
echo "❌ .Xauthority fehlt"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Teste X11-Verbindung..."
|
||||
|
||||
if command -v xset >/dev/null 2>&1; then
|
||||
if xset q >/dev/null 2>&1; then
|
||||
echo "✅ X11-Server erreichbar"
|
||||
xset q | head -3
|
||||
else
|
||||
echo "❌ X11-Server nicht erreichbar"
|
||||
echo "Versuche X11-Server zu starten..."
|
||||
startx /home/kiosk/.xinitrc -- :0 vt1 &
|
||||
sleep 5
|
||||
|
||||
if xset q >/dev/null 2>&1; then
|
||||
echo "✅ X11-Server nach Start erreichbar"
|
||||
else
|
||||
echo "❌ X11-Server konnte nicht gestartet werden"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "⚠️ xset nicht verfügbar - kann X11 nicht testen"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "✅ X11-Test abgeschlossen"
|
||||
TESTEOF
|
||||
|
||||
chmod +x "$kiosk_home/test-x11.sh"
|
||||
if [ "$EUID" -eq 0 ]; then
|
||||
chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/test-x11.sh"
|
||||
fi
|
||||
|
||||
log "✅ X11-Reparatur abgeschlossen"
|
||||
info ""
|
||||
info "📋 Was wurde behoben:"
|
||||
info " - Alte .Xauthority entfernt und neu erstellt"
|
||||
info " - X11-Umgebungsvariablen konfiguriert"
|
||||
info " - X11-Test-Skript erstellt"
|
||||
info ""
|
||||
info "🔧 Nächste Schritte:"
|
||||
info " - Als kiosk-User einloggen: su - kiosk"
|
||||
info " - X11 testen: ./test-x11.sh"
|
||||
info " - Kiosk-Modus starten: ./start-x11.sh"
|
||||
info ""
|
||||
info "💡 Bei weiteren Problemen:"
|
||||
info " - Neustart: sudo reboot"
|
||||
info " - Manual X11 start: startx"
|
||||
info ""
|
||||
|
||||
EOF
|
||||
|
||||
chmod +x "$x11_fix_script" 2>/dev/null || warning "⚠️ Konnte fix-x11.sh nicht ausführbar machen"
|
||||
|
||||
success "✅ X11-Reparatur-Skript erstellt: $x11_fix_script"
|
||||
info " 💡 Verwendung bei X11-Problemen: sudo ./fix-x11.sh"
|
||||
}
|
||||
|
||||
install_npm_dependencies() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user