O que é ACL ?
A lista de controle de acesso (ACL) fornece um mecanismo de permissão adicional e mais flexível para sistemas de arquivos. Ele foi projetado para auxiliar com permissões de arquivos UNIX. ACL permite que você dê permissões para qualquer usuário ou grupo a qualquer recurso de disco.
Uso de ACL :
Pense em um cenário no qual um usuário em particular não é um membro do grupo criado por você mas ainda assim você quer dar algum acesso de leitura ou escrita, como você pode fazê-lo sem fazer do usuário um membro do grupo, aqui vem na figura Listas de Controle de Acesso, ACL nos ajuda a fazer este truque.
Basicamente, ACLs são usadas para fazer um mecanismo de permissão flexível no Linux.
A partir das páginas man do Linux, ACLs são usadas para definir direitos de acesso discricionários mais finos para arquivos e diretórios.
setfacl e getfacl são usadas para configurar ACL e mostrar ACL respectivamente.
Por exemplo :
getfacl test/declarations.h
Saída:
# file: test/declarations.h# owner: mandeep# group: mandeepuser::rw-group::rw-other::r--
Lista de comandos para configurar ACL :
1) To add permission for usersetfacl -m "u:user:permissions" /path/to/file2) To add permissions for a groupsetfacl -m "g:group:permissions" /path/to/file 3) To allow all files or directories to inherit ACL entries from the directory it is withinsetfacl -dm "entry" /path/to/dir4) To remove a specific entrysetfacl -x "entry" /path/to/file5) To remove all entriessetfacl -b path/to/file
Por exemplo :
setfacl -m u:mandeep:rwx test/declarations.h
Modificar ACL usando setfacl :
Adicionar permissões para um usuário (usuário é o nome de usuário ou ID):
# setfacl -m "u:user:permissions"
Para adicionar permissões para um grupo (grupo é o nome do grupo ou ID):
# setfacl -m "g:group:permissions"
Para permitir que todos os ficheiros ou directórios herdem entradas ACL do directório onde se encontra:
# setfacl -dm "entry"
Exemplo :
setfacl -m u:mandeep:r-x test/declarations.h
Ver imagem abaixo para saída :
setfacl e getfacl
Visualizar ACL :
Mostrar permissões :
# getfacl filename
Observar a diferença entre a saída do comando getfacl antes e depois de configurar as permissões ACL usando o comando setfacl.
Há uma linha extra adicionada para o mandeep do usuário que é destacada na imagem acima.
Output:
Mudar permissões
O comando acima muda as permissões de rwx para r-x
Remover ACL :
Se você quiser remover as permissões ACL definidas, use o comando setfacl com a opção -b.
Por exemplo :
Remover permissões do conjunto
Se você comparar a saída do comando getfacl antes e depois de usar o comando setfacl com a opção -b, você pode observar que não há nenhuma entrada em particular para user mandeep na saída posterior.
Você também pode verificar se há alguma permissão extra definida através do comando ACL usando o comando ls.
check set acl com ls
Observe o primeiro comando de saída na imagem, há sinal extra “+” após as permissões como -rw-rwxr-+, isto indica que há permissões ACL extra definidas que você pode verificar através do comando getfacl.
Usando ACL padrão :
A ACL padrão é um tipo específico de permissão atribuída a um diretório, que não altera as permissões do diretório em si, mas faz com que as ACLs especificadas sejam definidas por padrão em todos os arquivos criados dentro dele. Vamos demonstrar isto : primeiro vamos criar um directório e atribuir-lhe uma ACL por defeito usando a opção -d:
$ mkdir test && setfacl -d -m u:dummy:rw test