Comment partager un dossier avec une autre machine Linux sur le même réseau domestique?


44

J'essaie de partager un dossier sur une machine Ubuntu avec une autre machine Ubuntu du même réseau domestique. Lorsque je clique avec le bouton droit sur le dossier et que je choisis Options de partage, il me dit que je dois installer les services de partage de réseau Windows pour pouvoir partager des dossiers. Qu'est-ce que Windows a à voir avec ça? Je n'essaie pas de partager avec une machine Windows ...

Réponses:


22

Qu'est-ce que Windows a à voir avec ça? Je n'essaie pas de partager avec une machine Windows ...

Vous avez raison, cela peut être déroutant. Alors permettez-moi d'essayer de clarifier les termes tout d'abord:

La façon dont Windows partage les fichiers et les imprimantes s'appelle SMB . Les personnes du projet SAMBA ont mis en œuvre tous les protocoles et spécifications de Microsoft pour Linux. Ubuntu prend donc en charge le même type de partage de fichiers que Windows, appelé Samba.

  • Vous pouvez utiliser SAMBA pour partager des fichiers entre des machines Linux. En fait, vous pouvez le préférer au cas où vous auriez, par exemple, un ami avec son ordinateur Windows.

  • Vous pouvez également utiliser la méthode Linux de partage de fichiers, à savoir NFS (Network File System) - Cette réponse à une question précédente explique comment procéder. (mais c'est plutôt technique)

Ainsi, lorsque la boîte de dialogue Options de partage vous demande d’installer les packages, vous n’installez aucun logiciel Microsoft ou quelque chose du genre. Allez-y et faites-le, c'est parfaitement sûr.

Addenda:

Vous pouvez simplement activer le partage avant de suivre les instructions de Salih Emin. si cela ne fonctionne pas, vous recevrez un simple avertissement, vous pourrez alors suivre les étapes décrites par Salih si nécessaire. Je l'ai essayé sur un système fraîchement installé et à jour, et j'avais vraiment besoin de le faire.


1
Merci pour l'explication. C'est drôle que j'essaye de m'éloigner de Microsoft et il s'avère que même Linux utilise des morceaux de leur travail. Pouah.
EmmyS

4
Eh bien, les gens de Samba ont implémenté les protocoles de Microsoft bien mieux que Microsoft eux-mêmes. Un peu de réconfort :-)
Stefano Palazzo

8

Il existe actuellement un petit bogue dans Lucid, répertorié dans Launchpad: bogue n ° 536766 . Ce bogue n'invite pas l'utilisateur à installer les packages nécessaires pour achever la configuration du partage de fichiers. En attendant, voici une solution rapide.

Vous devez installer libapache2-mod-dnssd et redémarrer. Cliquez sur ce lien pour l'installer ou recherchez libapache2-mod-dnssd dans le Centre logiciel.

Une fois que vous l'avez installé, allez dans Système → Préférences → Partage de fichiers personnels et cochez la case 'Partager les fichiers publics sur le réseau'.

texte alternatif

Ceci fait, vous devriez pouvoir visualiser tous les autres ordinateurs de votre réseau qui ont autorisé le partage de fichiers public dans le dossier Public. Il suffit de cliquer sur Lieux → Réseau pour y voir tous les ordinateurs disponibles et leurs dossiers publics partagés.

Double-cliquez sur l'icône du serveur pour monter le dossier public approprié sur votre bureau.

Via le texte du lien


Ces packages sont-ils associés au serveur Web Apache? J'ai déjà installé apache dans le cadre d'une pile LAMP et je ne veux pas le casser.
EmmyS

1
bonne trouvaille! (J'ai édité la réponse d'ailleurs, ce paquet installera apache2.2-bin comme dépendance, semblait plus facile de cette façon)
Stefano Palazzo

1
@EmmyS, les paquetages ne casseront pas votre installation d'Apache. Je les lance et plus encore sans problèmes.
RolandiXor

J'ai trouvé ce lien utile pour partager un répertoire: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Vous pouvez simplement exécuter un serveur simpleHTTP sur la machine Linux et accéder au même sur l’autre machine.

Pas :

  1. Commencez par démarrer le terminal à partir du dossier à partager.
  2. courir dans le terminal - python -m SimpleHTTPServer
  3. vérifiez votre ip en utilisant ifconfig.
  4. entrez l'adresse IP du navigateur de l'autre machine: 8000 (par exemple: si votre adresse IP est 127.3.4.123, saisissez ensuite 127.3.4.123:8000 dans le navigateur)

