Debian环境下LNMP权限设置指南
在Debian系统中,LNMP各组件(Nginx、MySQL、PHP)默认以www-data用户和www-data组的身份运行。建议避免直接使用root用户操作,创建普通用户并加入sudo组(如dev用户),用于日常管理。
网站文件需遵循“最小权限原则”:
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 {} \; # 设置文件权限
Nginx配置文件(如/etc/nginx/nginx.conf、站点配置文件/etc/nginx/sites-available/*)需限制为root用户读写,其他用户仅读:
sudo chmod 644 /etc/nginx/nginx.conf
sudo chmod 644 /etc/nginx/sites-available/*
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
www-data用户运行(检查/etc/nginx/nginx.conf中的user指令)。www.conf中的listen.owner和listen.group设置为www-data:listen.owner = www-data
listen.group = www-data
mysql_secure_installation脚本,完成以下安全设置:
DROP USER ''@'localhost';)。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;
www-data用户运行(检查/etc/php/*/fpm/pool.d/www.conf中的user和group指令)。/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
/etc/ssh/sshd_config中的PermitRootLogin no),使用SSH密钥认证,限制空密码登录(PermitEmptyPasswords no)。/var/log/nginx/error.log)、PHP(/var/log/php*/error.log)和MySQL(/var/log/mysql/error.log)日志,及时发现异常行为。