Estou tentando definir permissões padrão em minha estrutura de diretórios usando acl
. Eu gostaria de ter as seguintes permissões padrão para diretórios e arquivos, respectivamente:
drwx--x---
-rw-r-----
mas quando eu defino permissões padrão apenas group
para x
:
setfacl -R -d -m g::x my_dir
então os diretórios recém-criados têm as permissões desejadas, mas os arquivos recém-criados têm -rw-------
em vez de -rw-r-----
. Em outras palavras, estou tentando remover r
a permissão dos diretórios, preservando r
a permissão dos arquivos.
Como posso conseguir isso?
Responder1
As ACLs Linux/Solaris não suportam isso. Você não pode definir ACLs padrão diferentes para arquivos e diretórios.
Ter diretórios que podem ser percorridos, mas cujo conteúdo não pode ser listado (executáveis, mas não legíveis) raramente é útil. O fato de funcionar é um acidente histórico. Sim, ocasionalmente pode ser útil – mas você realmente precisa disso? (Você pode querer fazer isso como uma pergunta separada.)
Se você realmente precisa de diretórios e arquivos com permissões diferentes, aqui estão algumas possibilidades que você pode considerar:
- Faça com que seu aplicativo altere a propriedade dos arquivos que ele cria, em vez de depender de propriedades intrínsecas do sistema de arquivos.
Torne tudo privado por padrão (
setfacl -d -m group:mygroup:X
) e use uma das sugestões emPermissão Group + rx apenas em diretórios usando ACL?:- Exponha arquivos públicos de grupo por meio de montagens de ligação, em vez de diretamente.
- Observe a árvore com o inotify e execute
setfacl
novos arquivos regulares.
Responder2
Parece que você não pode fazer isso nem com setfacl
nem umask
, pois ambos não parecem permitir padrões separados para arquivos e diretórios.Veja esta pergunta semelhante para outras opções. Se você quiser forçar algum aplicativo a criar diretórios sem permissão de leitura e arquivos, você pode modificá-lo ou tentar LD_PRELOAD dado apenas um arquivo binário (embora escrever uma lib para isso possa ser um pouco exagerado).