From fa0134551f4422ade6d4f3d5c33fbbd3dcf7b725 Mon Sep 17 00:00:00 2001 From: Luis Garcia Date: Fri, 13 Sep 2024 09:56:34 -0600 Subject: [PATCH] Entrypoint: Check root user, check addgroup/adduser command exists --- entrypoint.sh | 54 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/entrypoint.sh b/entrypoint.sh index 1755fe4..abeed13 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -2,29 +2,33 @@ set -e -# Create group and user based on environment variables -if [ ! "$(getent group "$PGID")" ]; then - # If groupadd exists, use it - if command -v groupadd > /dev/null; then - groupadd -g "$PGID" jellyplex_group - else - addgroup -g "$PGID" jellyplex_group +# Check if user is root +if [ "$(id -u)" = '0' ]; then + # Create group and user based on environment variables + if [ ! "$(getent group "$PGID")" ]; then + # If groupadd exists, use it + if command -v groupadd > /dev/null; then + groupadd -g "$PGID" jellyplex_group + elif command -v addgroup > /dev/null; then + addgroup -g "$PGID" jellyplex_group + fi fi -fi -if [ ! "$(getent passwd "$PUID")" ]; then - # If useradd exists, use it - if command -v useradd > /dev/null; then - useradd --no-create-home -u "$PUID" -g "$PGID" jellyplex_user - else - adduser -D -H -u "$PUID" -G jellyplex_group jellyplex_user + if [ ! "$(getent passwd "$PUID")" ]; then + # If useradd exists, use it + if command -v useradd > /dev/null; then + useradd --no-create-home -u "$PUID" -g "$PGID" jellyplex_user + elif command -v adduser > /dev/null; then + adduser -D -H -u "$PUID" -G jellyplex_group jellyplex_user + fi fi +else + # If user is not root, set the PUID and PGID to the current user + PUID=$(id -u) + PGID=$(id -g) fi -# Adjust ownership of the application directory -chown -R "$PUID:$PGID" /app - -# Get directory of log and mark file to create base folder if it doesnt exist and change permissions +# Get directory of log and mark file to create base folder if it doesnt exist LOG_DIR=$(dirname "$LOG_FILE") # If LOG_DIR is set, create the directory if [ -n "$LOG_DIR" ]; then @@ -36,8 +40,14 @@ if [ -n "$MARK_DIR" ]; then mkdir -p "$MARK_DIR" fi -chown -R "$PUID:$PGID" "$LOG_DIR" -chown -R "$PUID:$PGID" "$MARK_DIR" +# If root run as the created user +if [ "$(id -u)" = '0' ]; then + chown -R "$PUID:$PGID" "$LOG_DIR" + chown -R "$PUID:$PGID" "$MARK_DIR" + + # Run the application as the created user + exec gosu "$PUID:$PGID" "$@" +fi -# Run the application as the created user -exec gosu "$PUID:$PGID" "$@" +# Run the application as the current user +exec "$@"