Jak udostępnić folder innemu komputerowi z systemem Linux w tej samej sieci domowej?


43

Próbuję udostępnić folder na jednym komputerze Ubuntu z innym komputerem Ubuntu w tej samej sieci domowej. Kiedy klikam prawym przyciskiem myszy folder i wybieram Opcje udostępniania, mówi mi, że muszę zainstalować usługi udostępniania sieci Windows w celu udostępniania folderów. Co Windows ma z tym wspólnego? Nie próbuję udostępniać na komputerze z systemem Windows ...

Odpowiedzi:


22

Co Windows ma z tym wspólnego? Nie próbuję udostępniać na komputerze z systemem Windows ...

Masz rację, to może być mylące. Pozwól, że najpierw wyjaśnię warunki:

Sposób udostępniania plików i drukarek przez system Windows nazywa się SMB . Ludzie z projektu SAMBA wdrożyli wszystkie protokoły i specyfikacje Microsoft dla Linuksa. Ubuntu obsługuje zatem ten sam rodzaj udostępniania plików, co Windows, który nazywa się Samba.

  • Za pomocą SAMBA można udostępniać pliki między komputerami z systemem Linux. W rzeczywistości możesz go preferować, na przykład, jeśli masz na przykład przyjaciela z komputerem z systemem Windows.

  • Alternatywnie możesz skorzystać z Linuksowego sposobu udostępniania plików, którym jest NFS (Network File System) - ta odpowiedź na poprzednie pytanie wyjaśnia, jak to zrobić. (ale to raczej techniczne)

Tak więc, gdy okno dialogowe Opcje udostępniania prosi o zainstalowanie pakietów, tak naprawdę nie instalujesz żadnego oprogramowania Microsoft ani nic podobnego. Śmiało, zrób to, jest całkowicie bezpieczne.

Uzupełnienie:

Możesz spróbować włączyć udostępnianie, zanim wykonasz instrukcje Salih Emin; jeśli to nie zadziała, otrzymasz proste ostrzeżenie, w razie potrzeby możesz wykonać kroki opisane przez Saliha. Wypróbowałem to na świeżo zainstalowanym i aktualnym systemie i naprawdę musiałem to zrobić.


1
Dziękuję za wyjaśnienie. Zabawne, że staram się uciec od Microsoftu i okazuje się, że nawet Linux używa części swojej pracy. Ugh.
EmmyS,

4
Cóż, ludzie z Samby zaimplementowali protokoły Microsoftu znacznie lepiej niż sami Microsoft. Trochę pocieszenia :-)
Stefano Palazzo

8

Obecnie w Lucid jest mały błąd wymieniony w Launchpad: błąd # 536766 . Ten błąd nie monituje użytkownika o zainstalowanie niezbędnych pakietów niezbędnych do ukończenia konfiguracji udostępniania plików. Dopóki nie zostanie to rozwiązane, oto krótkie obejście.

Musisz zainstalować libapache2-mod-dnssd i uruchomić ponownie. Kliknij ten link, aby go zainstalować lub znajdź libapache2-mod-dnssd w Centrum oprogramowania.

Po zainstalowaniu przejdź do System → Preferencje → Udostępnianie plików osobistych i zaznacz pole „Udostępnij pliki publiczne w sieci”.

alternatywny tekst

Po zakończeniu tej czynności powinieneś być w stanie wyświetlić wszystkie inne komputery w sieci, które zezwoliły na publiczne udostępnianie plików w folderze publicznym. Wystarczy kliknąć Miejsca → Sieć , a tam powinieneś zobaczyć wszystkie dostępne komputery i ich udostępnione foldery publiczne.

Dwukrotne kliknięcie ikony serwera spowoduje zamontowanie odpowiedniego folderu publicznego na pulpicie.

Poprzez tekst linku


Czy te pakiety są w ogóle powiązane z serwerem WWW Apache? Mam już zainstalowany apache jako część stosu LAMP i nie chcę go łamać.
EmmyS,

