web-dev-qa-db-ja.com

Apacheが共有環境のファイルに安全にアクセスできるようにアクセス許可を構成するにはどうすればよいですか?

これは私の以前のフォローアップの質問ですが、Linuxベースの方が多いのではないかと感じました。

https://serverfault.com/questions/414207/how-to-set-linux-permissions-to-allow-Apache-to-have-access-to-a-file

私の学校には、複数のユーザーと複数のグループがいる共有サーバー環境があります。

関連グループ:

students

daemon(Apacheを実行)

生徒が自分の所有するファイルに完全にアクセスできるようにし、他の生徒のファイルにはアクセスできないようにしたいのです。2人の異なる生徒がお互いのファイルを見ることさえできないようにする必要があります。

また、Apacheがすべての学生ファイルを読み取って実行できるようにしたいと思います。具体的には、Apacheが各学生が所有するパスワードファイルを読み取れるようにし、パスワードファイルの所有者にもフルアクセス権を持たせたいと考えています。

私の理解では、これを行う最善の方法は、パスワードファイルのグループ所有者をApacheに変更することです。

だからこれを読んだ後、

https://serverfault.com/questions/357108/what-are-the-best-linux-permissions-to-use-for-my-website

単純なchgrpで修正できるようです。

しかし、私はこれに遭遇します:

この操作を使用するには、ファイルの所有者であると同時に、宛先グループ(またはルート)のメンバーである必要があります。

したがって、各学生はデーモングループの一部ではないため、このコマンドを実行することはできません。そのグループを彼らに与えることは、彼らが他の学生のパスワードファイルも見ることができるという点で無意味でしょう。

前のスレッドから、現在のセキュリティ設定が不適切であることがわかり、システム管理者とのミーティングを予定しています。

しかし、システム管理者に何を依頼すればよいのかまだわかりません。

サーバー上のすべてのパスワードファイルのアクセス許可を手動で変更するように彼に依頼することはできません。ファイル名と場所が異なり、多くの学生はまだ設定されていません。

学生にchgrpへのフルアクセスを許可することは危険なようですが、

私の傾向は、学生にファイルの入力を求め、学生の代わりにchgrpを実行して、Apacheグループの所有権を与えるようなスクリプトを作成するように彼に求めているようです。これは実行可能に思えますが、私はまだLinuxに慣れていないので、かなり複雑でもあります。彼はこのようなことを簡単に行うことができるでしょうか?

ACLについても検討しましたが、私の考えはchgrpに戻り、学生にsetaclへのアクセスを許可することは危険なようです。

5
Ray

ACLがその答えです。学生はsetfaclを実行するために特別な権限を必要としません。ユーザーは、自分が所有する任意のファイルのACLを設定できます。

ACL用にシステムを設定する必要がある場合は、 ディレクトリ内のすべての新しいファイルをグループからアクセスできるようにする を参照してください。

Apacheにアクセスできるファイルが必要な場合は、実行する必要があることを生徒に伝えます

setfacl -m group:daemon:r ~/path/to/password.file
setfacl -m group:daemon:x ~ ~/path ~/path/to

これらのディレクトリ内のファイル(サブディレクトリを含む)にアクセスするには、ディレクトリに対するx権限が必要です。