Funktioniert Samba gut mit Windows, wenn Namen aktiviert sind, bei denen zwischen Groß- und Kleinschreibung unterschieden wird?

12

Ich möchte eine * nix Samba-Freigabe haben, auf die Windows-Clients zugreifen können.

Samba hat eine Option zum Aktivieren oder Deaktivieren der Groß- und Kleinschreibung von Dateinamen. Normalerweise ist dies für den Windows-Zugriff deaktiviert, sodass fred == FRED = fReD.

Dies führt jedoch zu einem Hauptproblem, AFAICT:

  • Unter Unix erstellen Sie zwei Ordner mit den Namen "RODDY" und "roddy".
  • Unter Windows werden beide Ordner angezeigt, aber ...
  • Wenn Sie eines von Windows löschen / umbenennen / öffnen, können Sie eines von beiden löschen / umbenennen. Sie haben keine Möglichkeit zu wissen, welche! .

Meine Frage ist also, wie sich Samba unter Windows verhält, wenn das Flag für die Groß- und Kleinschreibung auf "ON" gesetzt ist. Kann ein Benutzer weiterhin beide Ordner sehen und Dateivorgänge auf konsistente Weise ausführen?

Roddy
quelle

Antworten:

12

Es sollte okay sein. Windows Explorer zeigt die Groß- und Kleinschreibung der Dateinamen korrekt an. Ich benutze dies in meiner smb.conf, um sicherzustellen, dass das, was ich im Explorer eingebe, das ist, was Samba verwendet (ich setze all diese pro Freigabe):

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

Ich habe einen Schnelltest durchlaufen (Samba 3.0.24 im Backend, WinXP im Frontend). Dateien wurden über eine SSH-Sitzung auf dem Samba-Server erstellt.

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

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

Danach habe ich mein zugeordnetes Laufwerk nach dem Testverzeichnis durchsucht. Ich kann die Verzeichnisse "test1" und "TEST1" sehen. Ich öffnete "test1" und sah die "foo" -Datei. Ich öffnete "TEST1" und sah die "Bar" -Datei. So weit, ist es gut.

Dann ging ich zurück zum Testverzeichnis und benannte im Explorer-Fenster TEST1 in TEST2 um. Windows flippte leicht aus - es benannte den Ordner um und zeigte dann BEIDE Ordner als TEST2 an - anscheinend wurden beide Ordner umbenannt. Aber im SSH-Terminal überprüfte ich:

$ ls
test1 TEST2

Also hat Windows die Datei umbenannt und Samba hat den Dateinamen korrekt erhalten. Als ich im Explorer-Fenster F5 drückte, um den Ordnerinhalt zu aktualisieren, wurde die Anzeige geändert, um die richtigen Ordnernamen anzuzeigen.

Vorsichtsmaßnahme: Linux-Dateisysteme erlauben einige Zeichen, die Windows nicht zulässt (wie ":"). Samba hat eine "Name Mangling" -Option , um diese Dateinamen in etwas zu verwandeln, das Windows gefallen wird. Wenn ich beispielsweise in meinem SSH-Fenster eine Datei mit dem Namen "FA: 23" erstelle, ändert Samba den Namen in "F7T4H0 ~ F", und dies wird im Explorer-Fenster angezeigt.

Quacksalber
quelle
Beachten Sie, dass Sie mit einem Windows 95-Client nicht auf Verzeichnisse in Freigaben zugreifen können, wenn die case sensitiveOption aktiviert ist. Sie sollten autoin diesem Fall die Option verwenden.
Devius
Angenommen, Sie haben zwei Ordner in Ihrem Unix-Dateisystem: Test1 und Test1. Welchen Ordner sieht ein Benutzer in Windows? Kann ich in Samba sicherstellen, dass, wenn ein Ordner Test1 existiert und jemand unter Unix versucht, einen Ordner Test1 zu erstellen, dieser automatisch mit Test1 zusammengeführt wird, sodass Windows-Benutzer immer alle Dateien sehen können? Meiner Erfahrung nach können Windows-Benutzer nicht beide Ordner sehen, wenn Test1 und Test1 vorhanden sind, sondern nur einen.
Erik
@Erik Normalerweise werden beide angezeigt. Windows versteht die Groß- und Kleinschreibung auf allen Ebenen und hat sie tief in seine Dateisysteme implementiert. Ich habe es aber nicht versucht.
Tiberiu-Ionuț Stan
1

Die Optionen, die für mich gearbeitet haben, sind unten:

preserve case           = yes
short preserve case     = yes
surajmohan
quelle