1
świetne znalezisko! (Nawiasem mówiąc, zredagowałem odpowiedź, ten pakiet zainstaluje apache2.2-bin jako zależność, wydawał się w ten sposób łatwiejszy)
Stefano Palazzo

1
@EmmyS, pakiety nie zepsują instalacji apache. Używam tych i innych bez żadnych problemów.
RolandiXor

Uważam ten link za pomocny w udostępnianiu katalogu: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Możesz po prostu uruchomić prosty serwer HTTP na komputerze z systemem Linux i uzyskać do niego dostęp na innym komputerze.

Kroki :

  1. najpierw uruchom terminal z folderu, który chcesz udostępnić.
  2. uruchomić w terminalu - python -m SimpleHTTPServer
  3. sprawdź swój ip za pomocą ifconfig.
  4. wpisz w przeglądarce drugiego komputera adres ip: 8000 (np .: jeśli twój ip to 127.3.4.123, to w przeglądarce wpisz 127.3.4.123:8000)

Otrzymasz wymagane pliki w folderze do pobrania.


4
Pobierz! = Udostępnij.
EmmyS

Dla mnie to świetna odpowiedź, chociaż dla Python3 jest topython3 -m http.server
VanDavv,

2

Uważam, że to właśnie są wymienione pakiety SAMBA lub przynajmniej część ich opisu. Alternatywnie możesz wypróbować Preferencje-> Udostępnianie plików, które moim zdaniem wykorzystują inny mechanizm. Samba jest jednak przydatna do zainstalowania.


Miałem wrażenie (mylnie, najwyraźniej), że Samba zezwoliła na dzielenie się między Linuksem a Windowsem. Nie chcę dzielić się z Windows, tylko z innym komputerem z systemem Linux.
EmmyS,

Nie, miałeś rację. Oczywiście na obu maszynach musi być zainstalowana samba.
Stefano Palazzo

Oba komputery muszą korzystać z protokołu SMB. Windows robi to w jeden sposób. Maszyny z systemem Linux robią to z sambą.
szalony jeż

2

Możesz zainstalować „qweborf”. Udostępni katalog przez HTTP, a inne hosty będą mogły uzyskać dostęp za pomocą przeglądarki.

Może także włączyć webdav i umożliwić podłączenie katalogu jako system odczytu / zapisu (testowany z davfs2, KDE, Gnome2, OsX).


2

Jeśli chcesz bezproblemową integrację z Ubuntu i nie interesuje Cię kompatybilność z Windows, SSH to Twój huckleberry.

Zobacz Jak mogę udostępniać pliki między dwoma komputerami z systemem Linux przez sieć LAN?

Może być konieczne zainstalowanie serwera SSH z:

sudo apt-get install openssh-server

Z aplikacji menedżera plików na kliencie możesz uzyskać dostęp do serwera za pomocą:

sftp://servername.local

Aby uzyskać dostęp do plików z terminala lub programowo, użyj sshfsdo utworzenia punktu podłączenia w systemie plików klienta.


Inne programowe sposoby kopiowania plików przez SSH obejmują scp(i jeszcze lepiej) rsync.
nobar

2

W przypadku sieci opartych tylko na systemie Linux SSHFS jest natywny, stabilny i bardzo szybki. Mam dwie maszyny Xubuntu (18.04) do udostępniania / folderów domowych przez SSH.

Oto jak skonfigurować to sshfs i automatyczne ponowne połączenie po ponownym uruchomieniu za pomocą fstab bez konieczności podawania hasła. Ogromne podziękowania dla użytkownika błędu serwera kubańczyk za ponowne połączenie po zdalnym zawieszeniu / wznowieniu.

Użyję „Komputer lokalny - surfbox” na komputerze, z którego się łączysz, i „Komputer zdalny - devbox” na komputerze, z którym się łączysz.

Zastąp poniżej „remoteuser” nazwą użytkownika, na którym logujesz się na komputerze zdalnym, a „localuser” nazwą użytkownika, na którym logujesz się na komputerze lokalnym. Aby zweryfikować nazwy użytkownika, wpisz echo $USERterminal na komputerach zdalnych i lokalnych.

