#!/usr/bin/bash set -e # Setup default values USER_NAME="${USER_NAME:-ubuntu}" HOME_DIR="${HOMED_DIR:-/home/${USER_NAME}}" # 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_DIR" ]; then echo "Error: Home directory for user '${USER_NAME}' does not exist." >&2 exit 1 fi echo "Preparing home directory for user '${USER_NAME}' at '${HOME_DIR}'." # Check, ownership of the home directory if [ "$(stat -c '%u' "$HOME_DIR")" -eq 0 ]; then # The home directory is a fresh volume owned by root, change ownership echo "Changing ownership of home directory to user '${USER_NAME}'." chown "${USER_NAME}:${USER_NAME}" "$HOME_DIR" fi if [ "$USER_NAME " != "root" ]; then # Re-initialize the contents of the home directory su - "${USER_NAME}" -c "cp -a /etc/skel/. $HOME_DIR" # We are done as root, quit. The container will be re-run as the specified user. exit 0 fi 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 "$@"