segunda-feira, 28 de dezembro de 2009

Diretórios e arquivos 1: a pasta home

Uma das coisas mais complicadas para os novos usuários do Linux é saber onde as coisas são guardadas nele. A estrutura de diretórios do Linux pode ser bem estranha no início, principalmente para [ex] usuários de Windows.

Neste artigo pretendo esclarecer este aspecto elementar do Linux, mas que ainda causa "espanto".

OBS.: Para entender melhor este artigo, considere que os vocábulos Pasta e Diretório são a mesma coisa!


Um cenário que pode se tornar caótico


Para demonstrar as diferenças entre o Windows e o Linux, no que diz respeito à organização de diretórios e arquivos, vamos analisar uma situação hipotética, mas não muita rara de acontecer. Imagine um computador com a seguinte configuração de discos:

- 3 Discos Rígidos (HD) de 250 GBytes cada
- 1 Unidade CD-RW
- 1 Unidade DVD-RW


Sendo que os três discos rígidos são uma necessidade que o usuário tem de armazenar muita -- mas muita -- coisa. Digamos que ele seja um músico e que use o computador em seu trabalho! Então os três discos rígidos são reservados para as seguintes finalidades:

- HD1: Disco de BOOT, com uma partição de de 100GB para o sistema operacional windows+aplicativos; e outra partição de 150GB para arquivos temporários;
- HD2: Disco de trabalho com partição única de 250GB;
- HD3: Disco de "finalização", com uma partição de 125GB para organizar os trabalhos (as músicas) masterizados e prontos para a entrega; e outra partição de 125GB para BACKUP.

As unidades CD-RW e DVD-RW são destinadas à gravação das músicas, seja em formato CD-Audio ou em forma de dados, no DVD-RW.


O caos no Windows

Se você é ou era usuário do Windows, já deve estar verificando se as letras do alfabeto serão suficientes para nomear tantas unidades de disco!

No Windows, o cenário exposto implica em sete unidades de disco:

- HD1
C: Partição de Boot+Sistema Operacional+Aplicativos;
D: Partição para arquivos temporários;

- HD2
E: Disco de trabalho com partição única de 250GB

- HD3
F: Disco de "finalização", com uma partição de 125GB
G: Partição de 125GB para BACKUP

- CD-RW
Unidade H:

- DVD-RW
Unidade I:


No Windows, isto além de ser caótico é praticamente impositivo. Não há outra forma de organizar as coisas no Windows. Tua única liberdade seria usar letras diferentes para as unidades (com excessão da unidade C:).

E além de você ter que memorizar para que servem estas unidades todas, ainda teria que memorizar toda uma série de diretórios (ou pastas) dentro destas unidades!


A ordem no Linux

Diferentemente do Windows, no Linux você tem a liberdade de organizar as unidades de disco e pastas do jeito que você quiser. Mas há um certo padrão a se seguir, até mesmo para facilitar a vida.

Vamos ver como este mesmo cenário pode ser implementado no Linux. A estrutura de pastas mais provável é algo como:

- Pasta raiz ( / )

Ponto de montagem para o sistema operacional e os aplicativos. Para isto, normalmente são destinadas as pastas /boot, /root, /bin, /lib, /etc e /dev. E você não tem que se preocupar com isto: o Linux cuida disto na instalação.
(isto é o equivalente ao C: no Windows)

- Pasta /discos

Ponto de montagem para as demais partições de trabalho, distribuidas entre os discos rígidos citados. Desta forma, as partições dos diversos discos rígidos podem ser montadas em um só lugar, mais ou menos como:

/discos/temp -> Partição para arquivos temporários;
/discos/trabalho -> Disco de trabalho;
/discos/finalizacao -> Disco de "finalização";
/discos/backup -> Disco de backup

(isto é o equivalente aos D:, E:, F: e G: no Windows)

- Pasta /media

Ponto de montagem para as unidades de CD-RW e DVD-RW. Desta forma, as unidades de disco são referenciadas como:

/media/cdrom -> a unidade CD-RW
/media/dvd -> a unidade DVD-RW

(isto é o equivalente aos H: e o I: no Windows)


Entendendo a ordem no Linux

