Karakter khusus dalam nama file Samba


18

Saat menyajikan file yang mengandung karakter khusus seperti "() ?:" dalam nama file melalui Samba, nama-nama tersebut ditransformasikan menjadi format yang tidak dapat dikenali. Misalnya, sebuah file

my_file:_(important).txt

ditampilkan sebagai

M43J1E~0.TXT

Apakah ada cara untuk menghindari perilaku ini (tanpa mengganti nama file, jelas)? Saya berasumsi bahwa pengkodean karakter tidak dapat disalahkan karena beberapa karakter UTF-8 tampaknya berfungsi dengan baik.


Samba versi 2: 3.4.0-3ubuntu5.5 di Ubuntu 9,10
Matti

3
Menambahkan "nama hancur = tidak" ke smb.conf memecahkan masalah ini (terima kasih, Dennis Williamson).
Matti

Jawaban:


10

Windows tidak mengizinkan beberapa karakter dalam nama file yang diizinkan Unix. Samba "mangles" nama file untuk membuat mereka mematuhi batasan Windows. Anda dapat memeriksa file /etc/smb.confatau /etc/samba/smb.confmelihat pengaturan apa yang ada. Untuk menampilkan pengaturan tersebut ditambah default, gunakan perintah ini:

testparm -vs | less

Untuk mempersempitnya sedikit:

testparm -vs|grep "case\|mangl"

Lihat halaman ini untuk informasi lebih lanjut. Juga, lihat sekitar setengah halaman ini (informasi yang sama seperti tautan sebelumnya).


9

Saya menggunakan folder bersama pada OS-X dan Windows. Beberapa file memiliki masalah yang sama, karena termasuk dalam hal berikut: Mereka menggunakan karakter dalam nama file, tidak didukung oleh Windows.

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

Ini daftar karakter, tidak didukung oleh Windows dalam file atau direktori. Saya kira, bahwa Samba menggunakan daftar karakter yang sama ketika mendaftar file dan direktori.

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

Sedikit lebih jauh ke bawah, mereka menulis:

Karakter yang valid untuk penamaan file, folder, atau pintasan termasuk kombinasi huruf (AZ) dan angka (0-9), ditambah karakter khusus berikut:

^   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

Tapi saya, secara pribadi, mengambil daftar karakter yang tidak diizinkan sebagai referensi untuk memberi pengarahan kepada beberapa pelanggan di sini;)


7
  • Saya memiliki laptop Apple Macbook Pro dengan 64-bit OS X 10.11 "El Capitan" yang menjalankan Samba 3 yang saya instal melalui Macports .

  • Saya juga memiliki laptop Dell Inspiron dengan 64-bit GNU / Linux XUbuntu 16.04 "Xenial Xerus" yang menjalankan Samba 3 yang saya instal melalui APT.

Kedua mesin memiliki folder berbagi jaringan dan menggunakan Samba untuk berkomunikasi pada WLAN saya (LAN nirkabel).

Kedua sistem saya menggunakan bahasa Portugis Brasil. Jadi, saya menggunakan karakter khusus seperti ç , á , ã , â , ô , é , ó et cetera.

Ketika saya menggunakan laptop Linux saya untuk mengakses share OS X Samba saya, semua string ditampilkan dengan benar: kata-kata seperti maçã , ônus , dan bênção ditampilkan dengan benar. File dan folder dengan nama panjang juga ditampilkan, dan namanya ditampilkan dengan benar. Dengan demikian, server Samba yang berjalan pada OS X sudah dikonfigurasi dengan benar ...

... tetapi segalanya tidak berjalan sebaliknya: jika saya menggunakan aplikasi Finder pada OS X untuk mengakses share Linux Samba saya, semua file dan folder yang memiliki setidaknya satu dari karakter khusus itu tidak diperlihatkan (mereka tetap tidak terlihat oleh saya), dan nama-nama panjang file dan folder dikonversi menjadi nama pendek yang aneh. Jadi, ada sesuatu yang salah dengan server Samba berjalan di mesin Linux saya.

=> Dalam kasus saya, yang menyelesaikan masalah ini adalah menambahkan baris berikut ke [global]bagian di dalam smb.conffile di mesin Linux saya:

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

Setelah itu, saya membuka jendela terminal shell dan memulai kembali server Linux Samba dengan perintah ini:

sudo service smbd restart

... yang dapat diganti dengan perintah lain ini (jika perintah di atas tidak berfungsi pada distribusi Linux Anda):

sudo systemctl restart smbd.service

Setelah saya me-restart server Linux Samba, aplikasi Finder pada OS X akhirnya menunjukkan dengan benar semua file dan folder yang sebelumnya disembunyikan karena nama mereka memiliki satu atau lebih karakter khusus. Nama-nama yang hancur ("disingkat") juga "tidak berubah".

Catatan kaki :

  1. Dalam sistem GNU / Linux, lokasi standar smb.conffile adalah/etc/samba/smb.conf
  2. Menganggap bahwa sistem Linux Anda smb.confmenyimpan file di lokasi standar /etc/samba/: ada beberapa cara berbeda untuk mengedit smb.conffile. Misalnya, jika Anda tidak menggunakan Lingkungan Desktop (misalnya sistem Anda hanya memiliki terminal shell, tidak ada windows) Anda dapat menginstal editor teks Nano , dengan mengeluarkan perintah seperti sudo apt-get install nano -yatau sudo dnf -b -y install nanoatau sesuatu yang lain (tergantung pada distro Linux yang Anda gunakan menggunakan), dan kemudian jalankan sudo nano /etc/samba/smb.conf. Jika Anda menggunakan Lingkungan Desktop, Anda dapat menginstal editor teks grafis seperti GNOME Edit , dengan mengeluarkan perintah seperti sudo apt-get install gedit -yatau sudo dnf -b -y install geditatau sesuatu yang lain (tergantung pada distro Linux yang Anda gunakan), dan kemudian jalankan sudo gedit /etc/samba/smb.conf.
  3. Di Samba 3+, display charsetparameternya sudah usang.
  4. The dos charsetparameter tidak mendukung UTF-8argumen. Jadi, itu harus menggunakan argumen default CP850.
  5. mangled names = nomenginstruksikan server Samba untuk tidak mempersingkat nama file dan folder. Oleh karena itu, karena klien Samba hanya mereplikasi ke pengguna apa yang telah disediakan server Samba kepada klien, setelah server dikonfigurasi dengan benar, klien tidak akan lagi menampilkan nama singkat kepada pengguna.

4

dari dokumentasi samba Anda dapat menggunakan ini:

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1

4
Ini dan menambahkan nama rusak = tidak untuk [global] memperbaiki saya di nas4free
Christopher Chase
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.