以下を含むGentoo 3.2.12サーバーでapache2+php
:
/www
/website1
/website2
...etc
ユーザーはapache
すべてのサイトに対して読み取り専用アクセス権を持っている必要があります。また、各Webサイトには、apache
読み書きアクセスが必要ないくつかのフォルダ(アップロードフォルダなど)があります。
このサイトには複数の人が働いています。誰もが自分の作業サイトへの読み取りおよび書き込みアクセス権を持っている必要がありますが、他の人はそうではありません。また、特定のフォルダに書き込む(サイト内で)権限を設定できる必要がありますapache
(新しいアップロードフォルダなどを作成する場合)。
/www
他のユーザーはまったくアクセスできないはずです。
これは可能ですか?どうすればいいですか?
(PS.そして…これらの人々はPHPスクリプトをアップロードしてからApacheコンテキストで実行できるので、他のWebサイトにも間接的にアクセスできるようです…これも保証されるのでしょうか? ...)
答え1
1つの方法は次のとおりです。
- 各サイトにはそのグループの人々のためのグループがあるので、
umask 0002
彼らが作成したファイルはデフォルトでそのグループから読み書きすることができ、他の人も読むことができます。 chmod a-rwx
許可されたグループ外の人々のアクセスを防ぐための各サイトのルートディレクトリ。setfacl -m user:apache:rx
ユーザーに他の権限に加えて読み取りアクセスを許可するには、ファイルシステムとこのディレクトリに対してACLを有効にします。apache
Apacheプロセスで生成されたファイルは次のとおりです。
- 関連グループは、誰でも読みやすいように作成されている場合に限り、Apacheユーザーが作成したファイルを読み取ることができるはずです。
- グループ書き込み可能ディレクトリにあるファイルは削除できます。
- 十分でない場合は、ユーザーが
sudo
Apacheユーザーを使用できるようにすることができます。 ACLを使用してグループ書き込み権限を追加するなど、特定のコマンドを実行するためのものでもあります。
しかし、あなたが言ったように、ユーザーが任意のスクリプトをApacheユーザーとして実行できる場合は、すべての読み取り制限をバイパスできます。この問題を解決するには、そのグループの特定のユーザーとしてサイトのスクリプトを実行してみてください。私はこれを設定する方法があると思いますmod_fcgid
。そうでなければあなたに役立つapache[suexec]
かもしれません。php[cgi]
より良い分離のためには、複数のApacheプロセスが必要です。別のユーザーとして実行する必要があり、別のディレクトリにchrootすることもできます。別のOpenVZデバイス、別のXen domU、または別のハードウェアにあります。ご覧のとおり、さまざまな分離レベルがあり、各レベルは以前のレベルよりも優れた分離を提供しますが、より多くのリソースが必要です。
答え2
一般的な解決策はスーパーPHP。