Olhando assim de imediato, parece uma doideira, mas não é. É apenas diferente do que você pode estar acostumado. E muitas vezes nos acostumamos a fazer coisas terríveis, sem nos darmos conta que são terríveis, simplesmente porque elas sempre foram assim!

Mas, vamos fazer alguns "exercícios de imaginação". Imagine que:

1) Preciso gravar em um CD de audio um trabalho já finalizado:
De /discos/finalizacao para /media/cdrom

2) Preciso abrir o diretório daquele trabalho que já conclui:
Vou em /discos/finalizacao

3) Preciso abrir um trabalho em andamento:
Vou em /discos/trabalho

4) Preciso gravar num DVD um trabalho finalizado, para entregar ao cliente:
De /discos/finalizacao para /media/dvd

5) Preciso mover um trabalho finalizado para o backup:
De /discos/finalizacao para /discos/backup


Toda as coisas similares ficam no mesmo lugar

Quer ver como isto é mais simples? Responda sem olhar o texto anterior:

Como, no Linux, você se refere ao CD-RW e ao DVD-RW?
E no Windows, quais são as letras de unidade do CD-RW e do DVD-RW?

Então, conseguiu responder de bate pronto?

É mais fácil lembrar de /media/cdrom e /media/dvd ou é mais fácil lembrar que H: e I: são as unidades de CD-RW e DVD-RW, respectivamente?

No Linux, mesmo que você "espete" dúzias de HD no computador, até mesmo se forem unidades externas (USB), eles poderão ser montados todos num só ponto: /discos!


Resumo da ópera

O Linux tem um mecanismo chamado "Ponto de montagem". Alguns pontos de montagem são padronizados e seus nomes muito conhecidos pelos usuários. Mas a grande vantagem nisto é que você pode montar coisas de origens diferentes todas num mesmo ponto.

É como no caso das unidades de CD e DVD. Nós os montamos em /media. Da mesma forma, todos os discos (temp, trabalho, finalizacao e backup) foram montados no mesmo ponto: /discos.

Então, é mais fácil lembrar que as unidades de CD e DVD estão em /media/cdrom e /media/dvd, respectivamente, ou é mais fácil lembrar que são as unidades H: e I:?

E é mais fácil organizar os discos de trabalho em /discos/temp, /discos/trabalho, /discos/finalizacao e /discos/backup ou é mais fácil ficar memorizando que D: é temp, E: é trabalho, F: é finalização e G: é backup?


A Estrutura Padrão de diretórios no Linux

Feita esta introdução, vamos a partir de agora conhecer onde as coisas ficam guardadas no Linux. Iremos conhecer os nomes de pasta padrão do Linux e aprender para que cada uma serve. Ao menos as mais relevantes.


Teu Computador

Um bom lugar para começar a desvendar a estrutura de pastas do Linux é a partir do ícone "Meu computador". Observe a figura abaixo, antes de prosseguirmos.


"Meu computador"


Em "Meu computador" você pode obter um monte de informações a respeito da tua máquina. Mas agora estamos interessados na seção "Pastas comuns". Vamos começar clicando em "Minha pasta Home".


A Pasta Home ou /home/user

Tudo o que diz respeito a "você", ou seja, ao teu usuário, fica confinado à tua pasta Home, a princípio.

No Linux, cada usuário tem uma Home, ou Casa (ou melhor: apartamento). Todas as configurações personalizadas, todas as opções que você define nos mais diversos aplicativos, enfim, praticamente tudo o que diz respeito à você fica gravado a partir desta pasta. Veja a figura abaixo, mostrando minha pasta home, que fica em /home/cawasame


Minha pasta home

Toda as homes de todos os usuários do Linux, com excessão do usuário root, ficam dentro da pasta padrão /home. Assim, se existirem os usuário Lucia, Maria e Pedro, existirão as pastas /home/Lucia, /home/Maria e /home/Pedro. É muito simples!

De mesma forma que num apartamento de verdade, você é o senhor absoluto de sua home: Você tem privilégios sobre toda ela. Dentro dela, você pode fazer uma re-engenharia e criar novas "dependências" (diretórios). Você também pode, se quiser, até mesmo demolir o apartamento todo por dentro!

