Rede SMB no Linux não carrega arquivos

Olá, aqui na empresa, temos um servidor SMB, e esse servidor serve normalmente para computadores Windows sem problemas.

Agora estamos migrando para o Mint 22.3 e está ocorrendo esse problema:

Nossa rede é toda cabeada

Usamos um ERP, e arrastamos as imagens do contrato que foi escaneada para o cadastro do cliente dentro do ERP, no windows funciona perfeito (do servidor SMB para a estação Windows)

Tentei com os gerenciadores de arquivos: Dolpin, Nautilus, Nemo, sempre que utilizo o “arrastar e soltar” no ERP, aparece essa mensagem:

e não traz os arquivos para o ERP.

Alguém pode me ajudar?

Olá @RonaldoTH, tudo bem?

O ERP é acessado pelo navegador? Se for o caso, qual navegador está utilizando?

Olá, @Thiago12 sim é acessado pelo navegador, e usamos o firefox, chrome e o edge (é de acordo com o gosto do usuário)

Esse problema é um clássico em migrações para o Linux e, felizmente, tem solução!

O que está acontecendo aí é o seguinte: repare na barra de endereços do seu gerenciador de arquivos no segundo print, ela começa com smb://192.168.1.2/… Isso significa que o Linux Mint está acessando a rede através de uma camada virtual (geralmente o GVfs).

Quando você arrasta o arquivo para dentro do ERP (que provavelmente roda no navegador ou em uma aplicação web/Electron), o ERP não consegue entender esse caminho virtual smb:// e tenta puxar um arquivo “vazio”, por isso dá o erro de **0 b** (0 bytes) e a mensagem de erro do servidor. No Windows isso funciona porque ele mascara o caminho de rede de outra forma.

Como resolver definitivamente:

A melhor forma de corrigir isso em um ambiente de trabalho é fazer o Linux montar essa pasta da rede diretamente no sistema de arquivos local (como se fosse uma pasta nativa do seu HD). Dessa forma, o caminho vai virar algo como /media/servidor/comercial e o ERP vai aceitar o ‘arrastar e soltar’ perfeitamente.

Para fazer um teste rápido na máquina:

1. Crie uma pasta local para receber os arquivos:

sudo mkdir -p /media/comercial

2. Monte o compartilhamento da rede nessa pasta (substitua pelo seu usuário e senha da rede):

sudo mount -t cifs -o username=SEU_USUARIO_DA_REDE ``//192.168.1.2/comercial`` /media/comercial

3. Agora, abra o gerenciador de arquivos, vá até a pasta /media/comercial, pegue um contrato e tente arrastar para o ERP.

Se funcionar (e muito provavelmente vai!), o ideal é deixar essa montagem automática configurando o arquivo /etc/fstab de cada máquina para que o funcionário não precise digitar comandos. Se precisar de ajuda para estruturar o fstab com as credenciais seguras, avisa a gente aqui!"

Olá, @Winizinn02 estou no caminho certo, graças a sua ajuda,

consegui montar o servidor corretamente, utilizei esse comando, visto que não tem restrições internas para acessar a rede:

sudo mount -t cifs -o guest,vers=1.0,uid=$(id -u),gid=$(id -g) //192.168.1.2/Comercial /media/comercial

tem alguma ideia de como prosseguir para que carregue o arquivo?

Fala, @RonaldoTH! Que excelente notícia que a montagem manual funcionou! Você mandou muito bem ajustando o comando com o uid e gid, isso já mata de cara qualquer problema de permissão de escrita/leitura.

Olhando os seus prints, o motivo de ainda ter dado o erro de 0 b provavelmente é um destes dois detalhes (ou os dois juntos):

1. Confusão de pastas (Montagens duplicadas)

