Mostrando postagens com marcador arquivos. Mostrar todas as postagens
Mostrando postagens com marcador arquivos. Mostrar todas as postagens

terça-feira, 25 de janeiro de 2011

Recuperando e organizando os arquivos pelos tipos

Com o propósito de recuperar todos os arquivos, alocados e não alocados, de um computador, a coleção The Sleuth Kit (TSK) traz em seu repertório forense a ferramenta denominada sorter.

O sorter é um script em Perl que analisa um sistema de arquivos para organizar os arquivos alocados e não alocados pelos seus tipos. Este script classifica os arquivos de uma imagem ou dispositivo de armazenamento em categorias, executando o comando "file" em cada arquivo e organizando os arquivos de acordo com regras pré-estabelecidas.

A ferramenta sorter trabalha utilizando outras ferramentas do TSK. Basicamente, o script executa a ferramenta "fls" para identificar os arquivos, cada arquivo identificado é visualizado com a ferramenta "icat", e a seguir, o comando "file" é executado para identificar o tipo do arquivo, baseado nas informações do cabeçalho. O sorter utiliza as regras definidas em seu arquivo de configuração, para classificar os arquivos, e também compara a extensão de cada arquivo, se houver, com a regra para seu tipo identificado.

Após toda esta varredura os arquivos são copiados, se a linha de comando conter o argumento -s, para um diretório no computador forense, fornecido com o argumento -d. Dentro deste diretório são criados subdiretórios nomeados de acordo com as categorias. Cada arquivo é renomeado usando o nome do sistema de arquivos, seguido do endereço e da extensão original.

Pode-se também gerar um índice em HTML, com o argumento -h, e os arquivos não identificados podem ser ignorados utilizando o argumento -U.

O sorter trabalha com imagens ou acessando diretamente o dispositivo de armazenamento. Existem outros argumentos para sua linha de comando, conforme sua página manual, mas uma linha de comando básica é exemplificada a seguir:

$ sorter -i raw -f fat32 -o 63 -d ~/data-sorter -s -h imagem.dd

Ou, acessando diretamente o dispositivo (geralmente necessita estar como superusuário):

# sorter -i raw -f fat32 -o 63 -d ~/data-sorter -s -h /dev/sdb

O argumento -i especifica o tipo onde o sistema de arquivos está localizado. O argumento -f especifica o tipo do sistema de arquivos. O argumento -o especifica o setor onde inicia o sistema de arquivos. O argumento -d, como já descrito, especifica para onde irão os arquivos e o argumento -s salva os arquivos no diretório.

Para os arquivos não alocados, o sorter recupera o que ainda estiver disponível, o que ainda não foi sobreposto. Se o arquivo foi sobreposto parcialmente, o sorter consegue recuperar parte do arquivo, resultando em um arquivo incompleto.

O resultado da ferramenta sorter pode ocupar bastante espaço em disco, às vezes mais do que o tamanho da unidade de armazenamento. Já vi um disco rígido de 40 GB retornar 60 GB de dados. Portanto, certifique-se de possuir espaço suficiente.

Esta ferramenta é muito utilizada na computação forense nos casos que necessitam uma recuperação de todos os arquivos, incluindo imagens, vídeos e documentos.

segunda-feira, 15 de novembro de 2010

Como fazer cópia de segurança dos arquivos de um usuário

Fazer backup é indispensável, a não ser que você armazene nada em seu computador. Em um uso comum os softwares guardam diversas informações, endereços de sites favoritos, e-mails recebidos, documentos, imagens, configurações etc. Você poderá ter arquivos importantes e talvez não queira perdê-los.

Os sistemas operacionais atuais organizam os arquivos de usuário em diretórios (ou pastas) exclusivos para cada usuário. Como medida de segurança adotam ainda uma restrição de acesso para os usuários não bisbilhotarem os arquivos dos outros.

No sistema Windows Vista e 7 os diretórios particulares dos usuários ficam em "C:\Users\", no Windows XP ficam em "C:\Documents and Settings\" e no Linux em "/home/". Para cada usuário há um subdiretório com seu nome, ficando o caminho completo para seus arquivos particulares, no Windows Vista e 7 em "C:\Users\Nome do Usuário\", no XP em "C:\Documents and Settings\Nome do Usuário\" e no Linux em "/home/nome do usuário/".

Uma simples cópia de todo o conteúdo deste subdiretório garante um backup completo. Mas poderá ser um exagero pois muitos arquivos são desnecessários, como arquivos temporários e cache de navegadores e de outros softwares, por exemplo do GoogleEarth.

