虚拟主机文件权限设置,防止网站被入侵
虚拟主机文件权限设置的核心原则是:目录设为755,文件设为644,上传目录和缓存目录按需放宽,配置文件和敏感脚本严格限制。
错误权限(如777)会让攻击者直接上传木马或篡改代码,是网站被入侵的常见入口。
本文从零基础视角出发,讲清楚权限怎么查、怎么改、怎么验证,帮你在宝塔面板或命令行环境中完成加固。
先判断你的主机环境
虚拟主机一般分两种管理方式:带面板的(如宝塔、cPanel)和纯命令行的。
判断方法很简单——登录后台能看到文件管理、权限修改按钮的,就是面板环境;
只能通过SSH或FTP操作的,就是命令行环境。
不管哪种环境,权限设置的目标都一样:让网站程序能正常读写必要文件,同时不给攻击者留可执行、可写入的入口。
下面分别给出操作路径。
标准权限怎么设:目录755、文件644
Linux权限用三位数字表示:第一位是所有者权限,第二位是组权限,第三位是其他人权限。
7代表读+写+执行,5代表读+执行,4代表只读。
目录必须带执行权限,否则无法进入目录读取文件,所以标准是755。文件通常不需要执行权限,标准是644。
宝塔面板操作路径
- 登录宝塔面板,进入「文件」页面。
- 找到网站根目录,通常是
/www/wwwroot/你的域名。 - 选中所有目录,点击「权限」,设为
755,所有者选www,用户组选www,勾选「应用到子目录」。 - 再选中所有文件,点击「权限」,设为
644,所有者和用户组同样选www。
注意:宝塔面板的权限设置界面里,所有者通常显示为 www,这是Nginx或Apache的运行用户,不要改成root。
命令行操作示例
如果你有SSH权限,可以用以下命令批量设置:
# 进入网站根目录
cd /www/wwwroot/你的域名
# 所有目录设为755
find . -type d -exec chmod 755 {} \;
# 所有文件设为644
find . -type f -exec chmod 644 {} \;
执行后可以用 ls -l 查看结果,目录行首显示 drwxr-xr-x,文件显示 -rw-r--r--,就说明设置正确。
哪些目录需要特殊处理
标准权限不能一刀切。
网站运行过程中,有些目录必须允许写入,否则上传图片、生成缓存会失败。
上传目录:如 uploads、attachment,通常需要设为755或775,但绝对不能给执行权限。
更安全的做法是在Nginx配置中禁止该目录执行PHP,例如:
location ~* /uploads/.*\.php$ {
deny all;
}
缓存目录:如 runtime、cache,需要可写,一般设为755即可,部分程序要求775。
配置文件:如 config.php、.env,包含数据库密码,建议设为600或640,只允许所有者读写。
chmod 600 config.php
chmod 640 .env
注意:不要为了省事把整个网站设为777。
777意味着任何人可读可写可执行,攻击者上传一个PHP文件就能直接运行,这是最危险的做法。
避坑指南:权限设置中的常见错误
坑一:只改顶层目录,没应用到子目录。 面板操作时要勾选「应用到子目录」,命令行要用 find 递归处理,否则深层文件权限依然错误。
坑二:所有者和用户组设错。 如果所有者是root,网站程序以www用户运行时可能无法读取文件,表现为白屏或403错误。
统一设为Web运行用户(宝塔通常是www,CentOS下可能是apache或nginx)。
坑三:上传目录给了执行权限。 即使权限数字是755,如果PHP能在这个目录执行,攻击者上传的图片马依然可能被触发。
建议在Web服务器层面禁止上传目录执行脚本。
坑四:改完权限没重启服务。 部分环境下权限变更后需要重启Nginx或PHP-FPM才能生效:
systemctl restart nginx
systemctl restart php-fpm
验证权限是否生效
改完权限后,按以下步骤验证:
- 访问网站首页,确认能正常打开,没有出现403 Forbidden或500错误。
- 测试上传功能,上传一张图片,确认能成功保存并显示。
- 检查敏感文件,在浏览器访问
你的域名/config.php,应该返回空白或403,不能直接显示文件内容。 - 用命令复查,执行
find . -type f -perm 777,如果输出为空,说明没有文件被设为777。
如果网站出现异常,优先检查错误日志:
tail -f /www/wwwlogs/你的域名.error.log
日志中如果出现 Permission denied,说明某个文件或目录权限不足,根据路径单独调整即可。
常见疑问
虚拟主机文件权限设置后网站打不开怎么办? 先看错误日志,如果是权限拒绝,检查网站根目录和上级目录是否都有执行权限。
有时 /www/wwwroot 本身权限不对也会导致问题。
777权限真的不能用吗? 临时排错时可以短暂使用,但排错后必须改回755或644。
长期使用777等于把网站大门敞开。
FTP上传的文件权限不对怎么批量修复? 通过SSH执行前面给出的 find 命令即可,或者在面板文件管理中全选后统一修改。
为什么设置了644,网站还是被入侵? 权限只是防线之一。
还需要及时更新程序版本、使用强密码、安装防火墙、定期备份。
权限设置能挡住大部分低级攻击,但不能替代整体安全维护。
虚拟主机文件权限设置不是一次性的工作。
每次安装新插件、上传新程序后,都建议复查一遍关键目录的权限。
把目录755、文件644作为默认规则,上传目录禁执行、配置文件限只读作为补充规则,就能显著降低网站被入侵的风险。