Aula 19: NFS e Samba — compartilhamento de arquivos em rede

Aula 19: NFS e Samba — compartilhamento de arquivos em rede

Em ambientes corporativos, data centers e até mesmo em laboratórios domésticos avançados, a capacidade de compartilhar arquivos entre sistemas Linux e Windows de forma transparente, segura e de alto desempenho é uma habilidade fundamental para qualquer profissional de infraestrutura. É exatamente isso que você vai dominar nesta aula, combinando dois pilares do compartilhamento de arquivos em rede: NFS e Samba. O NFS (Network File System) é o protocolo nativo do universo UNIX/Linux para montar sistemas de arquivos remotos como se fossem locais, oferecendo baixa latência e integração total com permissões POSIX. Já o Samba implementa o protocolo SMB/CIFS (Server Message Block / Common Internet File System), permitindo que máquinas Linux atuem como servidores de arquivos para clientes Windows, macOS e outros Linux, com suporte a autenticação, listas de controle de acesso (ACLs) e integração com Active Directory.

Por que você precisa conhecer NFS e Samba a fundo? Imagine um cluster de servidores web que precisa acessar o mesmo diretório de assets estáticos — o NFS resolve isso com simplicidade e performance. Agora pense em uma empresa com 200 estações de trabalho Windows que precisam acessar um repositório centralizado de documentos e perfis de usuários — o Samba é a resposta. Em nossos projetos na JRT Technology Solutions, frequentemente implementamos NFS e Samba lado a lado no mesmo servidor: o NFS para comunicação interna entre servidores Linux e o Samba para servir os departamentos que utilizam Windows. Essa dualidade é tão comum que dominar ambas as tecnologias é considerado pré-requisito para cargos de administrador de sistemas pleno e sênior.

Ao final desta aula, você terá configurado do zero um servidor de arquivos funcional, capaz de exportar diretórios via NFS para clientes Linux e compartilhar pastas via Samba para máquinas Windows, com autenticação, permissões adequadas e tolerância a falhas. Todos os passos são reproduzíveis em distribuições da família Debian (Ubuntu 22.04/24.04) e da família Red Hat (Rocky Linux 9, CentOS Stream), garantindo versatilidade em qualquer infraestrutura. Você também aprenderá a testar cada configuração, interpretar logs e solucionar os problemas mais frequentes que surgem em ambientes reais de produção — aqueles que nós, da JRT Technology Solutions, enfrentamos diariamente em implantações de grande porte.

Prepare-se para uma aula densa, com mais de 4.000 palavras de conteúdo puramente prático. Abra seu terminal, tenha acesso root ou sudo em duas máquinas (uma que será o servidor e outra que será o cliente) e acompanhe com atenção. Não pule os blocos de saída esperada: eles são seu termômetro para saber se está tudo correndo como deveria. Vamos construir juntos um ambiente de compartilhamento de arquivos profissional, do zero, passo a passo.

O que você vai aprender nesta aula

  • Compreender a arquitetura e o funcionamento dos protocolos NFS e SMB/CIFS
  • Instalar e configurar o servidor NFS no Ubuntu/Debian e no Rocky Linux/CentOS
  • Criar exports do NFS com opções avançadas de segurança e performance
  • Montar compartilhamentos NFS em clientes Linux de forma temporária e permanente (fstab)
  • Instalar e configurar o Samba como servidor standalone e com autenticação por usuário
  • Criar e gerenciar usuários do Samba com smbpasswd e pdbedit
  • Conectar clientes Windows e Linux a compartilhamentos Samba
  • Ajustar firewall (firewalld e ufw) e permissões de sistema de arquivos para ambos os serviços
  • Diagnosticar e corrigir os erros mais comuns em configurações de NFS e Samba
  • Entender as diferenças de uso entre NFS e Samba e quando aplicar cada um

Pré-requisitos e Ambiente

