ターゲットディレクトリに対する権限がない場合は、Jenkinsの「ビルド後」アクションにファイルをコピーする方法

ターゲットディレクトリに対する権限がない場合は、Jenkinsの「ビルド後」アクションにファイルをコピーする方法

次のユーザー「スキーマ」があります。

  1. ルートアクセスが無効になっています。
  2. 管理者ユーザーは自分のホームディレクトリにのみアクセスできます。
  3. Apacheはルートサービスとして実行されます(ルートはWebサーバーファイルにアクセスできる唯一のサービスです)。
  4. Jenkins CIをインストールし、「管理者」権限でプロジェクトを構築しています。

ビルド後の作業で、最新のビルドファイルを私のWebサーバーの場所にコピーしたいと思います。 「root」ユーザーだけが自分のターゲットディレクトリにアクセスできる場合、どうすればこれを達成できますか?たぶん私の「ユーザースキーマ」が最初から間違っていたのでしょうか?

答え1

たぶん私の「ユーザースキーマ」が最初から間違っていたのでしょうか?

はい。あなたにそれを破るのが嫌いですが、それはすべてです。どうやって変えるべきですか?

  1. 可能であれば、chrootで自分のユーザーとしてApacheを実行してください。これを最小権限の原則といいます。これは、何かが損傷した場合に発生する可能性があるダメージを制限することです。何かを仮定する〜するそこで妥協し、働きなさい。特権ユーザーとしてApacheを実行する理由はありません。
  2. Jenkins CIを自分のユーザーとして実行します。同じ原則が適用されます。
  3. ファイルがWebサーバーディレクトリに到達する方法を提供します。たとえば、JenkinsユーザーをApacheグループに追加できます。これにより、JenkinsビルドサーバーにWebサーバーディレクトリへのアクセス権が付与されます。より安全な方法は、Apacheユーザーとしてcronジョブまたはsystemdタイマーを実行し、それを使用してファイルをコピーすることです。なぜこれがより安全ですか? Jenkinsが破損すると、攻撃者はWebサーバーディレクトリにアクセスできなくなります。

関連情報