插件窝 干货文章 nginx、php-fpm和mysql的用户权限如何配置

nginx、php-fpm和mysql的用户权限如何配置

Nginx 用户 权限 配置 246    来源:    2025-04-22

Nginx、PHP-FPM 和 MySQL 用户权限配置指南

合理的用户权限配置对于Web服务器的安全性至关重要。以下是Nginx、PHP-FPM和MySQL的最佳用户权限配置实践。

1. Nginx 用户权限配置

建议配置

  • 创建一个专用的nginx用户和组(通常系统安装时会自动创建nginxwww-data用户)
  • 确保nginx以非root用户运行

配置文件

/etc/nginx/nginx.conf中:

user nginx nginx;
worker_processes auto;

目录权限

chown -R nginx:nginx /var/www/html
chmod -R 755 /var/www/html

2. PHP-FPM 用户权限配置

建议配置

  • 为每个网站创建独立的PHP-FPM池(pool),使用不同的用户运行
  • 避免使用www-datanginx用户运行PHP-FPM

示例配置(/etc/php-fpm.d/www.conf 或自定义pool)

[website1]
user = website1
group = website1

listen = /var/run/php-fpm/website1.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

创建用户和设置权限

useradd website1
chown -R website1:website1 /var/www/website1
find /var/www/website1 -type d -exec chmod 750 {} \;
find /var/www/website1 -type f -exec chmod 640 {} \;

3. MySQL 用户权限配置

建议配置

  • 为每个应用创建专用的数据库用户
  • 遵循最小权限原则

创建数据库用户示例

CREATE DATABASE app_db;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

文件权限

chown -R mysql:mysql /var/lib/mysql
chmod -R 750 /var/lib/mysql

4. 三者协同工作的权限设置

  1. 网站目录权限

    chown -R website1:nginx /var/www/website1
    find /var/www/website1 -type d -exec chmod 750 {} \;
    find /var/www/website1 -type f -exec chmod 640 {} \;
    
  2. 上传目录特殊权限

    chown -R website1:nginx /var/www/website1/uploads
    chmod -R 770 /var/www/website1/uploads
    
  3. 会话和缓存目录

    chown -R website1:nginx /var/www/website1/var/cache
    chmod -R 770 /var/www/website1/var/cache
    

5. 安全建议

  1. 定期审计用户权限
  2. 使用SELinux或AppArmor增强安全性
  3. 为每个网站/应用使用独立的用户
  4. 禁用PHP危险函数(如exec, system, shell_exec等)
  5. 保持所有软件更新到最新版本

通过以上配置,您可以建立一个既安全又功能完善的Web服务环境,同时最小化潜在的安全风险。