# 创建管理用户并理解 sudo 权限

普通用户负责日常工作，需要系统权限时再通过 sudo 执行具体命令。是否能使用 sudo，由管理员授权决定。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/sudo-users/

## 1. 为什么日常操作使用普通用户

root 可以修改整台服务器，输错路径的后果也最大。普通用户平时只操作自己的文件，需要管理系统时再用 sudo 提升权限，命令记录和人员分工更清晰。sudo 用户仍拥有很高权限，不应把所有协作者都加入管理组。

先保留当前 root 连接，并确认[控制台](https://stock.iftalking.com/guides/panel-console/)可用。下面以新建 `deploy` 用户为例，它只是示例名称，可以换成有意义的运维用户名。

## 2. Ubuntu/Debian 新建用户并加入 sudo 组

```bash
sudo adduser deploy
sudo usermod -aG sudo deploy
id deploy
```

`adduser` 会创建家目录并提示设置密码；`-aG` 表示追加组，漏掉 `-a` 可能覆盖原有附加组。Debian 的精简镜像可能尚未安装 sudo，可先由 root 通过系统软件源安装。

对于 Rocky/Alma 等 RHEL 系发行版，管理组通常是 `wheel`，应使用本发行版的用户创建流程与 sudoers 设置，不要把 Ubuntu 的组名照搬过去。

## 3. 给新用户配置 SSH 登录

按[SSH 密钥教程](https://stock.iftalking.com/guides/ssh-keys/)把本机公钥加入 `deploy` 的 `~/.ssh/authorized_keys`。如果用 root 代为创建文件，检查目录和文件的所有者，避免文件属于 root 而导致新用户无法维护。

在自己的电脑另开一个终端连接：

```bash
ssh -p 22 deploy@203.0.113.10
whoami
sudo -v
sudo whoami
```

前一个 `whoami` 应输出 `deploy`，最后一个应输出 `root`。sudo 默认可能要求输入当前普通用户的密码，而不是 root 密码；使用密钥登录并不自动设置这个密码。

![保留 KiwiVM 控制台作为账户配置的恢复入口](https://stock.iftalking.com/tutorial-media/provider-shell-launch.jpg)

*图示说明：服务商官方知识库公开截图（旧版界面），用于对照功能名称；当前菜单位置可能调整。图中的套餐、IP、端口和日期仅为示例。*

## 4. 管理 sudo 权限使用 visudo

需要自定义规则时使用 `visudo`，它会做语法检查；不要直接用普通编辑器保存一份未经校验的 `/etc/sudoers`。自动化账户应按任务授予权限，避免随意配置 `NOPASSWD: ALL`。

```bash
sudo visudo -c
sudo -l
```

第一条检查规则，第二条查看当前用户允许执行什么。规则涉及命令参数、通配符和可写脚本时，权限可能比表面更大；例如允许修改一个由 root 执行的脚本，实际就可能等同于 root 权限。

## 5. 撤销权限与删除账户是两回事

Ubuntu/Debian 可用 `sudo deluser deploy sudo` 撤销 sudo 组成员身份。这不会自动关闭已经登录的会话，也不会删除 SSH 公钥。人员离开时还要按需撤销密钥、停用账户并检查已有会话与定时任务。

删除账户前先确认它拥有的网站文件、计划任务和服务配置，将需要的文件交接给正确用户。不要在撤权时顺手删除家目录，避免丢失唯一备份。完成后用另一个管理员账户测试服务正常，再关闭旧连接。


## 完成后检查

完成测试后再限制直接 root 登录。不要把“能运行所有命令且免密码”当作默认配置。

## 参考资料

- [Ubuntu Server 文档](https://documentation.ubuntu.com/server/)
- [服务商官方说明](https://bandwagonhost.com/kb.php?action=displayarticle&id=30)
