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.
Użyj 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.
Umieściłbym również polecenie w /etc/cron.hourly/something. Po to są te katalogi.
John S Gruber,
3
Nie. Możesz umieścić go w /etc/cron.SOMETHING/SCRIPT, ale nie zrobiłbym obu. Oba dałyby mniej więcej tę samą funkcję, chociaż używając crontab miałbyś nieco większą moc nad tym, jak często / kiedy rzeczy działają.
tgm4883,
1
Powinienem był wyjaśnić, że miałem na myśli to jako alternatywę. Dzięki.
John S Gruber,
3
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.
Hmm .. Więc każde złośliwe polecenie, takie jak sudo rm -rf 'slash'( nie uruchamiaj tego polecenia ), uruchamiane od tego użytkownika, nie wymagałoby hasła. Nie wiem, wydaje się niebezpieczne, nie?
SirCharlo,
Tak, wiem o tym. Twoje podejście jest dobre. Ale używam powyższego podejścia do nadawania uprawnień innemu użytkownikowi do zatrzymania / uruchomienia niektórych usług.
Vidyadhar,
24
To bardzo zły pomysł. Proszę nie rób tego.
bkanuka
2
Może vidyadhar ALL= NOPASSWD: /bin/rm somefilebyłoby bardziej bezpieczne.
Wernfried Domscheit
To okropny pomysł. Dałeś uprawnień koc sudo do RM. Zamiast tego, daj uprawnienia sudo do skryptu, w którym masz komendę, włączając w to rm lub inne w tym skrypcie, uczyń go wykonywalnym, a następnie daj uprawnienia sudo do tego skryptu. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, co byłoby znacznie bezpieczniejsze.
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.Użyj crontab roota
Uruchom następujące polecenie:
To otwiera
root
crontab.sudo
nie jest konieczne uruchamianie polecenia w tym kontekście, ponieważ i tak zostanie ono wywołaneroot
.Dlatego po prostu dołączałbyś następujące do crontab roota.
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:
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ć.
źródło
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.
źródło
Uruchom następujące polecenie w terminalu
Dodano następujący wiersz na końcu pliku:
W powyższym przykładzie vidyadhar jest nazwą użytkownika i nie prosi o hasło, jeśli uruchamiasz komendę rm przez vidyadhar.
źródło
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.