Merge "Fix doc and user create script to set homedir permissions"
diff --git a/doc/source/guides/multinode-lab.rst b/doc/source/guides/multinode-lab.rst
index 81c5945..79a76de 100644
--- a/doc/source/guides/multinode-lab.rst
+++ b/doc/source/guides/multinode-lab.rst
@@ -75,6 +75,14 @@
useradd -s /bin/bash -d /opt/stack -m stack
+Ensure home directory for the ``stack`` user has executable permission for all,
+as RHEL based distros create it with ``700`` and Ubuntu 21.04+ with ``750``
+which can cause issues during deployment.
+
+::
+
+ chmod +x /opt/stack
+
This user will be making many changes to your system during installation
and operation so it needs to have sudo privileges to root without a
password:
diff --git a/doc/source/guides/single-machine.rst b/doc/source/guides/single-machine.rst
index a0e97ed..03d9374 100644
--- a/doc/source/guides/single-machine.rst
+++ b/doc/source/guides/single-machine.rst
@@ -49,6 +49,14 @@
$ sudo useradd -s /bin/bash -d /opt/stack -m stack
+Ensure home directory for the ``stack`` user has executable permission for all,
+as RHEL based distros create it with ``700`` and Ubuntu 21.04+ with ``750``
+which can cause issues during deployment.
+
+.. code-block:: console
+
+ $ sudo chmod +x /opt/stack
+
Since this user will be making many changes to your system, it will need
to have sudo privileges:
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 08ce4cb..0434d68 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -57,6 +57,14 @@
$ sudo useradd -s /bin/bash -d /opt/stack -m stack
+Ensure home directory for the ``stack`` user has executable permission for all,
+as RHEL based distros create it with ``700`` and Ubuntu 21.04+ with ``750``
+which can cause issues during deployment.
+
+.. code-block:: console
+
+ $ sudo chmod +x /opt/stack
+
Since this user will be making many changes to your system, it should
have sudo privileges:
diff --git a/tools/create-stack-user.sh b/tools/create-stack-user.sh
index 919cacb..cb8d7aa 100755
--- a/tools/create-stack-user.sh
+++ b/tools/create-stack-user.sh
@@ -44,6 +44,15 @@
if ! getent passwd $STACK_USER >/dev/null; then
echo "Creating a user called $STACK_USER"
useradd -g $STACK_USER -s /bin/bash -d $DEST -m $STACK_USER
+ # RHEL based distros create home dir with 700 permissions,
+ # And Ubuntu 21.04+ with 750, i.e missing executable
+ # permission for either group or others
+ # Devstack deploy will have issues with this, fix it by
+ # adding executable permission
+ if [[ $(stat -c '%A' $DEST|grep -o x|wc -l) -lt 3 ]]; then
+ echo "Executable permission missing for $DEST, adding it"
+ chmod +x $DEST
+ fi
fi
echo "Giving stack user passwordless sudo privileges"