safe_mode_gidのPHPセーフモードドキュメントによると:
デフォルトでは、セーフモードはファイルを開くときにUID比較チェックを実行します。これをGID比較に緩和したい場合は、safe_mode_gidをオンにします。ファイルアクセス時にUID(FALSE)またはGID(TRUE)チェックを使用するかどうか。
Webサーバーで実行されているPHPスクリプトにとって、UID(ユーザー識別子)チェックとGID(グループ識別子)チェックの違いは何ですか?
safe_mode_gidのPHPセーフモードドキュメントによると:
デフォルトでは、セーフモードはファイルを開くときにUID比較チェックを実行します。これをGID比較に緩和したい場合は、safe_mode_gidをオンにします。ファイルアクセス時にUID(FALSE)またはGID(TRUE)チェックを使用するかどうか。
Webサーバーで実行されているPHPスクリプトにとって、UID(ユーザー識別子)チェックとGID(グループ識別子)チェックの違いは何ですか?
これにより、Webサーバーのセットアップにもう少し柔軟性がもたらされます。safe_mode_gidを使用すると、システム上のユーザーごとに個別のPHP / httpdプロセスを実行できるはずですが、すべてが同じグループ(GID)および共有ファイルとして実行されている限り、各プロセスにいくつかの共有ファイルを読み取る機能を提供します。このグループが所有しています。
たとえば、Webサーバーのユーザー名とグループはapache:www、
UIDをチェックするように設定した場合、phpプロセスはユーザーapacheが所有するすべてのファイルにのみアクセスできます。したがって、システムで別のWebサーバーを実行している場合、たとえば、ユーザー名とtomcat:wwwのグループを持つtomcatがある場合、tomcatプロセスによって作成されたファイルは、 tomcatユーザーが所有しているため、phpからアクセスできません。
ただし、代わりにGIDチェックを使用する場合、同じwwwグループに属しているため、Tomcatプロセスによって作成されたファイルはphpプロセスによって読み取り可能になります。
セーフモードUIDチェックは、ユーザーが他の人のファイルにアクセスできないようにするために使用されます。GIDは、ユーザーのグループが他のGROUPSファイルにアクセスできないようにするために使用されます。
safe_mode
ほとんどの回答は、正確に正確または詳細ではありません... SCRIPT の所有者が、アクセスするファイルの所有者と一致するかどうかを確認することを忘れないでください。httpd user:group とは関係ありません。
たとえば、httpd は として実行できapache:daemon
、スクリプトは が所有しsome_user:users
、書き込み先のファイルはsome_other_user:users
.
を有効safe_mode_gid
にしないと、ユーザーが一致しないため、スクリプトはファイルにアクセスできません。
これは、スクリプトがフォルダーを作成し、そのフォルダー内にファイルを作成しようとした場合によく見られる現象です。
親フォルダーはそれを作成するスクリプトと同じユーザーによって所有されているため、フォルダーの作成は成功します (ほとんどの場合、「some_user」によってアップロードされました)。
しかし、作成されたフォルダーは httpd ユーザーが所有するようになりました。apache:daemon
がアクティブな場合safe_mode
、スクリプトの所有者 ( some_user
) がフォルダの所有者 ( ) と一致しないため、このフォルダ内にファイルを作成することはできませんapache
。
をアクティベートsafe_mode_gid
しても、スクリプトグループが「users」、フォルダグループが「daemon」のため動作しません。
最善の解決策は、ftp ユーザーと httpd に同じグループを設定することです。「書き込み可能」フォルダーのグループにも書き込みアクセスを許可する必要があることを忘れないでください。これは、すべてのユーザーが同じグループに属しているため、アクティブ化してから httpd プロセスが他のユーザーのファイルにアクセスできるため、安全性が低くなりますsafe_mode_gid
。
これを避けるには、実際にはsafe_mode_gid
+を組み合わせopen_basedir
て、ユーザーのホームを値として設定する必要があります。open_basedire
HTH