Javaでシステムサービスを開発しており、デプロイのために次のことをしたいと思います。
- ビルドから新しいInitdをコピーする
- 展開サービスの停止
- 新しいJAR/構成例の上書き/コピー
- サービスを開始します。
Jenkinsにrootアクセスを許可せずにこれを行う方法はありますか? [jenkins以外の人の場合:Jenkinsはレプリケーションとコマンドの転送にSCPとSSHを使用します。]私が懸念しているのは、Jenkinsのルートアクセスを許可しても許可された権限が制限されないことです。その範囲は、そのサービスを1つだけに変更を制限することです。 (他のサービスに依存しない)
解決策がより難しくなる可能性があるので、最初の要件を軽減します。
答え1
一つある珍しい 質問ユーザーに root としてスクリプトを実行させる方法 ( sudo を使用するなど) は、すでにこのサイトで説明しています。デフォルトでは、手順2〜4(例service foo stop; cp -f ~jenkins/service.init /etc/init.d/; service foo start
:)を実行するスクリプトを作成し、jenkinsユーザーにスクリプトに対するNOPASSWD権限を付与する必要があります。/etc/sudoers
。
しかし、基本的にJenkins初期化スクリプトのインストール再起動時にinitスクリプトがrootとして実行されるため、Jenkins(および生成スクリプトへの入力を変更してジョブを再実行できるすべての人)にフルrootアクセス権を付与するのと同じです。