Como compartilho uma pasta com outra máquina Linux na mesma rede doméstica?

44

Estou tentando compartilhar uma pasta em uma máquina Ubuntu com outra máquina Ubuntu na mesma rede doméstica. Quando clico com o botão direito do mouse na pasta e escolho Opções de compartilhamento, ele informa que preciso instalar os serviços de compartilhamento de rede do Windows para compartilhar pastas. O que o Windows tem a ver com isso? Não estou tentando compartilhar com uma máquina Windows ...

EmmyS
fonte

Respostas:

22

O que o Windows tem a ver com isso? Não estou tentando compartilhar com uma máquina Windows ...

Você está certo, isso pode ser confuso. Então, deixe-me tentar esclarecer os termos antes de tudo:

A maneira como o Windows compartilha arquivos e impressoras é chamada SMB . As pessoas do projeto SAMBA implementaram todos os protocolos e especificações da Microsoft para Linux. O Ubuntu, portanto, suporta o mesmo tipo de compartilhamento de arquivos que o Windows, chamado Samba.

  • Você pode usar o SAMBA para compartilhar arquivos entre máquinas Linux. Na verdade, você pode preferir, caso tenha, por exemplo, um amigo no computador com Windows.

  • Como alternativa, você pode usar a maneira Linux de compartilhar arquivos, que é o NFS (Network File System) - Esta resposta a uma pergunta anterior explica como fazê-lo. (mas é bastante técnico)

Portanto, quando a caixa de diálogo Opções de compartilhamento solicitar a instalação dos pacotes, você não está instalando nenhum software da Microsoft ou algo assim. Vá em frente e faça isso, é perfeitamente seguro.

Termo aditivo:

Você pode tentar ativar o compartilhamento antes de seguir as instruções de Salih Emin; se não funcionar, você receberá um aviso simples e poderá executar as etapas que Salih descreve, se necessário. Eu tentei em um sistema recém-instalado e atualizado, e eu realmente precisava fazer isso.

Stefano Palazzo
fonte
1
Obrigada pelo esclarecimento. Engraçado que estou tentando me afastar da Microsoft, e até o Linux usa partes do trabalho deles. Ugh.
Emmys
4
Bem, o pessoal do samba implementou os protocolos da Microsoft muito melhor do que eles. Algum consolo lá :-)
Stefano Palazzo
8

No momento, há um pequeno bug no Lucid listado na barra de ativação : bug # 536766 . Esse bug não solicita que o usuário instale os pacotes necessários para concluir a instalação do compartilhamento de arquivos. Até que isso seja resolvido, aqui está uma solução rápida.

Você precisa instalar o libapache2-mod-dnssd e reiniciar. Clique neste link para instalá-lo ou localize libapache2-mod-dnssd no Centro de Software.

Depois de instalá-lo, vá para Sistema → Preferências → Compartilhamento de arquivos pessoais e marque a caixa 'Compartilhar arquivos públicos na rede'.

texto alternativo

Feito isso, você poderá visualizar todos os outros computadores da rede que permitiram o compartilhamento de arquivos públicos na pasta Pública. Basta clicar em Locais → Rede e você verá todos os computadores disponíveis e suas pastas públicas compartilhadas.

Clicar duas vezes no ícone do servidor montará a pasta pública relevante na sua área de trabalho.

Via texto do link

Salih Emin
fonte
Esses pacotes estão associados ao servidor da Web apache? Eu já tenho o apache instalado como parte de uma pilha LAMP e não quero quebrá-lo.
Emmys
1
ótimo encontrar! (Eu editei a resposta a propósito, este pacote irá instalar apache2.2-bin como uma dependência, parecia mais fácil dessa maneira)
Stefano Palazzo
1
@EmmyS, os pacotes não interromperão a instalação do seu apache. Estou executando esses e mais sem problemas.
RolandiXor
Achei este link útil para compartilhar um diretório: itsfoss.com/share-folders-local-network-ubuntu-windows
MrMas
5

Você pode simplesmente executar um servidor simple HTTP na máquina Linux e acessar o mesmo na outra máquina.

Passos :

  1. primeiro inicie o terminal a partir da pasta a ser compartilhada.
  2. executar no terminal - python -m SimpleHTTPServer
  3. verifique seu ip usando ifconfig.
  4. digite no navegador da outra máquina o endereço IP: 8000 (por exemplo: se o seu IP for 127.3.4.123, no navegador, digite 127.3.4.123:8000)

