网站根目录权限设置核心是分层隔离与最小授权:根目录设755(所有者全权、组及其他仅读执行),上传目录单独设755并禁用php解析,缓存等运行时目录设750且归属deploy:www-data,敏感配置文件须移出web根并设600权限。

网站根目录的权限设置,核心是“分层隔离+最小授权”:不是统一设一个755就完事,而是按功能把目录拆开,给每类目录配它真正需要的权限。
根目录本身设755,但不直接放可写内容
像 /www/wwwroot/example.com 这类根目录,应设为 755(即 rwxr-xr-x):
- 所有者(通常是部署用户)可读、写、执行——方便上传、更新、删文件
- 属组(如 www-data)和其他人只能读和进入——Web服务器能正常加载页面,但不能意外改目录结构
- 注意:该目录下不直接存放上传文件或缓存,否则会扩大风险面
上传目录单独隔离,权限755 + 禁用PHP执行
例如 /www/wwwroot/example.com/uploads/:
- 权限设为 755,确保Web服务器能写入(上传)和读取(展示图片等)
- 必须通过 Web 服务器配置禁用 PHP 解析,比如 Nginx 中加:
location ~ ^/uploads/.*\.(php|php5|phtml|php7|php8)$ { deny all; } - 避免设成777或775——组和其他人无需写权限,只增攻击面
缓存与运行时目录设750,归属www-data组
像 /storage/、/cache/、/runtime/ 这类由PHP自动写入的目录:
- 权限建议 750(rwxr-x---),即所有者可全操作,属组可读执行,其他人无任何权限
- 所有权设为:chown -R deploy:www-data /path/to/cache,让部署用户和Web服务同组协作
- 比755更安全,尤其适用于多租户或团队共用服务器的场景
配置文件移出Web根目录,权限收紧到600
数据库密码、API密钥等敏感文件(如 config.php、.env):
- 绝不能放在 /www/wwwroot/ 下——应移到上层非公开路径,例如 /www/config/example.com/
- 权限设为 600(rw-------),仅所有者可读写,Web进程完全不可见
- PHP脚本通过绝对路径包含,而非URL访问,从源头杜绝泄露可能











