Відповіді:
Я не буду вникати, наскільки це погана ідея; Простіше кажучи, для запуску sudoв crontab потрібен ваш пароль зберігатися десь у простому тексті.
Це погана ідея.
Далі подано кращий метод виконання адміністративних завдань через cron. Оскільки вам не потрібно писати sudoв crontab, якщо ви змінюєте crontab root.
Виконайте таку команду:
sudo crontab -e
Це відкриває rootкронтаб. sudoне потрібно запускати свою команду в цьому контексті, оскільки вона буде викликана як rootінакше.
Тому ви просто додасте наступне до кронати кореня.
@hourly rm somefile
Тепер, якщо ви абсолютно хочете бути небезпечними та ризикувати своїм паролем, наступне запустить вашу команду зі свого власного crontab та введе ваш пароль автоматично, коли буде запропоновано sudo.
Знову ж таки, це не рекомендується .
У власному crontab напишіть свою команду так:
@hourly echo "password" | sudo -S rm somefile
Очевидним недоліком тут є те, що якщо хто-небудь коли-небудь матиме доступ до вашого crontab, ваш пароль буде читабельний у простому тексті.
Ти не повинен цього робити.
rootcrontab користувача 'замість загальносистемного crontab /etc/crontab?
sudoersфайлі, як групи судо без вимоги пароля.
Якщо ви розміщуєте скрипт з одного з директорій cron ( /etc/cron.*), вам не потрібно використовувати sudo, оскільки він працює як root.
Якщо ви використовуєте crontab, тоді вам потрібно буде використовувати crontab root. Це запустить його як root, а також не потребуватиме sudo.
sudo crontab -e
Виконайте наступну команду в терміналі
sudo visudo
До кінця файлу додано наступний рядок:
vidyadhar ALL= NOPASSWD: /bin/rm
У наведеному вище прикладі vidyadhar - це ім'я користувача, і він не буде запитувати пароль, якщо ви виконуєте команду rm через vidyadhar.
sudo rm -rf 'slash'( не запускайте цю команду ), запускається від цього користувача, не вимагає пароля .. Я не знаю, це почувається небезпечно, ні?
vidyadhar ALL= NOPASSWD: /bin/rm somefileбуло б більш безпечно.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, що було б набагато безпечніше.