Você obtém os arquivos necessários na pasta para download.

John
fonte
4
Download! = Compartilhar.
Emmys
Para mim, é uma ótima resposta, embora para Python3 seja #python3 -m http.server
VanDavv
2

Acredito que é nisso que os pacotes SAMBA estão listados ou são parte da descrição deles. Como alternativa, você pode tentar Preferências-> Compartilhamento de Arquivos, que acredito usar um mecanismo diferente. O samba é uma coisa útil para ter instalado.

Nerdfest
fonte
Fiquei com a impressão (aparentemente errada) de que o Samba permitia o compartilhamento entre Linux e Windows. Não quero compartilhar com o Windows, apenas com outra máquina Linux.
Emmys
Não, você estava certo. Ambas as máquinas precisam ter o samba instalado, é claro.
Stefano Palazzo
Ambas as máquinas precisam usar o protocolo SMB. O Windows faz isso de uma maneira. Máquinas Linux fazem isso com samba.
ouriço demente
2

Você pode instalar "qweborf". Ele compartilhará o diretório por HTTP e os outros hosts poderão acessar com um navegador.

Ele também pode ativar o webdav e permitir que o diretório seja montado como um sistema de arquivos de leitura / gravação (testado com davfs2, KDE, Gnome2, OsX).

LtWorf
fonte
2

Se você deseja uma integração perfeita no Ubuntu e não está interessado na compatibilidade do Windows, o SSH é o seu huckleberry.

Consulte Como posso compartilhar arquivos entre duas máquinas Linux pela LAN?

Pode ser necessário instalar o servidor SSH com:

sudo apt-get install openssh-server

No aplicativo gerenciador de arquivos do seu cliente, você pode acessar o servidor com:

sftp://servername.local

Para acessar arquivos de um terminal ou programaticamente, use sshfspara criar um ponto de montagem no sistema de arquivos do cliente.

nobar
fonte
Outras formas programáticas de copiar arquivos pelo SSH incluem scpe (ainda melhor) rsync.
Nobar
2

Para redes exclusivamente Linux, considero o SSHFS nativo, estável e extremamente rápido. Eu tenho duas máquinas Xubuntu (18.04) compartilhando / pastas domésticas sobre SSH.

Veja como configurar o sshfs e reconectar-se automaticamente após a reinicialização usando o fstab sem precisar fornecer uma senha. Um grande obrigado ao usuário serverfault kubanczyk por como se reconectar após uma suspensão / retomada remota.

Usarei "Local machine - surfbox" no computador do qual você está se conectando e "Remote machine - devbox" no computador ao qual você está se conectando.

Substitua "remoteuser" abaixo pelo nome de usuário com o qual você efetuou login na máquina remota e "localuser" pelo nome de usuário com o qual você efetuou login na máquina local. Para verificar nomes de usuário, digite o echo $USERterminal em máquinas remotas e locais.

Além disso, verifique o seu userID e groupID, pois ambos devem ser 1000.

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

1. Obtenha endereços IP de suas máquinas locais e remotas.

hostname -I

Usarei 192.168.1.150 para Máquina Local ('surfbox') e 192.168.1.151 para Máquina Remota ('devbox')

2. Instale pacotes em máquinas locais e remotas

sudo apt install sshfs fuse ssh

3. Crie um fusível de grupo e adicione um usuário local a ele

Criar grupo: sudo groupadd fuse

Adicione localuser ao grupo: sudo usermod -a -G fuse $user

4. Ative "allow_other" na configuração do fusível

Vamos precisar dessa opção ao montar no fstab

Edite /etc/fuse.confcom seu editor de linha de comando. Remova a hashtag antes user_allow_othere salve.

5. Gere chaves SSH na máquina local

Não forneça uma senha quando solicitado . Basta pressionar Enter para deixar em branco.

ssh-keygen -t rsa -C [email protected]

As chaves são armazenadas na pasta /.ssh do diretório inicial da máquina local

6. Transfira sua chave SSH pública da máquina local para a máquina remota

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Você será solicitado a fornecer a senha do usuário remoto na máquina remota. A chave pública da máquina local agora é adicionada ao arquivo ~ / .ssh / allowed_keys na máquina remota.

7. Crie um diretório na pasta Local machine / mnt onde você montará a pasta Remote machine / home.

