我正在从 Linux Audit 格式创建一个解析器/转换器。当我研究格式、查看示例并阅读文档时,我偶然发现了一个问题。
我可以确定单个记录中的字段名称是独特的?
例如,这样的记录是否合法/出现在现实世界的实现中:
type=TYPE msg=audit(1.002:3): msg="the first msg field" msg="the second msg field"
第二个相关问题是我是否可以pid
在一个事件中只有一个?例如,此事件是否合法/出现在现实世界的实现中:
type=TYPE1 msg=audit(1.002:3): pid=0 msg="texthere" type=TYPE2 msg=audit(1.002:3): pid=0 msg="differenttexthere"
答案1
根据 Steve Grubb 在官方邮件列表上的回复(电子邮件链接):
史蒂夫的回答:
记录中是否可能存在重复字段?
有时。当这种情况发生时,我已经尝试修复这些问题。问题是并不是每个人都通过这个邮件列表运行他们的审计代码,以便我们可以检查它的格式是否正确。我计划做的是编写一个审计事件验证套件,用于检查事件是否格式良好,以及预期事件是否在预期的时间和按预期的顺序写入。清理这些事件是我的待办事项列表中的首要任务。
像这样的东西(显然没有多大意义):
type=CWD msg=audit(1464013682.961:409): cwd="/root” cwd=“/usr”
这样的事情不会发生,它更有可能发生在auid和uid周围。原因是内核会自动添加一些东西,因为它是可信的信息源。用户空间可以写入矛盾的信息。例如,如果守护程序正在代表用户工作,但尚未为该用户设置其 auid,那么您可能会看到此内容。
太长了;博士
这是可能的,但不常见且不鼓励。