O Samba suporta algo chamado bloqueio oportunista.
Quando um cliente quer ler um arquivo e ninguém está gravando o arquivo, o Samba dará ao cliente um bloqueio de leitura. Isso permite que o cliente armazene dados em cache sem precisar lê-los repetidamente no servidor. Se outro cliente quiser gravar no arquivo, o Samba emitirá uma solicitação de "bloqueio de bloqueio" para o cliente com o bloqueio, para que ele não seja mais armazenado em cache.
Da mesma forma, quando um cliente quer gravar um arquivo e ninguém mais está acessando o arquivo, o Samba dará ao cliente um bloqueio de gravação. Isso permite que ele armazene em buffer gravações, leituras de cache e assuma que pode ler suas próprias gravações sem ter que incomodar o servidor. Se outro cliente quiser ler ou gravar no arquivo, o Samba emitirá uma solicitação de "bloqueio de bloqueio" para o cliente com o bloqueio, forçando-o a liberar todas as gravações em buffer e parar o armazenamento em buffer e o armazenamento em cache.
O que está acontecendo é que a máquina do Windows mantém um bloqueio de gravação. E como você está acessando o arquivo do host (e não através do Samba), o Samba não tem chance de pedir ao cliente para quebrar o bloqueio. Como resultado, o servidor não tem como saber se o conteúdo do arquivo é utilizável ou se o conteúdo real ainda é conhecido apenas pelo cliente. Até que o bloqueio de gravação seja quebrado, o arquivo não pode ser executado.
Você pode, se desejar, configurar o Samba para não usar oplocks para aquele compartilhamento, arquivo, extensão ou o que fizer sentido. Haverá uma perda de desempenho, pois o armazenamento em cache e o armazenamento em buffer serão reduzidos.