Que relacionamentos associam a máscara ACL e a permissão de grupo padrão em um arquivo?

14

Primeiro, crio um arquivo e verifico suas permissões padrão e entradas de ACL:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Em seguida, defino a máscara de ACL no arquivo e, novamente, verifique suas permissões padrão e entradas de ACL:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

Observe que, juntamente com a permissão de grupo padrão da máscara ACL no arquivo, também foi alterada.

  1. Que conexão existe entre a máscara ACL e a permissão de grupo padrão?
  2. Qual é o motivo para o acoplamento de permissões de máscara de ACL e grupo de arquivos? Que lógica está por trás disso?

As distribuições em questão são Debian Linux 7.6 e CentOS 7

EDITAR

Neste ponto, eu só queria compartilhar algumas das minhas descobertas ao pesquisar as relações entre permissões de grupos de arquivos padrão e máscara de ACL. Aqui estão as observações empíricas que encontrei:

  1. A máscara da ACL pode ser alterada:

    1. definindo diretamente com o comando setfacl -m m:<perms> ;
    2. alterando as permissões do grupo de arquivos com o comando chmod (se a máscara ACL já estiver presente; ela pode não estar presente porque é opcional se não houver permissões de usuário ou grupo ACL nomeados no arquivo);
    3. adicionando entrada de ACL de usuário ou grupo nomeado (a máscara será recalculada automaticamente).
  2. A máscara aplicará os direitos de acesso máximos (se houver entradas de ACL com permissões presentes que excedam as permissões de máscara ACL) somente se a máscara for definida diretamente por setfacl ou pela modificação da permissão de grupo de arquivos com chmod -calculado). Qualquer alteração nas entradas da ACL acionará o recálculo automático da máscara da ACL e efetivamente desativará o "modo de execução".

  3. Existem alguns efeitos colaterais que afetam implicitamente as permissões padrão do grupo de arquivos ao usar as ACLs:

    1. A entrada de ACL de usuário ou grupo nomeado aplicada a um arquivo pode alterar a máscara de ACL (aumentar suas permissões) e, portanto, as permissões de grupo de arquivos efetivas. Por exemplo, se você, como proprietário de um arquivo, tiver permissões "rw-r - r - jim students" configuradas nele e também conceder permissão rw ao usuário "jack", também concederá implicitamente permissões rw a qualquer pessoa do grupo "estudantes".
    2. Stricter (menos permissões) A máscara ACL pode remover permanentemente as permissões de grupos de arquivos padrão correspondentes. Por exemplo. se você tiver um arquivo com permissões de grupo de arquivos padrão rw e aplicar uma máscara ACL somente leitura ao arquivo, as permissões do grupo serão reduzidas para somente leitura. Em seguida, se você remover todas as entradas de ACL estendidas (com o comando setfacl -b ), as permissões do grupo permanecerão como somente leitura. Isso se aplica somente a máscara ACL mais rígida, mas a máscara ACL mais flexível (mais permissões) não altera permanentemente a permissão do grupo de arquivos original depois de removida.
por golem 30.07.2014 / 22:40

2 respostas

10

Não faz sentido se as permissões do arquivo unix não concordarem com a entrada acl e vice-versa. Assim, a página de manual ( acl(5) ) diz o que você pede:

CORRESPONDENCE BETWEEN ACL ENTRIES AND FILE PERMISSION BITS

The permissions defined by ACLs are a superset of the permissions specified by the file permission bits.

There is a correspondence between the file owner, group, and other permissions and specific ACL entries: the owner permissions correspond to the permissions of the ACL_USER_OBJ entry. If the ACL has an ACL_MASK entry, the group permissions correspond to the permissions of the ACL_MASK entry. Otherwise, if the ACL has no ACL_MASK entry, the group permissions correspond to the permissions of the ACL_GROUP_OBJ entry. The other permissions correspond to the permissions of the ACL_OTHER_OBJ entry.

The file owner, group, and other permissions always match the permissions of the corresponding ACL entry. Modification of the file permission bits results in the modification of the associated ACL entries, and modification of these ACL entries results in the modification of the file permission bits.

Adendo em resposta à discussão:

What is the reason for coupling ACL mask and file group permissions? What logic does lay behind it?

Uma boa explicação é aqui . Em essência, a máscara é uma

[...] upper bound of the permissions that any entry in the group class will grant.

This upper bound property ensures that POSIX.1 applications that are unaware of ACLs will not suddenly and unexpectedly start to grant additional permissions once ACLs are supported.

In minimal ACLs, the group class permissions are identical to the owning group permissions. In extended ACLs, the group class may contain entries for additional users or groups. This results in a problem: some of these additional entries may contain permissions that are not contained in the owning group entry, so the owning group entry permissions may differ from the group class permissions.

This problem is solved by the virtue of the mask entry. With minimal ACLs, the group class permissions map to the owning group entry permissions. With extended ACLs, the group class permissions map to the mask entry permissions, whereas the owning group entry still defines the owning group permissions. The mapping of the group class permissions is no longer constant.

    
por 30.07.2014 / 23:05
0

Eu finalmente entendi o que exatamente está ocorrendo quando vi este link Manipulando ACLs

Especificamente, as máscaras basicamente substituem e funcionam para substituir USER NOME e todas as permissões GROUP. Isso significa que se você:

  1. ajustar a máscara, você altera as permissões max do grupo,
  2. se você alterar qualquer uma das permissões de grupo com uma máscara presente, a máscara terá o limite máximo de permissões de grupo de todas as permissões de grupo
  3. as permissões de leitura, gravação e execução de grupos são determinadas com base na máscara, se presente

Espero que isso ajude.

    
por 10.12.2018 / 03:05