Mac UTF-8 a Samba s vfs_fruit

Mac UTF-8 a Samba s vfs_fruit
« kdy: Dnes v 13:01:31 »
Před časem jsem narazil na ošklivost ve Finderu, který nezobrazuje soubory, pokud jejich název obsahuje složené UTF-8 znaky, tj. nikoli znak s diakritikou (zakódované do dvou bytů), ale znak + znak diakritiky (zakódované do 3 bytů).

Stává se mi, že uživatelé z Windows uloží soubory, které obsahují v názvu jednou tak, podruhé jinak zakódované znaky. V Linuxu se mi pochopitelně obojí zobrazuje nerozlišitelně stejně, dokud jsem nenechal název převést na hexadecimální čísla. K odhalení může pomoct Putty, který za určitých okolností zobrazuje složené znaky špatně.

Četnost s jakou Windows něco takového provedou je nezanedbatelná. Možná každý desátý soubor? Nepodařilo se mi vypozorovat jestli to jsou názvy, které uživatel vytvoří zkopírováním odněkud, nebo naklepe na klávesnici, nebo jestli to je specificky častější pro určitý software (stává se to u souborů s MS Office).

Nějak se mi to podařilo vyřešit pomocí vfs_fruit v kombinaci s mangled names (vypne překódování názvů do zkráceného názvu pouze z osmi znaků ASCII) a v kombinaci s unix charset a display charset, viz relevantní kousek konfigurace.

Modul catia je dle manuálu nutný pro volbu fruit:encoding = native.

Kód: [Vybrat]
        unix charset = UTF-8
        display charset = UTF-8
...
        vfs object = recycle fruit catia streams_xattr

        fruit:encoding = native
        fruit:resource = file
        fruit:posix_rename = yes
        fruit:veto_appledouble = yes
        fruit:nfs_aces = no
        fruit:wipe_intentionally_left_blank_rfork = true

        mangled names = no

Následně v každém sharu mám zapnuto ve shodě s globálním nastavením (kdesi psali, že to je potřeba):

Kód: [Vybrat]
        vfs object = recycle fruit catia streams_xattr
Nejsem si jistý volbou fruit:encoding = native vs private. Pochopil jsem, že jde o překódovávání nepovolených znaků do privátního rozahu UTF-8, ale jakých přesně znaků? Týká se to i složených znaků s diakritikou? Nebo jen znaků, které nejsou povolené na unixlike systémech, ale na Windows nevadí? Manuál mi připadá neúplný.

A která z voleb vlastně zajišťuje překódování složených znaků? Jsou místa, kde vfs_fruit nemám a MACkaři mi problémy nehlásili.

https://www.samba.org/samba/docs/current/man-html/vfs_fruit.8.html

Problém je, že když jsem fruit:encoding nastavil na private, tak začal padat Finder při pokusu o vstup do některých složek s diakritikou v názvu. Pád Finderu se projeví tak, že krátce po otevření složky (1s?) se zavřou všechna okna Finderu a odpojí se od Samby. Uživatel se pak musí znovu přihlásit.

Jako upřímně - mě to přijde jako dlouhodobě neřešená chyba MAC OSX a ne problém, který by se měl řešit na Sambě. Ale protože od Apple řešení očekávat nelze (dohledal jsem diskuze i 10 let staré, kde měl kdosi podobný problém), hledám rovnák na vohejbák pomocí nastavení Samby.

Jakou s tímto máte zkušenost?

Nepřipadá mi správné uživatelům radit, aby diakritiku v názvech přestali používat, jako to bývalo běžné v dobách DOSu a W9x.


jjrsk

  • ****
  • 499
    • Zobrazit profil
Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #1 kdy: Dnes v 17:02:53 »
https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X

Tuhle to maji ponekud jinak nez to mas ty.

S vecma od jabka je to easy, proste nefungujou (resim s dodavatelem, ze jablecny kramy se neumej prihlasit domenovym uctem k firemnimu webu, cokoli jinyho funguje). Opakovane resim problemy s certifikatama, vpnkama ... atd atd.