Vous obtenez les fichiers requis dans le dossier à télécharger.


4
Télécharger! = Share.
EmmyS

Pour moi, c'est une excellente réponse, bien que pour Python3, ce soitpython3 -m http.server
VanDavv

2

Je crois que c’est ce qui est répertorié dans les paquets SAMBA, ou c’est au moins une partie de leur description. Au lieu de cela, vous pouvez essayer Préférences-> Partage de fichiers qui, je crois, utilise un mécanisme différent. Samba est une chose pratique à installer cependant.


J'avais l'impression (à tort, apparemment) que Samba permettait le partage entre Linux et Windows. Je ne veux pas partager avec Windows, seulement avec une autre machine Linux.
EmmyS

Non, tu avais raison. Bien sûr, les deux machines doivent avoir installé Samba.
Stefano Palazzo

Les deux machines doivent utiliser le protocole SMB. Windows le fait dans un sens. Les machines Linux le font avec samba.
hérisson dément

2

Vous pouvez installer "qweborf". Il partagera le répertoire via HTTP et les autres hôtes pourront y accéder avec un navigateur.

Il peut également activer webdav et permettre au répertoire d'être monté en tant que système de fichiers en lecture / écriture (testé avec davfs2, KDE, Gnome2, OsX).


2

Si vous souhaitez une intégration transparente dans Ubuntu et que la compatibilité Windows ne vous intéresse pas, SSH est votre bon à rien.

Voir Comment puis-je partager des fichiers entre deux ordinateurs Linux sur un réseau local?

Vous devrez peut-être installer le serveur SSH avec:

sudo apt-get install openssh-server

À partir de l'application de gestion de fichiers sur votre client, vous pouvez accéder à votre serveur avec:

sftp://servername.local

Pour accéder aux fichiers depuis un terminal ou par programme, utilisez sshfspour créer un point de montage dans le système de fichiers du client.


D'autres méthodes programmées de copie de fichiers sur SSH incluent scp, et (encore mieux) rsync.
Nobar

2

Pour les réseaux exclusivement Linux, je trouve SSHFS natif, stable et extrêmement rapide. J'ai deux machines Xubuntu (18.04) partageant / les dossiers personnels sur SSH.

Voici comment configurer sshfs et se reconnecter automatiquement après un redémarrage à l’aide de fstab sans fournir de mot de passe. Un grand merci à l' utilisateur de serverfault kubanczyk pour la façon de se reconnecter après une suspension / reprise à distance.

J'utiliserai "Local machine - surfbox" pour l'ordinateur auquel vous vous connectez et "Remote machine - devbox" pour l'ordinateur auquel vous vous connectez.

Remplacez "remoteuser" ci-dessous par le nom d'utilisateur auquel vous vous connectez sur la machine distante et "localuser" par le nom d'utilisateur auquel vous vous connectez sur la machine locale. Pour vérifier les noms d'utilisateur, saisissez le echo $USERterminal sur les machines distantes et locales.

Vérifiez également votre ID utilisateur et votre ID groupe, ils doivent tous deux être 1000.

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

1. Obtenez les adresses IP de vos machines locales et distantes.

hostname -I

Je vais utiliser 192.168.1.150 pour la machine locale ('surfbox') et 192.168.1.151 pour la machine distante ('devbox')

2. Installer des packages sur des ordinateurs locaux et distants

sudo apt install sshfs fuse ssh

3. Créez un groupe fusible et ajoutez-y un utilisateur local

Créer un groupe: sudo groupadd fuse

Ajouter un utilisateur local au groupe: sudo usermod -a -G fuse $user

4. Activer "allow_other" dans la configuration de fusible

Nous aurons besoin de cette option lors du montage dans fstab

Éditez /etc/fuse.confavec votre éditeur de ligne de commande. Supprimez le hashtag avant user_allow_otheret enregistrez.

5. Générer des clés SSH sur la machine locale

Ne fournissez pas de mot de passe lorsque vous y êtes invité . Appuyez simplement sur Entrée pour laisser en blanc.

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

Les clés sont stockées dans le dossier répertoire /.ssh de la machine locale

6. Transférez la clé publique SSH de votre machine locale vers la machine distante.

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

Un mot de passe vous sera demandé pour un utilisateur distant sur un ordinateur distant. La clé publique de la machine locale est maintenant ajoutée au fichier ~ / .ssh / allowed_keys sur la machine distante.

7. Créez un répertoire sur le dossier Ordinateur local / mnt où vous monterez le dossier Ordinateur distant / Accueil.

