插件窝 干货文章 LNMP环境下如何进行权限管理

LNMP环境下如何进行权限管理

权限 example sudo webuser 454    来源:    2025-05-05

LNMP环境下的权限管理指南

LNMP (Linux + Nginx + MySQL + PHP) 环境下的权限管理是确保服务器安全的重要环节。以下是一套完整的权限管理方案:

一、系统用户权限管理

  1. 用户分组管理

    • 创建专用用户组:sudo groupadd webadmin
    • 创建专用用户:sudo useradd -g webadmin -d /home/webuser -m webuser
    • 禁止root直接登录:修改/etc/ssh/sshd_configPermitRootLogin no
  2. sudo权限控制

    • 使用visudo编辑/etc/sudoers,限制特定用户组的权限
    %webadmin ALL=(ALL) NOPASSWD: /usr/sbin/service nginx *, /usr/sbin/service php-fpm *
    

二、Web目录权限设置

  1. 目录结构建议

    /var/www/
    ├── example.com
    │   ├── public_html/    # 网站根目录
    │   ├── logs/          # 日志目录
    │   └── tmp/           # 临时文件
    
  2. 权限设置

    sudo chown -R webuser:webadmin /var/www/example.com
    sudo chmod -R 750 /var/www/example.com
    sudo chmod -R 770 /var/www/example.com/logs
    sudo chmod -R 770 /var/www/example.com/tmp
    
  3. 网站根目录特殊设置

    sudo chmod 750 /var/www/example.com/public_html
    sudo find /var/www/example.com/public_html -type d -exec chmod 750 {} \;
    sudo find /var/www/example.com/public_html -type f -exec chmod 640 {} \;
    

三、Nginx权限配置

  1. 运行用户设置

    • 修改/etc/nginx/nginx.conf
    user webuser webadmin;
    
  2. 站点配置限制

    server {
       server_name example.com;
       root /var/www/example.com/public_html;
    
       location ~ /\.ht {
           deny all;
       }
    
       location ~* \.(engine|inc|info|install|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$|\.php_ {
           deny all;
       }
    }
    

四、PHP安全设置

  1. php-fpm配置

    • 修改/etc/php-fpm.d/www.conf
    user = webuser
    group = webadmin
    
    listen.owner = webuser
    listen.group = webadmin
    
  2. php.ini安全设置

    disable_functions = exec,passthru,shell_exec,system,proc_open,popen
    open_basedir = /var/www/example.com/:/tmp/
    expose_php = Off
    allow_url_fopen = Off
    

五、MySQL权限管理

  1. 创建专用数据库用户

    CREATE USER 'webuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON exampledb.* TO 'webuser'@'localhost';
    FLUSH PRIVILEGES;
    
  2. 禁用root远程登录

    DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
    FLUSH PRIVILEGES;
    

六、定期维护

  1. 日志审计

    sudo find /var/log/nginx/ -type f -exec chmod 640 {} \;
    sudo find /var/log/php-fpm/ -type f -exec chmod 640 {} \;
    
  2. 定期检查

    # 检查SUID文件
    sudo find / -perm -4000 -type f -exec ls -la {} \;
    
    # 检查可写目录
    sudo find /var/www/ -type d -perm -o=w -exec ls -la {} \;
    

通过以上设置,您可以建立一个相对安全的LNMP环境权限管理体系。根据实际业务需求,可能需要进一步调整某些权限设置。