SMB

O que é SMB?

SMB significa Server Message Block.

Ele é um protocolo de rede usado para compartilhar arquivos, impressoras e outros recursos em uma rede.

O SMB permite a comunicação entre computadores, servidores, impressoras e outros dispositivos, principalmente em redes locais, como redes domésticas e corporativas.

Ele é muito comum em sistemas Windows, mas também pode ser usado em Linux e macOS através de ferramentas como o Samba.


Para que o SMB é usado?

O SMB é usado para compartilhar recursos em uma rede.

Exemplos comuns:

Compartilhar pastas entre computadores.
Acessar arquivos em um servidor de arquivos.
Compartilhar impressoras na rede.
Permitir acesso a arquivos entre Windows e Linux.
Criar unidades de rede mapeadas.
Centralizar documentos em um servidor.
Controlar acesso a arquivos por usuário e senha.


Como o SMB funciona?

O SMB funciona no modelo cliente-servidor.

Fluxo básico:

Um computador ou servidor compartilha uma pasta, arquivo ou impressora.
Outro dispositivo na rede tenta acessar esse recurso.
O servidor SMB solicita autenticação, se configurado.
O usuário informa nome de usuário e senha.
O servidor verifica as permissões.
Se o acesso for permitido, o cliente consegue abrir, copiar, editar ou remover arquivos.

Exemplo de acesso:

\\servidor\compartilhamento

Ou por IP:

\\192.168.0.10\compartilhamento

Características principais do SMB

O SMB possui algumas características importantes:

Compartilha arquivos e diretórios na rede.
Permite compartilhamento de impressoras.
Usa autenticação de usuário.
Permite controle de acesso por permissões.
É muito usado em redes Windows.
Pode funcionar em Linux com Samba.
Pode funcionar em macOS.
Opera sobre TCP/IP.
Usa principalmente a porta 445/TCP.
Em versões antigas, pode usar portas 137, 138 e 139.


SMB é a mesma coisa que Samba?

Não.

O SMB é o protocolo.

O Samba é uma implementação do SMB para sistemas Unix/Linux.

Resumo:

NomeO que é
SMBProtocolo de compartilhamento de arquivos e impressoras
SambaSoftware que permite usar SMB no Linux/Unix
CIFSNome antigo relacionado a versões antigas do SMB

Com Samba, um servidor Linux pode compartilhar pastas para computadores Windows.


SMB é a mesma coisa que FTP?

Não.

SMB e FTP podem ser usados para acessar arquivos, mas funcionam de formas diferentes.

O SMB é mais usado em redes locais para compartilhamento de pastas e impressoras.

O FTP é usado para transferência de arquivos entre cliente e servidor.

Resumo:

ProtocoloUso principalAmbiente comum
SMBCompartilhar arquivos e impressorasRede local
FTPTransferir arquivosInternet ou rede local
SFTPTransferir arquivos com segurança via SSHServidores Linux

SMB usa TCP ou UDP?

O SMB moderno usa principalmente TCP.

A porta mais comum é:

445/TCP

Versões antigas com NetBIOS podem usar:

137/UDP
138/UDP
139/TCP

Resumo:

PortaProtocoloUso
445TCPSMB direto sobre TCP/IP
137UDPNetBIOS Name Service
138UDPNetBIOS Datagram Service
139TCPNetBIOS Session Service

Qual porta o SMB usa?

O SMB moderno geralmente usa:

445/TCP

Em versões mais antigas, usando NetBIOS over TCP/IP, pode usar:

137/UDP
138/UDP
139/TCP

Em redes atuais, a porta principal é a 445/TCP.


SMB é seguro?

Depende da versão e da configuração.

Versões antigas, como SMBv1, são inseguras e devem ser desativadas.

Versões mais novas, como SMBv2 e SMBv3, são mais seguras e possuem melhorias de desempenho e segurança.

Boas práticas:

Evitar SMBv1.
Usar SMBv2 ou SMBv3.
Exigir autenticação.
Configurar permissões corretamente.
Não expor SMB diretamente na internet.
Usar VPN para acesso remoto.


O que é SMBv1, SMBv2 e SMBv3?

São versões diferentes do protocolo SMB.

VersãoCaracterística
SMBv1Antiga, insegura e não recomendada
SMBv2Mais eficiente e mais segura que SMBv1
SMBv3Mais moderna, com melhorias de segurança e criptografia

O recomendado é desativar SMBv1 e usar SMBv2 ou SMBv3.


Como instalar SMB no Linux?

No Linux, o SMB normalmente é configurado usando o Samba.

No Debian, Ubuntu e derivados:

sudo apt update
sudo apt install samba

Verificar status:

sudo systemctl status smbd

Iniciar o serviço:

sudo systemctl start smbd

Habilitar na inicialização:

sudo systemctl enable smbd

Como configurar SMB no servidor Linux?

O arquivo principal de configuração do Samba é:

