Instalando um Servidor Samba Linux

Linux

Introdução

Antes de iniciar a instalação do servidor samba Linux, é importante, antes de mais nada, entender alguns pontos com relação a esse procedimento:
Trata-se então de um procedimento que parte da premissa que você já possui algum conhecimento técnico e experiência em sistemas Unix-like. Caso você não possua nenhuma familiaridade com sistema Linux, recomendo que siga nossa Jornada Shell Script, que abordará muitos comandos e muita prática que servirá como um guia inicial para que você possa tirar o melhor proveito possível deste material.
Assim, caso necessário um detalhamento maior do procedimento, acesse nossas referências.
Do mesmo modo, você precisa entender os comandos aplicados neste artigo e ajustar conforme a sua necessidade. Não faça cópia e cola em ambiente de produção, entenda o que está sendo executado e evite assim problemas futuros.

Por fim, usaremos o seguinte ambiente:

Servidor: RHEL7 Red Hat based on

O que é o Samba Linux?

O Samba é um serviço Linux concebido para ser compatível com o protocolo SMB tornando assim possível disponibilizar para usuários de ambiente Microsoft, o acesso ao compartilhamento de arquivos a partir de um servidor unix-like.

O samba é considerado um software livre, ou seja, tem seu código aberto e teve seu lançamento oficial em 1992.

O serviço tem como seus principais serviços em um ambiente Unix:

Basicamente os dois daemons principais de uma servidor SAMBA são:

  • smbd – Serviço responsável por compartilhaar arquivos e impressoras
    nmbd – Responsável pelo serviço de nomes e navegação

Assim, caso deseje ter mais informações a respeito do programa, recomendo o acesso à página oficial do produto: www.samba.org. Nada melhor que o próprio criador e mantenedor para tirar potenciais dúvidas e explicar com mais detalhes sobre seu produto, não acha?

Instalando o servidor Samba

Instalação de Pacotes

O comando abaixo dará conta de instalar e habilitar os serviços básicos para iniciarmos nosso servidor Samba Linux.

# yum install -y samba samba-client
# systemctl habilita smb nmb

Não irei me aprofundar neste artigo sobre a parte de segurança e configurações de firewall no Linux, mas deixarei apenas o comando de referência para liberação do serviço Samba Linux no firewall do nosso RHEL7.

# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload

Criando Diretórios e ajustando permissões

Agora vamos criar com o comando mkdir a estrutura base do nosso serviço. Primeiro vamos criar nossa estrutura de diretórios.

# mkdir /srv/{samba_pub,samba_group}  #diretorios publico e  de restrito a um grupo respectivamente

Em seguida daremos permissão total a uma pasta publica no nosso servidor usando o comando chmod.

# chmod 0777 /srv/samba_pub

Em seguida criamos nosso grupo devops com o comando groupadd.

# groupadd devops

Após, alteramos a propriedade do diretório samba_group para grupo devops com o comando chgrp.

# chgrp devops /srv/samba_group

Então, definimos as permissões necessárias para nosso diretório samba_group com o comando chmod.

# chmod 2775 /srv/samba_group

Criando usuários dedicados ao serviço Samba Linux

Neste passo, iremos adicionar com o comando useradd dois usuários que serão usados exclusivamente para acesso ao nosso servidor Samba Linux, não estando estes autorizados a acessar ao servidor Linux via Shell.

# useradd -s /sbin/nologin -G devops dev1
# useradd -s /sbin/nologin dev2
# smbpasswd -a dev1 #Usuario do grupo restrito devops
# smbpasswd -a dev2 #usuario publico

Verificando os usuários criados no Samba

O programa pdbedit é usado para gerenciar as contas de usuários. O parametro -L servirá para listar os usuários criados.

# pdbedit -L

Ajustando o contexto SELinux

SE Linux é uma implementação de Segurança dos sistemas RedHat based. Caso deseje saber mais sobre as camadas de segurança do Linux, recomendo que assista ao vídeo Jornada Proxmox Aula 1 Sobre o Proxmox, minuto 10:20.

