50 lines
1.0 KiB
Bash
Executable File
50 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu -o pipefail
|
|
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
echo "This script should be run as root." > /dev/stderr
|
|
exit 1
|
|
fi
|
|
|
|
if [[ $# -eq 0 ]]; then
|
|
echo "No arguments supplied"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$1" == "--check" ]]; then
|
|
echo "OK"
|
|
exit 0
|
|
fi
|
|
|
|
target_dir="$1"
|
|
source_dir="$2"
|
|
|
|
source_stat=$(stat --format='%d,%i' "${source_dir}")
|
|
target_stat=$(stat --format='%d,%i' "${target_dir}")
|
|
|
|
# test sameness across bind mounts. if it's same, we can skip the emptiness check
|
|
if [[ "${source_stat}" == "${target_stat}" ]]; then
|
|
echo "Source dir and target dir are the same"
|
|
exit 0
|
|
fi
|
|
|
|
readonly test_file="${target_dir}/.chown-test"
|
|
|
|
mkdir -p "${target_dir}"
|
|
rm -f "${test_file}" # clean up any from previous run
|
|
|
|
if [[ -n $(ls -A "${target_dir}") ]]; then
|
|
echo "volume dir is not empty"
|
|
exit 2
|
|
fi
|
|
|
|
touch "${test_file}"
|
|
if ! chown yellowtent:yellowtent "${test_file}"; then
|
|
echo "chown does not work"
|
|
exit 3
|
|
fi
|
|
rm -f "${test_file}"
|
|
rm -r "${target_dir}" # will get recreated by the local storage addon
|
|
|