Skip to content
VDS · 操作系统

用用户和 sudo 代替 root

如何创建工作用户、授予其 sudo、迁移 SSH 密钥,并停止以 root 身份登录服务器。

更新于 2026年8月23日

机器默认拥有完整的 root 权限,您的第一反应可能是继续以 root 身份操作。这样确实方便,直到 rm -rf 里出现第一个拼写错误。正确的做法不同:日常任务使用普通用户,仅在确实需要时通过 sudo 获取 root 权限。

创建用户

Debian 和 Ubuntu:

adduser artem
usermod -aG sudo artem

AlmaLinux 和 CentOS Stream:

adduser artem
passwd artem
usermod -aG wheel artem

用户组不同:Debian 系列使用 sudo,RHEL 系列使用 wheel。检查权限:

sudo -l -U artem

迁移 SSH 密钥

在面板 /hosting/vds/m/<id> 的“访问”标签页中添加的密钥会归属于 root 用户。您需要自己将它们配置给新用户:

mkdir -p /home/artem/.ssh
cp /root/.ssh/authorized_keys /home/artem/.ssh/
chown -R artem:artem /home/artem/.ssh
chmod 700 /home/artem/.ssh
chmod 600 /home/artem/.ssh/authorized_keys

这里的权限并非形式主义:如果权限过于宽松,sshd 会静默拒绝接受该密钥。

在不关闭当前终端窗口的情况下,另开一个终端窗口,确认能以新用户身份登录:

ssh artem@<address>
sudo whoami

只有在验证成功后,才应继续禁用 root 登录。

如何使用 sudo

sudo systemctl restart nginx
sudo -i
sudo -u www-data ls /var/www

sudo -i 会为您提供一个完整的 root shell——适用于执行一系列命令,而非长期工作。每次调用 sudo 都会写入日志,这是您调查事件时的线索:

journalctl -t sudo -n 50
grep sudo /var/log/auth.log

关于日志的更多内容——谁登录了机器。

服务的权限

另一个常见错误是以 root 身份运行应用程序,理由是“这样能正常工作”。应为每个服务创建一个无 shell 的系统用户:

useradd --system --no-create-home --shell /usr/sbin/nologin appsrv
chown -R appsrv:appsrv /opt/app

这样,应用程序中的漏洞就不会一次性将整台机器交给攻击者。

常见错误

错误原因解决方案
artem is not in the sudoers file不在用户组中或未重新登录usermod -aG sudo artem,重新登录
密钥不被接受.ssh 的权限宽于 700 或所有者为 root按上述方法执行 chown 和 chmod
sudo 密码无效用户未设置密码passwd artem
编辑 sudoers 导致 sudo 损坏文件中存在语法错误只能使用 visudo;通过救援模式修复

编辑 /etc/sudoers 时务必使用 visudo 命令——它会在保存前检查语法。文件损坏会导致所有人同时失去 sudo 权限。