温馨提示×

ubuntu lamp权限设置方法

小樊
42
2026-01-06 18:17:02
栏目: 智能运维

Ubuntu LAMP 权限设置方法

一 基础安全原则

  • Web 服务进程在 Ubuntu 上通常以 www-data 用户/组运行,文件与目录应归该用户所有,避免给全局写权限。
  • 目录需要执行权限才能进入,文件一般不需要执行权限;上传目录应单独设置可写,其余目录保持只读。
  • 避免使用 777,优先采用最小权限:目录 755,文件 644;上传目录 775 并限制写入者。
  • 开发机可临时放宽以便编辑,上线前务必收紧权限与所有权。

二 标准权限配置步骤

  • 设置网站根目录所有权(以 /var/www/html 为例)
    • 将目录及内容的所有者改为 www-datasudo chown -R www-data:www-data /var/www/html
    • 设置目录权限为 755、文件权限为 644sudo find /var/www/html -type d -exec chmod 755 {} + && sudo find /var/www/html -type f -exec chmod 644 {} +
  • 允许开发者写入(不改动文件所有者)
    • 将当前登录用户加入 www-data 组:sudo usermod -a -G www-data $USER
    • 仅对需要协作的目录放开组写:sudo chmod -R 775 /var/www/html/storage /var/www/html/uploads
    • 确保目录权限位包含组执行:sudo find /var/www/html/storage /var/www/html/uploads -type d -exec chmod g+x {} +
    • 使组变更生效:newgrp www-data(或重新登录)
  • 禁止访问敏感文件
    • 例如屏蔽 .htaccess.envsudo chmod 600 /var/www/html/.htaccess /var/www/html/.env
  • 可选 仅当前用户可写(便于本地开发)
    • sudo chown -R $USER:www-data /var/www/html && sudo find /var/www/html -type d -exec chmod 755 {} + && sudo find /var/www/html -type f -exec chmod 644 {} +
  • 注意
    • 不要对整个站点使用 chmod -R 777;这会带来严重的安全风险。

三 典型场景与命令示例

场景 推荐权限与所有权 关键命令示例
生产站点(只读代码、上传可写) 目录 755、文件 644;上传目录 775;所有者 www-data:www-data sudo chown -R www-data:www-data /var/www/html && sudo find /var/www -type d -exec chmod 755 {} + && sudo find /var/www -type f -exec chmod 644 {} + && sudo chmod 775 /var/www/html/uploads && sudo chmod g+x /var/www/html/uploads
开发协作(开发者需写入) 所有者 www-data:www-data;开发者加入 www-data 组;协作目录 775 sudo usermod -a -G www-data $USER && sudo chmod -R 775 /var/www/html/storage /var/www/html/uploads && sudo find /var/www/html/storage /var/www/html/uploads -type d -exec chmod g+x {} +
仅当前用户可写(本地开发) 所有者 $USER:www-data;目录 755、文件 644 sudo chown -R $USER:www-data /var/www/html && sudo find /var/www/html -type d -exec chmod 755 {} + && sudo find /var/www/html -type f -exec chmod 644 {} +
禁止访问敏感文件 敏感文件 600 sudo chmod 600 /var/www/html/.htaccess /var/www/html/.env

四 验证与故障排查

  • 检查 Apache 运行用户:ps aux | grep apache2,应看到以 www-data 运行的进程。
  • 验证目录/文件权限与所有权:ls -ld /var/www/html /var/www/html/index.php /var/www/html/uploads
  • 验证上传:在浏览器访问测试页或尝试上传,确认 775 的目录可写且 644 的文件不可写。
  • 若遇到写入失败或 403,优先检查:
    • 目录是否有组执行位:find /var/www/html -type d -exec chmod g+x {} +
    • 当前用户是否在 www-data 组:groups $USER
    • SELinux/AppArmor 是否限制(如启用需相应策略放行)。

0