SMB sunucusunu kök erişimi olmadan kullanma


18

HTC Hero (Android 2.1) için bir yol arıyorum, böylece SD kartımın ve telefon belleğimin içeriğini WiFi ağı üzerinden normal bir Windows dosya paylaşımı gibi paylaşabiliyorum. Telefonumu rootlamamı gerektirmeyen bir tane istiyorum ve doğru uygulama için ödeme yapmaya hazırım, bu yüzden ücretsiz olmak zorunda değil.

SMB sunucusu kullanmayı düşünüyorum ve şimdiye kadar bulduğum tüm:

  1. Kök erişimi gerektiren SambaAndroid .
  2. hiçbir doküman içermeyen ve herhangi bir dosya yayınlamayan Google Code'da barındırılan "Android cihazlar için SMB / CIFS ağ dosyasının ve yazıcı paylaşım sunucusunun Java uygulaması" olan androidsmb .

Android'de root erişimi olmadan kurulabilecek bir SMB Sunucusu geliştirmek teknik olarak mümkün müdür?


Ben kullandım Wifi Explorer( appbrain.com/app/wifi-file-explorer/... ) birkaç kez ve o inşaat büyük, hiçbir kök gerekli. Ancak SMB değil (ve muhtemelen FTP de değildir).
Joe Casadonte

Yanıtlar:


12

Orijinal sorunuz hala cevaplanmadığından ve aynı şeyi merak ettiğimden, işte cevap.

Kısa cevap: Hayır, kök olmadan Windows PC'ler tarafından bulunması için varsayılan bağlantı noktalarını kullanarak bir SMB sunucusu çalıştırmak mümkün değildir.

Uzun yanıt: SMB, NetBIOS kullanarak 137-139 numaralı bağlantı noktalarında (UDP ve TCP) veya daha yeni sistemlerde (Windows Vista'dan itibaren) doğrudan 445 numaralı TCP bağlantı noktasında çalışır; burada son durumda bilgisayar adları LLMNR (Bağlantı-yerel Çok Noktaya Yayın) tarafından çözümlenir Name Resolution) protokolü 5355 numaralı UDP bağlantı noktasında çalışır. Bu neden önemlidir? Kök olarak çalışmayan uygulamalar ayrıcalıksız bağlantı noktalarına bağlanamaz (<1024). SMB için alternatif bağlantı noktaları kullanmak mümkündür, ancak Windows sadece varsayılan olanları dinlemek için kablolanmıştır. Bu yüzden Linux veya Windows için ayrı bir SMB istemcisi kullanıyorsanız, özel bir port numarası ile bir sunucuya bağlanmanıza izin verirseniz, muhtemelen mümkündür. Ama bu gerçekten basit bir yol değil.


Bunca zamandan sonra gerçek bir cevap. Teşekkürler. Şimdi buna neden ihtiyacım olduğunu hatırlayabilseydim ...;)
Gün

3
Bunu istedim, çünkü SD karta erişmek için USB'yi takmak için çok tembelim: D
letmaik

Windows'un başa çıkabileceğini merak ediyorum \\your.ip:port...
Tobias Kienzler

10

O mümkün olmayabilir kökü olmadan bir SMB sunucusu çalıştırmak veya port yönlendirme kullanarak , benzer bir etki için root olmadan WebDAV sunucusu çalıştırmak mümkündür.

Android WebDAV sunucusu kurma

Stokumda Nexus 7, WebDAV Sunucusunu kurdum , açtım, başlat düğmesine tıkladım ve hemen /storage/sdcarduygulama tarafından görüntülenen URL'de web tarayıcımda klasörümü görebildim , yanihttp://192.168.x.y:8080

WebDAV ile, Kök (/) veya DCIM'in yanı sıra SDCard'ı da WebDAV kökü olarak seçme seçeneğiniz olduğunu unutmayın .

WebDAV sunucusunu Windows Gezgini ile kullanma

Daha sonra http://192.168.x.y:8080Windows Gezgini'nde bir ağ sürücüsü olarak eşledim ve depolama sürücümün içeriğine, tıpkı MTP ile bağlandığım gibi, ancak bir sürücü harfi ile erişebildim.

Ne yazık ki, bu çözüm inanılmaz derecede yavaş.

