Permissões de arquivo mais detalhadas no Linux


Pergunta: Um amigo me disse que o Linux não tem permissões de arquivo tão detalhadas quanto o sistema operacional favorito dele (é, aquele mesmo). Existe alguma maneira de ir além das permissões comuns de dono, grupo e outros e ser mais flexível?

Resposta: Para começar, para quem não está familiarizado com as permissões tradicionais de sistema de arquivos do Linux, o conceito é muito simples. Cada arquivo e diretório recebe um conjunto de três permissões que determinam o que o dono do arquivo, os membros de um determinado grupo e todos os outros usuários podem fazer com ele. Cada categoria se subdivide em três itens que indicam se um usuário pode ler o arquivo, fazer alterações nele ou executá-lo. É mais fácil de entender se usarmos um exemplo. Você abre a linha de comando e digita:

ls -l

O resultado vai ser uma lista de arquivos. A primeira coluna provavelmente vai exibir algo parecido com isto:

-rw-r--r--
 drwxr-xr-x

O primeiro item é um arquivo comum, e o primeiro grupo de quatro símbolos mostra que o dono do arquivo pode ler e escrever no arquivo. O segundo grupo de três símbolos indica que o arquivo pode ser lido por integrantes do grupo do arquivo. A parte final diz que quem não for dono nem estiver no grupo do arquivo também pode ler o arquivo. A segunda linha do exemplo começa com “d”, indicando que se trata de um diretório. Mais uma vez, podemos dizer pelas letras exibidas que o dono pode ler, escrever e entrar no diretório. Os usuários que estiverem no grupo desse diretório (e todo o resto) podem ler o diretório e entrar nele, mas não alterar seu conteúdo.

Há uma explicação mais completa aqui.

Em ambientes que tenham categorias diferentes de usuários e nos quais cada categoria precise de um nível de acesso diferente, temos que encontrar maneiras de utilizar as permissões de arquivo básicas. Um jeito de se fazer isso é criar novos grupos de usuários no sistema. Por exemplo, podemos criar um grupo chamado “contabilidade” fazendo login como root e executando:

groupadd contabilidade

Agora vamos atribuir pessoas a esse grupo. No meu exemplo, queremos que a usuária “susan” seja integrante do grupo “contabilidade”. Para isso, usamos:

vigr

Nosso grupo “contabilidade” deve ser o último listado no arquivo, mais ou menos assim:

contabilidade:x:105:

Para adicionar Susan a esse grupo, acrescentamos o nome dela a essa linha, deste jeito:

contabilidade:x:105:susan

Depois é só salvar o arquivo. Agora temos um grupo com um integrante. Para atribuir um arquivo ao grupo contabilidade, usamos:

chgrp contabilidade meusdados

Trocando “meusdados” pelo nome do arquivo em questão. Para dar ao grupo contabilidade a capacidade de ler e editar o arquivo, sem que pessoas que não pertençam a esse grupo possam ler o arquivo, atribuímos as seguintes permissões:

chmod 664 meusdados

“meusdados” vai aparecer na listagem do diretório assim:

-rw-rw-r-- 1 root contabilidade 1024 2010-07-12 15:30 meusdados

Agora podemos incluir quantas pessoas quisermos no grupo de contabilidade, dando a elas acesso ao arquivo. Também podemos criar um grupo novo para cada categoria de usuários, como “rh” ou “ti”. Eu gosto dessa abordagem para manipular o acesso aos arquivos porque ela usa permissões tradicionais de arquivo e funciona bem entre distribuições e sistemas de arquivos diferentes.

Outra abordagem que oferece maior flexibilidade é a das listas de controle de acesso (ou ACLs, em inglês). Trata-se de uma maneira de oferecer um controle mais detalhado sobre os arquivos. A funcionalidade existe em kernels mais recentes (da família 2.6.x), e funciona na maioria dos sistemas de arquivos Linux, incluindo ext2/3/4. ReiserFS e XFS. O sistema de arquivos a ser utilizado tem que estar montado com a flag “acl”. Para fazer isso, adicione “acl” à linha correta no arquivo /etc/fstab. Por exemplo:

/dev/sda2 /home ext3 acl,rw 0 0

A linha acima habilita os recursos da ACL na nossa partição /home. Em seguida, temos que montar a partição novamente:

mount -v -o remount /home

Usando o exemplo anterior, no qual queremos que Susan tenha acesso ao arquivo “meusdados”, nós poderíamos conceder a ela permissão para ler e editar o arquivo usando:

setfacl -m u:susan:rw- meusdados

Para dar o mesmo acesso a todo o grupo contabilidade, usamos:

setfacl -m g:contabilidade:rw- meusdados

E para atribuir acesso apenas para leitura ao grupo rh:

setfacl -m g:rh:r-- meusdados

Para confirmar se as permissões estão corretas, usamos o comando getfacl para ver as permissões do arquivo:

getfacl meusdados

Embora a abordagem da ACL faça certas exigências (um kernel mais recente, flags de montagem e a instalação do pacote ACL), ela oferece mais poder ao administrador. As regras de ACL podem trabalhar com longas listas de usuários e grupos específicos (não apenas com um dono e um grupo), dando ao administrador a capacidade de ser mais preciso nas permissões.

Créditos a Jesse Smithdistrowatch.com

Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>

Sobre cardosoap
Graduando em matemática pela Universidade Federal do Amapá técnico em informática pelo centro de educação profissional do Amapá, tecnico em desenvolvimento web (cursando) pelo centro de educação profissional do Amapá. gosto de estuda matemática, informática etc...

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: