CentOSでFTP / Apache / PHPのファイル権限/所有権を設定する方法

CentOSでFTP / Apache / PHPのファイル権限/所有権を設定する方法

chmodCentOSファイルの権限について基本的に理解しています。 777 は 111111111 を表し、rwx各ルート、グループ、ユーザーなどを表します。私が知らないのは、Apache、FTP、PHPがすべて正しく機能するように設定する方法です。

proFTPdサーバーとApacheサーバーがあります。 ApacheサーバーがPHPファイルを読み取って実行できるように、proFTPdサーバーの権限をどのように設定する必要がありますか?初期設定では、ApacheはFTP経由でアップロードされたファイルを読み取ることができませんでした。 FTPユーザーとApacheサーバーを同じグループに配置する必要がありますか?

標準ホスティングシステムでは、権限システム(FTP-Apache-PHP)はどのように機能しますか?

答え1

ApacheでFTPを動作させようとしないで、最も安全な別のアプローチを取ってください。

suPHPとsuExecを使用すると、Apacheは必要なすべてを作成するためにそのユーザーを使用し、ftpはすでにそのユーザー自体を使用します。

centOSでsuPHPを使用してApacheをコンパイルする方法は次のとおりです。 http://markus.revti.com/2010/03/installing-suphp-on-centos-5/

リストに正しいリポジトリがある場合は、次のことを試すことができます。yum install mod_suphp

かなり簡単な方法のようですが、問題が発生しそうではありません。

ご不明な点がございましたら教えてください。最善を尽くしてお手伝いします。

suPHP に関する追加情報。

suExec に関する追加情報。

答え2

Apacheは特定のユーザー(通常はhttpd)で実行されますが、PHPは設定方法によって同じユーザーまたは別のユーザーとして実行できます。

  • PHPがモジュールとして実行されると、Apacheと同じユーザーになります。
  • PHPがCGIで実行されている場合(非常にまれに)、Apacheがsuexecを使用するように設定されていない限り(この場合、ユーザーは設定に含まれます)、通常は同じユーザーとして実行されます。
  • PHPがFastCGIとして実行されている場合は、設定されたユーザーとして実行されます。

状況は suPHP の場合より複雑です。これは、スクリプトファイルを所有するuidを使用してスクリプトが実行されることを除いて、CGIの状況と似ています。

ここでの制限は次のとおりです。

  1. Webサーバーuid(およびPHP uid)が書き込むことができるディレクトリ/ファイルは非常に制限されなければならず、これらの書き込み可能な場所でのコード挿入攻撃を防ぐために特別な注意が必要です。

  2. 通常、通常のユーザーは他のUIDにファイルを書き込むことができず、PHPコードファイルを維持する必要があるかもしれません(ユーザー書き込み可能など)。

WebサーバーでPHPファイルを実行できるかどうかは、ファイルの実行可能ビットとは何の関係もありません(ただし、ファイルを含むディレクトリの実行可能ビットとは多くの関係があります)。

FTPユーザーとApacheサーバーを同じグループに配置する必要がありますか?

おそらくそうではありません。 Webサーバー/PHPを「その他」と考えることをお勧めします。したがって、Webサーバーがアクセスできるすべてのもの(PHPを含む)に対する権限は、次のようにする必要があります。

  • ユーザー:読み取り、書き込み
  • グループ:方針によって異なる
  • その他の読書

つまり0644(上記の実行権限とは無関係)、ディレクトリの場合:

  • ユーザー:読み取り、書き込み、実行
  • グループ:方針によって異なる
  • その他:読み取り、実行

つまり0755

関連情報