Я пытаюсь выполнить непредумующую команду как рабочую задание уровня пользователя, которая выглядит следующим образом:
@reboot /home/jon/.local/bin/ansible -Playbook /home/jon/deactivate.yml
где deactivate.yml
делает что-то, что нужно понадобиться привилегии корней.
Следовательно, я отредактировал файл My Sudoers через Sudo Visudo
, чтобы выглядеть так, чтобы выполнить команду без необходимости передавать пароль 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, пользователю Джон может успешно выполнять команду. При выполнении перезагрузки работа Cron не выполняется успешно. Более того, я не могу выполнить саму команду после выполнения перезагрузки, поскольку я предупреждаю, что пароль Sudo требуется.
Однако при выполнении другой команды с sudo (вроде sudo visudo
или sudo -i
) и передача правильных учетных данных, я могу выполнить прежнюю команду.
Похоже, что линия, которую я добавил в файл sudoers работает только после прохождения пароля sudo в любое время перед выполнением моей команды Ansible-Playbook.
Как причина этого поведения? Что я могу сделать, чтобы успешно выполнить мою команду после перезагрузки?
Редактировать: Пользователь Jon является частью группы Sudo.
Это недостаточно
jon ALL=(root) NOPASSWD: /home/jon/.local/bin/ansible-playbook playbook.yml
цитата из не может ограничить эскалацию к определенным командам :
Разрешения на привилегировании должны быть общие. ...
Исправление Sudoers , например
jon ALL=NOPASSWD: ALL