Come posso condividere una cartella con un'altra macchina Linux sulla stessa rete domestica?


44

Sto cercando di condividere una cartella su una macchina Ubuntu con un'altra macchina Ubuntu sulla stessa rete domestica. Quando faccio clic con il tasto destro sulla cartella e scelgo Opzioni di condivisione, mi dice che devo installare i servizi di condivisione di rete di Windows per condividere le cartelle. Cosa c'entra Windows con questo? Non sto cercando di condividere con un computer Windows ...

Risposte:


22

Cosa c'entra Windows con questo? Non sto cercando di condividere con un computer Windows ...

Hai ragione, questo può essere fonte di confusione. Vorrei quindi provare a chiarire prima i termini:

Il modo in cui Windows condivide file e stampanti si chiama SMB . Le persone del progetto SAMBA hanno implementato tutti i protocolli e le specifiche di Microsoft per Linux. Ubuntu supporta quindi lo stesso tipo di condivisione di file di Windows, che si chiama Samba.

  • È possibile utilizzare SAMBA per condividere file tra macchine Linux. In effetti, potresti preferirlo nel caso in cui tu abbia, ad esempio, un amico con il suo computer Windows.

  • In alternativa, puoi usare The Linux Way per condividere i file, che è NFS (Network File System): questa risposta a una domanda precedente spiega come farlo. (ma è piuttosto tecnico)

Quindi, quando la finestra di dialogo Opzioni di condivisione ti chiede di installare i pacchetti, in realtà non stai installando alcun software Microsoft o qualcosa del genere. Vai avanti e fallo, è perfettamente sicuro.

Addendum:

Puoi provare ad abilitare solo la condivisione prima di seguire le istruzioni di Salih Emin; se non funziona, riceverai un semplice avviso, quindi puoi eseguire i passaggi descritti da Salih, se necessario. L'ho provato su un sistema appena installato e aggiornato, e in effetti avevo bisogno di farlo.


1
Grazie per la spiegazione. Divertente che sto cercando di allontanarmi da Microsoft, e si scopre che anche Linux usa pezzi del loro lavoro. Ugh.
EmmyS,

4
Bene, la gente della samba ha implementato i protocolli di Microsoft molto meglio degli stessi Microsoft. Qualche conforto lì :-)
Stefano Palazzo

8

Al momento, c'è un piccolo bug in Lucid che è elencato in Launchpad: bug # 536766 . Questo errore non richiede all'utente di installare i pacchetti necessari necessari per completare la configurazione della condivisione dei file. Fino a quando non viene risolto, ecco una rapida soluzione.

Devi installare libapache2-mod-dnssd e riavviare. Fare clic su questo collegamento per installarlo o trovare libapache2-mod-dnssd nel Software Center.

Una volta installato, vai su Sistema → Preferenze → Condivisione file personale e seleziona la casella "Condividi file pubblici sulla rete".

testo alternativo

Una volta fatto ciò, dovresti essere in grado di visualizzare tutti gli altri computer della tua rete che hanno consentito la condivisione di file pubblici nella cartella pubblica. Fai clic su Luoghi → Rete e lì dovresti vedere tutti i computer disponibili e le loro cartelle pubbliche condivise.

Facendo doppio clic sull'icona del server verrà montata la cartella pubblica pertinente sul desktop.

Tramite il testo del link


Quei pacchetti sono associati al web server apache? Ho già installato Apache come parte di uno stack LAMP e non voglio romperlo.
EmmyS,

1
grande scoperta! (Ho modificato la risposta a proposito, questo pacchetto installerà apache2.2-bin come dipendenza, sembrava più facile in questo modo)
Stefano Palazzo

1
@EmmyS, i pacchetti non interromperanno l'installazione di apache. Sto eseguendo quelli e altro senza problemi.
RolandiXor

Ho trovato utile questo link per condividere effettivamente una directory: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas

5

Puoi semplicemente eseguire un server simpleHTTP nella macchina linux e accedere allo stesso sull'altra macchina.

Passaggi:

  1. prima avvia il terminale dalla cartella da condividere.
  2. corri nel terminale - python -m SimpleHTTPServer
  3. controlla il tuo ip usando ifconfig.
  4. inserisci nel browser dell'altra macchina l'indirizzo IP: 8000 (es: se il tuo IP è 127.3.4.123, allora nel browser digiti 127.3.4.123:8000)

