Uma instalação padrão do CentOS normalmente terá Defaults requiretty
definido em /etc/sudoers
. Isso fará com que sudo -u $user $command
falhe em um script de inicialização na inicialização, pois o script não está necessariamente sendo executado em um tty "completo".
Convenientemente, o CentOS fornece um arquivo de funções init comum ( /etc/rc.d/init.d/functions
) que contém a função daemon
- um wrapper para executar programas com diferentes opções (por exemplo, usuário, arquivos nice, pid, etc.).
Tente modificar seu script da seguinte forma:
# Source function library.
. /etc/rc.d/init.d/functions
...
start)
if [ -f $JASPER_HOME/ctlscript.sh ]; then
echo "Starting JasperServer"
daemon --user $JASPER_USER $JASPER_HOME/ctlscript.sh start
fi
;;
Isso usará runuser -s /bin/bash $user
para criar um shell com as permissões corretas para executar o comando, evitando qualquer problema de segurança ou interferência de ambiente com su
ou sudo
.