web-dev-qa-db-ja.com

FTPなしでNginx/PHP-fpmと同じグループのユーザーでプラグインインストールを有効にします

VPSをセットアップし、必要なものをすべてインストールしただけで、問題なく動作します。問題は、私がそれを自動的にアップデートして、私がftpなしでプラグインをインストールできるようにしたいということです。これは私の設定です:

  1. "wordpress"という名前の新しいユーザーとグループを作成しました。
  2. NginxとPHP-FPMはどちらも "wordpress"をユーザーとグループとして使用します。
  3. 私は自分のsshアカウントをグループ "wordpress"に追加しました。私のユーザー名は "user"だとしましょう。
  4. 私はファイルの所有権をユーザー "user"とグループ "wordpress"に変更しました(正しい権限は775、ファイルは664、後で755/644を試します)。
  5. フォルダグループ(chgrp -R)を "wordpress"に変更しました。私はまた新しいファイルが "wordpress"グループに属するようにフォルダに "chmod g + s"を実行しました。

上記のすべてではまだ新しいプラグイン(そしておそらくテーマやアップデート)をインストールすることはできませんが、ファイルの所有者を "wordpress"に変更すればすべて問題ありません。 "ユーザー"にファイルを所有させることは不可能なので、sftpでファイルをアップロードする場合、chownは必要ありません。

TL; DR
nginx/php-fpmを実行しているグループと同じグループに属し、それでもプラグインをインストールできるユーザーがWordPressファイルを所有することは可能ですか?

編集:
詳しい情報:
先頭のnginx.confにはuser wordpress wordpressが含まれ、pool.d/www.confにはuser = ilyesnlgroup = ilyesnlの2行が含まれます。また、両方のプロセスがユーザーwordpressによって実行されていることも確認しました。

1
Ilyes512

WordPressは、それが作成したファイルの ファイル所有者getmyuid によって返される値と同一であることを明確にチェックします。

つまり、WordPressファイル自体の所有者とは異なる所有者を使用してファイルを作成しても、「直接」モードは使用されません。

同じグループでは不十分です。 WordPressが書き込むファイルは、WordPressファイル自体と同じ所有権を持っている必要があります。そうしないと、FTP許可などの他の方法を試みることになります。 PHPプロセスは、実際にWordPressファイルを所有しているのと同じユーザーとして実行されている必要があります。

したがって、PHPが "wordpress"として実行されていても、ファイルが "user"によって所有されている場合は、代わりにFTPのものが使用されます。

これに対するテストはget_filesystem_method()関数です。

1
Otto