This commit is contained in:
Your Name
2025-04-21 10:33:38 +12:00
parent 8b807da346
commit 8c85fe8819
3 changed files with 57 additions and 27 deletions

View File

@ -11,39 +11,22 @@ NC='\033[0m' # No Color
# Function to create directory with proper ownership
mkdir_with_ownership() {
local target_dir="$1"
local current_dir="$target_dir"
local parent_dir
local owner
local group
local created_dirs=()
local parent_dir="$(dirname "$target_dir")"
# Find the lowest existing parent directory
while [ ! -d "$current_dir" ] && [ "$current_dir" != "/" ]; do
created_dirs+=("$current_dir")
parent_dir="$(dirname "$current_dir")"
current_dir="$parent_dir"
while [ ! -d "$parent_dir" ] && [ "$parent_dir" != "/" ]; do
parent_dir="$(dirname "$parent_dir")"
done
# If we found an existing directory, get its ownership
if [ -d "$current_dir" ]; then
owner=$(stat -c %U "$current_dir")
group=$(stat -c %G "$current_dir")
if [ -d "$parent_dir" ]; then
local owner=$(stat -c %U "$parent_dir")
local group=$(stat -c %G "$parent_dir")
install -d -o "$owner" -g "$group" "$target_dir"
else
echo -e "${RED}Error: Could not find any existing parent directory${NC}"
return 1
fi
# Create the directory and set ownership for all created directories
if mkdir -p "$target_dir"; then
# Set ownership for all created directories in reverse order
for ((i=${#created_dirs[@]}-1; i>=0; i--)); do
chown "$owner:$group" "${created_dirs[$i]}"
done
return 0
else
echo -e "${RED}Error: Failed to create directory $target_dir${NC}"
return 1
fi
}
# Check if USER_DEFINITIONS is provided