Sintaxe do arquivo de configuração do LoggedFS

7

Qual é a sintaxe do arquivo de configuração LoggedFS ?

A documentação oficial só tinha instruções de uso para o comando loggedfs e um exemplo de arquivo de configuração. Ok, é XML, mas quais são todas as tags e atributos possíveis e o que eles significam?

    
por Gilles 25.05.2011 / 23:14

1 resposta

7

Eu toquei em Config.cpp , o arquivo responsável por analisar a configuração. A configuração de exemplo realmente faz um bom trabalho ao capturar as opções disponíveis - não há muitas

Quando me refiro ao "exemplo de saída" abaixo, estou falando sobre essa linha (retirada aleatoriamente da página de amostra):

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

A tag raiz é <loggedFS> . Tem dois atributos opcionais:

  • logEnabled é uma cadeia de caracteres - "true" significa que deve realmente gerar informações de log; qualquer outra coisa desabilita todos os registros. O padrão é "true", já que esse é o ponto principal do programa
  • printProcessName é uma string - "true" significa que a saída do log incluirá o nome do processo, qualquer outra coisa significa que não. O padrão é "true". No exemplo de saída, kded [kdeinit] é o nome do processo

Os únicos nós filhos com os quais se importa são <include> e <exclude> . No exemplo, eles agrupam os que estão em <includes> e <excludes> blocks, mas eles são ignorados pelo analisador (assim como qualquer outro nó, exceto <include> e <exclude> ).

Naturalmente, as regras <include> fazem com que a linha de log seja exibida se corresponderem, enquanto as linhas <exclude> não o fazem. No caso de sobreposição, <exclude> substitui <include> . Normalmente, você precisa de pelo menos uma regra <include> para corresponder a um evento a ser registrado, mas uma exceção é se houver 0 <include> rules - então todos os eventos são registrados, mesmo se houver correspondência <exclude> linhas .

Tanto <include> quanto <exclude> usam os mesmos atributos:

  • extensão é uma expressão regular que corresponde ao caminho absoluto do arquivo que foi acessado / modificado / o que quer que seja ( extension é um nome bastante ruim, mas acho que é o uso comum). Por exemplo, se você for touch /mnt/loggedfs/some/file , a expressão regular em extension precisaria corresponder (parcial) a /mnt/loggedfs/some/file
  • uid é uma string que contém um inteiro ou * . A regra só corresponde a uma determinada operação se o proprietário do processo que causou a operação tiver o ID do usuário especificado ( * naturalmente significa que qualquer ID do usuário corresponde). No exemplo de saída, 1000 é o uid
  • action é o tipo específico de operação executada no sistema de arquivos. No exemplo de saída, getattr é a ação. As ações possíveis são:
    • acessar
    • chmod
    • chown
    • getattr
    • link
    • mkdir
    • mkfifo
    • mknod
    • aberto
    • somente leitura
    • open-readwrite
    • somente gravação aberta
    • ler
    • readdir
    • readlink
    • renomear
    • rmdir
    • statfs
    • link simbólico
    • truncar
    • desvincular
    • utime
    • utimens
    • escreva
  • retname é uma expressão regular. Se o código de retorno da operação real do sistema de arquivos executada pelo LoggedFS for 0, a expressão regular será correspondida com a string SUCCESS . Um código de retorno diferente de zero faz com que ele corresponda a FAILURE . Esses são os únicos valores possíveis, então é bem provável que você queira codificar SUCCESS , FAILURE ou usar .* se quiser os dois. No exemplo de saída, SUCCESS é o retname

Ao contrário dos atributos <loggedFS> , eles não têm padrões. Além disso, embora o analisador reconheça atributos desconhecidos e elimine erros, ele não detecta atributos ausentes, portanto, se você esquecer um atributo, ele usará memória não inicializada.

    
por 26.05.2011 / 00:19

Tags