服务器运维托管
服务器文件权限设置最佳实践经验

文件权限是Linux服务器安全体系中最早设立的防线。错误的权限配置可能导致敏感数据泄露、恶意代码执行甚至服务器被完全控制。很多时候攻击者能够攻入系统的根源不是哪个高危漏洞,而是某个目录的权限被设置得过于宽松,一个错误的位置就打开了入侵的大门。

最小权限原则的落地实践

最小权限原则是文件权限管理的核心指导思想。每个用户和进程只被授予完成本职工作所需的最小权限。权限从粗到细分为所有者、组和其他用户三级。常见误区是将目录或文件设为七七七权限导致所有用户都可以随意修改。正确的做法是为每个目录和文件单独评估所需权限。Web目录的静态文件使用六四四即可,上传目录根据写入方式确定。配置文件权限设为六零零仅允许所有者读取。执行权限只赋予确实需要执行的程序,不要给数据文件添加无用的执行位。审查每个关键文件的所属用户和组是否合理,杜绝越级使用权限的可能性。

所有者与组的规划管理

合理规划文件所有者和所属组可以避免权限交叉混乱。为每个应用单独创建运行用户,Web服务使用www用户运行,数据库使用mysql用户运行。应用相关文件归属其对应的运行用户,避免使用root用户运行普通服务。多个运维人员协作时通过创建不同用户组分配权限。Web开发组对代码目录有读写权限,监控组只有只读权限。定时任务检查文件和目录归属是否正确,发现异常及时告警。切勿共享同一系统账号给多人使用,出现问题无法定位到具体责任人。

SUID与SGID的风险管控

SUID和SGID是特殊权限位,允许程序以文件所有者身份而非执行者身份运行。最危险的是属于root用户的SUID程序,漏洞利用后直接获得管理员权限。运维人员需要定期使用find命令扫描全系统中设置了SUID和SGID的可执行文件,保留确实需要的标准程序并卸载不必要部分。网络服务和文件管理类程序通常不需要SUID权限。设置定时任务定期扫描SUID位文件生成报告,异常变化立即告警。新增安装的软件包要注意检查是否带了不必要的SUID程序,提防后门利用特殊权限实施提权攻击。

umask与ACL精细控制

umask决定新建文件和目录的默认权限。系统默认umask通常是零二二,高安全环境可调整为零二七甚至零七七。每个服务在启动脚本中设置自己的umask值不依赖全局设置。文件上传目录的umask尤其谨慎。当传统三种角色模型不够用时ACL提供更灵活的方案,为任意用户或组设置独立权限。setfacl设置规则getfacl查看配置。ACL规则可细化到单个用户对文件的具体读写执行权限。常用场景如日志目录给运维组写入权限又给开发组读取权限。软开宝建议将文件权限检查纳入日常巡检清单,发现异常配置及时修复。