最小权限管理的核心是用户仅拥有完成任务所必需的最低权限。在Ubuntu中创建独立系统用户需先明确角色(开发/运维/服务/审计),再用adduser创建隔离账户,禁用密码登录、移除sudo权限,并验证拒绝行为是否符合预期。

最小权限管理的核心是:每个用户只拥有完成自己任务所必需的最低权限,不越界、不共享、不默认给 root。在 Ubuntu 服务器上创建独立系统用户,关键不是“建一个账号”,而是“建一个受控、可审计、环境隔离的最小化身份”。
明确用户角色和权限边界
不要一上来就 adduser,先想清楚这个用户要干什么:
- 是日常开发?→ 不需要 sudo,禁止执行系统级命令
- 是运维维护?→ 可加入 sudo 组,但后续要用 visudo 限制具体命令(比如只允许 systemctl restart nginx,不允许 rm -rf /)
- 是运行服务进程?→ 应禁用交互式登录(--shell /usr/sbin/nologin),不设密码,只通过 systemd 或容器调用
- 是审计查看?→ 完全无 sudo 权限,仅能读取日志目录(如 /var/log/nginx/)或监控命令(htop、df)
用 adduser 创建标准隔离用户
以 root 或已有 sudo 用户执行:
sudo adduser --shell /bin/bash --gecos "Dev Team Member,dev@example.com" dev01
过程中会提示设置密码(建议用强密码或后续改用 SSH 密钥)、填写信息,adduser 会自动完成:
- 创建家目录 /home/dev01 并复制 /etc/skel 下的初始配置(.bashrc、.profile 等)
- 新建同名主组 dev01,并将用户加入其中
- 设置默认 umask 022,确保新文件默认不被其他用户写入
⚠️ 不要用 useradd —— 它不自动建家目录、不拷配置、不设 shell,容易遗漏隔离基础。
立即移除多余权限,加固账户
创建后立刻做三件事:
-
禁用密码登录(推荐):运行
sudo passwd -l dev01,再配置 SSH 公钥到/home/dev01/.ssh/authorized_keys -
确认无 sudo 权限:检查
groups dev01输出中不含 sudo;若误加,用sudo deluser dev01 sudo -
限制 Shell 访问范围(可选):如需进一步约束,可改用
rssh或scponly替代 /bin/bash,只允许 scp/sftp
验证最小化是否生效
切换到该用户测试关键行为:
-
sudo ls /root→ 应提示 “user is not in the sudoers file” -
rm -f /etc/nginx/nginx.conf→ 应提示 “Permission denied” -
ps aux | grep root→ 能看进程列表(默认允许),但不能 kill 其他用户进程 -
cd /home/otheruser→ 应提示 “Permission denied”,除非显式授予权限
所有拒绝行为都属于预期结果——说明最小权限已落地。

















