Existem algumas opções diferentes disponíveis para você. Aqui estão os que eu posso pensar; cada um tem seus próprios méritos e desvantagens.
-
Você pode definir o mundo para executar bit nos diretórios pai. Dessa forma, qualquer um que conheça o caminho completo para um arquivo poderá acessá-lo, mas ninguém mais poderá. Isso ainda deixa arquivos conhecidos em disputa, a menos que você os proteja com permissões mais restritivas (coisas como ~ / .bashrc, ~ / .gnupg, ~ / .Xauthority e assim por diante podem ser de interesse para um invasor, então seria necessário suas permissões apertadas).
-
Você pode aproveitar as ACLs para fazer a mesma coisa com mais granularidade, por exemplo, somente permitindo que o usuário ou grupo de www-data execute acesso aos diretórios, leia / execute o acesso a qualquer diretório que o servidor da web precise fornecer uma listagem de conteúdo e acesso de leitura aos arquivos que ele deve servir.
-
Você pode adicionar o usuário www-data ao grupo dotancohen e depois revogar as permissões do grupo em tudo, exceto o que você deseja que o Apache possa acessar. Essa é provavelmente a abordagem mais fácil que abre o mínimo possível, mas fica mais complicado se você já estiver usando permissões de grupo para outra finalidade.
-
Ou, como você disse, você poderia mover os arquivos veiculados publicamente para fora do seu diretório pessoal. Esta é definitivamente a configuração mais fácil de acertar em termos de permissões, e é certamente a escolha que eu faria a menos que haja alguma razão convincente para não fazê-lo. Dependendo da sua configuração e necessidades específicas, pode até ser prático usar as permissões 0750 ou 0770 em uma raiz pública com propriedade apropriada, o que restringiria o acesso somente a você e ao servidor web. O próprio proprietário, o grupo www-data e as permissões 0710 em toda a árvore de diretórios provavelmente seriam o mais próximo possível, mas significa que o servidor da Web deve saber o nome completo de todos os arquivos acessados nesse diretório.
Como um aparte, convém considerar a migração para / srv em vez de / var.