导致 visudo 失败的原因是什么:“visudo:无法统计:文件编号错误”?

导致 visudo 失败的原因是什么:“visudo:无法统计:文件编号错误”?

我们使用#includesudoers 文件中的功能根据每个应用程序组织我们的 sudo 规则。

我们的 sudoers 设置看起来有点像这样:

/etc/sudoers
 -> #include /usr/local/etc/sudo/sudoers.master
     -> #include /usr/local/etc/sudo/app1.sudo
     -> #include /usr/local/etc/sudo/app2.sudo
     -> #include /usr/local/etc/sudo/<...etc...>.sudo

/usr/local/etc是我们在所有服务器上同步的目录。

有时我们需要特定于主机的 sudo 规则,因此我们将其直接放入 /etc/sudoers 中。所有全局内容都放入这些集中同步的文件中。

当我运行visudo编辑本地 sudoers 时,它会/etc/sudoers在 vi 中打开,没有任何问题。当我保存更改时,系统会提示我:

"/etc/sudoers.tmp" XX lines, XXXX characters 
press return to edit /usr/local/etc/sudo/sudoers.master: 
visudo: can't stat /usr/local/etc/sudo/sudoers.master: Bad file number

然后 visudo 就存在(退出代码 1)。

sudoers.master和文件的语法appX.sudo均已检查。

什么原因导致 visudo 无法打开通过基本 sudoers 末尾sudoers.master包含的文件?#include

我在 AIX、Linux 和 Solaris 上看到了这种行为。

作为一种解决方法,有没有办法告诉 visudo 不要遵循任何#include指令,而只编辑主文件?

答案1

如果您使用#includedir而不是,则#include visudo不会尝试编辑包含的文件,除非它们有语法错误。

相关内容