Risposte:
Non capirò quanto questa sia una cattiva idea; in poche parole, l'esecuzione sudo
in crontab richiede che la password sia memorizzata da qualche parte in testo normale.
È una cattiva idea.
Di seguito è riportato il metodo preferito per eseguire attività amministrative tramite cron. Dal momento che non hai davvero bisogno di scrivere sudo
nel crontab, se stai modificando il crontab di root.
Esegui il seguente comando:
sudo crontab -e
Questo apre il root
crontab. sudo
non è necessario eseguire il comando in questo contesto, poiché verrà invocato come root
comunque.
Pertanto, dovresti semplicemente aggiungere quanto segue al crontab di root.
@hourly rm somefile
Ora, se vuoi assolutamente essere sicuro e correre rischi con la tua password, quanto segue eseguirà il tuo comando dal tuo crontab e inserirà automaticamente la tua password quando richiesto sudo
.
Ancora una volta, questo non è raccomandato .
Nel tuo crontab, scrivi il tuo comando in questo modo:
@hourly echo "password" | sudo -S rm somefile
L'ovvio svantaggio qui è che, se qualcuno dovesse mai accedere al tuo crontab, la tua password sarà leggibile in chiaro.
Non dovresti farlo.
root
il crontab dell'utente invece del crontab a livello di sistema /etc/crontab
?
sudoers
file, come i gruppi sudo senza necessità di password.
Se stai inserendo lo script da una delle directory cron ( /etc/cron.*
), non è necessario utilizzare sudo poiché è in esecuzione come root.
Se stai usando crontab, allora vorrai usare crontab di root. Questo lo eseguirà come root e non avrà nemmeno bisogno di sudo.
sudo crontab -e
Eseguire il comando seguente nel terminale
sudo visudo
Aggiunta la seguente riga alla fine del file:
vidyadhar ALL= NOPASSWD: /bin/rm
Nell'esempio sopra vidyadhar è il nome utente e non chiederà la password se si esegue il comando rm tramite vidyadhar.
sudo rm -rf 'slash'
( non eseguire quel comando ), eseguito da quell'utente, non richiederebbe alcuna password .. Non lo so, sembra pericoloso, no?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
sarebbe più sicuro.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, che sarebbe molto più sicuro.