#!/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 "$@"