补充说明
visudo 是 sudo 套件提供的专用编辑器,用于修改 /etc/sudoers 及其包含的片段。它在编辑时锁定文件,保存前进行语法解析,发现错误会拒绝写入,从而避免因 sudoers 语法错误导致所有人无法使用 sudo。
默认编辑器取自 $VISUAL 或 $EDITOR,否则使用 vi。直接修改 /etc/sudoers 风险很高,应始终通过 visudo。现代配置推荐在 /etc/sudoers.d/ 下放置独立片段,再用 visudo -f 编辑单个文件。
-c 只做语法检查而不编辑,适合在自动化部署后验证配置;配合 -f 可检查指定文件。修改后可用 sudo -l -U 用户名 验证该用户实际获得的权限。
语法
visudo [选项]
选项
-c, --check:只检查语法,不打开编辑器。-f, --file sudoers:编辑或检查指定的 sudoers 文件。-q, --quiet:减少检查时的提示信息。-s, --strict:严格检查 sudoers 语法。-V, --version:显示版本信息。
实例
# 编辑主 sudoers 文件
sudo visudo
# 编辑一个独立片段,推荐给某个用户或组授权
sudo visudo -f /etc/sudoers.d/devops
# 只检查主配置语法
sudo visudo -c
# 检查某个片段文件
sudo visudo -c -f /etc/sudoers.d/devops
# 查看某用户最终拥有的 sudo 权限
sudo -l -U alice
# 片段示例:允许 devops 组无密码执行 systemctl
# %devops ALL=(ALL) NOPASSWD: /usr/bin/systemctl