
Excluir um arquivo no Linux ou em qualquer outro sistema operacional na verdade não remove o arquivo do disco rígido. O sistema operacional exclui os ponteiros para o arquivo e marca o espaço ocupado como pronto para ser gravado novamente, enquanto os dados reais permanecem.
Um arquivo excluído pode ser recuperado até que seja substituído por outros dados. O comando shred impede a recuperação de arquivos excluídos no Linux, substituindo o arquivo excluído por dados aleatórios.
shred é uma má opção para apagar um SSD. A substituição de blocos de dados específicos em SSDs não é possível devido ao nivelamento de desgaste ou wear-leveling. Em outras palavras, fragmentar não substitui necessariamente as mesmas células de memória física.
Vamos usar então o comando shred que tem esse propósito.
Sintaxe e Opções do Comando shred
A sintaxe básica do comando shred é:
shred [opções] [nome do arquivo]
acima,
- opções: Especifica o número de substituições, tamanho do arquivo, saída, etc.
- nome do arquivo: O nome do arquivo que você deseja fragmentar.
OPÇÕES DO COMANDO SHRED
Opção: | Descrição: |
-n | Especifica o número de substituições. |
-u | Sobrescrever e excluir. |
-s | Quantidade de bytes a serem destruídos. |
-v | Mostrar informações estendidas. |
-f | Comando para forçar |
-z | Ocultar fragmentação. |
--version | versão |
--help | Exibir ajuda |
O comando shred
faz parte do pacote coreutils que vem com o Linux pronto para uso; ou seja, não é preciso instalá-lo.
A destruição é feita executando shred
no terminal e adicionando opções para personalizar o processo ou a saída. As opções de fragmentação podem ser combinadas.
shred
realiza uma série de tarefas de substituição que destroem os dados no disco e reduzem significativamente a chance de recuperação de dados. Os arquivos não são removidos após a destruição por padrão porque é comum operar em arquivos inteiros do dispositivo como /dev/hda. Os usuários podem especificar se desejam remover o arquivo também.
vamos ao passo a passo
Defina o número de vezes para substituir um arquivo
A opção -n permite que os usuários especifiquem quantas vezes o arquivo é sobrescrito.
Isso não irá excluir o arquivo, apenas sobrescrever o setor onde ele está.
maria@debian11VM:~$ shred -n 10 meuarquivo.txt
Neste exemplo, especificamos que queremos que o arquivo seja substituído 10 vezes. Também usamos as opções -v e -z para obter uma saída do processo no terminal e ocultar a trituração. Observe que a 11ª passagem é para ocultar a trituração.
Usando o Comando shred no Linux para Sobrescrever e Deletar um Arquivo
Use a opção -u para substituir e excluir um arquivo.
#1 Abaixo, uso -u para sobrescrever o arquivo e excluí-lo. Também uso -n3 para especificar a quantidade de substituições
maria@debian11VM:~$ shred -n 3 -u lista.txt
Se não usarmos -u o arquivo não será destruído mas haverá destruição
#2 podemos incrementar com -v para vermos mais detalhes do que está acontecendo
maria@debian11VM:~$ shred -n 10 -v meuarquivo.txt
Sobrescrever bytes de texto
A opção -s permite substituir uma parte específica de um arquivo expresso em bytes. Sufixos como K-kilobytes, M-megabytes e G-gigabytes também são aceitos.
Veja o conteúdo do arquito lista.txt
maria@debian11VM:~$ cat lista.txt manga goiaba melancia abobora limao laranja
Neste exemplo, os primeiros 10 bytes do arquivo de texto de senhas serão substituídos.
maria@debian11VM:~$ shred -s 10 lista.txt
maria@debian11VM:~$ cat lista.txt ?r?h?ba melancia abobora limao laranja
Altere as permissões para permitir a gravação, se necessário
A opção -f permite o acesso aos arquivos alterando as permissões de arquivo, se necessário.
maria@debian11VM:~$ shred -f -s 20 lista.txt
Esconder shred
Use a opção -z para fragmentar um arquivo e sobrescrevê-lo com zeros para ocultar a fragmentação do sistema de arquivos.
maria@debian11VM:~$ shred -z -s 20 lista.txt
Usando shred em uma Partição
Podemos usar shred para modificar ou destruir toda uma partição ou disco
maria@debian11VM:~$ sudo shred -ufv /dev/sda2 [sudo] senha para maria: shred: /dev/sda2: passagem 1/3 (random)... shred: /dev/sda2: passagem 2/3 (random)... shred: /dev/sda2: passagem 3/3 (random)... shred: /dev/sda2: removendo shred: /dev/sda2: renomeado como /dev/0000 shred: /dev/0000: renomeado como /dev/000 shred: /dev/000: renomeado como /dev/00 shred: /dev/00: renomeado como /dev/0 shred: /dev/sda2: removido
Considerações importantes ao usar o comando shred
O comando shred gira em torno da suposição de que os dados são substituídos in place(no local). Alguns sistemas de arquivos e hardware não seguem essa regra, mas, em vez disso, registram as alterações ou movem os dados para wear-leveling(nivelamento de desgaste).
Portanto, fragmentar é ineficaz para:
- Sistemas de arquivos com diário ou estruturados em log, como os fornecidos em AIX e Solaris (e JFS, ReiserFS, XFS e Ext3).
- Sistemas de arquivos baseados em RAID e sistemas que gravam dados redundantes e continuam mesmo em caso de falha na gravação.
- Sistemas de arquivos que suportam a criação de instantâneos (clonagem), como o servidor NFS do dispositivo de rede.
- Sistemas de arquivos que armazenam em cache em locais temporários, como clientes NFS versão 3.
- Sistemas de arquivos compactados.