在设置sudo
环境时,我注意到 include 指令以井号 (#) 字符为前缀。
Solaris 将此显示为:
## Read drop-in files from /etc/sudoers.d
## (the '#' here does not indicate a comment)
#includedir /etc/sudoers.d
Run Code Online (Sandbox Code Playgroud)
手册(Linux 和 Solaris)指出:
在 sudoers 中包含其他文件 可以使用 #include 和 #includedir 指令从当前正在解析的 sudoers 文件中包含其他 sudoers 文件。
和:
其他特殊字符和保留字井号 (`#') 用于表示注释(除非它是 #include 指令的一部分,或者除非它出现在用户名的上下文中并后跟一个或多个数字,在这种情况下,它被视为 uid)。注释字符和它之后的任何文本,直到行尾,都将被忽略。
有人知道为什么选择在#include
and#includedir
指令中使用磅字符吗?
作为旁注:我经常使用类似的东西egrep -v '^#|^$' configfile
来获取非默认/活动配置的设置,这显然不适用于该sudoers
文件。
Gil*_*il' 43
#include
于 2004年添加。它必须与已经存在的东西兼容。不过,我认为include /path/to/file
这不会有歧义,但解析起来可能有点困难,因为解析器必须区分include /path/to/file
(include 指令) 和include = foo
(允许用户include
运行命令foo
)。
但我认为主要的原因是看起来像 C 预处理器,手册明确引用了它作为灵感。
小智 5
附带说明:我经常使用 egrep -v '^#|^$' 配置文件来获取非默认/活动配置的设置,这显然不适用于 sudoers 文件。
这将从sudo 版本 1.9.1 开始作为对 的支持,@include
并且@includedir
已添加以使其“不那么令人困惑”。
添加对@include 和@includedir 的支持
当哈希字符也是注释字符时,它们比 #include 和 #includedir 更容易混淆。
与之前使用的纯词法分析器方法相反,此提交还添加了对包含指令的真正解析。因此,现在可以通过使用双引号字符串或使用反斜杠转义空格字符来包含带有空格的文件。
保留使用#include
和#includedir
是为了与 1.9.1 之前的版本兼容。
归档时间: |
|
查看次数: |
28988 次 |
最近记录: |