特定のユーザーがパスワードを入力しなくても sudo 固有のコマンドを実行できるようにする

特定のユーザーがパスワードを入力しなくても sudo 固有のコマンドを実行できるようにする

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権限を完全に要求しない方が良いでしょう。

関連情報