web-dev-qa-db-ja.com

ApacheでのPHPファイルに対するUnixファイルシステムのアクセス許可は何ですか?

PHPファイルを使用したアクセス許可のベストプラクティスは何ですか?それらはいつ書き込み可能または実行可能になりますか?最高の所有者は何ですか?

Apacheサーバーを使用しています。

2
Kirk Strobeck

PHPスクリプトは、所有者が編集可能で、Apacheユーザーが所属するグループが読み取り可能であり、オプションで誰でも読み取り可能でなければなりません。それらは実行可能である必要はありません。理想的には、ほとんどのphpスクリプトはWebアクセス可能なフォルダー、特に構成ファイルの外部にある必要があります。これにより、Apacheの構成に問題がある場合でも、phpファイルがWebに公開されることはありません。多くの場合、web.accessibleフォルダー外の保護されたディレクトリ内のスクリプトでrequire_once()を呼び出すindex.phpページがあります。 .htaccessファイルは、すべての着信要求を書き換えてindex.phpを通過させ、保護されたディレクトリ内のルーターを使用して、何を処理するかを判断します。

9
Bob Baddeley

PHPの役割とファイルシステムを混同している可能性があります。 PHPには、読み取り、書き込み、または実行可能権限がありません。これらは、基礎となるファイルシステム(ext4、NTFSなど)によって処理されます。

is_writable()is_readable() などのPHP関数を使用して、特定のファイルのパーミッションを決定したり、 chmod( ) それらを変更します。

4
George Cummins

基本的に、PHPのファイルに書き込もうとするほとんどの関数/メソッドには、次のような考え方が必要です。

function writeSomething( $file )
{
    if ( !is_writable( $file ) )
    {
        // attempt to make it writable
        if ( !chmod($file, 0777) )
        {
            // could not make file writable
            // log the error....
            return false;
        }
    }

    // perform the writing here..
}

次のような古典的なPHPエラーを表示するよりも、常に「問題がありました」などのカスタムエラーを表示する方が良いため、ファイルにアクセスする前にファイルにアクセスできることを確認することをお勧めします。 "ファイルに書き込めません..."または何か...

私が助けてくれることを願っています!

1
David Conde

フォルダの場合は755、PHPおよびその他のファイルの場合は644。

1
Prateek

PHP自体はスクリプト言語です。 Webフォルダー内の最適なファイルアクセス許可について(op)知りたいと思います。

これは、使用しているサーバーで何を達成しようとしているのか、どのリモートユーザーがアクセスできるようにするのかなどに大きく依存します。

PHPスクリプトを介してWebページを公開する目的のみでサーバーを使用している場合、ファイル許可755はうまく機能します(655ではなく)。PHPファイルの所有者は他の世界(ユーザーが所属するグループを含む)がファイルを読み取り、実行することのみができる間、それを完全に制御できます。

セキュリティを強化するには、ファイルのアクセス許可711を使用して、世界がせいぜいファイルのみを実行できるようにします。また、Apacheサーバーに機能を追加して、すべてのリクエストでユーザーを切り替え、さらにセキュリティを強化することを検討してください。これにより、mod_ruid2モジュールやsuPHPモジュールなどを追加することになります。

0
Mike

Cpanelで一般的に使用される権限は次のとおりです。

  1. フォルダーのアクセス許可:755
  2. 一般ファイル許可:644
  3. 構成ファイルのアクセス許可:444
0
Shreyas

0655は最高の許可レベルです。これ以上ファイルを変更する理由はありません。もちろん、いくつかの書き込み許可を必要とするフォルダーがここまたはそこにあるかもしれませんが、それ以外の場合はすべて0655が機能します。

ヒントとして、すべてのファイルがApacheによって所有されていることを確認してください。サーバーにファイルをftpした場合、これは簡単に変更できます。そのため、本番サイトの場合は必ずApacheに設定してください。これにより、このようなタイトなシップを実行する際の多くの許可の問題が解消されます。