/etc/samba/smb.conf

Para editar:

sudo nano /etc/samba/smb.conf

Exemplo simples de compartilhamento:

[Compartilhado]
    path = /srv/samba/compartilhado
    browseable = yes
    read only = no
    guest ok = no

Criar a pasta:

sudo mkdir -p /srv/samba/compartilhado

Ajustar permissões:

sudo chmod 775 /srv/samba/compartilhado

Reiniciar o Samba:

sudo systemctl restart smbd

Como criar usuário SMB no Samba?

O usuário precisa existir no Linux.

Criar usuário:

sudo adduser usuario_smb

Criar senha no Samba:

sudo smbpasswd -a usuario_smb

Ativar usuário:

sudo smbpasswd -e usuario_smb

Depois, esse usuário poderá acessar o compartilhamento SMB usando a senha definida no Samba.


Como acessar SMB pelo Windows?

No Windows, abra o Explorador de Arquivos e digite:

\\ip_do_servidor\Compartilhado

Exemplo:

\\192.168.0.10\Compartilhado

Também é possível mapear como unidade de rede:

Este Computador → Mapear unidade de rede

Informe o caminho:

\\192.168.0.10\Compartilhado

Como acessar SMB pelo Linux?

Instalar cliente SMB:

sudo apt install smbclient cifs-utils

Listar compartilhamentos:

smbclient -L //ip_do_servidor -U usuario_smb

Acessar compartilhamento:

smbclient //ip_do_servidor/Compartilhado -U usuario_smb

Montar compartilhamento no Linux:

sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smb

Criar ponto de montagem, se necessário:

sudo mkdir -p /mnt/smb

Como acessar SMB pelo macOS?

No Finder, clique em:

Ir → Conectar ao Servidor

Digite:

smb://ip_do_servidor/Compartilhado

Exemplo:

smb://192.168.0.10/Compartilhado

Depois informe usuário e senha, se solicitado.


Como liberar SMB no firewall?

Com UFW, liberar SMB moderno:

sudo ufw allow 445/tcp

Se precisar de NetBIOS antigo:

sudo ufw allow 137/udp
sudo ufw allow 138/udp
sudo ufw allow 139/tcp

Verificar firewall:

sudo ufw status

Em redes modernas, normalmente a porta principal é a 445/TCP.


Como testar se o SMB está funcionando?

Testar porta 445:

nc -vz ip_do_servidor 445

Listar compartilhamentos:

smbclient -L //ip_do_servidor -U usuario_smb

Verificar serviço Samba:

sudo systemctl status smbd

Verificar portas abertas:

sudo ss -tulpn | grep -E '445|139'

Testar configuração do Samba:

testparm

Como compartilhar uma pasta com SMB?

Criar pasta:

sudo mkdir -p /srv/samba/arquivos

Ajustar dono:

sudo chown usuario_smb:usuario_smb /srv/samba/arquivos

Editar configuração:

sudo nano /etc/samba/smb.conf

Adicionar:

[Arquivos]
    path = /srv/samba/arquivos
    browseable = yes
    read only = no
    valid users = usuario_smb

Reiniciar serviço:

sudo systemctl restart smbd

Acessar pelo Windows:

\\ip_do_servidor\Arquivos

Como criar compartilhamento público SMB?

Editar:

sudo nano /etc/samba/smb.conf

Exemplo:

[Publico]
    path = /srv/samba/publico
    browseable = yes
    read only = no
    guest ok = yes

Criar pasta:

sudo mkdir -p /srv/samba/publico

Ajustar permissões:

sudo chmod 777 /srv/samba/publico

Reiniciar:

sudo systemctl restart smbd

Atenção: compartilhamento público deve ser usado com cuidado, principalmente em redes não confiáveis.


Diferença entre SMB, FTP, SFTP e NFS

ProtocoloUso principalSegurançaAmbiente comum
SMBCompartilhar arquivos e impressorasDepende da versão/configuraçãoWindows e redes locais
FTPTransferir arquivosNão criptografado por padrãoServidores antigos
SFTPTransferir arquivos via SSHCriptografadoServidores Linux
NFSCompartilhar arquivos em redeDepende da configuraçãoLinux/Unix

Erros comuns no SMB

Access denied

Erro:

Access denied

Ou:

NT_STATUS_ACCESS_DENIED

Possíveis causas:

Usuário sem permissão.
Senha incorreta.
Usuário não existe no Samba.
Permissão da pasta incorreta.
Configuração valid users bloqueando acesso.

Verificar usuário Samba:

sudo pdbedit -L

Criar ou alterar senha:

sudo smbpasswd -a usuario_smb

Verificar permissões:

ls -ld /caminho/da/pasta

Ajustar dono:

sudo chown usuario_smb:usuario_smb /caminho/da/pasta

Connection refused

Erro:

Connection refused

Possíveis causas:

