ログインのような機能をsuPHPのファイルアクセス許可を使用するように設計するにはどうすればいいですか?たとえば、www.example.com
というウェブサイトと、自分のホームディレクトリを持つ次の2人のユーザーが、それぞれtest.php
とvalidateUser.php
というスクリプト(root、www-data、apache ...)に属するスクリプトを/home
ディレクトリ。suPHPの横にログを実装する
/home/ ├── validateUser.php ├── user1 │ └── test.php └── user2 └── test.php
user1
www.example.com/user2/test.php
を訪問してuser2's
スクリプトにアクセスし、またはその逆ができます。代わりに、mod_rewriteのようなものを使用して、すべての着信要求をvalidateUser.php
に転送することが私の欲しいものです。ただし、これを実行すると、test.php
スクリプトではなく、すべてのスクリプトをvalidateUser.php
の所有者として実行することになります。
suPHPが起動する前にPHPスクリプトを呼び出してから、suPHPを続行するか、完全に中止するかを許可するかどうかを指定します。
EDITこれは私が我慢しています第二の恩恵です。最初私はGustavに与えたb/c彼は良いを与えたpartial answer。これまでに何を試みたのか、なぜ私のために働くのかについては言及しません。
1)mod_rewriteを使用して、URLをvalidateUser.php
にリダイレクトして、ユーザーをログインさせるか、呼び出したいスクリプトを呼び出してみました。問題は、各ユーザーが自分の仮想サイト(つまり、www.user1.example.com
、www.user2.example.com
...これが悪い設計アプローチの場合は、それを馬鹿げて指摘することが自由である)を自分の仮想ホストに設定したことです。 OSは、上記のようなファイル構造を見ているもののそのため、オンライン、ルートディレクトリには、そのような
VirtualHost = www.user1.example.com
├── validateUser.php
└── test.php
VirtualHost = www.user2.example.com
├── validateUser.php
└── test.php
として当然のことながら、私はちょうど、すべてのユーザーのディレクトリにvalidateUser.php
のコピーを移動設定されています。問題は、ユーザーがそのファイルを削除して、そこに必要なものを置くことができるようになりました。まったくログインしないようにすることができます。これを回避する方法は、ホームフォルダをスティッキーにすることです(ホームフォルダにすることを推奨するものではありません)。validateUser.php
をrootが所有するようにします。しかし、これはsuPHPなのでASルートで実行されます。それは私があきらめたところです。
2)私はGustavのmod_auth
の提案を使用することができましたが、私は古い学校のウェブサイトのようにパスワードを要求するのが好きではありません。
3)仮想ホスト間でリダイレクトできる場合は、1)に変えてみました。例えば、
VirtualHost = www.user1.example.com
└── test.php
VirtualHost = www.user2.example.com
└── test.php
VirtualHost = www.admin.example.com
└── validateUser.php
が続いwww.admin.example.com/validateUser.php
にユーザーからのすべてのトラフィックをリダイレクトするmod_rewriteを使用しそうのような仮想ホストを再構築し、ユーザーは(ログインが成功した場合または)ユーザが戻ってリダイレクトされるログインしている場合彼らが最初にログインしようとしたサイト。これの利点は、たとえ可能であれば、ユーザーが自分の仮想ホストに戻ってくるまでsuPHPが起動しないということです。
私の質問には解決策がないと確信していますhttp://stackoverflow.com/a/9561335/654789 – puk