Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | # **create-stack-user.sh** |
| 4 | |
| 5 | # Create a user account suitable for running DevStack |
| 6 | # - create a group named $STACK_USER if it does not exist |
| 7 | # - create a user named $STACK_USER if it does not exist |
Adam Spiers | cb96159 | 2013-10-05 12:11:07 +0100 | [diff] [blame] | 8 | # |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 9 | # - home is $DEST |
Adam Spiers | cb96159 | 2013-10-05 12:11:07 +0100 | [diff] [blame] | 10 | # |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 11 | # - configure sudo for $STACK_USER |
| 12 | |
| 13 | # ``stack.sh`` was never intended to run as root. It had a hack to do what is |
| 14 | # now in this script and re-launch itself, but that hack was less than perfect |
| 15 | # and it was time for this nonsense to stop. Run this script as root to create |
| 16 | # the user and configure sudo. |
| 17 | |
Jim Rollenhagen | 010959d | 2014-02-18 13:17:58 -0600 | [diff] [blame] | 18 | set -o errexit |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 19 | |
| 20 | # Keep track of the devstack directory |
| 21 | TOP_DIR=$(cd $(dirname "$0")/.. && pwd) |
| 22 | |
| 23 | # Import common functions |
| 24 | source $TOP_DIR/functions |
| 25 | |
| 26 | # Determine what system we are running on. This provides ``os_VENDOR``, |
| 27 | # ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME`` |
| 28 | # and ``DISTRO`` |
| 29 | GetDistro |
| 30 | |
Jim Rollenhagen | 010959d | 2014-02-18 13:17:58 -0600 | [diff] [blame] | 31 | # Needed to get ``ENABLED_SERVICES`` and ``STACK_USER`` |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 32 | source $TOP_DIR/stackrc |
| 33 | |
| 34 | # Give the non-root user the ability to run as **root** via ``sudo`` |
| 35 | is_package_installed sudo || install_package sudo |
| 36 | |
Jim Rollenhagen | 010959d | 2014-02-18 13:17:58 -0600 | [diff] [blame] | 37 | [[ -z "$STACK_USER" ]] && die "STACK_USER is not set. Exiting." |
| 38 | |
Dean Troyer | 23f69d8 | 2013-10-04 12:35:24 -0500 | [diff] [blame] | 39 | if ! getent group $STACK_USER >/dev/null; then |
| 40 | echo "Creating a group called $STACK_USER" |
| 41 | groupadd $STACK_USER |
| 42 | fi |
| 43 | |
| 44 | if ! getent passwd $STACK_USER >/dev/null; then |
| 45 | echo "Creating a user called $STACK_USER" |
| 46 | useradd -g $STACK_USER -s /bin/bash -d $DEST -m $STACK_USER |
| 47 | fi |
| 48 | |
| 49 | echo "Giving stack user passwordless sudo privileges" |
| 50 | # UEC images ``/etc/sudoers`` does not have a ``#includedir``, add one |
| 51 | grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers || |
| 52 | echo "#includedir /etc/sudoers.d" >> /etc/sudoers |
| 53 | ( umask 226 && echo "$STACK_USER ALL=(ALL) NOPASSWD:ALL" \ |
| 54 | > /etc/sudoers.d/50_stack_sh ) |