Nos sistemas operacionais, cada subdiretório particular de usuário possui um conjunto de mais subdiretórios que separam e organizam os arquivos em assuntos e propósitos. Os principais são mostrados a seguir.

No Windows Vista e 7 temos:

...\AppData (Pasta oculta, contém os dados de "Configurações locais" e "Dados de aplicativos")
...\Contacts
...\Desktop
...\Documents (Meus documentos)
...\Downloads
...\Favorites
...\Music (Meus documentos\Minhas músicas)
...\Pictures (Meus documentos\Minhas imagens)
...\Saved Games
...\Videos (Meus documentos\Meus vídeos)

No Windows XP temos:

...\Configurações locais (Pasta oculta)
...\Dados de aplicativos (Pasta oculta)
...\Desktop
...\Favoritos
...\Meus documentos

As pastas "AppData", "Configurações locais" e "Dados de aplicativos" servem para armazenar configurações de softwares, arquivos temporários, cache etc. São arquivos criados pelos softwares instalados e não diretamente pelos usuários. É uma boa ideia realizar cópia de segurança destas pastas, por exemplo usuários do navegador Firefox terão seus "profiles" armazenados em um caminho como "C:\Users\Nome do Usuário\AppData\Roaming\Mozilla\Firefox\Profiles\xxxxxxxx.default\". Mas apague antes os arquivos temporários e os arquivos de cache, estes ocupam muito espaço e podem atrapalhar o tamanho do backup. A ferramenta CCleaner (http://www.piriform.com/ccleaner) é uma boa ajuda neste procedimento.

No Windows 7 os arquivos temporários dos usuários ficam em "C:\Users\Nome do Usuário\AppData\Local\Temp\" e o cache do navegador Internet Explorer fica em "C:\Users\Nome do Usuário\AppData\Local\Microsoft\Windows\Temporary Internet Files\". O cache do navegador Firefox fica em algo como "C:\Users\Nome do Usuário\AppData\Local\Mozilla\Firefox\Profiles\xxxxxxxx.default\Cache\". No Windows XP os arquivos temporários dos usuários ficam em "C:\Documents and Settings\Nome do Usuário\Configurações locais\Temp" e o cache do navegador Internet Explorer fica em "C:\Documents and Settings\Nome do Usuário\Configurações locais\Temporary Internet Files". Todo o conteúdo destas pastas não precisam estar incluídos em um backup.

As pastas que armazenam os arquivos produzidos pelos usuários são, por padrão no Windows Vista e 7: "Documents", "Downloads", "Music", "Pictures" e "Videos". No Windows XP ficam concentrados em "Meus documentos". Os arquivos que estiverem nelas provavelmente serão do usuário e talvez queira tê-los em backup. Alguns usuários tem o deselegante costume de armazenar arquivos no Desktop, verifique esta pasta também. Tem mais, o Internet Explorer armazena os endereços de sites favoritos na pasta "Favorites" ou "Favoritos", desta forma verifique todas as pastas para checar se existem dados importantes do usuário.

Em um sistema Linux a estrutura de diretórios pessoais é bem mais simples e clara, principalmente para as configurações dos softwares utilizados pelos usuários. Geralmente os softwares guardam os arquivos de configuração em subdiretórios com o mesmo nome do software e iniciados com um ponto. Por exemplo, o Firefox armazena em "/home/nome do usuário/.mozilla/". As distribuições Linux também criam diretórios para organizarem os arquivos dos usuários. Podem existir os diretórios "Documentos", "Download", "Imagens", "Música", "Vídeos" etc. Os diretórios que contiverem arquivos pessoais devem ser incluídos no backup.

É muito mais prático e seguro realizar a cópia de todo o diretório pessoal do usuário, mas isso pode ocupar um espaço grande de armazenamento. É uma boa medida remover primeiro os arquivos desnecessários, como temporários e cache. Um bom costume para o usuário é manter os arquivos organizados a partir de um único caminho e não espalhados por todo o sistema. Evite armazenar arquivos no Desktop, não é um bom hábito. E sempre faça cópia de segurança.

sábado, 18 de julho de 2009

Conhecendo a organização do sistema de arquivos do Linux

Para quem está acostumado com os sistemas operacionais da Microsoft, um usuário de DOS e Windows, pode sentir-se um pouco perdido quando começa a navegar pelo sistema de arquivos no Linux. A ausência das letras que identificam as unidades de disco, como A:\ e C:\, e também do "Meu Computador".

