2011-01-21 19 views
1

私はこのような小さなものになり、現時点では、単純なアーキテクチャを持っている:PHP:作成ファイルと保存ファイルのパーミッション

ユーザーが電子メールを送信> Postfixの>のProcmail> PHPスクリプト>サードパーティのWebアプリケーションへの書き込み

サードパーティのWebアプリはCMS(レコードを作成するためにAPIを使用しています)です。

私が抱えている問題は、ユーザーが「サポート」のユーザーに電子メールを送信していることです。ここで、Webサーバーはユーザー「apache」上で実行されます。

添付ファイルはすべて「サポート」とグループ「サポート」のユーザーで作成されていますが、実際には「apache:apache」として作成する必要があります(CMSがこれらの添付ファイルをテンプレートに表示します)。

私はPHPがchownとchmodを持っていると理解していますが、コマンドラインからでもこれらのコマンドを実行しようとすると、ファイルの所有権をユーザー "apache"に引き渡すことができません。

createディレクトリに基づいてファイルのアクセス許可を保存する簡単な方法はありますか?これはphp.iniから変更する必要がありますか?あるいは、おそらく私はアーキテクチャを再考する必要がありますか?

ありがとうございました!あなたがこれを行うことにより、Linuxを実行している場合は、ファイルシステムレベルでこの問題を解決することができます

答えて

0

  • chownコマンドのサポート:apacheのfooの
  • のchmod 775 fooの
  • のchmod gが+ S fooの

ここで、fooはファイルを保存するフォルダです。

すべての(新しく作成された)ファイルは、サポート:apacheによって所有される必要があります。 664としてファイルを作成することを確認した場合、両方の場所で読み取り/書き込みができます。

これは、問題を解決する唯一の方法ではありませんが、おそらく最も簡単な方法ですが、おそらく最も簡単です。

0

あなたのアーキテクチャを再考し、サードパーティ製のアプリケーションがApacheを実行してファイルを作成する方法を考え出す必要があるかもしれないと思います。 1つの方法は、APIを呼び出すためのsetuidスクリプトを用意することです。

chownは、ルート以外のユーザーが他のユーザーにファイルの所有権を変更させるとセキュリティホールになることが多いため、通常はroot以外では機能しません。

0

この問題を回避するために、私は少しばかげてやりました。

ファイルを別のユーザーとして作成した後は、chgrpコマンドとchmodコマンド(PHP APIを使用)を実行し、すべてがhonkie doryでした。返信をありがとう。

関連する問題