feat: Use PUID and PGID for mapping host's user
This commit is contained in:
@@ -57,20 +57,61 @@ function log_error()
|
||||
(>&2 echo "[ERROR] - $*")
|
||||
}
|
||||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: __check_puid_pgid_env
|
||||
# DESCRIPTION: Check if the PUID and PGID environment variables are set correctly.
|
||||
#----------------------------------------------------------------------------------------------------------------------
|
||||
function __check_puid_pgid_env
|
||||
{
|
||||
if [[ "${SALT_VERSION}" -ge "3005" ]]; then
|
||||
log_error "The USERMAP_UID and USERMAP_GID environment variables are not supported in Salt >= 3005"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -n "${USERMAP_UID}" ]]; then
|
||||
log_warn "The USERMAP_UID environment variable is deprecated. Please use PUID instead."
|
||||
log_warn "Support for USERMAP_UID will be removed in Salt 3005 release."
|
||||
if [[ -z "${PUID}" ]]; then
|
||||
log_warn "Setting PUID to USERMAP_UID (${USERMAP_UID})"
|
||||
export PUID="${USERMAP_UID}"
|
||||
else
|
||||
log_error "The PUID and USERMAP_UID environment variables are set. PUID will be used."
|
||||
fi
|
||||
unset USERMAP_UID
|
||||
fi
|
||||
|
||||
if [[ -n "${USERMAP_GID}" ]]; then
|
||||
log_warn "The USERMAP_GID environment variable is deprecated. Please use PGID instead."
|
||||
log_warn "Support for USERMAP_GID will be removed in Salt 3005 release."
|
||||
if [[ -z "${PGID}" ]]; then
|
||||
log_info "Setting PGID to USERMAP_GID (${USERMAP_GID})"
|
||||
export PGID="${USERMAP_GID}"
|
||||
else
|
||||
log_error "The PGID and USERMAP_GID environment variables are set. PGID will be used."
|
||||
fi
|
||||
unset USERMAP_GID
|
||||
fi
|
||||
}
|
||||
|
||||
#--- FUNCTION -------------------------------------------------------------------------------------------------------
|
||||
# NAME: map_uidgid
|
||||
# DESCRIPTION: Map salt user with host user.
|
||||
#----------------------------------------------------------------------------------------------------------------------
|
||||
function map_uidgid()
|
||||
{
|
||||
USERMAP_ORIG_UID=$(id -u "${SALT_USER}")
|
||||
USERMAP_ORIG_GID=$(id -g "${SALT_USER}")
|
||||
USERMAP_GID=${USERMAP_GID:-${USERMAP_UID:-$USERMAP_ORIG_GID}}
|
||||
USERMAP_UID=${USERMAP_UID:-$USERMAP_ORIG_UID}
|
||||
if [[ "${USERMAP_UID}" != "${USERMAP_ORIG_UID}" ]] || [[ "${USERMAP_GID}" != "${USERMAP_ORIG_GID}" ]]; then
|
||||
echo "Mapping UID and GID for ${SALT_USER}:${SALT_USER} to ${USERMAP_UID}:${USERMAP_GID} ..."
|
||||
groupmod -o -g "${USERMAP_GID}" "${SALT_USER}"
|
||||
sed -i -e "s|:${USERMAP_ORIG_UID}:${USERMAP_GID}:|:${USERMAP_UID}:${USERMAP_GID}:|" /etc/passwd
|
||||
__check_puid_pgid_env
|
||||
# Move this into env-defaults.sh
|
||||
[ -z "${PUID}" ] && export PUID=1000
|
||||
[ -z "${PGID}" ] && export PGID=1000
|
||||
|
||||
ORIG_PUID=$(id -u "${SALT_USER}")
|
||||
ORIG_PGID=$(id -g "${SALT_USER}")
|
||||
PGID=${PGID:-${PUID:-$ORIG_PGID}}
|
||||
PUID=${PUID:-$ORIG_PUID}
|
||||
if [[ "${PUID}" != "${ORIG_PUID}" ]] || [[ "${PGID}" != "${ORIG_PGID}" ]]; then
|
||||
log_info "Mapping UID and GID for ${SALT_USER}:${SALT_USER} to ${PUID}:${PGID} ..."
|
||||
groupmod -o -g "${PGID}" "${SALT_USER}"
|
||||
sed -i -e "s|:${ORIG_PUID}:${PGID}:|:${PUID}:${PGID}:|" /etc/passwd
|
||||
find "${SALT_HOME}" \
|
||||
-not -path "${SALT_CONFS_DIR}*" \
|
||||
-not -path "${SALT_KEYS_DIR}*" \
|
||||
@@ -78,7 +119,7 @@ function map_uidgid()
|
||||
-not -path "${SALT_LOGS_DIR}*" \
|
||||
-not -path "${SALT_FORMULAS_DIR}*" \
|
||||
-path "${SALT_DATA_DIR}/*" \
|
||||
\( ! -uid "${USERMAP_ORIG_UID}" -o ! -gid "${USERMAP_ORIG_GID}" \) \
|
||||
\( ! -uid "${ORIG_PUID}" -o ! -gid "${ORIG_PGID}" \) \
|
||||
-print0 | xargs -0 chown -h "${SALT_USER}": "${SALT_HOME}"
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user