O sistema de arquivos do Linux é organizado de uma forma hierárquica unificada. Diferente do DOS/Windows onde cada dispositivo de armazenamento, ou partição de disco, assume uma unidade separada, no Linux os dispositivos de armazenamento, como CDs, disquetes, pendrives etc., e as partições existentes nos discos rígidos farão parte de uma única hierarquia.

No topo desta hierarquia está o diretório raiz, identificado por / (barra), e que contém todos os outros diretórios. É uma prática comum o diretório raiz conter apenas diretórios mas algumas distribuições colocam alguns arquivos neste local. O administrador do sistema não deve depositar arquivos aqui.

Dentre os diretórios existentes na raiz cada um possui uma finalidade única, com o objetivo de manter um sistema operacional organizado para o administrador e usuário. Muitos softwares são compostos por mais de um arquivo, costumam conter arquivos executáveis, bibliotecas, arquivos de configuração, alguns softwares são de uso do administrador do sistema, outros para uso dos usuários e por aí vai. Sendo assim o Linux organiza todos estes arquivos, referentes aos softwares instalados no sistema operacional, em diretórios separados.

Veja abaixo uma pequena explicação sobre a função de cada diretório no sistema de arquivos do Linux. As distribuições poderão conter outros além destes mais comuns:

/home

O diretório /home armazena os arquivos pessoais dos usuários, é a casa do usuário. Cada usuário do sistema possui o seu local particular dentro deste diretório, geralmente em um subdiretório com nome igual ao username do respectivo usuário. É o único diretório em que o usuário tem total permissão de leitura e escrita dos arquivos, os outros diretórios somente o administrador do sistema tem permissão de operar. É no diretório /home de cada usuário que ficam salvos os arquivos de configuração personalizados para o usuário.

/root

O administrador do sistema por sua vez utiliza o diretório /root como diretório pessoal. O /root é o equivalente ao /home dos usuários.

/bin

Os comandos mais fundamentais do sistema operacional possuem seus arquivos executáveis armazenados neste diretório /bin. Seu nome é uma abreviação para binário.

/sbin

O diretório /sbin contém os arquivos executáveis para a manutenção do sistema, utilizado principalmente pelo seu administrador.

/usr

A grande maioria dos aplicativos instalados, que geralmente não fazem parte do sistema operacional e que são para uso dos usuários, ficam com seus arquivos localizados nos subdiretórios do /usr. Possui uma estrutura completa para a organização dos arquivos que compõem um aplicativo, contendo subdiretórios para os executáveis, para a configuração, para as bibliotecas etc. Um aplicativo completamente integrado ao sistema operacional vai, durante sua instalação, colocar os arquivos aqui. O diretório /usr contém um subdiretório, o /usr/local, que serve como uma estrutura local para a instalação e execução de aplicativos, isolando os arquivos do aplicativo em questão do resto do sistema operacional. Outros subdiretórios são encontrados como o /usr/share que contém arquivos compartilháveis (ícones, manuais, documentação etc.), também existe o /usr/src contendo os arquivos fontes dos programas, incluindo o código fonte do kernel.

/opt

Este diretório /opt é reservado para a instalação de aplicativos de terceiros que normalmente possuem a sua própria organização na hierarquia dos arquivos, não sendo possível a integração no sistema operacional.

/etc

O diretório /etc contém todos os arquivos de configuração do sistema operacional. Quando trata-se de um aplicativo que pode ser personalizado pelo usuário, aqui poderá conter uma versão generalizada da configuração do aplicativo para uso caso o usuário não especifique algo. Também existe o subdiretório /etc/skel que contém os arquivos que irão popular inicialmente o /home de um usuário quando seu username for criado. O diretório /etc é um diretório importante pois contém todas as configurações realizadas pelo administrador do sistema e seu backup torna-se mais que necessário.

/dev

Este diretório /dev contém arquivos especiais de acesso aos dispositivos de hardware. Por exemplo o disco rígido pode ser localizado pelo arquivo /dev/hda, /dev/sdb etc., o drive de disquete é localizado pelo arquivo /dev/fd0, a porta paralela pelo /dev/lp0.

/proc

O /proc é um sistema de arquivos virtual, nenhum espaço em disco real é associado à ele. Os arquivos deste diretório são apenas acessos para informações e estatísticas fornecidas pelo kernel e também para a passagem de parâmetros para o kernel.

/var

O diretório /var contém os arquivos com dados variáveis como log, cache, filas de impressão e correio eletrônico, chaves de bloqueio de acesso à dispositivos. Tudo que é do sistema ou de algum serviço do sistema que tem seu conteúdo passivo de alteração é armazenado no /var.

/lib

As bibliotecas compartilhadas utilizadas pelos aplicativos instalados no sistema operacional, os módulos do kernel ou também bibliotecas para compilação costumam ficar neste diretório.

