Saya tidak akan membahas seberapa banyak ini adalah ide yang buruk; sederhananya, menjalankan sudodi 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 sudodi crontab, jika Anda memodifikasi crontab root.
Gunakan crontab root
Jalankan perintah berikut:
sudo crontab -e
Ini membuka rootcrontab. sudotidak perlu menjalankan perintah Anda dalam konteks ini, karena itu akan dipanggil sebagai rootpula.
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.
Senang itu berhasil! Berhati-hatilah dengan lubang keamanan yang Anda tinggalkan .. Mereka mungkin akan kembali nanti untuk menghantui Anda.
SirCharlo
1
@ SirCharlo Mengapa menggunakan rootcrontab pengguna alih-alih crontab seluruh sistem /etc/crontab?
Eliah Kagan
1
@ Elia mengapa tidak?
SirCharlo
2
Jawaban ini meleset dari sasaran karena bercahaya di atas seluk-beluk yang tersedia di sudoersfile Anda , seperti grup sudo tanpa persyaratan kata sandi.
brent
Poin yang sangat sangat berguna, terima kasih atas bantuannya.
Nasser Mansouri
33
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.
Saya juga akan menempatkan perintah di /etc/cron.hourly/something. Itulah gunanya direktori ini.
John S Gruber
3
Tidak. Anda bisa memasukkannya ke /etc/cron.SOMETHING/SCRIPT, tapi saya tidak akan melakukan keduanya. Keduanya akan memberikan fungsi yang kira-kira sama, walaupun menggunakan crontab Anda akan memiliki sedikit lebih banyak kekuatan atas seberapa sering / ketika hal-hal berjalan.
tgm4883
1
Seharusnya aku menjelaskan bahwa maksudku itu sebagai alternatif. Terima kasih.
John S Gruber
3
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.
Hmm .. Lalu perintah jahat apa pun, seperti sudo rm -rf 'slash'( jangan jalankan perintah itu ), jalankan dari pengguna itu, tidak memerlukan kata sandi .. Saya tidak tahu, rasanya tidak aman, bukan?
SirCharlo
Ya saya tahu itu. Pendekatanmu bagus. Tetapi saya menggunakan pendekatan di atas untuk memberikan hak kepada pengguna lain untuk menghentikan / memulai layanan tertentu.
Vidyadhar
24
Ini ide yang sangat buruk. Tolong jangan lakukan ini.
bkanuka
2
Mungkin vidyadhar ALL= NOPASSWD: /bin/rm somefileakan lebih aman.
Wernfried Domscheit
Ini ide yang buruk. Anda memberi blanko sudo kepada rm. Alih-alih, berikan sudo izin untuk skrip perintah Anda, termasuk rm atau yang lain dalam skrip itu, buat itu dapat dieksekusi, lalu berikan izin sudo ke skrip itu. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, yang akan jauh lebih aman.
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.Gunakan crontab root
Jalankan perintah berikut:
Ini membuka
root
crontab.sudo
tidak perlu menjalankan perintah Anda dalam konteks ini, karena itu akan dipanggil sebagairoot
pula.Karena itu, Anda cukup menambahkan yang berikut ini ke crontab root.
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:
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.
sumber
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.
sumber
Jalankan perintah berikut di terminal
Menambahkan baris berikut ke akhir file:
Dalam contoh di atas vidyadhar adalah nama pengguna dan tidak akan meminta kata sandi jika Anda menjalankan perintah rm melalui vidyadhar.
sumber
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.