Sử dụng máy chủ SMB mà không cần quyền truy cập root


18

Tôi đang tìm cách cho HTC Hero (Android 2.1) của mình để tôi có thể chia sẻ nội dung của thẻ SD và bộ nhớ điện thoại qua mạng WiFi như chia sẻ tệp Windows thông thường. Tôi muốn một ứng dụng không yêu cầu tôi phải root điện thoại của mình và sẵn sàng trả tiền cho ứng dụng phù hợp để nó không phải miễn phí.

Tôi đang nghĩ đến việc sử dụng máy chủ SMB và tất cả những gì tôi tìm thấy cho đến nay là:

  1. SambaAndroid yêu cầu quyền truy cập root.
  2. androidsmb là "triển khai Java của tệp mạng SMB / CIFS và máy chủ chia sẻ máy in cho thiết bị Android" được lưu trữ trên Google Code không có tài liệu và chưa phát hành bất kỳ tệp nào.

Thậm chí về mặt kỹ thuật có thể phát triển Máy chủ SMB trên Android có thể được cài đặt mà không cần truy cập root không?


Tôi đã sử dụng Wifi Explorer( appbrain.com/app/wifi-file-explorer/ từ ) một vài lần và nó hoạt động rất tốt, không cần root. Tuy nhiên, đó không phải là SMB (và có lẽ cũng không phải FTP).
Joe Casadonte

Câu trả lời:


12

Vì câu hỏi ban đầu của bạn vẫn chưa được trả lời và tôi cũng tự hỏi, đây là câu trả lời.

Câu trả lời ngắn: Không, không có root, không thể chạy máy chủ SMB bằng các cổng mặc định để PC Windows tìm thấy.

Câu trả lời dài: SMB chạy trên các cổng 137-139 (UDP và TCP) bằng NetBIOS hoặc trên các hệ thống mới hơn (từ Windows Vista trở đi) trực tiếp trên cổng TCP 445 trong trường hợp tên máy tính sau được giải quyết bằng LLMNR (Multicast Multicast Giao thức Tên Độ phân giải) chạy trên cổng UDP 5355. Tại sao điều này quan trọng? Các ứng dụng không chạy dưới quyền root không thể liên kết với các cổng không có đặc quyền (<1024). Có thể sử dụng các cổng thay thế cho SMB nhưng Windows khó có thể nghe các cổng mặc định. Vì vậy, tôi đoán rằng nếu bạn sử dụng Linux hoặc máy khách SMB riêng cho Windows, cho phép kết nối với máy chủ với số cổng tùy chỉnh thì có thể là có thể. Nhưng nó không thực sự là một cách đơn giản.


Tuyệt vời một câu trả lời thực tế sau tất cả thời gian này. Cảm ơn. Bây giờ nếu tôi chỉ có thể nhớ tại sao tôi cần điều này ...;)
Ngày

3
Chà, tôi muốn nó vì tôi quá lười để cắm USB để truy cập thẻ SD: D
letmaik

Tôi tự hỏi liệu Windows có thể đối phó với \\your.ip:port...
Tobias Kienzler

10

Mặc dù có thể không thể chạy máy chủ SMB mà không cần root hoặc sử dụng chuyển tiếp cổng , nhưng có thể chạy máy chủ WebDAV mà không cần root để có hiệu ứng tương tự.

Thiết lập máy chủ Android WebDAV

Trên Nexus 7, tôi đã cài đặt Máy chủ WebDAV , mở nó, nhấp vào nút bắt đầu và ngay lập tức có thể thấy /storage/sdcardthư mục của tôi trong trình duyệt web của tôi tại URL được hiển thị bởi ứng dụng, tức làhttp://192.168.x.y:8080

Lưu ý rằng với WebDAV, bạn cũng có tùy chọn chọn Root (/) hoặc DCIM cũng như SdCard làm gốc WebDAV .

Sử dụng máy chủ WebDAV thông qua Windows Explorer

Sau đó, tôi đã ánh xạ http://192.168.x.y:8080như một ổ đĩa mạng trong Windows Explorer và có thể truy cập nội dung của ổ lưu trữ của mình, giống như khi tôi được kết nối qua MTP, nhưng thông qua ký tự ổ đĩa.

Đáng buồn thay, giải pháp này là vô cùng chậm.

