Como detecto o que está mudando a propriedade do arquivo no Linux?

3

Eu herdei vários servidores Linux (Ubuntu Precise) e atualmente estou tendo problemas com a propriedade de uma pasta mudando para "root" com bastante frequência. Corremos o fantoche, que muda a propriedade para o usuário que deveria ser, mas outra coisa muda novamente um pouco mais tarde.

Atualmente, estou registrando as permissões no arquivo a cada 30 segundos para tentar diminuir o tempo para ver se há algo nos logs, etc. É um servidor grande e ocupado, portanto, sem mais informações, não é fácil encontrar nada nos logs.

Existe uma maneira de detectar o Linux quando a propriedade de um arquivo / pasta é alterada e detectar o processo responsável?

Colin Coghill
fonte
Você pode nos dizer qual diretório está mudando de propriedade? Se for um sistema ou aplicativo, poderá esclarecer a causa.
Boscoe 13/08/14
Nesse caso, é uma montagem do sistema de arquivos glusterfs (local), de modo que provavelmente indica alguma coisa, mas também estou interessado no caso geral. Eu tenho o auditd em execução agora, sugerido em uma das respostas, então vamos ver o que isso mostra.
Colin Coghill

Respostas:

8

Eu acho que você pode usar a auditoria para um arquivo / diretório específico ou escrever uma regra personalizada com base em seus requisitos

        auditctl -w <path to the file you need to monitor> -p war -k test

        Where -w is for specifying file path
        -p is for permission access (read,write,execute and attribute change)
        -k key name,you can give name you can use to filter audit rule

Então você pode pesquisar usando

        ausearch -ts today -k test

Por exemplo, eu usei isso, crie este arquivo / tmp / test e escreva alguns dados aleatórios

       auditctl -w /tmp/test -p warx -k test

e então execute este comando

       ausearch -ts today -k test

      --ts for start date
      -k is for key string

Então a saída disso

  type=SYSCALL msg=audit(1407949301.821:63216): arch=c000003e syscall=191 success=no
  exit=-61 a0=eacca0 a1=3600005db7 a2=7fff15265180 a3=84 items=1 ppid=2384 pid=16921
  auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10096
  comm="vim" exe="/usr/bin/vim" key="test"

Portanto, se você verificar a última linha de saída, ele mostrará que o comando executado é vim e com uid = 0, que é root

Se você quiser tornar essas alterações persistentes durante a reinicialização, em /etc/audit/audit.rules adicione a entrada como esta

  -w /tmp/test -p warx -k test

e verifique se o serviço auditd está funcionando

  service auditd status 

Para obter mais informações, consulte http://www.cyberciti.biz/tips/linux-audit-files-to-see-who-made-changes-to-a-file.html

Prashant Lakhera
fonte
Ferramenta fantástica, fez o truque, obrigado! Afinal, era fantoche, mas estava se referindo ao diretório por outro nome (vinculado).
Colin Coghill
4

Um rápido google revela inotify api no kernel do Linux.

Inotify (inode notify) é um subsistema de kernel do Linux que atua para estender os sistemas de arquivos para notar alterações no sistema de arquivos e relatar essas alterações nos aplicativos

Não consigo encontrar nenhum aplicativo que permita assistir a um arquivo diretamente com o inotify. No entanto, existe o pacote inotify-tools que permite obter acesso à API em scripts.

Por si só, não diz quem mudou o quê, mas você pode usar essa API para criar um script para reduzi-la. Por exemplo, combinando-o com lsof e ps

Matt
fonte
Baseado na sugestão de Matt, estou apenas brincando com as ferramentas inotify e, infelizmente, não acho muito útil. Executo este comando [root @ test ~] # rm -rf / tmp / test e, em seguida, teste inotify [root @ test ~] # inotifywait -e cria, exclui, modifica, move, attrib -m / tmp Configurando relógios. Relógios estabelecidos. / tmp / DELETE test Portanto, não está dizendo quem excluiu esse arquivo, mas sim notificando-o constantemente, portanto, a melhor maneira de obter uma notificação é escrever o shell script e o comando mail e executá-lo via.Pode estar errado, mas foi o que encontrei out
Prashant Lakhera
0

Desculpe, não há nada no sistema Linux padrão que faça logon nesse nível. Você provavelmente terá que escrever um roteiro, no entanto, mesmo que seja uma proposta de acerto ou falha.

Hmmmm .... você pode definir o bit imutável no arquivo para protegê-lo e ver quem reclama que não pode ser alterado:

 chattr +i filename1 ... filenamen
mdpc
fonte