Serviço Samba parado.
Porta 445 fechada.
Firewall bloqueando.
Samba não instalado.
Servidor não está escutando na rede.

Verificar serviço:

sudo systemctl status smbd

Iniciar serviço:

sudo systemctl start smbd

Verificar porta:

sudo ss -tulpn | grep 445

Liberar firewall:

sudo ufw allow 445/tcp

Connection timed out

Erro:

Connection timed out

Possíveis causas:

Firewall bloqueando.
IP incorreto.
Servidor fora do ar.
Porta 445 bloqueada no roteador.
Rede sem rota até o servidor.

Testar conectividade:

ping ip_do_servidor

Testar porta:

nc -vz ip_do_servidor 445

Verificar firewall:

sudo ufw status

Network path not found

Erro no Windows:

Network path not found

Possíveis causas:

Caminho digitado incorretamente.
Servidor SMB fora do ar.
Nome do servidor não resolve no DNS.
Compartilhamento não existe.
Firewall bloqueando SMB.

Teste usando IP:

\\ip_do_servidor\Compartilhado

Exemplo:

\\192.168.0.10\Compartilhado

Verificar compartilhamentos no Linux:

smbclient -L //ip_do_servidor -U usuario_smb

Failed to retrieve share list

Erro:

Failed to retrieve share list from server

Possíveis causas:

Samba parado.
Firewall bloqueando.
NetBIOS desativado.
Compartilhamento não configurado.
Cliente tentando usar versão incompatível do SMB.

Verificar Samba:

sudo systemctl status smbd

Testar configuração:

testparm

Listar compartilhamentos:

smbclient -L //ip_do_servidor -U usuario_smb

Mount error permission denied

Erro:

mount error(13): Permission denied

Possíveis causas:

Usuário ou senha incorretos.
Permissões do compartilhamento incorretas.
Permissões da pasta no Linux incorretas.
Usuário não foi adicionado ao Samba.

Criar senha Samba:

sudo smbpasswd -a usuario_smb

Montar informando versão SMB:

sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smb,vers=3.0

Protocol negotiation failed

Erro:

protocol negotiation failed

Possíveis causas:

Cliente tentando usar versão SMB incompatível.
Servidor permite apenas versões específicas.
SMBv1 desativado no servidor ou cliente.
Cliente antigo tentando acessar servidor moderno.

Tentar especificar versão:

smbclient //ip_do_servidor/Compartilhado -U usuario_smb -m SMB3

Ou na montagem:

sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smb,vers=3.0

Como testar se o SMB está funcionando?

Verificar serviço:

sudo systemctl status smbd

Testar porta:

nc -vz ip_do_servidor 445

Listar compartilhamentos:

smbclient -L //ip_do_servidor -U usuario_smb

Testar configuração:

testparm

Verificar logs:

sudo journalctl -u smbd -f

Ou:

sudo tail -f /var/log/samba/log.smbd

Comandos principais relacionados ao SMB

ComandoFunção
smbclient -L //servidor -U usuarioLista compartilhamentos SMB
smbclient //servidor/compartilhamento -U usuarioAcessa compartilhamento SMB
mount -t cifs //servidor/share /mnt/smb -o username=usuarioMonta compartilhamento no Linux
testparmTesta configuração do Samba
smbpasswd -a usuarioCria senha SMB para usuário
pdbedit -LLista usuários Samba
systemctl status smbdVerifica status do Samba
ss -tulpn | grep 445Verifica porta SMB aberta
ufw allow 445/tcpLibera SMB no firewall
journalctl -u smbd -fMostra logs do Samba

Exemplo completo de uso

Instalar Samba:

sudo apt update
sudo apt install samba

Criar pasta compartilhada:

sudo mkdir -p /srv/samba/arquivos

Criar usuário:

sudo adduser usuario_smb
sudo smbpasswd -a usuario_smb

Ajustar permissões:

sudo chown usuario_smb:usuario_smb /srv/samba/arquivos

Editar configuração:

sudo nano /etc/samba/smb.conf

Adicionar:

[Arquivos]
    path = /srv/samba/arquivos
    browseable = yes
    read only = no
    valid users = usuario_smb

Reiniciar serviço:

sudo systemctl restart smbd

Liberar firewall:

sudo ufw allow 445/tcp

Acessar pelo Windows:

\\ip_do_servidor\Arquivos

Esse exemplo cria um compartilhamento SMB protegido por usuário e senha.


Boas práticas de segurança

Desativar SMBv1.
Usar SMBv2 ou SMBv3.
Não expor SMB diretamente na internet.
Usar VPN para acesso remoto.
Exigir autenticação com usuário e senha.
Criar usuários separados para acesso a compartilhamentos.
Aplicar permissões corretas nas pastas.
Liberar apenas portas necessárias no firewall.
Evitar compartilhamentos públicos sem necessidade.
Monitorar logs de acesso.
Manter Samba e sistema operacional atualizados.
Usar senhas fortes.