LoggedFS 配置文件语法

LoggedFS 配置文件语法

的语法是什么记录文件系统配置文件?

官方文档只有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,或者.*如果您想要两者都使用。在示例输出中,SUCCESSretname

<loggedFS>属性不同,这些属性没有默认值。此外,虽然解析器会识别未知属性并出错,但它不会检测丢失的属性,因此如果您忘记了某个属性,它将使用未初始化的内存。

相关内容