首页主机资讯Debian系统中如何管理LNMP用户

Debian系统中如何管理LNMP用户

时间2025-12-23 02:16:04发布访客分类主机资讯浏览853
导读: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,并使 NginxPHP-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
  • 说明:Debian 中常用 adduser(交互式)与 useradd(非交互式)配合 usermod -aG 管理用户与组;visudo 用于安全地编辑 /etc/sudoers

三 Nginx PHP-FPM MariaDB 运行身份与目录权限

  • Nginx:编辑 /etc/nginx/nginx.conf,将首行 user 设为与 PHP-FPM 一致的用户/组(如 www-datawww),并重启服务。
    • 示例:user www-data www-data; (保持与 PHP-FPM 一致)
  • PHP-FPM:编辑对应版本的 /etc/php/*/fpm/pool.d/www.conf(或自定义 pool),设置:
    • user = wwwgroup = www
    • listen.owner = www-datalisten.group = www-datalisten.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、文件 644sudo 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
  • 防火墙:仅放行 22/80/443
    • sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    • sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    • sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  • 日志与审计:
    • 登录与活跃会话:whowlast
    • 安全审计:sudo tail -f /var/log/auth.log
    • 应用日志:Nginx 访问/错误日志、PHP-FPM 慢日志、MariaDB 错误日志。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian系统中如何管理LNMP用户
本文地址: https://pptw.com/jishu/778083.html
Debian系统中如何优化LNMP内存使用 Debian LNMP如何备份与恢复数据

游客 回复需填写必要信息