为业务分配独立用户需构建完整隔离链:一、用useradd -r -s /sbin/nologin创建系统用户;二、配置文件、数据目录、日志路径严格归属该用户及组并设合理权限;三、systemd中限定user/group及capabilityboundingset;四、禁用shell、密码、sudo、suid等所有提权通道。

为业务分配独立用户,核心是让每个服务或应用运行在专属、低权限的账户下,不共享、不越界、不提权。这不是单纯创建一个用户,而是构建一套从身份、资源归属到执行边界的完整隔离链。
一、用系统用户承载业务身份
避免用普通用户或 root 运行业务进程。应使用 useradd -r -s /sbin/nologin 创建专用系统用户:
- -r 标识为系统用户(UID 自动分配在 1–999 范围内,与普通用户区隔)
- -s /sbin/nologin 禁止交互式登录,消除密码、shell、SSH 入口
- -M 不创建家目录,减少无关文件暴露面
- -U 自动创建同名主组,便于后续按组统一分配资源权限
例如部署一个监控采集器:
sudo useradd -r -s /sbin/nologin -M -U monitor-agent
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
二、资源归属必须与用户严格对齐
服务能访问什么,取决于它“拥有”什么。需同步完成三类归属绑定:
- 配置文件(如
/etc/monitor-agent/conf.yaml)设属主为monitor-agent:monitor-agent,权限640 - 数据目录(如
/var/lib/monitor-agent/metrics/)设属主同上,权限750;启用setgid保证子目录自动继承组:chmod g+s /var/lib/monitor-agent/metrics/ - 日志路径(如
/var/log/monitor-agent/)同样归属该用户,并限制上级路径遍历权限:chmod 750 /var/log/monitor-agent和chmod 750 /var/log
三、运行时权限必须做减法
即使用户身份正确,进程仍可能获得过高能力。需在 systemd 服务单元中显式约束:
- 指定运行用户:
User=monitor-agent、Group=monitor-agent - 禁用危险 capability:
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_NET_RAW CAP_IPC_LOCK - 仅开放必要能力:
CapabilityBoundingSet=CAP_NET_BIND_SERVICE(如需监听 80/443) - 配合 SELinux/AppArmor 策略,限制其只能读配置、写日志、连指定 socket 或端口
四、禁止任何提权通道
独立用户的前提是“不可逃逸”。必须关闭所有潜在跳板:
- 确认
/etc/passwd中该用户 shell 为/sbin/nologin(非/bin/bash或空值) - 检查
/etc/shadow中密码字段为*或!,无有效哈希 - 不在
sudoers中为其添加规则;不将其加入wheel、sudo等高权限组 - 不赋予
suid程序,不挂载可执行文件系统(如 noexec mount)










