Arquivos desaparecendo no servidor linux

12

Eu tenho 4 arquivos específicos que parecem continuar desaparecendo do diretório pessoal de um usuário. Até onde sabemos, não há cronjobs ou outras tarefas automatizadas que as estejam removendo. Eu configurei a auditoria neles, mas os logs não estão realmente mostrando nada de interesse. Eu posso ver o nosso utilitário de backup acessando-os todas as noites até o ponto em que eles não estão mais lá, mas nada mais. Existe alguma coisa que estaria causando a remoção desses arquivos que seriam contornados?

Os arquivos em questão são estes:

/home/username/.bashrc
/home/username/.bash_profile

, bem como alguns arquivos no diretório .ssh do usuário. Cópias desses arquivos colocados em uma subpasta chamada "keepers" são deletadas ao mesmo tempo. Alterar as permissões para 000 e tê-los de propriedade do root não ajudou.

Atualmente, tenho a configuração inotifywait para criar, excluir e mover essa subpasta, portanto, espero que isso apareça em algo, embora não seja muito diferente de quando aconteceu, e não o que causou isso.

    
por Chad P 23.08.2011 / 15:15

6 respostas

18

Você pode usar systemtap para mostrar todos os PIDs que estão tentando usar unlink () no inode dos arquivos .bashrc e .bash_profile .

Instale systemtap e os símbolos de depuração do seu kernel.

Crie um arquivo com o nome unlink.stap com o seguinte conteúdo:

probe syscall.unlink
{
    printf ("%s(%d) unlink (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

Em seguida, execute-o com sudo stap unlink.stap

Você também pode usar inotify para ver quando o arquivo é excluído.

Outra solução é usar ftrace :

trace-cmd record -e \*unlink\*

Aguarde até que o arquivo seja excluído, pressione CTRL + C para parar trace-cmd record ... e, em seguida, execute:

trace-cmd report
    
por 12.09.2011 / 15:39
5

além da resposta de micea, você pode chattr + os arquivos como root e ver se alguma coisa registra um erro ao tentar removê-los.

    
por 12.09.2011 / 16:41
4

Você tem certeza absoluta de que o usuário não está (acidentalmente) excluindo-os?

Eu tive alguns usuários sem noção (Windows) com o mesmo problema. Acontece que eles apagaram esses arquivos cada vez que eles visitaram o diretório home com um cliente FTP. Eles notaram os arquivos .xxxx (o cliente ftp não os ocultou) e removeram a "desordem".

Nunca me ocorreu que eles fizeram isso sozinhos até que um deles reclamou sobre o reaparecimento espontâneo de arquivos que ele havia deletado vários dias antes.

    
por 12.09.2011 / 16:07
3

Usamos scripts de logout bash (~ / .bash_logout) para limpar certos arquivos após o logout - você pode verificar se você tem essa configuração, talvez com um glob carregado.

    
por 16.09.2011 / 01:26
2

Mais parece um intruso, que está fazendo um find / home / user -name nomeararquivo -exec rm -f {} \; depois de todo o seu sneaking :). Apenas adivinhando, porque você mencionou que os arquivos de backup também estão sendo excluídos.

    
por 16.09.2011 / 02:10
1

Para evitar a perda de arquivos e seu conteúdo, você pode configurar libtrash via LD_PRELOAD. Usando libtrash você pode fazer várias coisas, mas aquelas que podem ser interessantes para você são

INTERCEPT_UNLINK
INTERCEPT_RENAME
INTERCEPT_FOPEN
INTERCEPT_OPEN

Um bom artigo sobre libtrash pode ser encontrado aqui

Outra coisa que você mencionou, que você chiou arquivos para root e eles ainda foram removidos. É porque / home / username é propriedade do nome de usuário; e se dir diz mod 755; então qualquer arquivo ou diretório nesse diretório de propriedade não importando quem possa ser removido pelo usuário; até se é um arquivo raiz ou dir. É basicamente devido ao fato de que a remoção de arquivos em dir significa alterando o conteúdo do diretório e o usuário tem 7 (em 755) desse diretório para que ele possa fazer o que quiser.

Existem maneiras de bloquear isso como outras pessoas já sugeridas via chattr em sistemas de arquivos ext para definir arquivos como imutáveis (+ i). Então, seria necessário desarmar a bandeira imutável antes de fazer qualquer alteração no arquivo / dir que tenha o sinalizador + i. O flag / chattr imutável só pode ser usado pelo root.

    
por 18.09.2011 / 17:10