发布于2026-05-23 阅读(0)
扫一扫,手机访问
在LNMP(Linux+Nginx+MySQL+PHP)这套经典的技术栈里,权限设置往往是决定整个环境安全与稳定的基石。配置得当,它能将风险挡在门外;一旦疏忽,就可能门户大开。今天,我们就来系统地梳理一下,如何为你的LNMP环境构建一套既安全又实用的权限体系。

一切安全配置的起点,都是从用户和组开始的。最忌讳的,就是图省事直接用root用户运行所有服务。正确的做法是,为每个服务创建专属的用户和组,实现权限的天然隔离。
www-data,而为数据库服务创建独立的 mysql 用户。
sudo groupadd www-data # 创建www-data组
sudo useradd -g www-data www-data # 创建www-data用户并加入www-data组
sudo groupadd mysql # 创建mysql组
sudo useradd -g mysql mysql # 创建mysql用户并加入mysql组
Nginx作为直面用户的Web服务器,它的权限策略核心是“只读不写”。要确保它能顺利读取网站文件来响应用户请求,同时严格限制其写入能力,防止被恶意利用。
/etc/nginx/nginx.conf)和各站点配置文件(/etc/nginx/sites-a vailable/*)至关重要,必须由root用户掌控修改权。通常设置为root:root所有,权限644(即root可读写,其他用户只能读)。
sudo chown root:root /etc/nginx/nginx.conf
sudo chmod 644 /etc/nginx/nginx.conf
sudo find /etc/nginx/sites-a vailable/ -type f -exec chmod 644 {} \;
/var/www/html)的所有者,应该设置为Nginx的运行用户(通常是 www-data)。目录权限设为755(允许进入和读取),文件权限设为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 {} \;
user 指令指定的用户,和网站文件的所有者是同一个人。比如,在 nginx.conf 中应该有 user www-data; 这一行。数据库是数据的保险库,权限必须锁得最紧。这里要分两个层面:操作系统层面的文件权限,和数据库内部的用户权限。
/var/lib/mysql),所有权必须交给 mysql 用户,权限设为750。这意味着只有mysql用户能完全读写,同组用户只能读,其他用户无权访问。
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 750 /var/lib/mysql
/etc/mysql/my.cnf)通常包含数据库密码等敏感信息,应设置为mysql:mysql所有,权限640(仅root和mysql用户可读)。
sudo chown mysql:mysql /etc/mysql/my.cnf
sudo chmod 640 /etc/mysql/my.cnf
CREATE DATABASE mydb;
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
Host 字段是 localhost,而不是 %。PHP-FPM是处理动态请求的引擎,它需要和Nginx紧密配合。权限设置的关键在于“一致性”,确保三者(Nginx用户、PHP-FPM用户、网站文件所有者)步调一致。
/etc/php/7.x/fpm/pool.d/www.conf)同样由root控制,权限644。
sudo chown root:root /etc/php/7.x/fpm/pool.d/www.conf
sudo chmod 644 /etc/php/7.x/fpm/pool.d/www.conf
www.conf 文件,找到 user 和 group 指令,将其修改为与Nginx相同的用户和组,通常是 www-data。
user = www-data
group = www-data
www-data 用户读取和执行(权限644),目录则需要允许进入(权限755)。对于少数需要写入的目录(比如用户上传目录 uploads),可以单独设置为775,但要确保组权限设置正确,避免安全风险。
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 {} \;
sudo chmod 775 /var/www/html/uploads # 示例:允许上传目录写入
/var/log/php7.x-fpm.log)所有者应为 www-data,权限640,允许其写入日志,同时限制其他用户访问。
sudo chown www-data:www-data /var/log/php7.x-fpm.log
sudo chmod 640 /var/log/php7.x-fpm.log
user、PHP-FPM配置中的 user/group,以及网站文件的实际所有者,这三者必须是同一个用户(如 www-data)。如果你的Linux系统启用了SELinux(如CentOS/RHEL)或AppArmor(如Ubuntu),它们会提供另一层强制访问控制。这时,除了常规权限,还需要调整安全策略。
httpd_sys_content_t,可写目录(如上传目录)设置为 httpd_sys_rw_content_t。
sudo chcon -Rv --type=httpd_sys_content_t /var/www/html
sudo chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/uploads
完成了基础组件配置,还有一些全局性的安全习惯需要养成。
find 命令定期扫描系统中权限设置不合理的文件,并及时修复。
sudo find / -type d -perm 777 -exec chmod 755 {} \; # 修复全局可写目录
sudo find / -type f -perm 666 -exec chmod 644 {} \; # 修复全局可写文件
sudo apt update && sudo apt upgrade -y
ufw 或 iptables 等工具,严格限制外部访问的端口。通常只开放HTTP(80)、HTTPS(443)以及SSH(22)等管理端口。
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
说到底,LNMP环境的权限管理,其精髓就是贯穿始终的“最小权限原则”。只给每个服务和用户分配其完成任务所必需的最低权限,不多给一分。通过上述从用户隔离、组件配置到系统加固的层层设置,你就能在保障服务顺畅运行的同时,为你的服务器构筑起一道坚实的安全防线。
上一篇:LNMP如何部署
下一篇:Cobbler如何进行版本升级
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8