]> granicus.if.org Git - ejabberd/commitdiff
ejabberdctl: Omit su(1)'s "-p" flag
authorHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 27 Jul 2014 09:21:55 +0000 (11:21 +0200)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Sun, 27 Jul 2014 09:21:55 +0000 (11:21 +0200)
On Linux, su(1)'s "-p" flag makes sure the following environment
variables are preserved: $HOME, $SHELL, $USER, and $LOGNAME.  The flag
isn't portable, and since we don't set HOME=$SPOOLDIR anymore, there's
no reason to preserve these variables anyway.

Without "-p", we also don't need to set HOME=$INSTALLUSER_HOME, as su(1)
now does that for us.

ejabberdctl.template

index 204d22509e15b2fa39421e7c5c81f4808820c586..4e8234c99c71072477be690bcd23c47f69b6055e 100755 (executable)
@@ -23,15 +23,11 @@ if [ "$INSTALLUSER" != "" ] ; then
     for GID in `id -G`; do
         if [ $GID -eq 0 ] ; then
             INSTALLUSER_HOME=$(getent passwd "$INSTALLUSER" | cut -d: -f6)
-            if [ -z "$INSTALLUSER_HOME" ] ; then
-                echo "Cannot determine home directory of $INSTALLUSER" >&2
-                exit 1
-            fi
-            if [ ! -d "$INSTALLUSER_HOME" ] ; then
+            if [ -n "$INSTALLUSER_HOME" ] && [ ! -d "$INSTALLUSER_HOME" ] ; then
                 mkdir -p "$INSTALLUSER_HOME"
                 chown "$INSTALLUSER" "$INSTALLUSER_HOME"
             fi
-            EXEC_CMD="env HOME=$INSTALLUSER_HOME su $INSTALLUSER -p -c"
+            EXEC_CMD="su $INSTALLUSER -c"
         fi
     done
     if [ `id -g` -eq `id -g $INSTALLUSER` ] ; then