Para executar todos os procedimentos desta aula, você precisará de pelo menos duas máquinas com Linux instalado — uma atuará como servidor e a outra como cliente. Recomendamos máquinas virtuais leves (1 GB de RAM, 1 vCPU) com sistemas limpos ou recém-atualizados. Nossos especialistas utilizam diariamente o VirtualBox ou Proxmox para cenários como este. Os sistemas operacionais cobertos são Ubuntu Server 22.04/24.04 LTS e Rocky Linux 9 / CentOS Stream 9. Você também precisará de um cliente Windows (virtual ou físico) para testar os compartilhamentos Samba. É imprescindível que você tenha acesso root ou privilégios sudo em ambos os sistemas Linux e que eles estejam na mesma rede local, com comunicação ICMP liberada (ping entre eles deve funcionar). Verifique também se o relógio está sincronizado via NTP ou chronyd, pois o Samba pode apresentar falhas de autenticação em caso de diferença superior a 5 minutos entre servidor e cliente. Por fim, certifique-se de que as aulas anteriores do curso foram concluídas, especialmente os tópicos de gerenciamento de usuários, permissões de arquivos e fundamentos de rede (TCP/IP, portas e firewall).

Entendendo NFS e Samba: Arquitetura e Propósito

Antes de sujar as mãos no terminal, é crucial compreender o papel de cada tecnologia no ecossistema de compartilhamento de arquivos. O NFS (Network File System) foi desenvolvido pela Sun Microsystems na década de 1980 e se tornou o padrão de fato para compartilhamento entre sistemas UNIX e Linux. Sua operação é transparente: uma vez montado, o diretório remoto se comporta exatamente como um diretório local, preservando permissões de arquivo (dono, grupo, modos), timestamps e até mesmo suporte a links simbólicos e dispositivos de bloco. O NFS opera sobre RPC (Remote Procedure Call), que por sua vez utiliza portas dinâmicas coordenadas pelo serviço rpcbind (portmapper). A versão mais comum atualmente é o NFSv4, que consolidou as operações auxiliares (mount, locking, status) em uma única porta TCP (2049), simplificando travessias de firewall e oferecendo melhorias de segurança como suporte a Kerberos e integração com ACLs estendidas.

Já o Samba é a implementação livre do protocolo SMB (Server Message Block), originalmente criado pela IBM e posteriormente adotado e estendido pela Microsoft como CIFS. O Samba permite que servidores Linux atuem como controladores de domínio, servidores de arquivos, servidores de impressão e até membros de domínios Active Directory. Para esta aula, focaremos no modo standalone (servidor independente), onde o Samba gerencia seus próprios usuários e senhas, sem dependência de um domínio central. O Samba utiliza as portas TCP 139 (NetBIOS Session, legado), 445 (SMB over TCP, moderno) e UDP 137-138 (NetBIOS Name Service, resolução de nomes). A configuração é centralizada em um único arquivo, o /etc/samba/smb.conf, que controla desde os compartilhamentos individuais até políticas de autenticação e logging.

Em nossos projetos na JRT Technology Solutions, frequentemente nos perguntam: “Qual devo usar, NFS ou Samba?” A resposta depende exclusivamente do ambiente. Se sua infraestrutura é 100% Linux/UNIX e você prioriza performance e simplicidade, o NFS é a escolha natural — ele é mais leve, não exige autenticação por usuário no modo básico e preserva permissões POSIX nativamente. Se você precisa atender estações Windows, utilizar permissões granulares baseadas em grupos do Active Directory ou oferecer suporte a clientes heterogêneos (Windows, macOS, Linux), o Samba é indispensável. Em muitos cenários reais, utilizamos ambos simultaneamente no mesmo servidor, exportando o mesmo diretório via NFS para backends e via Samba para os funcionários, cada protocolo ajustado com suas devidas camadas de segurança. Essa é a beleza do Linux: flexibilidade total.

Instalação e Configuração do Servidor NFS

Vamos começar pelo servidor NFS, que será responsável por exportar um diretório que posteriormente montaremos em um cliente Linux. O processo de instalação difere ligeiramente entre famílias de distribuições, mas o conceito é o mesmo: instalar o pacote do servidor NFS, criar o diretório a ser compartilhado, configurar o arquivo /etc/exports e ativar os serviços necessários. Acompanhe com atenção cada comando. Em sistemas Debian/Ubuntu, o pacote chama-se nfs-kernel-server, que já inclui o suporte ao NFSv4 e as ferramentas de gerenciamento. Em sistemas Red Hat/Rocky Linux, o pacote é nfs-utils, que fornece tanto o servidor quanto o cliente.

Procedimento no Ubuntu/Debian (servidor):

  1. Atualize o cache de pacotes e instale o servidor NFS com o comando apt update seguido de apt install nfs-kernel-server -y.
  2. Verifique se o serviço nfs-server está habilitado e em execução com systemctl status nfs-server.
  3. Crie o diretório que será exportado — usaremos /srv/nfs/compartilhado como exemplo.
  4. Ajuste as permissões básicas do diretório para um usuário e grupo de teste: chown nobody:nogroup /srv/nfs/compartilhado.
  5. Configure o arquivo /etc/exports para definir quais clientes podem acessar o diretório e com quais opções.
  6. Exporte as configurações com exportfs -rav e reinicie o servidor NFS para garantir.

