网站目录权限设为 777 本身不会直接导致篡改,但会极大降低攻击门槛,一旦存在代码漏洞,攻击者可轻易写入恶意文件。发现异常后,首要任务是隔离环境、查杀后门,最后才是恢复权限。
【高危警告】修复权限不能清除已植入的后门,必须配合代码审计和木马查杀。
- 先止损:断开外网或开启维护模式,备份当前文件状态保留证据。
- 再查杀:使用工具扫描 WebShell,确认无恶意代码后再修复权限。
- 后加固:批量还原目录 755/文件 644,修正所有者,并立即修改所有相关密码。
一、紧急备份与隔离
在操作前打包当前文件,防止误删导致无法回溯,同时保留入侵证据供分析。
mkdir -p /backup
tar -czf /backup/www_backup_$(date +%F_%H%M).tar.gz /var/www/html
# 建议将备份移至非 Web 目录或离线存储
二、后门排查与清理(关键步骤)
仅修复权限无法清除已存在的 WebShell,必须先排查异常文件。
1. 查找近期变动的 PHP 文件
find /var/www/html -type f -name "*.php" -mtime -7 -ls
2. 搜索可疑代码特征
grep -r "eval" /var/www/html `--include`="*.php"
grep -r "base64_decode" /var/www/html `--include`="*.php"
3. 使用专业工具扫描
推荐结合河马 WebShell 查杀、D 盾等工具进行交叉验证,避免遗漏混淆过的木马。
三、批量修复权限命令
假设网站根目录为/var/www/html,Web 用户为www-data(CentOS 可能为nginx或apache)。
1. 还原目录与文件权限
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
2. 修正文件所有者(注意符号链接风险)
慎用chown -R,若目录中存在指向系统关键目录的符号链接,可能导致意外修改。建议先检查符号链接。
# 检查是否存在符号链接
find /var/www/html -type l -ls
# 确认无误后执行授权
chown -R www-data:www-data /var/www/html
3. 特殊目录处理
上传目录需保留写入权限,但禁止执行脚本(需在 Web 服务器配置中限制)。
chmod 755 /var/www/html/uploads
chown www-data:www-data /var/www/html/uploads
4. 恢复 SELinux 上下文(仅限 CentOS/RHEL)
restorecon -Rv /var/www/html
四、后续安全加固清单
权限修复后,必须执行以下操作防止二次入侵:
- 修改密码:立即修改服务器 SSH 密码、数据库密码、网站后台管理员密码。
- 更新密钥:若代码中包含 API Key 或加密盐值,建议重新生成。
- CMS 特定配置:WordPress 用户建议将
wp-config.php权限设为 440 或 400,并移出 Web 目录。 - 关闭危险函数:在
php.ini中禁用exec、shell_exec等函数。
五、验证与监控
1. 权限验证
find /var/www/html -perm 777
# 若无输出则说明无 777 权限文件
2. 功能测试
测试图片上传、静态资源加载是否正常,观察是否有 403 错误。
3. 日志监控
tail -f /var/log/nginx/access.log | grep "POST"
关注异常 POST 请求,尤其是针对上传接口的频繁访问。
六、常见坑与注意事项
1. 权限过松:严禁将根目录所有者设为 root 且权限 777,这会让 Web 漏洞直接转化为系统权限。
2. 忽略 SELinux:即使 chmod 正确,SELinux 上下文错误也会导致无法写入,需检查ls -Z。
3. 自动更新失效:若网站程序需要自动更新,确保更新目录有写入权限,否则更新会失败。
4. 命令行历史:修复过程中使用的命令可能包含路径信息,注意清理.bash_history或限制访问。