13.9. Listas de Controle de Acesso

Contribuído por Tom Rhodes.

As Listas de Controle de Acesso (ACLs) estendem o modelo de permissão padrão do UNIX® em um compatível com o modo POSIX®.1e. Isso permite que um administrador aproveite um modelo de permissões mais refinado.

O kernel FreeBSD GENERIC fornece suporte a ACL para sistemas de arquivos UFS. Usuários que preferem compilar um kernel personalizado devem incluir a seguinte opção em seu arquivo de configuração do kernel personalizado:

options UFS_ACL

Se esta opção não for ativada na compilação, uma mensagem de aviso será exibida ao tentar montar um sistema de arquivos com o suporte a ACL. As ACLs dependem de atributos estendidos que são suportados nativamente pelo UFS2.

Este capítulo descreve como ativar o suporte a ACL e fornece alguns exemplos de uso.

13.9.1. Ativando o Suporte a ACL

As ACLs são habilitadas pela flag administrativa de tempo de montagem, acls, que podem ser adicionadas ao arquivo /etc/fstab. As flags de tempo de montagem também podem ser configuradas automaticamente de forma persistente usando-se o tunefs(8) para modificar um superbloco de flags ACLs no cabeçalho do sistema de arquivos. Em geral, é preferível usar flags de superbloco por vários motivos:

  • A flag de superbloco não pode ser alterada por um remount usando mount -u, pois requer um umount completo e um mount completo. Isso significa que as ACLs não podem ser ativadas no sistema de arquivos raiz após a inicialização. Isso também significa que o suporte a ACL em um sistema de arquivos não pode ser alterado enquanto o sistema estiver em uso.

  • Definir a flag de superbloco faz com que o sistema de arquivos seja sempre montado com a ACL ativada, mesmo que não haja uma entrada no fstab ou se os dispositivos forem reordenados. Isso evita a montagem acidental do sistema de arquivos sem o suporte a ACL.

Nota:

É desejável desencorajar a montagem acidental sem que a ACL esteja habilitada porque coisas desagradáveis podem acontecer se ACLs estiverem habilitadas, e então desabilitadas e então reativadas sem limpar os atributos estendidos. Em geral, uma vez que as ACLs forem habilitadas em um sistema de arquivos, elas não devem ser desabilitadas, pois as proteções de arquivos resultantes podem não ser compatíveis com aquelas pretendidas pelos usuários do sistema e ACLs reativadas podem reconectar as ACLs anteriores aos arquivos que tiveram suas permissões alteradas, resultando em um comportamento imprevisível.

Os sistemas de arquivos com a ACL ativada exibirão um sinal de mais (+) nas configurações de permissão:

drwx------  2 robert  robert  512 Dec 27 11:54 private
drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directory3
drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

Neste exemplo, o directory1, directory2 e directory3 estão todos fazendo uso de ACLs, enquanto public_html não está.

13.9.2. Usando ACLs

As ACLs de um sistema de arquivos podem ser visualizadas usando getfacl. Por exemplo, para visualizar as configurações de ACL no arquivo test:

% getfacl test
	#file:test
	#owner:1001
	#group:1001
	user::rw-
	group::r--
	other::r--

Para alterar as configurações de ACL neste arquivo, use setfacl. Para remover todos os ACLs atualmente definidos de um arquivo ou sistema de arquivos, inclua -k. No entanto, o método preferido é usar -b, pois ela deixa os campos básicos necessários para que as ACLs funcionem.

% setfacl -k test

Para modificar as entradas padrões das ACLs, use -m:

% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

Neste exemplo, não havia entradas predefinidas, pois elas foram removidas pelo comando anterior. Este comando restaura as opções padrões e atribui as opções listadas. Se um usuário ou grupo for adicionado e não existir no sistema, um erro de Invalid argument será exibido.

Consulte getfacl(1) e setfacl(1) para maiores informações sobre as opções disponíveis para esses comandos.

All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.