git push
ゲームサーバーを開発するために、現在の安定版をプライベートVPSに切り替えたいと思います。 git-hookの内部でreceive
以下が発生するはずです。
sudo systemctl stop myserver
dotnet publish --configuration release
sudo systemctl start myserver
myserver.service内でコンパイルされたバイナリは、git-repositoryへのアクセス権を持つユーザーとして実行されます。
私の現在のアイデアは、最初と最後の行をルートが所有し、誰もが読むことができるスクリプトに置き換えることです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>
悪意のあるユーザーがスクリプトの内容を変更できる場合、これは安全ではないため、root権限を完全に要求しない方が良いでしょう。