Caractères spéciaux dans les noms de fichiers Samba

18

Lorsque vous servez des fichiers contenant des caractères spéciaux tels que "()?:" Dans le nom de fichier via Samba, les noms sont transformés dans un format méconnaissable. Par exemple, un fichier

my_file:_(important).txt

est affiché comme

M43J1E~0.TXT

Existe-t-il un moyen d'éviter ce comportement (sans renommer les fichiers, évidemment)? Je suppose que l'encodage des caractères n'est pas à blâmer car plusieurs caractères UTF-8 semblent bien fonctionner.

Matti
la source
Samba version 2: 3.4.0-3ubuntu5.5 sur Ubuntu 9.10
Matti
3
L'ajout de "noms mutilés = non" à smb.conf a résolu ce problème (merci, Dennis Williamson).
Matti

Réponses:

10

Windows n'autorise pas certains caractères dans les noms de fichiers qu'Unix autorise. Samba "modifie" les noms de fichiers pour les rendre conformes aux restrictions de Windows. Vous pouvez vérifier le fichier /etc/smb.confou /etc/samba/smb.confvoir quels paramètres sont en place. Pour afficher ces paramètres ainsi que les valeurs par défaut, utilisez cette commande:

testparm -vs | less

Pour affiner cela un peu:

testparm -vs|grep "case\|mangl"

Consultez cette page pour plus d'informations. Voir également à mi-chemin de cette page (les mêmes informations que le lien précédent).

En pause jusqu'à nouvel ordre.
la source
9

J'utilise un dossier partagé sur OS-X et Windows. Certains fichiers ont le même problème, car ils se présentent comme suit: Ils utilisent des caractères dans le nom de fichier, non pris en charge par Windows.

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

Il répertorie les caractères, non pris en charge par Windows dans les fichiers ou répertoires. Je suppose que Samba utilise la même liste de caractères lors de la liste des fichiers et des répertoires.

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

Un peu plus loin, ils ont écrit:

Les caractères valides pour nommer les fichiers, les dossiers ou les raccourcis comprennent toute combinaison de lettres (AZ) et de chiffres (0-9), plus les caractères spéciaux suivants:

^   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

Mais j'ai personnellement pris la liste des caractères non autorisés comme référence pour informer certains clients ici;)

SimonSimCity
la source
7
  • Je possède un ordinateur portable Apple Macbook Pro avec OS X 10.11 64 bits "El Capitan" exécutant Samba 3 que j'ai installé via Macports .

  • Je possède également un ordinateur portable Dell Inspiron avec 64 bits GNU / Linux XUbuntu 16.04 "Xenial Xerus" exécutant Samba 3 que j'ai installé via APT.

Les deux machines ont des dossiers partagés en réseau et utilisent Samba pour communiquer sur mon WLAN (LAN sans fil).

Mes deux systèmes sont en portugais brésilien. Ainsi, j'utilise des caractères spéciaux tels que ç , á , ã , â , ô , é , ó et cetera.

Lorsque j'utilise mon ordinateur portable Linux pour accéder à mes partages OS X Samba, toutes les chaînes sont affichées correctement: des mots comme maçã , ônus et bênção sont affichés correctement. Les fichiers et dossiers avec des noms longs sont également affichés et leurs noms s'affichent correctement. Ainsi, le serveur Samba fonctionnant sous OS X est déjà correctement configuré ...

... mais les choses ne fonctionnaient pas dans l'autre sens: si j'utilisais l'application Finder sur OS X pour accéder à mes partages Linux Samba, tous les fichiers et dossiers contenant au moins un de ces caractères spéciaux n'étaient pas affichés (ils restaient invisibles pour moi), et les noms longs des fichiers et des dossiers ont été convertis en noms courts étranges. Il y a donc eu un problème avec le serveur Samba exécuté sur ma machine Linux.

=> Dans mon cas, ce qui a résolu ce problème, c'est l'ajout des lignes suivantes à la [global]section à l'intérieur du smb.conffichier sur ma machine Linux:

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

Après cela, j'ai ouvert une fenêtre de terminal shell et redémarré le serveur Linux Samba avec cette commande:

sudo service smbd restart

... qui peut être remplacée par cette autre commande (au cas où la commande ci-dessus ne fonctionnerait pas sur votre distribution Linux):

sudo systemctl restart smbd.service

Après avoir redémarré le serveur Linux Samba, l'application Finder sur OS X a finalement montré correctement tous les fichiers et dossiers qui étaient précédemment masqués en raison de leurs noms ayant un ou plusieurs caractères spéciaux. Les noms mutilés («raccourcis») étaient également «démêlés».

Notes de bas de page :

  1. Dans les systèmes GNU / Linux, l'emplacement standard du smb.conffichier est/etc/samba/smb.conf
  2. En supposant que votre système Linux a le smb.conffichier stocké à l'emplacement standard /etc/samba/: il existe plusieurs façons de modifier le smb.conffichier. Par exemple, si vous n'utilisez pas un environnement de bureau (par exemple, votre système n'a qu'un terminal shell, pas de fenêtres), vous pouvez installer l' éditeur de texte Nano , en émettant une commande telle que sudo apt-get install nano -you sudo dnf -b -y install nanoou autre chose (selon la distribution Linux que vous utilisez), puis exécutez sudo nano /etc/samba/smb.conf. Si vous utilisez un environnement de bureau, vous pouvez installer un éditeur de texte graphique tel que GNOME Edit , en émettant une commande telle que sudo apt-get install gedit -you sudo dnf -b -y install geditou quelque chose d'autre (selon la distribution Linux que vous utilisez), puis exécutez sudo gedit /etc/samba/smb.conf.
  3. Dans Samba 3+, le display charsetparamètre est obsolète.
  4. Le dos charsetparamètre ne prend pas en charge l' UTF-8argument. Ainsi, il doit utiliser l'argument par défaut CP850.
  5. mangled names = noindique au serveur Samba de ne pas raccourcir les noms longs des fichiers et des dossiers. Par conséquent, parce que le client Samba réplique simplement à l'utilisateur ce que le serveur Samba a fourni au client, une fois que le serveur est correctement configuré, le client n'affichera plus à l'utilisateur aucun nom abrégé.
Yuri Sucupira
la source
4

à partir de la documentation de samba, vous pouvez les utiliser:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1
Pol Hallen
la source
4
Ceci et l'ajout de noms mutilés = non à [global] a corrigé mon sur nas4free
Christopher Chase