Samba nama manusia-ramah mangling

11

Sebagian besar komputer kami menjalankan Ubuntu, tetapi dua di antaranya dual-boot ke Windows, dan ketika kami menerima tamu, mereka biasanya juga menjalankan komputer Windows. Jadi, selain menggunakan NFS, file server kami (server Ubuntu) juga menjalankan Samba.

Dan karena kami menggunakan Ubuntu sebagian besar, kami ingin memanfaatkan kelebihannya di atas Windows, seperti dapat menggunakan karakter \:*?"<>|dalam nama file. Masalahnya, tentu saja, adalah bahwa Windows tidak menerima karakter tersebut dalam nama file, dan Samba harus menerjemahkan nama file menjadi sesuatu yang lebih dapat diterima. Namun, cara melakukannya, saya merasa menjengkelkan.

Episode 182 - Exorcist 2: The Heretic.mp4Misalnya nama file berubah menjadi E4Q82R~Y.MP4. Ini adalah "koreksi" yang mengerikan. Apakah ada cara untuk membuat manguan Samba sedikit lebih ramah bagi manusia? Apakah mungkin untuk "mengoreksi" ke sesuatu seperti Episode 182 - Exorcist 2_ The Heretic.mp4, di mana karakter ilegal hanya diganti?

Alex
sumber
1
Lihatlah deskripsi tambalan ini di milis Samba . Metode yang dijelaskan bekerja di luar kotak Samba 4.1.4-Debian.
mpy
@ mpy Saya sudah mencoba ini tetapi masih tidak berhasil bagi saya ketika saya menyalin file dengan karakter windows ilegal ke share samba saya. Ini berfungsi untuk hanya mengonversi hal-hal yang sudah OK (seperti ruang yang dikonversi menjadi simbol), tetapi tidak untuk hal-hal yang tidak akan berfungsi (seperti ':' dikonversi ke simbol lain). Ada petunjuk?
pd12

Jawaban:

11

mangled map sekarang sudah tidak digunakan lagi dan tidak akan berfungsi lagi di Samba versi baru.

Anda dapat menggunakan vfs_catia untuk menyelesaikan masalah. Tambahkan baris berikut ke smb.conf:

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

Pemetaan ditentukan dengan 0x kode karakter hexedecimal diawali dipisahkan oleh titik dua. Pemetaan yang disediakan akan memetakan kembali karakter ilegal ke unicode lookalikes yang tidak mungkin digunakan dalam bahasa apa pun.

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

Kode dapat diletakkan di bawah [global]atau di [share]bagian individu . Menempatkannya dalam [global]dapat memengaruhi kinerja.

Perhatikan bahwa karakter apa pun yang Anda petakan tidak dapat digunakan dalam nama file di server atau karakter tersebut tidak dapat diakses.

Contoh: Klien windows yang mengakses file yang disebutkan file❮name.txtdi server akan meminta file<name.txtdari server karena pemetaan, yang akan menghasilkan file yang tidak ditemukan kesalahan.

Emil
sumber
Saya sudah mencoba ini tetapi masih tidak berhasil bagi saya ketika saya menyalin file dengan karakter windows ilegal ke share samba saya. Ini berfungsi untuk hanya mengonversi hal-hal yang sudah OK (seperti ruang yang dikonversi menjadi simbol), tetapi tidak untuk hal-hal yang tidak akan berfungsi (seperti ':' dikonversi ke simbol lain). Ada petunjuk?
pd12
2
Ini sangat bagus! Satu hal yang perlu diperhatikan adalah bahwa Anda tidak dapat memetakan semuanya ke karakter yang sama, dan dalam contoh Anda, apa pun yang memiliki garis bawah di dalamnya tidak lagi dapat diakses. Sebagai gantinya saya menggunakan pemetaan berikut:, 0x3a:0x7e 0x3f:0x5ejadi :menjadi ~dan ?menjadi ^.
Geoffrey
2

Di tautan ini Anda bisa melihat opsi mangling. Saya pikir pertama Anda harus menonaktifkan opsi:

mangled names

Setelah itu saya kira namanya akan terlihat lebih baik ...

Untuk mengganti titik dua, mis. Gunakan baris ini:

mangled map =(: _)

Anda dapat menambahkan lebih banyak aturan ganti seperti ini:

mangled map =(: _) (foo bar)

(juga menggantikan kemunculan foo oleh bar)

Michael K.
sumber
Mereka terlihat lebih baik sekarang. Bahkan, ketika saya mengatur "nama hancur" menjadi "tidak", nama file muncul di Windows sama sekali tidak berubah. Meskipun ini jelas terlihat lebih baik, itu juga membuat aplikasi Windows tidak dapat membuka file. Jika saya mencoba membuka file tes:t.txtdi Notepad, misalnya, saya diberitahu "Tidak dapat menemukan file [...] \ tes: t.txt." Sama halnya dengan file "ilegal" lainnya di aplikasi masing-masing.
Alex
edit jawaban saya!
Michael K
mangled maptelah dihapus dari Samba. Dari apa yang bisa saya katakan setelah sedikit melihat-lihat, itu dihapus bertahun-tahun yang lalu. Ini yang dikatakan log.smbdfile saya jika saya mencoba menggunakannya:Ignoring unknown parameter "mangled map"
Alex
Anda benar ... sudah usang. Itu tidak akan berhasil. Tidak sesederhana itu - nama file yang rumit adalah untuk mencegah memiliki dua file dengan nama dame. File foo: .txt dan foo_.txt bisa ada dan kemudian penggantian nama Anda akan gagal. Jadi yang terbaik adalah dengan menegakkan aturan nama file sehingga hanya nama yang diizinkan yang diizinkan di kedua sistem file.
Michael K