Sonderzeichen in Samba-Dateinamen


18

Wenn Sie Dateien mit Sonderzeichen wie "() ?:" im Dateinamen über Samba bereitstellen, werden die Namen in ein nicht wiedererkennbares Format umgewandelt. Zum Beispiel eine Datei

my_file:_(important).txt

wird angezeigt als

M43J1E~0.TXT

Gibt es eine Möglichkeit, dieses Verhalten zu vermeiden (ohne die Dateien offensichtlich umzubenennen)? Ich gehe davon aus, dass die Zeichenkodierung nicht schuld ist, da mehrere UTF-8-Zeichen gut zu funktionieren scheinen.


Samba Version 2: 3.4.0-3ubuntu5.5 unter Ubuntu 9.10
Matti

3
Das Hinzufügen von "verstümmelten Namen = nein" zu smb.conf löste dieses Problem (danke, Dennis Williamson).
Matti

Antworten:


10

Windows lässt einige Zeichen in Dateinamen nicht zu, die Unix zulässt. Samba "zerfleischt" die Dateinamen, damit sie den Windows-Beschränkungen entsprechen. Sie können die Datei überprüfen /etc/smb.confoder /etc/samba/smb.confsehen, welche Einstellungen vorhanden sind. Verwenden Sie diesen Befehl, um diese Einstellungen und die Standardeinstellungen anzuzeigen:

testparm -vs | less

Um das etwas einzugrenzen:

testparm -vs|grep "case\|mangl"

Weitere Informationen finden Sie auf dieser Seite . Siehe auch ungefähr auf halber Strecke auf dieser Seite (die gleichen Informationen wie beim vorherigen Link).


9

Ich verwende einen freigegebenen Ordner unter OS-X und Windows. Einige Dateien haben das gleiche Problem, da sie in die folgenden Kategorien fallen: Sie verwenden Zeichen im Dateinamen, die von Windows nicht unterstützt werden.

Siehe: http://support.microsoft.com/kb/177506

Es listet die von Windows nicht unterstützten Zeichen in Dateien oder Verzeichnissen auf. Ich vermute, dass Samba beim Auflisten von Dateien und Verzeichnissen die gleiche Liste von Zeichen verwendet.

A filename cannot contain any of the following characters:
\ / : * ? " < > |

Etwas weiter unten schrieben sie:

Zeichen, die zum Benennen von Dateien, Ordnern oder Verknüpfungen gültig sind, umfassen eine beliebige Kombination aus Buchstaben (AZ) und Zahlen (0-9) sowie die folgenden Sonderzeichen:

^   Accent circumflex (caret)
&   Ampersand
'   Apostrophe (single quotation mark)
@   At sign
{   Brace left
}   Brace right
[   Bracket opening
]   Bracket closing
,   Comma
$   Dollar sign
=   Equal sign
!   Exclamation point
-   Hyphen
#   Number sign
(   Parenthesis opening
)   Parenthesis closing
%   Percent
.   Period
+   Plus
~   Tilde
_   Underscore

Aber ich persönlich habe die Auflistung der nicht erlaubten Zeichen als Referenz genommen, um einige Kunden hier zu informieren;)


7
  • Ich besitze einen Apple Macbook Pro-Laptop mit 64-Bit OS X 10.11 "El Capitan", auf dem Samba 3 ausgeführt wird, das ich über Macports installiert habe .

  • Ich besitze auch einen Dell Inspiron-Laptop mit 64-Bit-GNU / Linux XUbuntu 16.04 "Xenial Xerus" unter Samba 3, das ich über APT installiert habe.

Beide Computer verfügen über freigegebene Netzwerkordner und verwenden Samba, um über mein WLAN (Wireless LAN) zu kommunizieren.

Beide Systeme sind in brasilianischem Portugiesisch. So verwende ich Sonderzeichen wie ç , á , ã , â , ô , é , ó et cetera.

