linux账户uid/gid需分段管控:uid 0仅root,1–999为系统账户,1000–59999为普通用户,60001–65535专用于容器;通过/etc/login.defs固化配置,并扫描迁移越界存量账户。

设置Linux系统账户的UID与GID范围,核心是通过分段隔离实现身份边界控制,而非简单限制数值大小。企业级规范强调“默认拒绝、最小权限、可审计”,需从配置、清理、联动三方面同步落地。
明确并固化UID/GID分段策略
主流发行版(如RHEL 8+/Ubuntu 22.04+)已默认采用安全分段,但需人工确认并加固:
-
UID 0:仅限
root,禁止任何其他账户使用;检查命令:awk -F: '$3 == 0 && $1 != "root" {print}' /etc/passwd -
UID 1–999:纯系统账户区间,含
daemon、sshd、www-data等,不得创建普通用户 - UID 1000–59999:普通登录用户专用范围,建议上限设为59999(预留1位防溢出)
- UID 60001–65535:容器、沙箱或临时服务专用,避免与宿主用户冲突
- GID划分逻辑与UID完全一致,且启用
USERGROUPS_ENAB yes确保每个用户拥有独立私有组
修改/etc/login.defs强制新用户合规
该文件决定useradd等工具的默认行为,所有新建账户均受其约束:
- 编辑
/etc/login.defs,确保以下行存在且值正确:UID_MIN 1000UID_MAX 59999GID_MIN 1000GID_MAX 59999USERGROUPS_ENAB yes - 若环境无需本地家目录(如统一挂载NFS),可设
CREATE_HOME no减少攻击面 - 修改后立即生效,无需重启,但仅影响后续新建用户
扫描并迁移越界存量账户
历史账户常存在UID/GID错配,必须主动识别并修正:
- 查出非法低UID普通用户:
awk -F: '$3 - 查出非法低GID普通组:
awk -F: '$3 - 对确认非系统服务的越界账户,用
usermod -u 1001 -g 1001 username迁移至安全区间 - 同步修复属主:先改UID/GID,再递归修正家目录及文件属主,例如
find /home -uid 原UID -exec chown -h 1001 {} \;find /var -gid 原GID -exec chgrp -h 1001 {} \;
叠加访问控制形成纵深防御
仅设UID/GID范围不够,必须与关键管控机制联动:
- 禁用root远程登录:
PermitRootLogin no写入/etc/ssh/sshd_config并重载sshd - 收紧sudo权限:删除
%wheel ALL=(ALL) ALL类宽泛授权,按角色授予具体命令 - 审计关键变更:在
/etc/audit/rules.d/中添加规则,监控/etc/passwd、/etc/group修改事件 - 定期校验:将UID/GID扫描脚本加入cron,每周自动报告异常项