Procedimento no Rocky Linux/CentOS (servidor):

  1. Instale o pacote com dnf install nfs-utils -y.
  2. Habilite e inicie os serviços nfs-server e rpcbind. No Rocky Linux 9, o rpcbind geralmente já está rodando, mas é prudente garantir.
  3. Crie o diretório /srv/nfs/compartilhado e defina o owner como nobody:nobody (no Red Hat, o grupo padrão é nobody, não nogroup).
  4. Edite /etc/exports com as mesmas entradas, atentando-se às políticas de SELinux que possam bloquear o acesso.
  5. Use exportfs -rav e reinicie o serviço.

# === SERVIDOR NFS - Ubuntu/Debian ===
# Atualizar repositórios e instalar o pacote do servidor NFS
sudo apt update
sudo apt install nfs-kernel-server -y

# Habilitar e iniciar o serviço (já é habilitado por padrão)
sudo systemctl enable nfs-server
sudo systemctl start nfs-server

# Criar o diretório base para exportação
sudo mkdir -p /srv/nfs/compartilhado

# Ajustar propriedade: nobody:nogroup é o padrão para acessos anônimos no Debian
sudo chown nobody:nogroup /srv/nfs/compartilhado
sudo chmod 755 /srv/nfs/compartilhado

● nfs-server.service - NFS server and services
   Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2026-07-06 09:15:22 -03; 12s ago

Agora, em ambos os sistemas, o coração da configuração está no arquivo /etc/exports. Este arquivo define, linha a linha, cada diretório exportado, os clientes autorizados (por IP, rede ou hostname) e as opções de montagem. A sintaxe básica é: diretorio cliente(opcoes) cliente(opcoes)…. As opções controlam comportamento de escrita, sincronização, mapeamento de usuários e muito mais. Vamos criar uma configuração robusta para nosso diretório de exemplo.


# /etc/exports — Configuração completa do servidor NFS
# Compartilha /srv/nfs/compartilhado para toda a rede 192.168.1.0/24
# Opções detalhadas:
#  rw             - permite leitura e escrita
#  sync           - escrita síncrona (mais seguro, evita corrupção de dados)
#  no_subtree_check - desabilita verificação de subárvore (performance)
#  no_root_squash - NÃO compacta root (use com extremo cuidado; em produção use root_squash)
#  anonuid=65534  - mapeia acessos anônimos para o UID 65534 (nobody/nfsnobody)
#  anongid=65534  - mapeia acessos anônimos para o GID 65534 (nogroup/nobody)

/srv/nfs/compartilhado  192.168.1.0/24(rw,sync,no_subtree_check,root_squash,anonuid=65534,anongid=65534)

# Se preferir limitar a um IP específico:
# /srv/nfs/compartilhado  192.168.1.100(rw,sync,no_subtree_check)

Após editar /etc/exports, execute exportfs -rav para recarregar a tabela de exportações sem reiniciar o serviço. A flag -r reexporta todos os diretórios; -a aplica todas as entradas do /etc/exports; -v (verbose) mostra o status de cada exportação.


# Recarregar exports e verificar o que está sendo exportado
sudo exportfs -rav

exporting 192.168.1.0/24:/srv/nfs/compartilhado

Agora, no Rocky Linux/CentOS, há um passo adicional: o firewalld e o SELinux. O NFSv4 utiliza a porta TCP 2049, mas serviços RPC auxiliares (lockd, statd, mountd) podem usar portas aleatórias, a menos que fixadas. Para simplificar, abra o serviço NFS pré-definido no firewalld e ajuste o SELinux.


# === SERVIDOR NFS - Rocky Linux 9 / CentOS Stream 9 ===
sudo dnf install nfs-utils -y
sudo systemctl enable --now nfs-server rpcbind

sudo mkdir -p /srv/nfs/compartilhado
sudo chown nobody:nobody /srv/nfs/compartilhado
sudo chmod 755 /srv/nfs/compartilhado

# Configurar firewall — adiciona os serviços NFS, rpc-bind e mountd
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload

# Ajustar SELinux para permitir exportação NFS (contexto padrão: public_content_t)
sudo setsebool -P nfs_export_all_rw 1
# Ou rotular o diretório especificamente:
# sudo semanage fcontext -a -t public_content_rw_t "/srv/nfs/compartilhado(/.*)?"
# sudo restorecon -Rv /srv/nfs/compartilhado

Configuração do Cliente NFS e Montagem Permanente

Com o servidor exportando o diretório, vamos configurar o cliente Linux para montá-lo. O pacote necessário é nfs-common no Ubuntu/Debian e nfs-utils no Rocky Linux/CentOS (o mesmo pacote do servidor, que também provê as ferramentas de cliente). A montagem pode ser feita de forma temporária com o comando mount ou de forma permanente adicionando uma linha ao /etc/fstab. Para testar se o servidor está acessível e quais exports estão disponíveis, utilizamos showmount -e <IP_DO_SERVIDOR>.


# === CLIENTE NFS - Ubuntu/Debian ===
sudo apt update
sudo apt install nfs-common -y

# Verificar exports disponíveis no servidor
showmount -e 192.168.1.10

Export list for 192.168.1.10:
/srv/nfs/compartilhado 192.168.1.0/24

Crie agora um ponto de montagem local e realize a montagem temporária usando o comando mount com a opção -t nfs4 para forçar NFSv4. Após a montagem, crie um arquivo de teste e verifique as permissões.


# Criar ponto de montagem e montar o export NFS
sudo mkdir -p /mnt/nfs_cliente
sudo mount -t nfs4 192.168.1.10:/srv/nfs/compartilhado /mnt/nfs_cliente

# Verificar montagem
df -hT /mnt/nfs_cliente

# Criar arquivo de teste
echo "Teste NFS - Aula 19" | sudo tee /mnt/nfs_cliente/teste.txt
ls -la /mnt/nfs_cliente/

Filesystem                        Type  Size  Used Avail Use% Mounted on
192.168.1.10:/srv/nfs/compartilhado nfs4   50G  5.2G   45G  11% /mnt/nfs_cliente
total 12
drwxr-xr-x 2 nobody nogroup 4096 Jul  6 10:22 .
drwxr-xr-x 3 root   root    4096 Jul  6 10:20 ..
-rw-r--r-- 1 nobody nogroup   21 Jul  6 10:22 teste.txt

Para que a montagem persista após reboot, adicione a entrada correspondente no /etc/fstab. Esta é uma prática padrão em servidores de produção. A sintaxe segue: servidor:/caminho ponto_montagem nfs opcoes 0 0. Opções recomendadas incluem hard (o cliente insiste na operação em caso de timeout, em vez de retornar erro), intr (permite interromper operações travadas com Ctrl+C), rsize=8192,wsize=8192 (otimização de buffer de leitura e escrita) e _netdev (aguarda a rede estar disponível antes de tentar montar).


# === /etc/fstab (cliente) ===
# Entrada completa para montagem NFS automática
192.168.1.10:/srv/nfs/compartilhado  /mnt/nfs_cliente  nfs4  hard,intr,rsize=8192,wsize=8192,_netdev  0  0

# Para Rocky Linux/CentOS, o tipo pode ser "nfs" ou "nfs4"
# 192.168.1.10:/srv/nfs/compartilhado  /mnt/nfs_cliente  nfs  defaults,_netdev  0  0

Após editar o /etc/fstab, teste a montagem com mount -a, que processa todas as entradas do fstab não montadas. Se não houver saída de erro, a configuração está correta. No Rocky Linux/CentOS, pode ser necessário ajustar o SELinux no cliente também, caso utilize diretórios fora do /mnt com políticas restritivas.

Instalação e Configuração do Servidor Samba

Agora mergulharemos no Samba, o camaleão do compartilhamento de arquivos em ambientes heterogêneos. Diferente do NFS, o Samba implementa um protocolo stateful com autenticação nativa por usuário, o que o torna ideal para cenários onde diferentes pessoas precisam de diferentes níveis de acesso. Vamos configurar um servidor standalone com dois compartilhamentos: um público (somente leitura) e um privado (autenticado, leitura e escrita). A instalação do Samba é unificada em praticamente todas as distribuições modernas, com o pacote samba. No Ubuntu/Debian, instale com apt install samba -y; no Rocky Linux/CentOS, dnf install samba -y.