Choisissez un nom qui ait du sens pour votre ordinateur distant.

sudo mkdir /mnt/devboxhome

8. Montez le répertoire machine / home distant à partir du terminal

La syntaxe pour sshfs est

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

nous utilisons

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

exemple: en supposant que "steve" est le nom d'utilisateur sur les machines locales et distantes

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

Comme vous avez transféré la clé publique RSA sur la machine distante, vous ne devez pas demander de mot de passe pour l'utilisateur distant.

Vous recevrez un avertissement indiquant que la machine n'est pas approuvée et que vous devez lui indiquer si elle doit être ajoutée. Ajoutez la machine distante comme approuvée.

9. Vérifier: Parcourir le répertoire de la machine distante / home

Dans le terminal sur la machine locale, vous pouvez maintenant lister le répertoire machine / home distant sous / mnt / devboxhome

cd /mnt/devboxhome ls

ou utilisez Nautilus pour parcourir le répertoire. Génial.

10. Activer la reconnexion après le redémarrage

Nous allons ajouter une entrée dans / etc / fstab pour que cela se produise. Vous aurez besoin de votre identifiant d'utilisateur local de la machine et de votre identifiant de groupe - voir intro si vous avez manqué cela. Éditez / etc / fstab avec votre éditeur de ligne de commande et ajoutez ces deux lignes à la fin de / 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 fait attendre le noyau jusqu'à ce que le réseau soit opérationnel jusqu'à ce qu'il tente de monter le répertoire sur la machine distante.
  • Comme nous sommes en train d’exécuter en tant que root au démarrage, nous devons spécifier le fichier de clés qui est stocké dans le répertoire de base de localuser.
  • allow_other - les utilisateurs autres que celui qui effectue le montage réel peuvent accéder au système de fichiers monté.
  • idmap = user - traduit uniquement l'UID de l'utilisateur qui se connecte
  • reconnectez, ServersLiveInterval, ServerAliveCountMax - SSH envoie des pings Keep-Alive. Si ServerAliveCountMaxles pings consécutifs échouent, reconnectez-vous.

Un utilisateur qui se connecte en tant que steve sur des machines locales et distantes aurait:

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

IMPORTANT : une barre oblique après le répertoire distant: steve@192.168.1.151: / home / steve /

sauvez / etc / fstab et ....

11. Redémarrage

Vous devriez maintenant pouvoir accéder au répertoire de la machine distante / home dans la machine locale / mnt / devboxhome. Dans Nautilus, vous pouvez faire glisser ce dossier dans la barre des emplacements.

12. répéter

Répétez les mêmes étapes sur la machine distante pour rendre le répertoire / home de la machine locale partagé.


Bonne réponse. Je ne savais pas que l'on pouvait monter des systèmes de fichiers sshfs dans fstab, merci pour cela.
Marbre organique

0

Ma façon de partager des fichiers:

sudo npm install -g http-server

Allez dans le dossier que vous aimez partager, ouvrez le terminal et lancez cette commande:

http-server -o 

Vous pourrez accéder à ce dossier sur toutes les machines du même réseau à l'adresse IP mentionnée par le résultat de cette commande.


0

zx81roadkill a raison, utilisez "sshfs". Samba est de la merde, NFS est des ordures. Sshfs est entièrement utilisable depuis mon ordinateur ici en Californie jusqu'à un ordinateur en Argentine. C'est entièrement sécurisé, c'est aussi rapide que tout le reste (j'ai une ligne gababit).

Sshfs est relativement un nouveau venu comparé à Samba et NFS, mais il est de loin supérieur aux autres. Voici un exemple de son exécution (en supposant que tous les packages soient installés)

# 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

Une fois que vous avez entré le mot de passe, / tmp / my_mount contiendra tous les fichiers de "nom d'utilisateur" sur "machine". Ne vous embêtez pas avec Samba ou NFS. Ils sont juste une douleur inutile dans les fesses à configurer, ou à configurer.

Pour démonter:

fusermount -u /tmp/my_mount

et si cela échoue (pour une raison quelconque):

umount -f /tmp/my_mount

Toutes les données envoyées via le point de montage sont cryptées. Pourquoi ce n’est pas la manière standard, tout à fait acceptée, de monter une machine distante est un mystère pour moi. C'est largement supérieur à toute autre méthode en termes de simplicité.

Si vous avez besoin de vitesse brute, c'est peut-être ce morceau de ferraille gonflé que Samba va faire, ou NFS. Je ne sais pas, 100 Mo / s + est assez bon pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.