All checks were successful
Build Docker Image / build (push) Successful in 38s
57 lines
1.4 KiB
Bash
57 lines
1.4 KiB
Bash
#!/usr/bin/bash
|
|
|
|
set -e
|
|
|
|
# Setup default values
|
|
USER_NAME="ubuntu"
|
|
|
|
# Parse arguments
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--user|-u)
|
|
USER_NAME="$2"
|
|
shift 2
|
|
;;
|
|
--)
|
|
# Stop parsing arguments
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Check, if we are running as root
|
|
if [ "$(id -u)" -eq 0 ]; then
|
|
# Check, if the home directory exists for the specified user
|
|
if [ ! -d "/home/${USER_NAME}" ]; then
|
|
echo "Error: Home directory for user '${USER_NAME}' does not exist." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Check, ownership of the home directory
|
|
OWNER_UID=$(stat -c '%u' "/home/${USER_NAME}")
|
|
OWNER_GID=$(stat -c '%g' "/home/${USER_NAME}")
|
|
if [ "${OWNER_UID}" -ne 0 ] || [ "${OWNER_GID}" -ne 0 ]; then
|
|
# The home directory is not owned by the specfied user, correct it
|
|
chown "${USER_NAME}:${USER_NAME}" "/home/${USER_NAME}"
|
|
fi
|
|
|
|
# Re-initialize the contents of the home directory
|
|
su - "${USER_NAME}" -c "cp -a /etc/skel/. /home/${USER_NAME}/"
|
|
|
|
# We are done as root, quit. The container will be re-run as the specified user.
|
|
exit 0
|
|
fi
|
|
|
|
# Verify that we are running as the user owning the home directory
|
|
if [ "$(id -un)" != "${USER_NAME}" ]; then
|
|
echo "Error: The script must be run as user '${USER_NAME}'." >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Run shell
|
|
exec /usr/bin/bash "$@"
|