O arquivo de configuração principal é o /etc/samba/smb.conf. Ele é dividido em seções: a seção [global] define parâmetros que afetam o servidor como um todo (workgroup, nível de log, interfaces de rede, etc.), e cada seção com nome entre colchetes subsequente define um compartilhamento individual. Antes de editar, faça um backup do arquivo original. Em seguida, construa uma configuração limpa, explicada linha a linha, como faremos a seguir. Após alterações no smb.conf, sempre execute testparm, o verificador de sintaxe do Samba, que validará seu arquivo e exibirá os parâmetros efetivos.


# === Backup do smb.conf original ===
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.original

# Agora, edite com o conteúdo completo abaixo:
sudo nano /etc/samba/smb.conf

###############################################################################
#  /etc/samba/smb.conf — SERVIDOR SAMBA STANDALONE COMPLETO
#  Aula 19 - NFS e Samba
###############################################################################

[global]
   # Nome do grupo de trabalho (workgroup) — deve bater com a rede Windows
   workgroup = WORKGROUP

   # Descrição do servidor visível na rede
   server string = Servidor Samba Aula 19 - JRT Technology Solutions

   # Nível de log: 2 é um bom equilíbrio entre detalhe e tamanho
   log level = 2

   # Arquivo de log por máquina cliente (%m = hostname)
   log file = /var/log/samba/log.%m

   # Tamanho máximo do log em kilobytes antes de rotacionar
   max log size = 1000

   # Modo de autenticação: user (padrão) exige usuário/senha local do Samba
   security = user

   # Backend de senhas: tdbsam (banco local TDB) — não requer LDAP ou AD
   passdb backend = tdbsam

   # Interfaces de rede onde o Samba escuta (ajuste para sua rede)
   interfaces = 127.0.0.0/8 eth0 enp0s3
   bind interfaces only = yes

   # Para evitar erros de impressão, desabilitamos o compartilhamento de impressoras
   load printers = no
   printing = bsd
   printcap name = /dev/null
   disable spoolss = yes

   # Ajuste para sistemas de arquivos com extended attributes (ext4, xfs)
   ea support = yes
   store dos attributes = yes

   # Sincronizar permissões UNIX com ACLs SMB
   map acl inherit = yes

# ===== Compartilhamento Público (somente leitura) =====
[publico]
   comment = Compartilhamento Público - Apenas Leitura
   path = /srv/samba/publico
   browseable = yes
   read only = yes
   guest ok = yes            # Permite acesso sem senha (usuário anônimo mapeado para nobody)
   create mask = 0644
   directory mask = 0755

# ===== Compartilhamento Privado (autenticado, leitura/escrita) =====
[privado]
   comment = Compartilhamento Privado - Acesso Restrito
   path = /srv/samba/privado
   browseable = yes
   read only = no
   guest ok = no             # Exige autenticação
   valid users = @sambausers # Somente membros do grupo UNIX "sambausers"
   create mask = 0660
   directory mask = 0770
   force group = sambausers  # Força o grupo proprietário nos arquivos criados

Com o smb.conf pronto, crie os diretórios físicos no sistema de arquivos e defina as permissões e ownerships corretamente. Note que o compartilhamento público será acessado pelo usuário nobody e pelo grupo nogroup (Ubuntu) ou nobody (Rocky). Já o compartilhamento privado exigirá um grupo exclusivo que criaremos, chamado sambausers, e pelo menos um usuário pertencente a ele.


# Criar diretórios para os compartilhamentos
sudo mkdir -p /srv/samba/publico
sudo mkdir -p /srv/samba/privado

# Ajustar permissões do compartilhamento público
sudo chown nobody:nogroup /srv/samba/publico
sudo chmod 755 /srv/samba/publico

# Criar grupo para usuários do Samba e ajustar diretório privado
sudo groupadd sambausers
sudo chown root:sambausers /srv/samba/privado
sudo chmod 2770 /srv/samba/privado
# O bit setgid (2) faz com que novos arquivos herdem o grupo sambausers

Agora, crie um usuário no sistema Linux e o associe ao Samba. O Samba mantém sua própria base de senhas, separada do /etc/shadow. Use useradd para criar o usuário Linux, usermod -aG para adicioná-lo ao grupo sambausers, e smbpasswd -a para criar a senha do Samba. Por fim, habilite o usuário com smbpasswd -e. Verifique a lista de usuários Samba com pdbedit -L.


# Criar usuário Linux e adicionar ao grupo sambausers
sudo useradd -M -s /sbin/nologin joao_silva
sudo usermod -aG sambausers joao_silva

