温馨提示×

Debian环境下LNMP的权限设置指南

小樊
50
2025-10-06 06:34:40
栏目: 智能运维

Debian环境下LNMP权限设置指南

一、基础准备:用户与组管理

在Debian系统中,LNMP各组件(Nginx、MySQL、PHP)默认以www-data用户和www-data组的身份运行。建议避免直接使用root用户操作,创建普通用户并加入sudo组(如dev用户),用于日常管理。

二、核心权限设置:文件与目录

1. 网站根目录权限

网站文件需遵循“最小权限原则”:

  • 目录权限:设置为755(所有者可读/写/执行,组和其他用户可读/执行),确保Nginx/PHP能遍历目录结构。
  • 文件权限:设置为644(所有者可读/写,组和其他用户可读),防止未经授权的修改。
  • 操作命令
    sudo chown -R www-data:www-data /var/www/html  # 修改所有者(替换为你的网站目录)
    sudo find /var/www/html -type d -exec chmod 755 {} \;  # 设置目录权限
    sudo find /var/www/html -type f -exec chmod 644 {} \;  # 设置文件权限
    

2. Nginx配置文件权限

Nginx配置文件(如/etc/nginx/nginx.conf、站点配置文件/etc/nginx/sites-available/*)需限制为root用户读写,其他用户仅读:

sudo chmod 644 /etc/nginx/nginx.conf
sudo chmod 644 /etc/nginx/sites-available/*

3. PHP-FPM配置文件权限

PHP-FPM配置文件(如/etc/php/版本/fpm/php.ini、池配置/etc/php/版本/fpm/pool.d/www.conf)需严格控制权限:

sudo chmod 644 /etc/php/*/fpm/php.ini
sudo chmod 640 /etc/php/*/fpm/pool.d/www.conf  # 仅root和www-data组可读
sudo chown root:www-data /etc/php/*/fpm/pool.d/www.conf

三、组件特定权限优化

1. Nginx权限

  • 确保Nginx进程以www-data用户运行(检查/etc/nginx/nginx.conf中的user指令)。
  • 若使用PHP-FPM,需确认www.conf中的listen.ownerlisten.group设置为www-data
    listen.owner = www-data
    listen.group = www-data
    

2. MySQL/MariaDB权限

  • 运行mysql_secure_installation脚本,完成以下安全设置:
    • 更改root密码(避免使用弱密码)。
    • 移除匿名用户(DROP USER ''@'localhost';)。
    • 禁止root远程登录(REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';)。
    • 刷新权限(FLUSH PRIVILEGES;)。
  • 创建数据库用户时,遵循“最小权限原则”(如仅为特定数据库授权):
    CREATE USER 'siteuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    GRANT ALL PRIVILEGES ON site_db.* TO 'siteuser'@'localhost';
    FLUSH PRIVILEGES;
    

3. PHP权限

  • 确保PHP-FPM以www-data用户运行(检查/etc/php/*/fpm/pool.d/www.conf中的usergroup指令)。
  • 限制上传目录权限(如/var/www/html/uploads),禁止执行权限:
    sudo chown -R www-data:www-data /var/www/html/uploads
    sudo chmod 755 /var/www/html/uploads
    sudo find /var/www/html/uploads -type f -exec chmod 644 {} \;
    

四、安全加固补充

  • 防火墙配置:使用ufw限制入站流量,仅允许HTTP(80)、HTTPS(443)和SSH(22)端口:
    sudo ufw allow 'Nginx Full'
    sudo ufw allow OpenSSH
    sudo ufw enable
    
  • SSH安全:禁用root远程登录(修改/etc/ssh/sshd_config中的PermitRootLogin no),使用SSH密钥认证,限制空密码登录(PermitEmptyPasswords no)。
  • 日志监控:定期检查Nginx(/var/log/nginx/error.log)、PHP(/var/log/php*/error.log)和MySQL(/var/log/mysql/error.log)日志,及时发现异常行为。

0