Wie teile ich einen Ordner mit einem anderen Linux-Computer im selben Heimnetzwerk?


43

Ich versuche, einen Ordner auf einem Ubuntu-Computer mit einem anderen Ubuntu-Computer im selben Heimnetzwerk zu teilen. Wenn ich mit der rechten Maustaste auf den Ordner klicke und Freigabeoptionen wähle, wird mir mitgeteilt, dass ich die Windows-Netzwerkfreigabedienste installieren muss, um Ordner freizugeben. Was hat Windows damit zu tun? Ich versuche nicht, mit einem Windows-Computer zu teilen ...

Antworten:


22

Was hat Windows damit zu tun? Ich versuche nicht, mit einem Windows-Computer zu teilen ...

Du hast recht, das kann verwirrend sein. Lassen Sie mich zunächst versuchen, die Begriffe zu klären:

Die Art und Weise, wie Windows Dateien und Drucker freigibt, wird als SMB bezeichnet . Die Mitarbeiter des SAMBA- Projekts haben alle Protokolle und Spezifikationen von Microsoft für Linux implementiert. Ubuntu unterstützt daher die gleiche Art der Dateifreigabe wie Windows, die als Samba bezeichnet wird.

  • Sie können SAMBA verwenden, um Dateien zwischen Linux-Computern auszutauschen. In der Tat könnten Sie es vorziehen, wenn Sie zum Beispiel einen Freund mit seinem Windows-Computer haben.

  • Alternativ können Sie die Linux-Methode zum Freigeben von Dateien verwenden. Hierbei handelt es sich um NFS (Network File System). In dieser Antwort auf eine frühere Frage wird die Vorgehensweise erläutert. (aber es ist eher technisch)

Wenn Sie im Dialogfeld "Freigabeoptionen" aufgefordert werden, die Pakete zu installieren, installieren Sie keine Microsoft-Software oder ähnliches. Mach es einfach, es ist absolut sicher.

Nachtrag:

Sie können versuchen, die Freigabe nur zu aktivieren, bevor Sie den Anweisungen von Salih Emin folgen. Wenn es nicht funktioniert, erhalten Sie eine einfache Warnung und können bei Bedarf die von Salih beschriebenen Schritte ausführen. Ich habe es auf einem frisch installierten und aktuellen System ausprobiert, und das musste ich in der Tat tun.


1
Danke für die Erklärung. Es ist komisch, dass ich versuche, mich von Microsoft zu lösen, und es stellt sich heraus, dass selbst Linux Teile ihrer Arbeit verwendet. Pfui.
Emmys

4
Nun, die Samba-Leute haben die Protokolle von Microsoft viel besser implementiert als Microsoft. Ein Trost dort :-)
Stefano Palazzo

8

Gegenwärtig gibt es einen kleinen Fehler in Lucid, der im Launchpad aufgelistet ist: Fehler # 536766 . Dieser Fehler fordert den Benutzer nicht auf, die erforderlichen Pakete zu installieren, um die Einrichtung der Dateifreigabe abzuschließen. Bis dies behoben ist, finden Sie hier eine schnelle Problemumgehung.

Sie müssen libapache2-mod-dnssd installieren und neu starten. Klicken Sie auf diesen Link, um ihn zu installieren, oder suchen Sie im Software Center nach libapache2-mod-dnssd .

Gehen Sie nach der Installation zu System → Einstellungen → Persönliche Dateifreigabe und aktivieren Sie das Kontrollkästchen 'Öffentliche Dateien im Netzwerk freigeben'.

Alt-Text

Sobald dies erledigt ist, sollten Sie in der Lage sein, alle anderen Computer in Ihrem Netzwerk anzuzeigen, die die gemeinsame Nutzung öffentlicher Dateien im öffentlichen Ordner zugelassen haben. Klicken Sie einfach auf Orte → Netzwerk . Dort sollten alle verfügbaren Computer und ihre freigegebenen öffentlichen Ordner angezeigt werden.

Durch Doppelklicken auf das Serversymbol wird der entsprechende öffentliche Ordner auf Ihrem Desktop bereitgestellt.

