Получите файл sudoers, мгновенно работающий после перезагрузки в Ubuntu 20.04
Я пытаюсь выполнить команду ansible как задание cron на уровне пользователя, которое выглядит следующим образом:
@reboot /home/jon/.local/bin/ansible-playbook /home/jon/deactivate.ymlкуда
deactivate.ymlделает что-то, что потребует привилегий root. Следовательно, я отредактировал свой файл sudoers, чтобы он выглядел так, чтобы выполнить команду без необходимости передавать пароль sudo:
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
jon ALL=(root) NOPASSWD: /home/jon/.local/bin/ansible-playbook /home/jon/deactivate_proxy.yml`
После добавления этого в файл sudoers пользователь jon может успешно выполнить команду. При перезагрузке задание cron не выполняется успешно. Более того, я не могу выполнить саму команду после перезагрузки, так как меня предупреждают, что требуется пароль sudo. Однако при выполнении другой команды с помощью sudo (например,
sudo visudoили же
sudo -i) и передав правильные учетные данные, я могу выполнить предыдущую команду. Похоже, что строка, которую я добавил в файл sudoers, работает только после передачи пароля sudo в любое время перед выполнением моей команды ansible-playbook.
В чем причина такого поведения? Что я могу сделать, чтобы успешно выполнить мою команду после перезагрузки?
Редактировать: пользователь jon является частью группы sudo.
1 ответ
Этого недостаточно
jon ALL=(root) NOPASSWD: /home/jon/.local/bin/ansible-playbook playbook.yml
Цитата из Невозможно ограничить эскалацию определенными командами :
Разрешения на повышение привилегий должны быть общими. ...
Исправить sudoers, например
jon ALL=NOPASSWD: ALL