Debian系统中如何管理LNMP用户
导读:Debian 系统中 LNMP 用户管理 一 核心原则与运行身份 采用最小权限与职责分离:Web 服务(Nginx、PHP-FPM)使用专用的非 root系统用户运行;数据库(MariaDB/MySQL)使用独立的mysql用户;开发人员...
Debian 系统中 LNMP 用户管理
一 核心原则与运行身份
- 采用最小权限与职责分离:Web 服务(Nginx、PHP-FPM)使用专用的非 root系统用户运行;数据库(MariaDB/MySQL)使用独立的mysql用户;开发人员与运维人员使用普通用户 + sudo进行日常管理。
- 统一用户组便于权限收敛:将网站目录的所属组设为www-data(Debian 常见)或自定义的www,并使 Nginx 与 PHP-FPM 以该组身份运行,避免 777 权限。
- 进程身份核对:Nginx 主进程常为 root(仅用于绑定 80/443),工作进程应为专用用户;PHP-FPM 在 pool 配置中指定用户/组;MariaDB 以 mysql 用户运行。可用
ps aux | grep -E 'nginx|php-fpm|mysqld'检查。
二 系统用户与组管理
- 创建网站运行用户与组(示例组为 www,用户为 www):
- 创建组:
sudo groupadd www - 创建用户并加入组:
sudo useradd -m -s /usr/sbin/nologin -G www www
- 创建组:
- 创建开发/运维用户并加入 sudo(示例用户 dev):
- 创建用户:
sudo adduser dev - 加入 sudo 组:
sudo usermod -aG sudo dev
- 创建用户:
- 安全加固:
- 禁止 root 远程登录:
sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config - 禁用空密码:
sudo sed -i 's/^#*PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config - 重启 SSH:
sudo systemctl restart ssh
- 禁止 root 远程登录:
- 说明:Debian 中常用
adduser(交互式)与useradd(非交互式)配合usermod -aG管理用户与组;visudo用于安全地编辑 /etc/sudoers。
三 Nginx PHP-FPM MariaDB 运行身份与目录权限
- Nginx:编辑 /etc/nginx/nginx.conf,将首行
user设为与 PHP-FPM 一致的用户/组(如 www-data 或 www),并重启服务。- 示例:
user www-data www-data;(保持与 PHP-FPM 一致)
- 示例:
- PHP-FPM:编辑对应版本的 /etc/php/*/fpm/pool.d/www.conf(或自定义 pool),设置:
user = www、group = wwwlisten.owner = www-data、listen.group = www-data、listen.mode = 0660- 重启 PHP-FPM:
sudo systemctl restart php*-fpm
- MariaDB:服务默认以 mysql 用户运行,无需改为 www。数据库账户在 MariaDB 内授权,遵循最小权限原则(仅授予业务所需库/表/主机)。
- 目录与文件权限(网站根目录示例 /var/www/example):
- 统一属主/属组:
sudo chown -R www:www /var/www/example - 目录 755、文件 644:
sudo find /var/www/example -type d -exec chmod 755 { } \;与sudo find /var/www/example -type f -exec chmod 644 { } \; - 需要写入的目录(如上传、缓存、日志)可单独放宽:
chmod 775 /var/www/example/{ uploads,cache,logs}并确保所属组为 www。
- 统一属主/属组:
四 数据库用户与权限
- 安全初始化:
sudo mysql_secure_installation(设置 root 强密码、移除匿名用户、禁止 root 远程登录等)。 - 创建业务数据库与最小权限账户(示例):
- 登录:
sudo mariadb -u root -p - 建库:
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 建用户并授权:
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPass!'; - 授权:
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'localhost'; - 刷新:
FLUSH PRIVILEGES;
- 登录:
- 原则:禁止应用以 root 连接数据库;按“库/表/列/主机”粒度授权;生产环境避免使用通配主机 %。
五 日常运维与审计
- 服务管理:
- Nginx:
sudo systemctl restart|reload|status nginx - PHP-FPM:
sudo systemctl restart|reload|status php*-fpm - MariaDB:
sudo systemctl restart|status mariadb
- Nginx:
- 防火墙:仅放行 22/80/443
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 80 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
- 日志与审计:
- 登录与活跃会话:
who、w、last - 安全审计:
sudo tail -f /var/log/auth.log - 应用日志:Nginx 访问/错误日志、PHP-FPM 慢日志、MariaDB 错误日志。
- 登录与活跃会话:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian系统中如何管理LNMP用户
本文地址: https://pptw.com/jishu/778083.html
