LNMP权限问题的系统化解决方案
一、先统一运行身份与最小权限原则
ps -ef | grep -E 'nginx|php-fpm'。sudo gpasswd -a nginx www-data。sudo chown -R www-data:www-data /var/www/your_site。php.ini 中关闭 display_errors、限制危险函数、设置 open_basedir;Nginx 关闭目录浏览与版本暴露。二、按场景给出配置与命令清单
/etc/php/7.4/fpm/pool.d/www.conf)[www]
user = www-data
group = www-data
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
/etc/nginx/nginx.conf 或站点配置)user www-data;
sudo chown -R www-data:www-data /var/www/your_site
find /var/www/your_site -type d -exec chmod 755 {} \;
find /var/www/your_site -type f -exec chmod 644 {} \;
sudo chmod 775 /var/www/your_site/{runtime,uploads,logs,cache}
sudo systemctl reload php7.4-fpm
sudo systemctl reload nginx
listen = 127.0.0.1:9000
; 注意:TCP 方式通常不需要设置 listen.owner/group/mode
fastcgi_pass 127.0.0.1:9000;
ps -ef | grep php-fpmsudo chown -R www-data:www-data /var/www/your_site/runtime/logs三、快速排查与验证
ps -ef | grep -E 'nginx|php-fpm',确认两者运行用户一致或具备共享组关系。sudo nginx -t、sudo php-fpm -t,确保配置无误再重启。namei -l /var/www/your_site/index.php,逐层检查目录的拥有者与权限;必要时 sudo -u www-data stat /var/www/your_site。listen.owner/group/mode 与 Nginx 运行用户匹配(如 0660 且同组)。/var/log/nginx/error.log/var/log/php7.4-fpm.log(或系统配置的相应路径)四、安全与常见误区