合理设置UID/GID范围是限制越权和降低提权风险的基础:0为root专用;1–999为系统账户;1000–59999为普通用户;60001–65535预留容器使用;需修改/etc/login.defs、清理越界账户并叠加SSH、sudo、审计等管控措施。

设置合理的 UID 与 GID 范围是限制普通用户越权、降低提权风险的基础手段。核心不是“禁止高权限”,而是通过范围隔离+策略约束,让系统账户与用户账户互不干扰,避免误配或恶意复用关键 ID。
明确系统与普通用户的UID/GID分段规则
Linux 内核本身不限制数值大小,但发行版靠约定实现安全隔离:
- UID/GID 0:仅 root 用户和 root 组使用,不可分配给任何普通账户
- 1–999(常见为1–499):系统账户专用区间,如 daemon、sys、www-data、sshd 等,由软件包安装时静态写入 /etc/passwd,不应手动创建普通用户落入此段
- 1000–60000:普通登录用户默认分配范围,Ubuntu、Fedora、Debian 等主流发行版均采用此策略;建议将上限设为 59999,预留 1 位缓冲防溢出
- 60001–65535:可保留给容器、服务沙箱或临时进程使用,避免与常规用户冲突
修改 /etc/login.defs 控制自动分配行为
useradd 命令默认读取该文件决定 UID/GID 分配逻辑,调整后所有新用户均受约束:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 编辑 /etc/login.defs,确认或修改以下行(无则添加):
UID_MIN 1000UID_MAX 59999GID_MIN 1000GID_MAX 59999 - 启用
USERGROUPS_ENAB yes:确保每个新用户自动创建同名私有组(GID = UID),避免多人共用主组导致权限扩散 - 禁用
CREATE_HOME no(可选):若统一使用网络家目录或容器环境,可关闭本地家目录自动创建,减少攻击面
检查并清理已存在的越界或重叠账户
已有系统可能遗留 UID/GID 错配,需主动扫描修复:
- 查出所有 UID ≤ 999 且非 root 的用户:
awk -F: '$3 <= 999 && $3 != 0 {print}' /etc/passwd - 查出所有 GID ≤ 999 且非 root 的组:
awk -F: '$3 <= 999 && $3 != 0 {print}' /etc/group - 对发现的异常账户,确认是否为必要系统服务;若是误建的普通用户,用
usermod -u 1001+ -g 1001+ username迁移至安全区间,并同步修正其家目录与文件属主:find /home -uid 原UID -exec chown -h 1001+ {} \;
配合其他机制强化账户边界
仅设范围不够,需叠加访问控制:
- 禁止 UID 0 账户远程登录:在 /etc/ssh/sshd_config 中设置
PermitRootLogin no,并确保无其他 UID 0 用户存在 - 限制 sudo 权限:用
visudo删除宽泛授权(如%wheel ALL=(ALL) ALL),改为按需授予特定命令 - 审计敏感操作:启用 auditd,监控 UID 变更、sudo 使用、/etc/passwd 修改等事件
- 定期校验:用脚本比对
getent passwd | awk -F: '$3 < 1000 && $3 > 0',纳入巡检流程

















