Samba funziona bene con Windows quando sono abilitati i nomi con distinzione tra maiuscole e minuscole?


12

Voglio avere una condivisione * nix Samba accessibile dai client Windows.

Samba ha un'opzione per abilitare o disabilitare la distinzione tra maiuscole e minuscole del nome file. Normalmente per l'accesso a Windows, questo è disabilitato, quindi fred == FRED = fReD.

Tuttavia, questo porta a un importante gotcha, AFAICT:

  • Su unix, crei due cartelle chiamate "RODDY" e "roddy"
  • Su Windows, vedrai entrambe le cartelle, ma ...
  • Quando si elimina / rinomina / ne si apre uno da Windows, si potrebbe finire per eliminare / rinominare / ecc. Non hai modo di sapere quale! .

Quindi, la mia domanda è: come si comporta Samba su Windows se il flag sensibile al maiuscolo / minuscolo è impostato su "ON"? Un utente può ancora vedere entrambe le cartelle e le operazioni sui file funzionano in modo coerente?

Risposte:


12

Dovrebbe andare bene. Esplora risorse fa un ottimo lavoro nel visualizzare correttamente il nome del caso. Lo uso nel mio smb.conf per essere sicuro che ciò che scrivo in Explorer sia quello che Samba usa (ho impostato tutti questi per share):

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

Ho eseguito un rapido test (Samba 3.0.24 sul backend, WinXP sul fronte). I file sono stati creati sul server samba tramite una sessione SSH.

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

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

Dopo questo, ho sfogliato il mio disco mappato alla directory di test. Riesco a vedere entrambe le directory "test1" e "TEST1". Ho aperto "test1" e ho visto il file "pippo". Ho aperto "TEST1" e ho visto il file "bar". Fin qui tutto bene.

Quindi sono tornato alla directory di test e, nella finestra di Explorer, ho rinominato TEST1 in TEST2. Windows ha dato di matto - ha rinominato la cartella, quindi ha mostrato ENTRAMBE le cartelle come TEST2 - sembra aver rinominato entrambe le cartelle. Ma, nel terminale SSH, ho verificato:

$ ls
test1 TEST2

Quindi Windows ha rinominato il file e Samba ha ottenuto il nome file correttamente. Quando ho premuto F5 nella finestra di Explorer per aggiornare il contenuto della cartella, il display è cambiato per mostrare i nomi di cartella corretti.

Avvertenza: i filesystem Linux consentono alcuni caratteri che Windows non ha (come ":"). Samba ha un'opzione di "modifica del nome" per trasformare quei nomi di file in qualcosa che piacerà a Windows. Se creo un file chiamato "FA: 23" nella mia finestra SSH, ad esempio, Samba modifica il nome in "F7T4H0 ~ F" ed è quello che appare nella finestra di Explorer.


Si noti che con un client Windows 95 non è possibile accedere alle directory all'interno delle condivisioni quando l' case sensitiveopzione è abilitata. È necessario utilizzare l' autoopzione in questo caso.
devius,

Supponi di avere due cartelle sul tuo filesystem unix: Test1 e test1 Quale vedrà un utente in Windows? Posso accertarmi in Samba che se esiste una cartella Test1 e qualcuno su unix prova a creare una cartella test1, invece la unisce automaticamente a Test1, in modo che gli utenti Windows possano sempre vedere tutti i file? Nella mia esperienza, l'utente di Windows non può vedere entrambe le cartelle se esistono Test1 e test1, ma solo una.
Erik,

@Erik Normalmente appariranno entrambi. Windows comprende la distinzione tra maiuscole e minuscole a tutti i livelli e lo ha implementato in profondità nei suoi file system. Non ho provato però.
Tiberiu-Ionuț Stan,

1

Le opzioni che hanno funzionato per me sono di seguito:

preserve case           = yes
short preserve case     = yes
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.