必须使用 visudo,因为/etc/sudoers语法极其严格,任何错误(如多空格、少括号)都会导致sudo完全失效;visudo保存前自动语法校验、文件加锁、权限设为0440,并支持安全的/etc/sudoers.d/分文件管理。

不能直接用 vi 或 nano 编辑 /etc/sudoers,必须使用 visudo —— 这是唯一安全、受控的方式。
为什么一定要用 visudo?
/etc/sudoers 是系统权限控制的核心文件,语法极其严格。哪怕多一个空格、少一个括号,保存后 sudo 就会完全失效,连 root 都无法提权。而 visudo 在你保存前自动做语法检查,出错时直接阻止写入,避免“改完就锁死”的灾难。
它还会自动加锁防止多人同时编辑,并确保文件权限保持为 0440(仅 root 可读)。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
正确编辑步骤
- 以 root 身份或已有 sudo 权限的用户运行:
sudo visudo - 默认打开的是 vim;如习惯 nano,可先执行:
export EDITOR=nano,再运行sudo visudo - 在文件末尾新增授权行,例如:
alice ALL=(ALL:ALL) ALL(授予 alice 完全 sudo 权限)%devs ALL=/usr/bin/systemctl restart nginx(允许 devs 组仅重启 nginx) - 保存退出:vim 下按
Esc→ 输入:wq;nano 下按Ctrl+O→Enter→Ctrl+X - visudo 会立即校验语法;若报错,需返回修正,否则无法保存
更推荐的替代方式:/etc/sudoers.d/
主流发行版(Ubuntu、CentOS 8+、Debian、Fedora)都支持该目录,它是比直接改主文件更安全、更易维护的做法:
- 新建独立配置文件:
sudo visudo -f /etc/sudoers.d/alice - 写入授权语句,例如:
alice ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount - 保存后手动设置权限:
sudo chmod 0440 /etc/sudoers.d/alice - 该文件会被 sudo 自动加载,且错误只影响自身,不会拖垮整个 sudo 系统
验证配置是否生效
切换到目标用户(或新开终端),执行:
-
sudo -l:查看当前用户被授予了哪些命令权限 -
sudo whoami:测试是否能成功提权(应输出root) - 尝试执行一条被授权的命令,观察是否提示密码、是否执行成功










