O Samba quase certamente fará o que quiser, e com um desempenho razoavelmente razoável. Ele deve ter os controles de segurança necessários para lidar com qualquer caso de uso que você tenha em mente (sua pergunta é um pouco curta sobre detalhes).
É difícil fornecer outras recomendações, já que você não dá uma boa descrição do que precisa fazer e quais são suas restrições. WebDAV provavelmente não é útil; não é nada como um sistema de arquivos POSIX, e se você acha que precisa de um desempenho incrivelmente rápido, provavelmente está querendo algo que funcionará como um sistema de arquivos completo (buscas arbitrárias, esse tipo de coisa) que vai ser doloroso no WebDAV.
Você também não falou sobre o acesso simultâneo a arquivos individuais, o que tem uma strong influência em seu possível espaço de solução. Se apenas um cliente estiver acessando um determinado arquivo de uma só vez, e especialmente se apenas um cliente já estiver atualizando um determinado arquivo, não necessariamente desista de soluções de sincronização periódicas - elas podem fazer uma bom trabalho, nas condições certas.
Por fim, se for principalmente (ou todos) somente leitura, considere fazer com que seus dados acessem níveis mais altos. Em vez de pensar que você tem para ter arquivos, por que não pensar em termos de abstrações úteis específicas do aplicativo? Um exemplo comum disso é o humilde banco de dados SQL - em vez de armazenar dados em arquivos simples e rastejá-los com código customizado, alguns clods inteligentes criaram a ideia de um mecanismo de armazenamento mais especializado e o palavreado necessário para acessá-lo de maneira inteligente. Não é tão flexível quanto um sistema de arquivos, mas (em seu nicho estreito) é uma visão maldita mais rápida. Talvez com um pouco de imaginação, você possa criar uma abstração semelhante para seus dados, o que poderia poupar bastante problemas?