Mỗi thay đổi thư mục mất từ ​​6 đến 20 giây, cũng như truy cập hầu hết các tệp. Tuy nhiên, khi một tệp được truy cập, nó sẽ chuyển với tốc độ hợp lý (sao chép một tệp 42 MB trong Windows Explorer mất khoảng 60 giây, do đó 700KB / giây).

Do đó, WebDAV thông qua Windows Explorer có thể tải xuống một vài tệp lớn có vị trí bạn biết, nhưng duyệt hoặc đồng bộ hóa toàn bộ thiết bị theo cách này không nhanh chóng. Tôi đã đồng bộ hóa 1,75GB dữ liệu trong khoảng 6000 tệp và 400 thư mục và trung bình mất 10 giờ, tức là khoảng 50 tệp / giây hoặc trung bình 10 tệp / thư mục mỗi phút.

Sử dụng máy chủ WebDAV thông qua dòng lệnh Windows

Ngay cả từ dòng lệnh, mỗi danh sách thư mục mất 5-6 giây, cũng như mọi truy cập tệp. Sao chép cùng một tệp 42 MB từ dòng lệnh mất khoảng 20 giây, vì vậy khoảng 2,1 MB / s.

Sử dụng máy chủ WebDAV thông qua trình duyệt web

Tùy chọn nhanh nhất cho WebDAV là sử dụng trình duyệt web của bạn, trực tiếp thông qua URL được cung cấp. Việc thay đổi thư mục hiếm khi mất hơn một giây và tải xuống cùng một tệp 42 MB từ trình duyệt web mất khoảng 12 giây, vì vậy khoảng 3,6 MB / s.

Nhược điểm của việc sử dụng trình duyệt web là nó chỉ hiển thị ngày (không có kích thước hoặc loại) và không phân biệt giữa các tệp và thư mục vì vậy nếu một tệp không có phần mở rộng (hoặc thư mục nào) thì có thể không rõ ràng nếu nhấp vào một liên kết sẽ đưa bạn đến một trang web khác (cho một thư mục) hoặc bắt đầu tải xuống (cho một tệp).

Hãy cẩn thận

  • Theo mặc định, Windows giới hạn kích thước tải xuống của WebDAV xuống còn 50000000 byte (47,6 MB), mặc dù điều này có thể được thay đổi thông qua hack hack ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) nếu bạn biết bạn đang làm gì.

  • Truy cập WebDAV không an toàn . Ngay cả khi bạn đặt mật khẩu trên chia sẻ WebDAV, kết nối vẫn httpkhông được https, vì vậy nó không được mã hóa. Chỉ sử dụng WebDAV trên mạng wifi an toàn và chắc chắn không kích hoạt máy chủ WebDAV khi bạn đang ở trong quán cà phê internet hoặc wifi không bảo mật khác.


Phương pháp này khá nhanh trên thiết bị của tôi. Cảm ơn bạn!
Cụm

Đã thử nghiệm trên Samsung S10 + Windows 8.0. Hoạt động tốt.
Brethlosze

5

Vấn đề không phải là máy chủ samba, nhưng thực tế là Windows chỉ có thể truy cập vào chia sẻ samba trên cổng 445 và trên Android không root, một ứng dụng bình thường không thể nghe trên cổng 445.

Nhưng bạn có thể khắc phục điều này với một số ánh xạ cổng TCP:

  1. Cài đặt máy chủ samba trên Android của bạn và làm cho nó nghe trên một cổng như 7777
  2. Cài đặt phần mềm chuyển tiếp cổng TCP ở đâu đó (Tôi đã cài đặt nó trên virtualPC)
  3. Thiết lập phần mềm portmapping để lắng nghe các kết nối trên cổng 445 và chuyển tiếp các kết nối tới Android của bạn trên cổng 7777
  4. Bây giờ bạn có thể truy cập vào thư mục được chia sẻ trên virtualPC này và bạn sẽ nhận được dữ liệu từ máy chủ samba được cài đặt trên Android (máng bản đồ)

Tôi đã mô tả tất cả các bước chi tiết ở đây trên blog của mình http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

Tôi đã thử máy chủ samba khác nhau và ứng dụng miễn phí duy nhất hoạt động trong cấu hình này được gọi là Máy chủ Samba


