Linux 权限设置错误,服务器直接变肉鸡?这 5
刚搬上线的 Linux 服务器,不到半天就被挖矿程序占满 CPU,后台一查,原来是某个目录的权限被顺手设成了 777。
这不是段子——Linux 权限设置错误,服务器直接变肉鸡 是真实反复发生的低级事故。
本文不讲大道理,直接带你从排查到加固,一步步把危险挡在门外。
第一步:记住一个原则,避免 90% 的权限错误
所有文件和目录的权限应该遵循最小够用原则:业务进程用哪个用户运行,就只给那个用户读写执行权限,其他用户一律拒绝。
- 普通文件:
644(属主读写,属组只读,其他只读) - 可执行文件/目录:
755(属主读写执行,属组读执行,其他读执行) - 上传目录(如
uploads):755或750,绝不能给777 - 敏感配置文件(如
.env、config.php):600或640
核心命令:修改权限用 chmod,修改属主用 chown。
第二步:用一条命令找出所有危险文件
登录服务器,切换到 root 或 sudo 用户,执行以下命令扫描:
find / -type f -perm /o+w -exec ls -l {} \; 2>/dev/null
这条命令会列出所有其他用户可写入的文件(即 777、666 等权限)。
攻击者最常利用的入口就是这些文件——直接写入后门脚本。
同样,检查目录:
find / -type d -perm /o+w -exec ls -ld {} \; 2>/dev/null
如果结果里出现了业务目录(如 /var/www/html、/home/user/public_html),赶紧记录下来。
注意:系统目录/sys、/proc、/dev下的结果可忽略,那是内核虚拟文件系统。
第三步:批量修正错误权限
确定危险目录后,用以下命令批量修正:
- 修改文件为
644(可执行文件改为755):
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type f -name "*.sh" -exec chmod 755 {} \;
- 修改目录为
755:
find /var/www/html -type d -exec chmod 755 {} \;
- 如果上传目录需要让 Web 用户写(比如
www-data),则属主改为www-data,权限设为755或750:
chown -R www-data:www-data /var/www/html/uploads
chmod -R 755 /var/www/html/uploads
不要对整个网站递归 777,这是最常犯的错误。
很多新手为了“解决上传失败”,直接 chmod -R 777 整个目录,结果整个站点就成了肉鸡培养皿。
第四步:日常避坑,别让错误权限再次出现
- 上传目录不执行脚本:在 Nginx 或 Apache 配置中禁止解析 PHP 文件。例如 Nginx 的
location ~ \.php$ { deny all; }放在 uploads 目录的 location 里。 - 使用粘滞位:对于多人共享的临时目录(如
/tmp),设置chmod 1777防止用户删除对方文件。 - 定期审计:每周执行一次第二步的
find命令,配合脚本输出报告。 - 不要用 root 运行业务进程:Web 服务用
www-data,数据库用mysql,用最小权限运行。
第五步:验证加固效果,确保没有被渗透
完成权限修正后,检查服务器有没有已被入侵的迹象:
- 查看可疑进程:
top或htop,留意不认识的高 CPU 进程。 - 检查 SSH 登录记录:
last -i看异常 IP。 - 检查定时任务:
crontab -l和/var/spool/cron/crontabs/下是否有不明任务。 - 再次运行
find扫描,确认无777文件。
如果有异常进程或文件,先隔离服务器(断网),再根据 /var/log/secure 或 auth.log 排查入侵来源。
高频问题解答
Q:不小心把 /usr 目录权限改成 777 了怎么办?
A:用系统自带的 RPM(CentOS)或 DEB(Ubuntu)包管理器重新安装相关包。或者从另一台同版本服务器拷贝权限配置。更简单的方法是重装系统——权限错误影响系统命令执行,修复代价极高。
Q:chmod 777 只用了 1 秒,为什么这么危险?
A:777 代表所有用户(包括网站访问者通过 Web 服务进程)都可以写文件。攻击者只要找到一个上传点或注入点,就能写一个 shell 脚本进去,直接控制服务器。
Q:我用了面板(如宝塔),还需要手动检查权限吗?
A:需要。面板只管理它自己创建的文件,你手动上传的目录、程序自身生成的临时文件,权限可能不规范。建议在宝塔的“文件”功能里,选中目录 → 权限 → 设为 755。
如果你正在处理 Linux 权限设置错误,服务器直接变肉鸡 的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。权限不对,安全白费——养成每次上线前检查一遍权限的习惯,服务器才能睡得安稳。