Wenn ich mit meinem Linux-Laptop auf meine OS X-Samba-Freigaben zugreife, werden alle Zeichenfolgen korrekt angezeigt: Wörter wie maçã , ônus und bênção werden korrekt angezeigt. Dateien und Ordner mit langen Namen werden ebenfalls angezeigt und ihre Namen werden korrekt angezeigt. Somit ist der unter OS X laufende Samba-Server bereits richtig konfiguriert ...

... aber es lief nicht anders herum: Wenn ich die Finder-App unter OS X für den Zugriff auf meine Linux-Samba-Freigaben verwendete, wurden alle Dateien und Ordner mit mindestens einem dieser Sonderzeichen nicht angezeigt (sie blieben für Windows unsichtbar) Ich), und die langen Namen von Dateien und Ordnern wurden in seltsame Kurznamen umgewandelt. Auf meinem Linux-Rechner lief also ein Problem mit dem Samba-Server.

=> In meinem Fall löste das Problem das Hinzufügen der folgenden Zeilen zum [global]Abschnitt in der smb.confDatei auf meinem Linux-Computer:

mangled names = no
dos charset = CP850
unix charset = UTF-8

Danach öffnete ich ein Shell-Terminal-Fenster und startete den Linux-Samba-Server mit folgendem Befehl neu:

sudo service smbd restart

... der durch diesen anderen Befehl ersetzt werden kann (falls der obige Befehl auf Ihrer Linux-Distribution nicht funktioniert):

sudo systemctl restart smbd.service

Nachdem ich den Linux-Samba-Server neu gestartet hatte, zeigte die Finder-App unter OS X endlich alle Dateien und Ordner korrekt an, die zuvor aufgrund ihrer Namen mit einem oder mehreren Sonderzeichen verborgen waren. Die verstümmelten ("verkürzten") Namen wurden ebenfalls "entmischt".

Fußnoten :

  1. In GNU / Linux-Systemen ist der Standardspeicherort der smb.confDatei/etc/samba/smb.conf
  2. Vorausgesetzt, auf Ihrem Linux-System ist die smb.confDatei am Standardspeicherort gespeichert /etc/samba/: Es gibt verschiedene Möglichkeiten, die smb.confDatei zu bearbeiten . Wenn Sie beispielsweise keine Desktop-Umgebung verwenden (z. B. Ihr System verfügt nur über ein Shell-Terminal, kein Fenster), können Sie den Nano- Texteditor installieren , indem Sie einen Befehl wie sudo apt-get install nano -yoder sudo dnf -b -y install nanooder etwas anderes eingeben (je nachdem, welche Linux-Distribution Sie verwenden) verwenden) und dann ausführen sudo nano /etc/samba/smb.conf. Wenn Sie eine Desktop-Umgebung verwenden, können Sie einen grafischen Texteditor wie GNOME Edit installieren , indem Sie einen Befehl wie sudo apt-get install gedit -yoder sudo dnf -b -y install geditoder etwas anderes eingeben (je nachdem, welche Linux-Distribution Sie verwenden) und dann ausführen sudo gedit /etc/samba/smb.conf.
  3. In Samba 3+ ist der display charsetParameter veraltet.
  4. Der dos charsetParameter unterstützt das UTF-8Argument nicht. Daher muss das Standardargument verwendet werden CP850.
  5. mangled names = noWeist den Samba-Server an, lange Namen von Dateien und Ordnern nicht zu verkürzen. Da der Samba-Client nur dem Benutzer repliziert, was der Samba-Server dem Client zur Verfügung gestellt hat, zeigt der Client dem Benutzer nach ordnungsgemäßer Konfiguration keinen verkürzten Namen mehr an.

4

Aus der Samba-Dokumentation können Sie Folgendes verwenden:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1

4
Dies und das Hinzufügen von verstümmelten Namen = nein zu [global] behebte meinen Fehler bei nas4free
Christopher Chase,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.