在 Ubuntu 20.04 中重启后让 sudoers 文件立即生效

在 Ubuntu 20.04 中重启后让 sudoers 文件立即生效

我正在尝试将 ansible 命令作为用户级 cron 作业执行,如下所示:

@reboot /home/jon/.local/bin/ansible-playbook /home/jon/deactivate.yml 正在deactivate.yml执行需要 root 权限的操作。因此,我通过sudo visudo以下方式编辑了 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 文件后,用户乔恩能够成功执行命令。重新启动时,cron 作业无法成功执行。此外,在执行重新启动后,我无法执行命令本身,因为我收到警告,要求输入 sudo 密码。但是,当使用 sudo 执行另一个命令(如sudo visudosudo -i)并传递正确的凭据时,我能够执行前一个命令。似乎我添加到 sudoers 文件中的行仅在执行我的 ansible-playbook 命令之前的任何时间传递 sudo 密码后才有效。

出现这种情况的原因是什么?重启后我该怎么做才能成功执行命令?

编辑:用户 jon 是 sudo 组的一部分。

答案1

这还不够

jon ALL=(root) NOPASSWD: /home/jon/.local/bin/ansible-playbook playbook.yml

引自无法将升级限制到某些命令

权限提升的权限必须是通用的。......

使固定sudoers例如

jon ALL=NOPASSWD: ALL

相关内容