definindo permissões padrão com setfacl

definindo permissões padrão com setfacl

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 grouppara 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 ra permissão dos diretórios, preservando ra 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 setfaclnovos arquivos regulares.

Responder2

Parece que você não pode fazer isso nem com setfaclnem 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).

informação relacionada