mirror of
https://github.com/devilbox/docker-php-fpm.git
synced 2025-12-10 11:01:14 +00:00
105 lines
2.6 KiB
Bash
Executable File
105 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Available global variables:
|
|
# + MY_USER
|
|
# + MY_GROUP
|
|
# + DEBUG_LEVEL
|
|
|
|
set -e
|
|
set -u
|
|
|
|
|
|
############################################################
|
|
# Functions
|
|
############################################################
|
|
|
|
###
|
|
### Change UID
|
|
###
|
|
set_uid() {
|
|
uid_varname="${1}"
|
|
|
|
if ! env_set "${uid_varname}"; then
|
|
log "info" "\$${uid_varname} not set. Keeping default uid for '${MY_USER}'."
|
|
else
|
|
uid_env_uid="$( env_get "${uid_varname}" )"
|
|
|
|
if ! isint "${uid_env_uid}"; then
|
|
log "err" "\$${uid_varname} is not an integer: '${uid_env_uid}'"
|
|
exit 1
|
|
else
|
|
if uid_getent_row="$( getent passwd "${uid_env_uid}" )"; then
|
|
uid_getent_name="$( echo "${uid_getent_row}" | awk -F ':' '{print $1}' )"
|
|
if [ "${uid_getent_name}" != "${MY_USER}" ]; then
|
|
log "warn" "User with ${uid_env_uid} already exists: ${uid_getent_name}"
|
|
log "info" "Changing UID of ${uid_getent_name} to 9999"
|
|
run "usermod -u 9999 ${uid_getent_name}"
|
|
fi
|
|
fi
|
|
log "info" "Changing user '${MY_USER}' uid to: ${uid_env_uid}"
|
|
run "usermod -u ${uid_env_uid} ${MY_USER}"
|
|
fi
|
|
fi
|
|
|
|
# Fix homedir permissions
|
|
run "chown -R ${MY_USER} /home/${MY_USER}"
|
|
|
|
unset -v uid_varname
|
|
unset -v uid_env_uid
|
|
unset -v uid_getent_row
|
|
unset -v uid_getent_name
|
|
}
|
|
|
|
|
|
###
|
|
### Change GID
|
|
###
|
|
set_gid() {
|
|
gid_varname="${1}"
|
|
|
|
if ! env_set "${gid_varname}"; then
|
|
log "info" "\$${gid_varname} not set. Keeping default gid for '${MY_GROUP}'."
|
|
else
|
|
# Retrieve the value from env
|
|
gid_env_gid="$( env_get "${gid_varname}" )"
|
|
|
|
if ! isint "${gid_env_gid}"; then
|
|
log "err" "\$${gid_varname} is not an integer: '${gid_env_gid}'"
|
|
exit 1
|
|
else
|
|
if gid_getent_row="$( getent group "${gid_env_gid}" )"; then
|
|
gid_getent_name="$( echo "${gid_getent_row}" | awk -F ':' '{print $1}' )"
|
|
if [ "${gid_getent_name}" != "${MY_GROUP}" ]; then
|
|
log "warn" "Group with ${gid_env_gid} already exists: ${gid_getent_name}"
|
|
log "info" "Changing GID of ${gid_getent_name} to 9999"
|
|
run "groupmod -g 9999 ${gid_getent_name}"
|
|
fi
|
|
fi
|
|
log "info" "Changing group '${MY_GROUP}' gid to: ${gid_env_gid}"
|
|
run "groupmod -g ${gid_env_gid} ${MY_GROUP}"
|
|
fi
|
|
fi
|
|
|
|
# Fix homedir permissions
|
|
run "chown -R :${MY_GROUP} /home/${MY_USER}"
|
|
|
|
unset -v gid_varname
|
|
unset -v gid_env_gid
|
|
unset -v gid_getent_row
|
|
unset -v gid_getent_name
|
|
}
|
|
|
|
|
|
############################################################
|
|
# Sanity Checks
|
|
############################################################
|
|
|
|
if ! command -v usermod >/dev/null 2>&1; then
|
|
log "err" "usermod not found, but required."
|
|
exit 1
|
|
fi
|
|
if ! command -v groupmod >/dev/null 2>&1; then
|
|
log "err" "groupmod not found, but required."
|
|
exit 1
|
|
fi
|