O comando getfacl é um dos comandos padrão do Linux e serve para obter uma lista do controle de acesso de qualquer arquivo no seu sistema.
O utilitário está presente também no FreeBSD e, para cada arquivo, o getfacl exibe uma quantidade de informações a respeito dele.
De acordo com a documentação, ele relaciona os seguintes dados sobre um arquivo:
- nome do arquivo
- nome do usuário que é dono dele
- nome do grupo a que ele pertence
- informações sobre permissões
Vamos ver um exemplo, para clarear o assunto:
getfacl /etc/machine-info
getfacl: Removing leading '/' from absolute path names
# file: etc/machine-info
# owner: root
# group: root
user::rw-
group::r--
other::r--
O resultado do comando, acima, mostra uma mensagem informativa de que ele removeu o primeiro ‘/’ do nome do arquivo — para facilitar a compreensão.
Em seguida, ele mostra o nome do arquivo, seguido pelo usuário e grupo a que ele pertence.
As 3 últimas linhas mostram o ACL (Access Control List), ou seja, a “lista de controle de acesso” — o que cada um (usuário, grupo e outros) pode fazer com o arquivo: (r)ead (ler) e (w)rite (escrever).
No caso do exemplo, o superusuário é o único que pode alterar o arquivo. Os outros podem apenas ler.
Se o getfacl for usado contra um sistema de arquivos que não suporta ACLs, ele exibe as permissões de acesso definidas no modo tradicional de bits de permissão.
Exemplos de uso do getfacl
É possível rodar o programa contra vários arquivos, de uma vez só, usando curingas:
getfacl Documentos/Unigine_Benchmark*
# file: Documentos/Unigine_Benchmark.html
# owner: mclane
# group: mclane
user::rw-
group::r--
other::r--
# file: Documentos/Unigine_Benchmark.html
# owner: justincase
# group: justincase
user::rw-
group::r--
other::r--
É possível usar o comando setfacl para ajustar as permissões, bem como atributos de dono, de seus arquivos.
No exemplo acima, observe que o primeiro arquivos pertence ao usuário ‘mclane’.
Vamos dar permissões de leitura e escrita dele ao usuário ‘justincase’. Veja como:
setfacl -m u:justincase:rw- Unigine_Benchmark.html
getfacl Unigine_Benchmark.html
Veja o rsultado, na 5a linha:
# file: Unigine_Benchmark.html
# owner: mclane
# group: mclane
user::rw-
user:justincase:rw-
group::r--
mask::rw-
other::r--
Se você tiver “permissão negada” para ajustar as permissões de um arquivo com o setfacl, execute com privilégios administrativos.