¿Cómo deshabilitar temporalmente los cronjobs de un usuario?
14
¿Cómo deshabilito temporalmente uno o más trabajos cron de los usuarios? En particular, no quiero suspender los derechos de cron del usuario, simplemente no despedir ninguno de sus trabajos.
¿No puede simplemente usar el -u userinterruptor del crontabcomando y poner un #carácter de comentario delante de los trabajos para deshabilitar para el usuario dado?
Janis
@Janis, entonces necesito hacer un seguimiento de lo que el usuario (hay muchos) ya había comentado, además, el usuario puede continuar y agregar otra cosa (no los estoy agregando a /etc/cron.deny). Demasiado trabajo manual :(
Dinesh
Dinesh, entendí mal que quieres un control granular sobre lo que desactivas.
Janis
Respuestas:
10
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernamedebería hacer el truco. Restaure con chmod 600y touch(debe cambiar el archivo mtime para que cron (intente) volver a cargarlo).
Al menos en Debian y probablemente con Vixie cron en general, chmod 400 /var/spool/cron/crontabs/$usernametambién funciona, porque esa implementación insiste en que los permisos sean exactamente 600. Sin embargo, esto solo dura hasta que el usuario ejecuta el crontabcomando.
Si quieres una forma sólida, no creo que haya nada mejor que mover temporalmente su crontab fuera del camino o cambiar los permisos, y agregarlos temporalmente /etc/cron.deny.
Gracias. En mi sistema es / var / spool / cron / tabs / $ username. Pero aún se ejecuta, incluso después del chmod.
Dinesh
Después de cambiar los permisos del archivo, también necesitaba detener / reiniciar cron. Pensé que probablemente sea porque cron podría estar guardando las cosas en la memoria. Entonces agregué touch $usernamedespués del chmod. Pero eso no ayudó. (por cierto entendí tu punto cron.deny)
Dinesh
@Dinesh De hecho, debe actualizar el archivo mtime o, de lo contrario, cron cree que no ha cambiado y mantiene la información almacenada en caché. Noté esto mientras probaba ayer, pero olvidé mencionarlo en mi respuesta, lo siento.
Gilles 'SO- deja de ser malvado'
Si desea deshabilitar para todos los usuarios estándar solo:chgrp root /var/spool/cron/crontabs
shrimpwagon
9
¿Qué tal algo como esto para deshabilitar un crontab de usuario?
El nombre de un archivo de trabajo cron no debe incluir ningún punto o más caracteres (. O +), ya que esto hará que cron ignore el archivo. Se deben usar guiones bajos (_) en lugar de. y + personajes.
Si solo desea detener completamente todos los crontrabajos por un tiempo, por ejemplo, mientras realiza el mantenimiento del sistema con el que podrían interactuar mal, los comandos normalmente son
systemctl stop crond.service
y, para reanudar
systemctl start crond.service
Supongo que necesita autoridad de root o rueda para ejecutarlos; si es necesario, ejecútelos a través de sudo o (último recurso) inicie sesión como root.
Exagerar para la pregunta específica planteada, pero proporciona "compras únicas" y no requiere jugar con el sistema de archivos o archivos temporales.
-u user
interruptor delcrontab
comando y poner un#
carácter de comentario delante de los trabajos para deshabilitar para el usuario dado?Respuestas:
touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$username
debería hacer el truco. Restaure conchmod 600
ytouch
(debe cambiar el archivo mtime para que cron (intente) volver a cargarlo).Al menos en Debian y probablemente con Vixie cron en general,
chmod 400 /var/spool/cron/crontabs/$username
también funciona, porque esa implementación insiste en que los permisos sean exactamente 600. Sin embargo, esto solo dura hasta que el usuario ejecuta elcrontab
comando.Si quieres una forma sólida, no creo que haya nada mejor que mover temporalmente su crontab fuera del camino o cambiar los permisos, y agregarlos temporalmente
/etc/cron.deny
.fuente
chmod
.touch $username
después delchmod
. Pero eso no ayudó. (por cierto entendí tu puntocron.deny
)chgrp root /var/spool/cron/crontabs
¿Qué tal algo como esto para deshabilitar un crontab de usuario?
y para volver a habilitar:
Esto tiene la ventaja adicional de que puede ejecutarlo como ese usuario sin necesidad de root (simplemente quite el parámetro -u).
fuente
Si está utilizando Debian, esto solo se aplica a Debian AFAIK :
Puede hacerlo agregando un punto al nombre del cronjob.
El comportamiento se menciona en los documentos oficiales de Debian:
https://www.debian.org/doc/debian-policy/#cron-job-file-names
fuente
Si solo desea detener completamente todos los
cron
trabajos por un tiempo, por ejemplo, mientras realiza el mantenimiento del sistema con el que podrían interactuar mal, los comandos normalmente sony, para reanudar
Supongo que necesita autoridad de root o rueda para ejecutarlos; si es necesario, ejecútelos a través de sudo o (último recurso) inicie sesión como root.
Exagerar para la pregunta específica planteada, pero proporciona "compras únicas" y no requiere jugar con el sistema de archivos o archivos temporales.
fuente
Estoy de acuerdo, el camino a través de systemctl es el que hay que tomar. En frambuesa, los dedos del pie serían
fuente
cron
servicio. El OP quería poder elegir qué crontabs de usuarios deshabilitar.