Eu tenho quatro arquivos específicos que parecem desaparecer do diretório pessoal de um usuário. Até onde sabemos, não há cronjobs ou outras tarefas automatizadas que os removessem. Eu configurei o auditd neles, mas os logs não estão realmente mostrando nada de interessante. Eu posso ver 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 algo que faria com que esses arquivos fossem removidos para contornar o auditd?
Os arquivos em questão são estes:
/home/username/.bashrc
/home/username/.bash_profile
bem como alguns arquivos no diretório .ssh desse usuário. Cópias desses arquivos inseridos em uma subpasta chamada "keepers" também são excluídas. Alterar as permissões nelas para 000 e tê-las pertencentes ao root não ajudou.
Atualmente, tenho a configuração inotifywait para criar, excluir, mover essa subpasta, espero que isso aconteça, embora não registre muito além de quando aconteceu, não o que a causou.
Respostas:
Solução 1 : systemtap
Você pode usar systemtap para mostrar todos os PIDs que estão tentando usar unlink () no inode
.bashrc
e nos.bash_profile
arquivos.Instale systemtap e os símbolos de depuração para o seu kernel.
Crie um arquivo com o nome
unlink.stap
com o seguinte conteúdo:Em seguida, execute-o com
sudo stap unlink.stap
Solução 2 : inotify
Você também pode usar inotify para ver quando o arquivo é excluído.
Solução 3 : ftrace
Outra solução é usar o ftrace :
Aguarde a exclusão do arquivo, pressione CTRL + C para parar
trace-cmd record ...
e execute:Solução 4 :
instalação do bpftrace
bpftrace
e execute:fonte
além da resposta da micea, você pode conversar com os arquivos como root e ver se alguma coisa registra um erro ao tentar removê-los.
fonte
Você tem certeza absoluta de que o próprio usuário não os está excluindo (acidentalmente)?
Eu tive alguns usuários sem noção (Windows) com o mesmo problema. Acontece que eles excluíam esses arquivos toda vez que visitavam seu diretório doméstico 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 se queixou dos arquivos que apareceram espontaneamente, que ele havia excluído vários dias antes.
fonte
Usamos scripts bash logout (~ / .bash_logout) para limpar certos arquivos após o logout - você pode verificar se possui essa configuração, talvez com um globo de gordura.
fonte
Parece mais um intruso, que está fazendo um find / home / user-name filename -exec rm -f {} \; depois de todo o seu sneaking :). Apenas adivinhe, porque você mencionou que os arquivos de backup também estão sendo excluídos.
fonte
Para evitar a perda dos arquivos e seu conteúdo, você pode configurar o libtrash via LD_PRELOAD . Usando libtrash, você pode fazer várias coisas, mas aquelas que podem ser interessantes para você são
Um bom artigo sobre libtrash pode ser encontrado aqui
Outra coisa que você mencionou: você copiou os arquivos para o root e eles ainda foram removidos. Isso ocorre porque / home / nome de usuário pertence ao nome de usuário; e se dir diz mod 755; qualquer arquivo ou diretório nesse diretório pertencente a não importa quem possa ser removido pelo usuário; mesmo que seja arquivo ou diretório raiz. É basicamente devido ao fato de que remover o arquivo no diretório significa alterar o conteúdo do diretório e o usuário possui 7 (em 755) desse diretório para que ele possa fazer o que quiser.
Existem maneiras de bloquear isso, como outras pessoas já sugeriram via chattr em sistemas de arquivos ext para definir arquivos como imutáveis (+ i). Em seguida, seria necessário desarmar o sinalizador imutável antes de fazer alterações no arquivo / diretório que possui o sinalizador + i. Sinalizador imutável / chattr só pode ser usado pela raiz.
fonte