企业级linux权限设计需遵循最小权限、职责分离、可审计性、一致性四原则,通过fhs强化目录归属、角色化权限分配、符号模式标准化操作及自动巡检审计实现闭环管理。

企业级 Linux 权限设计不是“设得越严越好”,也不是“图省事全给 777”,而是围绕最小权限原则、职责分离、可审计性、一致性四个核心建立可落地的规范。下面直接给出运维团队实际采用的结构化设计要点,不含空泛理论。
一、目录层级与归属强制约定(FHS 基础 + 企业增强)
所有生产服务器必须严格遵循 FHS,并补充以下硬性规则:
-
/home/*:仅属主可读写执行(
700),禁止组和其他人访问;SSH 密钥目录(~/.ssh)必须为700,密钥文件(id_rsa)必须为600 -
/etc/:配置文件默认
644,敏感配置(如/etc/shadow、/etc/pki/tls/private/)必须为600,目录本身755;新增配置目录需明确声明所属组(如nginx-conf组) -
/var/log/:日志目录
755,日志文件由服务进程自动创建,属主为对应服务用户(如nginx、mysql),权限640;轮转后保留组读权限便于日志分析组统一采集 -
/opt/appname/ 和 /srv/appname/:应用部署目录,属主为部署用户(如
deploy),属组为运行组(如appgroup),目录权限750,静态资源可放宽至755,但config/、secrets/子目录必须为750或700 -
/tmp 和 /var/tmp:必须启用 sticky bit(
1777),防止跨用户删文件;禁止存放长期配置或密钥
二、权限分配三原则(谁该有什么权)
不靠经验判断,用角色映射表固化:
-
运维人员:加入
adm(查日志)、docker(容器操作)、sysadmin(自定义管理组)等职能组;禁止直接使用 root 登录,sudo 权限按命令白名单控制(如只允许/bin/systemctl restart nginx,不允许/bin/bash) -
应用服务账户(如
www-data、redis):仅对自身运行所需路径有最小权限(如/var/www/html可读,/var/run/nginx.pid可写),禁止 shell 登录(/sbin/nologin),禁止 home 目录 -
开发/测试账号:归属
dev组,仅在/home/dev/和指定共享区(如/srv/shared-dev,权限2775启用 setgid)有写权限;严禁访问/etc、/var/log等系统路径 -
审计账号(如
audit):仅赋予read-only权限(sudo -l限制为cat /var/log/secure、journalctl --no-pager等只读命令)
三、权限设置标准化操作(杜绝 chmod 777)
所有权限变更必须通过脚本或配置管理工具(Ansible/Chef)执行,人工操作需留痕:
- 新建文件默认权限由
umask 0027控制(即文件640,目录750),全局写入/etc/profile.d/umask.sh - 修改权限统一用符号模式,明确意图:
•chmod g+s /srv/appdata(确保新文件继承组)
•chmod o-wx /etc/nginx/conf.d/(显式移除其他用户权限)
•chmod u=rw,g=r,o= /etc/my.cnf(精确赋权,不依赖数字推算) - 敏感目录(如证书、密钥、数据库配置)启用 ACL 补充控制:
setfacl -m u:backup:r-- /etc/ssl/private/,同时禁用默认 ACL 继承以防扩散 - 定期扫描违规权限:
find /etc -type f -perm -o+w -o -perm -o+x 2>/dev/null(找其他用户可写可执行文件)
四、检查与审计机制(让规范真正生效)
权限不是设完就结束,需闭环管理:
- 上线前安全检查项必须包含:
ls -ld /var/www、ls -l /etc/nginx/conf.d/、stat /etc/shadow,结果纳入发布流水线门禁 - 每月自动巡检:用
auditd监控关键目录(/etc、/var/log)的权限变更事件,告警发送至运维群 - 权限文档随系统更新:每个应用部署包内附
PERMISSIONS.md,明确列出目录树、属主属组、权限值、设置命令和例外说明 - 新员工入职培训第一课:不是讲命令语法,而是带看真实服务器上
/etc/passwd和ls -l /home的权限分布,建立权限直觉











