[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ próximo ]
Este capítulo traz explicações sobre os principais componentes existentes no
computador e do sistema operacional Linux
.
Os arquivos e diretórios de logs residem em /var/log
e registram
tudo o que acontecem com o kernel, com os daemons e utilitários do sistema.
Eles são muito importantes tanto para monitorar o que acontece com o seu
sistema como para ajudar na solução de problemas diversos. É comum programas
como o servidor web, e-mail, mensagens instantaneas, firewall, irc, banco de
dados, gravarem os arquivos de log em diretórios próprios dentro de
/var/log/programa
, desta forma evitam misturar seus arquivos com
os de log do sistema residentes em /var/log
.
Acostume-se a olhar constantemente os arquivos de log em seu sistema, isto pode ser importante para encontrar possíveis falhas de segurança, tentativa de acesso ao sistema e, principalmente, solucionar problemas (principalmente os mais complicados). Leia Arquivos e daemons de Log, Capítulo 6 para mais detalhes.
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 um pouco mais 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, EXT4, 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 (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:
[a-z][0-9] - Faz referência a caracteres de a até z seguido de um caracter de 0 até 9.
[a,z][1,0] - Faz a referência aos caracteres a e z seguido de um caracter 1 ou 0 naquela posiçã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.
X{ab,01} - Faz referência a seqüencia de caracteres Xab ou X01
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.
[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ 21 ] [ próximo ]
Guia Foca GNU/Linux
Versão 6.43 - domingo, 05 de setembro de 2010gleydson@guiafoca.org