宝塔网站目录权限必须遵循最小权限原则,正确修复需三步:chown -R www:www .、find . -type f -exec chmod 644 {} \;、find . -type d -exec chmod 755 {} \;,并为wp-content等运行时目录单独赋写权限。
网站文件权限设错,轻则 500 错误、静态资源加载失败,重则被利用写入 WebShell —— 宝塔默认的用户和目录权限组合,必须严格遵循「最小权限原则」,不能直接或放任 root 所有。
为什么宝塔网站目录常出现权限错误
宝塔在创建站点时会自动设置基础权限,但以下操作极易破坏它:
用 FTP 工具(如 FileZilla)以 root 登录后上传/解压文件,导致新文件属主变成
,而 Nginx/Apache 进程以
用户运行,无权读取
手动执行
后忘记改回
通过宝塔「文件」管理器点击「批量修改权限」误选「包括子目录」并勾选「执行权限」,给 PHP 文件加了
位
WordPress 等程序自动更新失败后残留临时文件,属主混乱
正确修复网站目录权限的三步命令
进入终端,以 root 身份执行(注意替换
为实际站点目录名):
说明:
:递归把当前目录及所有子项属主/属组设为
,这是前提;Nginx/Apache 必须能读取(且仅读取)这些文件
:所有文件设为
(
),禁止执行位 —— PHP 脚本靠解释器执行,不需要
:所有目录设为
(
),保证 Web 服务能进入子目录,但不开放写权限
特别注意:
(WordPress)、
(ThinkPHP)、
(Laravel)等需要运行时写入的目录,需单独补加写权限:
。
哪些目录绝对不能开放写权限
以下路径一旦被攻击者获得写权限,极易被植入后门或覆盖核心代码:
、
等入口脚本和后台目录 —— 必须保持
或
,禁止
用户写入
下的配置文件(如
)和扩展目录 —— 属主应为
,非必要不改动
—— 宝塔用于防跨站,若被篡改可绕过 open_basedir 限制
检查方法:
,确认权限列不含
(如
就是危险信号)。
宝塔后台「权限设置」功能的坑
宝塔面板「文件」→「权限设置」界面看似方便,但有隐性风险:
勾选「包括子目录」时,会把符号链接(如
)当成普通目录递归处理,可能误改源目录权限
「数字权限」输入框填
,它会同时应用到文件和目录 —— 这会导致 PHP 文件变成
,Nginx 可能拒绝解析(部分版本报
)
「用户组」下拉菜单里选
,但未同步勾选「递归设置用户组」,子目录仍保留旧属组(如
)
建议:日常维护优先用命令行修复,面板仅用于快速查看;涉及软链或复杂结构时,务必先
确认目标类型再操作。
权限修复不是一劳永逸的事——每次通过 FTP 上传、解压 ZIP、或运行一键安装脚本后,都要重新核对属主和权限。最稳妥的做法,是在站点根目录部署一个简短的校验脚本,定期检查关键文件是否被意外改写权限。
wwwwwwrootchmod -R 777rootwwwchown -R root:root /www/wwwroot/xxxxyour_sitecd /www/wwwroot/your_site
chown -R www:www .
find . -type f -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;chown -R www:www .wwwfind . -type f -exec chmod 644 {} \;644rw-r--r--xfind . -type d -exec chmod 755 {} \;755rwxr-xr-xwp-contentruntimestoragechmod 755 wp-content && chmod 775 wp-content/{cache,uploads}/www/wwwroot/your_site/index.php/www/wwwroot/your_site/wp-admin644755www/www/server/php/php.iniroot:root/www/wwwroot/your_site/.user.inils -l /www/wwwroot/your_site | grep -E "(index\.php|wp-admin|.user.ini)"w-rw-rw-r--public/storage → ../storage/app/public755-rwxr-xr-xFile not found.wwwrootls -la