Pode ser a hora da noite, mas isso está me intrigando. Imagine o seguinte.
[root@node1 acltest]# getfacl foo/
# file: foo
# owner: root
# group: testuser
user::rwx
group::r-x
other::---
[root@node1 acltest]# ls -la .
total 24
drwxr-xr-x 3 root root 4096 Feb 9 21:53 .
drwxr-xr-x 25 root root 4096 Feb 9 21:54 ..
drwxr-x--- 2 root testuser 4096 Feb 9 21:53 foo
[root@node1 acltest]# setfacl -m m::rwx foo
[root@node1 acltest]# getfacl foo/
# file: foo
# owner: root
# group: testuser
user::rwx
group::r-x
mask::rwx
other::---
[root@node1 acltest]# ls -la .
total 24
drwxr-xr-x 3 root root 4096 Feb 9 21:53 .
drwxr-xr-x 25 root root 4096 Feb 9 21:54 ..
drwxrwx---+ 2 root testuser 4096 Feb 9 21:53 foo
[root@node1 acltest]# su - testuser
[testuser@node1 ~]$ cd /acltest/foo/
[testuser@node1 foo]$ ls -la .
total 16
drwxrwx---+ 2 root testuser 4096 Feb 9 21:53 .
drwxr-xr-x 3 root root 4096 Feb 9 21:53 ..
[testuser@node1 foo]$ touch bar
touch: cannot touch 'bar': Permission denied
Em palavras: eu crio um diretório foo , com o modo 0750 , root como proprietário e testuser como o grupo. ( testuser é o grupo privado de testuser , mas isso não importa.)
O comando getfacl mostra corretamente nenhuma ACL neste diretório e ainda não há máscara. A máscara será definida de acordo com as permissões do grupo se eu adicionar um grupo ou usuário nomeado agora.
Se eu definir explicitamente a máscara para rwx agora, as permissões de grupo, conforme mostrado por ls , também serão alteradas. Eu sei que acontece o contrário (a máscara muda quando as permissões do grupo mudam), mas isso parece intrigante.
Quanto mais intrigante, porque a saída getfacl não mostra as permissões do grupo como rwx , mas - como dito - ls faz.
Qual é o certo? Aparentemente, a saída de getfacl está correta, porque testuser não pode gravar em foo . Como esperado, a propósito, porque eu não concedi ao grupo testuser nenhuma permissão para fazer isso.
Continua. Não posso permitir as permissões de gravação do grupo testuser em foo usando apenas chmod . Eu tenho que definir explicitamente uma ACL usando setfacl -m g:testuser:rwx foo para permitir que testuser toque em foo/bar .
Alguém pode explicar a lógica por trás da diferença nas saídas de getfacl e ls ? Eu sei que pode ser difícil ter permissões normais junto com as ACLs, mas isso parece errado. (Embora eu espere estar faltando algo claramente óbvio;))
Eu já vi Por que o chmod (1 ) no grupo afetam a máscara ACL?