2016-12-20 4 views
4

Linuxマシン(「php」)上に2つのグループのメンバーであるユーザーがいます。プライマリグループは "php"、補足グループは "www"です。なぜphp-fpmは補助グループに対して定義された権限を無視しますか?

私は私がいることを期待するユーザーwwwで、そのグループwwwで、パーミッション775

に設定されている私のLinuxマシン(/ホーム/ WWW /公共/ WP-コンテンツ/アップロード)上のディレクトリを持っています"php"ユーザとして実行されているプロセスは、そのディレクトリ内のファイルを読み書きすることができるはずです。コマンドラインからfopenの "php"ユーザとしてそのディレクトリにあるファイルを実行すると、うまくいきます!

しかし、ユーザ "php"とグループ "php"でphp-fpmを起動した場合、そのディレクトリに書き込もうとすると "permission denied"エラーが発生します。

php-fpmプロセスは、そのディレクトリを所有する「www」グループの一部である「php」ユーザーとして実行されているため、そのディレクトリに書き込むことができるはずです。しかし、私は "許可が拒否されました。"

php-fpmの動作がPHPスクリプトの動作と異なるのはなぜですか?

(私は第二グループを追加した後、それは古の問題ではないですので、私は、PHP-FPMを再開しました。)

+0

fpm設定ファイルを表示できますか? –

答えて

4

PHP-FPMソースコードはここにsetgidを呼び出すように見えます:https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_unix.c#L383-L386

 if (0 > setgid(wp->set_gid)) { 
      zlog(ZLOG_SYSERROR, "[pool %s] failed to setgid(%d)", wp->config->name, wp->set_gid); 
      return -1; 
     } 

私の知る限り、プロセスcannot access permissions available to supplementary groups after it invokes setgidを決定することができていますので、私はとソル。

1

ほとんどの場合、あなたが悪いFPMデーモンを設定して、あなたは次のようにconfファイル内のグループを指定する必要がありますこの:[PHP]グループ= PHP

+0

php-fpm confファイルでuser = phpとgroup = phpの両方を指定しました。 –

関連する問題