Como staticsan mencionou, isso soa como um caso em que o umask será corrigido. Se você quiser um controle mais refinado das permissões sem fazer com que TODOS os arquivos criados pelos usuários sejam lidos, você poderia usar listas de controle de acesso para definir um padrão para os diretórios public_html para outros read + execute with
setfacl --set d:o:rx /home*/public_html
Independentemente do que umask esteja definida, se o usuário puder gravar nesse diretório, os padrões do arquivo serão sempre o + r (x para diretórios). Sua saída ls -l será parecida com:
drwxrwxr-x+ 3 user user 4096
2009-12-02 21:30 public_html/
O sinal de mais ao final das permissões mostra que há uma ACL, que você pode visualizar usando
getfacl public_html
Há um trade-off, já que agora as permissões não são óbvias e você precisa getfacl para ver mais detalhes, mas você ganha mais controle sobre exatamente onde deseja que as permissões sejam diferentes do padrão global.