ACL - Implementando permissões de arquivos e diretórios personalizados

Publicado por Daniel Zaia Manzano em 18/07/2014

[ Hits: 12.103 ]

 


ACL - Implementando permissões de arquivos e diretórios personalizados



Como a maioria dos usuários de GNU/Linux já sabe, o sistema do pinguim utiliza um sistema de permissionamento de arquivos e diretórios muito robusto, limitando um inode a permissões para o dono do inode, o grupo dono e demais usuários.

Porém, é possível que se estabeleçam permissões personalizadas por meio da criação de ACLs (Access Control List), conforme o exemplo a seguir.

Neste contexto, tenho uma máquina chamada "debian" e 2 usuários: "daniel" e "teste".

Primeiramente, criarei o diretório /home/daniel/teste:

mkdir /home/daniel/teste
touch /home/daniel/teste/arquivo_daniel.txt
ls -lh /home/daniel/teste/
total 0
-rw-r--r-- 1 daniel daniel 0 Jul 14 00:02 arquivo_daniel.txt


ls -ld /home/daniel/teste/
drwxr-xr-x 2 daniel daniel 4096 Jul 13 23:38 /home/daniel/teste/

Em seguida, vou utilizar o comando getfacl para visualizar todas as permissões do diretório /home/daniel/teste, tanto as permissões normais, quanto ACLs:

getfacl /home/daniel/teste/
getfacl: Removing leading '/' from absolute path names
# file: home/daniel/teste/
# owner: daniel
# group: daniel
user::rwx
group::r-x
other::r-x


Logado com o usuário "teste", tentaremos criar um arquivo em /home/daniel/teste:

touch /home/daniel/teste/arquivo_teste.txt
touch: não foi possível tocar "/home/daniel/teste/arquivo_teste.txt": Permissão negada

Agora, vamos incluir uma ACL por meio do comando setfacl, permitindo que o usuário "teste" tenha poderes totais no diretório /home/daniel/teste:

setfacl -m u:teste:rwx /home/daniel/teste

Legendas:
  • -m :: Modifica uma ACL existente ou cria ela, se não existir.
  • u:teste:rwx :: Indica a ACL para o usuário "teste", com as permissões de leitura, escrita e execução, respectivamente.

É possível perceber o "+" na saída do comando ls, após a criação da ACL. Este sinal indica justamente a existência de uma ACL configurada para este diretório, com permissões totais para o usuário "teste", além das permissões normais, e é visível por meio do comando getfacl:

ls -ld /home/daniel/teste/
drwxrwxr-x+ 2 daniel daniel 4096 Jul 13 23:41 /home/daniel/teste/

getfacl /home/daniel/teste/ getfacl: Removing leading '/' from absolute path names
# file: home/daniel/teste/
# owner: daniel
# group: daniel
user::rwx
user:teste:rwx
group::r-x
mask::rwx
other::r-x


Após a criação da ACL, logaremos como usuário "teste" e tentaremos novamente criar o arquivo arquivo_teste.txt em /home/daniel/teste:

touch /home/daniel/teste/arquivo_teste.txt
ls -lh /home/daniel/teste/ total 0
-rw-r--r-- 1 daniel daniel 0 Jul 14 00:02 arquivo_daniel.txt
-rw-r--r-- 1 teste  teste  0 Jul 13 23:41 arquivo_teste.txt


Observações:
  • O comando setfacl também possui uma opção --set, porém, esta opção sobrescreve quaisquer regras de ACL criadas previamente. Prefira utilizar a opção -m;
  • Os comandos getfacl e setfacl são providos pelo pacote acl, em sistemas Debian e derivados;
  • Para maiores informações, consulte man getfacl e man setfacl.

Outras dicas deste autor

Releitura do arquivo "/etc/fstab" sem reiniciar a máquina

Debian - Versão da distribuição

Alterar a cor da fonte (e a cor de fundo) no console

type - Determinar o tipo de um comando

Como fazer para que comandos não sejam gravados no histórico

Leitura recomendada

Tunando o sistema de arquivos - entendendo o journal do EXT3

Estendendo, à quase eternidade, a vida útil do SD card no Raspberry Pi

Clone seu HD, compactando e visualizando a cópia em tempo real com o comando dd

Resolvendo o problema de unidade ausente ou não pronta, após atualização do Ubuntu

Montando NTFS (inclusive de XP) no Linux

  

Comentários
[1] Comentário enviado por vinipsmaker em 18/07/2014 - 01:26h

Está aí algo que eu não sabia, mesmo usando o GNU/Linux por muitos anos. Valeu por compartilhar. Vai para os favoritos.

[2] Comentário enviado por wluisaraujo em 18/07/2014 - 11:11h

Boa Dica maninho, Parabéns!

[3] Comentário enviado por DarkLinnux em 23/11/2014 - 11:37h

Gostei =)

[4] Comentário enviado por devtiagofranca em 23/05/2021 - 21:11h


Top demais. Parabéns



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts