Redes e Segurança

NFS e Samba: compartilhamento de arquivos em rede heterogênea

• 6 min de leitura

NFS e Samba: compartilhamento de arquivos em rede heterogênea
Ambientes de rede heterogêneos combinam sistemas Unix/Linux e Windows, cada um com seus próprios sistemas de arquivos, permissões e protocolos nativos. Enquanto o Linux utiliza permissões POSIX (rwx para owner, group, others), o Windows emprega ACLs (Access Control Lists) mais granulares. Essa diferença fundamental exige protocolos de compartilhamento que possam traduzir e mediar o acesso aos dados.

NFS e Samba: compartilhamento de arquivos em rede heterogênea

1. Fundamentos do Compartilhamento em Rede Heterogênea

Ambientes de rede heterogêneos combinam sistemas Unix/Linux e Windows, cada um com seus próprios sistemas de arquivos, permissões e protocolos nativos. Enquanto o Linux utiliza permissões POSIX (rwx para owner, group, others), o Windows emprega ACLs (Access Control Lists) mais granulares. Essa diferença fundamental exige protocolos de compartilhamento que possam traduzir e mediar o acesso aos dados.

O NFS (Network File System) foi desenvolvido originalmente pela Sun Microsystems para ambientes Unix. Sua versão mais moderna, NFSv4, oferece suporte a ACLs semelhantes ao Windows, autenticação Kerberos e operação eficiente em WAN. Já o SMB/CIFS (Server Message Block / Common Internet File System) é o protocolo nativo do Windows, implementado pelo Samba em sistemas Linux. O Samba atua como um servidor SMB, permitindo que máquinas Windows acessem arquivos em servidores Linux como se fossem locais.

No modelo cliente-servidor, o servidor exporta diretórios (NFS) ou compartilhamentos (Samba), e os clientes montam ou mapeiam esses recursos. Requisitos de rede incluem portas específicas: NFS usa as portas 2049 (NFSv4) e portas dinâmicas para serviços auxiliares (portmapper, mountd); Samba utiliza as portas 137-139 (NetBIOS) e 445 (SMB direto). Firewalls devem liberar essas portas, e a latência da rede impacta diretamente a performance, especialmente em operações síncronas.

2. Configuração e Operação do Servidor NFS

A instalação do servidor NFS no Ubuntu/Debian é simples:

sudo apt update
sudo apt install nfs-kernel-server

O arquivo de configuração principal é /etc/exports, onde cada linha define um diretório exportado, os clientes autorizados e as opções de montagem. Exemplo:

/srv/compartilhado 192.168.1.0/24(rw,sync,no_subtree_check,root_squash)
  • rw: permite leitura e escrita
  • sync: garante que as operações de escrita sejam confirmadas antes de retornar (mais seguro, porém mais lento)
  • root_squash: mapeia o usuário root do cliente para o usuário nobody no servidor, evitando acesso privilegiado
  • sec=sys (padrão): autenticação baseada em UID/GID; sec=krb5 requer Kerberos

Para gerenciar versões, o NFSv4 é preferível por seu suporte nativo a ACLs, melhor desempenho em WAN e uso de uma única porta (2049). Para ativar ACLs, monte o sistema de arquivos com a opção acl e configure ACLs POSIX:

sudo setfacl -m u:joao:rwx /srv/compartilhado

Após alterar o /etc/exports, recarregue as exportações:

sudo exportfs -ra

3. Clientes NFS em Ambientes Linux e Windows

Em clientes Linux, instale o pacote nfs-common e monte manualmente:

sudo apt install nfs-common
sudo mount -t nfs4 servidor:/srv/compartilhado /mnt/nfs

Para montagem automática via /etc/fstab:

servidor:/srv/compartilhado /mnt/nfs nfs4 defaults,_netdev 0 0

O autofs monta diretórios sob demanda, reduzindo consumo de recursos. Configure o arquivo /etc/auto.master:

/mnt/nfs /etc/auto.nfs --timeout=60

