diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 49d6e4f0..5507f26c 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -6,50 +6,88 @@ NO_COLOR="\033[0m" CHECK_MARK="\xE2\x9C\x93" CROSS_MARK="\xE2\x9D\x8C" -echo -n "Set container UID and GIDs to match the host system..." -if [[ "${NOPAQUE_UID}" == 0 ]]; then +if [[ "${NOPAQUE_UID}" == "0" ]]; then echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" echo "Running as root is not allowed" exit 1 -else - echo "" fi -echo -n "- Updating docker GID ($(getent group docker | cut -d: -f3) -> ${DOCKER_GID})... " -groupmod --gid "${DOCKER_GID}" docker > /dev/null -if [[ "${?}" == "0" ]]; then + +echo "Set container UID and GIDs to match the host system..." + + +############################################################################## +# docker GID # +############################################################################## +if [[ "${DOCKER_GID}" == "$(getent group docker | cut -d: -f3)" ]]; then + echo -n "- docker GID is already matching..." echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" else - echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" - exit 1 + echo -n "- Updating docker GID ($(getent group docker | cut -d: -f3) -> ${DOCKER_GID})... " + groupmod --gid "${DOCKER_GID}" docker > /dev/null + if [[ "${?}" == "0" ]]; then + echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" + else + echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" + exit 1 + fi fi -echo -n "- Updating nopaque GID ($(id -g nopaque) -> ${NOPAQUE_GID})... " -groupmod --gid "${NOPAQUE_GID}" nopaque > /dev/null -if [[ "${?}" == "0" ]]; then + +############################################################################## +# nopaque GID # +############################################################################## +if [[ "${NOPAQUE_GID}" == "$(id -g nopaque)" ]]; then + echo -n "- nopaque GID is already matching..." echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" else - echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" - exit 1 + echo -n "- Updating nopaque GID ($(id -g nopaque) -> ${NOPAQUE_GID})... " + groupmod --gid "${NOPAQUE_GID}" nopaque > /dev/null + if [[ "${?}" == "0" ]]; then + HAS_NOPAQUE_GID_CHANGED=true + echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" + else + echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" + exit 1 + fi + + echo -n "- Updating nopaque directory group... " + chown -R :nopaque /home/nopaque + if [[ "${?}" == "0" ]]; then + echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" + else + echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" + exit 1 + fi fi -echo -n "- Updating nopaque UID ($(id -u nopaque) -> ${NOPAQUE_UID})... " -usermod --uid "${NOPAQUE_UID}" nopaque > /dev/null -if [[ "${?}" == "0" ]]; then + +############################################################################## +# nopaque UID # +############################################################################## +if [[ "${NOPAQUE_UID}" == "$(id -u nopaque)" ]]; then + echo -n "- nopaque UID is already matching..." echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" else - echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" - exit 1 + echo -n "- Updating nopaque UID ($(id -u nopaque) -> ${NOPAQUE_UID})... " + usermod --uid "${NOPAQUE_UID}" nopaque > /dev/null + if [[ "${?}" == "0" ]]; then + echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" + else + echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" + exit 1 + fi + + echo -n "- Updating nopaque directory owner... " + chown -R nopaque /home/nopaque + if [[ "${?}" == "0" ]]; then + echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" + else + echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" + exit 1 + fi fi -echo -n "- Updating nopaque directory owner and group... " -chown -R nopaque:nopaque /home/nopaque -if [[ "${?}" == "0" ]]; then - echo -e "${GREEN_COLOR}${CHECK_MARK}${NO_COLOR}" -else - echo -e "${RED_COLOR}${CROSS_MARK}${NO_COLOR}" - exit 1 -fi exec gosu nopaque ./boot.sh ${@}