quinta-feira, 4 de julho de 2013

Entendendo as permissões dos arquivos do Linux

Como todo sistema multi-usuário, o Linux possui algumas ferramentas para gerenciar as permissões nos arquivos do sistema. Vamos entender primeiro como essas permissões funcionam.

$ls -l /tmp/
total 32
-rw------- 1 ricardo  ricardo   5238 Jul  4 10:54 clementine-art-A25846.jpg
-rw------- 1 ricardo  ricardo  16944 Jul  4 10:54 clementine-art-D25846.jpg
srw-rw-rw- 1 root     root         0 Jul  3 08:08 cmg-statistic
drwxr-xr-x 2 openfire openfire    60 Jul  3 08:08 hsperfdata_openfire
drwxr-xr-x 2 ricardo  ricardo    100 Jul  4 08:18 hsperfdata_ricardo
drwxr-xr-x 2 tomcat6  tomcat6     60 Jul  3 08:08 hsperfdata_tomcat6
drwxr-xr-x 4 openfire openfire    80 Jul  3 08:08 jetty-0.0.0.0-9000-webapp-_-any-
drwx------ 2 kdm      nogroup     60 Jul  3 08:08 kde-kdm
drwx------ 2 ricardo  ricardo     40 Jul  3 08:10 kde-ricardo
drwx------ 2 kdm      nogroup     60 Jul  3 08:08 ksocket-kdm
drwx------ 2 ricardo  ricardo     80 Jul  4 10:05 ksocket-ricardo
drwx------ 2 ricardo  ricardo     40 Dez 31  1969 orbit-ricardo
drwx------ 2 ricardo  ricardo    100 Jul  3 08:09 pulse-9GQy3jIzLNhc
drwx------ 2 root     root        40 Jul  3 08:08 pulse-PKdhtXMmr18n
srwxr-xr-x 1 ricardo  ricardo      0 Jul  3 08:09 qtsingleapp-cav-e7d7-3e8
-rw-r--r-- 1 ricardo  ricardo      0 Jul  3 08:09 qtsingleapp-cav-e7d7-3e8-lockfile
srwxr-xr-x 1 ricardo  ricardo      0 Jul  4 10:23 qtsingleapp-clemen-d211-3e8
-rw-r--r-- 1 ricardo  ricardo      0 Jul  3 09:47 qtsingleapp-clemen-d211-3e8-lockfile
-rw------- 1 ricardo  ricardo      5 Jul  3 08:09 sparkleshare-ricardo.pid
drwx------ 2 ricardo  ricardo     60 Jul  3 08:08 ssh-aYpzNyAsTglL
drwxr-xr-x 2 tomcat6  root        40 Jul  3 08:08 tomcat6-tomcat6-tmp
$

Aqui temos vários arquivos, sendo que cada linha contém informações de um arquivo específico. Para o nosso estudo, vamos pegar o último arquivo.

drwxr-xr-x 2 tomcat6  root        40 Jul  3 08:08 tomcat6-tomcat6-tmp

Para ficar mais fácil, vamos começar da última coluna. Esta possui o nome do arquivo (tomcat6-tomcat6-tmp). As colunas 6, 7 e 8 possuem a data da última alteração (Jul  3 08:08). A quinta coluna possui o tamanho da pasta ou arquivo (40). Se for uma pasta, essa tamanho não considera os arquivos que estão dentro dela. É mostrado apenas o tamanho que a própria pasta isolada possui. A quarta coluna é o grupo a quem esse arquivo/pasta pertence (root). A tercea coluna possui o dono (usuário) do arquivo (tomcat6). A segunda coluna mostra quantos ítens (2)há dentro da pasta. Se for um arquivo, esse valor será 1. E a primeira coluna possui as permissões, e merece um parágrafo à parte.

A primeira letra diz se o "arquivo" é realmente um arquivo (-), um diretório (d), um link (l), etc. As próximas três letras dizem qual a permissão que o dono do arquivo tem. No nosso exemplo o dono pode ler (r), modificar (w) e executar o arquivo (x). Se for uma pasta, o (x) dá permissão para o dono entrar na pasta. As próximas três configuram as permissões para o grupo, e as três últimas as permissões para os demais usuários. E ainda existe o suid (s no usuário) que permite executar arquivos como se fosse o dono dele, e o sgid (s no grupo) que permite ao grupo executar um arquivo com as permissões do grupo do arquivo, e também permite que os novos arquivos sejam criados com as mesmas permissões da pasta, ideal para compartilhamentos via rede. Também há o bit stick (t colocado em outros) que só deve ser usado em pastas e permite que somente o criador do arquivo possa excluí-lo. Essa é uma configuração típica do diretório /tmp, onde todos podem escrever, mas um usuário não pode excluir arquivos criados por outros usuários.

No próximo post vamos mostrar como alterar essas permissões.