php/nginx에 잘못된 권한이 있으며 www-data를 사용하지 않습니다.

php/nginx에 잘못된 권한이 있으며 www-data를 사용하지 않습니다.

-편집- 이것이 작동하는지 더 궁금합니다 chmod 777 /var/run/php-fastcgi/php-fastcgi.socket. www-data, php-www(또는 루트)가 아닌 경우 소켓에 액세스하려는 사용자는 누구입니까? |

-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 화그게 다야.

관련 정보