Permissões de arquivos
Quando falamos em permissões de arquivos em Linux, logo imaginamos a utilização do comando chmod, seja com o formato "literal", seja com o formato octal, que definem os três grupos conhecidos de permissões: dono, grupo e outros.
As permissões podem ser habilitadas ou desabilitadas, sendo que podem ser, de leitura (r), de escrita (w) e de execução (x). Quando desabilitadas, as permissões exibem o símbolo - no local onde deveria estar aquela permissão em particular.
Como exemplo, podemos ver a saída do comando ls -l
-rw-r--r-- 1 fulano fulano 260 2008-05-25 17:37 teste
... que indica, pelo primeiro caractere (-) que estamos lidando com um arquivo comum. Os três caracteres seguidos indicam as permissões do dono do arquivo (usuários fulano), nesse caso fulano tem permissão de leitura e escrita, mas não pode executar o arquivo teste.
Os três caracteres seguintes indicam as permissões do grupo dono do arquivo, que não por coincidência tem o mesmo nome do dono. No nosso caso temos permissão de leitura, somente.
Os últimos três caracteres indicam as permissões dos usuários que não o dono ou que não sejam integrantes do grupo dono do arquivo. Que indicam, no exemplo, apenas leitura.
Dessa maneira, podemos indicar para o sistema operacional apenas para essas três "criaturas" do sistemas. Mas e os outros? Como fazer para definir diferentes permissões para usuários ou grupos de usuários? É possível?
Sim, é possível determinar uma permissão para um único usuário do sistema, seja para um arquivo ou diretório. Para isto basta que seja habilitado o suporte a ACL no Linux, inserindo no arquivo /etc/fstab a opção acl no campo options do ponto de montagem que terá o controle de permissões mais refinado. Um bom candidato para tal mudança é a partição onde montamos o diretório /home e um exemplo da linha a ser alterada pode ser o seguinte:
/dev/sda5 /home ext3 acl,defaults 0 0
Feita a alteração podemos executar o seguinte comando como root para remontar o /home:
mount -o remount /home
Dando permissões diferentes para usuários direntes
Digamos que o nosso amigo divide o computador com mais três pessoas que resolveram não usar o mesmo login para usar o micro. Vamos dar nomes aos usuários: josé, maria, joão e roberta.
Imaginemos que o usuário josé gostaria de ceder permissão de leitura e escrita para maria, mas não gostaria que joão pudesse ver o conteúdo do arquivo, coisa que roberta pode fazer.
Como o diretório /home agora tem suporte a acl, josé pode criar seu relatório de trabalho (relatório.odt) no seu diretório Documentos (/home/jose/Documentos/relatório.odt).
Em primeiro lugar podemos verificar como estão as permissões do arquivo, com acl. Para isso usamos o comando getfacl.
getfacl ~/Documentos/relatório.odt
A saída do comando deve ser a seguinte:
getfacl: Removing leading '/' from absolute path names
# file: home/jose/Documentos/relatório.odt
# owner: jose
# group: jose
user::rw-
group::r--
other::r--
Usamos o comando setfacl para determinarmos permissões individuais para usuários ou coletivas para grupos.
Então, para darmos permissão de escrita para a usuária maria no arquivo relatório.odf, devemos executar a seguinte linha de comando:
setfacl -m u:maria:rw ~/Documentos/relatório.odt
Se quisermos dar permissão de escrita e leitura para a usuária maria nos arquivos do diretório existente ~/Documentos/maria e todos os arquivos que nele forem criados, basta usar o comando:
setfacl -dm u:maria:rw ~/Documentos/maria/
E quando não quisermos que maria acesse o diretório com aquelas permissões, podemos retirá-las com o comando:
setfacl -x u:maria ~/Documentos/maria/
Para setarmos permissões para grupos de usuários, devemos substituir o u:nome_de_usuario:premissões por g:nome_do_grupo:permissões
Referências
http://www.suse.de/~agruen/acl/linux-acls/online/
man getfacl
man setfacl
http://www.infowester.com/linmount.php
Por hoje é só.
Saúde e Paz a todos.
No comments:
Post a Comment