E o arquivo /etc/auto.nfs:

compartilhado -fstype=nfs4 servidor:/srv/compartilhado

No Windows, o cliente NFS é um recurso opcional. Ative-o em "Ativar ou desativar recursos do Windows" > "Serviços para NFS". Para mapear uma unidade:

mount -o anon \\servidor\srv\compartilhado Z:

Limitações incluem falta de suporte a caracteres especiais em nomes de arquivos e problemas com permissões quando o cliente Windows não possui um mapeamento de UID/GID adequado.

Problemas comuns: timeouts podem ser resolvidos aumentando o timeo nas opções de montagem; bloqueios de arquivo requerem o serviço rpc-statd rodando em ambos os lados; permissões incorretas geralmente são corrigidas ajustando root_squash ou configurando ACLs.

4. Configuração e Operação do Servidor Samba

Instale o Samba:

sudo apt install samba

O arquivo de configuração /etc/samba/smb.conf define grupos de trabalho, compartilhamentos e autenticação. Exemplo básico:

[global]
   workgroup = WORKGROUP
   server string = Servidor Samba
   security = user
   map to guest = bad user

[compartilhado]
   path = /srv/samba
   browseable = yes
   read only = no
   guest ok = no
   valid users = @samba_users

O modelo de segurança user exige autenticação por usuário e senha. Para integração com Active Directory, configure security = ads e junte o servidor ao domínio. Permissões e ACLs são mapeadas via parâmetros como inherit permissions = yes e force user.

Adicione usuários Samba:

sudo smbpasswd -a joao

Reinicie o serviço:

sudo systemctl restart smbd

5. Clientes Samba em Ambientes Heterogêneos

Em clientes Linux, use smbclient para navegar:

smbclient -L servidor -U joao

Para montar um compartilhamento:

sudo mount -t cifs //servidor/compartilhado /mnt/samba -o username=joao,uid=1000,gid=1000

No Windows, mapeie uma unidade via Explorador de Arquivos ou comando:

net use Z: \\servidor\compartilhado /user:joao

A resolução de nomes pode usar NetBIOS (porta 137) ou WINS. Para macOS, acesse via Finder com smb://servidor/compartilhado ou monte via terminal:

mount_smbfs //joao@servidor/compartilhado /mnt/samba

6. Integração, Performance e Segurança

Em cenários onde ambos os protocolos coexistem, é possível converter compartilhamentos: exporte via NFS um diretório que também é compartilhado via Samba, desde que as permissões sejam consistentes. Use ACLs POSIX no diretório para atender ambos os protocolos.

Para otimizar performance, ajuste o tamanho do bloco de leitura/escrita no Samba (socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536) e no NFS (rsize=65536,wsize=65536). Jumbo frames (MTU 9000) reduzem overhead em redes Gigabit.

Segurança: isole o tráfego NFS e Samba em VLANs dedicadas. No NFS, use sec=krb5 para criptografia; no Samba, ative SMB over TLS com server smb encrypt = required. Firewalls devem permitir apenas as portas necessárias:

sudo ufw allow from 192.168.1.0/24 to any port 2049 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 445 proto tcp

7. Monitoramento, Logs e Solução de Problemas

Para NFS, use nfsstat para estatísticas e rpcdebug para logs detalhados:

sudo rpcdebug -m nfsd -s all
tail -f /var/log/syslog | grep nfsd

No Samba, ajuste o log level no smb.conf:

[global]
   log level = 3
   log file = /var/log/samba/log.%m

Ferramentas de auditoria como auditd monitoram acessos a arquivos compartilhados:

sudo auditctl -w /srv/compartilhado -p rwxa -k compartilhamento

Problemas comuns: conflitos de permissão geralmente envolvem mapeamento incorreto de UIDs; travamento de arquivos requer o serviço rpc-statd no NFS; problemas de resolução de nomes no Samba podem ser resolvidos configurando WINS ou usando IPs diretamente.

Referências

💬 Comentários
Mais em Redes e Segurança