From 2d05767193012e6eb2b57b07e99c6086cc4e8c7b Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 20 Nov 2025 15:57:40 +0000 Subject: [PATCH] Fix update_electron.sh to run without sudo Changed the script to run as a regular user instead of requiring sudo. The script now: - Checks that it's NOT being run as root (prevents sudo usage) - Uses sudo for individual commands that need elevated privileges - Prompts for sudo password only when needed Changes: - Removed EUID check that required running with sudo - Added check to prevent running as root - Added sudo to backup operations (mkdir, cp, file writes) - All systemctl and npm install commands already use sudo appropriately This matches the behavior of install_kiosk scripts which should be run as a regular user, not with sudo. Usage: ./update_electron.sh (not sudo ./update_electron.sh) --- update_electron.sh | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/update_electron.sh b/update_electron.sh index 2f9a4e9..1263cd8 100755 --- a/update_electron.sh +++ b/update_electron.sh @@ -164,34 +164,35 @@ get_latest_electron_version() { create_backup() { local kiosk_dir="$1" + local kiosk_owner=$(stat -c '%U' "$kiosk_dir") local timestamp=$(date +%Y%m%d_%H%M%S) BACKUP_DIR="${kiosk_dir}/backups/electron_backup_${timestamp}" log_info "Creating backup..." # Create backup directory - mkdir -p "$BACKUP_DIR" + sudo -u "$kiosk_owner" mkdir -p "$BACKUP_DIR" # Backup package.json and package-lock.json if [ -f "$kiosk_dir/package.json" ]; then - cp "$kiosk_dir/package.json" "$BACKUP_DIR/" + sudo -u "$kiosk_owner" cp "$kiosk_dir/package.json" "$BACKUP_DIR/" log_success "Backed up package.json" fi if [ -f "$kiosk_dir/package-lock.json" ]; then - cp "$kiosk_dir/package-lock.json" "$BACKUP_DIR/" + sudo -u "$kiosk_owner" cp "$kiosk_dir/package-lock.json" "$BACKUP_DIR/" log_success "Backed up package-lock.json" fi # Create a list of installed packages if [ -d "$kiosk_dir/node_modules" ]; then - ls -1 "$kiosk_dir/node_modules" > "$BACKUP_DIR/installed_packages.txt" + sudo -u "$kiosk_owner" bash -c "ls -1 '$kiosk_dir/node_modules' > '$BACKUP_DIR/installed_packages.txt'" log_success "Created list of installed packages" fi # Save current Electron version local current_version=$(get_current_electron_version "$kiosk_dir") - echo "$current_version" > "$BACKUP_DIR/electron_version.txt" + echo "$current_version" | sudo -u "$kiosk_owner" tee "$BACKUP_DIR/electron_version.txt" > /dev/null log_success "Backup created at: $BACKUP_DIR" } @@ -284,10 +285,11 @@ update_electron() { main() { print_header "Electron Update Script for UBK" - # Check if running as root or with sudo - if [ "$EUID" -ne 0 ]; then - log_error "This script must be run with sudo" - echo "Usage: sudo $0" + # Verify not running as root + if [ "$EUID" -eq 0 ]; then + log_error "Do not run this script with sudo" + echo "Run as regular user: ./$0" + echo "The script will prompt for sudo when needed for specific commands" exit 1 fi