Über Linktext


Sind diese Pakete überhaupt mit dem Apache-Webserver verknüpft? Ich habe Apache bereits als Teil eines LAMP-Stacks installiert und möchte ihn nicht brechen.
Emmys

1
tolle Entdeckung! (Ich habe die Antwort übrigens bearbeitet, dieses Paket installiert apache2.2-bin als Abhängigkeit, schien auf diese Weise einfacher)
Stefano Palazzo

1
@EmmyS, die Pakete werden Ihre Apache-Installation nicht beschädigen. Ich leite die und mehr ohne Probleme.
RolandiXor

Ich fand diesen Link hilfreich, um tatsächlich ein Verzeichnis freizugeben
MrMas

5

Sie können einfach einen simpleHTTP-Server auf dem Linux-Computer ausführen und auf den gleichen auf dem anderen Computer zugreifen.

Schritte :

  1. Starten Sie zuerst das Terminal aus dem Ordner, den Sie freigeben möchten.
  2. Im Terminal laufen - python -m SimpleHTTPServer
  3. Überprüfen Sie Ihre IP mit ifconfig.
  4. Geben Sie im Browser des anderen Computers die IP-Adresse ein: 8000 (Beispiel: Wenn Ihre IP-Adresse 127.3.4.123 lautet, geben Sie im Browser 127.3.4.123:8000 ein.)

Sie erhalten die benötigten Dateien im Ordner zum Download.


4
Herunterladen! = Teilen.
Emmys

Für mich ist es eine großartige Antwort, obwohl es für Python3python3 -m http.server
VanDavv

2

Ich glaube, das sind die SAMBA-Pakete, unter denen sie aufgelistet sind, oder zumindest ein Teil ihrer Beschreibung. Alternativ können Sie auch Preferences-> File Sharing ausprobieren, bei dem meines Erachtens ein anderer Mechanismus zum Einsatz kommt. Samba ist eine praktische Sache, die man installiert haben muss.


Ich hatte den Eindruck (fälschlicherweise anscheinend), dass Samba das Teilen zwischen Linux und Windows erlaubte. Ich möchte nicht mit Windows teilen, sondern nur mit einem anderen Linux-Computer.
Emmys

Nein, du hattest recht. Auf beiden Rechnern muss natürlich Samba installiert sein.
Stefano Palazzo

Beide Maschinen müssen das SMB-Protokoll verwenden. Windows macht das so. Linux-Rechner machen das mit Samba.
Demented Hedgehog

2

Sie können "qweborf" installieren. Das Verzeichnis wird über HTTP freigegeben, und die anderen Hosts können mit einem Browser darauf zugreifen.

Es kann auch webdav aktivieren und ermöglichen, dass das Verzeichnis als Lese- / Schreib-Dateisystem angehängt wird (getestet mit davfs2, KDE, Gnome2, OsX).


2

Wenn Sie eine nahtlose Integration in Ubuntu wünschen und nicht an Windows-Kompatibilität interessiert sind, ist SSH Ihr Huckleberry.

Siehe Wie kann ich Dateien zwischen zwei Linux-Computern über LAN austauschen?

Möglicherweise müssen Sie den SSH-Server installieren mit:

sudo apt-get install openssh-server

Über die Dateimanager-App auf Ihrem Client können Sie mit folgendem Befehl auf Ihren Server zugreifen:

sftp://servername.local

Um über ein Terminal oder programmgesteuert auf Dateien zuzugreifen sshfs, erstellen Sie einen Einhängepunkt im Dateisystem des Clients.


Andere programmatische Möglichkeiten zum Kopieren von Dateien über SSH sind u. A. scp(Noch besser) rsync.
Nobar

2

Für Linux-Netzwerke finde ich SSHFS nativ, stabil und extrem schnell. Ich habe zwei Xubuntu-Computer (18.04), die / home-Ordner über SSH freigeben.

Hier erfahren Sie , wie Sie sshfs einrichten und die Verbindung nach dem Neustart mithilfe von fstab automatisch wiederherstellen, ohne ein Kennwort eingeben zu müssen. Ein großes Dankeschön an den serverfault-Benutzer kubanczyk für die Wiederherstellung der Verbindung nach einem Remote-Suspend / Resume .

