Como posso ter certeza de que um diretório ou arquivo é realmente excluído?

14

Eu sei que a maioria dos arquivos, quando excluídos, não são realmente removidos do disco e podem ser recuperados mais tarde.

Como garantir que um diretório que eu excluí seja realmente removido do disco? Existem utilitários para isso?

Estou usando o Debian Linux.

jcora
fonte
5
A resposta curta: você não pode! A resposta longa: destrua fisicamente o disco ou reformule a pergunta: quanto esforço seria necessário para recuperar os dados e qual seria a taxa de sucesso de tal tentativa?
Marco

Respostas:

11

Criptografe os dados antes de armazená-los. Para apagar os dados, limpe a tecla.

Se você já escreveu os dados em texto simples, é tarde demais para limpá-los de uma maneira simples. Pode haver várias cópias dos dados em vários locais:

  • no sistema de arquivos, se o arquivo foi gravado várias vezes (sobrescrito ou substituído);
  • no sistema de arquivos, se ele foi reorganizado como parte da desfragmentação;
  • no diário (é provável que desapareça muito rápido após a última gravação dos dados);
  • em backups;
  • em setores com deficiência (especialmente no SSD).

Para se livrar das cópias dos dados no sistema de arquivos, um método bruto é preencher o espaço livre ( cat /dev/zero >somefilee esperar que ele pare porque o sistema de arquivos está cheio). Isso substituirá todos os blocos completos.

Pequenas partes dos dados podem permanecer em blocos incompletos usados ​​parcialmente por outros arquivos. Isso é especialmente uma preocupação com nomes de arquivos, que podem permanecer em blocos que armazenam o conteúdo do diretório. Para se livrar de tudo, faça backup de todos os arquivos, sobrescreva o dispositivo que contém o sistema de arquivos completamente e restaure os arquivos.

A mídia de armazenamento pode reter dados em blocos que não estão mais em uso. Em discos rígidos, isso significa blocos defeituosos que foram realocados; essa é uma ocorrência bastante rara até que o disco comece a se desgastar. No SSD, essa é uma ocorrência comum devido ao nivelamento do desgaste. Nos dois casos, a ameaça é muito baixa, pois o acesso a esses dados requer um invasor um tanto sofisticado, com algum hardware moderadamente caro e tempo a perder. Se você se preocupa com essas ameaças, criptografe seus dados e não deixe sua chave por aí.

Observe que você pode receber conselhos sobre como apagar dados fazendo várias passagens ou usando dados aleatórios em vez de zeros (“Limpeza de Gutmann”). Esqueça: isso se aplica apenas aos discos rígidos da década de 1980 (e mesmo assim os dados não são tão baratos para reconstruir e a reconstrução é pouco confiável). Substituir com zeros é bom o suficiente; fazer vários passes aleatórios é um conselho obsoleto ou óleo de cobra. Consulte Por que escrever zeros (ou dados aleatórios) em um disco rígido várias vezes melhor do que apenas fazer uma vez?

Gilles 'SO- parar de ser mau'
fonte
12

Existe uma ferramenta muito popular chamada shred. Ele substituirá todos os arquivos 25 vezes antes de ser excluído. Isso pode me o que você está procurando.

O uso do shred é bastante simples

$ shred secret_archive.tar.gz

Observe, no entanto, que em sistemas modernos shredpode ser ineficiente ou inútil se:

  • Seus programas criam arquivos temporários dos quais você não conhece (como muitos aplicativos GUI)
  • Seu FS é baseado em Copy-On-Write (como ZFS ou Btrfs)
  • Seu FS é baseado em log (como o NILFS)
  • Seu FS usa registro no diário de dados (como JFS, ReiserFS, XFS, ext3 ou ext4 em algumas configurações)
  • Seu FS usa compactação
  • Seu FS aloca novas versões de arquivos em locais diferentes
  • Você tem instantâneos ou backups
  • Você está em uma rede FS
  • Você está usando um SSD com algoritmos de nivelamento de desgaste

Outras opções e potencialmente mais seguras são:

  • Criptografando dados críticos
  • Substituindo toda a partição ou dispositivo de armazenamento
  • Destruição física do dispositivo
taffer
fonte
1
De acordo com minha página de manual, shredfunciona mesmo com ext3 (e acho que também ext4) ao usar os modos data = ordenado (padrão) e dados = write-back . Além disso, existe uma alternativa simples: basta criar um arquivo enorme ocupando todo o espaço restante do sistema de arquivos para que o arquivo excluído seja substituído.
Scai
Obrigado. Eu apenas consertei. journaling -> data jornaling
taffer
@scai, o arquivo enorme método não vai necessariamente funcionar como blocos do arquivo pode já ter sido realocados e ainda não escrito (como dados falloced, último bloco de arquivos ou diretórios ...)
Stéphane Chazelas
3
shredé óleo de cobra: não é melhor que head -c $(wc -c secret_archive.tar.gz)>! secret_archive.tar.gz`. O uso do shred é sempre inútil, a menos que você esteja usando um disco rígido dos anos 80 ou início dos 90.
Gilles 'SO- stop be evil'
3
shred / bcwipe / etc. são óleo de cobra no nível do sistema de arquivos. Para qualquer sistema de arquivos. Devido à maneira como você trabalha com arquivos: Toda vez que você clica em Salvar, o arquivo antigo é excluído (reside no espaço livre) e um novo arquivo é criado. Você não pode destruí-lo se o sistema de arquivos já o esqueceu. - É diferente no nível do dispositivo ou sobrescreve todo o espaço livre. Existe uma das poucas fontes de dados aleatórios rápidos disponíveis no Linux / Unix. / dev / (u) aleatório é muito lento para ser usado na substituição de grandes quantidades de dados. - Então uma única passagem pingo é OK para o dispositivo ou o espaço livre, não apenas para um único arquivo
frostschutz