Minha pergunta é semelhante a Como definir as permissões de arquivo padrão em TODOS os arquivos recém-criados no linux - mas difere de maneiras importantes:
Desejo que todos os arquivos criados (ou copiados ou movidos para) em um determinado diretório herdem um conjunto de permissões padrão diferentes do padrão do sistema.
Justificativa: O diretório em questão é o "funil de entrada" para um aplicativo. Os usuários em um grupo colocam os arquivos no diretório e o aplicativo (executando sob outro ID de usuário no mesmo grupo) os leva e os processa. O problema é que o proprietário de cada arquivo colocado no diretório é o usuário que o colocou lá e as permissões são padronizadas como "rw-r - r--"; Eu quero mudar isso para "rw-rw ----". O aplicativo que faz a entrada não pode fazer isso explicitamente, porque o ID do usuário em que o aplicativo está sendo executado não possui o arquivo em questão e as permissões padrão não permitem que o aplicativo faça chmod no arquivo! Obviamente, o usuário poderia fazer um chmod depois de colocar o arquivo lá - mas eu quero manter a "queda" do usuário o mais simples possível. (Essas pessoas não são alfabetizadas em Linux,
umask parece muito poderosa: não quero definir permissões padrão para todos os arquivos criados em qualquer lugar por esses usuários - apenas aqueles criados (ou colocados) neste diretório.
Por favor, informe ... obrigado!
acl
como opção nomount
comando quando o adicionar/etc/fstab
. Será redundante e quando você executar omount
comando na sua resposta, obterá uma saída como esta:/dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)
(vejaacl,acl
no final). Corrija se não estiver errado.Posso oferecer uma solução alternativa: crie um diretório "drop" separado, execute um minijob separado para corrigir as permissões e depois mova os arquivos para o diretório de dados do aplicativo. Você pode usar o incron para isso, para que não haja praticamente nenhum atraso perceptível.
fonte
Eu posso pensar em quatro métodos possíveis de fazer isso:
find $HOME/intake -type f -exec chmod 660 {} \;
, diferentes sistemas têm melhorias de desempenho nisso (como a-exec+
opção)PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"
seria o mais simples.fonte