Escolha qualquer nome que faça sentido para sua máquina remota.

sudo mkdir /mnt/devboxhome

8. Monte o diretório remoto da máquina / home a partir do terminal

A sintaxe para sshfs é

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

nós usamos

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

exemplo: supondo que "steve" seja o nome de usuário nas máquinas local e remota

sudo sshfs [email protected]:/home/steve /mnt/devboxhome -o allow_other,default_permissions -o identityfile=/home/steve/.ssh/id_rsa

Como você transferiu a chave pública RSA para a máquina remota, não deve ser solicitada a senha do usuário remoto.

Você receberá um aviso de que a máquina não é confiável e será solicitada se ela for adicionada. Adicione a máquina remota como confiável.

9. Verifique: Navegue no Diretório Remoto / Página Inicial da Máquina

No terminal na máquina local, agora você pode listar a máquina remota / diretório pessoal em / mnt / devboxhome

cd /mnt/devboxhome ls

ou use o Nautilus para navegar no diretório. Ótimo.

10. Habilite a reconexão após a reinicialização

Adicionaremos uma entrada no / etc / fstab para que isso aconteça. Você precisará da sua máquina local userid och groupid - veja a introdução se você perdeu isso. Edite / etc / fstab com seu editor de linha de comando e adicione essas duas linhas no final de / etc / fstab

# Mount devbox at boot [email protected]:/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

  • O delay_connect faz com que o kernel aguarde até que a rede esteja funcionando até tentar montar o diretório na máquina remota.
  • Como estamos executando como root durante a inicialização, temos que especificar o arquivo de chave que é armazenado no diretório inicial do usuário local.
  • allow_other - usuários diferentes daquele que está realizando a montagem real podem acessar o sistema de arquivos montado.
  • idmap = usuário - traduz apenas o UID do usuário conectado
  • reconectar, ServersLiveInterval, ServerAliveCountMax - ssh envia pings de manutenção. Se ServerAliveCountMaxpings consecutivos falharem, reconecte.

Um usuário que efetuasse login como steve em máquinas locais e remotas teria:

[email protected]:/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 : uma barra após o diretório remoto: [email protected]: / home / steve /

salve / etc / fstab e ....

11. Reinicialização

Agora você deve conseguir acessar o diretório Remote machine / home na máquina Local / mnt / devboxhome No Nautilus, você pode arrastar esta pasta para a barra Places

12. Repita

Siga as mesmas etapas novamente na máquina remota para tornar o diretório / home da máquina local compartilhado.

zx81roadkill
fonte
Boa resposta. Eu não sabia que era possível montar sistemas de arquivos sshfs no fstab, obrigado por isso.
Organic Marble
0

Minha maneira de compartilhar arquivos:

sudo npm install -g http-server

Vá para a pasta que você deseja compartilhar, abra o terminal e execute este comando:

http-server -o 

Você poderá acessar essa pasta em todas as máquinas da mesma rede no endereço IP mencionado pela saída desse comando.

rehman_00001
fonte
0

zx81roadkill está certo, use "sshfs". Samba é uma porcaria, NFS é lixo. O Sshfs é totalmente utilizável do meu computador aqui na Califórnia, para um computador na Argentina. É totalmente seguro, é tão rápido quanto qualquer outra coisa (eu tenho uma linha de gibabit).

O Sshfs é relativamente novo, comparado ao Samba e ao NFS, mas é muito superior a ambos. Aqui está um exemplo de como executá-lo (supondo que você tenha todos os pacotes instalados)

# 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

Depois de inserir a senha, / tmp / my_mount conterá todos os arquivos de "nome de usuário" na "máquina". Não se preocupe em brincar com o Samba ou o NFS. Eles são apenas uma dor sem sentido na bunda para configurar ou configurar.

Para desmontar:

fusermount -u /tmp/my_mount

e se isso falhar (por qualquer motivo):

umount -f /tmp/my_mount

Todos os dados enviados pelo ponto de montagem são criptografados. Por que essa não é a maneira padrão e totalmente aceita de montar uma máquina remota é um mistério para mim. É muito superior a qualquer outro método em termos de simplicidade.

Se você precisar de velocidade bruta, talvez esse pedaço de lixo do Samba faça isso, ou NFS. Não sei, 100 MB / s + é bom o suficiente para mim.

Jiminy Idiot
fonte