Probleme mit Sonderzeichen wie z.B. Umlauten auf NFS v3 Server unter Windows/Linux

Als Video ansehen
Bereitgestellt über YouTube

Probleme mit Sonderzeichen wie z.B. Umlauten auf NFS v3 Server unter Windows/Linux

Als Antwort auf meine Anleitung zur Installation eines NFS-Servers in Version 3 auf dem Raspberry Pi und der Nutzung unter Windows/Linux erreichte mich folgende Frage:

Danke für das Feedback! Ich habe mir das angeschaut und konnte das Problem nachstellen: Eine Windows 10 VM hat keine Probleme mit Sonderzeichen im Dateiname, die selbst erstellt wurden. Ähnlich sieht es unter Linux aus. Auf dem jeweils anderen Betriebssystem können sie aber nicht dargestellt werden:

Das Grundproblem ist: Windows unterstützt UTF-8 nach wie vor nicht durchgehen. Dies hat auch historische Gründe. Windows 1252 ist dort am gängigsten. Ein wirklicher Standard war das ursprünglich nicht. Stattdessen modifizierte Microsoft den ISO-Standard Latin-1 (auch bekannt als ISO 8859-1) für Windows. Unter dem Windows-Dateisystem NTFS wird UTF 16 genutzt, NFS Version 3 ist in ASCII implementiert.

Linux dagegen setzt auf UTF-8, der sich seit längerem als universeller Standard in verschiedenen Bereichen durchsetzt. Bei einem NFS-Server unter Linux der mit Windows genutzt wird, nehmen beide Systeme wenig Rücksicht auf die jeweils unterschiedlichen Zeichensätze des anderen. Zwar werden die Sonderzeichen von Windows nicht zerstört, aber unter Linux eben nur über die Escape-Sequenzen unschön dargestellt.

Lösen lässt sich dieses Problem auf vier Arten, die ich euch im folgenden zeigen möchte.

1. Sonderzeichen vermeiden

Die erste ist zugleich die simpelste, aber effektivste: Sonderzeichen vermeiden. Zwar funktionieren Sonderzeichen mittlerweile an vielen Stellen, was auch der Verbreitung von UTF-8 zu verdanken ist. Würde sämtliche Software UTF-8 nutzen oder zumindest vollständig unterstützen, wären die meisten Probleme gelöst. Ihr müsst euch vor Augen halten: Das Betriebssystem, sämtliche Programme die ihr nutzt, das Dateisystem – all das in der Kette muss den gleichen Zeichensatz sauber implementieren, damit alles funktioniert.

Und selbst dann gibt es noch Stolpersteine: Bereits ein Leerzeichen im Pfad reicht beispielsweise aus, und er muss mit Anführungszeichen maskiert werden. Da heutzutage zunehmend verschiedene Betriebssysteme eingesetzt werden ist auch wichtig, dass nicht überall die gleichen Zeichen erlaubt sind. Vor allem Windows hat eine sehr lange Liste mit Sonderzeichen, die in Pfaden nicht verwendet werden dürfen. Die Meisten davon sind unter Linux und auch Unix kein Problem. Linux verbietet lediglich Schrägstriche – klar, das sind die Trennzeichen für Ordner im Pfad. Und das Nullbyte. Alles andere ist Erlaubt. Ein Doppelpunkt oder Fragezeichen dagegen ist unter Linux gültig, unter Windows nicht.

Am unproblematischsten ist es daher, nur Groß- und Kleinbuchstaben, sowie Minuszeichen und den Unterstrich zu verwenden. Das vermeidet – unabhängig von NFS – auch an anderen Stellen mögliche Fallstricke, die euch Zeit und Nerven kosten. Ich spreche da aus Erfahrung und vermeide mittlerweile selbst Leerzeichen, wann immer möglich.

2. UTF-8 Unterstützung in Windows 10 aktivieren (beta)

Ab Version 1809 hat Microsoft eine Funktion zur Unterstützung von UTF-8 eingebaut. Dadurch nutzt Windows 10 auf NFS-Freigaben UTF-8, wie es Linux bereits tut. Allerdings hat das einen Haken: Es ist eine Beta-Version und diese wird für das gesamte System wirksam! Das kann ggf. vereinzelt zu Problemen mit (insbesondere älteren) Programmen führen. Außerdem ist zu beachten, dass Sonderzeichen, die bisher mit Windows auf dem NFS-Server erstellt wurden, dabei zerstört werden! Windows migriert diese nämlich nicht zu UTF-8, sondern ändert mit dieser Einstellung lediglich den verwendeten Zeichensatz.

Möchtet ihr es dennoch aktivieren, in den Einstellungen unter Zeit und Sprache > Links auf Sprache und anschließend Rechts oben Administrative Sprachoptionen klicken. Im sich öffnenden Fenster unten auf Gebietsschema ändern:

Dort gibt es unten einen Haken bei Beta: Unicode UTF-8 für die Unterstützung weltweiter Sprachen verwenden:

Die Änderungen werden nach einem Neustart wirksam, zu dem Windows anschließend auch auffordert. Danach wird der moderne Standard-Zeichensatz UTF-8 genutzt, wie es Linux bereits tut – Sonderzeichen können fortan unter beiden Betriebssystemen korrekt dargestellt werden.

3. NFS v4.1 nutzen

Es gibt eine Nachfolgeversion 4 von NFS. Sie bietet einige Verbesserungen, unter anderem etwa Authentifizierung auf Benutzer- statt Clientebene. Dadurch ist v4 komplexer geworden. Allerdings hat man auch die Verwendung von Datei- und Ordnernamen in den lokalen Landessprachen verbessert. Die darin enthaltenen Sonderzeichen werden also besser unterstützt. Wer zwingend Sonderzeichen benötigt, kann sich Version 4 näher anschauen.

4. SMB/Samba verwenden

Eine weitere Alternative ist SMB. Ursprünglich war es proprietär nur für Windows verfügbar – wie es genau funktionierte, war geheim. Erst nach einem EU-Urteil bzgl. eines Kartellstreites wurde Microsoft gezwungen, die Spezifikation zu veröffentlichen. Mit Samba gibt es daher eine freie Software, die SMB implementiert. Vereinfacht gesagt kann man damit Windows-Dateifreigaben für Windows unter Linux hosten. Da Samba als Schnittstelle zwischen Windows und Linux entwickelt wurde, kann es die Zeichensätze von Windows unterstützen. Wobei dies nur einen Teil der Funktionen von Samba darstellt.

Samba kann Benutzer authentifizieren und wird daher in vielen NAS-Systemen eingesetzt, um detaillierte Freigaben auf Benutzerebene zu ermöglichen.

Leave a Reply