Mas uma coisa que você não vai conseguir é demolir o prédio inteiro. Afinal, existem os "apartamentos" dos outros...


Proprietário, Permissões e Grupos

Proprietário

Olhando a figura acima você poderá ver uma coluna chamada "Proprietário ". Tudo no Linux tem um proprietário. Naturalmente, tudo dentro da tua pasta home tem você como proprietário. Ao menos deveria... Isto define quem é o dono de que e quem pode fazer o que!


Permissões


Outro conceito importante no Linux é o conceito de permissões. Ou seja, o que é permitido fazer sobre diretórios e arquivos e, mais importante, quem pode! Para entendermos isto melhor, olhe a figura abaixo.


Permissões sobre a minha pasta home

Destacamos o seguinte da figura acima:

- Permissões de acesso
Proprietário: Pode ver e modificar o conteúdo
Grupo: Pode ver o conteúdo
Outros: Pode ver o conteúdo

Voltando a analogia do que acontece em tua casa, você, naturalmente, tem acesso a todas as dependências dela. Mas é pouco provável que você fique à vontade com um visitante abrindo tua geladeira ou entrando na tua suite master, mesmo que ele seja do teu grupo de amigos!

E mais ainda: se é um visitante que não é do teu grupo de amigos, pode ser que você não queira nem que ele saia dos limites da sala. No máximo, ir até o banheiro social!

Grupos

Para organizar ainda mais as permissões, o Linux implementa o conceito de Grupos. Todo usuário pertence a um grupo. A não ser que se informe algo diferente, todos os usuários do Linux pertencem ao grupo users. Mais uma vez, a excessão é usuário root, que pertence ao exclusivo grupo com o mesmo nome: root.

Através dos grupos, você pode dar permissões a todo um grupo de usuários sobre determinada coisa.

Voltando a analogia da casa (ou apartamento), digamos que você queira que teus amigos possam ter as mesmas permissões que você sobre, digamos, a cozinha!

Você pode criar um grupo chamado meus_amigos e, nas configurações da pasta cozinha, informar que ela pertence a este grupo (veja a seção Propriedade na figura acima).

Assim, você pode configurar na seção "Permissões de acesso" que o grupo da cozinha (agora modificado de users para meus_amigos) pode "Ver e modificar o conteúdo". Isso faz com que, além de você, seus amigos possam entrar na cozinha, abrir a geladeira, pegar uma maçã para comer, etc :-)

Saindo da analogia e voltando ao Linux

Espero não ter confundido tua mente com esta analogia maluca da casa e da cozinha! Para me redimir, vou propor uma situação não muito difícil de acontecer:

Imagine que você compartilha teu computador com tua esposa e filhos. E você não quer que eles acessem tudo em tua pasta home. Lembre-se que como todo usuário do Linux pertence ao grupo users, no mínimo todos eles podem ver o conteúdo da tua pasta!

Mas tem coisas que você pode querer compartilhar. Digamos, a pasta padrão "Imagens". O que você faz? Quatro coisas:

1) Alterar as permissões de "Grupo" e "Outros" em todas as pastas dentro da tua home para "Negado", selecionando a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";
Isto faz com que apenas você possa ter acesso a tudo dentro da tua home e todos os outros ficarão sem a possibilidade de sequer abrir as pastas.

2) Agora você pode criar um novo grupo especialmente para definir as regras sobre a pasta padrão "Imagens". Vamos chamá-lo de familia;

3) Você muda o grupo da pasta padrão "Imagens" de users para familia e nas permissões de "Grupo" você muda para "Pode ver e modificar o conteúdo" ou apenas para "Pode ver o conteúdo", selecionando também a opção "Aplicar as alterações em todas as subpastas e seus conteúdos";

4) Inclui teus filhos e tua esposa  no grupo familia.

Pronto. Agora apenas a pasta padrão "Imagens" pode ser aberta e/ou modificada por tua família!



No próximo artigo desta série irei falar sobre os demais diretórios do Linux

Comentem, critiquem, fiquem à vontade!




.

Nenhum comentário:

Postar um comentário