在 Debian 中添加与删除用户:adduser、userdel、sudo 授权与账户管理实战

添加和删除用户是搭建 Debian 系统时最先执行的任务之一。

与其他 Linux 发行版一样,Debian 是一个多用户操作系统。每个用户可以拥有独立的权限、shell 设置,以及对 CLI 和 GUI 应用的访问。

知道如何添加和删除用户是一项基础的 Linux 技能。它通过确保只有正确的账户才能访问受保护的资源并运行管理命令,来保持系统安全。

本文介绍如何在 Debian 13 上添加和删除用户。相同的步骤也适用于较早的 Debian 版本,如 Debian 12 和 11。

快速参考

CommandDescription
sudo adduser username创建新用户
sudo adduser --stdoutmsglevel=info username创建新用户并打印每一步
sudo deluser username删除用户
sudo deluser --remove-home username删除用户及其主目录
sudo usermod -aG sudo username授予 sudo 权限
sudo passwd username更改用户密码
sudo usermod -L username锁定密码认证
sudo usermod -L -e 1 username锁定并让账户过期
sudo usermod -U -e "" username解锁用户账户并清除过期
id username显示用户信息

先决条件

你需要管理员权限才能在 Debian 系统上添加或删除用户账户。请参阅我们关于在 Debian 上创建 sudo 用户的指南。

如何在 Debian 中添加用户

在 Debian 中,有两个命令行工具可用于创建新用户账户:useradd 和 adduser。

useradd 是一个用于创建用户账户的底层命令行工具。adduser 是围绕 useradd 的基于 Perl 的封装,提供交互式提示和合理的 Debian 默认值。

要使用 adduser 命令创建一个名为 leah 的新用户账户,运行:

sudo adduser leah

在 Debian 13 上,该命令会安静地开展工作。adduser 3.138 版本将默认控制台消息级别从 info 改为 warn,因此用户组、账户和主目录都会在未作任何说明的情况下被全部创建。你会被依次询问一系列问题。输入并确认密码是必须的;所有其他信息都是可选的。

New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for leah
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] 

在最后一个提示处,按 Enter 确认信息正确。

该命令会创建新用户的主目录,从 /etc/skel 复制文件,并将账户添加到 users 组。用户可以在自己的主目录内写入、编辑和删除文件。

当你希望 adduser 在执行时逐步报告时,将控制台消息级别设为 info:

sudo adduser --stdoutmsglevel
=
info leah

提示相同,但账户设置过程现在会围绕它们进行叙述:

Adding user `leah' ...
Adding new group `leah' (1001) ...
Adding new user `leah' (1001) with group `leah (1001)' ...
Creating home directory `/home/leah' ...
Copying files from `/etc/skel' ...
Adding new user `leah' to supplemental / extra groups `users' ...
Adding user `leah' to group `users' ...

在 Debian 12 和 11 上,这段代码会在没有 --stdoutmsglevel=info 的情况下出现。这两个版本附带的 adduser 版本都早于 3.138,因此状态行在那里默认仍是开启的。

授予 Sudo 权限

在 Debian 中,sudo 组的成员可以运行带有 sudo 权限的命令。要赋予新创建的用户管理权限,将该用户添加到 sudo 组:

sudo usermod -aG sudo leah

将用户添加到新组时,始终包含 -a 标志。没有它,usermod 会覆盖现有的附属组而不是追加到它们,这可能使用户失去他们仍然需要的组访问。

新的组成员身份只有在用户下次登录时才生效。你可以用 groups 命令确认:

groups leah
leah : leah sudo users

如何在 Debian 中删除用户

如果用户账户不再需要,你可以用 userdel 或 deluser 删除它。一般来说,最好使用 deluser 命令,因为它比底层的 userdel 更友好。

要删除用户但不移除用户文件,运行:

sudo deluser leah

在 Debian 13 上,运行成功通常不会产生任何控制台输出。用户的主目录和邮件池不会被移除。

要移除这些目录,请使用 --remove-home 标志调用命令。在运行前备份你需要保留的任何文件:

