是否可以visudo
在包含的其他文件的上下文中对文件执行健全性检查/etc/sudoers.d
?
设想:
我想向/etc/sudoers.d
文件添加一个新文件,该文件本身是正确的并且它通过了visudo -c
解析器。
但是,它确实包含Cmnd_Alias
与 中的另一个文件冲突的行etc/sudoers.d
。
如果移动到 a ,/etc/sudoers.d
它会sudo
因Alias '<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
将解析#includedir
in ,因此也会检查/etc/sudoers
in 中的所有相关文件。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