Este documento mostra como usar o sistema de permissões POSIX ACL. Uma ACL(lista de controle de acesso) é uma lista de permissões associadas a um arquivo ou diretório. Essas permissões permitem que você restrinja o acesso a um determinado arquivo ou diretório por usuário ou grupo.
Compreendendo a ACL POSIX
| permissão | Explicação |
| r | Permissões somente leitura |
| w | Permissões somente para gravação |
| x | Permissões somente de execução |
Um exemplo de uma ACL POSIX básica seria assim:
maria@debian11VM:~$ getfacl permissoes/ # file: permissoes/ # owner: maria # group: maria user::rwx user:joao:rwx user:paulo:--- group::--- mask::rwx other::--- default:user::rwx default:user:maria:rwx default:group::r-x default:mask::rwx default:other::r-x
Visualizar ACLs com getfacl
O comando getfacl exibe a ACL de um arquivo ou diretório. Tem a seguinte sintaxa:
getfacl [OPÇÃO] arquivo
Onde arquivo é o arquivo ou pasta que você está tentando visualizar. As OPÇÃO incluem:
| Opção | Descrição |
|---|---|
| -a/–access | Exibe apenas a lista de controle de acesso a arquivos |
| -d/–default | Exibe apenas a lista de controle de acesso padrão (somente acesso primário), que determina as permissões padrão de quaisquer arquivos/diretórios criados neste diretório |
| -R/–recursive | Exibir ACLs para subdiretórios |
| -p/–absolute-names | Não retire ‘/’ inicial em nomes de caminho |
Exemplos:
#1 Uma simples chamada getfacl teria a seguinte aparência:
maria@debian11VM:~$ getfacl documentos # file: documentos # owner: maria # group: maria user::rwx group::r-x other::r-x
#2 Uma chamada getfacl de forma recursiva listará cada subdiretório ACL separadamente
maria@debian11VM:~$ getfacl -R documentos/ # file: documentos/ # owner: maria # group: maria user::rwx group::r-x other::r-x # file: documentos//avisos # owner: maria # group: maria user::rwx group::r-x other::r-x # file: documentos//contratos # owner: maria # group: maria user::rwx group::r-x other::r-x # file: documentos//contratos/contratos privados # owner: maria # group: maria user::rwx group::r-x other::r-x
Configurando ACLs com setfacl
O comando setfacl permite definir a ACL de um arquivo ou diretório. Este comando é usado como o seguinte
setfacl [OPCAO] COMANDO arquivo
Onde arquivo é um arquivo ou pasta que você está tentando modificar as permissões acl
Comandos e Opções:
| Comando | Função |
| -m/–modify=acl | modifica a(s) ACL(s) atual(is) dos arquivos. Use assim: setfacl -m u/g:usuário/grupo:r/w/x arquivo |
| -M/–modify-file=file | leia entradas ACL para modificar um arquivo. Use assim setfaclt -M arquivo_com_acl arquivo_a_ser_modificado |
| -x/–remove=acl | remove entradas de ACL(s) de arquivos. Use assim setfaclt -x u/g:usuário/grupo:r/w/x arquivo |
| -X/–remove-file=file | remove entradas de ACL(s) de arquivos. Use assim setfaclt -x u/g:usuário/grupo:r/w/x arquivo |
| -b/–remove-all | Remova todas as permissões estendidas de ACL |
Opções comuns para setfacl são os seguintes:
| OPÇÃO | FUNÇÃO |
| -R/–recursive | Recursão através de subdiretórios. Anda por todas as pastas e suas subpastas |
| -d/–default | Aplica modificações às ACLs padrão |
| –test | testa modificações de ACL (mas sem modificar) |
Exemplos de setfacl
#1 Você pode definir os privilégios de acesso de um usuário específico usando o seguinte
maria@debian11VM:~$ setfacl -m u:joao:-wr documentos/lista.txt
#2 Da mesma forma, os privilégios de acesso de um grupo podem ser definidos usando o seguinte
maria@debian11VM:~$ setfacl -m g:adm:rw- documentos/lista.txt
#3 Você pode remover o acesso de um usuário específico usando o seguinte
maria@debian11VM:~$ setfacl -x u:joao documentos/lista.txt
#4 Conceda a um usuário acesso de leitura recursiva a um diretório e a todos os arquivos/diretórios sob ele (observe que o ‘X’ maiúsculo é usado para fornecer permissões de execução apenas para diretórios e não para arquivos):
maria@debian11VM:~$ setfacl -R -m u:joao:r-X documentos
#5 Defina um diretório para que todos os arquivos ou diretórios recém-criados herdem dos diretórios pai:
maria@debian11VM:~$ setfacl -d -m g:adm:r-X documentos/contratos/