Access Control Lists (Português)

Lista de controle de acesso (ACL, do inglês "Access Control List") fornece um mecanismo de permissão adicional e mais flexível para sistemas de arquivos. Ele foi projetado para ajudar com as permissões de arquivo UNIX. A ACL permite conceder permissões para qualquer usuário ou grupo a qualquer recurso de disco.

Status de tradução: Esse artigo é uma tradução de Access Control Lists. Data da última tradução: 2020-04-07. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Instalação

O pacote acl é uma dependência do systemd, e já deve estar instalado.

Habilitar ACL

Para habilitar a ACL, o sistema de arquivos deve ser montado com a opção acl. Você pode usar fstab para torná-lo permanente em seu sistema.

Existe a possibilidade de a opção acl já estar habilitada como opção de montagem padrão no sistema de arquivos. Btrfs faz e os sistemas de arquivos Ext2/3/4 também. Use o seguinte comando para verificar a opção de partições ext* formatadas:

# tune2fs -l /dev/sd''XY'' | grep "Default mount options:"
Default mount options:    user_xattr acl

Verifique também se a opção de montagem padrão não está substituída; nesse caso, você verá noacl em /proc/mounts na linha relevante.

Você pode definir as opções de montagem padrão de um sistema de arquivos usando o comando tune2fs -o opção partição, por exemplo:

# tune2fs -o acl /dev/sdXY

Usar as opções de montagem padrão em vez de uma entrada em /etc/fstab é muito útil para unidades externas, essa partição será montada com a opção acl também em outras máquinas Linux. Não há necessidade de editar o /etc/fstab em todas as máquinas.

Nota:
  • acl é especificado como opção de montagem padrão ao criar um sistema de arquivos ext2/3/4. Isso está configurado em /etc/mke2fs.conf.
  • As opções padrão de montagem não estão listadas em /proc/mounts.

Uso

Definir ACL

A ACL pode ser modificada usando o comando setfacl.

Dica: Você pode listar as alterações de permissão de arquivo/diretório sem modificar as permissões (ou seja, "dry-run") anexando a opção --test.

Para definir permissões para um usuário (usuário é o nome do usuário ou o ID):

# setfacl -m "u:usuário:permissões" <arquivo/diretório>

Para definir permissões para um grupo ( é o nome ou o ID do grupo):

# setfacl -m "g:grupo:permissões" <arquivo/diretório>

Para definir permissões para outras pessoas:

# setfacl -m "other:permissões" <arquivo/diretório>

Para permitir que todos os arquivos ou diretórios recém-criados herdem entradas do diretório pai (isso não afetará os arquivos que serão copiados para o diretório):

# setfacl -dm "entrada" <diretório>

Para remover uma entrada específica:

# setfacl -x "entrada" <arquivo/diretório>

Para remover as entradas padrão:

# setfacl -k <arquivo/diretório>

Para remover todas as entradas (as entradas do dono, grupo e outras são mantidas):

# setfacl -b <arquivo/diretório>

Mostrar ACL

Para mostrar permissões, use:

# getfacl <arquivo/diretório>

Exemplos

Defina todas as permissões para o usuário no arquivo chamado abc:

# setfacl -m "u:joao:rwx" abc

Verifica permissões:

Altera permissões para o usuário :

# setfacl -m "u:joao:r-x" abc

Verifica permissões:

Remove todas as entradas estendidas ACL:

# setfacl -b abc

Verifica permissões:

Saída do comando ls

Você notará que há uma ACL para um determinado arquivo porque ele exibirá um (sinal de mais) após as permissões do Unix na saída de ls -l.

$ getfacl /dev/audio
getfacl: Removing leading '/' from absolute path names
# file: dev/audio
# owner: root
# group: audio
user::rw-
user:solstice:rw-
group::rw-
mask::rw-
other::---

Concedendo permissões de execução para arquivos privados a um servidor web

A técnica a seguir descreve como um processo como um servidor web pode receber acesso a arquivos que residem no diretório inicial de um usuário, sem comprometer a segurança, fornecendo acesso ao mundo inteiro.

A seguir, presumimos que o servidor web é executado como usuário e concedemos acesso ao diretório "home" do /home/geoffrey.

A primeira etapa é conceder permissões de execução para o usuário :

# setfacl -m "u:http:--x" /home/geoffrey

Como o usuário agora pode acessar arquivos em /home/geoffrey, outros não precisam mais acessar:

# chmod o-rx /home/geoffrey

Use para verificar as alterações:

Como mostra a saída acima, o não tem mais permissões, mas o usuário ainda pode acessar os arquivos, portanto, a segurança pode ser considerada aumentada.

Nota: Pode ser necessário conceder acesso de gravação para o usuário http em diretórios e/ou arquivos específicos:
# setfacl -dm "u:http:rwx" /home/geoffrey/project1/cache

Veja também

gollark: We *did* ship them large quantities of high-quality apioforms.
gollark: Why would it *not* work? Are you unfamiliar with social nanoscale choice theory?
gollark: Suuuure.
gollark: But I suppose I won't stop you as long as you just annoy LyricTech™.
gollark: Actually, we used exploits in Arrow's theorem to make GTech™ subplanck monitoring outposts outvote all people ever in these votes if necessary.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.