¿Cuál es la sintaxis del archivo de configuración de LoggedFS?
La documentación oficial solo tenía instrucciones de uso para loggedfs
comando y un archivo de configuración de ejemplo. Ok, es XML, pero ¿cuáles son todas las etiquetas y atributos posibles y qué significan?
Respuesta aceptada:
Revisé Config.cpp
, el archivo responsable de analizar la configuración. La configuración de ejemplo en realidad hace un buen trabajo al capturar las opciones disponibles; no hay muchas
Cuando me refiero a "la salida de ejemplo" a continuación, me refiero a esta línea (tomada al azar de la página de muestra):
17:29:35 (src/loggedfs.cpp:136) getattr /var/ {SUCCESS} [ pid = 8700 kded [kdeinit] uid = 1000 ]
La etiqueta raíz es <loggedFS>
. Tiene dos atributos opcionales:
- registro habilitado es una cadena:"verdadero" significa que en realidad debería generar información de registro; cualquier otra cosa deshabilita todo el registro. El valor predeterminado es "verdadero", ya que ese es el punto central del programa
- imprimir nombre del proceso es una cadena:"verdadero" significa que la salida del registro incluirá el nombre del proceso, cualquier otra cosa significa que no lo incluirá. El valor predeterminado es "verdadero". En el resultado del ejemplo,
kded [kdeinit]
es el nombre del proceso
Los únicos nodos secundarios que le interesan son <include>
y <exclude>
. En el ejemplo, los agrupan bajo <includes>
y <excludes>
bloques, pero el analizador los ignora (al igual que cualquier otro nodo excepto <include>
y <exclude>
).
Naturalmente, <include>
las reglas hacen que genere la línea de registro si coinciden, mientras que <exclude>
las líneas hacen que no lo haga. En caso de superposición, <exclude>
anula <include>
. Normalmente necesita al menos un <include>
regla para que coincida con un evento que se registrará, pero una excepción es si hay 0 <include>
reglas — luego se registran todos los eventos, incluso si hay coincidencias <exclude>
lineas .
Ambos <include>
y <exclude>
tomar los mismos atributos:
- extensión es una expresión regular que se compara con la ruta absoluta del archivo al que se accedió/modificó/lo que sea (
extension
es un nombre bastante pobre, pero supongo que ese es el uso común). Por ejemplo, sitouch /mnt/loggedfs/some/file
, la expresión regular enextension
tendría que coincidir (parcialmente) con/mnt/loggedfs/some/file
- uido es una cadena que contiene un número entero o
*
. La regla solo coincide con una operación determinada si el propietario del proceso que provocó la operación tiene el ID de usuario especificado (*
naturalmente significa cualquier ID de usuario que coincida). En la salida de ejemplo,1000
es el uido - acción es el tipo específico de operación realizada en el sistema de archivos. En el resultado del ejemplo,
getattr
es la acción. Las acciones posibles son:- acceso
- chmod
- chown
- getattr
- enlace
- mkdir
- mkfifo
- mknod
- abrir
- abierto de solo lectura
- abierto-lectura-escritura
- abierto-solo escritura
- leer
- leerdir
- leer enlace
- renombrar
- rmdir
- estadísticas
- enlace simbólico
- truncar
- desvincular
- tiempo útil
- utilidades
- escribir
- renombre es una expresión regular. Si el código de retorno de la operación real del sistema de archivos realizada por LoggedFS es 0, la expresión regular se compara con la cadena
SUCCESS
. Un código de retorno distinto de cero hace que coincida conFAILURE
. Esos son los únicos valores posibles, por lo que lo más probable es que vaya a codificarSUCCESS
,FAILURE
, o use.*
si quieres los dos. En el resultado del ejemplo,SUCCESS
es elretname
A diferencia de <loggedFS>
atributos, estos no tienen valores predeterminados. Además, aunque el analizador reconocerá los atributos desconocidos y los errores, no detecta los atributos faltantes, por lo que si olvida un atributo utilizará la memoria no inicializada.