A rekni uzivatelum at diaktiriku (nejen v nazvech) nepouzivaj ;D.

Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #2 kdy: Dnes v 17:57:04 »
Tuhle to maji ponekud jinak nez to mas ty. https://wiki.samba.org/index.php/Configure_Samba_to_Work_Better_with_Mac_OS_X
To mě nepřekvapuje. Na mnoha místech to mají trochu jinak.

Mě by víc zajímalo, co konkrétně mám špatně, nebo co se vám (zdejším diskutujícím) osvědčilo / neosvědčilo. A pokud to bylo problematické, jak a proč? (pokud možno)

Vím, že fruit:nfs_aces = no je nezbytné k tomu, aby fungovala vynucená práva pomocí create mask, directory mask... to mám stejně.

fruit:metadata = stream jsem byl nucen přidat, protože selhávání Finderu bylo ve skutečnosti způsobeno pádem vfs_fruit a tedy odpojením MACku od Samby. Jestli to pomůže dlouhodobě zatím nevím. Proč k pádu vfs_fruit docházelo taky nevím, jen to, že se pád zapsal do logu Samby.

fruit:model = MacSamba je default volba, netuším, proč bych se měl obtěžovat to tam vůbec dávat.

fruit:posix_rename = yes máme shodné...

fruit:delete_empty_adfiles = yes jsem zakomentoval, protože nevidím přínos. Zatím.

Verze mé Samby je 4.17.12-Debian - tj. to, co je aktuální v aktualizovaném Debian 12.

ja.

  • ****
  • 344
    • Zobrazit profil
    • E-mail
Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #3 kdy: Dnes v 18:53:04 »
Ste si istí, že nefungujú práve zložené UTF-8 znaky?

