次のユーザー「スキーマ」があります。
- ルートアクセスが無効になっています。
- 管理者ユーザーは自分のホームディレクトリにのみアクセスできます。
- Apacheはルートサービスとして実行されます(ルートはWebサーバーファイルにアクセスできる唯一のサービスです)。
- Jenkins CIをインストールし、「管理者」権限でプロジェクトを構築しています。
ビルド後の作業で、最新のビルドファイルを私のWebサーバーの場所にコピーしたいと思います。 「root」ユーザーだけが自分のターゲットディレクトリにアクセスできる場合、どうすればこれを達成できますか?たぶん私の「ユーザースキーマ」が最初から間違っていたのでしょうか?
答え1
たぶん私の「ユーザースキーマ」が最初から間違っていたのでしょうか?
はい。あなたにそれを破るのが嫌いですが、それはすべてです。どうやって変えるべきですか?
- 可能であれば、chrootで自分のユーザーとしてApacheを実行してください。これを最小権限の原則といいます。これは、何かが損傷した場合に発生する可能性があるダメージを制限することです。何かを仮定する〜するそこで妥協し、働きなさい。特権ユーザーとしてApacheを実行する理由はありません。
- Jenkins CIを自分のユーザーとして実行します。同じ原則が適用されます。
- ファイルがWebサーバーディレクトリに到達する方法を提供します。たとえば、JenkinsユーザーをApacheグループに追加できます。これにより、JenkinsビルドサーバーにWebサーバーディレクトリへのアクセス権が付与されます。より安全な方法は、Apacheユーザーとしてcronジョブまたはsystemdタイマーを実行し、それを使用してファイルをコピーすることです。なぜこれがより安全ですか? Jenkinsが破損すると、攻撃者はWebサーバーディレクトリにアクセスできなくなります。