Índice das dicas

Permissões de arquivo mais detalhadas no Linux

Por Jesse Smith em 12 de agosto de 2010 às 13h57

5

Fine-grained file permissions

Autor original: Jesse Smith

Publicado originalmente no: distrowatch.com

Tradução: Roberto Bechtlufft

logo-dw

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 Smith - distrowatch.com

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

5 comentáriosPor Jesse Smith. Revisado 17 de agosto de 2010 às 09h23

Comentários

Gosto não se Discute
por jrinformatica em 26 de agosto de 2010 às 11h36
Concordo com nossos dois amigos. Sou programador de computadores, passei por BASIC,COBOL, DOS, CP/M, MS-DOS, Worstart, Dbase, Lotus, 1-2-3, Windows 3.1/3.11 Workgroups, Win95, 98, Me, 2000, XP, Vista, Win7.

Entre no mundo Linux há 10 anos e não me arrependo, quando alguém me fala em vírus, formatar computador, travamento, internet lenta eu pergunto o que é isso? Por que estas coisas não fazem mais parte da minha vida atual.

Mas como disse o nosso colega computador é para todos e nisso ele está certo, o problema é que o usuário windows não se contenta em ser só usuário quando chega no Linux, ele quer ser técnico também e realmente para configurar redes, principamente wireless não é para qualquer um. Se este usuário não quisesse extrapolar suas atribuições tanto em windows como Linux não encontraria nenhuma dificuldade em certos casos é mais fácil fazer em linux do que no windows principalmente quando não depende do terminal, tudo é detectado automaticamente sem a necessidade de nenhum CD de drivers.

Como mostrei aqui tenho esta trajetória na área de informática, mas como todos aqui, também tenho ainda muito que aprender.

Mas gostaria de salientar que 99% ou 100% de quem usa Linux hoje em dia já foi usuário de Windows, o que leva a crer que conhecemos os dois sistemas e sabemos então os pró e contras de cada um.

Eu particularmente utilizo e prefiro Linux tanto no meu estabelecimento comercial com em minha residência.

Mas Gosto não se discute.
Tela Preta
por gilvane.neo em 14 de agosto de 2010 às 11h30
Você se acha o tal porque usa o computador com uma tela preta e letras brancas, fique sabendo que as gigantes da informática de hoje também utilizaram o computador assim, há décadas atrás, inclusive algumas distros Linux também estão deixando de lado o terminal.

Então não fique se fazendo de superior, computador é para todas as pessoas e não pra uns e outros que se julgam inteligentes demais pra aproveitar os benefícios da evolução.
Não se trata de ser superior! por brunogarcia69
Computador é para todos por gilvane.neo
Interfaces Gráficas!
por brunogarcia69 em 13 de agosto de 2010 às 11h57
Vale lembrar que para quase tudo, também existem inúmeras interfaces gráficas para lidar com usuários e grupos, muito fáceis e intuitivas de usar, pois para os usuários do outro sistema "(é, aquele mesmo)", por limitações de inteligência, só sabem e só se limitam a usar interfaces gráficas!

Logo a sugestão para este artigo e dar também alguns exemplos em cima de algumas interfaces gráficas mais populares para não ter que ficar ouvindo dos espertos usuários do outro sistema: mas linha de comando é muito difícil para mim... uga uga buga buga dardi...