Đề xuất thú vị, nhưng bạn không thể nhập một cái gì đó như \\androids.ip:7777trong thanh địa chỉ thám hiểm?
Tobias Kienzler

1
@tobias kienzler Theo hiểu biết của tôi, điều này sẽ không hoạt động
Tối đa

2

Ngoài ra, bạn có thể chạy máy chủ ftp trên điện thoại để có quyền truy cập vào nội dung của thẻ SD. Kiểm tra SwiFTP .


Tôi thứ hai SwiFTP. Bạn sẽ không thể lấy bất kỳ tập tin nào ra khỏi điện thoại mà không cần root, nhưng nó sẽ hoạt động tốt cho thẻ SD.
Web

2

Tôi hiện đã hoàn thành một ứng dụng ( dành cho thiết bị chưa root ) để chia sẻ tệp trong mạng cục bộ. Bài học của tôi:

  • Có thể chạy Máy chủ SMB trên Android mà không cần quyền truy cập root (trên cổng không có đặc quyền). Mac OS X kết nối với nó mà không gặp vấn đề gì (nếu bạn phát ip và cổng của mình qua Bonjour). Nhưng Windows thì không. Như đã nói bởi những người dùng khác, Windows sử dụng các cổng đặc quyền "mã hóa cứng" để truy cập SMB. Cách duy nhất tôi tìm thấy để kết nối với Windows là tạo bộ điều hợp mạng loopback như được giải thích ở đây (không cùng mục đích, nhưng ý tưởng). Cuối cùng tôi nghĩ rằng cách thân thiện với người dùng nhất là sử dụng WebDAV trên Windows . Ngay cả khi Windows không thân thiện với người dùng, vì bạn phải nhập ip của mình bằng tay và tôi không tìm thấy cách phát hiện ra nó (vui lòng gửi cho tôi một dòng, nếu bạn biết).
  • Trong thế giới Mac OS X, giao thức SMB là một người chiến thắng rõ ràng . Chia sẻ của bạn sẽ được Bonjour tự động phát hiện và xuất hiện một cách kỳ diệu trong Finder. Điều kỳ lạ là cổ phiếu WebDAV và FTP bị bỏ qua (không được tự động gắn bởi Finder), mặc dù chúng được Bonjour hỗ trợ . Các khách hàng của bên thứ ba (ví dụ Cyberduck) không gặp vấn đề gì với việc tự động phát hiện các cổ phiếu này.

1

Tôi có thể hiểu nhầm nhưng có vẻ như bạn cần một khách hàng SMB, không phải máy chủ. Ngoài ra, bạn không cần quyền truy cập root. Để sử dụng SMB để chuyển các tập tin vào máy tính của bạn, bạn có thể sử dụng Trình quản lý tệp ASTRO với addon SMB hoặc có File Expert cũng miễn phí.

Bạn cũng có thể sử dụng WebDAV thay vì SMB với một ứng dụng như WebShared .

Trước đây, tôi đã sử dụng một ứng dụng có phần mềm máy khách trên máy tính cho phép tôi chuyển tệp qua trình duyệt tệp từ bất kỳ đâu qua web. Đó không phải là một ứng dụng VNC đầy đủ. Tôi có một điện thoại mới và bây giờ trong cuộc sống của tôi, tôi không thể tìm thấy ứng dụng này.


Xin cảm ơn vì câu trả lời, tôi thực sự muốn có một máy chủ trên điện thoại để PC (Ubuntu) của tôi có thể đẩy các tệp mới lên nó khi tôi về nhà mà không cần tôi phải lấy điện thoại ra khỏi túi. Không muốn yêu cầu phần mềm bổ sung trên PC, nhưng tất nhiên máy chủ FTP hoặc WebDAV trên điện thoại cũng sẽ đáp ứng yêu cầu đó, vì vậy có vẻ như File Expert sẽ thực hiện công việc. Tôi đang cài đặt bây giờ sẽ báo cáo lại cảm ơn
Ngày

Hmmm máy chủ FTP dường như không hoạt động - thuật sĩ "Kết nối với máy chủ" của Ubuntu cho biết "kết thúc luồng bất ngờ". Phải đi làm, sẽ thử lại sau.
Ngày

Không, nó không hoạt động ... lỗi của tôi vì vội vã. Điều đó nên làm công việc độc đáo cảm ơn.
Ngày
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.