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"
|
mkdir -p "$kiosk_home/.chromium-kiosk"
|
||||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$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"
|
log "✅ Automatischer Kiosk-Start konfiguriert"
|
||||||
info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER"
|
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
|
mkdir -p "$kiosk_home/.npm-global" 2>/dev/null || true
|
||||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$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"
|
success "✅ Projekt-Berechtigungen für kiosk-User konfiguriert"
|
||||||
info " 📁 Kiosk-Arbeitsverzeichnis: $kiosk_project_dir"
|
info " 📁 Kiosk-Arbeitsverzeichnis: $kiosk_project_dir"
|
||||||
info " 👤 Besitzer: $KIOSK_USER"
|
info " 👤 Besitzer: $KIOSK_USER"
|
||||||
@ -1967,6 +2062,30 @@ if [ -d "$SCRIPT_DIR/static" ]; then
|
|||||||
chmod -R 775 "$SCRIPT_DIR/static" 2>/dev/null || true
|
chmod -R 775 "$SCRIPT_DIR/static" 2>/dev/null || true
|
||||||
fi
|
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"
|
log "✅ Berechtigen-Reparatur abgeschlossen"
|
||||||
info ""
|
info ""
|
||||||
info "📋 Zusammenfassung:"
|
info "📋 Zusammenfassung:"
|
||||||
@ -1986,6 +2105,194 @@ EOF
|
|||||||
|
|
||||||
success "✅ Berechtigen-Reparatur-Skript erstellt: $fix_script"
|
success "✅ Berechtigen-Reparatur-Skript erstellt: $fix_script"
|
||||||
info " 💡 Verwendung nach Setup: sudo ./fix-permissions.sh"
|
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() {
|
install_npm_dependencies() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user