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
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?
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
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:
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
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 (---).
Tags permissions acl linux ubuntu