正确做法是先创建普通用户并设置强密码,再将其加入sudo组以获得可控提权权限;需重新登录使组生效,必要时用visudo精细配置命令级权限。

新装的 Linux 服务器,默认只开 root 账号,但日常运维绝不能直接用 root 登录。正确做法是:先建普通用户,再给它可控的 sudo 权限——不是“给 root 权限”,而是“让它能安全地执行需要提权的操作”。整个过程不复杂,但顺序和细节决定是否稳定可用。
创建普通用户并设密码
用 root 登录后,执行两步:
- useradd -m -s /bin/bash username:-m 创建家目录,-s 指定默认 shell;
- passwd username:设置强密码(至少 8 位,含大小写字母+数字)。
别跳过 -s 参数,否则用户可能无法正常登录 shell;也别用空密码或弱密码,这是第一道防线。
加进 sudo 组(推荐方式)
Ubuntu/Debian 系统默认已配置好 %sudo ALL=(ALL:ALL) ALL 这条规则,所以只需把用户加入 sudo 组即可生效:
- usermod -aG sudo username:-aG 是关键,表示“追加到组”,不是覆盖原有组;
- 注意:该操作不会立即在当前会话生效。用户需完全退出并重新登录,系统才会加载新的组信息。
这是最简洁、最易维护的方式,适合大多数场景。不需要改 /etc/sudoers,也不怕语法出错锁住自己。
需要免密或限制命令时,用 visudo 编辑
如果用户要免输密码(如自动化脚本),或只允许执行特定命令(如仅重启 nginx),就得手动加规则:
- 运行 visudo(必须用这个命令,它会语法检查,避免配错导致 sudo 失效);
- 在文件末尾添加一行,例如:
username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/journalctl -u nginx; - 保存退出。同样,用户需重新登录才能应用新规则。
避免写 NOPASSWD: ALL,除非你清楚风险——这等于绕过所有密码保护,任何能登录该账号的人都可无阻碍提权。
验证权限是否生效
切到普通用户,做三件事确认:
- id:检查输出中是否含 groups=...sudo;
- sudo -l:列出该用户被授权的命令,看是否匹配预期;
- sudo whoami:返回 root 表示成功;若提示“not in sudoers”,说明组未生效或配置有误。
如果 sudo -l 报错但 id 显示在 sudo 组里,大概率是没重新登录——这是新手最常卡住的地方。

















