Files
webgui/plugins/dynamix/scripts/newperms
Tom Mortensen 6668ad0ec5 Change 'unRAID' to 'Unraid' to match new branding.
Updated a few copyright strings.
2018-08-31 12:58:40 -07:00

51 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# Usage: newperms [dir] [owner] [group]
# Recursively changes the ownership and permissions of the directory and all files/subdirs
# within the directory.
# If no arguments given, operates on /mnt/cache and /mnt/disk*, setting owner:group to nobody:users
# default owner is 'nobody', default group is 'users'
# This was created to fix ownership/permissions when upgrading to Unraid version 5.
# With corrections suggested by forum member Stokkes
# Here's a breakdown of chmod "u-x,go-rwx,go+u,ugo+X"
# u-x Clear the 'x' bit in the user permissions (leaves rw as-is)
# go-rwx Clear the 'rwx' bits in both the group and other permissions
# go+u Copy the user permissions to group and other
# ugo+X Set the 'x' bit for directories in user, group, and other
function process {
list="$1"
[[ $# -ge 2 ]] && owner=$2 || owner=nobody
[[ $# -ge 3 ]] && group=$3 || group=users
ifs=$IFS; IFS='|'
for dir in $list; do
echo "$dir"
if [[ -d $dir ]]; then
echo processing "$dir"
echo ... chmod -R u-x,go-rwx,go+u,ugo+X "$dir"
chmod -R u-x,go-rwx,go+u,ugo+X "$dir"
echo ... chown -R $owner:$group "$dir"
chown -R $owner:$group "$dir"
echo ... sync
sync
fi
done
IFS=$ifs
}
if [[ -n $1 ]]; then
process "$@"
else
process /mnt/cache
for disk in /mnt/disk[0-9]*; do
process $disk
done
fi
echo
secs=$SECONDS
printf "completed, elapsed time: %.2d:%.2d:%.2d\n" $(($secs/3600)) $(($secs%3600/60)) $(($secs%60))