As permissões de grupo com nome da ACL não substituem as permissões de arquivo. Por quê?

2

Em suma, estou tentando criar um servidor de arquivos com um diretório no qual qualquer usuário em um grupo tenha permissão de leitura / gravação em qualquer arquivo colocado nesse diretório. Minha pesquisa sugere que o ACL é a ferramenta certa para o trabalho, mas me deparei com um problema em que ele não parece se comportar como esperado.

Estou executando o mais recente Ubuntu Server LTS 16.04.1 e assegurei que a ACL esteja habilitada para a unidade em questão.

Neste exemplo, eu tenho dois usuários, alex e usera , e ambos os usuários pertencem ao grupo fileserver . Eu criei um diretório de teste assim:

alex@tstsvr:/$ sudo mkdir -p /srv/fstest/test
alex@tstsvr:/$ sudo chown root:fileserver /srv/fstest/test
alex@tstsvr:/$ sudo chmod 770 /srv/fstest/test

Nesse diretório, alex cria um arquivo de teste simples:

alex@tstsvr:/$ cd /srv/fstest/test/
alex@tstsvr:/srv/fstest/test$ echo 123 > test.txt
$ ll
total 12
drwxrwx--- 2 root fileserver 4096 Dec  7 17:09 ./
drwxr-xr-x 4 root root       4096 Dec  7 16:46 ../
-rw-rw-r-- 1 alex alex          4 Dec  7 17:09 test.txt

Como podemos ver, o arquivo pertence a ele e está em seu grupo. Em seguida, ele configura as permissões de arquivo para 770 e define algumas ACLs para o grupo fileserver para ter rwx permissões no arquivo.

alex@tstsvr:/srv/fstest/test$ chmod 770 test.txt
alex@tstsvr:/srv/fstest/test$ setfacl -m g:fileserver:rwx test.txt
alex@tstsvr:/srv/fstest/test$ ll
total 12
drwxrwx---  2 root fileserver 4096 Dec  7 17:09 ./
drwxr-xr-x  4 root root       4096 Dec  7 16:46 ../
-rwxrwx---+ 1 alex alex          4 Dec  7 17:09 test.txt*

Agora, para usera , tudo parece estar funcionando perfeitamente:

usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw-
group:fileserver:rwx
mask::rwx
other::---

usera@tstsvr:/srv/fstest/test$ cat test.txt
123

Mas, se o usuário alex alterar as permissões para 700 ...:

alex@tstsvr:/srv/fstest/test$ chmod 700 test.txt

Parece que a ACL não pode substituir essas permissões e usera não consegue mais ler esse arquivo:

usera@tstsvr:/srv/fstest/test$ getfacl test.txt
# file: test.txt
# owner: alex
# group: alex
user::rwx
group::rw-          #effective:---
group:fileserver:rwx        #effective:---
mask::---
other::---

usera@tstsvr:/srv/fstest/test$ cat test.txt
cat: test.txt: Permission denied

Meu entendimento é que, como o arquivo tem uma entrada ACL de grupo nomeado, ele substitui essas permissões, mas esse parece não ser o caso.

Eu fiz algo errado, eu sou mal compreendido, ou isso não é realmente possível?

    
por Alexander O'Mara 07.12.2016 / 23:22

2 respostas

2

As permissões posix têm prioridade sobre o seu acl. Então, quando você chmod o arquivo após o acl é dado, você está mudando a máscara acl. Há uma ótima descrição aqui: link

    
por 07.12.2016 / 23:46
2

Depois de aplicar a permissão acl no arquivo, deixe-me explicar o significado dos primeiros 11 caracteres.

-rwxrwx---+ 1 alex alex          4 Dec  7 17:09 test.txt*

o + no final da string de permissão de 10 caracteres indica que há uma configuração de ACL associada a esse arquivo. Interprete o usuário, o grupo e outros sinalizadores "rwx" como:

  • usuário : Mostra as configurações de ACL do usuário.que são as mesmas configurações do arquivo de usuário padrão; rwx.
  • grupo : mostra as configurações atuais da máscara do ACL, não a configuração do proprietário do grupo; rwx
  • outro : mostra a outra configuração da ACL, que é igual à configuração padrão de outro arquivo.não acessa.

Importante

Alterar permissões de grupo em um arquivo com uma ACL usando chmod não altera as permissões do proprietário do grupo, mas altera a máscara da ACL.

Se você quiser alterar a permissão do grupo de proprietários USE setfacl -m g :: arquivo perms

Você usa o comando abaixo para alterar a permissão do proprietário do grupo

chmod 700 test.txt
  • 7 (rwx) altere a permissão do proprietário do arquivo
  • 0 (---) altera a máscara de acl.
  • 0 (---) altera a outra permissão

Altere o comando superior pelo comando abaixo

setfacl -m g::--- text.txt

Depois de aplicar a permissão da ACL, setfacl -mg :: arquivo perms é a única maneira de alterar a permissão do grupo de proprietários.

Permissão de usuário nomeado, grupo nomeado e grupo de proprietários controlada pela máscara de ACL

Você altera a permissão de máscara 0 (---) que o nome do grupo (servidor de arquivos) tem permissão efetiva 0 (---).

    
por 12.04.2017 / 20:54