Crie o cron como um usuário do apache e execute como usuário root

1

Estou criando este cron como usuário do apache e quero executar este cron como root, abaixo está meu trecho de código:

# Create a cron job to restart apache
cron_file="/etc/cron.d/restart_apache_crontab"
cron_job="*/1 * * * * root condrestart-apache.sh"
echo "$cron_job" > $cron_file
chmod 777 $cron_file
exit 0

Forneceu privilégios suficientes para o diretório cron.d (altera o grupo de diretórios para o usuário do apache) e gerou um script arquivo cron restart_apache_crontab em /etc/cron.d/ usando o script acima

condrestart-apache.sh contém o código abaixo e tem permissões de acesso suficientes para o usuário do apache:

rm -f /etc/cron.d/restart_apache_crontab
/sbin/service httpd restart > restart-apache.log

Isso primeiro removerá o cron e, em seguida, reiniciará o apache (significa que o cron funcionará apenas por 1 vez)

Eu sou capaz de criar o cron como usuário do apache, mas não é capaz de executá-lo como usuário root.

Por favor, ajude-me sobre isso .. trecho de código será realmente útil ..

    
por Viren H. Ajmera 02.12.2013 / 11:01

1 resposta

1

No cronjob "*/1 * * * * root condrestart-apache.sh" , esperaria um caminho absoluto para o seu script de reinicialização. /usr/local/sbin/condrestart-apache.sh .

E o condrestart-apache.sh deve ser um script de shell executável (por exemplo, chmod 755 ) e, é claro, incluir algo como #!/bin/sh , que está faltando no seu snippet.

O principal motivo para reiniciar o Apache seria efetuar uma alteração de configuração, portanto, verificar se a sintaxe está correta antes de tentar reiniciar seu servidor da Web e matá-lo pode ser uma boa ideia também ...

#!/bin/sh
# /usr/local/sbin/condrestart-apache.sh
rm -f /etc/cron.d/restart_apache_crontab
RETVAL=0
/usr/sbin/apachectl configtest
RETVAL=$?
if [ $RETVAL -ne  0 ]; then
   echo "Configuration file invalid"
   exit 1
fi
/sbin/service httpd restart 
RETVAL=$?
if [ $RETVAL -ne  0 ]; then
   echo "Restart Failed"
   exit 1
fi
    
por 02.12.2013 / 14:43