quinta-feira, 29 de julho de 2010

Usando o comando find com a opção exec

No Linux, o comando find é capaz de realizar diversas ações nos arquivos ou diretórios por ele encontrado. Uma das ações mais utilizadas é a "-exec", que executa um comando se o estado 0 (zero) for retornado, ou seja, quando um arquivo ou diretório for encontrado. Para quem não sabe, o comando find procura por arquivos em uma estrutura hierárquica de diretórios e pode retornar o caminho completo para o arquivo encontrado.

Esta opção do comando find é mais indicada quando forem executados comandos simples, pois uma limitação da opção "-exec" é que o comando é executado em um arquivo de cada vez.

Mas a opção "-exec" pode ser bastante perigosa pois um comando mal compreendido pode colocar em risco arquivos que não devem ser manipulados. Isto é especialmente importante se a opção "-exec" contém o comando rm ou outro comando destrutivo. Sendo assim, sempre teste o comando find usando a opção "-ls" ao invés da "-exec", para ver se os arquivos selecionados são mesmo o que deseja processar.

Para o find executar o comando em cada arquivo encontrado são necessárias duas artimanhas na sintaxe. Uma é que o comando que deseja executar precisa conter o argumento especial {}, que será substituído pelo nome do arquivo encontrado em cada invocação da ação "-exec". Outra é que é necessário existir um \; (ou ';') no final do comando (a barra invertida ou as aspas simples são necessárias pois senão o Shell interpretará o ponto-e-vírgula como fim do comando find). Se o parâmetro {} for o último item no comando então é necessário ter um espaço entre o {} e o \;. Pode ser necessário também proteger o argumento {}, consequentemente o nome do arquivo, com aspas simples, ficando '{}'. Veja alguns exemplos:

Procurar todos os arquivos a partir do diretório atual e descrever o tipo:

find . -type f -exec file '{}' \;

Procurar todos os arquivos a partir do diretório atual e alterar a permissão para 644:

find ./ -type f -exec chmod 644 {} \;

Procurar todos os arquivos a partir do diretório especificado e gerar o hash SHA1:

find diretório/ -type f -exec sha1sum '{} ;' > hashes.txt

Procurar os arquivos especificados pelo nome nos subdiretórios do diretório atual e removê-los:

find */ -type f -iname arquivo.ext -exec rm {} \;

Procurar todos os diretórios a partir do diretório atual que pertençam ao root e alterar o proprietário:

find . -user root -type d -exec chown fulano '{}' \;

Para executar o comando em mais de um arquivo de cada vez, ao invés da opção "-exec" deve-se utilizar o comando externo xargs, com sua entrada padrão sendo alimentada pela saída do comando find. Fica para um próximo artigo.

quarta-feira, 28 de julho de 2010

A capacidade real de um dvd gravável

Um DVD virgem, no modelo mais comum encontrado no mercado, informa em sua embalagem uma capacidade máxima de 4,7 GB. Entretanto, os fabricantes de DVD adotam o Sistema Internacional de Unidades (SI) para indicar a capacidade.

No SI os prefixos dos valores indicam a multiplicação por potências de base dez, assim 1 KB = 1000 Bytes, 1 MB = 1000 KB e 1 GB = 1000 MB. A informação de 4,7 GB no DVD equivale à 4700000000 Bytes, seguindo o Sistema Internacional de Unidades.

Como na computação os prefixos são binários, indicando a multiplicação por potências de base dois, torna-se necessário um ajuste no valor da capacidade máxima. Na computação 1 KB = 1024 Bytes, 1 MB = 1024 KB e 1 GB = 1024 MB, então a capacidade de 4700000000 Bytes será:

4700000000 Bytes / 1024 = 4589843 KB

4589843 KB / 1024 = 4482 MB

4482 MB / 1024 = 4,38 GB

A capacidade de uma mídia DVD, informado em sua embalagem como 4,7 GB, possui realmente 4,38 GB. O mesmo cálculo deve ser feito para DVD de dupla camada, que em sua embalagem é informado 8,54 GB e na realidade possui 7,95 GB. Não é o fabricante que nos engana mas utiliza outra unidade de medida.

