服务器文件权限加固只读文件被修改_从原理到解决_排查与处理_详细教程
很多Linux服务器管理员遇到过这样的困惑:明明已经把文件设置为只读权限(chmod 444或chattr +i),但文件还是被修改了,甚至被植入了木马。这时候第一反应是权限设置没生效,但实际上Linux系统中能绕过只读限制的方式有很多种。本文从原理到实操,全面分析只读文件仍被修改的各种原因,并给出对应的解决办法。
第二种原因是chattr +i属性被解除。chattr命令设置的不可修改属性(immutable)确实可以防止文件被修改、删除、重命名,但这个属性只有root可以设置和解除。如果攻击者获得了root权限,执行chattr -i就能解除属性,然后修改文件。更隐蔽的方式是攻击者不解除属性,而是直接替换文件:删除原文件(需要先解除i属性)或者创建一个同名文件替换。解决方法是除了chattr +i,还需要监控chattr命令的执行,使用auditd记录文件属性变更。
第三步是检查Web服务的运行用户和配置。使用ps aux | grep nginx或ps aux | grep httpd查看Web服务的运行用户,确认不是root。查看php-fpm的运行用户,确认与网站文件所有者一致。查看网站目录的权限,确认upload和cache目录之外的目录都是只读的。检查php.ini中的disable_functions,确认禁用了exec、system、shell_exec等危险函数。如果Web服务运行在root下,必须立即修改为普通用户,这是最基本的安全要求。
第二,系统权限加固:禁用root直接登录,使用sudo授权普通用户执行管理操作。配置密码复杂度策略和登录失败锁定。关闭不必要的系统服务和端口。配置防火墙只允许必要的IP访问SSH端口。定期更新系统安全补丁。这些基础加固能大幅降低被入侵获取root权限的概率。
运维案例:客户的服务器设置了chattr +i但文件还是被改了,排查后发现攻击者获取了root权限,先执行chattr -i解除属性,修改文件后再chattr +i恢复属性,操作非常隐蔽。后来配置了auditd监控chattr命令,下次攻击者操作时立即告警,及时阻断了入侵。
配置提醒:设置文件只读权限后,记得重启Web服务和相关进程,确保进程重新打开文件时权限检查生效。同时测试网站功能是否正常,特别是需要写入文件的功能(如上传、缓存、日志),避免因为权限设置导致网站功能异常。

更新时间:2026-08-26 20:32:52