为了开发游戏服务器,我想将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-invoke 两个脚本,但仅此而已。此外,在没有 sudo 的情况下执行的脚本会询问用户密码,因为不可能进行交互。
您可以将以下内容附加到
/etc/sudoers
(或在其中创建一个新文件/etc/sudoers.d/
):这将使以无密码用户
sudo /path/to/script
身份运行。<username>
请注意,如果脚本的内容可以被恶意用户修改,这是不安全的,您最好尽量避免完全需要 root 权限。