Eu quero usarsetfaclpara definir permissões dir
para o grupo de usuários. Eu faço algo assim:
mkdir /Employee
chgrp employeers /Employee
setfacl -m d:g::rwx /Employee
E agora, quando tento criar um arquivo (de usuários que são membros deste grupo), recebo um erro sobre 'Sem permissão'.
root@debian:~# ls -la /Employee
all 8
drwxr-xr-x+ 2 root employeers 4096 maj 21 14:50 .
drwxr-xr-x 23 root root 4096 maj 21 14:50 ..
O que estou fazendo de errado?
Responder1
d
é uma abreviatura de default
. As permissões padrão e reais são independentes. Execute o comando setfacl uma segunda vez sem o d:
, então as permissões deverão funcionar conforme desejado. Presumo que você queira o efeito de ambos os comandos.
A saída de getfacl
pode sugerir esta conclusão para você, por
- mostrando
default:
expandido - mostrando as entradas de controle de acesso originais que não contêm "padrão", indicando que há algo diferente na entrada que você fez.
Por sua vez, a +
saída de ls -l
, mostra que existem ACEs, que permitem acessos que não seriam esperados do modo básico (não há como os ACEs POSIX padrão negarem acessos permitidos pelo modo básico que você vê) [1]. Após o segundo comando setfacl, você notará que o modo básico muda para rwxrwxr-x
. Isso ocorre porque employeers
é o grupo principal do arquivo e setfacl evita a criação de uma entrada duplicada.
[1] As ACLs do Windows e do NFSv4 permitem entradas negadas. Muitos consideram isso uma armadilha de complexidade, incluindo a página de manual do nfs4_acl. Naturalmente, isso significa que a ordem da ACL é significativa. Aparentemente, as GUIs do Windows os alteram para uma ordem "preferencial", com entradas de negação explícitas primeiro e entradas herdadas no final.