2. Arquivos

Resumo

Em comparação ao Windows® e muitos outros sistemas operacionais, o tratamento de arquivos é bem diferente do utilizado no GNU/Linux. Nesta seção iremos cobrir a grande maioria das diferenças. Para mais informações, por favor veja o Capítulo 4, O Sistema de Arquivo do Linux.

As maiores diferenças são resultado direto do fato de que o Linux é um sistema multiusuário: cada arquivo é propriedade exclusiva de um usuário e um grupo. Um fato que não havíamos mencionado a respeito dos usuários é que cada um tem um diretório pessoal (chamado de diretório home). O usuário é o proprietário desse diretório e de todos os arquivos criados nele. Também vale notar que esses arquivos também pertencem a um grupo e que esse é o grupo primário ao qual o usuário pertence. Como mencionado anteriormente (veja Seção 1, “Usuários e Grupos”), um usuário pode pertencer a mais de um grupo ao mesmo tempo.

Entretanto, não seria de muita utilidade se essa fosse a única idéia de posse de arquivo. Como dono dos arquivos, o usuário pode (e deve) atribuir permissões aos arquivos. Essas permissões distingüem tres categorias de usuários: o dono (owner) do arquivo, qualquer usuário pertencente ao grupo associado ao arquivo (também chamado de grupo do dono (owner group)) porém não sendo o dono, e outros, que inclui qualquer usuário que não o dono do arquivo, nem um membro do grupo pertence ao dono do arquivo.

Existem três tipos de permissões diferentes:

  1. Leitura (Read) (r): permite ao usuário ler o conteúdo de um arquivo. No caso de um diretório, permite que o usuário liste seu conteúdo (i.e. os arquivos contidos no diretório).

  2. Escrita (Write) (w): permite a modificação do conteúdo do arquivo. Para um diretório, a permissão de escrita permite que o usuário acrescente ou remova arquivos desse diretório, mesmo não sendo o dono dos arquivos.

  3. eXecução (eXecute) (x): permite que um arquivo seja executado (normalmente só arquivos executáveis tem essa permissão atribuída). Para um diretório, essa permissão faz com que o usuário possa percorrer o diretório, ou seja, entrar e sair do diretório. Observe que essa permissão é diferente da permissão de leitura: você pode ser capaz de percorrer um diretório embora continue incapaz de ler seu conteúdo!

Cada uma das combinações de permissão é possível. Por exemplo, você pode permitir que somente você leia um arquivo enquanto restringe o acesso a todos os outros usuários. Como dono do arquivo, também pode modificar o grupo atribuído ao arquivo (se e somente for membro do novo grupo).

Vejamos um exemplo com um arquivo e um diretório. A seguir pode ser visto o resultado do comando ls -l executado na linha de comando:

$ ls -l
total 1
-rw-r-----   1 usuario1    users           0 Jul  8 14:11 um_arquivo
drwxr-xr--   2 usuario2    users        1024 Jul  8 14:11 um_diretorio/
$

Os resultados do comando ls -l (da esquerda para a direita):

Vejamos com mais detalhes as permissões associadas a cada um desses arquivos. Inicialmente, precisamos remover o primeiro caracter que representa o tipo, então, para o arquivo um_arquivo, temos as seguintes permissões: rw-r-----. Dividindo as permissões em grupos, temos:

Para o diretório a_directory, temos as permissões rwxr-xr--, então:

Existe uma exceção à essas regras: root. O usuário root pode mudar os atributos (permissões, dono e grupo do dono) de todos os arquivos, mesmo que ele não seja o proprietário, sendo assim, pode tornar-se dono do arquivo! O usuário root pode ler arquivos que não tem permissão de leitura para ele, percorrer diretórios que normalmente não teria acesso, e assim por diante. E se o usuário root precisar de uma permissão, ele simplesmente pode adicioná-la a si mesmo. O usuário root tem o controle completo do sistema, o que envolve uma dose de confiança na pessoa que possui a senha de root.

Por final, é importante notar as diferenças entre os nomes de arquivos presentes nos mundos UNIX® e Windows®. Para alguns, o UNIX® possui uma maior flexibilidade e menos limitações.

[Nota]Nota

Entretanto é necessário observar que muitas aplicações gráficas (gerenciadores de arquivos, aplicações de escritório, etc.) atualmente utilizam suas extensões para identificar seus arquivos. Sendo assim, é uma boa idéia utilizar nomes de arquivo com suas respectivas extensões para as aplicações que suportam-nas.



[1] Por padrão, arquivos ocultos não serão mostrados em um gerenciador de arquivos, a não ser que você configure-o para tal. Em um terminal, você deve digitar o comando ls -a para ver todos os arquivos ocultos juntos com os arquivos normais. Essencialmente esses arquivos contém informações de configuração. A partir do seu diretório home, veja os arquivo .mozilla ou .openoffice como exemplo.