From 94e857f340295494101a46caf61a59fce32eb1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20unbrot=20P=C3=A4tzold?= Date: Sun, 3 May 2026 13:43:09 +0200 Subject: [PATCH] configure.sh: allow root and non-root execution - install.sh: pre-create ks.cfg with o+w after permission setup so non-root users can overwrite it (OEMDRV root itself stays o=rX) - install.sh: restore su drop to $SUDO_USER when it is set and not root; fall back to direct root execution otherwise - configure.sh: remove the hard root check so both cases work - configure.md: update docs to reflect root/non-root support Co-Authored-By: Claude Sonnet 4.6 --- configure.md | 2 +- system_setup/configure.sh | 5 ----- system_setup/install.sh | 12 ++++++++---- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/configure.md b/configure.md index 1afc83a..6803540 100644 --- a/configure.md +++ b/configure.md @@ -1,6 +1,6 @@ # configure.sh — First-time setup wizard -Run `system_setup/configure.sh` as a **normal user** (not root) on the machine that has the OEMDRV partition mounted. It guides you through all site-specific settings, tests the configuration, and leaves the system ready for a Fedora installation. +Run `system_setup/configure.sh` on the machine that has the OEMDRV partition mounted. It guides you through all site-specific settings, tests the configuration, and leaves the system ready for a Fedora installation. Can be run as root or as a normal user — `install.sh` pre-creates `ks.cfg` at the OEMDRV root with world-write permission so both cases work. ```bash bash /opt/sys_config/system_setup/configure.sh diff --git a/system_setup/configure.sh b/system_setup/configure.sh index 2850479..acdbe02 100755 --- a/system_setup/configure.sh +++ b/system_setup/configure.sh @@ -8,11 +8,6 @@ SCRIPTDIR="$(cd "$(dirname "$0")" && pwd)" CONF_DIST="${SCRIPTDIR}/config.dist/setup_system.conf.dist" CONF_FILE="${SCRIPTDIR}/../config.d/configure.conf" -if [[ "$EUID" -eq 0 ]]; then - echo "ERROR: This script must not be run as root." >&2 - exit 1 -fi - # Prompt for a single value; returns the old value unchanged if the user presses Enter. prompt_value() { local name="$1" current="$2" new_val diff --git a/system_setup/install.sh b/system_setup/install.sh index 865cb70..849f2bb 100755 --- a/system_setup/install.sh +++ b/system_setup/install.sh @@ -31,6 +31,11 @@ finish_install() { chmod ug=rwX,o=rX "$MOUNT_POINT" -R chmod o+w "$MOUNT_POINT/config" "$MOUNT_POINT/config.d" + # Create an empty ks.cfg at the OEMDRV root so non-root can overwrite it + # with configure.sh (the OEMDRV root itself is not world-writable). + touch "$MOUNT_POINT/ks.cfg" + chmod o+w "$MOUNT_POINT/ks.cfg" + info "Done." echo echo " OEMDRV device : $dev" @@ -42,13 +47,12 @@ finish_install() { echo read -r -p "Run configure.sh now to set up your environment? [y/N]: " RUN_CONF if [[ "${RUN_CONF,,}" == "y" ]]; then - if [[ -n "$SUDO_USER" ]]; then + if [[ -n "$SUDO_USER" && "$SUDO_USER" != "root" ]]; then info "Running configure.sh as user '$SUDO_USER'..." su - "$SUDO_USER" -c "DISPLAY='${DISPLAY}' WAYLAND_DISPLAY='${WAYLAND_DISPLAY}' bash '$CONF_SCRIPT'" else - echo - echo "configure.sh must be run as a non-root user. Please run:" - echo " bash $CONF_SCRIPT" + info "Running configure.sh as root..." + bash "$CONF_SCRIPT" fi else echo