服务器文件系统权限最小化核心是按需授权:web静态资源设755/644且属服务用户组,上传目录用750+精准组管理,敏感配置必须600/400,禁用777等宽泛权限,辅以acl和定期权限扫描验证。

服务器文件系统权限最小化,核心是让每个文件或目录只对真正需要访问它的用户或进程开放必要权限,不多给一丁点,也不少给关键项。
按角色和用途划分属主与属组
权限数字(如755)只是结果,关键是归属是否匹配实际使用场景:
- Web静态资源(如
/var/www/html)应属www-data:www-data(或对应服务用户组),目录设755、文件设644,禁止写入 - 上传目录(如
/var/www/uploads)可设750,属组为www-data,再把可信维护人员加入该组,不开放world-writable - 敏感配置(如
/etc/nginx/nginx.conf、数据库密码文件)必须600或400,属主为服务运行用户,组和其他用户一律无读权限
禁用高危权限组合
777、666、775这类宽泛权限在生产环境应视为异常信号:
- 绝对避免
chmod 777——它等于向所有用户开放读、写、执行,极易被恶意脚本利用 - 慎用
chmod 775:若非协作必需,优先用750+精准组管理 - 新建目录默认继承父目录权限,可通过
umask 027限制新文件组可读、其他不可读写
用ACL补充传统权限的不足
当标准三元(user/group/others)不够灵活时,ACL能实现单文件/目录级精细授权:
- 给特定用户添加读写权限:
setfacl -m u:deploy:rwx /var/www/app - 设置默认ACL,使子目录自动继承:
setfacl -d -m g:devs:rx /var/www/app - 查看ACL设置:
getfacl /var/www/app;移除ACL:setfacl -b /var/www/app
定期检查与清理冗余权限
权限会随时间漂移,需建立常态化验证机制:
- 扫描world-writable目录:
find /var/www -type d -perm -002 - 查找敏感文件被非属主可读:
find /etc -type f -perm -o+r -o -perm -g+w 2>/dev/null - 确认关键服务目录归属正确:
ls -ld /var/log/nginx /var/lib/mysql,应分别属www-data、mysql
不复杂但容易忽略:文件权限最小化不是一次配置完就结束的事,而是配合用户角色、服务行为、业务流程持续对齐的过程。











