Получите файл 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
Другие вопросы по тегам