I collegamenti simbolici possono essere usati in /etc/cron.d/?


25

Sto cercando di implementare un meccanismo di configurazione che consente a un determinato progetto di distribuirsi tramite svn una configurazione cron.

Ho immediatamente pensato che quello che dovrei fare è cerare collegamenti simbolici da /etc/cron.d/ al file cron del mio progetto (che a sua volta è controllato da un vcs), ma sembra non funzionare.

Ho trovato alcuni vecchi messaggi del forum che riferivano che i collegamenti simbolici non erano supportati e altri che lo dicevano. Cos'è questo?

C'è qualcos'altro o qualche altro buon modo per raggiungere questo obiettivo?

Risposte:


27

Secondo man crond

CAVEATS

Tutti i file crontab devono essere file regolari o collegamenti simbolici a file regolari, non devono essere eseguibili o scrivibili per nessun altro che il proprietario. Questo requisito può essere ignorato usando l'opzione -p nella riga di comando crond. Se viene utilizzato il supporto di inoify, i cambiamenti nei crontab con collegamento simbolico non vengono notati automaticamente dal demone cron. Il demone cron deve ricevere un segnale SIGHUP per ricaricare i crontab. Questa è una limitazione dell'API inotify.

L'output di syslog verrà utilizzato al posto della posta, quando sendmail non è installato.

Mi ha infastidito anche la merda vivente, in breve sì, puoi usare i link simbolici, se non regular files or symlinks to a regular fileè necessario utilizzare -pswitch.


1
Scoprirai inoltre che il file deve essere di proprietà dell'utente cron per cui sono in esecuzione lavori; ad esempio, se un collegamento simbolico /etc/cron.d/bobsjobpunta a un file di proprietà dell'utente "bob" cron fallirà con un messaggio syslog WRONG FILE OWNER (/etc/cron.d/bobsjob).
Craig Ringer,

@CraigRinger Ho un utente chiamato "www-data" che possiede il file cron, al momento sto ricevendo l'errore WRONG FILE OWNER nel syslog. Come posso far eseguire Cron utilizzando l'utente "www-data". Non voglio rendere root il file.
CMCDragonkai,

@CMCDragonkai sudo -u www-data crontab -ee aggiungilo al crontab dell'utente www-data. Verrà quindi eseguito come utente www-data. Ricorda di rimuovere la colonna dell'utente esplicito, poiché non esiste nei crontab dell'utente.
Craig Ringer,

Questo metterà il file dentro etc/cron.? Ero sotto l'impressione che lo strumento crontab posizionasse l'attività altrove.
CMCDragonkai,

@CMCDragonkai Hai ragione, crontab -ein questo caso chiamare non è quello che vuoi. Sto cercando ma non ho trovato il modo di eseguire un crontab utente come utente non root.
ACK_stoverflow

14

Ciò ha implicazioni per la sicurezza. Gli script in /etc/cron.d/ sono eseguiti da root con i privilegi di root. È una cattiva idea collegare gli script lì che sono di proprietà e scrivibili per utenti non root, poiché il tuo sistema potrebbe essere compromesso in questo modo


4

Controllerei la manpage cron per la tua versione di Ubuntu (suppongo che stiamo parlando di Ubuntu su questo forum!):

I file in questa directory devono essere di proprietà di root, non devono essere eseguibili (sono file di configurazione, proprio come / etc / crontab) e devono essere conformi alla stessa convenzione di denominazione utilizzata da run-parts (8): devono sono costituiti esclusivamente da lettere maiuscole e minuscole, cifre, caratteri di sottolineatura e trattini. Ciò significa che non possono contenere punti.

Come sottolinea Florian, se questo file è scrivibile da utenti non root, è un buco nella sicurezza perché i lavori verranno eseguiti da root (per chiunque sia nominato come proprietario del lavoro nel file). Si noti, quindi, che

Questa directory può contenere qualsiasi file che definisce le attività seguendo il formato usato in / etc / crontab, cioè a differenza dello spool cron utente, questi file devono fornire il nome utente per eseguire l'attività come nella definizione dell'attività.

ovvero inserire il nome utente prima del comando da eseguire.


1
Ciò significa che non possono contenere punti. presta attenzione a questo. Ho avuto un punto nel nome del collegamento. È stato il colpevole per i miei lavori non in esecuzione per me. Inoltre: il file stesso DEVE terminare con un CRLF
Dr. Gianluigi Zane Zanettini,
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.