Ottieni i file richiesti nella cartella da scaricare.


4
Scarica! = Condividi.
EmmyS,

Per me è un'ottima risposta, anche se per Python3 èpython3 -m http.server
VanDavv il

2

Credo che sia quello che i pacchetti SAMBA sono elencati sotto, o è almeno parte della loro descrizione. In alternativa, puoi provare Preferenze-> Condivisione file che a mio avviso utilizza un meccanismo diverso. Samba è comunque utile da installare.


Avevo l'impressione (a torto, a quanto pare) che Samba consentisse la condivisione tra Linux e Windows. Non voglio condividere con Windows, solo con un'altra macchina Linux.
EmmyS,

No, avevi ragione. Naturalmente entrambe le macchine devono avere samba installato.
Stefano Palazzo

Entrambe le macchine devono utilizzare il protocollo SMB. Windows lo fa in un modo. Le macchine Linux lo fanno con samba.
Demented Hedgehog,

2

È possibile installare "qweborf". Condividerà la directory su HTTP e gli altri host potranno accedere con un browser.

Può anche abilitare webdav e abilitare il montaggio della directory come file di lettura / scrittura (testato con davfs2, KDE, Gnome2, OsX).


2

Se vuoi una perfetta integrazione in Ubuntu e non sei interessato alla compatibilità con Windows, SSH è il tuo huckleberry.

Vedi Come posso condividere file tra due macchine Linux su LAN?

Potrebbe essere necessario installare il server SSH con:

sudo apt-get install openssh-server

Dall'app File Manager sul tuo client, puoi accedere al tuo server con:

sftp://servername.local

Per accedere ai file da un terminale o sshfsa livello di codice , utilizzare per creare un punto di montaggio nel file system del client.


Altri modi programmatici per copiare file su SSH includono scpe (anche meglio) rsync.
nobar

2

Per le reti solo Linux, trovo che SSHFS sia nativo, stabile ed estremamente veloce. Ho due macchine Xubuntu (18.04) che condividono / cartelle home su SSH.

Ecco come impostare sshfs e riconnettersi automaticamente dopo il riavvio utilizzando fstab senza dover fornire una password. Un grande ringraziamento all'utente kubanczyk di serverfault per come riconnettersi dopo una sospensione / ripresa in remoto.

Userò "Macchina locale - surfbox" per il computer da cui ti connetti e "Macchina remota - devbox" per il computer a cui ti stai connettendo.

Sostituisci "remoteuser" di seguito con il nome utente con cui accedi sul computer remoto e "localuser" con il nome utente con cui accedi sul computer locale. Per verificare i nomi utente digitare echo $USERterminale su macchine remote e locali.

Inoltre, controlla l'ID utente o l'ID gruppo, entrambi dovrebbero essere 1000.

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

1. Ottieni gli indirizzi IP dei tuoi computer locali e remoti.

hostname -I

Userò 192.168.1.150 per Local Machine ('surfbox') e 192.168.1.151 per Remote Machine ('devbox')

2. Installare i pacchetti su macchine locali e remote

sudo apt install sshfs fuse ssh

3. Creare un fusibile di gruppo e aggiungere l'utente locale ad esso

Creare un gruppo: sudo groupadd fuse

Aggiungi localuser al gruppo: sudo usermod -a -G fuse $user

4. Abilitare "allow_other" nella configurazione dei fusibili

Avremo bisogno di questa opzione durante il montaggio in fstab

Modifica /etc/fuse.confcon l'editor della riga di comando. Rimuovi l'hashtag prima user_allow_othere salva.

5. Generare chiavi SSH sul computer locale

Non fornire una password quando richiesto . Premi Invio per lasciare vuoto.

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

Le chiavi sono memorizzate nella cartella home directory /.ssh della macchina locale

6. Trasferire la chiave SSH pubblica del computer locale sul computer remoto

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

Ti verrà richiesta la password per Utente remoto su Macchina remota. La chiave pubblica del computer locale viene ora aggiunta al file ~ / .ssh / authorized_keys sul computer remoto.

