come disabilitare temporaneamente i cronjob di un utente?


14

Come posso disabilitare temporaneamente uno o più lavori cron degli utenti? In particolare, non voglio sospendere i diritti cron dell'utente - semplicemente non licenziare nessuno dei loro lavori.

Sono su sistemi SLES 11 SP2 e SP3


Non puoi semplicemente usare l' -u userinterruttore del crontabcomando e mettere un #carattere di commento davanti ai lavori per disabilitarlo per il dato utente?
Janis,

@Janis quindi devo tenere traccia di ciò che l'utente (ce ne sono molti) ha già commentato, inoltre l'utente può andare avanti e aggiungere un'altra cosa in (non li sto aggiungendo a /etc/cron.deny). Troppo lavoro manuale :(
Dinesh

Dinesh, ho (male-) capito che vuoi un controllo granulare su ciò che disabiliti.
Janis

Risposte:


10

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernamedovrebbe fare il trucco. Ripristina con chmod 600e touch(devi cambiare il mtime del file per fare in modo che cron (tenti di) ricaricarlo).

Almeno su Debian e probabilmente con Vixie cron in generale, chmod 400 /var/spool/cron/crontabs/$usernamefa anche il trucco, perché l'implementazione insiste sul fatto che le autorizzazioni siano esattamente 600. Tuttavia, ciò dura solo fino a quando l'utente non esegue il crontabcomando.

Se vuoi un modo robusto, non penso che ci sia niente di meglio che spostare temporaneamente il loro crontab o cambiare le autorizzazioni e aggiungerle temporaneamente /etc/cron.deny.


Grazie. Sul mio sistema è / var / spool / cron / tabs / $ username. Ma esegue ancora, anche dopo il chmod.
Dinesh,

Dopo aver modificato i permessi dei file, avevo anche bisogno di interrompere / riavviare cron. Ho pensato che probabilmente perché cron potrebbe contenere le cose in memoria. Quindi ho aggiunto touch $usernamedopo il chmod. Ma questo non ha aiutato. (a proposito hai capito cron.deny)
Dinesh

@Dinesh In effetti è necessario aggiornare il mtime del file, altrimenti cron pensa che non sia cambiato e mantiene le informazioni memorizzate nella cache. L'ho notato ieri durante i test, ma ho dimenticato di menzionarlo nella mia risposta, mi dispiace per quello.
Gilles 'SO- smetti di essere malvagio' il

Se vuoi disabilitare solo per tutti gli utenti standard:chgrp root /var/spool/cron/crontabs
shrimpwagon,

9

Che ne dici di qualcosa del genere per disabilitare un crontab utente:

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

e per riattivare:

crontab -u [username] /tmp/[username].cron.tmp

Questo ha l'ulteriore vantaggio di poterlo eseguire come tale utente senza bisogno di root (basta togliere il parametro -u).


0

Se stai usando Debian, questo vale solo per Debian AFAIK :

Puoi farlo aggiungendo un punto al nome del cronjob.

Il comportamento è indicato nei documenti ufficiali Debian:

https://www.debian.org/doc/debian-policy/#cron-job-file-names

Il nome di un file di lavoro cron non deve includere alcun punto o più caratteri (. O +) poiché ciò farà sì che cron ignori il file. I trattini bassi (_) dovrebbero essere usati al posto di. e + caratteri.


0

Se si desidera interrompere completamente tutti i cronlavori per un po ', ad esempio durante la manutenzione del sistema con cui potrebbero interagire male, i comandi sono normalmente

systemctl stop crond.service

e, per riprendere

systemctl start crond.service

Presumo che tu abbia bisogno dell'autorità root o wheel per eseguirle; se necessario, eseguili tramite sudo o (last resort) accedi come root.

Overkill per la domanda specifica posta, ma fornisce "one-stop shopping" e non richiede la riproduzione con il filesystem o i file temporanei.


3
Dal momento che questo disabilita cron per tutti gli utenti, in realtà non risponde alla domanda.
Scott,

-1

Sono d'accordo, il percorso tramite systemctl è quello da prendere. Su lampone, i comandi di punta sarebbero

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
Questo interromperà l'intero cronservizio. L'OP voleva essere in grado di scegliere quali crontab degli utenti disabilitare.
roaima,

1
È anche identico a un'altra risposta.
roaima,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.