A capacidade pode apresentar diferenças sutis dentre diversos softwares, e as diferentes tecnologias de mídias DVD, como DVD-R, DVD+R, DVD-RW e DVD+RW também possuem capacidades ligeiramente diferentes.

segunda-feira, 26 de julho de 2010

Repositório de ferramentas forenses para Linux

O CERT (http://www.cert.org/) é uma organização fundada pelo Departamento de Defesa dos Estados Unidos, juntamente com algumas outras agências federais civis. O CERT dedica-se em garantir treinamentos adequados sobre tecnologias usadas para conter ataques em sistemas de rede, limitar os danos e assegurar a continuidade dos serviços críticos.

O CERT mantém em seu website um repositório de softwares para uso em computação forense. O repositório contém pacotes prontos para ser instalados em uma distro Linux, contudo, atualmente só a distribuição Fedora é suportada.

Excelentes ferramentas estão disponibilizadas, entre elas o Sleuthkit/Autopsy, o dcfldd, o Volatility, o Glimpse etc. Confira nestes endereços:

http://www.cert.org/forensics/
http://www.cert.org/forensics/repository/
http://www.cert.org/forensics/repository/fedora/

Como criar imagens de partições e montá-las separadamente

Um arquivo imagem de um disco rígido ou de uma partição pode ser criado utilizando a ferramenta dd. O dd é um comando usado para copiar de um arquivo ou dispositivo sendo a entrada, para um arquivo ou dispositivo sendo a saída, gerando uma simples imagem idêntica. O dd cria uma cópia exata do arquivo ou dispositivo, incluindo o slack space dos arquivos e o espaço não alocado. Não é somente uma cópia lógica da estrutura de arquivos. O dd não adiciona informações extras em sua saída, é apenas uma cópia do fluxo de bits do início ao fim.

Para fazer uma imagem de um dispositivo de armazenamento para um arquivo, a sintaxe da linha do comando dd é semelhante ao apresentado abaixo:

# dd if=/def/sdf of=arquivoimagem.dd

No exemplo acima o operador "if" recebe o dispositivo de entrada e o operador "of" indica o arquivo de saída. Este comando serve para copiar um disquete, um pendrive, um DVD e até um disco rígido inteiro, claro que respeitando o caminho para o respectivo dispositivo. Opcionalmente pode-se acrescentar um controle para que o processo de cópia não seja interrompido caso encontre algum erro na leitura. A linha de comando ficaria assim:

# dd if=/def/sdf of=arquivoimagem.dd conv=noerror,sync

O arquivo imagem gerado, se for de um dispositivo de armazenamento com uma estrutura simples, isto é, com uma partição apenas, como é o caso de disquetes, pendrives ou DVDs, pode ser facilmente montado para acesso ao seu conteúdo. O comando para isso é semelhante ao comando como se fosse montar o próprio dispositivo, apenas acrescido de algumas opções para usar uma interface de loop:

# mount -t vfat -o ro,loop arquivoimagem.dd /mnt/pendrive

A opção "loop" indica que será utilizado um dispositivo de loop para montar o sistema de arquivos contido no arquivo imagem. O kernel das distros Linux costumam já vir com suporte para dispositivos de loop. A opção "ro" é porque o conteúdo do arquivo imagem é só para leitura.

Para desmontar, o comando é o padrão:

# umount /mnt/pendrive

Para imagens de discos rígidos a situação é um pouco diferente. Um disco rígido possui diversos componentes que são um setor de boot, uma tabela de partição e uma ou várias partições. A imagem deste tipo de dispositivo também possui todos estes componentes, lembre-se, é uma cópia idêntica.

O comando de montagem não é capaz de encontrar o sistema de arquivos em uma imagem de disco rígido porque não é capaz de reconhecer a tabela de partição.

Quando a imagem é de um disco rígido que contém somente uma partição, o comando de montagem pode receber uma opção que direciona ao início da partição, pulando o setor de boot. Normalmente cada setor do disco contém 512 bytes e os primeiros 63 setores são para as informações da MBR etc., isto equivale a 32256 bytes do início até a partição. O comando de montagem para um caso deste tipo é como o exemplo abaixo:

# mount -t vfat -o ro,loop,offset=32256 arquivoimagem.dd /mnt/hd

Com o seguinte comando podemos confirmar estes valores de tamanho de setor etc:

# fdisk -lu arquivoimagem.dd

Mas é possível criar uma imagem somente da partição, que deste modo a imagem poderá ser facilmente montada como um dispositivo de loop. O comando para criar a imagem de uma partição é:

# dd if=/dev/sda1 of=imagemparticao1.dd

As partições podem ser listadas pelo comando:

# fdisk -l /dev/sda

Quando a imagem é de um disco rígido que contém mais de uma partição, podemos separar a imagem em partes onde cada parte vai se referir a uma única partição. Podemos utilizar para isso a mesma ferramenta dd. Cada partição estará em um arquivo imagem exclusivo e esta imagem poderá ser montada diretamente como um dispositivo de loop.

Primeiramente é preciso confirmar as posições de início e fim de cada partição. Utiliza-se para isso a ferramenta sfdisk em uma linha de comando semelhante a:

# sfdisk -luS imagem.dd

A saída deste comando é como as linhas a seguir:

Disk imagem.dd: cannot get geometry
Units = sectors of 512 bytes, counting from 0

    Device  Boot    Start       End    #sectors     Id     System
imagem.dd1             57     10259       10203     83     Linux
imagem.dd2          10260    112859      102600     83     Linux
imagem.dd3         112860    178694       65835     82     Linux swap / Solaris
imagem.dd4         178695    675449      496755     83     Linux

As informações que interessam são a do início (Start) e número de setores (#sectors) para cada uma das partições. Estes valores serão utilizados nas opções "skip" e "count" do comando dd. A opção "skip" faz com que o dd pule alguns setores do início da entrada e a opção "count" faz com que o dd copie somente alguns blocos de entrada. Um exemplo de linha de comando, com o aviso de conclusão, para extrair a segunda partição do exemplo acima é apresentado abaixo:

# dd if=imagem.dd of=imagemparticao2.dd bs=512 skip=10260 count=102600
102600+0 records in
102600+0 records out

Para extrair cada uma das partições existentes no arquivo imagem é necessário executar o mesmo comando, apenas alterando os valores para "skip" e "count". Examinando este comando mais a fundo, o arquivo de entrada é o arquivo imagem de todo o disco rígido (imagem.dd), a saída é a criação de um outro arquivo imagem. O tamanho do bloco é o tamanho do setor (512 bytes), conforme mostrado pelo comando sfdisk, e cada pedaço diskdump precisa iniciar onde a partição inicia e terminar no final da partição.

Esta imagem de somente uma partição pode ser montada para leitura utilizando o mesmo comando para montar dispositivos de loop. Um exemplo de comando é o abaixo:

# mount -t ext2 -o ro,loop imagemparticao2.dd /mnt/part2/

Se for preciso, é possível descobrir qual o sistema de arquivos da partição contida na imagem. A ferramenta file, que mostra o tipo do arquivo, pode ajudar nesta informação. Um exemplo de linha de comando com sua mensagem de saída é:

# file imagemparticao2.dd
imagemparticao2.dd: Linux rev 1.0 ext2 filesystem data (mounted or unclean)

A imagem gerada pela ferramenta dd é uma réplica fiel da sua origem. Muitas ferramentas disponíveis para o sistema Linux são capazes de trabalhar com uma imagem da mesma forma que com o dispositivo original, principalmente as ferramentas forenses.

sábado, 17 de julho de 2010

Problema de Lógica: Número de moedas nas caixas

Atenção, resposta após o problema!

Você possui dez caixas vazias e deve distribuir nessas caixas 1000 moedas de tal forma que, quando solicitado, você possa retornar um número qualquer de moedas sem retirá-las das caixas. Cada caixa comporta pelo menos 1000 moedas e os valores solicitados serão todos maiores que zero.





RESPOSTA





O propósito deste problema é formar uma distribuição de moedas que permita retornar qualquer número decimal de 1 até 1000. Qualquer número poderá ser formado somando as quantidades de moedas de determinadas caixas, utilizando uma, algumas ou todas as caixas. Isto é possível se distribuir as moedas seguindo a sequencia das potências de 2. Qualquer número decimal pode ser representado no sistema de representação binário, de base 2, pois é justamente este sistema que é utilizado nos computadores. Então, se distribuir as moedas nas dez caixas colocando em cada caixa as respectivas quantidades de 1, 2, 4, 8, 16, 32, 64, 128, 256 e 489, este problema será resolvido. Observação, 489 não é o próximo valor da sequencia mas é o restante das moedas.

domingo, 11 de julho de 2010

Administrando usuários e grupos no sistema Linux

As contas do usuário servem a diversos objetivos nos sistemas operacionais. Em primeiro lugar, elas fornecem ao sistema uma maneira de distinguir as pessoas diferentes que o usam, por razões de identificação e segurança. Cada usuário tem uma conta pessoal com um nome do usuário separado e senha. Os usuários podem definir as permissões em seus arquivos, permitindo ou restringindo o acesso de outros usuários à eles. Cada arquivo do sistema pertence a um determinado usuário que pode definir permissões para este arquivo. As contas do usuário são usadas para identificar o acesso ao sistema, apenas as pessoas com contas podem acessar a máquina. As contas também são usadas para identificar os usuários e manter registros do sistema.

Basicamente, existem dois tipos de contas. A conta do usuário comum, que utiliza o sistema e suas ferramentas, e a conta do administrador do sistema ou superusuário, que utiliza o sistema pela conta de root, onde é possível realizar as configurações do sistema.

Por não possuir restrições de segurança, a conta de root só deve ser usada para manutenções no sistema e de preferência o menor tempo possível. Para evitar permissões desnecessárias no sistema deve-se usar uma conta normal de usuário em operações comuns. Se um arquivo for executado pelo usuário root e este contiver comandos ou códigos que causem danos ao sistema, estes danos poderão ser irreparáveis.

Os usuários podem ser organizados em grupos. Os grupos de usuários são uma maneira conveniente de organizar logicamente os conjuntos de contas do usuário e permitir aos usuários compartilharem arquivos dentro do seu grupo. Isso é útil para garantir privacidade e segurança dos dados. Cada usuário possui um grupo padrão, principal, e pode pertencer a grupos suplementares.

É interessante observar que alguns grupos e usuários são criados como padrão do sistema. Uma das primeiras contas existentes no Linux é a conta de superusuário, cuja senha é digitada durante a instalação. A maioria das distribuições permite também que outras contas comuns sejam criadas durante o seu processo de instalação. Estas contas são geralmente usadas pelos daemons do sistema, que tem que acessar os arquivos no sistema através de um determinado ID diferente de root ou de uma das contas pessoais dos usuários.

Como administrador do sistema, é sua função criar e gerenciar as contas para todos os usuários em sua máquina. É uma tarefa simples e independente, na maioria dos casos, mas é importante compreender como funciona.

Toda conta no sistema tem uma entrada no arquivo /etc/passwd. Este arquivo contém entradas, uma linha por usuário, que especificam diversos atributos para cada conta. Cada entrada neste arquivo tem o mesmo formato, com campos separados por um "dois pontos":

nome_do_usuário:senha:UID:GID:Nome Real:/diretório/pessoal:shell

O nome_do_usuário é uma string de caracteres exclusiva, identificando a conta. Para as contas pessoais, este é o nome com o qual o usuário se conecta. A senha é uma representação criptografada da senha do usuário. Se neste campo houver um asterisco (*), a conta está desativada, se houver uma exclamação (!), a senha está bloqueada, e se estiver vazia o usuário não possui uma senha definida. UID e GID é a representação numérica da identificação do usuário e do seu grupo padrão. O sistema gerencia os usuários e grupos com estes números, a representação no nome em caracteres alfabéticos é apenas para facilitar o uso humano do sistema. O próximo campo pode conter informações diversas sobre o usuário, como nome real, endereço etc., historicamente chamado de "gecos". O campo seguinte contém o caminho para o diretório pessoal do usuário (home) e o último contém o caminho para o arquivo executável do programa do shell.

As distribuições atuais utilizam ainda uma ferramenta de proteção de senha, o shadow, para ocultar a representação criptografada das senhas dos usuários no arquivo /etc/passwd, substituindo por um x, e então armazenando-a no arquivo /etc/shadow, que não possui permissão de leitura aos usuários comuns.

Os grupos existentes estão no arquivo /etc/group. A maioria dos grupos que estão presentes neste arquivo servem para o controle do sistema, e somente o superusuário pode modificar suas permissões e incluir ou retirar usuários destes grupos. Este arquivo também contém entradas, uma linha por grupo, com campos separados por um "dois pontos":

nome_do_grupo:senha:GID:lista,de,usuários

O formato da linha é semelhante as linhas do arquivo /etc/passwd, mas o último campo serve para conter uma lista com os nomes dos usuários que pertencem ao grupo, separados por vírgulas. Se um usuário pertencer a mais de um grupo, seu nome aparecerá em cada linha dos respectivos grupos.

Cada usuário ou grupo existente no sistema deve possuir uma ID exclusiva para sua identificação. São números inteiros e positivos. O administrador do sistema, que utiliza a conta root, possui o número zero em seu UID. As distribuições geralmente adotam números a partir de 500 para identificar os usuários pessoais, abaixo disso ficam os usuários virtuais dos daemons.

Existem várias formas de criar e manter usuários em um sistema. É importante lembrar sempre de que, para executar estas tarefas, você deve estar acessando o sistema como superusuário. Será mostrado como executar estas tarefas através da linha de comando em um prompt do shell.

Criar uma conta de usuário requer diversas etapas. Basicamente é acrescentar uma entrada no arquivo /etc/group para criar um grupo padrão para o usuário, acrescentar uma entrada no arquivo /etc/passwd para criar a conta do usuário, criar o diretório pessoal do usuário, definir os arquivos de configuração padrão (o diretório /etc/skel serve para isso) e atribuir as devidas permissões nos arquivos pessoais para o novo usuário. Após estas etapas, se desejar, basta definir a senha pessoal ao novo usuário. Felizmente, o administrador não tem que executar estas etapas manualmente pois os sistemas Linux incluem alguns programas para fazer isto.

Os programas nativos do sistema Linux são: useradd, userdel, usermod, groupadd, groupdel, groupmod e passwd. Alguns deles podem utilizar definições padrões, especificadas nos arquivos /etc/login.defs ou /etc/default/useradd, quando é omitida determinadas opções em sua linha de comando.

Algumas distribuições Linux incluem também um script chamado adduser que atua como uma interface interativa para o programa useradd, facilitando a tarefa pois evita uma linha de comando cheia de opções e parâmetros. As distros que possuem este script é a Slackware e a Debian/Ubuntu. As distros RedHat/CentOS/Fedora possuem apenas uma ligação de adduser para useradd e a distro openSUSE não possui o adduser.

O programa useradd cria um novo usuário ou atualiza as informações do usuário. Possui várias opções para a linha de comando explicadas uma a uma em sua página manual. Basicamente um exemplo de comando para criar um usuário é:

# useradd -m -U fulano

A opção -m cria o diretório pessoal, se não existir, copiando o conteúdo do diretório esqueleto (/etc/skel). A opção -U cria um grupo com o mesmo nome do usuário e o adiciona à ele, tornando o seu grupo padrão.

O programa userdel remove uma conta de usuário do sistema. Apenas uma opção é segura para aplicar, a opção -r, que remove junto o diretório pessoal do usuário. Um exemplo de comando é:

# userdel -r fulano

O programa passwd atualiza a autenticação do usuário, ou seja, a senha do usuário. Cada usuário pode utilizar este comando para alterar sua própria senha e o administrador pode alterar a senha de qualquer usuário, como no exemplo abaixo:

# passwd fulano

Os programas groupadd e groupdel, respectivamente, cria e remove um grupo. Suas linhas de comando são basicamente o executável do programa seguido do nome do grupo, bem simples.

O programa usermod tem muitas opções, da mesma forma como os outros, explicadas uma a uma em suas páginas manuais. Casos de uso bastante úteis deste programa são adicionar ou retirar um usuário de grupos suplementares. O comando a seguir adiciona o usuário ao grupo suplementar "aluno":

# usermod -a -G aluno fulano

Para remover o usuário de um grupo basta redefinir os grupos suplementares do usuário, omitindo o grupo do qual será excluído. Os comandos id ou groups podem ser úteis para mostrar os grupos que o usuário pertence:

# id -nG fulano

# groups fulano

A saída do comando acima é uma lista com todos os grupos o qual o usuário pertence. Para remover o usuário de um grupo basta omitir o nome do grupo da linha de comando. Um exemplo de comando é o seguinte:

# usermod -G users,cdrom,games fulano

Os arquivos /etc/login.defs e /etc/default/useradd contém os valores padrão para algumas das opções disponíveis nestes programas. Por exemplo a variável CREATE_HOME declarada no arquivo /etc/login.defs pode receber o valor "yes", o que automatiza a criação do diretório pessoal do usuário e desta forma não necessita a opção -m no comando useradd.

Modificar os atributos das contas de usuários e grupos é geralmente uma simples questão de editar o /etc/passwd e o /etc/group. O sistema fornece comandos como o usermod e o groupmod para fazer exatamente isto, mas pode ser mais fácil editar os arquivos manualmente, na maioria das vezes. Para editar estes arquivos é interessante utilizar os comandos vipw e vigr pois fornecem uma sessão do editor vi protegida por um controle de trava nos arquivos (lock).

Como o sistema provavelmente utiliza o shadow para proteger as senhas então é preciso sincronizar as linhas entre os arquivos /etc/passwd e /etc/group com os arquivos /etc/shadow e /etc/gshadow. Os comandos pwck e grpck servem para verificar a integridade dentre estes arquivos.

Os números para UID e GID devem ser, em essência, únicos para cada conta de usuário ou grupo. Estes programas são capazes de tratar os números ativos e atribuir valores em sequência para as novas entradas. Em uma edição manual o administrador deve tomar este cuidado com atenção.

Consulte as páginas manuais destes programas para mais informações.

sexta-feira, 9 de julho de 2010

Particularidades dos movimentos da Terra e da Lua

A Terra possui dois movimentos principais, a rotação e a translação. A Lua possui muitos movimentos, mas os principais são a rotação, a revolução e a translação. Todos estes movimentos giratórios acontecem em um mesmo sentido mas ao redor de eixos distintos e em inclinações diferentes.

A rotação da Terra é o movimento giratório que a Terra realiza ao redor do seu eixo, no sentido anti-horário, para um referencial observando o planeta do espaço sideral sobre o polo norte. A rotação em torno do seu eixo é responsável pelo ciclo dia e noite. O período de rotação completo, ou seja, o giro de 360 graus, é de 23 horas, 56 minutos e 4,098903691 segundos. Por causa da simultaneidade com o movimento orbital, o tempo de rotação é de 24 horas.

O eixo da Terra possui uma inclinação em relação à perpendicular ao plano definido em sua órbita. Sua inclinação é de 23 graus, 26 minutos e 21,4119 segundos e é este ângulo que define as linhas dos trópicos, pela incidência perpendicular dos raios solares nos solstícios. As estações climáticas são causadas por esta inclinação do eixo de rotação da Terra e são assinaladas oficialmente nos dias dos solstícios e nos dias dos equinócios.

Na astronomia, o solstício é o momento em que o Sol, durante seu movimento aparente na esfera celeste, atinge a maior declinação em latitude, medida a partir da linha do equador. O equinócio é um dos dois momentos em que o Sol em sua órbita aparente cruza o plano do equador celeste.

O solstício, quando ocorre no verão significa que a duração do dia é a mais longa do ano. Analogamente, quando ocorre no inverno, significa que a duração da noite é a mais longa do ano. A palavra equinócio vem do Latim, aequus (igual) e nox (noite), e significa "noites iguais", ocasiões em que o dia e a noite duram o mesmo tempo.

Como os eventos ocorrem em uma simetria inversa, nos hemisférios norte e sul, as estações climáticas também ocorrem simetricamente invertidas.

A translação é o movimento da Terra em sua órbita elíptica em torno do Sol, em um plano a 7,155 graus em relação ao plano equatorial do Sol, com uma excentricidade orbital de 0,01671123. O plano da órbita da Terra ao redor do Sol é denominado eclíptica. A posição mais próxima ao Sol, o periélio, acontece próximo do dia 3 de Janeiro e o ponto mais distante, o afélio, próximo do dia 4 de Julho. A distância entre a Terra e o Sol no periélio é de aproximadamente 147,1 milhões de quilômetros e no afélio é de aproximadamente 152,1 milhões de quilômetros.

O sentido da translação da Terra também é anti-horário, para um observador no polo norte celeste. Esse movimento é feito em uma velocidade de 29,78 quilômetros por segundo, com o período orbital de 365,256363004 dias.

O movimento de translação da Lua é o que faz em torno do Sol acompanhando a Terra. Sua duração é o de um ano, portanto aproximadamente 365 dias. A rotação da Lua é o movimento que ela faz em torno do seu próprio eixo, que está à 6,687 graus da linha perpendicular ao seu plano orbital, e com uma velocidade equatorial de 4,627 metros por segundo. No entanto o eixo de rotação da Lua não é fixo em relação as estrelas, desta forma o ângulo entre a eclíptica, o plano da órbita da Terra ao redor do Sol, e o equador lunar é sempre 1,5424 graus. A revolução é o elíptico que ela faz ao redor da Terra, com uma velocidade de 1,022 quilômetros por segundo e uma excentricidade orbital de 0,0549. Todos os movimentos da Lua estão em um mesmo sentido, em um giro anti-horário para um observador no polo norte celeste.

Os movimentos de rotação e revolução (período sideral) da Lua tem a mesma duração, um período de 27 dias, 7 horas e 43,1 minutos. Devido à igualdade nas durações desses dois movimentos a Lua nos mostra sempre a mesma face. Entretanto, como a Terra está se movendo simultaneamente ao redor do Sol, o período de revolução da Lua é levemente mais longo, entre duas aparições da mesma fase da Lua à Terra, com 29 dias, 12 horas, 44 minutos e 2,9 segundos. É o chamado período sinódico.

Como a órbita da Lua também é elíptica, a distância da Lua à Terra varia ao longo do período da revolução, o que faz com que seu tamanho aparente mude de um ciclo para outro. A distância média da Lua à Terra é de 384,399 quilômetros. Com sua maior distância, o apogeu, sendo 405,696 quilômetros e sua menor distância, o perigeu, sendo 363,104 quilômetros.

O plano da órbita da Lua em torno da Terra está inclinada 5,145 graus em relação ao plano da órbita da Terra em torno do Sol e entre 18,29 e 28,58 graus em relação ao plano do equador terrestre. Esta inclinação do plano da órbita lunar aliada à inclinação do eixo de rotação lunar faz com que a área da superfície visível seja quase 3/5 da superfície lunar total.

A ilustração abaixo mostra os sentidos dos movimentos da Terra e da Lua. A a Terra posicionada nos momentos de solstícios e equinócios, com as datas para o hemisfério sul. As figuras estão fora de escala e as excentricidades orbitais não estão representadas.

quinta-feira, 8 de julho de 2010

O que são dispositivos de armazenamento?

Na computação, um dispositivo de armazenamento é um componente capaz de gravar informação. É o hardware que possui a finalidade de armazenar o software. Os dados ou informações gravadas em um computador ficam armazenados nestes dispositivos.

Um dispositivo de armazenamento pode ser classificado em:

- Memória principal ou secundária;
- Memória volátil ou não volátil;
- Dispositivo magnético, óptico ou eletrônico;
- Dispositivo removível ou não removível.

A RAM é a memória principal do computador, é uma memória volátil pois os dados são perdidos com o desligamento da máquina, e é um dispositivo eletrônico não removível. É na RAM onde ficam armazenados os programas que estão em execução e os arquivos abertos para exibição ou edição. A RAM é utilizada automaticamente pelo computador e pelo sistema operacional, desta forma, no uso comum o usuário não controla diretamente a RAM. É a memória mais rápida do computador e também a mais cara, sem considerar os registradores e o cache.

Pente de memória RAM.

Na memória secundária ficam armazenados os softwares, os documentos e as imagens etc. de uma maneira não volátil, ou seja, a informação fica armazenada permanentemente, mesmo com o computador desligado. É no uso da memória secundária que o usuário pode interagir e modificar em sua operação do computador, gravando programas e documentos etc.

Os dispositivos de armazenamento que compõem a memória secundária podem ser removíveis ou não removíveis. Um disco rígido (HD) e um disco de estado sólido (SDD) são dispositivos não removíveis pois ficam permanentemente no interior do computador, apesar de existirem equipamentos que dão mobilidade à estes dispositivos. Nestes dispositivos internos ficam os softwares prontos para serem executados.

Um disco rígido é um dispositivo de armazenamento magnético, a informação é gravada em uma superfície magnética. Atualmente é o dispositivo de armazenamento secundário que possui a maior capacidade de armazenamento, podendo ter mais de 2 terabytes de espaço. Um disco de estado sólido é um dispositivo eletrônico, um circuito integrado ou um chip, comumente utilizado em netbooks e outros equipamentos de tamanho reduzido. Não possui a mesma capacidade de armazenamento que o disco rígido.

Disco rígido e disco de estado sólido.

Os dispositivos removíveis são aqueles que o usuário pode retirar do computador e assim pode transportar dados de um computador para outro. Alguns autores denominam os dispositivos removíveis como memória terciária porque servem a memória secundária para cópia de segurança ou instalação de software. Existem dispositivos magnéticos, como disquete e fita, dispositivos ópticos, como CD, DVD e Blu-ray, e dispositivos eletrônicos, como pendrive e cartão de memória flash. Há ainda o dispositivo óptico-magnético, chamado MiniDisc (MD), com o processo de gravação sendo magnético e de leitura óptica.

Os dispositivos removíveis são mais lentos no processo de leitura e escrita comparados aos dispositivos não-removíveis. Possuem uma menor capacidade de armazenamento, visto que um disquete armazena 1,44 MB, um CD, DVD e Blu-ray armazenam respectivamente 700 MB, 8,5 GB e 50 GB, e o pendrive e a fita com algumas centenas de gigabytes.

Disquete, cartão flash, pendrive, minidisc, CD e fita.

As mídias ópticas, CD, DVD e Blu-ray, possuem versões que suportam apenas uma gravação. Por exemplo o CD-R e o DVD-R. Nestas mídias os dados não podem ser regravados.

A fita magnética é o único dispositivo que os dados são lidos em uma forma sequencial, isto é, é preciso percorrer toda a fita até encontrar o dado desejado. Diferente, pois nos outros dispositivos os dados podem ser acessados diretamente. As fitas são particularmente utilizadas para backup de uma grande quantidade de dados.

Os micro-computadores atuais não trazem mais um dispositivo de disquete porque já está em desuso. Agora trazem portas USB e leitor de cartões de memória flash, além do dispositivo de DVD ou Blu-ray.

Com a evolução tecnológica os dispositivos de armazenamento estão cada vez menores no tamanho e maiores na capacidade. O único inconveniente para o usuário é a preocupação com a compatibilidade entre as tecnologias que vão surgindo, principalmente se existem dados que precisam ser armazenados por muitos anos.

                                             Velocidade          Velocidade
Dispositivo              Capacidade          de Leitura          de Gravação

Disquete                 1,44 MB             62,5 KB/s           62,5 KB/s
MiniDisc                 160 MB                                  352 KB/s
CD                       700 MB              7800 KB/s (52x)     7200 KB/s (48x)
DVD                      4,7 GB e 8,5 GB     32,4 MB/s (24x)     32,4 MB/s (24x)
Blu-ray                  25 GB e 50 GB       54 MB/s (12x)       54 MB/s (12x)
Cartão flash             até 48 GB           40 MB/s             12 MB/s
Pendrive                 até 64 GB           30 MB/s             15 MB/s
Fita magnética           até 400 GB          80 MB/s             80 MB/s
Disco de estado sólido   até 256 GB          700 MB/s            250 MB/s
Disco rígido             até 2,5 TB          70 MB/s             70 MB/s

* Como existem uma infinidade de tecnologias, marcas e modelos, os valores são apenas genéricos e ilustrativos.