LAMP(Linux、Apache、MySQL、PHP)环境中,权限设置直接影响服务器安全性与功能正常性。以下是分模块、分场景的详细操作步骤:
LAMP环境中,Apache默认以www-data用户/组运行,所有网站文件需归属该用户/组,确保Apache能正常读取/写入文件。
ps aux | grep apache2,检查输出中的用户(通常为www-data)。/etc/apache2/envvars文件,找到并修改以下两行:export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
保存后重启Apache:sudo systemctl restart apache2。网站根目录(默认/var/www/html)的权限需兼顾功能需求与安全性:
www-data,所属组也设为www-data:sudo chown -R www-data:www-data /var/www/html
7),其他用户仅读/执行(5),避免目录无法访问:sudo find /var/www/html -type d -exec chmod 755 {} \;
6),其他用户仅读(4),防止敏感信息泄露:sudo find /var/www/html -type f -exec chmod 644 {} \;
.htaccess(Apache配置文件):644(所有者读/写,其他用户读);.htpasswd(密码文件):640(所有者读/写,组用户读),且需存放在Web根目录外(如/etc/apache2/.htpasswd)。MySQL权限需针对数据库用户与数据库精细化配置,避免过度授权:
sudo mysql -u root -p(输入root密码)。CREATE DATABASE mydatabase; -- 创建数据库
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'StrongPassword123'; -- 创建用户(强密码)
SELECT, INSERT):GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES; -- 刷新权限使变更生效
EXIT;PHP脚本的执行权限需与Apache用户一致,避免“权限不足”错误:
open_basedir(可选):/etc/php/8.1/apache2/php.ini),限制PHP脚本只能访问网站目录:open_basedir = /var/www/html/:/tmp/
保存后重启Apache:sudo systemctl restart apache2。若系统启用了安全模块,需调整策略以避免冲突:
sestatus(若显示Enforcing,需临时禁用:sudo setenforce 0);/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启系统。sudo aa-status;/etc/apparmor.d/usr.sbin.apache2),添加网站目录访问权限:/var/www/html/** r,
/var/www/html/* rw,
sudo systemctl reload apparmor。777,动态网站无需777);ls -l /var/www/html检查权限,及时修复异常;777权限:777会让所有用户修改文件,极大增加安全风险;通过以上步骤,可完成Ubuntu LAMP环境的权限设置,确保服务器稳定运行且安全可控。