MacOS totiž vyžaduje v názvoch súborov NFD UTF-8 (pozri https://unicode.org/reports/tr15/), čo sú práve tie zložené. Neurobíme s tým nič, je to tak už od MacOS 10.0.

Linuxu je to naopak jedno, názov súborov je octet-stream, čo zase má za následok, že môžu v adresári existovať dva rozličné súbory, ktorých názov sa používateľovi zobrazujú rovnako.

U nás riešime problém, že používateľ si nevie otvoriť súbor s diakritikou tak, že používatelia majú prístup cez Synology Drive, kde si ho vedia premenovať. Čo sme vysledovali, tak problém vyzerá byť špecifický pre konkrétne aplikácie, stáva sa to napríklad s Windows verziou Wordu, kde potom používalia Mac majú smolu.

Synology SMB (aktuálne samba 4.15.13) vôbec nepoužíva vfs_fruit. Pre Mac maximálne svoj proprietárny modul syno catia, čo vyzerá byť fork vfs_catia. V dnešnej dobe používať vfs_fruit môže byť aj dosť konterproduktívne, skúsil by som ho vynechať úplne.

ja.

  • ****
  • 344
    • Zobrazit profil
    • E-mail
Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #4 kdy: Dnes v 19:01:06 »
resim s dodavatelem, ze jablecny kramy se neumej prihlasit domenovym uctem k firemnimu webu, cokoli jinyho funguje

Ale vedia, SPNEGO s Kerberom aj NTML. Niektoré browsery však majú by default vypnuté SPNEGO (rovnako to je aj v Linuxe) a treba im whitelistnúť hostname alebo celú doménu, kde majú na SPNEGO reagovať.


Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #5 kdy: Dnes v 19:24:15 »
Ste si istí, že nefungujú práve zložené UTF-8 znaky?
Ano, velmi jistý.

Dekódoval jsem název mizejících souborů nějakým UTF-8 HEX konvertorem a porovnal s funkčním názvem jiných souborů a téhož souboru po přejmenování, výsledek byl jednoznačný. Proto jsem zkusil použít vfs_fruit

Z mých dřívějších poznámek:
Když bylo ů = 0xc5 0xaf tak se soubor ve finderu zobrazil, když bylo ů = 0x75 0xcc 0x8a tak nikoli. Podobně s č = 0xc4 0x8d vs č =  0x63 0xcc 0x8c atd...

Tyto soubory, které uživatel MACku neviděl, byly vytvořené a pojmenované uživatelem Windows.

Jako nejsem si jistý, jestli vfs_fruit nepřináší víc problémů než užitku, ale problém s nezobrazenými soubory se tím nějak vyřešil. Doufám, pokud za to nemohou volby unix charset a display charset, které jsem měl tu a tam zakomentované a ztratil jsem přehled, kdy a za jakých okolností.

Fakt je, že jinde jsem vfs_fruit na Sambě použít nemusel (Na Gentoo se Sambou 4.19) a na jiných Debianech nebyl problém nejšpíš proto, že těch MACkařů tam není dost a ne všichni uživatelé píší diakritiku do názvů souborů...

ja.

  • ****
  • 344
    • Zobrazit profil
    • E-mail
Re:Mac UTF-8 a Samba s vfs_fruit
« Odpověď #6 kdy: Dnes v 19:56:31 »
Ste si istí, že nefungujú práve zložené UTF-8 znaky?
Ano, velmi jistý.

Dekódoval jsem název mizejících souborů nějakým UTF-8 HEX konvertorem a porovnal s funkčním názvem jiných souborů a téhož souboru po přejmenování, výsledek byl jednoznačný. Proto jsem zkusil použít vfs_fruit

Z mých dřívějších poznámek:
Když bylo ů = 0xc5 0xaf tak se soubor ve finderu zobrazil, když bylo ů = 0x75 0xcc 0x8a tak nikoli. Podobně s č = 0xc4 0x8d vs č =  0x63 0xcc 0x8c atd...

Tyto soubory, které uživatel MACku neviděl, byly vytvořené a pojmenované uživatelem Windows.

Jako nejsem si jistý, jestli vfs_fruit nepřináší víc problémů než užitku, ale problém s nezobrazenými soubory se tím nějak vyřešil. Doufám, pokud za to nemohou volby unix charset a display charset, které jsem měl tu a tam zakomentované a ztratil jsem přehled, kdy a za jakých okolností.

Fakt je, že jinde jsem vfs_fruit na Sambě použít nemusel (Na Gentoo se Sambou 4.19) a na jiných Debianech nebyl problém nejšpíš proto, že těch MACkařů tam není dost a ne všichni uživatelé píší diakritiku do názvů souborů...

Zaujímavé:

keď vytvorím súbor (tri pokusy: pomenovať cez finder, pomenovať v shelli na serveri cez ssh, pomenovať cez windows explorer), tak na serveri bol vyvorený názov denormalizovaný:

0000000  c4  8d  65  72  76  65  6e  c3  a1  2e  74  78  74  0a
          D  cr   e   r   v   e   n   C   !   .   t   x   t  nl
0000016  c4  8d  65  72  76  65  6e  c3  a9  2e  74  78  74  0a
          D  cr   e   r   v   e   n   C   )   .   t   x   t  nl
0000034  c4  8d  65  72  76  65  6e  c3  bd  2e  74  78  74  0a
          D  cr   e   r   v   e   n   C   =   .   t   x   t  nl

Ale macos klient ho videl normalizovaný:

0000000    63  cc  8c  65  72  76  65  6e  61  cc  81  2e  74  78  74  0a
           c   �  8c   e   r   v   e   n   a   �  81   .   t   x   t  nl
0000020    63  cc  8c  65  72  76  65  6e  65  cc  81  2e  74  78  74  0a
           c   �  8c   e   r   v   e   n   e   �  81   .   t   x   t  nl
0000040    63  cc  8c  65  72  76  65  6e  79  cc  81  2e  74  78  74  0a
           c   �  8c   e   r   v   e   n   y   �  81   .   t   x   t  nl

V rámci rýchlych pokusov sa mi nepodarilo vytvoriť normalizovaný názov na serveri, bude treba ďalšie pokusy.
« Poslední změna: Dnes v 20:03:13 od ja. »