# Criar senha do Samba para o usuário e habilitá-lo
sudo smbpasswd -a joao_silva
# (digite a senha duas vezes)

sudo smbpasswd -e joao_silva

# Listar usuários do banco local do Samba
sudo pdbedit -L

joao_silva:1001:João Silva

Agora valide a configuração com testparm. Este comando não apenas checa erros de sintaxe, mas também exibe os valores efetivos aplicados — qualquer parâmetro omitido no seu arquivo aparecerá com o valor default. Preste atenção a warnings e erros. Se o testparm retornar “Loaded services file OK.”, você pode reiniciar o serviço.


# Verificar sintaxe e parâmetros efetivos
testparm -s

Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility setting)

# Global parameters
[global]
        bind interfaces only = Yes
        interfaces = 127.0.0.0/8 eth0 enp0s3
        log file = /var/log/samba/log.%m
        max log size = 1000
        passdb backend = tdbsam
        printcap name = /dev/null
        security = USER
        server string = Servidor Samba Aula 19 - JRT Technology Solutions
        workgroup = WORKGROUP
        ... (demais parâmetros) ...

Habilite e inicie os serviços do Samba. No Ubuntu/Debian, o serviço é smbd (servidor SMB) e, opcionalmente, nmbd (NetBIOS name server, para resolução de nomes legados). No Rocky Linux, os mesmos serviços existem, mas o firewalld deve ser configurado para liberar as portas SMB (445/tcp) e NetBIOS (139/tcp).


# === Ubuntu/Debian ===
sudo systemctl enable --now smbd nmbd

# === Rocky Linux/CentOS ===
sudo systemctl enable --now smb nmb

# Firewall Rocky Linux - liberar portas Samba
sudo firewall-cmd --permanent --add-service=samba
sudo firewall-cmd --reload

# SELinux - permitir compartilhamento de diretórios via Samba
sudo setsebool -P samba_enable_home_dirs 1
sudo setsebool -P samba_export_all_rw 1
# Ou rotular os diretórios:
# sudo semanage fcontext -a -t samba_share_t "/srv/samba(/.*)?"
# sudo restorecon -Rv /srv/samba

Conectando Clientes ao Samba

Agora que o servidor Samba está em execução, é hora de testar os acessos a partir de duas perspectivas: um cliente Linux usando smbclient e mount.cifs, e um cliente Windows utilizando o Explorador de Arquivos. Para o Linux, instale o pacote smbclient e cifs-utils no Ubuntu/Debian, ou samba-client e cifs-utils no Rocky Linux. O smbclient é uma ferramenta interativa semelhante a um cliente FTP para acessar compartilhamentos SMB. Já o mount.cifs permite montar um compartilhamento Samba em um ponto de montagem do sistema de arquivos, similar ao NFS.


# === CLIENTE SAMBA - Ubuntu/Debian ===
sudo apt update
sudo apt install smbclient cifs-utils -y

# Listar compartilhamentos disponíveis no servidor (192.168.1.10)
smbclient -L //192.168.1.10 -U joao_silva

Password for [WORKGROUP\joao_silva]:

        Sharename       Type      Comment
        ---------       ----      -------
        publico         Disk      Compartilhamento Público - Apenas Leitura
        privado         Disk      Compartilhamento Privado - Acesso Restrito
        IPC$            IPC       IPC Service (Servidor Samba Aula 19 - JRT Technology Solutions)

Acesse o compartilhamento público (sem senha) e o privado (com autenticação) usando smbclient. No modo interativo, comandos como ls, get e put permitem navegar e transferir arquivos.


# Acessar compartilhamento público (anônimo)
smbclient //192.168.1.10/publico -N

# Acessar compartilhamento privado (autenticado)
smbclient //192.168.1.10/privado -U joao_silva

Para uma integração mais profunda, monte o compartilhamento Samba em um diretório local com mount.cifs. As opções username=, password=, uid=, gid= e file_mode= / dir_mode= oferecem controle granular sobre a montagem. Para não expor senhas em scripts, utilize um arquivo de credenciais (por exemplo, /root/.smbcredentials) com permissão 600.


# Criar arquivo de credenciais (somente root pode ler)
sudo bash -c 'echo -e "username=joao_silva\npassword=SenhaSegura123" > /root/.smbcredentials'
sudo chmod 600 /root/.smbcredentials

