Você não pode definir umask por diretório, é um valor no nível do processo. Se você precisar impedir que outras pessoas leiam arquivos em um diretório, revogue os bits de permissões correspondentes.
Por exemplo, se você tiver um diretório /home/user/directory
com alguns arquivos e diretórios que podem obter permissões como 777 de um processo, defina os bits de permissão de /home/user/directory
para algo como 700. Isso tornará impossível para outros usuários (excluindo a raiz do superusuário) para descer em /home/user/directory
.
Sou paranóico e defino as permissões em /home/user
para 750, para que apenas eu possa ler, escrever e descer no meu diretório pessoal. Isso tem como consequência que pastas como /home/user/Public
não podem ser acessadas por outros, mas eu posso viver com isso.
Por atualização da sua pergunta: ainda assim, você não pode controlar isso no sistema de arquivos (além de usar um tipo diferente de sistema de arquivos como o FAT, que é strongmente desaconselhado), você precisa fazer isso em seu webapp. Se seu webapp está codificado em PHP, você pode mudar o umask na hora usando a função umask
:
<?php
umask(0022);
// other code
?>
Você pode colocar isso em um arquivo de configuração, como o arquivo que contém a senha de conexão com o banco de dados (pensando em aplicativos como o Wordpress).
Lembre-se de que é um valor de processo, alguns servidores da Web permitem que você os configure em seus arquivos de configuração, caso contrário, você poderia modificar os scripts de inicialização para definir a umask desejada. Lembre-se de que as permissões como 755
e 644
são muito perigosas para aplicativos da web, se o código for confidencial, todos poderão lê-lo.