对包含文件的整个生态系统进行 Visudo 健全性检查?

对包含文件的整个生态系统进行 Visudo 健全性检查?

是否可以visudo在包含的其他文件的上下文中对文件执行健全性检查/etc/sudoers.d

设想:

我想向/etc/sudoers.d文件添加一个新文件,该文件本身是正确的并且它通过了visudo -c解析器。

但是,它确实包含Cmnd_Alias与 中的另一个文件冲突的行etc/sudoers.d

如果移动到 a ,/etc/sudoers.d它会sudoAlias '<name>' already defined near line错误而中断命令。

问题:

有什么方法可以用来检查新文件sudo放入后是否不会破坏它sudoers.d

sudo或者如果遇到任何错误,是否有任何方法可以忽略/停止处理包含的文件?

答案1

/etc/sudoers您可以尝试检查建议的新文件的串联:

sudo bash -c 'visudo -cf <(cat /etc/sudoers /path/to/to-be-added-file)'

由于visudo将解析#includedirin ,因此也会检查/etc/sudoersin 中的所有相关文件。sudoers.d

$ sudo cat /etc/sudoers.d/foo
Cmnd_Alias FOO = /bin/bar
$ sudo cat /tmp/bar
Cmnd_Alias FOO = /bin/foo
$ sudo bash -c 'visudo -cf <(cat /etc/sudoers /tmp/bar)'
>>> /dev/fd/63: Alias `FOO' already defined near line 31 <<<
parse error in /dev/fd/63 near line 31

相关内容