# Montar o compartilhamento privado
sudo mkdir -p /mnt/samba_privado
sudo mount -t cifs //192.168.1.10/privado /mnt/samba_privado \
    -o credentials=/root/.smbcredentials,uid=1000,gid=1001,file_mode=0660,dir_mode=0770

# Verificar montagem
df -hT /mnt/samba_privado

Filesystem                 Type  Size  Used Avail Use% Mounted on
//192.168.1.10/privado      cifs   50G  5.2G   45G  11% /mnt/samba_privado

No Windows, o procedimento é direto: abra o Explorador de Arquivos (Tecla Windows + E), na barra de endereços digite \\192.168.1.10\publico ou \\192.168.1.10\privado e pressione Enter. Para o compartilhamento privado, uma janela de autenticação solicitará usuário e senha — utilize as credenciais Samba configuradas (joao_silva e a senha definida). Você poderá criar, editar e excluir arquivos dentro do diretório montado, desde que as permissões do sistema de arquivos e a configuração do share permitam.

Verificando a Instalação / Testando a Configuração

Esta é a seção de validação, onde você comprova que cada componente está operando conforme esperado. Vamos executar uma bateria de comandos de diagnóstico e verificar as saídas. Faça todos os testes na ordem apresentada; se algum falhar, consulte a seção de erros comuns logo a seguir. Começamos pelo NFS.


# === TESTES NFS - Servidor ===
# Verificar status dos serviços NFS e rpcbind
sudo systemctl status nfs-server rpcbind --no-pager -l

# Checar quais diretórios estão sendo exportados ativamente
sudo exportfs -v

# Verificar portas RPC em escuta
rpcinfo -p | grep nfs

# Saída esperada de "rpcinfo -p | grep nfs"
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl

# === TESTES NFS - Cliente ===
# Listar exports disponíveis
showmount -e 192.168.1.10

# Verificar montagens ativas do tipo nfs
mount | grep nfs4

# Testar escrita e leitura
echo "Teste de validacao NFS" > /mnt/nfs_cliente/validacao.txt
cat /mnt/nfs_cliente/validacao.txt

Export list for 192.168.1.10:
/srv/nfs/compartilhado 192.168.1.0/24

Teste de validacao NFS

Agora os testes do Samba, tanto no servidor quanto no cliente:


# === TESTES SAMBA - Servidor ===
# Verificar estado dos serviços
sudo systemctl status smbd nmbd --no-pager -l

# Validar sintaxe do smb.conf e exibir parâmetros efetivos
testparm -s

# Listar usuários Samba cadastrados
sudo pdbedit -L -v

# Verificar portas em escuta (445 e 139)
sudo ss -tlnp | grep -E '445|139'

LISTEN 0      50          0.0.0.0:445       0.0.0.0:*    users:(("smbd",pid=1234,fd=40))
LISTEN 0      50          0.0.0.0:139       0.0.0.0:*    users:(("smbd",pid=1234,fd=39))

# === TESTES SAMBA - Cliente Linux ===
# Listar shares
smbclient -L //192.168.1.10 -U joao_silva

# Conectar ao share público e listar conteúdo
smbclient //192.168.1.10/publico -N -c 'ls'

# Conectar ao share privado e criar arquivo
smbclient //192.168.1.10/privado -U joao_silva -c 'put /etc/hostname hostname.txt'

# Verificar montagem CIFS
ls -la /mnt/samba_privado

# smbclient -c 'put' deve retornar algo como:
putting file /etc/hostname as \hostname.txt (0,1 kb/s) (average 0,3 kb/s)

No Windows, valide acessando \\192.168.1.10\publico e \\192.168.1.10\privado via Explorador de Arquivos. Crie um arquivo de texto no bloco de notas e salve diretamente no compartilhamento privado; depois verifique no servidor Linux se o arquivo aparece em /srv/samba/privado. Essa integração bidirecional é a prova definitiva de que o Samba está funcionando corretamente.

Erros Comuns e Como Resolver

