Ubuntu LAMP权限设置关键注意事项
权限设置需满足功能需求但不超出必要范围。例如,普通网站文件无需写权限,上传目录除外;目录无需执行权限(除非存放可执行脚本)。过度授权会增加被攻击的风险。
Apache/Nginx等Web服务通常以www-data用户/组运行(可通过ps aux | grep apache2确认)。将网站根目录(如/var/www/html)及其子文件/目录的所有者设为www-data,确保Web进程能读取文件:
sudo chown -R www-data:www-data /var/www/html。
644(所有者可读写,其他用户仅读),避免不必要的写权限;755(所有者可读写执行,其他用户可读执行),确保Web进程能进入目录;/var/www/html/uploads)需赋予写权限(775),但需限制上传文件类型(如禁用PHP执行),防止恶意脚本运行。.htaccess(Apache配置文件):设为644,避免泄露目录访问规则;.htpasswd(密码文件):设为640,并存储在Web根目录之外(如/etc/apache2/.htpasswd),防止未经授权的下载。777(所有用户可读写执行)会彻底破坏权限体系,可能导致恶意用户上传并执行恶意脚本。仅在调试时临时使用,调试完成后立即恢复为最小权限。
确保Apache运行用户(APACHE_RUN_USER)和组(APACHE_RUN_GROUP)与网站文件所有者一致(默认均为www-data)。修改/etc/apache2/envvars文件中的对应行,重启Apache使设置生效:
sudo systemctl restart apache2。
在/etc/php/{version}/apache2/php.ini中(如/etc/php/8.1/apache2/php.ini),禁用eval()、exec()、system()等危险函数,防止PHP脚本执行系统命令。修改后重启Apache:
sudo systemctl restart apache2。
使用ls -l /var/www/html定期检查文件/目录权限,确保未出现异常授权(如非www-data用户的写权限)。建议每月至少审计一次。
权限设置需与其他安全措施配合使用:
sudo apt update && sudo apt upgrade),修复已知漏洞。