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

Publicado por Daniel Zaia Manzano em 18/07/2014

[ Hits: 12.117 ]

 


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

Debug em Shell Scripts

Como selecionar absolutamente todo o conteúdo de um diretório no modo texto

MEncoder - Conversão de vídeos pela linha de comando

Montando imagem ISO

Convertendo imagem JPG em ASCII art

Leitura recomendada

Sistema de quota em ReiserFS

Erro ao inciar sessão gráfica (status 256)

Compartilhamento NFS em Debian

Criando LVM (Logical Volume Manager)

CD de boot para o Fedora Core 2

  

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