Em nossa experiência na JRT Technology Solutions, cerca de 80% dos problemas com NFS e Samba recaem sobre quatro categorias: permissões de sistema de arquivos, firewall/SELinux bloqueando tráfego, sintaxe incorreta nos arquivos de configuração e incompatibilidade de versões de protocolo. Abaixo, listamos os mais frequentes, seus sintomas, causas e as soluções exatas que nossos especialistas aplicam em campo.

  • Erro: “Permission denied” ao escrever em compartilhamento NFS. Sintoma: o cliente monta o export com sucesso, mas ao tentar criar arquivos, recebe “Permission denied”, mesmo com a opção rw no /etc/exports. Causa: o UID/GID do usuário no cliente não corresponde ao proprietário do diretório no servidor, e a opção root_squash (padrão) está ativa, mapeando acessos de root para nobody. Solução: verifique os UIDs com id usuario em ambos os sistemas. Ajuste o diretório exportado com chown UID:GID no servidor. Se necessário, use a opção no_root_squash (apenas em ambientes controlados) ou all_squash combinado com anonuid/anongid para uniformizar os acessos. Recarregue com exportfs -rav.
  • Erro: Cliente NFS fica travado ao perder conectividade (“hard mount” congelado). Sintoma: processos no cliente ficam em estado D (uninterruptible sleep) quando o servidor NFS cai, travando até shells que tentam listar o diretório montado. Causa: a opção padrão de montagem é hard, que insiste indefinidamente. Solução: utilize a opção soft no mount ou no fstab para que o cliente retorne erro após timeout, permitindo que aplicações tratem a falha. Exemplo: mount -o soft,timeo=30 …. Em sistemas críticos, considere hard,intr para permitir interrupção via sinal (Ctrl+C).
  • Erro: “testparm” acusa “rlimit_max: increasing rlimit_max (8192) to minimum Windows limit (16384)” ou falha ao carregar. Sintoma: o Samba não sobe ou apresenta lentidão extrema, e logs mostram falha de alocação de recursos. Causa: limite de arquivos abertos (ulimit -n) muito baixo para o Samba. Solução: edite /etc/security/limits.conf e adicione * – nofile 16384. Reinicie a sessão ou o serviço. Verifique também se o parâmetro max open files no smb.conf está definido para um valor razoável (ex: 16384).
  • Erro: “NT_STATUS_BAD_NETWORK_NAME” ou “Unable to connect to IPC$ share”. Sintoma: ao listar compartilhamentos com smbclient -L, o servidor responde, mas a listagem falha com erro de nome de rede. Causa: firewall bloqueando a porta TCP 445 ou o serviço nmbd não está em execução para resolução NetBIOS. Solução: verifique com ss -tlnp | grep 445 se o smbd está escutando em todas as interfaces. Teste conectividade com telnet 192.168.1.10 445. Certifique-se de que o firewalld/ufw liberou a porta. No UFW: ufw allow samba. Verifique systemctl status nmbd e habilite se necessário.
  • Erro: “mount.nfs: access denied by server while mounting” no cliente, mas showmount funciona. Sintoma: showmount -e mostra os exports corretos, mas a montagem é negada. Causa: o cliente está tentando montar usando uma versão NFS diferente da suportada ou a opção no_subtree_check combinada com diretório que é subdiretório de outro export causa conflito. Solução: force a versão no cliente com -o nfsvers=4 ou -t nfs4. Verifique os logs do servidor com journalctl -u nfs-server -f durante a tentativa de montagem — mensagens “refused mount request from CLIENT_IP for /caminho …” indicam mismatch de opções ou cliente não autorizado na rede listada no /etc/exports.
  • Erro: SELinux bloqueia acesso Samba mesmo com permissões corretas. Sintoma: o serviço está ativo, firewall liberado, mas clientes recebem “Access Denied”. Causa: contexto SELinux do diretório compartilhado não permite acesso a smbd_t. Solução: execute sudo setsebool -P samba_export_all_rw 1 ou rotule o diretório com semanage fcontext -a -t samba_share_t “/caminho(/.*)?” seguido de restorecon -Rv /caminho. Verifique violações no SELinux com ausearch -m avc -ts recent.

Boas Práticas e Dicas Avançadas

Configurar NFS e Samba que “funcionam” é o primeiro passo; configurá-los de forma profissional e sustentável exige algumas camadas adicionais de cuidado que acumulamos em centenas de implantações. Primeiramente, sempre fixe as versões de protocolo. No NFS, utilize explicitamente nfsvers=4.2

Quer aprender na prática com especialistas?

A JRT Technology Solutions oferece treinamentos e implementação de Linux para equipes corporativas.



Falar no WhatsApp

Thiago Paes Rodrigues

Com mais de 22 anos de experiência em Tecnologia da Informação, este profissional construiu uma trajetória sólida como empresário, atuando de forma estratégica na implementação de soluções tecnológicas que otimizam processos e impulsionam resultados em diferentes setores.