Root Cron no ejecutará script (permiso denegado)


17

Edité mi pestaña cron raíz para ejecutar periódicamente un script ubicado en la carpeta de un usuario en particular usando este comando:

sudo crontab -e

Cuando cron ejecuta el script, este es el resultado:

sh: 1: /home/user/Location/Of/Script: Permission denied

Pensé que el cron raíz tenía permiso para hacer cualquier cosa. No tengo ningún problema cuando ejecuto manualmente este script como root.

He leído en la documentación que se puede encontrar más información de error aquí:

sudo cat /var/log/syslog

Esto es lo que encontré:

Jan 30 12:30:01 backup CRON[17702]: (CRON) info (No MTA installed, discarding output)

Sin embargo, creo que esto probablemente no esté relacionado con el problema de permiso denegado.

Entonces, ¿qué es lo que realmente necesito hacer?


3
¿Puedes enumerar los permisos /home/user/Location/Of/Script? Por ej la -l /home/user/Location/Of/Script. Por cierto, necesita un MTA instalado para uso interno normal, incluso si no está enviando / recibiendo correo electrónico externamente. Me sorprende que su sistema no lo tenga instalado.
Faheem Mitha

1
Esto podría deberse a todo tipo de cosas. Publique el resultado del comando @FaheemMitha solicitado, así como la línea correspondiente en su crontab
terdon

-rw-r - r-- (este era el problema)
-Gracias

Dices que lo resolviste con "-rw-r - r--" pero no sé qué es eso ni cómo usarlo y tengo el mismo problema que se describe en este hilo. ¿Puedes ser un poco más específico con tu solución para la posteridad? La gente como yo lo agradecerá mucho. ¡Gracias!
Johnson Jason

@JohnsonJason: El problema era que los permisos en el archivo de script no permitían la ejecución. Mire la respuesta aceptada, que muestra cómo dar permiso al script para que se ejecute.
Lonniebiz

Respuestas:


19

Creo que tu script no es ejecutable. Entonces, use el siguiente comando para hacerlo:

chmod +x /home/user/Location/Of/Script

O, si no es el propietario de ese script:

sudo chmod +x /home/user/Location/Of/Script

Entonces, para que cron ejecute el script, debe ser ejecutable, pero manualmente ya que la raíz no necesita este indicador, ¿verdad?
Lonniebiz

1
Depende de cómo ejecute el script manualmente. Si ejecuta el script usando ./Scipto /home/user/Location/Of/Scriptno está bien. Generalmente cualquier script debe ser ejecutable. Consulte Cómo ejecutar un script de shell en Linux .
Radu Rădeanu

Eso tiene sentido, pero realmente he estado ejecutando este script manualmente de la forma ./script sin encontrar ningún problema de permisos hasta que traté de cron. Gracias por tu ayuda.
Lonniebiz
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.