Znaki specjalne w nazwach plików Samby

18

Podczas udostępniania plików zawierających znaki specjalne, takie jak „() ?:” w nazwie pliku przez Sambę, nazwy są przekształcane w nierozpoznawalny format. Na przykład plik

my_file:_(important).txt

jest wyświetlany jako

M43J1E~0.TXT

Czy istnieje sposób na uniknięcie tego zachowania (oczywiście bez zmiany nazw plików)? Zakładam, że kodowanie znaków nie jest winne, ponieważ kilka znaków UTF-8 wydaje się działać dobrze.

Matti
źródło
Samba wersja 2: 3.4.0-3ubuntu5.5 na Ubuntu 9.10
Matti
3
Dodanie „zniekształconych nazw = nie” do smb.conf rozwiązało to (dzięki, Dennis Williamson).
Matti

Odpowiedzi:

10

Windows nie zezwala na niektóre znaki w nazwach plików, na które zezwala Unix. Samba „modyfikuje” nazwy plików, aby były zgodne z ograniczeniami systemu Windows. Możesz sprawdzić plik /etc/smb.conflub /etc/samba/smb.confsprawdzić, jakie ustawienia są na miejscu. Aby wyświetlić te ustawienia i wartości domyślne, użyj tego polecenia:

testparm -vs | less

Aby to nieco zawęzić:

testparm -vs|grep "case\|mangl"

Zobacz tę stronę, aby uzyskać więcej informacji. Zobacz także mniej więcej w połowie tej strony (te same informacje, co poprzedni link).

Wstrzymano do odwołania.
źródło
9

Korzystam z folderu współdzielonego w systemach OS-X i Windows. Niektóre pliki mają ten sam problem, ponieważ należą do następujących: Używają znaków w nazwie pliku, nieobsługiwanych przez system Windows.

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

Zawiera listę znaków, nieobsługiwanych przez system Windows w plikach lub katalogach. Wydaje mi się, że Samba używa tej samej listy znaków podczas wyświetlania plików i katalogów.

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

Nieco dalej napisali:

Znaki prawidłowe dla nazw plików, folderów lub skrótów obejmują dowolną kombinację liter (AZ) i cyfr (0–9) oraz następujące znaki specjalne:

^   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

Ale ja osobiście wziąłem listę niedozwolonych znaków jako punkt informacyjny dla niektórych klientów tutaj;)

SimonSimCity
źródło
7
  • Posiadam laptopa Apple Macbook Pro z 64-bitowym systemem OS X 10.11 „El Capitan” z systemem Samba 3, który zainstalowałem za pośrednictwem Macports .

  • Posiadam również laptop Dell Inspiron z 64-bitowym GNU / Linux XUbuntu 16.04 „Xenial Xerus” z Sambą 3, który zainstalowałem przez APT.

Oba komputery mają foldery współdzielone w sieci i używają Samby do komunikacji w mojej sieci WLAN (bezprzewodowej sieci LAN).

Oba moje systemy są w brazylijskim portugalskim. Dlatego używam znaków specjalnych, takich jak ç , á , ã , â , ô , é , ó et cetera.

Kiedy korzystam z laptopa z Linuksem, aby uzyskać dostęp do moich udziałów OS X Samba, wszystkie ciągi są wyświetlane poprawnie: słowa takie jak maçã , ônus i bênção są wyświetlane poprawnie. Pliki i foldery o długich nazwach są również wyświetlane, a ich nazwy są wyświetlane poprawnie. Tak więc serwer Samba działający w systemie OS X jest już poprawnie skonfigurowany ...

... ale rzeczy nie działały na odwrót: jeśli użyłem aplikacji Finder w systemie OS X, aby uzyskać dostęp do moich udziałów Linux Samba, wszystkie pliki i foldery mające co najmniej jeden z tych znaków specjalnych nie byłyby widoczne (pozostały niewidoczne ja), a długie nazwy plików i folderów zostały przekonwertowane na dziwne krótkie nazwy. Tak więc coś było nie tak z serwerem Samba działającym na moim komputerze z systemem Linux.

=> W moim przypadku rozwiązaniem tego problemu było dodanie następujących wierszy do [global]sekcji wewnątrz smb.confpliku na moim komputerze z systemem Linux:

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

Następnie otworzyłem okno terminala powłoki i zrestartowałem serwer Linux Samba za pomocą tego polecenia:

sudo service smbd restart

... które można zastąpić innym poleceniem (w przypadku, gdy powyższe polecenie nie działa w twojej dystrybucji Linuksa):

sudo systemctl restart smbd.service

Po zrestartowaniu serwera Linux Samba aplikacja Finder w systemie OS X w końcu poprawnie wyświetliła wszystkie pliki i foldery, które wcześniej były ukryte, ponieważ ich nazwy zawierają jeden lub więcej znaków specjalnych. Zmienione („skrócone”) nazwy były również „niezmienione”.

Przypisy :

  1. W systemach GNU / Linux standardową lokalizacją smb.confpliku jest/etc/samba/smb.conf
  2. Zakładając, że twój system Linux smb.confprzechowuje plik w standardowej lokalizacji /etc/samba/: istnieje kilka różnych sposobów edycji smb.confpliku. Na przykład, jeśli nie używasz Desktop Environment (np system posiada tylko terminal powłoka, bez okien) można zainstalować Nano edytor tekstu, wydając polecenia takiego jak sudo apt-get install nano -ylub sudo dnf -b -y install nanoczy coś innego (w zależności od dystrybucji Linuksa cię używają), a następnie uruchom sudo nano /etc/samba/smb.conf. W przypadku, gdy używasz środowisko graficzne, można zainstalować graficzny edytor tekstu, takie jak GNOME Edytuj , wydając polecenia takiego jak sudo apt-get install gedit -ylub sudo dnf -b -y install geditczy coś innego (w zależności od dystrybucji Linuksa używasz), a następnie uruchomić sudo gedit /etc/samba/smb.conf.
  3. W Sambie 3+ display charsetparametr jest przestarzały.
  4. Ten dos charsetparametr nie obsługuje UTF-8argumentu. Dlatego musi użyć domyślnego argumentu CP850.
  5. mangled names = noinstruuje serwer Samby, aby nie skracał długich nazw plików i folderów. W związku z tym, ponieważ klient Samba po prostu replikuje użytkownikowi to, co serwer Samba przekazał klientowi, po prawidłowym skonfigurowaniu serwera klient nie będzie już pokazywał użytkownikowi skróconej nazwy.
Yuri Sucupira
źródło
4

z dokumentacji samby możesz użyć tych:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1
Pol Hallen
źródło
4
To i dodanie zniekształconych nazw = no do [global] naprawiło moje na nas4free
Christopher Chase