2009-06-18 8 views
11

Ho bisogno che il file Bash venga eseguito periodicamente, e deve essere come root.È possibile creare un file Bash eseguito come root in crontab?

È possibile?

[[email protected] nutch-0.9]# locate crontab 
/etc/crontab 
/etc/sysconfig/crontab 
/usr/bin/crontab 
/usr/share/man/man1/crontab.1.gz 
/usr/share/man/man1p/crontab.1p.gz 
/usr/share/man/man5/crontab.5.gz 
/usr/share/vim/vim71/syntax/crontab.vim 
[[email protected] nutch-0.9]# 
+1

Si potrebbe anche provare a porre questa domanda su serverfault. –

risposta

18

Sì, è sufficiente aggiungerlo agli utenti root 'crontab; eseguire il comando crontab -e.

I posti memorizzati da cron possono essere un po 'bizzarri, quindi utilizzare il comando crontab -e che si assicurerà che sia nel posto giusto e credo che controlli la sintassi.

+0

Ho elencato tutti i file crontab, che vuoi dire che dovrei modificare? – omg

+3

Invece di modificare direttamente un file crontab, whatsisname suggerisce di utilizzare il comando "crontab -e", che modificherà il crontab corretto. – ephemient

11

Si può solo fare

crontab -e 

come root.

0

Credo che tutte le voci in crontab di root vengano eseguite come root. Puoi semplicemente invocare uno script Bash come azione e dovrebbe fare ciò che vuoi.

-1

Un modo di fare questo (via sudo):

  1. È necessario impostare prilvileges sudo per l'account per l'esecuzione senza entrare nelle credenziali utente
  2. Add "sudo/path/to/comando "(senza") per eseguire il comando come root È inoltre possibile aggiungere i parametri al comando
4

Basta specificare root come l'utente per la voce in /etc/crontab:..

0 0 * * * root somecommand 

In alternativa è anche possibile aggiungere il comando al crontab personale di root utilizzando crontab -e come root.

+0

Grazie, BTW, potresti dirmi a cosa servono gli altri file di crontab? – omg

+1

Il file crontab in/usr/bin è l'eseguibile che apre un editor se si digita "crontab -e". I file sotto/usr/share/man sono le pagine del manuale che si ottengono quando si digita "man crontab". /usr/share/vim*/sytax/crontab.vim è l'evidenziazione della sintassi speciale per vim (attivata per i file crontab). – sth

+0

Questo non ha funzionato per me. Ho ricevuto il messaggio/bin/sh: 1root: non trovato – Lumbee

4

Indipendentemente da ciò, è necessario avere accesso all'account utente root.

  1. è possibile aggiungere al crontab di root, come suggerito
  2. è possibile utilizzare sudo, come suggerito
  3. è possibile utilizzare il bit setuid. Il problema con il bit setuid è che deve essere un programma compilato. Se è compilato, puoi "chmod 4755" e impostare il proprietario del file su root, che verrà eseguito come root. Se non è compilato, puoi scrivere un piccolo wrapper in C (o in qualsiasi altro linguaggio di programmazione compilato) che richiami semplicemente il tuo script, e setuid sul wrapper, e assicurati che il wrapper sia di proprietà di root.

Il mio consiglio? Usa root crontab. È quello per cui è lì.

Inoltre, non v'è alcuna voce utente nel crontab come suggerito dal qc ... la sintassi è:

# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23) 
# | | .---------- day of month (1 - 31) 
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
# | | | | | 
# * * * * * command to be executed 

Se volete inserire qualcosa nel crontab come root, basta accedere al tuo account di root, " crontab -e "e voilà ... radice crontab.

+0

In alcune versioni (più vecchie) di cron, c'è un utente specificato in crontab. Vedi http://www.unixgeeks.org/security/newbie/unix/cron-1.html – jschmier