允许特定用户执行 sudo 特定命令而无需输入密码

允许特定用户执行 sudo 特定命令而无需输入密码

为了开发游戏服务器,我希望将git push当前的稳定版转为私人 VPS。在 git-hook 内部receive应该发生以下情况

sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver

在 myserver.service 内,编译的二进制文件以有权访问 git-repository 的用户身份运行。

我现在的想法是用 root 拥有且每个人都可读的脚本替换第一行和最后一行,这样 git-hookreceive就会变成

sudo stop-server.sh 
dotnet publish --configuration release
sudo start-server.sh

作为最后一步,我希望允许用户权限 sudo 调用这两个脚本,但仅此而已。此外,由于无法进行交互,因此在没有 sudo 的情况下执行脚本时会询问用户密码。

答案1

您可以将以下内容附加到/etc/sudoers(或在其中创建一个新文件/etc/sudoers.d/):

<username> ALL=(ALL) NOPASSWD: /path/to/script

这将使用户运行sudo /path/to/script<username>无需密码。请注意,如果恶意用户可以修改脚本的内容,那么它是不安全的,并且您最好尝试完全避免需要 root 权限。

相关内容