Odpowiedzi:
Nie będę się zastanawiał, jak bardzo to zły pomysł; najprościej mówiąc, uruchamianie sudo
w 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ć sudo
w pliku crontab, jeśli modyfikujesz plik crontab roota.
Uruchom następujące polecenie:
sudo crontab -e
To otwiera root
crontab. sudo
nie 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ć.
root
z crontab użytkownika zamiast crontab z całego systemu /etc/crontab
?
sudoers
pliku, 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 somefile
byłoby bardziej bezpieczne.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, co byłoby znacznie bezpieczniejsze.