
sudo 命令(Super-user do 的缩写)是一个旨在允许用户以另一个用户(默认是 root 用户)的安全权限执行命令的程序。
在本指南中,我们将展示如何在 Debian 系统上创建新用户并赋予其 sudo 访问权限。这些步骤适用于 Debian 11、12 和 13。
你可以使用这个用户账户执行管理命令,而无需以 root 用户身份登录到你的 Debian 服务器。
快速参考
| Command | Description |
|---|---|
adduser username | 交互式创建新用户 |
adduser --verbose username | 创建新用户并打印每一步(Debian 13) |
usermod -aG sudo username | 将现有用户添加到 sudo 组 |
su - username | 切换到新用户 |
sudo whoami | 验证 sudo 访问是否生效 |
visudo | 安全编辑 sudoers 文件 |
groups username | 检查用户所属组 |
创建 sudo 用户
按照以下步骤创建新用户账户并赋予其 sudo 访问权限。如果你想为现有用户配置 sudo,请跳到第 3 步。
1. 登录到你的服务器
首先,以 root 用户身份登录到你的系统:
ssh root@server_ip_address
2. 创建新用户账户
使用 adduser 命令创建新用户账户。记得把 username 替换为你想要的用户名:
adduser username
该命令会提示你设置并确认新用户的密码。确保新账户的密码尽可能强(字母、数字和特殊字符的组合)。
命令打印多少内容取决于 Debian 版本。在 Debian 11 和 12 上,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
Debian 13 搭载了较新的 adduser,它会把这些状态行保留在控制台之外。3.138 版本将默认控制台消息级别从 info 改为 warn,因此账户以完全相同的方式创建,但你看到的只有密码提示。当你想要回运行时的逐步叙述时,传入 --verbose:
adduser --verbose username
设置好用户密码后,命令会为用户创建主目录,在主目录中复制若干配置文件,并提示你设置新用户的信息。如果你想把这些信全部留空,只需按 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]
3. 将用户添加到 sudo 组
在 Debian 系统上,默认情况下 sudo 组的成员被授予 sudo 访问权限。要将用户添加到 sudo 组,使用 usermod 命令:
usermod -aG sudo username
该更改在用户下次登录时生效。
直接编辑 sudoers 文件
将用户添加到 sudo 组的另一种方法是直接在 /etc/sudoers 文件中授予权限。始终使用 visudo 编辑此文件,因为它会在保存前验证语法,防止损坏的 sudoers 文件把你锁在系统之外。
visudo
在文件末尾添加以下行,把 username 替换为实际用户名:
username ALL=(ALL:ALL) ALL
保存并退出。该用户现在可以在不是 sudo 组成员的情况下,使用 sudo 运行任何命令。
测试 sudo 访问
切换到新创建的用户:
su - username
使用 sudo 命令运行 whoami 命令:
sudo whoami
如果用户拥有 sudo 访问权限,那么 whoami 命令的输出将是 root:
root
如何使用 sudo
要使用 sudo,只需在命令前加上 sudo 和一个空格:
sudo ls -l /root
你在会话中首次使用 sudo 时,会提示输入用户密码:
[sudo] password for username:
故障排查
adduser finishes without printing anything(adduser 运行结束不打印任何内容)——这在 Debian 13 上是预期行为,adduser 只把警告和错误发送到控制台。静默运行意味着账户已正常创建。用 id username 确认,如果你想看到逐步输出,使用 adduser --verbose username。
User is not in sudoers file(用户不在 sudoers 文件中)——用户尚未被添加到 sudo 组,或者更改尚未生效。用 groups username 验证组成员身份。如果缺少 sudo 组,请以 root 运行 usermod -aG sudo username,然后让用户注销并重新登录。
sudo is not installed(sudo 未安装)——在最小化的 Debian 安装上 sudo 可能不存在。以 root 运行 apt install sudo 安装它,然后将用户添加到 sudo 组。
sudo access not working after usermod(usermod 后 sudo 访问不生效)——用户必须启动一个新的登录会话,组更改才能生效。完全注销并重新登录,或使用 su - username 打开一个新会话。
常见问题(FAQ)
将用户添加到 sudo 组和编辑 sudoers 有什么区别?添加到 sudo 组(usermod -aG sudo)是标准的 Debian 方法,对组内所有成员应用相同的权限。使用 visudo 编辑 /etc/sudoers 则给你更精细的控制:你可以将用户限制在特定命令,或允许某些任务的无密码 sudo。
如何从用户移除 sudo 访问权限?要从 sudo 组移除用户,请以 root 运行 gpasswd -d username sudo。要移除 sudoers 文件中的条目,请用 visudo 打开文件并删除相应行。
这在 Debian 11、12 和 13 上都适用吗?是的。adduser、usermod 和 visudo 命令在所有当前 Debian 版本上行为一致,sudo 组在它们之上都是默认机制。唯一可见的区别是 Debian 13 搭载的 adduser 3.152 不再把状态行打印到控制台。在那里运行 adduser --verbose username 即可看到它们。
如何检查哪些用户拥有 sudo 访问权限?运行 getent group sudo 列出 sudo 组的所有成员。对于 sudoers 文件条目,请用 visudo 或 cat /etc/sudoers 查看该文件。
结论
你已学会如何使用 sudo 组或 sudoers 文件在 Debian 上创建具有 sudo 权限的用户。对于日常使用,usermod -aG sudo 方法最简单。当你需要逐命令或无密码 sudo 规则时,使用 visudo。