在一台树莓派上的 Ubuntu Server 系统中,首次启动后通常会创建一个默认的普通用户。这个用户往往承担“主用户”的角色:拥有独立家目录、默认 shell,并且通常具备较完整的 sudo 与硬件访问权限。
本文围绕一个实际问题展开:在不删除原有用户、不修改原有用户配置的前提下,新建一个新的管理员用户,并使其在实际使用层面与原始主用户基本等价。
一、首次初始化创建的用户,有什么特殊之处
系统首次启动时创建的普通用户,常见特征如下:
- 通常是系统中的第一个普通用户
- 拥有独立家目录
- 默认 shell 一般为
/bin/bash - 常被加入若干管理组与硬件访问组
- 通常具备 sudo 权限
- 某些镜像中,甚至默认具备免密 sudo 权限
这类用户并不是 root,也不是隐藏系统用户,本质上仍然是普通用户。它的“特殊”主要体现在:
- 创建得早
- 权限预设较完整
- 常作为默认登录和运维用户使用
也就是说,它更像是“初始化阶段生成的默认管理员型普通用户”。
二、如何确认一个用户的权限画像
可以通过以下命令查看一个已有用户的核心信息:
id <user>
getent passwd <user>
sudo -l -U <user>
这三条命令分别用于查看:
- UID、GID、附加组
- 家目录与 shell
- sudo 权限策略
例如,一个典型的初始化用户,通常会显示:
- 处于
sudo组 - 具有
adm、dialout、video、audio、plugdev、netdev等组权限 - 在树莓派环境下,还可能包含
gpio、spi、i2c等硬件访问组 - sudo 输出中可能出现
NOPASSWD: ALL
如果出现 NOPASSWD: ALL,说明该用户执行 sudo 时不需要输入密码,属于非常高可用性的管理员账户。
三、UID/GID 到底意味着什么
很多人在创建新用户时,会注意到 UID 和 GID 与原有用户不同,于是担心“是不是权限不一样”。
实际上,UID/GID 更像是系统内部使用的编号,不是用户可见的身份标签,也不是“住址”。
可以这样理解:
- 用户名:相当于名字
- UID:相当于系统内部识别这个人的编号
- 组名:相当于部门名称
- GID:相当于部门编号
- 家目录:更像实际使用中的住处
Linux 底层处理权限时,更看重的是 UID/GID,而不是用户名本身。
但在单机日常运维场景下,只要满足以下条件,UID/GID 的具体数值通常不重要:
- 编号不冲突
- 用户能正常登录
- 用户能正常拥有自己的文件
- sudo 权限正常
- 所需组权限齐全
因此,如果只是想新建一个可正常使用的新管理员用户,并不需要追求 UID/GID 与旧用户相同。
四、两个用户“完全等价”到底指什么
严格来说,两个不同用户不可能在“身份层面”完全相同,因为:
- 用户名不同
- 家目录不同
- UID/GID 不同
但如果忽略 UID/GID,仅从实际使用功能来看,两者可以做到基本完全等价。判断标准包括:
- 都能正常登录
- 都使用相同 shell
- 都有 sudo 权限
- 都支持免密 sudo
- 都具有相同的附加组
- 都能访问相同的硬件接口
只要这些一致,就可以认为它们在日常运维层面已经等价。
换句话说:
权限等价,不等于身份编号相同。
而对于单机使用者来说,前者才更重要。
五、为什么不建议删除旧用户再重建
理论上,可以删除原有用户,再创建一个新用户去替代它。
但这通常不是最稳妥的做法,原因包括:
- 容易破坏已有配置
- 可能影响旧文件归属
- 如果系统某些配置仍引用旧用户名,后续排查更麻烦
- 删除后再重建只是为了“编号整洁”,收益很小
如果旧用户几乎没用过,更合理的做法通常是:
- 保留旧用户不动
- 新建一个新用户
- 复制权限模型
- 以后主要使用新用户
这样风险最低,结构也最清晰。
六、在不动原有用户的前提下,创建新的等价管理员用户
目标如下:
- 原有初始化用户保持不变
- 新建一个新的普通用户
- 赋予和原用户基本一致的组权限
- 使用系统现有 sudo 管理方式,为新用户追加免密 sudo 规则
1)创建新用户
adduser <new_user>
该命令会完成:
- 创建用户
- 创建同名主组
- 创建家目录
- 从
/etc/skel复制基础配置文件
2)复制附加组权限
如果原有用户具备一系列硬件与管理组,那么可以将这些附加组补给新用户:
usermod -aG adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,render,netdev,gpio,spi,i2c <new_user>
完成后可用以下命令确认:
id <new_user>
如果输出中的附加组与原用户一致,那么组权限层面就已经对齐。
3)沿用现有 sudoers 管理模式
某些 Ubuntu Server 镜像中,免密 sudo 并不是单纯靠加入 sudo 组实现的,而是写在 /etc/sudoers.d/ 目录下的某个规则文件里。
例如可以先查看:
ls /etc/sudoers.d
cat /etc/sudoers.d/90-cloud-init-users
如果系统里已经存在类似这样的内容:
# User rules for existing-user
existing-user ALL=(ALL) NOPASSWD:ALL
那么最自然的做法不是另起一个风格不同的文件,而是沿用现有文件,追加一条新规则。
使用:
visudo -f /etc/sudoers.d/90-cloud-init-users
在文件末尾追加:
# User rules for new-user
new-user ALL=(ALL) NOPASSWD:ALL
保存后,用下面命令检查语法:
visudo -c
如果显示解析通过,说明规则写入成功。
4)验证 sudo 权限
sudo -l -U <new_user>
getent passwd <new_user>
需要重点确认:
sudo -l -U <new_user>中存在NOPASSWD: ALLgetent passwd <new_user>中家目录正确- shell 为
/bin/bash
5)实际切换测试
从 root 切换到新用户后,建议执行一轮简单测试:
su - <new_user>
id
sudo -i
whoami
exit
exit
如果一切正常,应当表现为:
- 切换用户成功
id显示附加组齐全sudo -i成功进入 rootwhoami输出root
这一步通过后,说明新用户已经具备独立运维能力。
七、nano 编辑器的最基本用法
在某些系统里,visudo 默认调用的编辑器不是 vim,而是 nano。
对于不熟悉 nano 的情况,只需要记住以下几个操作:
- 方向键移动光标
- 直接输入文字即可编辑
Ctrl + O保存- 回车确认文件名
Ctrl + X退出
如果只是向 sudoers 文件末尾追加两行,这已经完全够用。
八、最终结论
在 Ubuntu Server 的树莓派环境中,首次初始化创建的普通用户,通常确实承担了“默认管理员用户”的角色。但它本质上仍然只是一个普通用户,并没有什么神秘机制。
如果需要新建一个新的长期使用账户,最稳妥的方案不是删除旧用户重建,而是保留旧用户不动,直接新建新用户并复制权限模型。
只要满足以下条件:
- 家目录正常
- shell 正常
- 附加组一致
- sudo 权限一致
- 免密 sudo 生效
那么忽略 UID/GID 后,新用户就已经可以视为与旧用户在功能层面完全等价。
对于单机运维来说,真正重要的不是“编号是否一样”,而是:
- 权限是否够用
- 登录是否正常
- 后续是否便于长期维护
从这个角度看,创建新的等价管理员用户,本质上是一种低风险、可回退、结构清晰的系统整理方式。