nov 23

ACL access control lists com Linux, Solaris e FreeBSD (PERMISSÕES AVANÇADAS)

Quando o administrador de Sistema precisa dar permissões restritas a um determinado usuário ou grupos ele precisa pensar muito antes de fazer isso, pois dar permissão a um indivíduo ou grupos faz com que vc pense por diversas vezes se vc esta fazendo a coisa certa. As vezes dar permissões a mais para uma pessoa é necessário alterar toda a estrutura de permissionamento padrão da sua empresa. Imagine que o user1 é dono do diretorio EMPRESA, e o seu grupo dono group1. Vc contratou uma pessoa na sua empresa para trabalhar temporariamente durante alguns dias e depois disso, tchau! Mas vc não pode colocar esse camarada no grupo1 e muito menos alterar o usuário dono. E COM CERTEZA vc nao vai da permissões de controle full para outros, seria abaixar as calças do servidor e trabalhar sem vasilina. Vc teria 2 soluções nesse caso, uma seria criar um grupo para essa pessoa e colocar essa pessoa nesse grupo OU utilizar o seu grupo primario para ser LIGADO ao grupo1 em /etc/group com o uso da @, OU trabalhar sem DÚVIDAS com ACL que define o controle de acesso ao diretorio ou arquivo.

Vamos entender nessa matéria o uso dos comandos setfacl e getfacl do Linux, Solaris e FreeBSD.

As permissões são divididas em 3 classes; “usuário”, “grupo” e “outros” que podem ser configuradas com os bits de forma literal, r (de leitura), w (de escrita) e x (de ENTRADA para diretorio e EXECUÇÃO para arquivos). Mas fora as permissoes padronizadas do estilo UNIX existe também os bits especiais como o SUID que permite que todo usuario possa executar o arquivo como se fosse o proprio dono, SGID que define um bit especial para um diretorio que determina que qualquer usuario que criar qualquer diretorio ou arquivo, receberá por herança o grupo dono do diretorio pai e NÃO o GID(grupo primario do usuário), do usuário e o STICK Bit que coloca uma token de proteção no diretório. As permissões da sua forma literal podem ser alteradas da seguinte maneira:

#chmod u=rwx,g=rx,o=r diretorio/ (forma literal)

#chmod 754 diretorio/ (forma octal)

A forma octal do permissionamento do Linux é representada com valores numéricos baseados na forma de peso dos bits anteriores. R tem peso de 4, W tem peso de 2 e X tem peso de 1. Os bits especiais tb tem suas formas octais, como SUID vale 4, SGID vale 2 e STICK vale 1.

Existe também os bits de ACLs. Que são muito mais restritivas que as permissões padrões do sistema. Se a permissão diz não e as ACLs diz sim, então prevalece o SIM. Existem 2 comandos, o setfacl que define uma ACL e o getfacl que consulta as ACLs do arquivo e diretorio.

O comando setfacl determina e aplica uma acl para o arquivo ou diretorio. O seus flags são -m que aplica novo bit de ACL a nível de usuário, grupo e outros, -x que remove toda entrada de ACL aplicado para o usuario,grupo e outros e mantém o padrão, -b que remove toda a configuração de entrada de ACL que fora aplicado para o diretório ou arquivo antes , -d que aplica somente o padrão de entrada de ACLs e o flag -R que determina se a aplicação será recursiva, ou melhor dizendo, quando é aplicado ao diretorio pai e a todos os subdiretorio e arquivos.

Quando aplicamos uma entrada de ACL em um diretorio ele recebe um sinal de + no final da primeira coluna que representa que as permissões agora possuem uma entrada extendida de ACL no diretorio. Ja o comando getfacl permite verificar as ACLs aplicadas no arquivo e diretorio.

COMO ATIVAR A ACL

O uso de ACLs é restrito a pontos de montagens como a implementação de quotas. É necessário editar o arquivo /etc/fstab (no Linux e FreeBSD), e adcionar na coluna de “opções do mount”, o atributo acl na partição que receberá o uso de acl. Ja no Solaris o uso de ACLs é nativo do sistema.

No Linux

UUID=1b2ae04b-9e42-4ba4-9559-642240e3ebd8 / ext3 relatime,errors=remount-ro,usrquota,acl 0 1

(ou sem uso de UUID)

/dev/sda5 / ext3 relatime,errors=remount-ro,usrquota,acl 0 1

#mount -o remount.rw / ( a raiz vai ser montada novamente com a opção aplicada em fstab ou então reinicie a maquina).

# / was on /dev/sda5 during installationUUID=1b2ae04b-9e42-4ba4-9559-642240e3ebd8 / ext3 relatime,errors=remount-ro,usrquota,acl 0 1

No FreeBSD

/dev/ad0s1f /usr ufs rw,acls 2 2

# sync;sync;reboot ( o sistema vai sincronizar a transferencia dos dados e vai reiniciar)

Aplicando ACL de fullcontrol para o usuario user1:

#setfacl -m u:user1:rwx teste/

NOTA: com o resultado do comando acima o diretorio teste/ receberá um sinal de “+” toda vez que for listado com ls -l.

drwxr-xr-x 2 root root 4096 2009-11-22 10:27 teste/
para
drwxr-xr-x+ 2 root root 4096 2009-11-22 10:27 teste/

Aplicando ACL fullcontrol para usuario user1 e grupo backup:

#setfacl -m u:user1:rwx,g:backup teste/
OU
#setfacl -m user:user1:rwx:group:backup:rwx teste/

# getfacl teste/

# file: teste/
# owner: root
# group: root
user::rwx
user:user1:rwx
group::—
mask::rwx
other::—

Removendo todas as ACLs
#setfacl -b teste/

Comments are closed.

preload preload preload
Powered by Moblie Video for WordPress + Daniel Watrous