-편집- 이것이 작동하는지 더 궁금합니다 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 화그게 다야.