acl - permissões avançadas

Download ACL - Permissões Avançadas

If you can't read please download the document

Upload: helio-soares

Post on 10-Sep-2015

217 views

Category:

Documents


0 download

DESCRIPTION

ACL - Permissões Avançadas

TRANSCRIPT

Usando ACL para permisses avanadas no LinuxAlgum um tempo atrs eu me perguntava se s poderiam existir trs permisses nos sistemas Unix-Like, a permisso de dono, grupo e outros, o que me limitava bastante, principalmente quando se tratavam de fileservers (servidores de arquivo). Em um sistema Linux (ou Unix), as permisses de arquivos so definidas pelo modo do arquivo, que contm nove bits que determinam as permisses de acesso ao arquivo, mais trs bits especiais. Este mecanismo permite definir justamente a permisso para os trs tipos de classes de usurios: o proprietrio do arquivo, o grupo e outros. Este mecanismo muito simples, e com uma combinao destes bits, muitas permisses podem ser modeladas.

Utilizvamos Samba na empresa em que trabalhei e precisvamos de mais do que esses trs tipos de permisses de usurios em certas pastas, o Linux ento j no estava me satisfazendo. A necessidade era definir uma permisso para um grupo e outra para outro grupo, mas como fazer isso sendo que s poderia existir apenas um grupo dono daquela pasta ou arquivo?

Eu sabia que o Microsoft Windows j suportava a bastante tempo esse tipo de permisso, desde que a partio do sistema e/ou qualquer outra que ele fosse administrar estivesse formatada em NTFS, ou seja, voc conseguia definir para vrios grupos ou vrios usurios o tipo de permisso que ele exercia naquele diretrio, quantas vezes necessitasse. Um bom exemplo leitura para certos usurios/grupos, leitura e escrita para alguns outros usurios/grupos, negado para os demais, e o que mais necessitar.

Eu precisava fazer isso, pois algumas aplicaes requerem mais permisses do que este modelo que o Unix oferece. Iniciei minha pesquisa em forums e diversos sites (alguns em ingls). Foi ento que encontrei as ACL (Access Control List), um sistema muito interessante onde voc consegue definir qualquer tipo de permisso para qualquer usurio ou grupo. O Linux j suporta nativamente desde o Kernel 2.6. Com ACL podemos ter um modelo mais refinado de permisses. Alm do proprietrio do arquivo, do grupo e de outros, que o Unix nos oferece, usurios e grupos adicionais podem ter o acesso modelado, no sendo identificados pelo sistema, simplesmente como "outros" .

Comecei a testar e isso me surpreendeu bastante, enfim, voc consegue fazer qualquer permisso do mesmo modo que voc faz no Windows. E suportado por parties ReiserFS, Ext2, Ext3, JFS e XFS.

ExplorandoQuando voc executa o comando $ ls -l em uma pasta qualquer que no est com as definies de ACL voc v essa sada:drwxr-xr-x 3 root root 88 2003-09-15 10:07 dhcp3
drwxr-xr-x 2 root root 136 2007-06-01 11:55 dhcpc
drwxr-xr-x 2 root root 144 2005-03-25 00:59 dictionaries-common
drwxr-xr-x 2 root root 88 2006-02-22 18:50 discover.conf.d
Exemplo de sada do ls -l

Observe que o usurio dono o root e o grupo tambm o root, mas no era isso que eu quero que chame a ateno, notem na estrutura da primeira coluna: drwxr-xr-x, significa que d um diretrio, os trs primeiros campos so os privilgios do dono do arquivo, no caso rwx leitura escrita e execuo (para que os diretrios possam ser acessados, obrigatrio ter a opo x), a segunda parte (do quarto ao sexto campo) o grupo, que nesse caso est configurado para somente leitura e execuo (r-x), e a terceira parte (do stimo ao nono campo) so os outros, enfim, qualquer usurio que faa logon nesse computador, tem a mesma permisso do grupo (para esse caso) que leitura e execuo (r-x).