Her dizin değişikliği, çoğu dosyaya erişimde olduğu gibi 6 ila 20 saniye sürer. Bir dosyaya erişildiğinde, makul bir hızda aktarılır (Windows Gezgini'nde 42MB'lik tek bir dosyayı kopyalamak yaklaşık 60 saniye sürdü, bu nedenle 700KB / s).

Bu nedenle, Windows Gezgini aracılığıyla WebDAV, konumunu bildiğiniz birkaç büyük dosyayı indirmek için Tamam, ancak tüm cihazı bu şekilde taramak veya senkronize etmek hızlı değildir. Yaklaşık 6000 dosya ve 400 dizinde 1,75 GB veri senkronize ettim ve 10 saat sürdü, yani dakikada ortalama 50 KB / sn veya 10 dosya / dizin.

WebDAV sunucusunu Windows komut satırı üzerinden kullanma

Komut satırından bile, her dizin listesi ve herhangi bir dosya erişimi 5-6 saniye sürer. Aynı 42MB dosyasını komut satırından kopyalamak yaklaşık 20 saniye sürdü, bu nedenle 2,1 MB / sn.

WebDAV sunucusunu bir web tarayıcısı üzerinden kullanma

WebDAV için en hızlı seçenek web tarayıcınızı doğrudan verilen URL üzerinden kullanmaktır. Dizini değiştirmek nadiren bir saniyeden fazla sürüyor ve aynı 42MB dosyasını web tarayıcısından indirmek yaklaşık 12 saniye sürdü, bu yüzden yaklaşık 3.6MB / s.

Web tarayıcısını kullanmanın dezavantajı, yalnızca tarihi göstermesi (boyut veya tür yok) ve dosyalar ve dizinler arasında ayrım yapmamasıdır, bu nedenle bir dosyanın uzantısı yoksa (veya bir dizinde varsa), o zaman belli olmayabilir bir bağlantıyı tıkladığınızda sizi başka bir web sayfasına götürürseniz (bir dizin için) veya bir indirme başlatırsanız (bir dosya için).

Uyarılar

  • Varsayılan olarak, Windows WebDAV karşıdan yüklemelerinin boyutunu 50000000 bayt (47,6MB) ile sınırlar, ancak ne yaptığınızı biliyorsanız bir kayıt defteri saldırısı ( FileSizeLimitInBytesin HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters) ile değiştirilebilir .

  • WebDAV erişimi güvenli değil . WebDAV paylaşımında bir parola ayarlasanız bile, bağlantı yine de httpkorunmaz https, bu nedenle şifrelenmez. WebDAV'ı yalnızca güvenli bir wifi ağında kullanın ve bir internet kafe veya güvenli olmayan başka bir wifi'deyken kesinlikle WebDAV sunucusunu etkinleştirmeyin.


Bu yöntem cihazımda oldukça hızlı. Teşekkür ederim!
Küme

Samsung S10 + Windows 8.0 üzerinde test edilmiştir. İyi çalışıyor.
Brethlosze

5

Sorun samba sunucusu değil, Windows'un bir samba paylaşımına yalnızca 445 numaralı bağlantı noktasında erişebilmesi ve köklü olmayan bir android'de normal bir uygulama 445 numaralı bağlantı noktasını dinleyemiyor.

