Deze post is voor iedereen, die in een gemengde Windows/Mac/Linux-omgeving de windows-server wil mounten.
Wie in een gemengde omgeving op een Linux-machine een Windows-server mount, zal, na verloop van tijd, tot de ontdekking komen dat sommige mappen niet benaderbaar zijn. Meer specifiek: alles wat eindigt op een punt of een spatie kan niet benaderd worden.
Het kostte wat moeite, maar de oplossing is gelegen in een nogal obscure optie van mount.cifs, namelijk “mapchars”.
De manpage (man mount.cifs) maakt het er niet duidelijker op, die zegt iets over zeven “reserved characters” die vertaald worden:
Translate six of the seven reserved characters (not backslash, but including the colon, question mark, pipe, asterik, greater than and less than characters) to the remap range (above 0xF000), which also allows the CIFS client to recognize files created with such characters by Windows´s POSIX emulation. This can also be useful when mounting to most versions of Samba (which also forbids creating and opening files whose names contain any of these seven characters). This has no effect if the server does not support Unicode on the wire. Please note that the files created with mapchars mount option may not be accessible if the share is mounted without that option.
Afgezien van het feit dat de asterik niet bestaat, wordt in het geheel niet duidelijk wat hier vertaald wordt en waarom. Een bugreport uit 2015 maakt het al een beetje duidelijker: https://bugzilla.samba.org/show_bug.cgi?id=11206: “mapchars not handling trailing period and trailing space”.
Wat er gebeurt is dit: de Mac wijzigt spaties (karaktercode 0x20) in karakter 0xF028, maar alleen als de spatie aan het eind staat. Idem voor de punt: 0x2E wordt 0xF029, ook alleen aan het eind.
Wanneer je een dergelijke map tegenkomt in een SMB/CIFS-mount, loop je het risico dat je de map niet kunt benaderen. De oplossing: “mapchars” gebruiken.
Gebruik je op dit moment bijvoorbeeld:
mount -t cifs -o iocharset=utf8,credentials=/etc/smbcredentials ‘\\SERVER\Share’ /mnt/
… dan wordt het met de nieuwe mount-optie:
mount -t cifs -o iocharset=utf8,credentials=/etc/smbcredentials,mapchars ‘\\SERVER\Share’ /mnt/
Met deze optie erbij vertaalt de Linux-machine de bestandsnamen op dezelfde manier als de Mac – en zouden de mappen weer benaderbaar moeten zijn.
… het volgende conversieprobleem dient zich aan: https://github.com/owncloud/core/issues/21365 ofwel: de Samba-mount beschikbaar maken onder Owncloud. Nog zo’n dingetje. Stay tuned!