From 04c051e72f7d7127601a972c1b4dc7eef90ecb8a Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 13 Nov 2020 00:32:31 +0100 Subject: [PATCH] Don't fail on uid/gid change --- CHANGELOG.md | 2 +- Dockerfiles/base/Dockerfile-5.2 | 4 +--- Dockerfiles/base/Dockerfile-5.3 | 4 +--- Dockerfiles/base/Dockerfile-5.4 | 4 +--- Dockerfiles/base/Dockerfile-5.5 | 4 +--- Dockerfiles/base/Dockerfile-5.6 | 4 +--- Dockerfiles/base/Dockerfile-7.0 | 4 +--- Dockerfiles/base/Dockerfile-7.1 | 4 +--- Dockerfiles/base/Dockerfile-7.2 | 4 +--- Dockerfiles/base/Dockerfile-7.3 | 4 +--- Dockerfiles/base/Dockerfile-7.4 | 4 +--- Dockerfiles/base/Dockerfile-8.0 | 4 +--- Dockerfiles/base/Dockerfile-8.1 | 4 +--- .../data/docker-entrypoint.d/101-uid-gid.sh | 20 ++++++++++++++----- build/ansible/DOCKERFILES/Dockerfile-base.j2 | 4 +--- 15 files changed, 29 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b30fb56..a93edce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ ## Release 0.115 #### Fixed -- [#703](https://github.com/cytopia/devilbox/issues/703) Allow big uid's and gid's +- [#703](https://github.com/cytopia/devilbox/issues/703) Don't fail on uid/gid change ## Release 0.114 diff --git a/Dockerfiles/base/Dockerfile-5.2 b/Dockerfiles/base/Dockerfile-5.2 index 5a93d63..612d43e 100644 --- a/Dockerfiles/base/Dockerfile-5.2 +++ b/Dockerfiles/base/Dockerfile-5.2 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-5.3 b/Dockerfiles/base/Dockerfile-5.3 index 0d20eed..67d9a8b 100644 --- a/Dockerfiles/base/Dockerfile-5.3 +++ b/Dockerfiles/base/Dockerfile-5.3 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-5.4 b/Dockerfiles/base/Dockerfile-5.4 index afe6c03..f4854bb 100644 --- a/Dockerfiles/base/Dockerfile-5.4 +++ b/Dockerfiles/base/Dockerfile-5.4 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-5.5 b/Dockerfiles/base/Dockerfile-5.5 index d514857..dea549f 100644 --- a/Dockerfiles/base/Dockerfile-5.5 +++ b/Dockerfiles/base/Dockerfile-5.5 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-5.6 b/Dockerfiles/base/Dockerfile-5.6 index 77a4c2e..bce31eb 100644 --- a/Dockerfiles/base/Dockerfile-5.6 +++ b/Dockerfiles/base/Dockerfile-5.6 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-7.0 b/Dockerfiles/base/Dockerfile-7.0 index 6636c31..c9e38a5 100644 --- a/Dockerfiles/base/Dockerfile-7.0 +++ b/Dockerfiles/base/Dockerfile-7.0 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-7.1 b/Dockerfiles/base/Dockerfile-7.1 index e5103a1..76f40d2 100644 --- a/Dockerfiles/base/Dockerfile-7.1 +++ b/Dockerfiles/base/Dockerfile-7.1 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-7.2 b/Dockerfiles/base/Dockerfile-7.2 index c09c394..ed031f4 100644 --- a/Dockerfiles/base/Dockerfile-7.2 +++ b/Dockerfiles/base/Dockerfile-7.2 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-7.3 b/Dockerfiles/base/Dockerfile-7.3 index b6cafda..0476f8b 100644 --- a/Dockerfiles/base/Dockerfile-7.3 +++ b/Dockerfiles/base/Dockerfile-7.3 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-7.4 b/Dockerfiles/base/Dockerfile-7.4 index 5fec6d5..c660659 100644 --- a/Dockerfiles/base/Dockerfile-7.4 +++ b/Dockerfiles/base/Dockerfile-7.4 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-8.0 b/Dockerfiles/base/Dockerfile-8.0 index 27f92ee..bed7491 100644 --- a/Dockerfiles/base/Dockerfile-8.0 +++ b/Dockerfiles/base/Dockerfile-8.0 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/Dockerfile-8.1 b/Dockerfiles/base/Dockerfile-8.1 index 2f0f86e..01d07d0 100644 --- a/Dockerfiles/base/Dockerfile-8.1 +++ b/Dockerfiles/base/Dockerfile-8.1 @@ -37,9 +37,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ### diff --git a/Dockerfiles/base/data/docker-entrypoint.d/101-uid-gid.sh b/Dockerfiles/base/data/docker-entrypoint.d/101-uid-gid.sh index 331a179..bf8b162 100755 --- a/Dockerfiles/base/data/docker-entrypoint.d/101-uid-gid.sh +++ b/Dockerfiles/base/data/docker-entrypoint.d/101-uid-gid.sh @@ -60,10 +60,15 @@ set_uid() { fi # Change uid and fix homedir permissions log "info" "Changing user '${username}' uid to: ${uid}" "${debug}" - run "usermod -u ${uid} ${username}" "${debug}" - run "chown -R ${username} ${homedir} || true" "${debug}" + if ! run "usermod -u ${uid} ${username} 2>/dev/null" "${debug}"; then + run "usermod -u ${uid} ${username}" "${debug}" + fi + run "chown -R ${username} ${homedir} 2>/dev/null || true" "${debug}" run "chown -R ${username} /var/lib/php/session" "${debug}" run "chown -R ${username} /var/lib/php/wsdlcache" "${debug}" + if [ -f "/var/spool/mail/devilbox" ]; then + run "chown -R ${username} /var/spool/mail/devilbox" "${debug}" + fi fi fi } @@ -100,12 +105,17 @@ set_gid() { run "groupmod -g ${spare_gid} ${target_groupname}" "${debug}" fi fi - # Change ugd and fix homedir permissions + # Change gid and fix homedir permissions log "info" "Changing group '${groupname}' gid to: ${gid}" "${debug}" - run "groupmod -g ${gid} ${groupname}" "${debug}" - run "chown -R :${groupname} ${homedir} || true" "${debug}" + if ! run "groupmod -g ${gid} ${groupname} 2>/dev/null" "${debug}"; then + run "groupmod -g ${gid} ${groupname}" "${debug}" + fi + run "chown -R :${groupname} ${homedir} 2>/dev/null || true" "${debug}" run "chown -R :${groupname} /var/lib/php/session" "${debug}" run "chown -R :${groupname} /var/lib/php/wsdlcache" "${debug}" + if [ -f "/var/spool/mail/devilbox" ]; then + run "chown -R :${groupname} /var/spool/mail/devilbox" "${debug}" + fi fi fi } diff --git a/build/ansible/DOCKERFILES/Dockerfile-base.j2 b/build/ansible/DOCKERFILES/Dockerfile-base.j2 index 2e2eaa4..758054a 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-base.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-base.j2 @@ -47,9 +47,7 @@ ENV MY_USER="devilbox" \ ### RUN set -eux \ && groupadd -g ${MY_GID} -r ${MY_GROUP} \ - && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} \ - && sed -i'' 's/^UID_MAX.*/UID_MAX 10000000/g' /etc/login.defs \ - && sed -i'' 's/^GID_MAX.*/GID_MAX 10000000/g' /etc/login.defs + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} ###