Ancak bazı TCP bağlantı noktası eşleştirmeleri ile bunun üstesinden gelebilirsiniz:

  1. Android'inize bir samba sunucusu yükleyin ve 7777 gibi bir bağlantı noktasında dinlemesini sağlayın
  2. Bir yere bir TCP bağlantı noktası yönlendirme yazılımı yükleyin (bir VirtualPC'ye kurdum)
  3. 445 numaralı bağlantı noktasındaki bağlantıları dinlemek için bağlantı noktası eşleme yazılımını kurun ve 7777 numaralı bağlantı noktasındaki bağlantıları androidinize iletin
  4. Artık bu virtualPC'deki paylaşılan klasöre erişebilirsiniz ve verileri android üzerinde yüklü samba sunucusundan alırsınız (portmapping yoluyla)

Tüm adımları burada ayrıntılı olarak blogumda açıkladım http://techforpassion.blogspot.it/2013/12/android-how-to-share-folder-over-wifi.html

Farklı samba sunucusu denedim ve bu yapılandırmada çalışan tek ücretsiz uygulamaya Samba Server deniyor


İlginç bir teklif, ancak \\androids.ip:7777explorer adres çubuğuna benzer bir şey giremiyor musunuz?
Tobias Kienzler

1
@tobias kienzler Bildiğim kadarıyla, bu işe yaramaz
Max

2

Alternatif olarak, SD kartınızın içeriğine erişmek için telefonunuzda bir ftp sunucusu çalıştırabilirsiniz. SwiFTP'yi kontrol edin .


İkinci SwiFTP. Kök olmadan telefondan herhangi bir dosya alamazsınız, ancak SD kart için iyi çalışmalıdır.
Webs

2

Şu anda yerel ağda dosya paylaşmak için bir uygulamayı ( köklü olmayan cihazlar için ) bitirdim . Alınan derslerim:

  • Android'de root erişimi olmayan (ayrıcalıksız bağlantı noktasında) bir SMB Sunucusu çalıştırmak mümkündür. Mac OS X sorunsuz olarak bağlanır (ip ve portunuzu Bonjour üzerinden yayınlarsanız). Ama Windows istemiyor. Başka kullanıcılar tarafından zaten belirtildiği gibi, Windows, SMB erişimi için "sabit kodlanmış" ayrıcalıklı bağlantı noktalarını kullanır. Windows ile bağlantı kurmak için bulduğum tek yol, burada açıklandığı gibi (aynı amaç değil, fikir) bir geri döngü ağ bağdaştırıcısı oluşturmaktır . Son olarak, kullanıcı dostu yolun Windows'ta WebDAV kullandığını düşünüyorum . Windows kullanıcı dostu olmasa bile, ipinizi elle girmek zorunda olduğunuzdan ve nasıl keşfedilebileceğinin bir yolunu bulamadım (eğer biliyorsanız, lütfen bana bir satır bırakın).
  • Mac OS X dünyasında KOBİ protokolü açık bir kazanandır . Paylaşımınız Bonjour tarafından otomatik olarak keşfedilecek ve sihirli bir şekilde Finder'da görünecek. WebDAV ve FTP paylaşımlarının göz ardı edilmesi (Finder tarafından otomatik olarak monte edilmez), ancak Bonjour tarafından destekleniyorlar . Üçüncü taraf istemcilerde (örn. Cyberduck) bu paylaşımların otomatik olarak keşfedilmesiyle ilgili bir sorun yoktur.

1

Yanlış anlıyor olabilirim ama bir SMB istemcisine ihtiyacınız var, sunucuya değil. Ayrıca, root erişimine ihtiyacınız yoktur. Dosyaları bilgisayarınıza aktarmak için SMB'yi kullanmak için, SMRO eklentisiyle ASTRO Dosya Yöneticisi'ni kullanabilirsiniz veya ücretsiz olan Dosya Uzmanı da vardır .

Web Paylaşımı gibi bir uygulamayla SMB yerine WebDAV'ı da kullanabilirsiniz .

Geçmişte, bilgisayarımdaki istemci yazılımı ile dosya gezgini aracılığıyla web üzerinden herhangi bir yerden dosya aktarmama izin veren bir uygulama kullandım. Tam bir VNC uygulaması değildi. Yeni bir telefon aldım ve şimdi hayatım boyunca uygulamayı bulamıyorum.


Merhaba cevap için teşekkürler, gerçekten telefonda bir sunucu istedim, böylece benim telefonumu cebimden bile almak zorunda kalmadan eve geldiğimde (Ubuntu) bilgisayarım yeni dosyaları itebilir. PC'de ek yazılım gerektirmez, ancak elbette telefondaki bir FTP veya WebDAV sunucusu da bu gereksinimi karşılar, bu nedenle Dosya Uzmanı işi yapacak gibi görünüyor. Geri sayesinde bildirir şimdi yüklüyorum
Gündüz

Hmmm FTP sunucusu çalışmıyor gibi görünüyor - Ubuntu "Sunucuya Bağlan" sihirbazı "beklenmeyen akış sonu" diyor. İşe gitmek zorundayım, daha sonra tekrar deneyeceğim.
Gün

Hayır işe yarıyor ... acele etme suçum. Bu işi güzel yapmalı teşekkürler.
Gün
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.