As ACLs permitem que mais de uma pessoa e mais de um grupo recebam permissões. Por exemplo, você pode ter uma equipe de SA e uma equipe de DBA. Você deseja conceder acesso de "leitura + gravação" às SAs a um arquivo, mas os DBAs apenas acessam o acesso. Como um arquivo só pode ter um proprietário de grupo, isso é difícil de fazer. Mas com ACLs é fácil.
As implementações doACL são específicas do sistema de arquivos. Normalmente, eles estão associados a inodes. por exemplo,
$ echo test > file
$ setfacl -m g:dbus:rw file
$ getfacl file
# file: file
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--
Aqui podemos ver que há duas permissões de grupo definidas no arquivo, com permissões diferentes.
Vamos fazer um hardlink entre os arquivos (nomes de arquivos diferentes, o mesmo inode) e ver os resultados:
$ ln file file2
$ getfacl file2
# file: file2
# owner: sweh
# group: sweh
user::rw-
group::r--
group:dbus:rw-
mask::rw-
other::r--
Portanto, criamos um vínculo entre os arquivos, e as ACLs estão disponíveis no novo nome de arquivo, indicando que estão associadas ao inode e não ao nome do arquivo.
As ACLs são diferentes dos atributos estendidos, mas podem ser armazenadas em espaços de nomes xattr. os atributos xattr dependem do sistema de arquivos.