Vamos utilizar ACL’s aqui para gerenciar permissões no Linux de forma prática. Primeiramente é preciso verificar se o kernel que está sendo utilizado é compatível com ACL’s. Para isso iremos utilizar os seguintes comandos:
root@debian:~# grep -i acl /boot/config-$(uname -r)
No comando acima temos um GREP listando tudo sobre acl dentro do arquivo config-Seu-Kernel, pois o comando uname -r irá retornar a versão do kernel do sistema. Observa-se que o recurso de ACL’s está disponível no kernel, porém isso não basta, precisamos agora instalar as ferramentas de administração de ACL no debian ou em outras distros que você queira.
Instalando ferramentas de administração de ACL
root@debian:~# apt-get update
root@debian:~# apt-get install acl
Habilitando ACL na partição que vai ser utilizada
Agora é preciso habilitar o recurso de ACL na partição que se deseja utilizar. Edite o arquivo /etc/fstab, adicione a string “acl” nas opções do sistema de arquivo desejado:
root@debian:~# vim /etc/fstab
BLKID para facilitar a identificação do disco:
Se você ficar na dúvida sobre a partição que vai ativar ACL, veja que o debian monta as partições pelo UUID. Se estiver em dúvida sobre os UUID’s de sua partições basta utilizar um dos comando abaixo:
root@debian:~# blkid
root@debian:~# blkid | grep -i sda1
root@debian:~# blkid /dev/sda1
root@debian:~# ls -alh /dev/disk/by-uuid/*
É importante observar que se o sistema de arquivos (partição) já está montado, deve-se reinciar o sistema ou simplesmente remontar a partição:
root@debian:~# mount / -o remount,acl
Se não ouve nenhum erro durante os processos anteriores então estamos prontos para iniciar com a implementação de ACL’s
Entendendo e Configurando ACL
Imagine agora que você tenha um diretório e quer que dois grupos diferentes tenham permissões também diferentes sobre esse diretório, ou mesmo personalizar dois usuários para permissões diferentes. Vamos trabalhar essa situação.
Utilize o ROOT para criar uma pasta no diretório /home de sua máquina e defina as permissões como 700, assim somente o ROOT tem acesso a esse diretório:
root@debian:~# mkdir cebolinha
root@debian:~# chmod 700 cebolinha
Crie dois usuários como especificado abaixo:
root@debian:~# adduser kiko
root@debian:~# adduser chaves
Obs: Quando criamos os usuário “kiko” e “chaves” um grupo “kiko” e um grupo “chaves” foi criado.
Agora vamos criar um grupo com o nome “madruga” e inserir o usuário “chaves” no grupo madruga:
root@debian:~# addgroup madruga
root@debian:~# addgroup chaves madruga
Observe que o diretório “cebolinha” que criamos em /home/cebolinha está com permissõe apenas para o ROOT. Porem através de ACLs nós iremos dar permissões para que o usuário kiko possa acessar com permissões de “LEITURA E EXECUÇÃO” e para os membros do grupo “madruga” daremos permissões de “LEIURA E ESCRITA”. Mãos a Obra:
Primeiramente vamos tentar acessar o diretório /home/cebolinha com o usuário kiko e com o usuário chaves
root@debian:~# su kiko
root@debian:~# cd /home/cebolinha
Você deverá receber uma mensagem que não tem permissão
root@debian:~# exit
root@debian:~# su chaves
root@debian:~# cd /home/cebolinha
Você deverá receber uma mensagem que não tem permissão
root@debian:~# exit
Vamos então aplicar uma ACL simples para que o usuário “KIKO” possa ter Leitura e Execução no diretório cebolinha :
root@debian:~# setfacl -m u:kiko:rx /home/cebolinha/
root@debian:~# su kiko
root@debian:~# cd /home/cebolinha
Veja que agora você pode ler o que tem dentro do diretório cebolinha (tente um ls -lha, tente criar um arquivo e verá que não tem permissão para isso)
Vamos então aplicar uma ACL simples para que os membros do grupo “MADRUGA” possam ter Leitura Escrita e Execução no diretório cebolinha:
root@debian:~# setfacl -m g:madruga:rwx /home/cebolinha/
root@debian:~# su chaves
root@debian:~# cd /home/cebolinha
Veja que agora você pode ler o que tem dentro do diretório cebolinha (tente um arquivo e depois ls -lha)
IMPORTANTE SABER
Se você executar um ls no /home você verá que agora o diretório “CEBOLINHA” está marcado com um sinal de “+” no campo de permissões, isso acontece porque o diretório “CEBOLINHA” está com ACL configurada. Se você que ver detalhes das pemissõe especiais atribuídas ao diretório que está com ACL configurada basta utilizar os comandos abaixo:
root@debian:~# getfacl /home/cebolinha/
Observem que ACL é um mundo dentro do linux, mas a intenção aqui é apenas ajudar no entendimento inicial. Lembrando que aqui não falei da remoção de ACLs, mas em breve teremos esse complemento