Quando voc instala as ACL e personaliza e refina a configurao de permisses do diretrio, voc v essa sada com o comando $ ls -l:drwxrwxr-x 9 usuariodono grupo 288 2007-09-26 10:10 Pasta1
drwxrwx---+ 2 usuariodono grupo 3208 2007-10-02 17:35 Pasta2
drwxrwx---+ 5 usuariodono grupo 85512 2007-10-03 08:59 Pasta3
drwxr-x--- 2 usuariodono grupo 1448 2007-09-24 17:07 Pasta4
Exemplo de sada do ls -l

Voc pode observar que o primeiro diretrio Pasta1 ainda est com as permisses comuns do Linux, sem ACL. Notem os 2 prximos diretrios, no final, onde mostram as permisses comuns, ainda tem um sinal +, que significa que estes diretrios esto personalizados, ou seja, utilizam ACL. Posteriormente voc ver como saber afinal qual a permisso real para esse arquivo, ou ainda, o que tem por trs desse sinal de + se voc preferir.

Comeando a Instalao das ferramentasPara comear a instalao das ferramentas, primeiro veja qual o kernel do seu sistema, para isso utilize o comando:# uname -a
A sada desse comando deve ser algo parecido com isso:Linux computador 2.6.17.6-slh-up-1 #1 PREEMPT Sun Jul 16 02:05:58 CEST 2006 i686 GNU/Linux.
Reparem que o kernel que estou utilizando (meio velhinho por sinal), o 2.6.17.6. Como dito anteriormente, se o seu kernel for o 2.6, ele j suporta as ACL nativamente, ou seja, no necessita de instalao do mdulo. Entretanto, se seu kernel no for 2.6 ou superior (por exemplo, kernel 2.4) voc dever instalar o mdulo de ACL e recompilar o kernel, o que um pouco difcil e trabalhoso, portanto no abordaremos nesse tutorial.

Agora depois de checado e o seu kernel, voc j pode comear a instalao das ferramentas. Irei me aprofundar mais em distribuies baseadas no debian (apt-get), mas vou comentar sobre distribuies que utilizam urpmi e o yum.

Para instalar as ferramentas de administrao de ACL no debian ou outras distros que utilzam apt-get voc deve utilizar o comando:# apt-get update
# apt-get install acl
Para instalar no mandriva ou outras distros que utilizam o urpmi voc deve utilizar o comando:# urpmi acl
Para instalar no fedora ou outras distros que utilizam o yum voc deve utilizar o comando:# yum install acl
Para instalar no SuSE utilize o comando:# yast2 -i acl
Se voc prefere fazer download das ferramantas e instalar manualmente, voc pode encontrar para download no site http://acl.bestbits.at/download.html

Habilitando ACLDepois que as ferramentas de console para uso do ACL forem instaladas, para comear a utilizao voc deve habilitar a ACL para a partio desejada. Para isso edite o arquivo /etc/fstab, adicione a string "acl" nas opes do sistema de arquivo desejado:# vi /etc/fstab
Veja abaixo a string "acl" em negrito nas opes:# /etc/fstab: filesystem table.
#
# filesystem mountpoint type options dump pass
/dev/sda1 / reiserfs noatime,acl,notail 0 1
/dev/sda2 none swap sw 0 0
Se o seu sistema de arquivos (partio) j est montado, voc pode reinciar o sistema ou simplesmente remontar a partio:# mount / -o remount,acl

Configurando ACLCom a instalao das ferramentas e nenhum erro aps habilitar as ACL para o sistema de arquivos, ento agora vamos colocar a mo na massa.

Supondo que voc tenha um diretrio e necessite que dois grupos tenham permisses diferentes, ou ainda personalizar dois usurios para permisses diferentes, vamos imaginar essa situao.

Primeiro vamos criar uma pasta e alterar os donos dela normalmente como se faz:# mkdir pasta1
# chown user pasta1
# chgrp desenv pasta1
Pronto, criamos o diretrio pasta1 e configuramos para que o usuario "user" seja o dono e o grupo "desenv" seja o grupo dono, agora vamos definir permisses para a pasta:# chmod 750 pasta1
Agora configuramos para que o dono do diretrio (usuario "user") tenha acesso total (rwx), o grupo tenha acesso somente de leitura (r-x) e os outros no tenham nenhum acesso (---) (deny).

