33 lines
905 B
Bash
Executable File
33 lines
905 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
|
|
main() {
|
|
declare desc="chowns a storage directory"
|
|
declare DIRECTORY="$1" CHOWN_ID="$2"
|
|
|
|
if [[ -z "$DIRECTORY" ]]; then
|
|
echo " ! Please specify a directory to create" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! "$DIRECTORY" =~ ^[A-Za-z0-9\\_-]+$ ]]; then
|
|
echo " ! Directory can only contain the following set of characters: [A-Za-z0-9_-]" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! "$CHOWN_ID" =~ ^[0-9]+$ ]]; then
|
|
echo " ! Unsupported chown permissions. Value must be a non-negative integer." 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if ((CHOWN_ID > 65535 && (CHOWN_ID < 165536 || CHOWN_ID > 231071))); then
|
|
echo " ! Unsupported chown permissions. Supported values: 0-65535 (and user namespace offset variants, 165536-231071)" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
chown -R "$CHOWN_ID:$CHOWN_ID" "${DOKKU_LIB_ROOT}/data/storage/$DIRECTORY"
|
|
}
|
|
|
|
main "$@"
|