Jawaban:
Saya tidak akan membahas seberapa banyak ini adalah ide yang buruk; sederhananya, menjalankan sudo
di crontab membutuhkan kata sandi Anda untuk disimpan di suatu tempat di plaintext.
Itu ide yang buruk.
Berikut ini adalah metode yang disukai untuk menjalankan tugas administratif melalui cron. Karena Anda tidak benar-benar perlu menulis sudo
di crontab, jika Anda memodifikasi crontab root.
Jalankan perintah berikut:
sudo crontab -e
Ini membuka root
crontab. sudo
tidak perlu menjalankan perintah Anda dalam konteks ini, karena itu akan dipanggil sebagai root
pula.
Karena itu, Anda cukup menambahkan yang berikut ini ke crontab root.
@hourly rm somefile
Sekarang, jika Anda benar - benar ingin tidak aman dan mengambil risiko dengan kata sandi Anda, yang berikut ini akan menjalankan perintah Anda dari crontab Anda sendiri, dan memasukkan kata sandi Anda secara otomatis ketika diminta oleh sudo
.
Sekali lagi, ini tidak dianjurkan .
Di crontab Anda sendiri, tulis perintah Anda seperti ini:
@hourly echo "password" | sudo -S rm somefile
Kerugian yang jelas di sini adalah, jika ada yang pernah mengakses crontab Anda, kata sandi Anda akan dapat dibaca dalam plaintext.
Anda seharusnya tidak melakukan ini.
root
crontab pengguna alih-alih crontab seluruh sistem /etc/crontab
?
sudoers
file Anda , seperti grup sudo tanpa persyaratan kata sandi.
Jika Anda meletakkan skrip dari salah satu direktori cron ( /etc/cron.*
) maka Anda tidak perlu menggunakan sudo karena itu dijalankan sebagai root.
Jika Anda menggunakan crontab, maka Anda ingin menggunakan crontab root. Ini akan menjalankannya sebagai root, dan juga tidak perlu sudo.
sudo crontab -e
Jalankan perintah berikut di terminal
sudo visudo
Menambahkan baris berikut ke akhir file:
vidyadhar ALL= NOPASSWD: /bin/rm
Dalam contoh di atas vidyadhar adalah nama pengguna dan tidak akan meminta kata sandi jika Anda menjalankan perintah rm melalui vidyadhar.
sudo rm -rf 'slash'
( jangan jalankan perintah itu ), jalankan dari pengguna itu, tidak memerlukan kata sandi .. Saya tidak tahu, rasanya tidak aman, bukan?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
akan lebih aman.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, yang akan jauh lebih aman.