buy tb500
 

Permissões de arquivos no Linux

Posted by dausacker on Aug 15, 2010 in General |

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>

Comments are closed.

Copyright © 2025 Socializando Saberes. Design by Laptop Geek for and R*.