Ich verwende "Local machine - surfbox" für den Computer, von dem aus Sie eine Verbindung herstellen, und "Remote machine - devbox" für den Computer, mit dem Sie eine Verbindung herstellen.

Ersetzen Sie "remoteuser" durch den Benutzernamen, mit dem Sie sich auf dem Remote-Computer anmelden, und "localuser" durch den Benutzernamen, mit dem Sie sich auf dem lokalen Computer anmelden. Um die Benutzernamen zu überprüfen, geben Sie das echo $USERTerminal auf entfernten und lokalen Rechnern ein.

Überprüfen Sie auch Ihre Benutzer-ID und Gruppen-ID. Beide sollten 1000 sein.

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

1. Rufen Sie die IP-Adressen Ihrer lokalen und Remote-Computer ab.

hostname -I

Ich verwende 192.168.1.150 für Local Machine ('surfbox') und 192.168.1.151 für Remote Machine ('devbox')

2. Installieren Sie Pakete auf lokalen und Remote-Computern

sudo apt install sshfs fuse ssh

3. Erstellen Sie eine Gruppensicherung und fügen Sie einen lokalen Benutzer hinzu

Gruppe erstellen: sudo groupadd fuse

Füge localuser zur Gruppe hinzu: sudo usermod -a -G fuse $user

4. Aktivieren Sie "allow_other" in der Sicherungskonfiguration

Diese Option benötigen wir beim Mounten in fstab

Bearbeiten Sie /etc/fuse.confmit Ihrem Befehlszeileneditor. Entfernen Sie den Hashtag zuvor user_allow_otherund speichern Sie.

5. Generieren Sie SSH-Schlüssel auf dem lokalen Computer

Geben Sie kein Passwort ein, wenn Sie dazu aufgefordert werden . Drücken Sie einfach die Eingabetaste, um das Feld leer zu lassen.

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

Die Schlüssel werden im Basisverzeichnis des lokalen Computers /.ssh gespeichert

6. Übertragen Sie Ihren öffentlichen SSH-Schlüssel des lokalen Computers auf den Remote-Computer

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

Sie werden aufgefordert, das Kennwort für den Remote-Benutzer auf dem Remote-Computer einzugeben. Der öffentliche Schlüssel des lokalen Computers wird jetzt zur Datei ~ / .ssh / authorized_keys auf dem Remote-Computer hinzugefügt.

7. Erstellen Sie ein Verzeichnis im Ordner Local machine / mnt, in dem Sie den Ordner Remote machine / home bereitstellen.

Wählen Sie einen beliebigen Namen, der für Ihre Remote-Maschine sinnvoll ist.

sudo mkdir /mnt/devboxhome

8. Hängen Sie das Remote-Computer- / Ausgangsverzeichnis vom Terminal aus ein

Die Syntax für sshfs lautet

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

wir gebrauchen

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

Beispiel: Angenommen, "steve" ist der Benutzername auf lokalen und Remote-Computern

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

Da Sie den öffentlichen RSA-Schlüssel auf den Remote-Computer übertragen haben, sollten Sie nicht zur Eingabe des Remote-Benutzer-Kennworts aufgefordert werden.

Sie erhalten eine Warnung, dass der Computer nicht vertrauenswürdig ist, und werden gefragt, ob er hinzugefügt werden soll. Fügen Sie den Remote-Computer als vertrauenswürdig hinzu.

9. Überprüfen Sie: Durchsuchen Sie das Remote-Maschinen- / Ausgangsverzeichnis

Im Terminal auf dem lokalen Computer können Sie nun das Verzeichnis / home des entfernten Computers unter / mnt / devboxhome auflisten

cd /mnt/devboxhome ls

Oder verwenden Sie Nautilus, um das Verzeichnis zu durchsuchen. Toll.

10. Aktivieren Sie die Wiederherstellung der Verbindung nach dem Neustart

