A história do usuário segue, apenas para ilustrar melhor como essa é uma questão do Ubuntu ;-)
Eu, como usuário do Ubuntu (em 20.04.2),
gostaria de me
conectar à minha máquina Windows 10 através de um cabo LAN (de preferência através do protocolo SMB)para que
eu possa copiar/mover arquivos e documentos baixados que eu criei láporque
no final do dia eu quero que minha máquina Ubuntu seja o lar canônico (ha!) para meus documentos.
Eu sei que este não é um site de perguntas e respostas do Windows, então sinta-se à vontade para não entrar em detalhes (se você não quiser) sobre as etapas que eu preciso realizar na máquina Windows, mas, por favor, você poderia pelo menos dar uma lista de passos sobre a configuração do Samba como palavras-chave que posso seguir e pesquisar no google uma a uma?
O que eu preciso:
Infelizmente, parece que não posso simplesmente puxar um diretório inteiro e terminar com ele. Em vez disso, gostaria de usar um gerenciador de arquivos gráfico (Nautilus) para "mesclar" o conteúdo de alguns diretórios remotos selecionados em seus diretórios locais correspondentes e resolver manualmente quaisquer conflitos que surjam.
O que eu tentei:
Tentei habilitar o NFS no Windows (porque já tenho alguma experiência em NFS), mas descobri que o Windows 10 ainda tem suporte apenas para NFS 3 e, portanto, os nomes de arquivos transferíveis são limitados a apenas caracteres ASCII; então isso não é bom.
É por isso que estou mirando no Samba.
Acabei seguindo este tutorial:
http://www.bitpi.co/2015/02/16/accessing-a-windows-share-with-a-raspberry-pi/
No Windows:
O artigo é para o Windows 8, então a interface do usuário de configurações de rede no Windows 10 era um pouco diferente, mas conseguiu encontrar tudo.
Descobrir o endereço IP da LAN da máquina Windows também é necessário: o
ipconfig
comando emitido no Powershell o revela.Tarefa extra:
Meu Windows 10 não configura minha rede LAN automaticamente como Privada (no entanto, o compartilhamento foi configurado apenas para redes privadas).
Inicie o Powershell com direitos de administrador para corrigir isso:
No Ubuntu:
Prepare um ponto de montagem:
Install
cifs-utils
, que é uma espécie de drop-in parcial para o samba; os pacotessmbclient
ewinbind
serão instalados automaticamente como suas dependências.Montagem com
cifs
:Observações sobre alguns argumentos selecionados:
//WINDOWS.IP.ADDRESS.HERE/path/on/windows
Observe que do "caminho de rede" sugerido pelo Windows (e que contém o nome da máquina Windows como identificador do servidor), usamos apenas o caminho do sistema de arquivos. O nome da máquina será substituído pelo endereço IP da LAN da máquina Windows. Ele ainda precisa ser precedido por
//
.user=WindowsUserNameHere
O tutorial vinculado acima sugeriu fornecer uma opção - além de
user
- para a senha também, mas isso pode acabar como texto simples em~/.bash_history
, o que é melhor evitar.No entanto, se esta opção de senha for omitida, ela será solicitada interativamente e poderá ser inserida de maneira semelhante à senha sudo do Linux.
Uma possibilidade adicional seria usar a
credentials
opção para apontar para um arquivo contendo os valores de usuário e senha. Essa opção seria a mais adequada, quando a instrução de montagem precisasse entrar em/etc/fstab
. Veja mais sobre isso na documentação vinculada abaixo.uid=$(id -u),gid=$(id -g)
Sem essas opções, o conteúdo da pasta montada não seria gravável, mesmo que no lado do Windows a permissão de gravação fosse concedida. É porque mesmo que a pasta de montagem tenha sido dada ao nosso usuário regular durante nossa preparação, cifs ainda colocaria o conteúdo nela como root: todo o conteúdo dentro ainda seria de propriedade do root.
Precisamos dizer ao cifs para lidar com o conteúdo em nome de nosso usuário regular.
As opções de
uid
egid
vão conseguir isso. Para descobrir seus valores antecipadamente, pode-se executar os comandosid -u
e de forma correspondente.id -g
Eles retornarão o ID de usuário e grupo de nosso usuário regular.Isso, no entanto, pode ser feito de forma automática, com o uso de substituição dinâmica no próprio comando, como visto no trecho acima.
Observe que, se o Windows estiver enviando informações de propriedade junto com o conteúdo, as opções adicionais
forceuid
eforcegid
(nenhum valor necessário) também podem ser necessárias.(Aprendi sobre essas últimas opções na resposta de @Huygens no site Unix SE.)
Neste ponto, o conteúdo do Windows desejado deve estar disponível no
/mnt/my_windows_stuffs/
diretório.Observe que usar plain
rsync
nesta montagem será extremamente lento. Infelizmente, isso é esperado . A cópia normal, no entanto, funciona a preços razoáveis.Quando terminar de trabalhar com esses arquivos, a máquina Windows pode ser desvinculada com:
Veja mais na
mount.cifs
documentação .