Đây có vẻ là một vấn đề kỳ lạ, hy vọng ai đó có thể làm sáng tỏ. Tôi thiết lập một số thư mục samba trên một vài máy chủ Ubuntu để người dùng thực hiện quản lý tệp. Sau khi chuyển tệp vào chia sẻ, người dùng đang cố đổi tên tệp từ máy tính Windows XP của họ thông qua samba, nhưng nhận được lỗi "Tên tệp bạn chỉ định không hợp lệ hoặc quá dài. Chỉ định tên tệp khác."
Tôi đã kiểm tra các quyền và làm hỏng nó từ Windows 7 và gặp vấn đề tương tự. Cuối cùng, tôi thấy rằng tôi có thể thay đổi tên tệp miễn là tên mới không bao gồm số '2'. Tên mới của tệp phải là '285870_full' và chúng tôi có thể đặt tên là '185870_full' và '385870_full' và bất cứ điều gì khác tôi có thể nghĩ để thử, nhưng '285870_full' đưa ra lỗi về "tên tệp bạn đã chỉ định không hợp lệ hoặc quá dài "
Tôi đã kết nối với máy chủ thông qua SSH và có thể đổi tên tệp theo cách đó mà không gặp bất kỳ lỗi nào. Bây giờ thông qua samba tôi có thể thấy tệp có tên '285870_full' và nếu tôi cố gắng thêm '2' khác, nó sẽ báo lỗi tương tự nhưng nếu không tôi có thể đổi tên bình thường.
Tôi đã thử với một tệp văn bản nhỏ ngẫu nhiên khác và có cùng một vấn đề - nó sẽ không cho phép tôi đổi tên nó thành bất cứ thứ gì có '2' trong tên mới, nhưng '134567890' hoạt động tốt. Có ý kiến gì không?
Cập nhật: Tôi đặt cấp độ nhật ký thành 3 và đây là phần nhật ký có liên quan từ một bài kiểm tra;
reply_mv : pending/31345678901affiliate_pixel33.txt -> pending/31345678901affiliate_p22.txt
[2013/07/22 21:58:39, 3] smbd/reply.c:5981(rename_internals)
rename_internals: case_sensitive = 0, case_preserve = 1, short case preserve = 1, directory = pending/31345678901affiliate_pixel33.txt, newname = pending/31345678901affiliate_p22.txt, last_component_dest = 31345678901affiliate_p22.txt
[2013/07/22 21:58:39, 3] smbd/dosmode.c:149(unix_mode)
unix_mode(pending/31345678901affiliate_pixel33.txt) returning 0744
[2013/07/22 21:58:39, 2] smbd/open.c:580(open_file)
root opened file pending/31345678901affiliate_pixel33.txt read=No write=No (numopen=1)
[2013/07/22 21:58:39, 2] smbd/close.c:612(close_normal_file)
root closed file pending/31345678901affiliate_pixel33.txt (numopen=0) NT_STATUS_OK
[2013/07/22 21:58:39, 3] smbd/reply.c:6041(rename_internals)
rename_internals: Error NT_STATUS_OBJECT_NAME_INVALID rename pending/31345678901affiliate_pixel33.txt -> pending/31345678901affiliate_p22.txt
[2013/07/22 21:58:39, 3] smbd/error.c:60(error_packet_set)
error packet at smbd/reply.c(6273) cmd=7 (SMBmv) NT_STATUS_OBJECT_NAME_INVALID
[2013/07/22 21:58:39, 3] smbd/process.c:1459(process_smb)
Transaction 14 of length 162 (0 toread)
[2013/07/22 21:58:39, 3] smbd/process.c:1273(switch_message)
switch message SMBtrans2 (pid 11644) conn 0x7fad01371210
Tôi thấy việc đổi tên bằng '2' mang lại cho NT_STATUS_OBJECT_NAME_INVALID?
Đây là một snip log khác trong khi nó được đổi tên thành một cái gì đó mà không có '2'
[2013/07/22 22:05:33, 3] smbd/reply.c:6263(reply_mv)
reply_mv : pending/31345678901affiliate_pixel33.txt -> pending/31345678901affiliate_44.txt
[2013/07/22 22:05:33, 3] smbd/reply.c:5981(rename_internals)
rename_internals: case_sensitive = 0, case_preserve = 1, short case preserve = 1, directory = pending/31345678901affiliate_pixel33.txt, newname = pending/31345678901affiliate_44.txt, last_component_dest = 31345678901affiliate_44.txt
[2013/07/22 22:05:33, 3] smbd/dosmode.c:149(unix_mode)
unix_mode(pending/31345678901affiliate_pixel33.txt) returning 0744
[2013/07/22 22:05:33, 2] smbd/open.c:580(open_file)
root opened file pending/31345678901affiliate_pixel33.txt read=No write=No (numopen=1)
[2013/07/22 22:05:33, 3] smbd/reply.c:5816(rename_internals_fsp)
rename_internals_fsp: succeeded doing rename on pending/31345678901affiliate_pixel33.txt -> pending/31345678901affiliate_44.txt
[2013/07/22 22:05:33, 2] smbd/close.c:612(close_normal_file)
root closed file pending/31345678901affiliate_44.txt (numopen=0) NT_STATUS_OK
[2013/07/22 22:05:33, 3] smbd/reply.c:6041(rename_internals)
rename_internals: Error NT_STATUS_OK rename pending/31345678901affiliate_pixel33.txt -> pending/31345678901affiliate_44.txt
[2013/07/22 22:05:33, 3] smbd/process.c:1459(process_smb)
Transaction 72 of length 158 (0 toread)
Vì vậy, tôi tự hỏi tại sao '2' lại mang lại cho NT_STATUS_OBJECT_NAME_INVALID?