Samba fonctionne-t-il bien avec Windows lorsque les noms sensibles à la casse sont activés?

12

Je veux avoir un partage * nix Samba accessible par les clients Windows.

Samba a une option pour activer ou désactiver la sensibilité à la casse des noms de fichiers. Normalement, pour l'accès Windows, cela est désactivé, de sorte que fred == FRED = fReD.

Cependant, cela conduit à un problème majeur, l'AFAICT:

  • Sous Unix, vous créez deux dossiers appelés "RODDY" et "roddy"
  • Sous Windows, vous verrez les deux dossiers, mais ...
  • Lorsque vous supprimez / renommez / ouvrez un sous Windows, vous pouvez finir par supprimer / renommer / etc l'un ou l'autre. Vous n'avez aucun moyen de savoir lequel! .

Donc, ma question est, comment Samba se comporte-t-il sur Windows si l'indicateur sensible à la casse est défini sur "ON"? Un utilisateur peut-il toujours voir les deux dossiers et faire fonctionner les opérations sur les fichiers de manière cohérente?

Roddy
la source

Réponses:

12

Ça devrait aller. L'Explorateur Windows affiche correctement la casse des noms de fichiers. J'utilise ceci dans mon smb.conf pour m'assurer que ce que je tape dans l'Explorateur est ce que Samba utilise (j'ai défini tous ces éléments par partage):

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

J'ai effectué un test rapide (Samba 3.0.24 sur le backend, WinXP sur le front). Les fichiers ont été créés sur le serveur samba via une session SSH.

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

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

Après cela, j'ai parcouru mon lecteur mappé vers le répertoire de test. Je peux voir les répertoires "test1" et "TEST1". J'ai ouvert "test1" et j'ai vu le fichier "foo". J'ai ouvert "TEST1" et j'ai vu le fichier "bar". Jusqu'ici tout va bien.

Ensuite, je suis retourné dans le répertoire de test, et dans la fenêtre de l'Explorateur, renommé TEST1 en TEST2. Windows a légèrement paniqué - il a renommé le dossier, puis a montré LES DEUX dossiers comme TEST2 - semblant avoir renommé les deux dossiers. Mais, dans le terminal SSH, j'ai vérifié:

$ ls
test1 TEST2

Ainsi, Windows a renommé le fichier et Samba a obtenu le nom de fichier correctement. Lorsque j'ai appuyé sur F5 dans la fenêtre de l'Explorateur pour actualiser le contenu du dossier, l'affichage a changé pour afficher les noms de dossier corrects.

Attention: les systèmes de fichiers Linux autorisent certains caractères que Windows n'autorise pas (comme ":"). Samba a une option de "changement de nom" pour transformer ces noms de fichiers en quelque chose que Windows aimera . Si je crée un fichier appelé "FA: 23" dans ma fenêtre SSH, par exemple, Samba modifie le nom en "F7T4H0 ~ F" et c'est ce qui apparaît dans la fenêtre de l'Explorateur.

Quack Quichotte
la source
Notez qu'avec un client Windows 95, vous ne pouvez pas accéder aux répertoires à l'intérieur des partages lorsque l' case sensitiveoption est activée. Vous devez utiliser l' autooption dans ce cas.
devius
Supposons que vous ayez deux dossiers sur votre système de fichiers Unix: Test1 et test1 Lequel un utilisateur verra-t-il dans Windows? Puis-je m'assurer dans Samba que si un dossier Test1 existe, et que quelqu'un sous Unix essaie de créer un dossier test1, qu'il le fusionne automatiquement à Test1 à la place, afin que les utilisateurs de Windows puissent toujours voir tous les fichiers? D'après mon expérience, l'utilisateur Windows ne peut pas voir les deux dossiers si Test1 et test1 existent, mais un seul d'entre eux.
Erik
@Erik Normalement, les deux s'afficheront. Windows comprend la sensibilité à la casse à tous les niveaux et l'a implémenté profondément dans ses systèmes de fichiers. Mais je n'ai pas essayé.
Tiberiu-Ionuț Stan
1

Les options qui ont fonctionné pour moi sont les suivantes:

preserve case           = yes
short preserve case     = yes
surajmohan
la source