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

Deixe um comentário