
在搭建一台全新的 Ubuntu 服务器时,你首先要做的事情之一就是创建一个具备管理权限的普通用户账户。这样你可以使用 sudo 运行特权命令,而不必以 root 身份登录,既更安全,也能留下更清晰的审计记录。
本指南将展示如何在 Ubuntu 22.04、24.04 和 26.04 上创建新用户、为其创建主目录,并授予 sudo 访问权限。
创建 sudo 用户的步骤
按照以下步骤创建新用户账户并赋予其 sudo 访问权限。如果你想为现有用户配置 sudo,请跳到第 3 步。
1. 登录到你的服务器
以 root 用户身份登录到你的系统:
ssh root@server_ip_address
如果你已经拥有一个具备 sudo 访问权限的非 root 账户,请用该账户登录,并在下面的命令前加上 sudo 。
2. 创建新用户账户
使用 adduser 命令创建新用户账户。别忘了把 username 替换为你想要创建的用户名:
adduser username
系统会提示你设置并确认新用户的密码。请为新账户使用强密码。
命令打印的内容多少取决于 Ubuntu 版本。在 Ubuntu 22.04 上,adduser 会在执行时逐步报告每一步:
Adding user `username' ...
Adding new group `username' (1001) ...
Adding new user `username' (1001) with group `username' ...
Creating home directory `/home/username' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Ubuntu 24.04 报告同样的步骤,但其状态消息以 info: 开头,并包含 adduser 检查的 UID 和 GID 范围。
Ubuntu 26.04 搭载了较新的 adduser,它会把账户创建的状态消息保留在控制台之外。3.138 版本将默认的 console 消息级别从 info 改为 warn。密码与账户信息提示仍然会出现。若要在创建账户时显示状态消息,可在创建账户时使用 --stdoutmsglevel=info:
adduser --stdoutmsglevel
=
info username
adduser 命令会在 /home/username 创建主目录,并在询问密码之前从 /etc/skel 复制默认配置文件。设置好密码后,命令会提示你输入新用户的信息。如果你想把这些字段留空,按 ENTER 接受默认值即可。
Changing the user information for username
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n]
主目录会自动创建,因此你无需传入任何额外参数。这也是在 Ubuntu 上推荐 adduser 的主要原因之一。
3. 将新用户添加到 sudo 组
在 Ubuntu 上,凡是属于 sudo 组的用户都会被授予 sudo 访问权限。使用 usermod 命令将用户添加到 sudo 组:
usermod -aG sudo username
-a 参数将用户追加到组中而不将其从其他组中移除,-G 指定要添加的补充组。
你也可以使用 adduser 将现有用户添加到 sudo 组:
adduser username sudo
这是 usermod -aG sudo username 的另一种写法。请仅在账户已存在时使用。如果用户已经建好,你只需授予权限,我们的 Ubuntu 添加用户到 sudoers 指南介绍了这种做法,包括限定到特定命令的规则。
adduser 与 useradd 的区别
Ubuntu 自带两个用于创建用户的命令,当你在意主目录时,二者的区别就很重要:
useradd -m -s /bin/bash username
passwd username
usermod -aG sudo username
在 Ubuntu 上交互式使用时,优先选择 adduser。在需要确定性、非交互式行为的自动化脚本中使用 useradd,并参考 useradd 速查表了解值得掌握的参数。
测试 sudo 访问
切换到新创建的用户:
su - username
使用 sudo 运行 whoami 命令:
sudo whoami
如果用户拥有 sudo 访问权限,那么 whoami 命令的输出将是 root:
root
如何使用 sudo
要使用 sudo,只需在命令前加上 sudo 和一个空格:
sudo ls -l /root
你在会话中首次使用 sudo 时,会提示输入用户密码:
[sudo] password for username:
如果你希望某些用户或命令在运行时免输入密码,请参考「如何免密码运行 sudo」指南。
故障排查
adduser 不显示账户创建状态消息——这在 Ubuntu 26.04 上是预期行为。密码与账户信息提示仍然会出现,但 adduser 默认只把警告和错误发送到控制台。用 id username 确认账户已创建。若要在以后创建账户时显示状态消息,请在初始 adduser 命令后加上 --stdoutmsglevel=info。
username is not in the sudoers file. This incident will be reported.(用户名不在 sudoers 文件中,此事件将被报告)——用户还不是 sudo 组的成员。以 root(或另一个 sudo 用户)登录并运行 usermod -aG sudo username,然后注销并重新登录,使组成员身份应用到新会话。
sudo: command not found(找不到 sudo 命令)——系统未安装 sudo 软件包,这在最小化服务器镜像和容器中很常见。以 root 运行 apt update && apt install sudo 安装它。
Group membership not taking effect(组成员身份未生效)——组更改在登录时生效。如果在将用户添加到 sudo 组后 sudo 仍然失败,请注销用户会话并重新登录,或使用 su - username 启动新 shell。
常见问题(FAQ)
如何在 Ubuntu 上创建带主目录的 sudo 用户?以 root 运行 adduser username。adduser 命令默认在 /home/username 创建主目录,并从 /etc/skel 复制骨架配置。然后用 usermod -aG sudo username 将用户添加到 sudo 组。
adduser 和 useradd 有什么区别?adduser 是一个交互式封装,它会一步创建主目录、设置密码并配置账户。useradd 是底层命令,除非传入 -m 参数,否则不会创建主目录。在 Ubuntu 上,交互式工作用 adduser,脚本中用 useradd。
如何移除用户的 sudo 访问权限?用 deluser username sudo(或 gpasswd -d username sudo)将用户从 sudo 组移除。账户本身仍然有效,仍可登录,只是失去了 sudo 权限。
不把用户加入 sudo 组也能授予 sudo 访问权限吗?可以。在 /etc/sudoers.d/ 下创建一个 drop-in 文件,为特定用户或命令定义规则。这也是将用户限制在一组有限命令的推荐做法。
结论
你现在拥有了一个具备 sudo 权限的普通用户账户。用它进行日常管理,并将 root 账户保留用于恢复或应急访问。关于更高级的 sudo 规则(例如允许特定命令免密码运行),请参阅 sudoers 配置指南。