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

tec*_*raf 3 sudo

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

设想:

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

但是,它确实包含Cmnd_Aliasetc/sudoers.d.

如果移动到 a/etc/sudoers.d它会破坏sudo命令并Alias '<name>' already defined near line出错。

题:

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

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

mur*_*uru 6

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

sudo bash -c 'visudo -cf <(cat /etc/sudoers /path/to/to-be-added-file)'
Run Code Online (Sandbox Code Playgroud)

由于visudo将解析#includedirin /etc/sudoers,因此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
Run Code Online (Sandbox Code Playgroud)