7. Creare una directory sulla cartella Macchina locale / mnt in cui verrà montata la cartella Macchina / home remota.

Scegli un nome che abbia senso per la tua macchina remota.

sudo mkdir /mnt/devboxhome

8. Montare la macchina / home directory remota dal terminale

La sintassi per sshfs è

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

noi usiamo

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

esempio: supponendo che "steve" sia il nome utente su macchine sia locali che remote

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

Poiché la chiave RSA pubblica è stata trasferita sul computer remoto, non è necessario richiedere la password dell'utente remoto.

Riceverai un avviso che la macchina non è attendibile e ti verrà chiesto se deve essere aggiunto. Aggiungi la macchina remota come attendibile.

9. Verifica: sfogliare la macchina / home directory remota

Nel terminale sul computer locale è ora possibile elencare la directory macchina / home remota in / mnt / devboxhome

cd /mnt/devboxhome ls

o usa Nautilus per sfogliare la directory. Grande.

10. Abilitare la riconnessione dopo il riavvio

Aggiungeremo una voce in / etc / fstab per farlo accadere. Avrai bisogno del tuo userid della macchina locale o del groupid - vedi intro se hai perso questo. Modifica / etc / fstab con l'editor della riga di comando e aggiungi queste due righe alla fine di / 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 fa attendere il kernel fino a quando la rete è attiva fino a quando non tenta di montare la directory sul computer remoto.
  • Dal momento che stiamo eseguendo come root durante l'avvio, dobbiamo specificare il file di chiavi che è memorizzato nella directory home di localuser.
  • allow_other - gli utenti diversi da quello che esegue il montaggio effettivo possono accedere al filesystem montato.
  • idmap = user : traduce solo l'UID dell'utente che si connette
  • riconnetti, ServersLiveInterval, ServerAliveCountMax - ssh invia ping keep-alive. Se i ServerAliveCountMaxping consecutivi falliscono, riconnettersi.

Un utente che accede come steve su macchine locali e remote avrebbe:

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

IMPORTANTE : una barra dopo la directory remota: steve@192.168.1.151: / home / steve /

salva / etc / fstab e ....

11. Riavvia

Ora dovresti essere in grado di accedere al computer remoto / home directory nella macchina locale / mnt / devboxhome In Nautilus puoi trascinare questa cartella nella barra dei luoghi

12. Ripeti

Ripetere gli stessi passaggi sul computer remoto per condividere la directory / home del computer locale.


Bella risposta. Non ero a conoscenza del fatto che si potesse montare il file system sshfs in fstab, grazie per quello.
Marmo organico dal

0

Il mio modo di condividere file:

sudo npm install -g http-server

Vai alla cartella che desideri condividere, apri il terminale ed esegui questo comando:

http-server -o 

Sarai in grado di accedere a quella cartella in tutte le macchine nella stessa rete sull'indirizzo IP menzionato dall'output di quel comando.


0

zx81roadkill ha ragione, usa "sshfs". Samba è una schifezza, NFS è spazzatura. Sshfs è interamente utilizzabile dal mio computer qui in California, a un computer in Argentina. È completamente sicuro, è veloce come qualsiasi altra cosa (ho una linea gibabit).

Sshfs è relativamente nuovo rispetto a Samba e NFS, ma è di gran lunga superiore a entrambi. Ecco un esempio di esecuzione (supponendo che abbiate tutti i pacchetti installati)

# 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

Dopo aver inserito la password, / tmp / my_mount conterrà tutti i file di "nome utente" su "macchina". Non preoccuparti di perdere tempo con Samba o NFS. Sono solo un dolore inutile nel culo da configurare o configurare.

Per smontare:

fusermount -u /tmp/my_mount

e se fallisce (per qualsiasi motivo):

umount -f /tmp/my_mount

Tutti i dati inviati tramite il mount point sono crittografati. Perché questo non è il modo standard, del tutto accettato, di montare una macchina remota è un mistero per me. È di gran lunga superiore a qualsiasi altro metodo in termini di semplicità.

Se hai bisogno di velocità pura, forse quel pezzo gonfio di spazzatura Samba lo farà, o NFS. Non lo so, 100 MB / s + è abbastanza buono per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.