的语法是什么记录文件系统配置文件?
官方文档只有loggedfs
命令的使用说明和配置文件示例。好的,它是 XML,但是所有可能的标签和属性是什么以及它们的含义是什么?
答案1
我翻阅了Config.cpp
负责解析配置的文件。示例配置实际上在捕获可用选项方面做得非常好——没有太多
当我提到下面的“示例输出”时,我正在谈论这一行(从示例页面随机提取):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
根标签是<loggedFS>
.它有两个可选属性:
- 日志启用是一个字符串——“true”意味着它实际上应该输出日志信息;其他任何内容都会禁用所有日志记录。默认为“true”,因为这就是程序的全部意义
- 打印进程名称是一个字符串——“true”意味着日志输出将包含进程名称,其他任何值都意味着它不会。默认为“真”。在示例输出中,
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
- uid是一个包含整数或 的字符串
*
。仅当导致操作的进程的所有者具有指定的用户 ID(*
自然意味着任何用户 ID 都匹配)时,该规则才匹配给定的操作。在示例输出中,1000
是 uid - 行动是在文件系统上执行的特定操作类型。在示例输出中,
getattr
是操作。可能采取的行动有:- 使用权
- chmod
- 乔恩
- 获取属性
- 关联
- 目录
- MKFIFO
- 姆诺德
- 打开
- 开放只读
- 开放读写
- 开放-只写
- 读
- 读目录
- 阅读链接
- 改名
- 目录
- 统计文件系统
- 符号链接
- 截短
- 取消链接
- 乌泰姆
- 乌蒂门斯
- 写
- 重新命名是一个正则表达式。如果 LoggedFS 执行的实际文件系统操作的返回码为 0,则正则表达式与字符串 进行匹配
SUCCESS
。非零返回码会导致它与FAILURE
.这些是唯一可能的值,因此您很可能会硬编码SUCCESS
,FAILURE
,或者.*
如果您想要两者都使用。在示例输出中,SUCCESS
是retname
与<loggedFS>
属性不同,这些属性没有默认值。此外,虽然解析器会识别未知属性并出错,但它不会检测丢失的属性,因此如果您忘记了某个属性,它将使用未初始化的内存。