O Samba funciona bem com o Windows quando nomes com distinção entre maiúsculas e minúsculas estão ativados?

12

Quero ter um compartilhamento * nix Samba acessível por clientes Windows.

O Samba tem uma opção para ativar ou desativar a distinção entre maiúsculas e minúsculas do nome do arquivo. Normalmente, para acesso ao Windows, isso é desativado, de modo que fred == FRED = fReD.

No entanto, isso leva a uma grande pegadinha, AFAICT:

  • No unix, você cria duas pastas chamadas "RODDY" e "roddy"
  • No Windows, você verá as duas pastas, mas ...
  • Quando você exclui / renomeia / abre um no Windows, pode acabar excluindo / renomeando / etc, qualquer um deles. Você não tem como saber qual! .

Então, minha pergunta é: como o Samba se comporta no Windows se o sinalizador que diferencia maiúsculas de minúsculas está definido como "ON"? Um usuário ainda pode ver as duas pastas e fazer com que as operações de arquivo funcionem de maneira consistente?

Roddy
fonte

Respostas:

12

Deve ficar bem. O Windows Explorer faz um bom trabalho ao exibir a caixa do nome do arquivo corretamente. Eu uso isso no meu smb.conf para garantir que o que digito no Explorer seja o que o Samba usa (defino tudo isso por compartilhamento):

case sensitive = True
default case = lower
preserve case = yes
short preserve case = yes

Fiz um teste rápido (Samba 3.0.24 no back-end, WinXP na frente). Os arquivos foram criados no servidor samba por meio de uma sessão SSH.

$ cd /some/samba/share/path
$ mkdir test
$ cd test

$ mkdir test1 TEST1
$ touch test1/foo TEST1/bar

Depois disso, naveguei pela minha unidade mapeada até o diretório de teste. Eu posso ver os diretórios "test1" e "TEST1". Abri "test1" e vi o arquivo "foo". Abri "TEST1" e vi o arquivo "bar". Por enquanto, tudo bem.

Voltei ao diretório de teste e, na janela Explorer, renomeei TEST1 para TEST2. O Windows ficou um pouco assustado - renomeou a pasta e depois mostrou as duas pastas como TEST2 - parecendo ter renomeado as duas pastas. Mas, no terminal SSH, verifiquei:

$ ls
test1 TEST2

Então o Windows renomeou o arquivo e o Samba obteve o nome do arquivo corretamente. Quando pressionei F5 na janela do Explorer para atualizar o conteúdo da pasta, a exibição mudou para mostrar os nomes de pastas corretos.

Advertência: os sistemas de arquivos Linux permitem alguns caracteres que o Windows não (como ":"). O Samba tem uma opção "mangling name" para transformar esses nomes de arquivos em algo que o Windows gostará. Se eu criar um arquivo chamado "FA: 23" na minha janela SSH, por exemplo, o Samba manipula o nome para "F7T4H0 ~ F" e é isso que aparece na janela do Explorer.

charlatão quixote
fonte
Observe que, com um cliente Windows 95, você não pode acessar diretórios dentro de compartilhamentos quando a case sensitiveopção está ativada. Você deve usar a autoopção neste caso.
Devius #
Suponha que você tenha duas pastas no seu sistema de arquivos unix: Test1 e test1 Qual delas o usuário verá no Windows? Posso garantir no Samba que, se uma pasta Test1 existir, e alguém no unix tentar criar uma pasta test1, ela será automaticamente mesclada ao Test1, para que os usuários do Windows sempre possam ver todos os arquivos? Na minha experiência, o usuário do Windows não pode ver as duas pastas se existirem Test1 e test1, mas apenas uma delas.
Erik
@Erik Normalmente, ambos aparecerão. O Windows entende a distinção entre maiúsculas e minúsculas em todos os níveis e implementou profundamente seus sistemas de arquivos. Não tentei embora.
Tiberiu-Ionuț Stan
1

As opções que funcionaram para mim estão abaixo:

preserve case           = yes
short preserve case     = yes
surajmohan
fonte