Przyjazne człowiekowi rozpoznawanie imienia Samby

11

Większość naszych komputerów działa pod kontrolą Ubuntu, ale dwa z nich uruchamiają się podwójnie w systemie Windows, a kiedy mamy gości, zazwyczaj działają również na komputerach z systemem Windows. Dlatego oprócz korzystania z NFS nasz serwer plików (serwer Ubuntu) również uruchamia Sambę.

Ponieważ głównie używamy Ubuntu, lubimy wykorzystywać jego zalety w stosunku do systemu Windows, takie jak możliwość używania znaków \:*?"<>|w nazwie pliku. Problem polega oczywiście na tym, że Windows nie akceptuje tych znaków w nazwach plików, więc Samba musi przetłumaczyć nazwę pliku na coś bardziej akceptowalnego. Sposób, w jaki to robi, wydaje mi się jednak nieznośny.

Na Episode 182 - Exorcist 2: The Heretic.mp4przykład nazwa pliku zmienia się w E4Q82R~Y.MP4. To straszna „korekta”. Czy istnieje sposób, aby uczynić samba manipulowaniem bardziej przyjaznym dla ludzi? Czy można to „poprawić” do czegoś takiego jak Episode 182 - Exorcist 2_ The Heretic.mp4zamiast tego, gdzie nielegalne postacie są po prostu zastępowane?

Alex
źródło
1
Sprawdź opis tej poprawki na liście mailingowej Samby . Opisana metoda działa od razu po wyjęciu z pudełka Samba 4.1.4-Debian.
mpy
@mpy Próbowałem tego, ale nadal nie działa dla mnie, gdy kopiuję pliki z niedozwolonymi znakami Windows do mojego udziału w sambie. Działa tylko do konwersji rzeczy, które byłyby OK (jak spacja przekonwertowana na symbol), ale nie do rzeczy, które nie działałyby (jak „:” przekonwertowany na inny symbol). Jakieś wskazówki?
pd12

Odpowiedzi:

11

mangled map jest teraz przestarzałe i nie będzie już działać w nowych wersjach Samby.

Możesz użyć vfs_catia, aby rozwiązać problem. Dodaj następujące wiersze do pliku smb.conf:

vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9

Odwzorowanie jest określone za pomocą 0x prefiksowanych kodów znaków szesnastkowych oddzielonych dwukropkiem. Dostarczone mapowanie przekształci niedozwolone znaki w wyglądające jak Unicode, które prawdopodobnie nie będą używane w żadnym języku.

:? * <> "| \
∶ ʔ ∗ ❮ ❯ ʺ ∣ ⧹

Kod można umieścić pod [global]lub w osobnej [share]sekcji. Umieszczenie go [global]może mieć wpływ na wydajność.

Pamiętaj, że żaden znak, na który mapujesz, nie może być użyty w nazwach plików na serwerze, w przeciwnym razie będą one niedostępne.

Przykład: klient systemu Windows uzyskujący dostęp do pliku o nazwie file❮name.txtna serwerze zażąda file<name.txtod serwera ze względu na mapowanie, co spowoduje błąd znalezienia pliku.

Emil
źródło
Próbowałem tego, ale nadal nie działa dla mnie, gdy kopiuję pliki z nielegalnymi znakami Windows do mojego udziału w sambie. Działa tylko do konwersji rzeczy, które byłyby OK (jak spacja przekonwertowana na symbol), ale nie do rzeczy, które nie działałyby (jak „:” przekonwertowany na inny symbol). Jakieś wskazówki?
pd12
2
To działa świetnie! Należy zauważyć, że nie można odwzorować wszystkiego na tę samą postać, a w twoim przykładzie wszystko, co ma wyraźny znak podkreślenia, nie będzie już dostępne. Zamiast tego użyłem następujących mapowań:, 0x3a:0x7e 0x3f:0x5ewięc :staje się ~i ?staje ^.
Geoffrey,
2

W tym linku możesz zobaczyć opcje zniekształcania. Myślę, że najpierw powinieneś wyłączyć opcję:

mangled names

Potem chyba nazwy powinny wyglądać lepiej ...

Aby zastąpić dwukropek, np. Użyj tej linii:

mangled map =(: _)

Możesz dodać więcej reguł zastępowania w ten sposób:

mangled map =(: _) (foo bar)

(zastępuje również każde wystąpienie foo po pasku)

Michael K.
źródło
Teraz wyglądają lepiej. W rzeczywistości, gdy ustawiam „zniekształcone nazwy” na „nie”, nazwy plików pojawiają się w systemie Windows całkowicie niezmienione. Chociaż z pewnością wygląda to lepiej, powoduje również, że aplikacje Windows nie mogą otwierać plików. Gdy próbuję otworzyć plik tes:t.txtw Notatniku, np. Pojawia się komunikat „Nie można znaleźć pliku [...] \ tes: t.txt.” To samo dotyczy innych „nielegalnych” plików w odpowiednich aplikacjach.
Alex
zredagowałem moją odpowiedź!
Michael K
mangled mapzostał usunięty z Samby. Z tego, co mogę powiedzieć po krótkim rozejrzeniu się, zostało usunięte lata temu. Tak log.smbdmówi mój plik, jeśli spróbuję go użyć:Ignoring unknown parameter "mangled map"
Alex
Masz rację ... przestarzały. To nie zadziała. To nie jest takie proste - skomplikowana nazwa pliku ma zapobiec posiadaniu dwóch plików o nazwie dame. Pliki foo: .txt i foo_.txt mogą istnieć, a zmiana nazwy nie powiedzie się. Najlepszym rozwiązaniem byłoby więc egzekwowanie reguł nazw plików, tak aby dozwolone były tylko nazwy dozwolone w obu systemach plików.
Michael K,