From 9edbfe2df5ffdca306428139d42cc005f83ac180 Mon Sep 17 00:00:00 2001 From: Dennis Hermsmeier Date: Mon, 7 Oct 2019 11:20:14 +0200 Subject: [PATCH] fix existing gid (#7) --- Dockerfile | 2 +- entrypoint.sh | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4e29ea0..d75eb27 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM alpine:"${ALPINE_VERSION}" LABEL maintainer="https://github.com/hermsi1337" -ARG OPENSSH_VERSION="${OPENSSH_VERSION:-7.9_p1-r5}" +ARG OPENSSH_VERSION="${OPENSSH_VERSION:-8.0_p1-r0}" ENV CONF_VOLUME="/conf.d" ENV OPENSSH_VERSION="${OPENSSH_VERSION}" \ CACHED_SSH_DIRECTORY="${CONF_VOLUME}/ssh" \ diff --git a/entrypoint.sh b/entrypoint.sh index 053540d..9a315cb 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -126,13 +126,19 @@ if [[ -n "${SSH_USERS}" ]]; then log "error" " skipping invalid data '${USER_NAME}' - UID: '${USER_UID}' GID: '${USER_GID}'" continue fi - - getent group "${USER_GID}" &>/dev/null || addgroup -g "${USER_GID}" "${USER_NAME}" - getent passwd "${USER_NAME}" &>/dev/null || adduser -s "${USER_LOGIN_SHELL}" -D -u "${USER_UID}" -G "${USER_NAME}" "${USER_NAME}" + + USER_GROUP="${USER_NAME}" + if getent group "${USER_GID}" &>/dev/null ; then + USER_GROUP="$(getent group "${USER_GID}" | cut -d ':' -f 1)" + log "warning" " desired GID is already present in system. Using the present group-name - GID: '${USER_GID}' GNAME: '${USER_GROUP}'" + else + addgroup -g "${USER_GID}" "${USER_GROUP}" + fi + getent passwd "${USER_NAME}" &>/dev/null || adduser -s "${USER_LOGIN_SHELL}" -D -u "${USER_UID}" -G "${USER_GROUP}" "${USER_NAME}" passwd -u "${USER_NAME}" &>/dev/null mkdir -p "/home/${USER_NAME}/.ssh" - log " user '${USER_NAME}' created - UID: '${USER_UID}' GID: '${USER_GID}'" + log " user '${USER_NAME}' created - UID: '${USER_UID}' GID: '${USER_GID}' GNAME: '${USER_GROUP}'" MOUNTED_AUTHORIZED_KEYS="${AUTHORIZED_KEYS_VOLUME}/${USER_NAME}" LOCAL_AUTHORIZED_KEYS="/home/${USER_NAME}/.ssh/authorized_keys" @@ -160,4 +166,4 @@ fi echo "" # do not detach (-D), log to stderr (-e), passthrough other arguments -exec /usr/sbin/sshd -D -e "$@" \ No newline at end of file +exec /usr/sbin/sshd -D -e "$@"