在设置sudo
环境时,我注意到 include 指令以井号 (#) 字符为前缀。
Solaris 将其显示为:
## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d
手册(Linux 和 Solaris)指出:
包含 sudoers 中的其他文件 可以使用 #include 和 #includedir 指令包含当前正在解析的 sudoers 文件中的其他 sudoers 文件。
和:
其他特殊字符和保留字井号(`#')用于指示注释(除非它是 #include 指令的一部分,或者除非它出现在用户名的上下文中并且后跟一个或多个数字,在这种情况下,它被视为 uid)。注释字符及其后的任何文本(直到行尾)都将被忽略。
#include
有谁知道为什么选择在和指令中使用英镑字符#includedir
?
附带说明:我经常使用类似的方法egrep -v '^#|^$' configfile
来获取非默认/活动的配置设置,这显然不适用于该sudoers
文件。
答案1
答案2
附带说明:我经常使用诸如egrep -v '^#|^$' configfile之类的东西来获取非默认/活动的配置设置,这显然不适用于 sudoers 文件。
这将从须藤版本1.9.1作为支持@include
并@includedir
已添加以使其“减少混乱”。
添加对 @include 和 @includedir 的支持
当哈希字符也是注释字符时,这些比 #include 和 #includedir 更容易混淆。
此提交还添加了包含指令的真正解析,而不是之前使用的纯词法分析器方法。因此,现在可以通过使用双引号字符串或使用反斜杠转义空格字符来包含带有空格的文件。
使用#include
and#includedir
是保留为了与 1.9.1 之前的版本兼容。