suPHP 用の PHP セッションをセットアップしようとしています (こちらを参照)。suPHP が開始されたときに正しいユーザーに対して実行されるように、php 検証ファイルをユーザーが所有する必要があります。ただし、ユーザーがそのファイルにアクセスできるようにしたくありません。実際にデータベースをチェックするのではなく、true を返すように編集できるからです。
私の最初の試みは次のようなものでした(Apacheが user として実行される場合www-data
)
/etc/validate
├── [drwx------ www-data ] user1
│ └── [-rwx------ user1 ] validate.php
/var/www/
└── [drwx------ user1 ] user1
└── [-rwx------ user1 ] index.html
次に、Web ページを検証ページにリダイレクトし、検証してから戻ります。/var/www/user1/index.html
RewriteCond %{REQUEST_URI} !^/xyz
RewriteRule ^(.*) /etc/validate/user1/validate.php?uri=$1
しかし、suPHP は、自分の docroot ( /var/www/user1
) の外にある何かにアクセスしていると不平を言います。docroot を に設定してファイル/
を更新したくないので、修正されません (これを修正するつもりはありません)。したがって、代わりに私はそのように移動しました(少し面倒です、私は知っています)suphp.conf
check_vhost_docroot=false
/etc/validate
/var/www
/var/www/
└── [drwx------ user1 ] user1
├── [-rwx------ user1 ] index.html
└── [dr-x------ www-data ] validate
└── [-rwx------ user1 ] validate.php
したがって、検証ファイルは
- docroot 内
- user1 が所有
- user1 は編集できません
しかし、ページを読み込もうとすると、次のエラーが表示されます
Directory /var/www/user1/validate is not owned by user1
この時点で私は忍耐力を失っているので、そこに別のダミーフォルダーを貼り付けて、ファイル構造が次のようになるようにします
/var/www/
└── [drwx------ user1 ] user1
├── [-rwx------ user1 ] index.html
└── [dr-x------ www-data ] validate
└── [drwx------ user1 ] dummy
└── [-rwx------ user1 ] validate.php
ページを読み込もうとすると、Apache から「このサーバーの xyz にアクセスする権限がありません」と表示されます。xyz
私のドメイン名の後に来るものはどこですか. 後続の値にファイル/フォルダーとしてアクセスしようとしていないため、Apache が私にそう言っている理由がわかりません。リダイレクトが失敗していると思います.Apacheは、失敗しているのはハードリンクであると想定しています。
私が間違っていることを誰かに教えてもらえますか、またはユーザーが自分のファイルを編集できないようにする別の方法を提供してもらえますか? ディレクトリに入ることができませんでした。これdummy
は、そのアクセス許可がrwx------
あり、ディレクトリにのみ入ることuser1
ができcd
たためです。権限を から に変更する0700
と0755
、suPHP エラーに戻りました。そこで問題は次のようになります: suPHP のアップステージ ディレクトリの 1 つが他の誰かによって所有されている場合、どのようにすれば suPHP にスクリプトを実行させることができるでしょうか?
編集: Apacheが不平を言っている理由がわかりました。入り込めなかった