LNMP在Debian上的权限设置
LNMP在Debian上的权限设置指南
一、基础权限原则
LNMP(Linux+Nginx+MySQL+PHP)环境的权限设置需遵循最小权限原则:Web进程(Nginx/PHP-FPM)仅需对网站文件有必要的读/写权限,数据库用户仅能访问其负责的数据库,避免使用root用户运行服务。
二、用户与用户组管理
- 创建专用Web用户:
Debian系统默认使用www-data
用户/组运行Nginx和PHP-FPM。若未存在,可通过以下命令创建(-r
表示系统用户,-g
指定主组):sudo useradd -r -g www-data www-data
- 将用户加入www-data组:
若需让普通用户管理网站文件,可将其加入www-data
组(如用户dev
):
加入后需重新登录生效,该用户可通过sudo usermod -aG www-data dev
sudo -u www-data
执行Web相关操作。
三、文件与目录权限设置
-
网站根目录权限:
网站文件(如/var/www/html
)的所有权需设为www-data: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 { } \;
-
敏感文件特殊处理:
- 配置文件(如Nginx的
/etc/nginx/nginx.conf
、PHP的/etc/php/8.2/fpm/php.ini
):权限设为644
(避免泄露敏感配置)。 - 上传目录(如
/var/www/html/uploads
):若需写入,可单独设置目录权限为775
(需确保www-data
组有写权限):sudo chmod 775 /var/www/html/uploads
- 配置文件(如Nginx的
-
禁止敏感目录访问:
通过Nginx配置禁止访问.htaccess
、wp-config.php
等敏感文件:location ~ /\.ht { deny all; } location ~* wp-config\.php$ { deny all; }
修改后重启Nginx:
sudo systemctl restart nginx
。
四、Nginx权限配置
-
进程用户设置:
确保Nginx以www-data
用户运行(默认配置)。编辑/etc/nginx/nginx.conf
,找到user
指令并确认:user www-data;
-
配置文件权限:
Nginx配置文件(/etc/nginx/sites-available/
下的站点文件)权限设为644
,避免误修改导致服务异常:sudo chmod 644 /etc/nginx/sites-available/*
-
日志目录权限:
Nginx日志目录(/var/log/nginx
)所有权设为www-data:adm
(adm
组用于系统日志管理),权限设为755
:sudo chown -R www-data:adm /var/log/nginx sudo chmod 755 /var/log/nginx
-
重启Nginx生效:
sudo systemctl restart nginx
五、MySQL/MariaDB权限配置
-
初始安全设置:
安装MariaDB后,运行mysql_secure_installation
脚本,完成以下操作:- 更改root密码(设置强密码,包含大小写字母、数字和符号)。
- 移除匿名用户(
DELETE FROM mysql.user WHERE User='';
)。 - 禁止root远程登录(
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');
)。 - 移除测试数据库(
DROP DATABASE IF EXISTS test;
)。 - 刷新权限(
FLUSH PRIVILEGES;
)。
-
创建数据库用户:
仅为特定数据库授权,避免使用root账户。例如,创建用户webuser
并授权数据库mydb
:CREATE DATABASE mydb; CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON mydb.* TO 'webuser'@'localhost'; FLUSH PRIVILEGES;
-
配置文件权限:
MariaDB配置文件(/etc/mysql/mariadb.conf.d/50-server.cnf
)权限设为644
,保护数据库敏感配置:sudo chmod 644 /etc/mysql/mariadb.conf.d/50-server.cnf
-
重启MariaDB生效:
sudo systemctl restart mariadb
六、PHP-FPM权限配置
- 进程用户设置:
编辑PHP-FPM池配置文件(如/etc/php/8.2/fpm/pool.d/www.conf
),确保user
和group
设置为www-data
:user = www-data group = www-data
- 监听权限:
若使用Unix socket(默认),确保socket文件(如/run/php/php8.2-fpm.sock
)的权限允许Nginx访问:
若使用TCP端口(如sudo chown www-data:www-data /run/php/php8.2-fpm.sock sudo chmod 660 /run/php/php8.2-fpm.sock
127.0.0.1:9000
),需确保防火墙允许该端口(sudo ufw allow 9000/tcp
)。 - 重启PHP-FPM生效:
sudo systemctl restart php8.2-fpm
七、安全加固措施
- 定期更新系统:
及时修补系统和软件漏洞,运行以下命令更新:sudo apt update & & sudo apt upgrade -y
- 配置防火墙:
使用ufw
限制入站流量,仅允许HTTP(80)、HTTPS(443)和SSH(22)端口:sudo apt install ufw sudo ufw enable sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 22/tcp sudo ufw deny from all # 默认拒绝其他流量
- 禁用root远程登录:
编辑SSH配置文件(/etc/ssh/sshd_config
),设置:
重启SSH服务:PermitRootLogin no
sudo systemctl restart ssh
。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: LNMP在Debian上的权限设置
本文地址: https://pptw.com/jishu/733147.html