Como posso descobrir qual usuário excluiu um diretório?

8

Meu servidor Ubuntu possui cerca de 30 usuários ativos. Eu pessoalmente conheço todos que usam o servidor. Recentemente, alguns amigos e eu estávamos trabalhando no projeto. Criamos um novo diretório para o projeto e, como todo mundo conhece todo mundo, não nos preocupamos em proteger nosso trabalho com várias permissões. Deveríamos ter, porém, porque acordamos hoje de manhã e descobrimos que alguém removeu todo o diretório.

Nosso trabalho é realizado a cada noite e, portanto, não é muito importante restaurar nosso trabalho. No entanto, gostaríamos de descobrir quem o removeu para poder enfrentá-los. Até agora, a melhor coisa que encontramos para encontrar o culpado é verificar o histórico do bash de todos, mas isso é longo e tedioso e as chances são de que, se houvesse uma intenção maliciosa por trás da remoção do diretório, o culpado provavelmente o modificasse para cobrir seus rastros (ou, é claro, eles podem usar um shell diferente).

Então, basicamente, qual é a maneira mais fácil e rápida de descobrir quem excluiu um diretório?

Agradeço antecipadamente pelo seu tempo.

Rob S.
fonte
2
Eu não acho que isso é possível.
enzotib
4
Da próxima vez, use um sistema de controle de versão ou SparkleShare (que usa um VCS git) ou uma pasta criptografada (usando [gnome- ] encfs ) sincronizada com o Ubuntu One ou Dropbox.
dAnjou
@dAnjou Temos o git e o subversion instalados em nosso servidor, mas como trabalhamos em um site no qual constantemente adicionamos / removemos arquivos dele, parecia um incômodo desnecessário nos preocuparmos em usá-lo. Como eu aludi na minha pergunta, provavelmente deveríamos ter criado um grupo e tornado o diretório acessível apenas pelo nosso grupo. Independentemente disso, podemos recuperar todo o nosso trabalho desde que o fizemos. Minha preocupação agora é que eu não quero que um usuário exclua diretórios no sistema com os quais eles não são afiliados. Confio em todos os meus usuários para não fazer algo assim, então isso realmente me incomoda.
Rob S.
Sim, não é possível.
Psusi
11
Você pode assistir a exclusões (ou modificações) nos arquivos. Veja cyberciti.biz/tips/… eman auditctl
Lekensteyn

Respostas:

5

Não encontrei uma resposta mágica à sua pergunta; parte desse motivo está detalhada aqui: /superuser/178596/checking-user-command-history-in-unix

Este comando simples pode ajudá-lo a rastrear o que aconteceu, procurando comandos rm & mv em todos os arquivos de histórico do shell em todos os diretórios pessoais dos usuários:

find /home -type f -iname .*history -exec grep "rm\|mv" {} \;

É bom que você tenha um backup válido para salvá-lo, mas eu recomendo criar alguns grupos para pastas de projeto e apenas adicionar contas de usuário a esses grupos; Isso poupará muita dor no futuro.

Exemplo: adicione um grupo e adicione membros da equipe do projeto a ele

groupadd coolproject
adduser jim coolproject
adduser joe coolproject
adduser charlie coolproject

defina as permissões corretamente de forma recursiva e garanta o acesso futuro da equipe, independentemente de quem cria / edita arquivos

chown -R yourusername:coolproject /path/to/projectdir
find /path/to/projectdir -type d -exec chmod 2775 {} \;

(o 2 define a propriedade do grupo como "pegajosa", para garantir que o proprietário do grupo de qualquer projeto permaneça "com projeto legal")

find /path/to/projectdir -type f -exec chmod 664 {} \;

Espero que ajude você! B-)

Chad Stovern
fonte
Obrigado! Modifiquei seu comando para "find / home -type f -iname. * History -print -exec grep" rm \ | mv "{} \;" para que eu pudesse obter os nomes dos arquivos dos históricos que revelavam informações interessantes.
Rob S.
excelente Rob! feliz que eu poderia ser de alguma ajuda. =)
Chad Stovern
1

Em teoria, é possível descobrir o tempo de exclusão, portanto isso pode reduzir os usuários.

Verifique as i_dtime especificações ext2 .

organizar
fonte