在一台树莓派上的 Ubuntu Server 系统中,首次启动后通常会创建一个默认的普通用户。这个用户往往承担“主用户”的角色:拥有独立家目录、默认 shell,并且通常具备较完整的 sudo 与硬件访问权限。

本文围绕一个实际问题展开:在不删除原有用户、不修改原有用户配置的前提下,新建一个新的管理员用户,并使其在实际使用层面与原始主用户基本等价。


一、首次初始化创建的用户,有什么特殊之处

系统首次启动时创建的普通用户,常见特征如下:

  • 通常是系统中的第一个普通用户
  • 拥有独立家目录
  • 默认 shell 一般为 /bin/bash
  • 常被加入若干管理组与硬件访问组
  • 通常具备 sudo 权限
  • 某些镜像中,甚至默认具备免密 sudo 权限

这类用户并不是 root,也不是隐藏系统用户,本质上仍然是普通用户。它的“特殊”主要体现在:

  • 创建得早
  • 权限预设较完整
  • 常作为默认登录和运维用户使用

也就是说,它更像是“初始化阶段生成的默认管理员型普通用户”。


二、如何确认一个用户的权限画像

可以通过以下命令查看一个已有用户的核心信息:

id <user>
getent passwd <user>
sudo -l -U <user>

这三条命令分别用于查看:

  • UID、GID、附加组
  • 家目录与 shell
  • sudo 权限策略

例如,一个典型的初始化用户,通常会显示:

  • 处于 sudo
  • 具有 admdialoutvideoaudioplugdevnetdev 等组权限
  • 在树莓派环境下,还可能包含 gpiospii2c 等硬件访问组
  • 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: ALL
  • getent passwd <new_user> 中家目录正确
  • shell 为 /bin/bash

5)实际切换测试

从 root 切换到新用户后,建议执行一轮简单测试:

su - <new_user>
id
sudo -i
whoami
exit
exit

如果一切正常,应当表现为:

  • 切换用户成功
  • id 显示附加组齐全
  • sudo -i 成功进入 root
  • whoami 输出 root

这一步通过后,说明新用户已经具备独立运维能力。


七、nano 编辑器的最基本用法

在某些系统里,visudo 默认调用的编辑器不是 vim,而是 nano
对于不熟悉 nano 的情况,只需要记住以下几个操作:

  • 方向键移动光标
  • 直接输入文字即可编辑
  • Ctrl + O 保存
  • 回车确认文件名
  • Ctrl + X 退出

如果只是向 sudoers 文件末尾追加两行,这已经完全够用。


八、最终结论

在 Ubuntu Server 的树莓派环境中,首次初始化创建的普通用户,通常确实承担了“默认管理员用户”的角色。但它本质上仍然只是一个普通用户,并没有什么神秘机制。

如果需要新建一个新的长期使用账户,最稳妥的方案不是删除旧用户重建,而是保留旧用户不动,直接新建新用户并复制权限模型

只要满足以下条件:

  • 家目录正常
  • shell 正常
  • 附加组一致
  • sudo 权限一致
  • 免密 sudo 生效

那么忽略 UID/GID 后,新用户就已经可以视为与旧用户在功能层面完全等价。

对于单机运维来说,真正重要的不是“编号是否一样”,而是:

  • 权限是否够用
  • 登录是否正常
  • 后续是否便于长期维护

从这个角度看,创建新的等价管理员用户,本质上是一种低风险、可回退、结构清晰的系统整理方式。

Leave a Reply

Your email address will not be published. Required fields are marked *