温馨提示×

LNMP如何管理用户

小樊
48
2025-10-28 19:03:39
栏目: 编程语言

LNMP环境下用户管理的核心流程与安全实践

一、系统用户管理

系统用户是LNMP服务运行的基础,需遵循“专用用户”原则,避免使用root直接运行服务。

  • 创建用户:使用adduser命令创建专用用户(如www-data用于Nginx/PHP-FPM、mysql用于MySQL),命令示例:sudo adduser www-data(创建时会提示设置密码及个人信息,若无需交互可使用sudo adduser --disabled-password --gecos "" www-data)。
  • 删除用户:使用deluser命令彻底删除用户(可选--remove-home删除主目录),示例:sudo deluser www-data --remove-home
  • 修改密码:使用passwd命令重置用户密码,示例:sudo passwd www-data
  • 调整用户组:通过usermod命令将用户添加到指定组(如www-data组),示例:sudo usermod -aG www-data username-aG表示追加组,避免移除原有组)。

二、Nginx用户权限配置

Nginx作为Web服务器,需以非root用户运行,降低潜在安全风险。

  • 修改运行用户:编辑Nginx主配置文件/etc/nginx/nginx.conf,找到user指令并设置为专用用户(如www-data),示例:user www-data;(需确保该用户在系统中存在)。
  • 设置文件权限:确保Nginx能访问网站文件(如/var/www/html),执行以下命令:
    sudo chown -R www-data:www-data /var/www/html # 递归修改所有者 sudo find /var/www/html -type f -exec chmod 644 {} \; # 文件权限644(所有者可读写,其他用户只读) sudo find /var/www/html -type d -exec chmod 755 {} \; # 目录权限755(所有者可读写执行,其他用户可读执行) 

三、MySQL/MariaDB用户权限管理

数据库用户需遵循“最小权限”原则,避免过度授权。

  • 创建数据库与用户:登录MySQL后,依次执行以下命令(替换mydatabasemyusermypassword为实际名称):
    CREATE DATABASE mydatabase; -- 创建数据库 CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; -- 创建本地用户 GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost'; -- 授权(仅限指定数据库) FLUSH PRIVILEGES; -- 刷新权限使变更生效 
  • 限制远程访问:若无需远程连接,修改用户Host为localhost,示例:UPDATE mysql.user SET Host='localhost' WHERE User='myuser'; FLUSH PRIVILEGES;
  • 删除用户:使用DROP USER命令,示例:DROP USER 'myuser'@'localhost'; FLUSH PRIVILEGES;

四、PHP-FPM用户权限配置

PHP-FPM处理PHP请求时,需与Nginx用户保持一致,避免权限冲突。

  • 修改运行用户:编辑PHP-FPM池配置文件(如/etc/php/7.x/fpm/pool.d/www.conf7.x为PHP版本),找到usergroup指令并设置为与Nginx一致(如www-data),示例:
    user = www-data group = www-data 
  • 设置Socket权限:确保Nginx能通过Socket与PHP-FPM通信,修改Socket文件所有者(路径因版本而异),示例:sudo chown www-data:www-data /run/php/php7.x-fpm.sock
  • 重启服务:修改后重启PHP-FPM使配置生效,示例:sudo systemctl restart php7.x-fpm

五、文件与目录权限管理

合理的权限设置是防止未授权访问的关键。

  • 通用原则
    • 文件权限设为644(所有者可读写,其他用户只读);
    • 目录权限设为755(所有者可读写执行,其他用户可读执行);
    • 敏感文件(如wp-config.php、数据库配置文件)权限设为600(仅所有者可读写)。
  • 常用命令
    sudo chmod 600 /var/www/html/wp-config.php # 敏感文件权限 sudo chown -R www-data:www-data /var/www/html # 递归修改网站目录所有者 

六、SELinux/AppArmor配置(可选但推荐)

若系统启用SELinux或AppArmor,需调整策略允许服务访问必要资源。

  • SELinux:若遇到Nginx无法访问网站文件的问题,可临时设置布尔值:sudo setsebool -P httpd_can_network_connect_db 1(允许HTTP服务连接数据库);或通过audit2allow生成自定义策略。
  • AppArmor:确保Nginx配置文件符合AppArmor策略,示例:sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx(强制启用Nginx的AppArmor profile)。

七、定期审计与安全加固

  • 审计权限:定期检查系统权限,清理异常文件(如权限为777的文件),示例:
    sudo find / -type d -perm 777 -exec chmod 755 {} \; # 修复目录权限 sudo find / -type f -perm 666 -exec chmod 644 {} \; # 修复文件权限 
  • 更新软件:定期更新LNMP组件(Nginx、MySQL、PHP),修补安全漏洞,示例:sudo apt update && sudo apt upgrade
  • 防火墙配置:使用ufw限制端口访问,仅允许HTTP(80)、HTTPS(443)等必要端口,示例:sudo ufw allow 80/tcp; sudo ufw allow 443/tcp; sudo ufw enable

0