Guia do Linux/Iniciante+Intermediário/Explicações básicas: diferenças entre revisões

[edição não verificada][edição não verificada]
# [[/Diretório home/]]
# [[/Diretório superior/]]
 
===Destruindo arquivos/partições de forma segura===
 
Esta seção tem a intenção de conscientizar o administrador do uso devido de técnicas para garantir que dados sensíveis sejam apagados de forma segura em seu sistema.
 
Quando um arquivo é apagado, apenas a entrada na tabela de inodes é mexida, e ele pode ainda ser recuperado com o debugfs e um pouco de paciência e engenharia. O mesmo acontece com as partições, que podem ser recuperadas com facilidade (isto é explicado no nível Intermediário do guia). Esta recuperação é proporcionada pelas regras de funcionamento do sistema de arquivos e do esquema de particionamento, ou seja, são permitidas pelo SO.
 
Vou um pouco mais além: O disco rígido é uma mídia magnética e opera de forma mecânica para ler/gravar dados. Quando um arquivo é apagado, seja por qualquer motivo, ainda é possível recupera-lo. O que permite isto é porque o HD nem sempre tem a precisão de gravar exatamente no mesmo lugar (pois a cabeça é movida mecanicamente), gravando em trilhas microscópicamente vizinhas a anterior. Então a imagem do arquivo que foi apagada continua lá. Segundo ouvi falar, a NASA possui recursos para recuperar até 60 regravações posteriores no disco. É claro que isto pode ocorrer em pouco tempo, dependendo do tamanho de sua partição e se esta for uma /var/spool em um servidor de e-mails :-)
 
Baseado nesta teoria, você poderá apagar os dados de forma destrutiva usando o programa shred, que regrava o arquivo repetidamente com dados aleatórios. Sua sintaxe é a seguinte:
 
shred -n 70 -v -u arquivo
 
Isto faz com que ele regrava o conteúdo do arquivo 70 vezes com dados aleatórios. O -u trunca e remove o arquivo após concluído.
 
Note que o uso de dados aleatórios serve para destruir as possibilidades de uma recuperação simples, este é o motivo de se recomendar sempre o uso de /dev/urandom ao invés de /dev/zero para destruição de arquivos.
 
'''OBS1:''' Saiba exatamente o que está fazendo pois estes procedimentos servem para dificultar ao máximo a recuperação de dados.
 
'''OBS2:''' Devido as tecnologias de sistemas que utilizam journaling (XFS, EXT3, JFS e ReiserFS) e sistemas RAID, o shred não funcionará. O shred também não funcionará com sistemas de arquivos via rede (NFS, SMB, etc.). Se procura alguma forma de proteger seus dados, mesmo que apagados, utilize um método de criptografia como o DM-CRYPTO, crypto-loop, gpg, etc.
 
'''OBS3:''' Caso esteja usando um sistema de arquivos criptografado, estes procedimentos são quase desnecessários (dependendo do nível de segurança e algorítmos que você utiliza).
 
===Curingas===
 
Curingas (ou referência global) é um recurso usado para especificar um ou mais arquivos ou diretórios do sistema de uma só vez. Este é um recurso permite que você faça a filtragem do que será listado, copiado, apagado, etc. São usados 4 tipos de curingas no GNU/Linux:
 
* "*" - Faz referência a um nome completo/restante de um arquivo/diretório.
 
* "?" - Faz referência a uma letra naquela posição.
 
* [padrão] - Faz referência a uma faixa de caracteres de um arquivo/diretório. Padrão pode ser:
o [a-z][0-9] - Faz referência a caracteres de a até z seguido de um caracter de 0 até 9.
o [a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caracter 1 ou 0 naquela posição.
o [a-z,1,0] - Faz referência a intervalo de caracteres de a até z ou 1 ou 0 naquela posição.
 
* A procura de caracteres é "Case Sensitive" assim se você deseja que sejam localizados todos os caracteres alfabéticos você deve usar [a-zA-Z].
 
* Caso a expressão seja precedida por um ^, faz referência a qualquer caracter exceto o da expressão. Por exemplo [^abc] faz referência a qualquer caracter exceto a, b e c.
 
* {padrões} - Expande e gera strings para pesquisa de padrões de um arquivo/diretório.
o X{ab,01} - Faz referência a seqüencia de caracteres Xab ou X01
o X{a-z,10} Faz referencia a seqüencia de caracteres Xa-z e X10.
 
O que diferencia este método de expansão dos demais é que a existência do arquivo/diretório é opcional para geração do resultado. Isto é útil para a criação de diretórios. Lembrando que os 4 tipos de curingas ("*", "?", "[]", "{}") podem ser usados juntos. Para entender melhor vamos a prática:
 
Vamos dizer que tenha 5 arquivo no diretório /usr/teste: teste1.txt, teste2.txt, teste3.txt, teste4.new, teste5.new.
 
Caso deseje listar todos os arquivos do diretório /usr/teste você pode usar o coringa "*" para especificar todos os arquivos do diretório:
 
cd /usr/teste e ls * ou ls /usr/teste/*.
 
Não tem muito sentido usar o comando ls com "*" porque todos os arquivos serão listados se o ls for usado sem nenhum Coringa.
 
Agora para listar todos os arquivos teste1.txt, teste2.txt, teste3.txt com excessão de teste4.new, teste5.new, podemos usar inicialmente 3 métodos:
 
# Usando o comando ls *.txt que pega todos os arquivos que começam com qualquer nome e terminam com .txt.
# Usando o comando ls teste?.txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter no lugar do coringa ? e terminem com .txt. Com o exemplo acima teste*.txt também faria a mesma coisa, mas se também tivéssemos um arquivo chamado teste10.txt este também seria listado.
# Usando o comando ls teste[1-3].txt, que pega todos os arquivos que começam com o nome teste, tenham qualquer caracter entre o número 1-3 no lugar da 6a letra e terminem com .txt. Neste caso se obtém uma filtragem mais exata, pois o coringa ? especifica qualquer caracter naquela posição e [] especifica números, letras ou intervalo que será usado.
 
Agora para listar somente teste4.new e teste5.new podemos usar os seguintes métodos:
 
# ls *.new que lista todos os arquivos que terminam com .new
# ls teste?.new que lista todos os arquivos que começam com teste, contenham qualquer caracter na posição do coringa ? e terminem com .new.
# ls teste[4,5].* que lista todos os arquivos que começam com teste contenham números de 4 e 5 naquela posição e terminem com qualquer extensão.
 
Existem muitas outras formas de se fazer a mesma coisa, isto depende do gosto de cada um. O que pretendi fazer aqui foi mostrar como especificar mais de um arquivo de uma só vez. O uso de curingas será útil ao copiar arquivos, apagar, mover, renomear, e nas mais diversas partes do sistema. Alias esta é uma característica do GNU/Linux: permitir que a mesma coisa possa ser feita com liberdade de várias maneiras diferentes.
 
{{navegação|[[GuiaFocaLinux/Índice|Ìndice]]|[[GuiaFocaLinux/Índice/Introdução|Introdução]]|[[GuiaFocaLinux: Hardware|Hardware]]}}
[[Categoria:Linux|E]]
9

edições