特定のユーザーにパスワードを入力せずに特定のコマンドを sudo で実行することを許可する

特定のユーザーにパスワードを入力せずに特定のコマンドを sudo で実行することを許可する

ゲームサーバーを開発するために、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>。スクリプトの内容が悪意のあるユーザーによって変更される可能性がある場合は安全ではないため、ルート権限を必要としないようにする方がよいことに注意してください。

関連情報