sudo deluser --remove-home leah

该命令在成功时通常也是静默的。

如何列出用户

要列出系统上的所有用户,使用 getent 命令(更多选项请参阅在 Linux 中列出用户):

getent passwd

这会显示所有用户账户,包括系统用户。要只列出常见人工用户 UID 范围内的普通用户:

getent passwd 
|
 awk -F: 
'$3 >= 1000 && $3 <= 60000 {print $1}'

如何查看用户信息

要查看特定用户的信息,使用 id 命令:

id leah
uid=1001(leah) gid=1001(leah) groups=1001(leah),27(sudo),100(users)

如何更改用户密码

要更改用户的密码,使用 passwd 命令:

sudo passwd leah

该命令会提示你输入并确认新密码。

如何锁定与解锁用户

要锁定用户账户的密码认证,使用 usermod:

sudo usermod -L leah

这会在 /etc/shadow 中的密码哈希前加一个感叹号。它会阻止基于密码的登录,但 SSH 密钥登录和某些其他认证方式仍可能工作。

要更彻底地禁用账户,锁定密码并让账户过期:

sudo usermod -L -e 
1
 leah

要解锁账户并清除过期日期:

sudo usermod -U -e 
""
 leah

故障排查

adduser 不显示账户创建状态消息——Debian 13 默认隐藏信息性状态行,但密码和用户信息提示仍会出现。用 id leah 确认账户。当创建另一个账户时,如果你想看到每个设置步骤,运行 sudo adduser --stdoutmsglevel=info username。

deluser: The user does not exist(用户不存在)——在删除之前用 id leah 或 getent passwd leah 验证用户名。用户名区分大小写。

fatal: The user `leah' does not exist.

在删除之前用 id leah 或 getent passwd leah 验证用户名。用户名区分大小写。

userdel: user is currently used by process(用户正被进程使用)——该用户有活动进程或会话。

userdel: user leah is currently used by process 12345

在停止任何进程之前,先列出它们:

pgrep -u leah -a

确认这些进程可以停止后,终止它们并移除账户:

sudo pkill -u leah

sudo deluser --remove-home leah

--remove-home 标志会删除用户的主目录。如果你需要先保留或归档文件,请改用 sudo deluser leah。

Sudo privileges not active(sudo 权限未生效)——运行 usermod -aG sudo leah 后,新的组成员身份仅适用于新的登录会话。

要么注销并重新登录,要么用以下命令启动新会话:

su - leah

Cannot remove primary group(无法移除主组)——用户仍属于该组。

/usr/sbin/deluser: The group `leah' is the primary group of another user

先移除用户,然后用 sudo delgroup leah 移除组。

常见问题(FAQ)

adduser 和 useradd 在 Debian 上有什么区别?两个命令都创建用户账户,但它们工作在不同层次。useradd 是一个底层工具,创建账户时不询问任何问题,这使它适合脚本。adduser 是更友好的 Perl 封装,引导你设置密码和个人信息、为你创建主目录并复制骨架文件。对于 Debian 上的日常使用,你通常想要 adduser。

如何删除用户但保留其主目录?运行不带 --remove-home 标志的 sudo deluser leah。账户会从 /etc/passwd 和 /etc/shadow 移除,但主目录和邮件池会保留。当你想在移除用户前归档其文件,或另一个账户将接管相同数据时,这很有用。

我应该锁定还是删除不活跃用户?如果这个人有可能回来,或者你需要保留其文件所有权以用于审计,请用 sudo usermod -L leah 锁定密码认证,或在需要更强阻断时用 sudo usermod -L -e 1 leah 让账户过期。主目录和文件保持不变。只有在你确定用户及其数据不再需要时,才用 deluser --remove-home 删除。

结论

在配置新的 Debian 服务器时,典型流程是先用 adduser 创建账户,再用 usermod -aG sudo 授予管理权限。当你需要过去文件所有权的审计线索时,锁定休眠账户而不是删除它们。

对于多服务器环境,请参阅我们关于在 Linux 上生成 SSH 密钥的指南,以便新用户无需密码即可登录。