Aprenda a configurar um servidor de arquivos samba, no Linux, para ser acessado por clientes Linux, Windows, Android e outros.
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
Essa publicação introduz uma pequena série que farei a respeito do protocolo samba, incluindo explicar o que é Active Directory, como provisionar um Domínio e como ingressar um sistema no Domínio.
1. Introdução
O samba é um software livre que re-implementa o protocolo de redes SMB/CIFS para sistemas baseados em Linux e UNIX, permitindo que esses sistemas se comuniquem com o Windows, principalmente no compartilhamento de arquivos em rede.
O nome vem da sigla SMB (Server Message Block), o nome do protocolo padrão usado pelo sistema de arquivos de rede do Microsoft Windows.
Curiosamente o nome nada tem relação com música; quando o nome foi pensado, seu desenvolvedor apenas em procurar uma palavra que remetesse ao protocolo para batizar a aplicação e facilitar a correlação de nomenclatura entre o smb proprietário e sua versão de código aberto! Assim, diferenciamos o que é smb e samba.
Fornecendo principalmente serviços de compartilhamento de arquivos, é muito popular para compartilhar arquivos em rede através de soluções conhecidas como NAS (Network Attached Storage), basicamente um dispositivo de armazenamento na rede local/doméstica que mais de uma pessoa podem estar acessando para armazenar dados pessoais.
Com suporte a impressão por rede em paralelo com o CUPS, o samba pode opcionalmente também se tornar um Controlador de Domínio (DC) com Active Directory ou ser também um membro do domínio, conforme vamos abordar em publicações futuras.
Hoje vou apresentar como criar seu próprio servidor Samba no Linux para ser acessado por diversos clientes, sejam eles Linux, Windows, macOS, Android e outros, e permitir que você crie e gerencie seu próprio servidor NAS universal.
2. Instalando o samba
Os pacotes necessários são: samba samba-client samba-common
Instale-os em seu sistema. Eles ficam disponíveis nativamente no repositório de todas as distros Linux!
Use o comando abaixo conforme seu gerenciador de pacotes:
$ sudo apt/dnf/yum install samba samba-client samba-common
3. Configurando o samba
Primeiro apague o arquivo de configuração padrão do Samba, a menos que saiba exatamente o que modificar nele!
Sugiro que use a configuração sugerida abaixo.
$ sudo rm /etc/samba/smb.conf
Para criar as novas configurações vamos editar o arquivo de configuração do Samba:
$ sudo nano /etc/samba/smb.conf
E colar nele o seguinte conteúdo:
# COMEÇO
[global]
client min protocol = SMB2
client max protocol = SMB3
server string = NOME_DO_SERVIDOR
netbios name = nome_do_servidor_um_pouco_diferente
workgroup = WORKGROUP
security = user
map to guest = bad user
dns proxy = no
# Descomente as próximas 4 linhas abaixo para vencer as eleições do samba! Já falei delas aqui no site.
#domain master = yes
#local master = yes
#preferred master = yes
#os level = 255
# dos charset = CP850
unix charset = UTF-8
dos charset = ISO8859-1
# unix charset = ISO8859-1
# display charset = ISO8859-1
mangled names = no
read raw = Yes
write raw = Yes
# socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=131072 SO_SNDBUF=131072
min receivefile size = 16384
#use sendfile = true
aio read size = 16384
aio write size = 16384
# FIM
Se quiser habilitar auditoria + sistema de lixeira temporária, use as linhas abaixo no arquivo.
A lixeira é para onde vão os arquivos caso sejam apagados do compartilhamento porém eles serão apenas movidos para uma nova pasta.
# COMEÇO
vfs objects = recycle, full_audit
audit:failure = none
full_audit:success = unlinkat renameat
#pwrite pwrite_send pwrite_recv write renameat unlinkat mkdir
#open, opendir, write, unlinkat, renameat, mkdir, rmdir, chmod, chown
full_audit:prefix = IP=%I|USER=%u|MACHINE=%m|VOLUME=%S
# vfs:0 Make Directory, Remove Directory, Unlink
# vfs:1 Open Directory, Rename File, Change Permissions/ACLs
# vfs:2 Open & Close File
# vfs:10 Maximum Debug Level
log level = 0 vfs:0
syslog = 0
recycle:repository = /caminho/para/localização/dos/usuários/%U
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:touch_mtime = yes
recycle:noversions = *.tmp,*.temp,*.o,*.obj,*.TMP,*.TEMP
recycle:exclude = *.tmp,*.temp,*.o,*.obj,*.TMP,*.TEMP
recycle:excludedir = /caminho/para/localização/da/lixeira,/recycle,/tmp,/temp,/TMP,/TEMP
# FIM
Edite acima nas linhas em negrito um destino para as pastas dos usuários e também para a lixeira. São 2 pastas diferentes do compartilhamento samba, podem ficar aonde quiser e serão visualizadas apenas pelo administrador do linux através do SSH.
Agora vamos configurar a parte dos usuários!
3.1 Usuário Anônimo
Adicione o seguinte código após o código anteriormente adicionado.
# COMEÇO
[Dados] # MANTENHA! Nome exibido na rede.
path = /samba/dados # EDITE ESTE!
browsable =yes # MANTENHA!
writable = yes # MANTENHA!
guest ok = yes # MANTENHA!
read only = no # MANTENHA!
# FIM
No exemplo acima, vamos compartilhar a pasta /dados que está em /samba/dados, na rede, sob o nome de Dados!
Crie a pasta:
$ sudo mkdir -p /samba/dados
Habilite e reinicie todos os serviços relacionados:
$ sudo systemctl enable smbd.service $ sudo systemctl enable nmbd.service $ sudo systemctl restart smbd.service $ sudo systemctl restart nmbd.service
Caso você use o CentOS, o Firewall irá bloquear o acesso ao samba. Para liberar, utilize os comandos:
# firewall-cmd --permanent --zone=public --add-service=samba # firewall-cmd --reload
Em sistemas onde o UFW se faz presente, libere o samba com:
$ sudo ufw allow samba
Permita acesso ao usuário anônimo com os comandos:
$ sudo chmod -R 0755 /samba/dados $ sudo chown -R nobody:nogroup /samba/dados
Essa modificação é o maior segredo do samba publico!
Ao definir o usuário e grupo como “nobody”, ninguém é dono e portanto não haverão problemas de permissão.
Caso faça uso do SELinux, permita-o na configuração do serviço com o comando:
$ sudo chcon -t samba_share_t /samba/dados
Reinicie os serviços:
$ sudo systemctl restart smbd.service $ sudo systemctl restart nmbd.service
Pronto!
Depois de tudo isso, o serviço deve estar habilitado e rodando.
Abra seu gerenciador de redes do Windows e veja que surgirão as pastas compartilhadas.
3.2 Usuários com Senha
Bom, ensinei como configura um acesso anônimo, qualquer um vê o arquivo da pasta; agora vou ensinar a criar o acesso com um usuário credenciado ao sistema, assim somente o usuário autorizado, com senha, vai acessar!
Primeiro criamos o grupo smbgrp e de exemplo criemos um usuário chamado nathan, colocando ele nesse grupo:
$ sudo useradd nathan
$ sudo groupadd smbgrp
$ sudo usermod -aG smbgrp nathan
O comando “useradd” cria um usuário internamente, sem criar e configurar variáveis de ambiente ou criar /home.
Assim ele será dedicado a ser usado no samba! Se quiser usa-lo no sistema, pode criar como “adduser” e dê uma senha.
Criar a senha de compartilhamento do usuário nathan!
Essa senha pode ser diferente da senha de sistema desse usuário, se você vai usá-lo internamente no Linux.
$ smbpasswd -a nathan
Agora crie a pasta /samba/secured na raíz do sistema:
$ sudo mkdir -p /samba/secured
Dê as permissões a ela através do SELinux:
$ cd /samba # chmod -R 0777 secured/ # chcon -t samba_share_t secured/
Edite seu arquivo smb.conf e adicione estas linhas no final:
sudo nano /etc/samba/smb.conf
# COMEÇO
[secured]
path = /samba/secured
valid users = @smbgrp
guest ok = no
writable = yes
browsable = yes
# FIM
Agora defina as permissões dessa pasta Secured que você criou:
$ cd /samba $ sudo chown -R nathan:sambashare secured/
A partir desse momento somente esse usuário terá acesso a essa pasta, mesmo que localmente!
Reinicie os serviços:
$ sudo systemctl restart smbd.service $ sudo systemctl restart nmbd.service
Pronto!
Depois de tudo isso, o serviço deve estar habilitado e rodando.
Abra seu gerenciador de redes do Windows e veja que surgirão as pastas compartilhadas.
Observação
Caso queira compartilhar arquivos Linux <> Linux, use o NFS, um protocolo muito mais seguro.
Poderá aprender a usar e configurar o NFS neste artigo de nosso site!
4. Conclusão
Este tutorial é a primeira parte de uma série aonde vou abordar o samba, incluindo explicar o que é o Active Directory, como provisionar um Domínio e como ingressar no Domínio!
Continue nos acompanhando para não perder as próximas publicações!
A próxima será uma introdução ao Active Directory e por quê ele é tão importante para a indústria.
Qualquer dúvida mande nos comentários.
#UrbanCompassPony
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.
Bom dia.
Que tutorial top.
Muito obrigado por compartilhar seu conhecimento!
Abraço!
Como faço para liberar um usuário com senha em uma pasta específica por exemplo um HD somente para samba ?
[secured]
path = /caminho/do/HD/aqui
valid users = @grupo, usuário
guest ok = no
writable = yes
browsable = yes
Adicione o grupo ao sistema linux; ou crie um usuário e adicione-o com smbpasswrd.