Ubuntu LAMP 权限管理实操指南
一 基础安全基线
ps aux | grep apache2 查看;如需变更,编辑 /etc/apache2/envvars 中的 APACHE_RUN_USER 与 APACHE_RUN_GROUP,然后重启:sudo systemctl restart apache2。sudo chown -R www-data:www-data /var/www/htmlfind /var/www/html -type d -exec chmod 755 {} \;find /var/www/html -type f -exec chmod 644 {} \;二 按目录细化权限
sudo chown -R www-data:www-data /var/www/html/uploadssudo chmod -R 755 /var/www/html/uploads(目录需执行位以便进入)find /var/www/html/uploads -type f -exec chmod 644 {} \;(文件保持 644)sudo usermod -a -G www-data $USER(将当前登录用户加入 www-data 组)sudo chown -R www-data:www-data /var/www/html/var/{log,cache} 与 chmod 755find /var/www/html/var/{log,cache} -type f -exec chmod 644 {} \;三 PHP 与 Apache 相关权限控制
open_basedir = /var/www/html/:/tmp/,限制脚本可访问路径。APACHE_RUN_USER/APACHE_RUN_GROUP 并重启服务。sudo aa-status;若需调试可用 sudo aa-complain /usr/sbin/apache2,生产环境建议编写精确策略而非完全放行。sestatus 查看状态,必要时调整策略或临时 sudo setenforce 0(仅测试用途)。四 MySQL 权限管理
GRANT ALL PRIVILEGES ON *.*。CREATE DATABASE myapp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPassword!';GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON myapp.* TO 'appuser'@'localhost';FLUSH PRIVILEGES;'appuser'@'your_ip' 并限制来源 IP,避免使用通配主机 '%'。五 快速排查与常用命令
ps aux | grep apache2、id www-datals -l /var/www/html、namei -l /var/www/html/index.php(逐层检查路径权限)sudo systemctl restart apache2sudo aa-status、sudo aa-complain /usr/sbin/apache2、sestatus