LNMP (Linux + Nginx + MySQL + PHP) 环境下的权限管理是确保服务器安全的重要环节。以下是一套完整的权限管理方案:
用户分组管理
sudo groupadd webadmin
sudo useradd -g webadmin -d /home/webuser -m webuser
/etc/ssh/sshd_config
中PermitRootLogin no
sudo权限控制
/etc/sudoers
,限制特定用户组的权限%webadmin ALL=(ALL) NOPASSWD: /usr/sbin/service nginx *, /usr/sbin/service php-fpm *
目录结构建议
/var/www/
├── example.com
│ ├── public_html/ # 网站根目录
│ ├── logs/ # 日志目录
│ └── tmp/ # 临时文件
权限设置
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
网站根目录特殊设置
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 {} \;
运行用户设置
/etc/nginx/nginx.conf
:user webuser webadmin;
站点配置限制
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-fpm配置
/etc/php-fpm.d/www.conf
:user = webuser
group = webadmin
listen.owner = webuser
listen.group = webadmin
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
创建专用数据库用户
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;
禁用root远程登录
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
FLUSH PRIVILEGES;
日志审计
sudo find /var/log/nginx/ -type f -exec chmod 640 {} \;
sudo find /var/log/php-fpm/ -type f -exec chmod 640 {} \;
定期检查
# 检查SUID文件
sudo find / -perm -4000 -type f -exec ls -la {} \;
# 检查可写目录
sudo find /var/www/ -type d -perm -o=w -exec ls -la {} \;
通过以上设置,您可以建立一个相对安全的LNMP环境权限管理体系。根据实际业务需求,可能需要进一步调整某些权限设置。