尽管我设置了 visudo,但执行 sudo 命令仍然询问密码

尽管我设置了 visudo,但执行 sudo 命令仍然询问密码

我正在通过 ssh 使用 rsync 配置远程部署,并且需要在没有密码的情况下执行 sudo 命令。

这是我的视觉:

# Allow user to execute specified commands without password
Cmnd_Alias USER_SERVICES = /bin/systemctl reload nginx, /usr/sbin/nginx
-t
[user] ALL=(ALL) NOPASSWD:USER_SERVICES

通过此设置,我可以确认可以手动执行指定的命令(我输入这些命令),而无需密码提示,但每当在脚本文件上运行该命令(如下所示)时,它都会询问我密码。

#! /bin/bash

...
sudo systemctl reload nginx
...

在这种情况下如何避免密码提示?

答案1

这两个命令systemctl reload nginx/bin/systemctl reload nginx并不相同。第一个依赖于环境变量中包含的目录PATH,而第二个则不依赖于环境变量中包含的目录。

这些sudoers文件使您能够使用/bin/systemctl reload nginx,因此这就是您应该使用的。

相关内容