Centos 7。通常、非ルート ユーザーとして sudo コマンドを実行したい場合は、visudo を開いて、適切な場所に次の行を追加します。
%<userGroup> ALL= NOPASSWD: <command>
サービス(今回の場合は mongodb.service)を jenkins ユーザーで再起動したい場合、次のようにします。
%jenkins ALL= NOPASSWD: /usr/bin/systemctl restart mongod.service
ここまでは順調です。次に、次のようにして Jenkins ユーザーに切り替えます。
sudo su -s /bin/bash jenkins
次にコマンドをテストすると、すべて正常に動作します。stop/status/start コマンドでも同じことを実行し、テストします。これらでやりたいことはこれだけです。問題は、Jenkins でテストを実行すると、これらのコマンドが呼び出され、何も行われないことです。この MongoDB はテスト専用なので、必要なときにのみ実行しても問題ありません。したがって、私が知りたいのは、これを動作させる方法、またはサービス ユーザーでサービスを再起動/停止/開始できるようにする方法です。
答え1
念のため、他の誰かが同じ種類の問題に遭遇した場合に備えて、これらのことに関してエラー メッセージが表示されなかったため、すべてをスクリプト ファイルに入れて、スクリプト ファイルを sudo 権限で実行するための許可を与えることにしました。その場合、次のエラー メッセージが表示されました: 「sudo: 申し訳ありませんが、sudo を実行するには tty が必要です」 これを使用して、次の解決策で問題を追跡できました: https://unix.stackexchange.com/questions/122616/why-do-i-need-a-tty-to-run-sudo-if-i-can-sudo-without-a-password