LoggedFS配置文件的语法是什么?
官方文档仅包含该loggedfs
命令的用法说明和一个配置文件示例。好的,它是XML,但是所有可能的标记和属性是什么,它们的含义是什么?
LoggedFS配置文件的语法是什么?
官方文档仅包含该loggedfs
命令的用法说明和一个配置文件示例。好的,它是XML,但是所有可能的标记和属性是什么,它们的含义是什么?
Answers:
我戳了Config.cpp
一下,该文件负责解析配置。该示例配置实际上在捕获可用选项方面做得非常好-并不是很多
当我参考下面的“示例输出”时,我在说的是这一行(从示例页面中随机抽取):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
根标记为<loggedFS>
。它具有两个可选属性:
kded [kdeinit]
是进程名称它唯一关心的子节点是<include>
和<exclude>
。在该示例中,它们将那些在<includes>
和下的<excludes>
块进行分组,但是解析器将忽略它们(与<include>
和以外的任何其他节点一样<exclude>
)。
自然,<include>
规则会使其匹配时输出日志行,而<exclude>
行则不会。如果发生重叠,请<exclude>
覆盖<include>
。通常,您至少需要一条<include>
规则来匹配要记录的事件,但是有0 <include>
条规则是一个例外- 即使有匹配的<exclude>
行,也会记录所有事件。
双方<include>
并<exclude>
采取相同的属性:
extension
该名称是一个很差的名字,但我想这是常用的用法)。例如,如果您使用touch /mnt/loggedfs/some/file
中的正则表达式,则extension
需要(部分)匹配/mnt/loggedfs/some/file
*
。仅当引起该操作的进程的所有者具有指定的用户ID(*
自然意味着任何用户ID匹配)时,该规则才与给定的操作匹配。在示例输出中,1000
是uidgetattr
是动作。可能的操作是:
SUCCESS
。非零的返回码使它与匹配FAILURE
。这些是唯一可能的值,所以很有可能你要么去硬编码SUCCESS
,FAILURE
或使用.*
,如果你想两者。在示例输出中,SUCCESS
是retname
与<loggedFS>
属性不同,这些属性没有默认值。同样,虽然解析器将识别未知属性并输出错误,但它不会检测到丢失的属性,因此,如果忘记了一个属性,它将使用未初始化的内存。
<include extension="/a" uid="*" action=".*" retname=".*" />
,将匹配对路径包含的文件进行的每个操作,/a
甚至可能匹配/foo/abc/bar
。您可能想用^
和将它们全部锚定$
,但是随后您需要包括它匹配的整个路径
/a
,排除/a/b
和包括/a/b/c
,被/a/b/c
观看了吗?包括目录是否总是包含其内容?