php/nginxに無効な権限があり、www-dataを使用しません。

php/nginxに無効な権限があり、www-dataを使用しません。

-編集-これがうまくいくかどうか疑問に思いますchmod 777 /var/run/php-fastcgi/php-fastcgi.socket。 www-data、php-www(またはroot)ではない場合、ソケットにアクセスしたい人は誰ですか? |

-edit2-chown www-data:$FASTCGI_GROUP $SOCKET以下のスクリプトの末尾(すぐ後ろspawn-fcgi)に追加して問題を解決しましたが、www-dataがphp-wwwグループにあるという事実が混乱しています。なぜ所有者でなければならないのですか? FASTCGI_USER を www-data に変更し直しました。なぜなら、それは目的が失われるからです(PHPファイルが私のすべてのファイルをwww-dataとしてアクセスできるようにしますが、これは望ましくありません)。

本質的に私が望むのは、PHPプロセスをwww-dataではないものにし、それが破損しても被害が私が所有しているごく少数のPHPサイトに制限されるようにすることです。私がしたことは、ユーザーphp-wwwを作成し、そのグループをwww-dataに追加することでした。 www-dataでログインするとphp-wwwのすべてのエントリにアクセスできますが、php-wwwは私のPHPサイト以外には何もアクセスできません。完璧。

php+nginxを実行しました。しかしそれをいかに変えるかは私にとって問題になった。フォルダの所有権を変更するinit.dスクリプトにwww-dataへの言及があります。問題ありません。 php-wwwに変更しました。それは問題ではありません。

問題はスポーンスクリプトにあります。

#!/bin/bash

FASTCGI_USER=php-www
FASTCGI_GROUP=php-www
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi

/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5

ユーザー/グループ行はwww-dataと言いましたが、今はphp-wwwに変更しました。

私はphp-fastcgiとnginxを起動しました。私のウェブサイトにアクセスすると、502無効なゲートウェイエラーが発生します。 nginxログを見ると、次の行が表示されます。

connect() to unix:/var/run/php-fastcgi/php-fastcgi.socket failed (13: Permission denied) while connecting to upstream

許可が拒否されました! ? !なぜ! ? ! www-dataにはphp-wwwグループがあり、statフォルダとソケットには所有者とグループphp-wwwが表示されます。ボットphp-wwwとwww-dataを使用してPHPファイルにアクセスできます。権限エラーが発生するのはなぜですか?私は何が間違っていましたか?

私のコースを見たいなら

# ps aux | egrep "php|www"

プログラム

www-data   548  0.0  0.1   1908   492 ?        Ss   18:08   0:00 /usr/sbin/fcgiwrap
www-data   586  0.0  0.1   1908   488 ?        Ss   18:08   0:00 /usr/sbin/fcgiwrap
php-www   1611  0.0  1.9  19312  5020 ?        Ss   18:20   0:00 /usr/bin/php5-cgi
php-www   1612  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
php-www   1613  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
php-www   1614  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
php-www   1615  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
php-www   1616  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
php-www   1617  0.0  0.7  19312  1856 ?        S    18:20   0:00 /usr/bin/php5-cgi
www-data  1776  0.0  0.6   5428  1684 ?        S    18:27   0:00 nginx: worker process
php-www   1967  0.0  1.9  19312  5020 ?        Ss   18:40   0:00 /usr/bin/php5-cgi
php-www   1968  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
php-www   1969  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
php-www   1970  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
php-www   1971  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
php-www   1972  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
php-www   1973  0.0  0.7  19312  1856 ?        S    18:40   0:00 /usr/bin/php5-cgi
root      2110  0.0  0.2   3300   736 pts/1    S+   18:55   0:00 egrep php|www

答え1

ソケットは、グループの読み取りまたは書き込みが不可能な場合があります。

答え2

ソケット権限の変更に加えて、nginx設定を編集してuser www-data独自のユーザー名に変更することもできます。

答え3

PHP CGIソケットファイルをタッチします(空のファイルを作成)。権限を777に変更して開始します。php-fastcgi

答え4

追加する各ユーザーセッションのfpmプール構成ファイルにこの行を追加します。

listen.mode = 0666

このように/opt/php-5.6.3/etc/fpm.d/user1.conf

[user1]
listen.owner = user1
listen.group = user1
user = user1
group = user1
listen = /opt/php-5.6.3/sockets/user1.sock
listen.mode = 0666

これにより、ソケットを読むことができます。 chmodを介してソケット権限を変更することは一時的な解決策です。サービスを再起動すると、以前の状態に変わるためです。

必要なものに変更してください。良い0660グループと所有者にのみ権限を追加してください。しかし、0666それはすべてです。

関連情報