Estoy en Debian. Intento hacer un trabajo cron para youtube-dl. Consiste en un guión diario, que comienza a medianoche. Cuando ejecuto el script manualmente, todo funciona perfectamente. Sin embargo, cuando uso el trabajo cron, aparece un error como este:
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
El cron es el siguiente:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1
Entiendo que hay un problema de permisos en alguna parte, pero no sé cómo solucionarlo.
Para tu información :
- propietario/grupo de la carpeta de destino (
/media/Video/
) es:www-data
(propietario),wwww-data
(grupo) - propietario/grupo del script es:
nextcloud
(propietario),root
(grupo) nextcloud
yroot
pertenecer al grupowww-data
- y el
/media/Video/
permiso de la carpeta de destino ( ) es770
(el propietario/grupo puede leer/escribir/ejecutar, otros no pueden hacer nada).
Podrías ayudarme, por favor ? He visto un tema similar pero la solución no fue exitosa ya que el problema no era exactamente el mismo. Muchas gracias.
EDITAR (estado antiguo):Hasta ahora, he intentado copiar mi script ( youtube-dl-script.sh
) en /etc/crontab.daily
la carpeta, respetando las reglas (eliminando la .sh
extensión y el script propiedad de root
/group root
). Y consultar con cat /etc/crontab
me da este resultado:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Entonces, normalmente, debería haber funcionado a las 6:25 a. m. de esta mañana, ¡pero no fue así!
He descubierto que otros scripts tienen -x
como bit final, por eso, he hecho chmod +x youtube-dl-script
.
Antes de eso, el guión es
-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.Ahora es
-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.
Ahora tengo que esperar hasta mañana a las 6:25 a.m. para ver si esto funciona.
EDITAR 2 (estado actual): entonces no funciona. Incluso lo hice chmod 755
para tener los mismos permisos que todos los demás scripts y reinicié el servidor, pero no funciona.
Lo que es muy extraño es que si lo hago run-parts --test /etc/cron.daily
, mi script aparece en la lista, por lo que debería ejecutarlocron.daily
Por favor, si tienes alguna idea, no dudes en informarme. Gracias.
Respuesta1
Bien, he encontrado la solución:
Primero, moví el script /etc/cron.hourly
a porque no estaba anacron
instalado y porque me gustaría usarlo cada hora. Pero no funcionó.
Luego lo ejecuté sudo service cron status
solo para verificar si el servicio cron estaba activo. Lo era, pero también encontré una advertencia interesante, algo así como your token was expired, renew your token
. Así que busqué este mensaje de error en Internet y descubrí que era necesario renovar mi contraseña de root; de lo contrario, cron no funcionaría correctamente. Para verificar esto, tuve que usar sudo chage -l root
el cual mostraba que mi contraseña de root era expired
.
Por lo tanto, renové mi contraseña de root sudo passwd root
y la verifiqué nuevamente, sudo chage -l root
lo que mostró que la contraseña ahora está bien. ¡Ahora todo está funcionando bien y cron funciona como se esperaba!