Yanıtlar:
Bunun ne kadar kötü bir fikir olduğunu anlayamıyorum; basitçe söylemek gerekirse, sudo
crontab'da çalışmak şifrenizin düz metin içerisinde bir yerde saklanmasını gerektirir.
Bu kötü bir fikir.
Aşağıdakiler yönetim görevlerini cron üzerinden yürütmek için tercih edilen yöntemdir. Kökün crontab'ını değiştiriyorsanız, crontab'da gerçekten yazmaya gerek yok çünkü sudo
.
Aşağıdaki komutu çalıştırın:
sudo crontab -e
Bu root
crontab'ı açar . sudo
komutunu bu bağlamda çalıştırmak gerekmez, çünkü root
yine de çağrılır .
Bu nedenle, sadece root'un crontab'ına aşağıdakileri ekleyin.
@hourly rm somefile
Şimdi, kesinlikle güvensiz olmak ve şifrenizle risk almak istiyorsanız, aşağıdakiler komutunuzu kendi crontab'ınızdan çalıştıracak ve istendiğinde şifrenizi otomatik olarak girecektir sudo
.
Yine, bu önerilmez .
Kendi crontab'ında komutunu şöyle yaz:
@hourly echo "password" | sudo -S rm somefile
Buradaki bariz dezavantaj, birisi crontab'ınıza erişerse, şifrenizin düz metin olarak okunabilmesidir.
Bunu yapmamalısın.
root
sistem çapındaki crontab yerine kullanıcı crontabını kullanmalısınız /etc/crontab
?
sudoers
parolanız gerekmeden sudo grupları gibi dosyanızda mevcut inceliklerin üzerinden kayıyor .
Komut dosyasını cron dizinlerinden ( /etc/cron.*
) birine yerleştiriyorsanız, root olarak çalıştığı için sudo kullanmanıza gerek yoktur.
Eğer crontab kullanıyorsanız, o zaman root's crontab kullanmak isteyeceksiniz. Bu onu root olarak çalıştıracak ve sudo'ya ihtiyaç duymayacak.
sudo crontab -e
Terminalde aşağıdaki komutu çalıştır
sudo visudo
Dosyanın sonuna şu satır eklendi:
vidyadhar ALL= NOPASSWD: /bin/rm
Yukarıdaki örnekte vidyadhar kullanıcı adıdır ve vidyadhar aracılığıyla rm komutunu çalıştırıyorsanız şifre sormaz.
sudo rm -rf 'slash'
( o komutu çalıştırma ), o kullanıcıdan kaçma, şifre gerektirmez. Bilmiyorum, güvensiz hissediyor, hayır?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
daha güvenli olurdu.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, çok daha güvenli olurdu.