Jaká je syntaxe konfiguračního souboru LoggedFS?
Oficiální dokumentace obsahovala pouze pokyny k použití pro loggedfs příkaz a příklad konfiguračního souboru. Dobře, je to XML, ale jaké jsou všechny možné značky a atributy a co znamenají?
Přijatá odpověď:
Prohledal jsem Config.cpp , soubor zodpovědný za analýzu konfigurace. Příklad konfigurace ve skutečnosti dělá docela dobrou práci při zachycení dostupných možností – není jich moc
Když odkazuji na „ukázkový výstup“ níže, mluvím o tomto řádku (náhodně vytaženém z ukázkové stránky):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
Kořenová značka je <loggedFS> . Má dva volitelné atributy:
- logEnabled je řetězec — „true“ znamená, že by měl ve skutečnosti vydávat informace protokolu; cokoliv jiného zakáže veškeré protokolování. Výchozí hodnota je „true“, protože to je tak trochu smyslem programu
- printProcessName je řetězec — „true“ znamená, že výstup protokolu bude obsahovat název procesu, cokoliv jiného znamená, že nebude. Výchozí hodnota je „true“. V ukázkovém výstupu
kded [kdeinit]je název procesu
Jediné podřízené uzly, o které se stará, jsou <include> a <exclude> . V příkladu je seskupují pod <includes> a <excludes> bloky, ale ty jsou analyzátorem ignorovány (stejně jako všechny ostatní uzly kromě <include> a <exclude> ).
Přirozeně <include> pravidla způsobí, že vypíše řádek protokolu, pokud se shodují, zatímco <exclude> řádky způsobí, že ne. V případě překrývání <exclude> přepíše <include> . Normálně potřebujete alespoň jeden <include> pravidlo odpovídající události, která má být protokolována, ale výjimka je, pokud existuje 0 <include> pravidla — pak jsou protokolovány všechny události, i když existují odpovídající <exclude> řádky .
Oba <include> a <exclude> mít stejné atributy:
- rozšíření je regulární výraz, který se shoduje s absolutní cestou k souboru, ke kterému bylo přistupováno/upraveno/cokoli (
extensionje dost špatné jméno, ale myslím, že se to běžně používá). Pokud se napříkladtouch /mnt/loggedfs/some/file, regulární výraz vextensionbude muset (částečně) odpovídat/mnt/loggedfs/some/file - uid je řetězec, který obsahuje buď celé číslo, nebo
*. Pravidlo odpovídá dané operaci pouze v případě, že vlastník procesu, který operaci způsobil, má zadané ID uživatele (*přirozeně znamená jakékoli shody ID uživatele). V příkladu výstupu1000je uid - akce je specifický typ operace prováděné na souborovém systému. V příkladu výstupu
getattrje akce. Možné akce jsou:- přístup
- chmod
- chown
- getattr
- odkaz
- mkdir
- mkfifo
- mknod
- otevřené
- otevřené-pouze pro čtení
- otevřený-readwrite
- pouze otevřít-zapisovat
- číst
- readdir
- přečíst odkaz
- přejmenovat
- rmdir
- statfs
- symlink
- zkrátit
- odpojit
- doba provozu
- utimens
- pište
- přejmenovat je regulární výraz. Pokud je návratový kód skutečné operace souborového systému provedené LoggedFS 0, regulární výraz se shoduje s řetězcem
SUCCESS. Nenulový návratový kód způsobí, že se shoduje sFAILURE. Toto jsou jediné možné hodnoty, takže s největší pravděpodobností buď napevno zakódujeteSUCCESS,FAILUREnebo použijte.*pokud chceš obojí. V příkladu výstupuSUCCESSjeretname
Na rozdíl od <loggedFS> atributy, nemají žádné výchozí hodnoty. I když parser rozpozná neznámé atributy a dojde k chybě, nezjistí chybějící atributy, takže pokud atribut zapomenete, použije neinicializovanou paměť.