首页主机资讯LNMP在Debian上的权限设置

LNMP在Debian上的权限设置

时间2025-10-23 09:46:04发布访客分类主机资讯浏览651
导读:LNMP在Debian上的权限设置指南 一、基础权限原则 LNMP(Linux+Nginx+MySQL+PHP)环境的权限设置需遵循最小权限原则:Web进程(Nginx/PHP-FPM)仅需对网站文件有必要的读/写权限,数据库用户仅能访问其...

LNMP在Debian上的权限设置指南

一、基础权限原则

LNMP(Linux+Nginx+MySQL+PHP)环境的权限设置需遵循最小权限原则:Web进程(Nginx/PHP-FPM)仅需对网站文件有必要的读/写权限,数据库用户仅能访问其负责的数据库,避免使用root用户运行服务。

二、用户与用户组管理

  1. 创建专用Web用户
    Debian系统默认使用www-data用户/组运行Nginx和PHP-FPM。若未存在,可通过以下命令创建(-r表示系统用户,-g指定主组):
    sudo useradd -r -g www-data www-data
    
  2. 将用户加入www-data组
    若需让普通用户管理网站文件,可将其加入www-data组(如用户dev):
    sudo usermod -aG www-data dev
    
    加入后需重新登录生效,该用户可通过sudo -u www-data执行Web相关操作。

三、文件与目录权限设置

  1. 网站根目录权限
    网站文件(如/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 {
    }
         \;
    
    
  2. 敏感文件特殊处理

    • 配置文件(如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
      
  3. 禁止敏感目录访问
    通过Nginx配置禁止访问.htaccesswp-config.php等敏感文件:

    location ~ /\.ht {
        
        deny all;
    
    }
    
    location ~* wp-config\.php$ {
        
        deny all;
    
    }
        
    

    修改后重启Nginx:sudo systemctl restart nginx

四、Nginx权限配置

  1. 进程用户设置
    确保Nginx以www-data用户运行(默认配置)。编辑/etc/nginx/nginx.conf,找到user指令并确认:

    user www-data;
        
    
  2. 配置文件权限
    Nginx配置文件(/etc/nginx/sites-available/下的站点文件)权限设为644,避免误修改导致服务异常:

    sudo chmod 644 /etc/nginx/sites-available/*
    
  3. 日志目录权限
    Nginx日志目录(/var/log/nginx)所有权设为www-data:admadm组用于系统日志管理),权限设为755

    sudo chown -R www-data:adm /var/log/nginx
    sudo chmod 755 /var/log/nginx
    
  4. 重启Nginx生效

    sudo systemctl restart nginx
    

五、MySQL/MariaDB权限配置

  1. 初始安全设置
    安装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; )。
  2. 创建数据库用户
    仅为特定数据库授权,避免使用root账户。例如,创建用户webuser并授权数据库mydb

    CREATE DATABASE mydb;
        
    CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
        
    GRANT ALL PRIVILEGES ON mydb.* TO 'webuser'@'localhost';
        
    FLUSH PRIVILEGES;
        
    
  3. 配置文件权限
    MariaDB配置文件(/etc/mysql/mariadb.conf.d/50-server.cnf)权限设为644,保护数据库敏感配置:

    sudo chmod 644 /etc/mysql/mariadb.conf.d/50-server.cnf
    
  4. 重启MariaDB生效

    sudo systemctl restart mariadb
    

六、PHP-FPM权限配置

  1. 进程用户设置
    编辑PHP-FPM池配置文件(如/etc/php/8.2/fpm/pool.d/www.conf),确保usergroup设置为www-data
    user = www-data
    group = www-data
    
  2. 监听权限
    若使用Unix socket(默认),确保socket文件(如/run/php/php8.2-fpm.sock)的权限允许Nginx访问:
    sudo chown www-data:www-data /run/php/php8.2-fpm.sock
    sudo chmod 660 /run/php/php8.2-fpm.sock
    
    若使用TCP端口(如127.0.0.1:9000),需确保防火墙允许该端口(sudo ufw allow 9000/tcp)。
  3. 重启PHP-FPM生效
    sudo systemctl restart php8.2-fpm
    

七、安全加固措施

  1. 定期更新系统
    及时修补系统和软件漏洞,运行以下命令更新:
    sudo apt update &
        &
         sudo apt upgrade -y
    
  2. 配置防火墙
    使用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  # 默认拒绝其他流量
    
  3. 禁用root远程登录
    编辑SSH配置文件(/etc/ssh/sshd_config),设置:
    PermitRootLogin no
    
    重启SSH服务:sudo systemctl restart ssh

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


若转载请注明出处: LNMP在Debian上的权限设置
本文地址: https://pptw.com/jishu/733147.html
Debian LNMP项目部署流程 Debian LNMP集群搭建方法

游客 回复需填写必要信息