¿Se pueden usar enlaces simbólicos en /etc/cron.d/?

25

Estoy tratando de implementar un mecanismo de configuración que permita que un determinado proyecto se implemente mediante svn una configuración cron.

Inmediatamente pensé que lo que debía hacer era cerrar los enlaces simbólicos de /etc/cron.d/ al archivo cron de mi proyecto (que a su vez está controlado por un vcs), pero eso parece no funcionar.

Encontré algunos mensajes antiguos en el foro que hacen referencia a que los enlaces simbólicos no eran compatibles y otros dicen que sí. Cual es

¿Hay algo más o alguna otra buena manera de lograr esto?

Luís Faceira
fuente

Respuestas:

27

De acuerdo a man crond

CUEVAS

Todos los archivos crontab tienen que ser archivos normales o enlaces simbólicos a archivos normales, no deben ser ejecutables ni grabables para nadie más que el propietario. Este requisito se puede anular utilizando la opción -p en la línea de comando crond. Si se está utilizando el soporte de ino- tify, el demonio cron no notará automáticamente los cambios en los crontabs con enlaces simbólicos. El demonio cron debe recibir una señal SIGHUP para volver a cargar los crontabs. Esta es una limitación de la API de inotify.

La salida de syslog se usará en lugar de correo, cuando sendmail no esté instalado.

También me molestó muchísimo. En resumen, sí, puedes usar enlaces simbólicos, si no es regular files or symlinks to a regular fileasí, debes usar el -pinterruptor.

quién soy
fuente
1
También encontrará que el archivo debe ser propiedad del usuario cron para el que ejecuta trabajos; por ejemplo, si un enlace simbólico /etc/cron.d/bobsjobapunta a un archivo propiedad del usuario "bob" cron fallará con un mensaje de syslog WRONG FILE OWNER (/etc/cron.d/bobsjob).
Craig Ringer
@CraigRinger Tengo un usuario llamado "www-data" que posee el archivo cron, actualmente recibo el error PROPIETARIO DE ARCHIVO INCORRECTO en el syslog. ¿Cómo puedo hacer que Cron se ejecute usando el usuario "www-data"? No quiero hacer root al propietario del archivo.
CMCDragonkai
@CMCDragonkai sudo -u www-data crontab -ey agréguelo al crontab del usuario de www-data. Luego se ejecutará como usuario www-data. Recuerde eliminar la columna de usuario explícito, ya que no existe en las fichas de usuario.
Craig Ringer
¿Eso colocará el archivo adentro etc/cron.? Tenía la impresión de que la herramienta crontab ubicaría la tarea en otro lugar.
CMCDragonkai
@CMCDragonkai Tienes razón, llamar crontab -een este caso no es lo que quieres. Estoy buscando pero no he encontrado una manera de ejecutar un crontab de usuario como usuario no root.
ACK_stoverflow
14

Esto tiene implicaciones de seguridad. Los scripts en /etc/cron.d/ son ejecutados por root con privilegios de root. Es una mala idea crear scripts de enlaces simbólicos que sean propiedad y puedan escribirse para usuarios no root, ya que su sistema podría verse comprometido de esa manera

Florian Heinle
fuente
4

Verificaría la página de manual de cron para su versión de Ubuntu (¡supongo que estamos hablando de Ubuntu en este foro!):

Los archivos en este directorio deben ser propiedad de root, no necesitan ser ejecutables (son archivos de configuración, como / etc / crontab) y deben cumplir con la misma convención de nomenclatura utilizada por run-parts (8): deben consisten únicamente en letras mayúsculas y minúsculas, dígitos, guiones bajos y guiones. Esto significa que no pueden contener puntos.

Como señala Florian, si este archivo es editable por usuarios no root, es un agujero de seguridad porque los trabajos serán ejecutados por root (para quien sea nombrado como el propietario del trabajo en el archivo). También tenga en cuenta, por lo tanto, que

Este directorio puede contener cualquier archivo que defina tareas que sigan el formato utilizado en / etc / crontab, es decir, a diferencia del usuario cron spool, estos archivos deben proporcionar el nombre de usuario para ejecutar la tarea como en la definición de tarea.

es decir, ingrese el nombre de usuario antes del comando para ejecutar.

espuma
fuente
1
Esto significa que no pueden contener puntos. Presta atención a esto. Tenía un punto en el nombre del enlace. Fue el culpable de mis trabajos no correctos para mí. Además: el archivo DEBE terminar con un CRLF
Dr. Gianluigi Zane Zanettini