/boot

Este diretório /boot contém tudo o que é necessário para o processo de inicialização da máquina. Aqui ficam as imagens do kernel, mapas e configurações do sistema e o gerenciador de inicialização.

/tmp

No /tmp ficam os arquivos que são requeridos temporariamente. Muitos programas em execução mantém arquivos neste diretório e na maioria das vezes são excluídos quando a execução está encerrada.

/lost+found

Quando o sistema sofre algum travamento ou a máquina sofre alguma interrupção abrupta, na próxima inicialização o sistema faz uma checagem automática do sistema de arquivos e tenta recuperar arquivos corrompidos se for encontrado algum, o resultado desta operação é armazenado neste diretório.

/mnt

Este é um local genérico para ponto de montagem de sistemas de arquivos ou dispositivos de armazenamento. Após a montagem os arquivos são acessíveis a partir do ponto de montagem. Este diretório /mnt usualmente contém subdiretórios que servirão de ponto de montagem para sistemas compartilhados pela rede ou dispositivos, específicos, por exemplo /mnt/cdrom servirá para a montagem do sistema de arquivos de um disco inserido na unidade de CD.

/media

Semelhante ao diretório /mnt, o diretório /media serve como ponto de montagem para mídias removíveis. As distribuições modernas com seus recursos de automontagem costumam adicionar aqui os diretórios que recebem o ponto de montagem para as mídias inseridas.


Um aspecto importante no sistema de arquivos do Linux é que tudo é um arquivo ou um diretório. Todos os dispositivos de armazenamento, partições em disco, arquivos de bloco montados, compartilhamentos acessados pela rede, tudo é incorporado na estrutura hierárquica da árvore de diretórios, tudo a partir do diretório raiz. Inclusive o acesso aos outros dispositivos de hardware e aos recursos do kernel se dá através dos arquivos em diretórios.

sábado, 9 de maio de 2009

Propriedades e permissões dos arquivos no Linux

Para obter uma segurança no sistema, o Linux utiliza propriedades e permissões nos arquivos e diretórios. Este controle é usado para não permitir que um usuário leia ou modifique um arquivo de outro usuário. Um arquivo só poderá ser acessado por um usuário se ele for o proprietário ou se pertencer ao grupo em questão, e ainda terá que respeitar as permissões atribuídas no arquivo.

As propriedades e as permissões são mostradas quando se listam os arquivos usando o formato longo do comando ls (ls -l). Veja um exemplo:

# ls -l
drwxr-xr-x 2 usuario grupo 1024 Dec 7 16:39 nome_do_dir
-rwxrwxr-- 1 usuario grupo 29845 Dec 12 21:55 nome_do_arq1
lrwxrwxrwx 1 usuario grupo 12 Dec 9 01:33 nome_da_lig -> nome_do_arq2
-rw-r--r-- 1 usuario grupo 7563 Dec 2 22:30 nome_do_arq2
A primeira coluna da esquerda mostra o tipo e as permissões do arquivo em uma seqüencia de 10 caracteres, a terceira e quarta coluna mostram a qual usuário e grupo pertence o arquivo.

O tipo do arquivo é mostrado no primeiro caracter da seqüencia. Existem vários tipos de arquivos, mas os mais comuns são:

b -> dispositivo de blocos
c -> dispositivo de caracteres
d -> diretório
l -> ligação simbólica

Quando há um hífem em vez de uma letra, significa que é um arquivo normal.

As permissões são mostradas em uma seqüencia de 9 caracteres divididos em três níveis: usuário, grupo, outros. Existem três tipos de permissões, a permissão de leitura (read), a permissão de gravação (write) e a permissão de execução (execute). Em cada nível deverá ser especificada estas três permissões. Quando há um hífem em vez de uma letra, significa que não há permissão para acessar ao arquivo. Veja:

     /--------> O grupo pode ler e executar.
/ \
-rwxr-xr-x
\ / \ /
| \-----> Os outros usuários podem ler e executar.
|
\-----------> O proprietário pode ler, gravar e executar.


As permissões tem significados diferentes para arquivos e diretórios. Para um arquivo, a permissão de leitura significa que pode ser lido o conteúdo do arquivo, a permissão de gravação significa que o arquivo pode ser alterado ou apagado e a permissão de execução significa que o arquivo pode ser executado como um programa. Para os diretórios, a permissão de leitura significa que pode ser listado o seu conteúdo, a permissão de gravação significa que arquivos podem ser acrescentados ou removidos dentro do diretório e a permissão de execução significa que os arquivos podem ser lidos ou executados.

