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\compartilhamentoOu por IP:
\\192.168.0.10\compartilhamentoCaracterí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:
| Nome | O que é |
|---|---|
| SMB | Protocolo de compartilhamento de arquivos e impressoras |
| Samba | Software que permite usar SMB no Linux/Unix |
| CIFS | Nome 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:
| Protocolo | Uso principal | Ambiente comum |
|---|---|---|
| SMB | Compartilhar arquivos e impressoras | Rede local |
| FTP | Transferir arquivos | Internet ou rede local |
| SFTP | Transferir arquivos com segurança via SSH | Servidores Linux |
SMB usa TCP ou UDP?
O SMB moderno usa principalmente TCP.
A porta mais comum é:
445/TCPVersões antigas com NetBIOS podem usar:
137/UDP
138/UDP
139/TCPResumo:
| Porta | Protocolo | Uso |
|---|---|---|
| 445 | TCP | SMB direto sobre TCP/IP |
| 137 | UDP | NetBIOS Name Service |
| 138 | UDP | NetBIOS Datagram Service |
| 139 | TCP | NetBIOS Session Service |
Qual porta o SMB usa?
O SMB moderno geralmente usa:
445/TCPEm versões mais antigas, usando NetBIOS over TCP/IP, pode usar:
137/UDP
138/UDP
139/TCPEm 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ão | Característica |
|---|---|
| SMBv1 | Antiga, insegura e não recomendada |
| SMBv2 | Mais eficiente e mais segura que SMBv1 |
| SMBv3 | Mais 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 sambaVerificar status:
sudo systemctl status smbdIniciar o serviço:
sudo systemctl start smbdHabilitar na inicialização:
sudo systemctl enable smbdComo configurar SMB no servidor Linux?
O arquivo principal de configuração do Samba é:
/etc/samba/smb.confPara editar:
sudo nano /etc/samba/smb.confExemplo simples de compartilhamento:
[Compartilhado]
path = /srv/samba/compartilhado
browseable = yes
read only = no
guest ok = noCriar a pasta:
sudo mkdir -p /srv/samba/compartilhadoAjustar permissões:
sudo chmod 775 /srv/samba/compartilhadoReiniciar o Samba:
sudo systemctl restart smbdComo criar usuário SMB no Samba?
O usuário precisa existir no Linux.
Criar usuário:
sudo adduser usuario_smbCriar senha no Samba:
sudo smbpasswd -a usuario_smbAtivar usuário:
sudo smbpasswd -e usuario_smbDepois, 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\CompartilhadoExemplo:
\\192.168.0.10\CompartilhadoTambém é possível mapear como unidade de rede:
Este Computador → Mapear unidade de redeInforme o caminho:
\\192.168.0.10\CompartilhadoComo acessar SMB pelo Linux?
Instalar cliente SMB:
sudo apt install smbclient cifs-utilsListar compartilhamentos:
smbclient -L //ip_do_servidor -U usuario_smbAcessar compartilhamento:
smbclient //ip_do_servidor/Compartilhado -U usuario_smbMontar compartilhamento no Linux:
sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smbCriar ponto de montagem, se necessário:
sudo mkdir -p /mnt/smbComo acessar SMB pelo macOS?
No Finder, clique em:
Ir → Conectar ao ServidorDigite:
smb://ip_do_servidor/CompartilhadoExemplo:
smb://192.168.0.10/CompartilhadoDepois informe usuário e senha, se solicitado.
Como liberar SMB no firewall?
Com UFW, liberar SMB moderno:
sudo ufw allow 445/tcpSe precisar de NetBIOS antigo:
sudo ufw allow 137/udp
sudo ufw allow 138/udp
sudo ufw allow 139/tcpVerificar firewall:
sudo ufw statusEm redes modernas, normalmente a porta principal é a 445/TCP.
Como testar se o SMB está funcionando?
Testar porta 445:
nc -vz ip_do_servidor 445Listar compartilhamentos:
smbclient -L //ip_do_servidor -U usuario_smbVerificar serviço Samba:
sudo systemctl status smbdVerificar portas abertas:
sudo ss -tulpn | grep -E '445|139'Testar configuração do Samba:
testparmComo compartilhar uma pasta com SMB?
Criar pasta:
sudo mkdir -p /srv/samba/arquivosAjustar dono:
sudo chown usuario_smb:usuario_smb /srv/samba/arquivosEditar configuração:
sudo nano /etc/samba/smb.confAdicionar:
[Arquivos]
path = /srv/samba/arquivos
browseable = yes
read only = no
valid users = usuario_smbReiniciar serviço:
sudo systemctl restart smbdAcessar pelo Windows:
\\ip_do_servidor\ArquivosComo criar compartilhamento público SMB?
Editar:
sudo nano /etc/samba/smb.confExemplo:
[Publico]
path = /srv/samba/publico
browseable = yes
read only = no
guest ok = yesCriar pasta:
sudo mkdir -p /srv/samba/publicoAjustar permissões:
sudo chmod 777 /srv/samba/publicoReiniciar:
sudo systemctl restart smbdAtenção: compartilhamento público deve ser usado com cuidado, principalmente em redes não confiáveis.
Diferença entre SMB, FTP, SFTP e NFS
| Protocolo | Uso principal | Segurança | Ambiente comum |
|---|---|---|---|
| SMB | Compartilhar arquivos e impressoras | Depende da versão/configuração | Windows e redes locais |
| FTP | Transferir arquivos | Não criptografado por padrão | Servidores antigos |
| SFTP | Transferir arquivos via SSH | Criptografado | Servidores Linux |
| NFS | Compartilhar arquivos em rede | Depende da configuração | Linux/Unix |
Erros comuns no SMB
Access denied
Erro:
Access deniedOu:
NT_STATUS_ACCESS_DENIEDPossí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 -LCriar ou alterar senha:
sudo smbpasswd -a usuario_smbVerificar permissões:
ls -ld /caminho/da/pastaAjustar dono:
sudo chown usuario_smb:usuario_smb /caminho/da/pastaConnection refused
Erro:
Connection refusedPossí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 smbdIniciar serviço:
sudo systemctl start smbdVerificar porta:
sudo ss -tulpn | grep 445Liberar firewall:
sudo ufw allow 445/tcpConnection timed out
Erro:
Connection timed outPossí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_servidorTestar porta:
nc -vz ip_do_servidor 445Verificar firewall:
sudo ufw statusNetwork path not found
Erro no Windows:
Network path not foundPossí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\CompartilhadoExemplo:
\\192.168.0.10\CompartilhadoVerificar compartilhamentos no Linux:
smbclient -L //ip_do_servidor -U usuario_smbFailed to retrieve share list
Erro:
Failed to retrieve share list from serverPossí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 smbdTestar configuração:
testparmListar compartilhamentos:
smbclient -L //ip_do_servidor -U usuario_smbMount error permission denied
Erro:
mount error(13): Permission deniedPossí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_smbMontar informando versão SMB:
sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smb,vers=3.0Protocol negotiation failed
Erro:
protocol negotiation failedPossí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 SMB3Ou na montagem:
sudo mount -t cifs //ip_do_servidor/Compartilhado /mnt/smb -o username=usuario_smb,vers=3.0Como testar se o SMB está funcionando?
Verificar serviço:
sudo systemctl status smbdTestar porta:
nc -vz ip_do_servidor 445Listar compartilhamentos:
smbclient -L //ip_do_servidor -U usuario_smbTestar configuração:
testparmVerificar logs:
sudo journalctl -u smbd -fOu:
sudo tail -f /var/log/samba/log.smbdComandos principais relacionados ao SMB
| Comando | Função |
|---|---|
smbclient -L //servidor -U usuario | Lista compartilhamentos SMB |
smbclient //servidor/compartilhamento -U usuario | Acessa compartilhamento SMB |
mount -t cifs //servidor/share /mnt/smb -o username=usuario | Monta compartilhamento no Linux |
testparm | Testa configuração do Samba |
smbpasswd -a usuario | Cria senha SMB para usuário |
pdbedit -L | Lista usuários Samba |
systemctl status smbd | Verifica status do Samba |
ss -tulpn | grep 445 | Verifica porta SMB aberta |
ufw allow 445/tcp | Libera SMB no firewall |
journalctl -u smbd -f | Mostra logs do Samba |
Exemplo completo de uso
Instalar Samba:
sudo apt update
sudo apt install sambaCriar pasta compartilhada:
sudo mkdir -p /srv/samba/arquivosCriar usuário:
sudo adduser usuario_smb
sudo smbpasswd -a usuario_smbAjustar permissões:
sudo chown usuario_smb:usuario_smb /srv/samba/arquivosEditar configuração:
sudo nano /etc/samba/smb.confAdicionar:
[Arquivos]
path = /srv/samba/arquivos
browseable = yes
read only = no
valid users = usuario_smbReiniciar serviço:
sudo systemctl restart smbdLiberar firewall:
sudo ufw allow 445/tcpAcessar pelo Windows:
\\ip_do_servidor\ArquivosEsse 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.