服务器权限控制核心是“只给刚好够用的权限”,即最小特权原则(polp):用户账户需分角色、禁root、配专属账号;服务进程须降权运行、禁用root;文件目录坚持基准权限+acl补位;并实施持续审计与管控。

服务器权限控制的核心不是“怎么给够权限”,而是“怎么只给刚好够用的权限”。最小特权设计原则(PoLP)要求每个用户、服务或进程,只拥有完成其任务所必需的最低限度权限——多一分风险,少一分隐患。
用户账户:分角色、禁root、配专属账号
所有远程管理必须绕过root直连。修改/etc/ssh/sshd_config,设PermitRootLogin no,重启sshd生效。日常运维使用普通用户登录,例如创建专用账号:
useradd -m -s /bin/bash deployer
再通过sudo精细化授权,而非直接给sudo ALL。
- 为不同职能建独立账号:webadmin、dbbackup、logreader,不混用
- 服务类账户应禁用交互登录:用useradd -r -s /sbin/nologin nginx_user
- 禁用密码登录,强制使用密钥认证,提升身份验证强度
服务与进程:降权运行,不碰root
服务默认以root启动是历史遗留陷阱。Nginx、Redis、MySQL等都应配置为非特权用户运行:
- Nginx主配置中加user nginx_user;,并确保其对站点目录有读取权限
- 用Linux Capabilities替代root:如让Nginx绑定80端口,执行setcap 'cap_net_bind_service=+ep' /usr/sbin/nginx
- Docker容器内避免root:启动时指定--user 1001:1001或在Dockerfile中写USER 1001
文件与目录:基准权限+ACL补位
不依赖“chmod 777”救急,坚持基础权限规范:
- 常规目录用755(属主rwx,组和其他rx),普通文件用644
- 密钥、配置文件等敏感资源设为600或640,仅限属主或指定组访问
- 多人协作目录(如/data/shared)用ACL补充权限:setfacl -m u:alice:rwx,g:devs:rx /data/shared
权限审计与持续管控
权限不是一次配置就高枕无忧。定期检查和留痕是闭环关键:
- 用sudo -l -U username确认某用户实际可用的sudo命令
- 查异常提权行为:grep "sudo:" /var/log/auth.log | tail -20
- 启用sudo日志记录,在/etc/sudoers中添加Defaults logfile="/var/log/sudo.log"
- 每季度运行find /etc /var/www -perm -4000 -o -perm -2000排查可疑SUID/SGID文件











