Forráskód Böngészése

fix: Inherit owner from parent folder (#1526)

Kroese 1 hete
szülő
commit
122d1ff98e
3 módosított fájl, 74 hozzáadás és 19 törlés
  1. 67 17
      src/install.sh
  2. 4 1
      src/mido.sh
  3. 3 1
      src/power.sh

+ 67 - 17
src/install.sh

@@ -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,14 +531,17 @@ 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")
   space=$(df --output=avail -B 1 "$dir" | tail -n 1)
   space_gb=$(formatBytes "$space")
 
-  if ((size<100000000)); then
+  if (( size < 100000000 )); then
     error "Invalid ISO file: Size is smaller than 100 MB" && return 1
   fi
 
@@ -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
src/mido.sh

@@ -487,8 +487,11 @@ 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"
   local fFile="products_filter.xml"

+ 3 - 1
src/power.sh

@@ -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