configuração de permissões padrão com setfacl

3

Estou tentando definir permissões padrão na 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 defino permissões padrão para group para x apenas:

setfacl -R -d -m g::x my_dir

os diretórios recém-criados têm minhas permissões desejadas, mas os arquivos recém-criados têm -rw------- em vez de -rw-r----- . Em outras palavras, estou tentando remover a permissão r dos diretórios, preservando a permissão r nos arquivos.

Como posso conseguir isso?

    
por Martin Vegter 11.05.2014 / 12:55

2 respostas

4

ACLs Linux / Solaris não suportam isso. Você não pode definir diferentes ACLs padrão para arquivos e diretórios.

Ter diretórios que podem ser percorridos mas cujo conteúdo não pode ser listado (executável, mas não legível) raramente é útil. O fato de que funciona é um pouco de um acidente histórico. Sim, ocasionalmente pode ser útil - mas você realmente precisa disso? (Você pode querer fazer isso como uma questão 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 criados, em vez de confiar nas propriedades intrínsecas do sistema de arquivos.
  • Tornar tudo privado por padrão ( setfacl -d -m group:mygroup:X ) e usar uma das sugestões em Agrupar + permissão rx somente em diretórios usando ACL? :

    • Exponha arquivos públicos-de-grupo por meio de montagens de ligação em vez de diretamente.
    • Assista a árvore com inotify e execute setfacl em novos arquivos regulares.
por 12.05.2014 / 02:25
3

Parece que você não pode fazer isso com setfacl nem umask , já que os dois não parecem permitir padrões separados para arquivos e diretórios. Veja essa 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 um lib para isso possa ser um pouco exagerado).

    
por 11.05.2014 / 14:17