ゲームサーバーを開発するために、git push
現在の安定版をプライベートVPSに移行したい。gitフック内では、receive
次のようになるはずだ。
sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver
myserver.service 内では、コンパイルされたバイナリは、git リポジトリにアクセスできるユーザーとして実行されます。
私の考えでは、最初の行と最後の行をrootが所有し誰でも読めるスクリプトに置き換えて、gitフックを次receive
のように変更する。
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>
。スクリプトの内容が悪意のあるユーザーによって変更される可能性がある場合は安全ではないため、ルート権限を必要としないようにする方がよいことに注意してください。