# ls -dZ /srv/samba_* #analisando o contexto default
drwxrwsr-x. root devops unconfined_u:object_r:var_t:s0  /srv/samba_group
drwxrwxrwx. root root   unconfined_u:object_r:var_t:s0  /srv/samba_pub

#semanage fcontext -a -t samba_share_t "/srv/samba_group(/.*)?" #Aplicando o tipo de contexto samba_share_t
# setsebool -P smbd_anon_write=1 
# semanage fcontext -a -t public_content_rw_t "/srv/samba_pub(/.*)?"

Restaurando o contexto SELinux

# restorecon -Rv /srv/samba_*

Configurando o serviço Samba Linux

Agora vamos ao arquivo base de configuração (smb.conf) do serviço Samba Linux.

Perceba abaixo que deixarei um modelo pronto, mas, você deverá fazer as alterações necessárias, especificando as configurações de interface, diretórios, hostname, IP conforme seu ambiente conforme a sua necessidade.

#vi /etc/samba/smb.conf #Edite conforme modelo abaixo

[global]
;       Most Windows systems default to WORKGROUP
	workgroup = MYGROUP
	server string = Samba Server Version %v
;	netbios name = MYSERVER

	interfaces = lo 10.8.8.0/24
	hosts allow = 127. 10.8.8.
        hostname lookups = yes

	log file = /var/log/samba/log.%m
	max log size = 50

	security = user
	passdb backend = tdbsam
	map to guest = bad user
        guest account = nobody
	load printers = no

[public]
	comment = Public Share
	path = /srv/samba_pub
;	public = yes
	writable = yes
	browseable = yes
	printable = no
	guest ok = yes

[group]
        comment = Group Share
        path = /srv/samba_group
        writable = no
        browseable = yes
	printable = no
        guest ok = no
        write list = @devops
        read list = dev2
        valid users = @devops, dev2

Validando a sintaxe do arquivo SMB

Após fazer a configuração do seu arquivo smb.cnf, vamos usar o comando testparm para validar se não existem problemas de sintaxe no seu arquivo. Veja abaixo um exemplo de saída esperada desse comando.

# testparm -s
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[public]"
Processing section "[group]"
Loaded services file OK.
Server role: ROLE_STANDALONE
[global]
	workgroup = MYGROUP
	server string = Samba Server Version %v
	interfaces = lo, 10.8.8.0/24
	map to guest = Bad User
	log file = /var/log/samba/log.%m
	max log size = 50
	load printers = No
	idmap config * : backend = tdb
	hosts allow = 127., 10.8.8.
[public]
	comment = Public Share
	path = /srv/samba_pub
	read only = No
	guest ok = Yes
[group]
	comment = Group Share
	path = /srv/samba_group
	valid users = @devops, dev2
        read list = dev2
	write list = @devops

Iniciando o serviço Samba

Por fim vamos iniciar, com o comando systemctl, nosso serviço samba, que se tudo for executado conforme exposto acima, está disponível na sua rede.

# systemctl start smb nmb

Para validar o serviço em funcionamento, execute:

# systemctl start smb nmb

Erros conhecidos

Se você está utilizando então o CentOS 7, e todas as configurações do SAMBA além das permissões dos arquivos foram verificados, é possível que seu problema esteja no nosso adorado SELINUX.

Desse modo, uma solução rápida para validar o problema é desativar temporariamente o SELINUX com o comando:

#sudo setenforce 0

Do mesmo modo, é importante lembrar que o CentOS guarda a configuração do SELinux no arquivo:

#vi /etc/selinux/config

Por fim, seus principais modos de configuração são:

SELINUX=disabled #desabilita o SE, não recomendado
SELINUX=permissive #Imprime avisos em vez de import
SELINUX=enforcing #sendo este ultimo o padrão do CentOS7

Referencias:

samba.org
Artigos Linux RunbookBR

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.