Quero definir ACL, por exemplo. /tmp/test assim:
O proprietário do /tmp/test é o usuário "gaspar", membro do grupo "testgroup".
O usuário "testuser" também é membro do grupo "testgroup" e quero conceder permissões rwx apenas a este usuário + proprietário (usuário "gaspar").
Também preciso definir o mesmo acl para todos os arquivos/diretórios recém-criados em/tmp/test automaticamente.
Quando eu setfacl assim:
setfacl -Rdm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/
getfacl -p /tmp/test/
dá permissões:
# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
group::---
other::---
default:user::rwx
default:user:testuser:rwx
default:group::---
default:group:testgroup:---
default:mask::rwx
default:other::---
E então o usuário "testuser" não tem permissões para a pasta/tmp/test. Você pode sugerir onde está o problema, o que devo corrigir?
Quando eu defino acl assim (sem a opção "d"), o usuário "testuser" tem as permissões que deveria ter, mas obviamente os arquivos/diretórios recém-criados não têm a mesma acl:
setfacl -Rm u:testuser:rwx,g:testgroup:-,o::- /tmp/test/
getfacl -p /tmp/test/
# file: /tmp/test/
# owner: gaspar
# group: testgroup
user::rwx
user:testuser:rwx
group::---
group:testgroup:---
mask::rwx
other::---
Qualquer conselho apreciado!
Responder1
No seu sistema, os arquivos /tmp
desaparecem na reinicialização, certo? Talvez este não seja um bom local para uma solução permanente. Ao definir uma ACL em um diretório que deve aplicar a ACL a todos os novos objetos do sistema de arquivos no diretório, lembre-se de definir duas máscaras: (1) a máscara para o próprio diretório e (2) a máscara padrão (para todos os novos objetos do sistema de arquivos ).
setfacl -m u::rwx,g::r-x,o::--- /tmp/test
setfacl -d -m u::rwx,g::r-x,o::--- /tmp/test
Acima, a -m
opção é a máscara para /tmp/test
, e a -d
opção torna a máscara a máscara padrão para todos os novos objetos do sistema de arquivos no mesmo diretório. É equivalente a 0750. Valores octais também podem ser usados.
O usuário, o grupo e outras máscaras funcionam da mesma maneira: g:groupname:---
ou em combinação: u:username:---,g:groupname:---,o::---
. Não especificar um nome de usuário ou nome de grupo aplica a máscara à propriedade atual do usuário/grupo.
Esteja ciente de que nem todo software conhece ACLs. Por exemplo, nem todos os clientes SFTP/SCP os conhecem ainda.
Responder2
Isso está funcionando como deveria.
man acl
tem o seguinte a dizer sobre ACLs padrão:
TIPOS DE ACL
Cada objeto pode ser considerado como tendo associado a ele uma ACL que rege o acesso discricionário a esse objeto; esta ACL é chamada de ACL de acesso. Além disso, um diretório pode ter uma ACL associada quegoverna a ACL de acesso inicial para objetos criados nesse diretório; esta ACL é chamada deACL padrão.
(ênfase minha)
O que você especificou com sua ACL é que apenas o proprietário possui permissões rwx para o diretório. A ACL padrão no diretório especifica o seguinte:
- todos os arquivos criados nele terão sua ACL definida como a ACL padrão do diretório pai.
- todos os diretórios criados nele terão suas ACL padrão definidas como iguais à ACL padrão do diretório pai
Se você alterar as permissões para o diretório pai ou adicionar uma ACL de grupo/usuário que permita o acesso, todos os arquivos dentro dele funcionarão conforme o esperado.
Responder3
Você precisa entender o que é "user::rwx e default:user::rwx" Seção padrão para herdar ACLs.
Para mais informações você precisa ler "man setfacl" e talvez este documento o ajude:
https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.bpxb200/aclinhe.htm