Muitos estão acostumados apenas a usar o Windows, e ao se deparar com um Linux ficam confusos em relação aos arquivos e suas permissões.
A primeira coisa a ter em mente é que no Linux o conceito de usuários e grupos é total e completamente integrado ao sistema. No Windows isso é um mistério para a maioria dos usuários (no sentido de não terem noção sequer da sua existência, mas estão lá sim).
Para entender vamos dar um exemplo. Ao dar o comando ls -l num diretório você verá todo o seu conteúdo e as propriedades dos arquivos:
~ $ ls -l drwxr-xr-x 4 user users 4096 Oct 19 19:22 Instinctiv drwxrwxrwx 34 user users 4096 Oct 28 00:56 MyDocs drwxr-xr-x 2 user users 4096 Aug 2 15:23 NProfile drwxr-xr-x 2 user users 4096 Oct 1 17:26 Panorama_thumbs -rw-r--r-- 1 root root 4521 Oct 28 19:50 Xorg.0.log -rw-r--r-- 1 user users 11832 Oct 22 18:28 applet1.png -rw-r--r-- 1 user users 6683 Oct 22 18:28 applet2.png -rw-r--r-- 1 user users 86 Oct 22 18:28 applet3.png drwxr-xr-x 3 user users 4096 Jun 12 16:43 apps -rwxr-xr-x 1 user users 75 Oct 11 20:21 autouphoto.sh -rw-r--r-- 1 user users 9554 Oct 21 22:14 book1.png -rw-r--r-- 1 user users 23638 Oct 21 22:14 book2.png -rw-r--r-- 1 user users 13169 Oct 21 22:14 bookmask1.png -rw-r--r-- 1 user users 16384 Oct 28 19:52 fuelpad.db drwxrwxrwx 2 root root 4096 Sep 6 23:37 kroll -rw-r--r-- 1 root root 0 Oct 28 19:51 qld.log ~ $
A primeira coluna informa as permissões e também alguns atributos do arquivo/diretório. A primeira letra indica o que a entrada é:
d -> diretório
l -> link
– -> arquivo
Há outras possibilidades, mas essas são as mais comuns. Os 9 códigos seguintes são, na verdade, 3 blocos de 3 códigos. Estes são os códigos possíveis de aparecer:
– -> sem permissão
w -> permissão de escrita
r -> permissão de leitura
x -> permissão de execução
Cada um dos 3 blocos determina as permissões para o usuário “dono” do arquivo, para o grupo ao qual o arquivo pertence, e para todos os usuários.
A terceira coluna do ls -l mostra qual é o usuário dono do arquivo, enquanto que a quarta coluna mostra o grupo. Qualquer usuário que pertença a esse grupo tem essas permissões. E se o usuário que tenta fazer algo com o arquivo/diretório não é o dono do arquivo nem pertence ao grupo, as permissões do terceiro grupo são aplicadas.
No exemplo acima o Xorg.0.log é um arquivo, pertencente ao usuário root e grupo root. Esse usuário pode ler e escrever o/no arquivo (primeiro subconjunto indicando “rw-“). Quem pertence ao grupo pode ler apenas (o “r–“). E os outros usuários também podem apenas lê-lo (o último “r–“).
O autouphoto.sh é um arquivo do usuário user, grupo users. O usuário user pode ler, escrever e executar o arquivo (“rwx”). Quem pertence ao grupo users pode ler e executar. E os outros também podem ler e executar.
Aqui alguns exemplos:
1) drwxrwxrwx: é um diretório onde todos os usuários e todos os grupos tem todas as permissões
2) -rw-r—–: é um arquivo, onde o usuário tem permissão de leitura e escrita, os integrantes do grupo tem permissão de leitura e os outros usuários não tem permissão alguma
3) -rwxr-xr–: é um arquivo que pode ser lido, escrito e executado pelo usuário, lido e executado pelo grupo e somente lido por todos os outros usuários
Importante lembrar que o fato de um arquivo poder ser lido por qualquer um não vai adiantar nada se o diretório onde esse arquivo está também não o for! Afinal de contas, para chegar ao arquivo primeiro preciso chegar ao diretório.
Como já pôde ser notado, o que determina que um arquivo pode ser executado é uma permissão dele, não a sua extensão.
Para mexer com as permissões há dois comandos: chown e chmod. O primeiro serve para alterar os “donos” do arquivo (change owner), e o segundo é para alterar as permissões (change mode).
Aqui é um bom lugar para aprender a usar o chmod (com mais dicas aqui).
Já como usar o chown pode ser visto aqui.
Só para complementar, na listagem acima as 3 últimas colunas mostram o tamanho do arquivo (se for um diretório terá tamanho fixo), a data de última alteração e, obviamente, o nome.
E os arquivos ocultos? Arquivos ocultos no Linux são todos aqueles que tem seu nome iniciado por um ponto. O mesmo se aplica para diretórios. Para vê-los basta usar a opção “a” no comando ls:
ls -a