Unverified Commit 122d1ff9 authored by Kroese's avatar Kroese Committed by GitHub
Browse files

fix: Inherit owner from parent folder (#1526)

parent c1c44c4d
Loading
Loading
Loading
Loading
+67 −17
Original line number Diff line number Diff line
@@ -22,7 +22,11 @@ backup () {

  fi

  mkdir -p "$root"
  if ! makeDir "$root"; then
    error "Failed to create directory \"$root\" !"
    return 1
  fi

  local folder="$name"
  local dir="$root/$folder"

@@ -34,7 +38,11 @@ backup () {
  done

  rm -rf "$dir"
  mkdir -p "$dir"

  if ! makeDir "$dir"; then
    error "Failed to create directory \"$dir\" !"
    return 1
  fi

  [ -f "$iso" ] && mv -f "$iso" "$dir/"
  find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
@@ -156,7 +164,9 @@ startInstall() {
    ! backup "" && error "Backup failed!"
  fi

  mkdir -p "$TMP"
  if ! makeDir "$TMP"; then
    error "Failed to create directory \"$TMP\" !"
  fi

  if [ -z "$CUSTOM" ]; then

@@ -178,6 +188,20 @@ startInstall() {
  return 0
}

writeFile() {

  local txt="$1"
  local path="$2"

  echo "$txt" >"$path"

  if ! setOwner "$path"; then
    error "Failed to set the owner for \"$path\" !"
  fi

  return 0
}

finishInstall() {

  local iso="$1"
@@ -188,6 +212,10 @@ finishInstall() {
    error "Failed to find ISO file: $iso" && return 1
  fi

  if [[ "$iso" == "$STORAGE/"* ]]; then
    ! setOwner "$iso" && error "Failed to set the owner for \"$iso\" !"
  fi

  if [[ "$aborted" != [Yy1]* ]]; then
    # Mark ISO as prepared via magic byte
    byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
@@ -196,56 +224,68 @@ finishInstall() {
    fi
  fi

  cp -f /run/version "$STORAGE/windows.ver"
  local file="$STORAGE/windows.ver"
  cp -f /run/version "$file"
  ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"

  if [[ "$iso" == "$STORAGE/"* ]]; then
    if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then
      base=$(basename "$iso")
      echo "$base" > "$STORAGE/windows.base"
      file="$STORAGE/windows.base"
      writeFile "$base" "$file"
    fi
  fi

  if [[ "${PLATFORM,,}" == "x64" ]]; then
    if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
      echo "$BOOT_MODE" > "$STORAGE/windows.mode"
      file="$STORAGE/windows.mode"
      writeFile "$BOOT_MODE" "$file"
      if [[ "${MACHINE,,}" != "q35" ]]; then
        echo "$MACHINE" > "$STORAGE/windows.old"
        file="$STORAGE/windows.old"
        writeFile "$MACHINE" "$file"
      fi
    else
      # Enable secure boot + TPM on manual installs as Win11 requires
      if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then
        if [[ "${DETECTED,,}" == "win11"* ]]; then
          BOOT_MODE="windows_secure"
          echo "$BOOT_MODE" > "$STORAGE/windows.mode"
          file="$STORAGE/windows.mode"
          writeFile "$BOOT_MODE" "$file"
        fi
      fi
      # Enable secure boot on multi-socket systems to workaround freeze
      if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then
        BOOT_MODE="windows_secure"
        echo "$BOOT_MODE" > "$STORAGE/windows.mode"
        file="$STORAGE/windows.mode"
        writeFile "$BOOT_MODE" "$file"
      fi
    fi
  fi

  if [ -n "${ARGS:-}" ]; then
    ARGUMENTS="$ARGS ${ARGUMENTS:-}"
    echo "$ARGS" > "$STORAGE/windows.args"
    file="$STORAGE/windows.args"
    writeFile "$ARGS" "$file"
  fi

  if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then
    echo "$VGA" > "$STORAGE/windows.vga"
    file="$STORAGE/windows.vga"
    writeFile "$VGA" "$file"
  fi

  if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then
    echo "$USB" > "$STORAGE/windows.usb"
    file="$STORAGE/windows.usb"
    writeFile "$USB" "$file"
  fi

  if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then
    echo "$DISK_TYPE" > "$STORAGE/windows.type"
    file="$STORAGE/windows.type"
    writeFile "$DISK_TYPE" "$file"
  fi

  if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then
    echo "$ADAPTER" > "$STORAGE/windows.net"
    file="$STORAGE/windows.net"
    writeFile "$ADAPTER" "$file"
  fi

  rm -rf "$TMP"
@@ -351,7 +391,10 @@ extractESD() {
  fi

  rm -rf "$dir"
  mkdir -p "$dir"

  if ! makeDir "$dir"; then
    error "Failed to create directory \"$dir\" !" && return 1
  fi

  size=9606127360
  size_gb=$(formatBytes "$size")
@@ -407,6 +450,8 @@ extractESD() {
    error "Adding WinPE failed ($retVal)" && return 1
  }

  fKill "progress.sh"

  local msg="Extracting $desc setup"
  info "$msg..."

@@ -486,7 +531,10 @@ extractImage() {
  info "$msg..." && html "$msg..."

  rm -rf "$dir"
  mkdir -p "$dir"

  if ! makeDir "$dir"; then
    error "Failed to create directory \"$dir\" !" && return 1
  fi

  size=$(stat -c%s "$iso")
  size_gb=$(formatBytes "$size")
@@ -1177,6 +1225,8 @@ buildImage() {
  [[ "$error" != "$hide" ]] && echo "$error"

  mv -f "$out" "$BOOT" || return 1
  ! setOwner "$BOOT" && error "Failed to set the owner for \"$BOOT\" !"

  return 0
}

+4 −1
Original line number Diff line number Diff line
@@ -487,7 +487,10 @@ getESD() {
  info "$msg" && html "$msg"

  rm -rf "$dir"
  mkdir -p "$dir"

  if ! makeDir "$dir"; then
    error "Failed to create directory \"$dir\" !" && return 1
  fi
  
  local xFile="products.xml"
  local eFile="esd_edition.xml"
+3 −1
Original line number Diff line number Diff line
@@ -105,7 +105,9 @@ finish() {
  if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$BOOT" ]; then
    # Remove CD-ROM ISO after install
    if ready; then
      touch "$STORAGE/windows.boot"
      local file="$STORAGE/windows.boot"
      touch "$file"
      ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
      if [[ "$REMOVE" != [Nn]* ]]; then
        rm -f "$BOOT" 2>/dev/null || true
      fi