Sprawdź także identyfikator użytkownika i identyfikator grupy, oba powinny mieć wartość 1000.

GroupID: id -g localuser UserID:id -u localuser

1. Uzyskaj adresy IP komputerów lokalnych i zdalnych.

hostname -I

Użyję 192.168.1.150 dla komputera lokalnego („surfbox”) i 192.168.1.151 dla komputera zdalnego („devbox”)

2. Zainstaluj pakiety na komputerach lokalnych i zdalnych

sudo apt install sshfs fuse ssh

3. Utwórz bezpiecznik grupowy i dodaj do niego localuser

Stworzyć grupę: sudo groupadd fuse

Dodaj lokalizator do grupy: sudo usermod -a -G fuse $user

4. Włącz opcję „allow_other” w konfiguracji bezpiecznika

Będziemy potrzebować tej opcji podczas montażu w fstab

Edytuj za /etc/fuse.confpomocą edytora wiersza poleceń. Usuń hashtag wcześniej user_allow_otheri zapisz.

5. Wygeneruj klucze SSH na maszynie lokalnej

Nie podawaj hasła po wyświetleniu monitu . Wystarczy nacisnąć Enter, aby pozostawić puste.

ssh-keygen -t rsa -C youremail@example.com

Klucze są przechowywane w katalogu głównym komputera lokalnego / folderze.s.ssh

6. Przenieś publiczny klucz SSH komputera lokalnego na komputer zdalny

ssh-copy-id -i ~/.ssh/id_rsa.pub remoteuser@192.168.1.151

Zostaniesz poproszony o podanie hasła dla użytkownika zdalnego na zdalnym komputerze. Klucz publiczny komputera lokalnego jest teraz dodawany do pliku ~ / .ssh / author_keys na komputerze zdalnym.

7. Utwórz katalog w folderze Komputer lokalny / mnt, w którym zostanie zamontowany folder Komputer zdalny / domowy.

Wybierz dowolną nazwę, która ma sens dla Twojego Zdalnego komputera.

sudo mkdir /mnt/devboxhome

8. Zamontuj katalog zdalnej maszyny / domowej z terminala

Składnia dla sshfs to

sshfs [user@]host:[directory] mountpoint [options]

Używamy

sudo sshfs [remoteuser]@192.168.1.151:/home/[remoteuser] /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/[localuser]/.ssh/id_rsa

przykład: zakładając, że „steve” jest nazwą użytkownika na komputerach lokalnych i zdalnych

sudo sshfs steve@192.168.1.151:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

Ponieważ przesłałeś publiczny klucz RSA na komputer zdalny, nie powinieneś być proszony o podanie hasła użytkownika zdalnego.

Zostanie wyświetlone ostrzeżenie, że komputer nie jest zaufany, i pojawi się monit, czy należy go dodać. Dodaj komputer zdalny jako zaufany.

9. Weryfikacja: Przeglądaj katalog zdalnej maszyny / domowy

W terminalu na komputerze lokalnym możesz teraz wyświetlić katalog zdalnej maszyny / home w katalogu / mnt / devboxhome

cd /mnt/devboxhome ls

lub użyj Nautilus do przeglądania katalogu. Wspaniały.

10. Włącz ponowne połączenie po ponownym uruchomieniu

Dodamy wpis w / etc / fstab, aby tak się stało. Będziesz potrzebował twojego identyfikatora lokalnego komputera i identyfikatora grupy - zobacz wprowadzenie, jeśli to przegapiłeś. Edytuj / etc / fstab za pomocą edytora wiersza poleceń i dodaj te dwa wiersze na końcu / etc / fstab

