Kaynağa Gözat

fix(install): docker installer tries mkdir without sudo, escalates on EACCES (#1774)

  install/docker-install.sh::create_install_dir ran `mkdir -p
  "$INSTALL_PATH"` without sudo while DEFAULT_INSTALL_PATH was
  /opt/bambuddy, root-owned on every Linux distro. set -e then
  aborted the whole script before docker compose could pull the
  image — anyone running the documented `curl ... | bash` flow as
  a normal user hit this on first install.

  Fix: try the unprivileged `mkdir -p ... 2>/dev/null` first so
  --path ~/bambuddy, /srv/bambuddy and other writable targets don't
  trigger a needless password prompt, then fall back to
  `sudo mkdir -p` + `sudo chown -R "$USER:$USER"` only when the
  first attempt failed. The chown is load-bearing: without it the
  script would later try to write docker-compose.yml + .env into a
  root-owned dir as the invoking user and cascade further EACCES
  failures.

  Not changing the default path: install/update.sh and
  install/update_macos.sh both default INSTALL_DIR to /opt/bambuddy,
  and install/README.md's update flow documents the same — flipping
  the install default to ~/bambuddy without coordinating those
  would silently break self-service updates for anyone following
  the docs verbatim. The default stays /opt/bambuddy; only the
  escalation gap closes.

  set -e survives the redirected stderr because the `if !` form is
  the documented escape hatch for an expected-failure check.

  Smoke-tested writable-target, idempotent-rerun, and the
  failing-mkdir-then-sudo-fallback branches.
maziggy 2 ay önce
ebeveyn
işleme
1773cbd629
2 değiştirilmiş dosya ile 11 ekleme ve 1 silme
  1. 0 0
      CHANGELOG.md
  2. 11 1
      install/docker-install.sh

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
CHANGELOG.md


+ 11 - 1
install/docker-install.sh

@@ -249,7 +249,17 @@ install_docker() {
 create_install_dir() {
     log_info "Creating installation directory..."
 
-    mkdir -p "$INSTALL_PATH"
+    if ! mkdir -p "$INSTALL_PATH" 2>/dev/null; then
+        # The default `/opt/bambuddy` (and any other root-owned parent) needs
+        # elevation. Try without sudo first so user-supplied custom paths
+        # under $HOME / /srv / etc. don't drag in an unnecessary password
+        # prompt. On the fallback path, chown the result to the invoking
+        # user so they can edit docker-compose.yml + .env afterwards
+        # without sudo every time (#1774).
+        log_info "$INSTALL_PATH requires sudo to create..."
+        sudo mkdir -p "$INSTALL_PATH"
+        sudo chown -R "$USER:$USER" "$INSTALL_PATH"
+    fi
     cd "$INSTALL_PATH"
 
     log_success "Directory created: $INSTALL_PATH"

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor