LoggedFS 配置文件语法

Gil*_*il' 8 logs fuse

LoggedFS配置文件的语法是什么?

官方文档只有loggedfs命令的使用说明和配置文件示例。好的,它是 XML,但是所有可能的标签和属性是什么?它们是什么意思?

Mic*_*zek 8

我戳了Config.cpp一下,负责解析配置的文件。示例配置实际上在捕获可用选项方面做得很好——没有太多

当我提到下面的“示例输出”时,我指的是这一行(从示例页面中随机抽取):

17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
Run Code Online (Sandbox Code Playgroud)

根标签是<loggedFS>. 它有两个可选属性:

  • logEnabled是一个字符串——“true”意味着它应该实际输出日志信息;其他任何东西都会禁用所有日志记录。默认为“true”,因为这是程序的重点
  • printProcessName是一个字符串——“true”意味着日志输出将包含进程名称,其他任何内容都意味着它不会。默认为“真”。在示例输出中,kded [kdeinit]是进程名称

它唯一关心的子节点是<include><exclude>。在示例中,它们将那些放在<includes><excludes>块下,但解析器会忽略它们(除了<include>and之外的任何其他节点也是如此<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
  • action是在文件系统上执行的特定类型的操作。在示例输出中,getattr是操作。可能的操作是:
    • 使用权
    • 修改
    • chown
    • 获取属性
    • 关联
    • 目录
    • 微信
    • 米诺德
    • 打开
    • 只读
    • 开放读写
    • 只写
    • 读取目录
    • 阅读链接
    • 改名
    • 目录
    • 状态
    • 符号链接
    • 截短
    • 取消链接
    • 时间
    • 时间
  • retname是一个正则表达式。如果 LoggedFS 执行的实际文件系统操作的返回码为 0,则将正则表达式与字符串匹配SUCCESS。非零返回码使其与FAILURE. 这些是唯一可能的值,所以很有可能你要么去硬编码SUCCESSFAILURE或使用.*,如果你想两者。在示例输出中,SUCCESSretname

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