2011-11-07 3 views
7

ログインのような機能をsuPHPのファイルアクセス許可を使用するように設計するにはどうすればいいですか?たとえば、www.example.comというウェブサイトと、自分のホームディレクトリを持つ次の2人のユーザーが、それぞれtest.phpvalidateUser.phpというスクリプト(root、www-data、apache ...)に属するスクリプトを/homeディレクトリ。suPHPの横にログを実装する

 
/home/ 
├── validateUser.php 
├── user1 
│   └── test.php 
└── user2 
    └── test.php 

user1www.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.comwww.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が起動しないということです。

+0

私の質問には解決策がないと確信していますhttp://stackoverflow.com/a/9561335/654789 – puk

答えて

2

mod_authを使用してユーザー認証を実装すると考えましたか?試してみると、役に立つかもしれないguideがあります。

Apache 2。2当量:

注ブラウザが資格情報を格納し、あなたが作るあらゆる要求にヘッダーでそれらを送信します。

+0

これが私が探しているものであれば分かりませんが、いずれにしても中断されているようです"互換性:2.1より前のバージョンでのみ利用可能" – puk

+0

これは、[mod_auth_basic](http://httpd.apache.org/docs/2.2/mod/mod_auth_basic.html)のような、少し特殊なモジュールに置き換えられたためです。それはあなたが探しているものではない場合は、心配は、ちょうどそれが役立つかもしれないと思った。 –

+0

もう一度見せてください。 – puk

関連する問題