Wir werden einen Eintrag in / etc / fstab hinzufügen, um dies zu ermöglichen. Sie benötigen die Benutzer-ID und die Gruppen-ID Ihres lokalen Computers. Wenn Sie dies verpasst haben, lesen Sie die Einführung. Bearbeiten Sie / etc / fstab mit Ihrem Befehlszeileneditor und fügen Sie diese beiden Zeilen am Ende von / etc / fstab hinzu

# 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 lässt den Kernel warten, bis das Netzwerk aktiv ist, bis er versucht, das Verzeichnis auf dem Remote-Computer bereitzustellen .
  • Da wir während des Bootvorgangs als root ausgeführt werden, müssen wir die Schlüsseldatei angeben, die im lokalen Benutzerverzeichnis gespeichert ist.
  • allow_other - andere Benutzer als derjenige, der das eigentliche Mounten ausführt, können auf das gemountete Dateisystem zugreifen.
  • idmap = user - übersetzt nur die UID des Benutzers, der die Verbindung herstellt
  • reconnect, ServersLiveInterval, ServerAliveCountMax - ssh sendet Keep-Alive-Pings. Wenn ServerAliveCountMaxaufeinanderfolgende Pings fehlschlagen, stellen Sie die Verbindung wieder her.

Ein Benutzer, der sich als Steve auf lokalen und Remote-Rechnern anmeldet, hätte:

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

WICHTIG : Ein Schrägstrich nach dem Remote-Verzeichnis: steve@192.168.1.151: / home / steve /

speichere / etc / fstab und ....

11. Starten Sie neu

Sie sollten nun in der Lage sein, auf das Verzeichnis Remote-Computer / Home im Verzeichnis Local machine / mnt / devboxhome zuzugreifen. In Nautilus können Sie diesen Ordner in die Leiste Places ziehen

12. Wiederholen

Führen Sie auf dem Remote-Computer dieselben Schritte erneut aus, um das Verzeichnis / home des lokalen Computers freizugeben.


Gute Antwort. Ich wusste nicht, dass man sshfs-Dateisysteme in fstab mounten kann, danke dafür.
Bio-Marmor

0

Meine Art, Dateien zu teilen:

sudo npm install -g http-server

Gehen Sie zu dem Ordner, den Sie freigeben möchten, öffnen Sie das Terminal und führen Sie den folgenden Befehl aus:

http-server -o 

Sie können auf diesen Ordner auf allen Computern im selben Netzwerk unter der IP-Adresse zugreifen, die in der Ausgabe dieses Befehls angegeben ist.


0

zx81roadkill ist richtig, benutze "sshfs". Samba ist Mist, NFS ist Müll. Sshfs ist von meinem Computer hier in Kalifornien bis zu einem Computer in Argentinien vollständig verwendbar. Es ist absolut sicher, genauso schnell wie alles andere (ich habe eine Gibabit-Leitung).

Sshfs ist relativ neu im Vergleich zu Samba und NFS, aber es ist beiden weit überlegen. Hier ist ein Beispiel für die Ausführung (vorausgesetzt, Sie haben alle Pakete installiert)

# 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

Sobald Sie das Kennwort eingegeben haben, enthält / tmp / my_mount alle Dateien von "Benutzername" auf "Computer". Mach dir keine Mühe, mit Samba oder NFS rumzuspielen. Sie sind nur ein unnötiger Schmerz im Hintern, entweder zu konfigurieren oder einzurichten.

So hängen Sie ab:

fusermount -u /tmp/my_mount

und wenn das fehlschlägt (aus welchem ​​Grund auch immer):

umount -f /tmp/my_mount

Alle Daten, die über den Mount-Punkt gesendet werden, werden verschlüsselt. Warum dies nicht die übliche, völlig akzeptierte Methode ist, um eine entfernte Maschine zu mounten, ist mir ein Rätsel. In Bezug auf die Einfachheit ist es jeder anderen Methode weit überlegen.

Wenn du rohe Geschwindigkeit brauchst, wird das vielleicht das aufgeblähte Stück Junk-Samba oder NFS tun. Ich weiß nicht, 100 MB / s + sind gut genug für mich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.