mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-20 16:15:59 +01:00
Fix errors when running ejabberdctl as root
This commit is contained in:
parent
b1082a96c9
commit
72dbb6e7c1
@ -13,23 +13,30 @@ ERLANG_NODE=ejabberd@localhost
|
||||
ERL="{{erl}}"
|
||||
IEX="{{bindir}}/iex"
|
||||
EPMD="{{epmd}}"
|
||||
INSTALLUSER={{installuser}}
|
||||
INSTALLUSER="{{installuser}}"
|
||||
|
||||
# check the proper system user is used if defined
|
||||
EXEC_CMD="false"
|
||||
# check the proper system user is used
|
||||
case `id -un` in
|
||||
"$INSTALLUSER")
|
||||
EXEC_CMD="as_current_user"
|
||||
;;
|
||||
root)
|
||||
if [ -n "$INSTALLUSER" ] ; then
|
||||
if [ $(id -g) -eq $(id -g $INSTALLUSER || echo -1) ] ; then
|
||||
EXEC_CMD="as_current_user"
|
||||
else
|
||||
id -Gn | grep -q wheel && EXEC_CMD="as_install_user"
|
||||
fi
|
||||
EXEC_CMD="as_install_user"
|
||||
else
|
||||
EXEC_CMD="as_current_user"
|
||||
echo "WARNING: This is not recommended to run ejabberd as root" >&2
|
||||
fi
|
||||
if [ "$EXEC_CMD" = "false" ] ; then
|
||||
;;
|
||||
*)
|
||||
if [ -n "$INSTALLUSER" ] ; then
|
||||
echo "ERROR: This command can only be run by root or the user $INSTALLUSER" >&2
|
||||
exit 7
|
||||
else
|
||||
EXEC_CMD="as_current_user"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# parse command line parameters
|
||||
for arg; do
|
||||
@ -103,7 +110,7 @@ export ERL_LIBS
|
||||
exec_cmd()
|
||||
{
|
||||
case $EXEC_CMD in
|
||||
as_install_user) su -c '"$0" $@"' "$INSTALLUSER" -- "$@" ;;
|
||||
as_install_user) su -c '"$0" "$@"' "$INSTALLUSER" -- "$@" ;;
|
||||
as_current_user) "$@" ;;
|
||||
esac
|
||||
}
|
||||
@ -223,12 +230,6 @@ check_start()
|
||||
"$EPMD" -kill >/dev/null
|
||||
}
|
||||
}
|
||||
} || {
|
||||
[ -d "$SPOOL_DIR" ] || exec_cmd mkdir -p "$SPOOL_DIR"
|
||||
cd "$SPOOL_DIR" || {
|
||||
echo "ERROR: ejabberd can not access directory $SPOOL_DIR"
|
||||
exit 6
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -253,6 +254,13 @@ wait_status()
|
||||
[ $timeout -gt 0 ]
|
||||
}
|
||||
|
||||
# ensure we can change current directory to SPOOL_DIR
|
||||
[ -d "$SPOOL_DIR" ] || exec_cmd mkdir -p "$SPOOL_DIR"
|
||||
cd "$SPOOL_DIR" || {
|
||||
echo "ERROR: can not access directory $SPOOL_DIR"
|
||||
exit 6
|
||||
}
|
||||
|
||||
# main
|
||||
case $1 in
|
||||
start)
|
||||
|
Loading…
Reference in New Issue
Block a user