我正在通过 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
,因此这就是您应该使用的。