Vamos agora refletir, como que eu poderia definir para que mais usurios tivessem controle total (rwx) sendo que eu preciso que o grupo "desenv" fique com permisses de acesso para somente de leitura? Na verdade no existe como, se voc precisa que mais um grupo acesse com controle total (rwx), voc teria que trocar as permisses de acesso do grupo "desenv" para controle total (rwx), e acrescentar usurios que necessitam de controle total no grupo "desenv" e mudar a permisso, de modo que o grupo "desenv" obtenha controle total a pasta. Esse tipo de problema acaba, graas a flexibilidade das ACL.

Personalizando/refinando permisses de arquivo com ACLPara utilizar as ACL vamos usar 2 comandos basicos,setfaclegetfacl, o set para definir e o get para saber quais foram as permisses definidas (ou seja o que tem por trs do +)

Supondo que eu tenha o grupo "edita" e quero que esse grupo tenha controle total para a pasta1, voc deve utilizar o seguinte comando:

Primeiramente vamos criar o diretrio# mkdir pasta1Definir para controle total do grupo e usurio (root), e leitura e execuo para outros# chmod 775 pasta1/Agora vamos executar o comando ls -l para ver o como est sendo exibido:# ls -ltotal 2
drwxrwxr-x 2 root root 1024 2008-05-06 11:41 pasta1

Vamos ento aplicar uma ACL simples para que o grupo edita possa ter execuo total# setfacl -m g:edita:rwx pasta1/Executando o comando ls -l# ls -ltotal 2
drwxrwxr-x+ 2 root root 1024 2008-05-06 11:41 pasta1Reparem que agora existe um + aps os 9 digitos binrios, o que significa que existem permisses extras alm do j permitido por padro.

Vamos pegar o resultado agora com o comando getfacl, ele ir nos mostrar como esto aplicadas as ACL (o que tem por trs do +).# getfacl pasta1/# file: pasta1
# owner: root
# group: root
user::rwx
user:root:rwx
group::rwx
group:edita:rwx
mask::rwx
other::r-xPodemos observar que as ACL foram corretamente aplicadas, de modo que o grupo edita capaz de editar, ler e listar o contedo da pasta1.

Agora essa pasta est com as ACL definidas, portanto, podemos testar, entrando com os usurios bloqueados, usurios que so aceitos somente para leitura, usurios que so aceitos para controle total (leitura e escrita e etc).

Mais exemplosSe necessitar que um usurio tenha apenas permisso de leitura em um determinado arquivo voc pode usar a seguinte sintaxe abaixo:# setfacl -m u:usuario:r-- arquivo.txtSe for um grupo altere para "g:grupo" e assim por diante, infinito o que voc pode fazer com essas ACL.

Configuraes para o SambaPara que o samba consiga interpretar corretamente as ACL voc deve seguir o exemplo abaixo:

Adicione o parmetro map acl inherit = Yes no compartilhamento no qual voc deseja ativar ACL (ou na pasta compartilhada que voc alterou permisses e deseja efetivar as ACL).

Por padro eu crio o meu compartilhamento da maneira descrita abaixo:[compartilhado]
comment = compartilhado
path = /compartilhado
read only = No
create mask = 0777
force create mode = 0777
directory mask = 0777
force directory mode = 0777
map acl inherit = Yes
No esquea depois de alterar as ACL de reiniciar o samba para que ele aplique as configuraes corretas.# /etc/init.d/samba restartDistribuies como fedora, mandriva, openSuSE, pode-se utilizar tambm o um dos seguintes comandos (variando de distribuio pra distribuio):# service samba restart
# service smb restartConclusoO que podemos observar que com as ACL a combinao, personalizao e refinamento necessrio para permisses tornam-se quase infinitas. A forma de organizao bastante malevel e de fcil administrao. Mas, o mais utilizado para isso seria num sistema de um servidor de arquivos, pois um ambiente compartilhado onde se deseja que existam diversos perfis, e um determinado usurio ou grupo no deve ter acesso a alguma pasta.

Em breve estarei escrevendo um outro artigo para que vocs possam fazer as ACL e alteraes direto no seu gerenciador de Janelas (KDE e GNOME) com ferramentas que eles j suportam.