Odpowiedzi:
Nie będę się zastanawiał, jak bardzo to zły pomysł; najprościej mówiąc, uruchamianie sudow crontab wymaga, aby twoje hasło było przechowywane gdzieś w postaci zwykłego tekstu.
To zły pomysł.
Poniżej przedstawiono preferowaną metodę uruchamiania zadań administracyjnych za pośrednictwem crona. Ponieważ tak naprawdę nie musisz pisać sudow pliku crontab, jeśli modyfikujesz plik crontab roota.
Uruchom następujące polecenie:
sudo crontab -e
To otwiera rootcrontab. sudonie jest konieczne uruchamianie polecenia w tym kontekście, ponieważ i tak zostanie ono wywołane root.
Dlatego po prostu dołączałbyś następujące do crontab roota.
@hourly rm somefile
Teraz, jeśli absolutnie chcesz być niebezpieczny i podejmować ryzyko związane z hasłem, następujące polecenie uruchomi polecenie z własnego pliku crontab i automatycznie wprowadzi hasło po wyświetleniu monitu sudo.
Ponownie nie jest to zalecane .
Napisz na swoim crontabie polecenie tak:
@hourly echo "password" | sudo -S rm somefile
Oczywistą wadą jest to, że jeśli ktokolwiek kiedykolwiek uzyska dostęp do twojego crontab, twoje hasło będzie czytelne w postaci zwykłego tekstu.
Nie powinieneś tego robić.
rootz crontab użytkownika zamiast crontab z całego systemu /etc/crontab?
sudoerspliku, takie jak grupy sudo bez hasła.
Jeśli wstawiasz skrypt z jednego z katalogów cron ( /etc/cron.*), nie musisz używać sudo, ponieważ działa on jako root.
Jeśli używasz crontab, to będziesz chciał użyć crontab roota. Spowoduje to uruchomienie go jako root, a także nie będzie potrzebował sudo.
sudo crontab -e
Uruchom następujące polecenie w terminalu
sudo visudo
Dodano następujący wiersz na końcu pliku:
vidyadhar ALL= NOPASSWD: /bin/rm
W powyższym przykładzie vidyadhar jest nazwą użytkownika i nie prosi o hasło, jeśli uruchamiasz komendę rm przez vidyadhar.
sudo rm -rf 'slash'( nie uruchamiaj tego polecenia ), uruchamiane od tego użytkownika, nie wymagałoby hasła. Nie wiem, wydaje się niebezpieczne, nie?
vidyadhar ALL= NOPASSWD: /bin/rm somefilebyłoby bardziej bezpieczne.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, co byłoby znacznie bezpieczniejsze.