# Mount devbox at boot remoteuser@192.168.1.151:/home/[remoteuser]/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/[localuser]/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

  • Delay_connect powoduje, że jądro czeka na połączenie z siecią, dopóki nie spróbuje zamontować katalogu na komputerze zdalnym.
  • Ponieważ podczas uruchamiania działamy jako root, musimy określić plik klucza, który jest przechowywany w katalogu osobistym localuser.
  • allow_other - użytkownicy inni niż wykonujący rzeczywiste montowanie mogą uzyskać dostęp do zamontowanego systemu plików.
  • idmap = użytkownik - tłumaczy tylko UID łączącego użytkownika
  • reconnect, ServersLiveInterval, ServerAliveCountMax - ssh wysyła pingi utrzymujące aktywność . Jeśli ServerAliveCountMaxkolejne pingi nie powiodą się, połącz ponownie.

Użytkownik logujący się jako Steve na komputerach lokalnych i zdalnych miałby:

steve@192.168.1.151:/home/steve/ /mnt/devboxhome fuse.sshfs default_permissions,user,delay_connect,reconnect,serversliveinterval=15,serveralivecountmax=3,allow_other,identityfile=/home/steve/.ssh/id_rsa,idmap=user,uid=1000,gid=1000 0 0

WAŻNE : ukośnik po zdalnym katalogu: steve@192.168.1.151: / home / steve /

zapisz / etc / fstab i ....

11. Uruchom ponownie

Powinieneś być teraz w stanie uzyskać dostęp do zdalnego komputera / katalogu domowego na komputerze lokalnym / mnt / devboxhome W Nautilus możesz przeciągnąć ten folder na pasek Miejsca

12. Powtórz

Ponownie wykonaj te same kroki na komputerze zdalnym, aby udostępnić katalog / home komputera lokalnego.


Niezła odpowiedź. Nie wiedziałem, że można zamontować systemy plików sshfs w fstab, dzięki za to.
Organiczny marmur

0

Mój sposób udostępniania plików:

sudo npm install -g http-server

Przejdź do folderu, który chcesz udostępnić, otwórz terminal i uruchom następujące polecenie:

http-server -o 

Będziesz mógł uzyskać dostęp do tego folderu na wszystkich komputerach w tej samej sieci pod adresem IP wymienionym w danych wyjściowych tego polecenia.


0

zx81roadkill ma rację, użyj „sshfs”. Samba to bzdury, NFS to śmieci. Sshfs jest całkowicie użyteczny z mojego komputera tutaj w Kalifornii na komputer w Argentynie. Jest całkowicie bezpieczny, tak samo szybki jak wszystko inne (mam linię gibabit).

Sshfs jest stosunkowo nowy w porównaniu do Samby i NFS, ale jest o wiele lepszy od obu. Oto przykład jego uruchomienia (zakładając, że masz zainstalowane wszystkie pakiety)

# mount "username"'s home directory on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine: /tmp/my_mount
# mount the root directory on "machine" (note: if "username" on "machine"
# can't write to the file, neither will you.  You have "username"'s privs
  mkdir -p /tmp/my_mount ; sshfs username@machine:/ /tmp/my_mount
# mount the directory "Videos" on "username"'s account on "machine"
  mkdir -p /tmp/my_mount ; sshfs username@machine:Videos /tmp/my_mount

Po wprowadzeniu hasła / tmp / my_mount będzie zawierać wszystkie pliki „nazwy użytkownika” na „maszynie”. Nie zawracaj sobie głowy gadaniem z Sambą lub NFS. To tylko bezsensowny ból w tyłku, który można skonfigurować lub skonfigurować.

Aby odmontować:

fusermount -u /tmp/my_mount

a jeśli to się nie powiedzie (z jakiegokolwiek powodu):

umount -f /tmp/my_mount

Wszystkie dane przesyłane przez punkt montowania są szyfrowane. Dlaczego nie jest to standardowy, całkowicie akceptowany sposób wykonywania montażu na zdalnej maszynie, jest dla mnie tajemnicą. Jest znacznie lepszy od innych metod pod względem prostoty.

Jeśli potrzebujesz surowej prędkości, może zrobi to nadęty śmieć Samba lub NFS. Nie wiem, 100 MB / s + jest dla mnie wystarczająco dobre.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.