1. 为什么日常操作使用普通用户#
root 可以修改整台服务器,输错路径的后果也最大。普通用户平时只操作自己的文件,需要管理系统时再用 sudo 提升权限,命令记录和人员分工更清晰。sudo 用户仍拥有很高权限,不应把所有协作者都加入管理组。
先保留当前 root 连接,并确认控制台可用。下面以新建 deploy 用户为例,它只是示例名称,可以换成有意义的运维用户名。
2. Ubuntu/Debian 新建用户并加入 sudo 组#
sudo adduser deploy
sudo usermod -aG sudo deploy
id deployadduser 会创建家目录并提示设置密码;-aG 表示追加组,漏掉 -a 可能覆盖原有附加组。Debian 的精简镜像可能尚未安装 sudo,可先由 root 通过系统软件源安装。
对于 Rocky/Alma 等 RHEL 系发行版,管理组通常是 wheel,应使用本发行版的用户创建流程与 sudoers 设置,不要把 Ubuntu 的组名照搬过去。
3. 给新用户配置 SSH 登录#
按SSH 密钥教程把本机公钥加入 deploy 的 ~/.ssh/authorized_keys。如果用 root 代为创建文件,检查目录和文件的所有者,避免文件属于 root 而导致新用户无法维护。
在自己的电脑另开一个终端连接:
ssh -p 22 deploy@203.0.113.10
whoami
sudo -v
sudo whoami前一个 whoami 应输出 deploy,最后一个应输出 root。sudo 默认可能要求输入当前普通用户的密码,而不是 root 密码;使用密钥登录并不自动设置这个密码。

4. 管理 sudo 权限使用 visudo#
需要自定义规则时使用 visudo,它会做语法检查;不要直接用普通编辑器保存一份未经校验的 /etc/sudoers。自动化账户应按任务授予权限,避免随意配置 NOPASSWD: ALL。
sudo visudo -c
sudo -l第一条检查规则,第二条查看当前用户允许执行什么。规则涉及命令参数、通配符和可写脚本时,权限可能比表面更大;例如允许修改一个由 root 执行的脚本,实际就可能等同于 root 权限。
5. 撤销权限与删除账户是两回事#
Ubuntu/Debian 可用 sudo deluser deploy sudo 撤销 sudo 组成员身份。这不会自动关闭已经登录的会话,也不会删除 SSH 公钥。人员离开时还要按需撤销密钥、停用账户并检查已有会话与定时任务。
删除账户前先确认它拥有的网站文件、计划任务和服务配置,将需要的文件交接给正确用户。不要在撤权时顺手删除家目录,避免丢失唯一备份。完成后用另一个管理员账户测试服务正常,再关闭旧连接。
完成后检查
完成测试后再限制直接 root 登录。不要把“能运行所有命令且免密码”当作默认配置。