
添加和删除用户是搭建 Debian 系统时最先执行的任务之一。
与其他 Linux 发行版一样,Debian 是一个多用户操作系统。每个用户可以拥有独立的权限、shell 设置,以及对 CLI 和 GUI 应用的访问。
知道如何添加和删除用户是一项基础的 Linux 技能。它通过确保只有正确的账户才能访问受保护的资源并运行管理命令,来保持系统安全。
本文介绍如何在 Debian 13 上添加和删除用户。相同的步骤也适用于较早的 Debian 版本,如 Debian 12 和 11。
快速参考
| Command | Description |
|---|---|
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 密钥的指南,以便新用户无需密码即可登录。