Como root
, criei /test
e configurei a ACL padrão com
setfacl -m -d dog:rwx /test
Eu verifiquei a saída de getfacl
# file: test
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:dog:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
Agora, como o usuário dog
, se eu tentar criar um diretório em /test
, recebo
mkdir: can't create directory 'sub': Permission denied
Porque isto é assim? Se eu setfacl sem o padrão, getfacl mostra user:dog:rwx
em vez de default:user:dog:rwx
e dog
pode criar um subdiretório lá.
Observação: foi testado dentro de uma VM e o texto na tela da VM não pode ser copiado, por isso adiciono a captura de tela.
Usando
setfacl -m -d ...
esetfacl -m ...
têm comportamentos diferentes quando a ACL é atribuída. As ACLs padrão são usadas para serem herdadas. Portanto, você deve atribuir ACLs quando quiser conceder permissão acl a um usuário e atribuir ACLs padrão para herdar permissões em algum diretório.Explicação
Primeiro, vou ao diretório (como root)
/test
e verifico suas permissões:Como você pode ver, o grupo e outros não têm permissões de gravação por padrão. Vamos dar uma olhada na diferença entre os dois
setfacl
comandos.Usando
setfacl -m guest:rwx /test
Quando executo esse comando (como root), posso ver as seguintes saídas usando os seguintes comandos:
Como você pode ver acima, o diretório agora tem permissões de gravação para o grupo. A propósito, se você remover ACLs usando:
setfacl --remove-all /test
e usar,ls -ld /test
notará que/test
as permissões são revertidas para as anteriores (drwxr-xr-x
).Eu costumava
getfacl -e
imprimir todos os direitos vigentes que são importantes para saber como funcionam as ACLs .Agora vou tentar criar um arquivo no
/test
diretório comguest
eedgar
usuários:Você pode notar que
guest
o usuário foi capaz de criar/test/fuzz
o arquivo, masedgar
não foi. Esse comportamento está correto devido à ACL atribuída aguest
.Usando
setfacl -dm guest:rwx /test
No meu caso a sintaxe
setfacl -m -d guest:rwx /test
não é válida (estou usando openSUSE Tumbleweed). Você também pode usarsetfacl -m d:guest:rwx /test
.Agora, executando o comando com ACLs padrão, tenho o seguinte:
Como você pode ver agora, o
/test
diretório não tem permissões de gravação para o grupo. E ao usar,getfacl ...
entendo que o usuário convidado padrão temrwx
permissões, mas como eu disse antes, elas serão usadas para serem herdadas. Portanto, se você deseja que, no seu caso,dog
o usuário possa gravar no/test
diretório, use:setfacl -m dog:rwx /test
.Sobre ACLs padrão ou ACLs herdadas
/test
comoguest
usuário:only_r
dir e criar um arquivoComo você pode ver acima, consegui alterar para only_r e criar um arquivo, embora as ACLs não tenham permissões de execução e gravação (se um diretório não tiver permissões de execução, não posso
cd
fazê-lo). No entanto, este comportamento está correto porque as permissões do Unix e o proprietáriodrwxr-xr-x+ 2 guest guest
permitem que oguest
usuáriocd
ecreate
os arquivos/test/only_r
edgar
o usuário, tentareicd
criar/test/only_r
algum arquivo: