Nhân vật đặc biệt trong tên tập tin Samba


18

Khi phục vụ các tệp có chứa các ký tự đặc biệt như "()?:" Trong tên tệp thông qua Samba, các tên được chuyển thành định dạng không thể nhận ra. Ví dụ: một tập tin

my_file:_(important).txt

được hiển thị dưới dạng

M43J1E~0.TXT

Có cách nào để tránh hành vi này (rõ ràng không đổi tên các tập tin) không? Tôi cho rằng mã hóa ký tự không đáng trách vì một số ký tự UTF-8 dường như hoạt động tốt.


Samba phiên bản 2: 3.4.0-3ubfox5.5 trên Ubuntu 9.10
Matti

3
Việc thêm "tên xéo = không" vào smb.conf đã giải quyết điều này (cảm ơn, Dennis Williamson).
Matti

Câu trả lời:


10

Windows không cho phép một số ký tự trong tên tệp mà Unix cho phép. Samba "xỏ" tên tệp để làm cho chúng tuân thủ các hạn chế của Windows. Bạn có thể kiểm tra tệp /etc/smb.confhoặc /etc/samba/smb.confđể xem cài đặt nào được đặt. Để hiển thị các cài đặt đó cộng với mặc định, hãy sử dụng lệnh này:

testparm -vs | less

Để thu hẹp điều đó xuống một chút:

testparm -vs|grep "case\|mangl"

Xem trang này để biết thêm thông tin. Ngoài ra, hãy xem khoảng một nửa trang này (cùng thông tin với liên kết trước đó).


9

Tôi sử dụng một thư mục chia sẻ trên OS-X và Windows. Một số tệp có cùng một vấn đề, vì chúng thuộc các trường hợp sau: Chúng sử dụng các ký tự trong tên tệp, không được Windows hỗ trợ.

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

Nó liệt kê các ký tự, không được Windows hỗ trợ trong các tệp hoặc thư mục. Tôi đoán rằng Samba sử dụng cùng một danh sách các ký tự khi liệt kê các tệp và thư mục.

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

Xa hơn một chút, họ viết:

Các ký tự hợp lệ để đặt tên tệp, thư mục hoặc phím tắt bao gồm mọi kết hợp chữ cái (AZ) và số (0-9), cộng với các ký tự đặc biệt sau:

^   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

Nhưng cá nhân tôi đã lấy danh sách các nhân vật không được phép làm tài liệu tham khảo để tóm tắt một số khách hàng ở đây;)


7
  • Tôi sở hữu một máy tính xách tay Apple Macbook Pro với OS X 10.11 "El Capitan" chạy Samba 3 mà tôi đã cài đặt thông qua Macports .

  • Tôi cũng sở hữu một máy tính xách tay Dell Inspiron với GNU / Linux XUb Ubuntu 16.04 "Xenial Xerus" chạy Samba 3 mà tôi đã cài đặt thông qua APT.

Cả hai máy đều có thư mục chia sẻ mạng và sử dụng Samba để liên lạc trên mạng WLAN (LAN không dây) của tôi.

Cả hai hệ thống của tôi đều bằng tiếng Bồ Đào Nha Brazil. Vì vậy, tôi sử dụng các ký tự đặc biệt như ç , á , ã , â , ô , é , ó et cetera.

Khi tôi sử dụng máy tính xách tay Linux của mình để truy cập vào cổ phiếu OS X Samba của mình, tất cả các chuỗi được hiển thị chính xác: các từ như maçã , ônusbênção được hiển thị chính xác. Các tệp và thư mục có tên dài cũng được hiển thị và tên của chúng được hiển thị chính xác. Do đó, máy chủ Samba chạy trên OS X đã được cấu hình đúng cách ...

... nhưng mọi thứ không hoạt động theo cách khác: nếu tôi sử dụng ứng dụng Finder trên OS X để truy cập vào chia sẻ Linux Samba của mình, tất cả các tệp và thư mục có ít nhất một trong số các ký tự đặc biệt đó không được hiển thị (chúng vẫn ẩn với tôi), và tên dài của các tệp và thư mục đã được chuyển đổi thành tên ngắn kỳ lạ. Do đó, đã xảy ra sự cố với máy chủ Samba chạy trên máy Linux của tôi.

=> Trong trường hợp của tôi, điều đã giải quyết vấn đề này là thêm các dòng sau vào [global]phần bên trong smb.conftệp trên máy Linux của tôi:

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

Sau đó, tôi đã mở một cửa sổ thiết bị đầu cuối shell và khởi động lại máy chủ Linux Samba bằng lệnh này:

sudo service smbd restart

... có thể được thay thế bằng lệnh khác này (trong trường hợp lệnh trên không hoạt động trên bản phân phối Linux của bạn):

sudo systemctl restart smbd.service

Sau khi tôi khởi động lại máy chủ Linux Samba, ứng dụng Finder trên OS X cuối cùng đã hiển thị chính xác tất cả các tệp và thư mục đã bị ẩn trước đó vì tên của chúng có một hoặc nhiều ký tự đặc biệt. Các tên xéo ("rút ngắn") cũng "không thay đổi".

Chú thích :

  1. Trong các hệ thống GNU / Linux, vị trí chuẩn của smb.conftệp là/etc/samba/smb.conf
  2. Giả sử rằng hệ thống Linux của bạn có smb.conftệp được lưu trữ tại vị trí tiêu chuẩn /etc/samba/: có một số cách khác nhau để chỉnh sửa smb.conftệp. Ví dụ, nếu bạn không sử dụng một môi trường máy tính để bàn (ví dụ như hệ thống của bạn có chỉ là một thiết bị đầu cuối vỏ, không có cửa sổ), bạn có thể cài đặt Nano soạn thảo văn bản, bằng cách phát hành một lệnh chẳng hạn như sudo apt-get install nano -yhay sudo dnf -b -y install nanohay cái gì khác (tùy thuộc vào Linux distro bạn đang sử dụng), và sau đó chạy sudo nano /etc/samba/smb.conf. Trong trường hợp bạn đang sử dụng một môi trường máy tính để bàn, bạn có thể cài đặt một trình soạn thảo văn bản đồ họa như GNOME Chỉnh sửa , bằng cách phát hành một lệnh chẳng hạn như sudo apt-get install gedit -yhay sudo dnf -b -y install gedithay cái gì khác (tùy thuộc vào Linux distro bạn đang sử dụng), và sau đó chạy sudo gedit /etc/samba/smb.conf.
  3. Trong Samba 3+, display charsettham số không được chấp nhận.
  4. Các dos charsettham số không hỗ trợ các UTF-8cuộc tranh cãi. Vì vậy, nó phải sử dụng đối số mặc định CP850.
  5. mangled names = nohướng dẫn máy chủ Samba không rút ngắn tên dài của các tệp và thư mục. Do đó, vì máy khách Samba chỉ sao chép cho người dùng những gì máy chủ Samba đã cung cấp cho máy khách, một khi máy chủ được cấu hình đúng, máy khách sẽ không còn hiển thị cho người dùng bất kỳ tên rút gọn nào.

4

từ tài liệu samba bạn có thể sử dụng những điều này:

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

4
Điều này và việc thêm tên xéo = không vào [toàn cầu] đã sửa lỗi của tôi trên Nas4free
Christopher Chase
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.