Existem ainda os atributos especiais, que são:

setuid -> Definido nos arquivos executáveis, faz com que seja executado com as permissões do proprietário daquele arquivo.

setgid -> Faz com que o arquivo seja executado com as permissões do grupo do arquivo, mesmo que o usuário não participe dele. Todo arquivo criado em um diretório setgid é criado com o mesmo grupo do diretório.

sticky -> Em diretórios compartilhados por vários usuários, faz com que um arquivo só possa ser apagado por seu proprietário.

Você poderá alterar as permissões dos arquivos e diretórios, além de alterar o proprietário e o grupo que o arquivo pertence. Os utilitários usados são, respectivamente: chmod, chown e chgrp.

O comando chmod pode ser usado de duas maneiras diferentes, o modo simbólico e o modo absoluto.

No modo simbólico o comando chmod tem a seguinte sintaxe:

chmod [ugoa][+-=][rwxXst] arquivo

u -> permissões para o proprietário.
g -> permissões para o grupo.
o -> permissões para outros usuários.
a -> permissões para todos: proprietário, grupo e outros.

+ -> adiciona a permissão às permissões existentes.
- -> remove a permissão das permissões existentes.
= -> define uma nova permissão, cancelando as existentes.

r -> permissão de leitura.
w -> permissão de gravação.
x -> permissão de execução.
X -> permissão de execução se for um diretório.
s -> setuid se for atribuído ao proprietário, setgid se atribuído ao grupo.
t -> sticky.

Exemplos:

# chmod u+x arquivo -> adiciona a permissão de execução para o proprietário do arquivo.
# chmod ug+rw arquivo -> adiciona a permissão de leitura e gravação para o proprietário e grupo.
# chmod u+wx,g-w,o=r arq -> adiciona a permissão de gravação e execução para o proprietário, retira a permissão de gravação para o grupo e atribui apenas a permissão de leitura para os outros usuários.

No modo absoluto o comando chmod usa a notação octal, com a seguinte sintaxe:

chmod [[e]ugo] arquivo

Onde se utiliza um número octal de três dígitos, com cada dígito correspondendo a um dos três níveis de permissão (usuário, grupo e outros), mais um quarto dígito opcional, que é o atributo especial. Cada dígito dos níveis de permissão é formado pela soma dos valores de cada tipo de permissão (leitura, gravação e execução), onde leitura tem o valor 4, gravação tem o valor 2 e execução 1. Veja abaixo:

0 -> nenhuma permissão.
1 -> permissão de execução.
2 -> permissão de gravação.
3 -> permissão de gravação e execução.
4 -> permissão de leitura.
5 -> permissão de leitura e execução.
6 -> permissão de leitura e gravação.
7 -> permissão de leitura, gravação e execução.

Para o atributo especial usa-se a soma dos valores de setuid, setgid e sticky, que também são 4, 2 e 1 respectivamente. Veja então os seguintes valores:

0 -> nenhum atributo especial ligado.
1 -> sticky ligado.
2 -> setgid ligado.
3 -> setgid e sticky ligados.
4 -> setuid ligado.
5 -> setuid e sticky ligados.
6 -> setuid e setgid ligados.
7 -> setuid, setgid e sticky ligados.

Exemplos:

# chmod 400 arquivo -> atribui apenas a permissão de leitura para o proprietário e nenhuma permissão para o grupo e outros usuários.
# chmod 750 diretório -> atribui permissão de leitura, gravação e execução para o proprietário, permissão de leitura e execução para o grupo e nenhuma permissão para os outros usuários.
# chmod 1777 arquivo -> liga o atributo sticky e atribui permissão de leitura, gravação e execução para todos os usuários.

O comando chown, usado para alterar o proprietário do arquivo ou diretório, só pode ser usado pelo administrador do sistema. Este comando também pode alterar o grupo. Ele tem a seguinte sintaxe:

chown usuário arquivo
chown usuário:grupo arquivo

Veja alguns exemplos:

# chown joao arquivo.ext -> define joao como proprietário do arquivo.ext.
# chown joao:familia arquivo -> define o arquivo como propriedade de joao e do grupo familia.
# chown -R joao:familia diretório -> altera as propriedades do diretório e seus conteúdos de maneira recursiva.

O comando chgrp, como já dito, altera o grupo que o arquivo pertence. E só pode ser usado pelo proprietário do arquivo ou pelo administrador do sistema. Veja a sintaxe:

chgrp grupo arquivo

Exemplo:

# chgrp familia arquivo.ext -> define o arquivo.ext como pertencente ao grupo familia.