Se você reparar no seu primeiro print, na barra lateral esquerda (em “Remoto”), aparecem várias montagens antigas: duas /media/comercial e uma /mnt/rede_windows. Se você arrastou o arquivo de uma aba que ainda estava usando o endereço virtual antigo (smb://), o navegador vai continuar dando erro.

2. A versão do protocolo (vers=1.0)

O SMBv1 (vers=1.0) é um protocolo muito antigo e instável para sistemas modernos. Às vezes, o navegador perde o ponteiro do arquivo ao arrastar através dele.

Faz o seguinte, Desmonte tudo o que foi testado antes para não dar conflito (feche o gerenciador de arquivos antes):

sudo umount /media/comercial
sudo umount /mnt/rede_windows

Monte novamente, mas tente forçar uma versão do SMB mais moderna (como a 2.1 ou 3.0), que lida muito melhor com o cache de arquivos do sistema:

sudo mount -t cifs -o guest,vers=3.0,uid=$(id -u),gid=$(id -g) //192.168.1.2/Comercial /media/comercial

O teste crucial:

Abra o seu gerenciador de arquivos, vá na barra lateral, clique em “Sistema de Arquivos” (ou “Raiz”) ➔ media ➔ comercial. Certifique-se de que o caminho no topo da janela seja estritamente /media/comercial (nada de smb://).

Pegue o arquivo daí de dentro e arraste para o ERP.

o protocolo instalado no server é o 1.0

não tenho como usar a versão mais nova

reiniciei o computador para assumir as novas configurações, e então perdeu a configuração da unidade montada

tive que executar novamente o comando:

sudo mount -t cifs -o guest,vers=1.0,uid=$(id -u),gid=$(id -g) //192.168.1.2/Comercial /media/comercial

como fazer para essa informação ficar fixa? sem perder se reiniciar o computador?

e tento desmontar a unidade rede_windows, o sistema diz que não está montado

e tentar montar a unidade dá erro:

Beleza, @RonaldoTH! Agora matamos a charada. Se o servidor exige o vers=1.0, vamos manter ele, sem problemas!

Esse erro do /mnt/rede_windows acontece porque o gerenciador de arquivos guardou um ‘atalho fantasma’ na barra lateral. Como ele ficou salvo ali, quando você clica nele, o sistema tenta montar a rede de forma automática (sem os parâmetros de guest e vers=1.0), gerando o Permission Denied. Pode ignorar esse atalho por enquanto!

1. O Teste do ERP (Importante)

Agora que você reiniciou e rodou o comando manual correto com vers=1.0, faça o teste de arrastar o arquivo para o ERP, mas garanta que você abriu a pasta navegando por: Sistema de Arquivos ➔ media ➔ comercial. Deu certo o envio do arquivo?

quando reinicio o pc, perde a unidade montada, então preciso montar novamente, e acho que isso deve estar gerando o problema, penso em tentar fazer que a unidade seja montada quando inicia o computador

como fazer para que quando inicie já traga essa unidade montada?

tem alguma dica sobre isso?

desde já obrigado por sua ajuda

Ah sim, isso é bem de boa na verdade.

sudo nano /etc/fstab

//192.168.1.2/Comercial /media/comercial cifs guest,vers=1.0,uid=1000,gid=1000,iocharset=utf8,nofail 0 0

Só colocar isso na última linha do arquivo, assim quando reiniciar o computador ele já vai montar a pasta

Opa @Winizinn02 reiniciei e montou a unidade certinho, mas ainda continua a mostrar quando arrasto o item para o navegador, como se estivesse sem conteúdo:

Tem alguma outra ideia?

Boa, @RonaldoTH! O fstab ficou perfeito, menos uma preocupação!

Agora que a pasta está fixa, vamos entender por que o navegador ainda está pirando com o ‘arrastar e soltar’. Tenho duas hipóteses fortes para isso estar acontecendo:

1. O gerenciador de arquivos está mascarando o caminho

Repare que o ícone da pasta /media/comercial na sua barra lateral tem um desenho de “globo” (rede). Se você arrasta dali, o sistema pode estar passando o link de rede em vez do arquivo físico.

Faça esse teste: Em vez de clicar no atalho da barra lateral, abra o seu gerenciador de arquivos, clique em Sistema de Arquivos (o seu HD) ➔ vá na pasta media ➔ entre na pasta comercial. Pegue o arquivo diretamente por esse caminho “raiz” e tente arrastar. Mudou algo? Se continua com erro vamos para a segunda hipótese.

2. O Navegador está em “Sandbox” (Mais provável)

Se o seu navegador (Chrome, Firefox, Chromium) tiver sido instalado no formato Flatpak ou Snap, ele roda isolado do resto do sistema por segurança. Por padrão, navegadores em Sandbox não têm permissão para ler a pasta /media, então para eles o arquivo realmente tem 0 bytes!

Para testar se é isso:

Abra o ERP no navegador.

Em vez de arrastar o arquivo, clique no botão do ERP para “Selecionar arquivo” ou “Procurar” (para abrir a janela de upload do próprio sistema).

Navegue até /media/comercial por essa janela e selecione o arquivo.

Se pelo botão de “Procurar” o arquivo carregar com o tamanho certo, descobrimos o culpado! Aí te ensino a dar permissão definitiva para o seu navegador enxergar a pasta /media. (Ou você usa o navegador em .deb mesmo)

@RonaldoTH Os navegadores estão instalados no formato .deb ou flatpak? Caso esteja rodando em Flatpak, terá que conceder permissão de acesso ao sistema de arquivos do host. Isso pode ser feito com o app Flatseal, ou pela linha de comando:

sudo flatpak override --system --filesystem=host org.mozilla.firefox
(Este comando para o Firefox, adapte o nome para cada navegador);

Eu recomendo mesmo instalar em .deb que é melhor de gerenciar em ambiente corporativo. Mas se não for Flatpak e mesmo assim está com o problema, avise para que possamos procurar outra solução.

Pessoal, obrigado pela ajuda de vocês, gratidão, foram de muita ajuda