Configuração definitiva do Samba

Introdução

Para o compartilhamento de diretórios via rede, com a possibilidade de configurar permissões de controle de acesso, o Samba sobressai-se sobre os concorrentes.

Além de que, o mesmo também é capaz de compartilhar diretórios de um sistema de arquivos Linux (extJFS…) através da rede, possibilitando o acesso ao mesmo, utilizando o protocolo cliente smb, para distribuições GNU/Linux, e o próprio Windows Explorer (explorador de diretórios), para sistemas operacionais Microsoft Windows.

Vantagens

Em relação ao seu concorrente proprietário ($$), o sistema operacional Microsoft Windows Server, o Samba é muitíssimo mais completo, apresenta menos erros (conhecidos também como bugs), além do que, como o software Samba deve ser instalado em um servidor GNU/Linux, a possibilidade de ter o servidor infectado por malware (vírus, cavalos de troia, worms, etc), é MÍNIMA.

E, por fim, a configuração de permissão de acesso de diretórios é feita INTEIRAMENTE utilizando ferramentas da distribuição GNU/Linux, o que torna muitas das técnicas hacking ineficazes. 

Desvantagem

Então, qual o principal motivo de o mercado utilizar, principalmente, Windows Server para tal serviço, você se pergunta?

Simples: em sistemas Windows, configurar o sistema para compartilhar diretórios é brincadeira de criança, já em sistemas Linux, o arquivo de configurações do Samba é assustador para quem nasceu no mundo do “mas onde é que clica?”.

Porém, ao término da configuração, o sistema durará por muitos anos (se não, eternamente), se tudo depender do sistema operacional, pois não há agentes “feitos para destruir o sistema”, como em outros sistemas operacionais proprietários.

Conclusão

No mundo Windows, a configuração é simples e rápida, porém, a mesma precisará ser refeita de tempos em tempos, pois, todo tipo de Malware está preparado para destruir o sistema, além disso, erros de sistema serão frequentes, confundindo o usuário e o setor de TI da empresa.

Utilizando um servidor GNU/Linux, por vias normais, a configuração é mais lenta, porém, uma vez terminada a configuração do mesmo, a equipe de TI apenas necessitará pensar em “como agregar funções a mais”.

Chega de enxaquecas e gastos desnecessários com manutenção!

Etapa 1

Instalando o Samba e criando os diretórios a serem compartilhados

Vamos botar a mão na massa!

A configuração será feita em um servidor Debian 7 (Wheezy), porém, pode ser adaptada facilmente para CentOS, Red Hat e outras distribuições GNU/Linux.

Utilizaremos um terminal modo texto.

Instalação

Instale o pacote samba em seu servidor Debian:

# aptitude install samba
Ou:
# apt-get install samba

Após a instalação, será criado o arquivo de configurações do servidor Samba.

Localização do arquivo: /etc/samba/smb.conf

Configuração: Parte 1 – Criando os diretórios

Antes de começar a criar os diretórios que, posteriormente, estarão disponíveis via rede, planeje no papel quantos departamentos (grupos de pessoas/usuários) sua empresa possui.

Crie um diretório no caminho de sua preferência, em seu sistema de arquivos:

# mkdir /samba

Em seguida, crie um subdiretório para cada departamento de sua empresa:

# mkdir /samba/marketing
# mkdir /samba/”departamento pessoal”
# mkdir /samba/direção

Obs.: a forma mais simples de criar um diretório que contém nome espaçado em GNU/Linux, é digitando-se apenas o nome espaçado entre aspas (ex.: “diretório com nome espaçado”).

Depois de criado os subdiretórios, a etapa 1 estará terminada.

Etapa 2

Configuração: Parte 2 – Arquivo de configuração do Samba

O Samba, assim como muitos outros servidores GNU/Linux, deve ser configurado alterando-se os parâmetros presentes em um arquivo de configuração, e estes parâmetros alterados, serão então, futuramente, carregados nas variáveis do software servidor, durante sua inicialização.

O arquivo de configuração do Samba encontra-se em: /etc/samba/smb.conf

É recomendável renomear o arquivo, pois, iniciaremos a configuração de nosso servidor a partir do zero!

# mv /etc/samba/smb.conf /etc/samba/smb.conf.original

Aqui, utilizaremos o editor de textos Nano, por ser o editor de textos padrão do GNU/Linux, isto é, o mesmo encontra-se por padrão, em qualquer distribuição GNU/Linux, ao contrário do Vim/Vi, entre outros:

# nano /etc/samba/smb.conf

Em seu terminal, neste momento, você deve estar visualizando um arquivo novo, recém-criado por você, utilizando o editor de textos Nano.

O arquivo de configurações Samba está dividido em seções, e cada seção é representada da seguinte forma: “[nome da seção 1]” “[nome da seção 2]”

Para configurar o Samba, iniciaremos pela seção global.

# A seção global contém parâmetros de configurações globais, os quais serão aplicados a todo o
#servidor, e a todo compartilhamento.
[global]
server string = nomedoserver    #Nome DNS
netbios name = nomedoserver    #Nome NetBIOS
workgroup = WORKGROUP    #Grupo de trabalho das máquinas Windows

#Opções para security:
# none – Nada de senhas!
# user – Requer uma senha Unix, mesmo antes mesmo de escolher o compartilhamento ao qual
#pretende acessar.
# share – Requere uma senha Unix, apenas se ao acessar o compartilhamento você não tiver
#permissões para acessá-lo.
security = share
#No arquivo de log, serão armazenadas informações sobre cada conexão realizada ao servidor.
#’%m’ é uma variável que corresponde ao nome da máquina que acessar o servidor Samba.
log file =  /var/logs/samba/samba.log    #para um log centralizado
#log file = /var/logs/samba/%m.log #para um log por máquina conectada

Depois de terminada a configuração global, deve-se configurar os compartilhamentos:

#Compartilhando
#[nome do compartilhamento]
[Publicidade e Marketing]
comment = Acesso Restrito ao setor de Marketing
path = /samba/marketing
public = yes    #Acesso sem senha, público (yes ou no)
writable = yes    #Permitir alterações no diretório? (yes ou no)
#valid users = deixe para mais tarde   #Mais tarde!

Já é possível testar nossas configurações.

Vamos, para isso reiniciar o serviço do Samba:

# /etc/init.d/samba restart

Ou:

# /etc/init.d/samba stop
# /etc/init.d/samba start

Ou:

# service samba restart

Ou ainda:

# service samba stop
# service samba start

Vamos testar nossa configuração!

Em um computador Windows, presente na mesma rede e configurado no mesmo grupo de trabalho do Samba, chame o diálogo Executar, e então, digite:

  • \\[server string]
  • E aperte: OK
Linux: Configuração definitiva do Samba

Caso tenha escolhido o valor none ou share para o parâmetro security, nenhum prompt de senha será apresentado.

Caso tenha escolhido o valor user para security, terminaremos a configuração na seção “Configuração – Parte 3 (Configurando Permissões)”.

Você, provavelmente, terá acesso com permissões de somente leitura ao diretório “Publicidade e Marketing”. Configuraremos isso mais tarde.

Curiosidade

Sabe por que não se deve convidar usuários ao servidor, com frases do gênero: “Bem-Vindo ao compartilhamento…”?

Certa vez, um hacker invadiu um dos servidores de uma certa empresa, e ao ter acesso ao shell da empresa, recebeu a seguinte mensagem “Bem-Vindo à empresa y”.

Mais tarde, o mesmo foi descoberto, e julgado em tribunal. Porém, o mesmo alegou ter sido “bem recebido” na empresa, e ganhou a causa, sem sofrer penalidades.

Agora, lhe pergunto: Você convidaria um hacker ao seu servidor?

Etapa 3

Configurando permissões – Usuários e Grupos

Agora, vamos sair um pouco do arquivo de configurações do Samba e criarmos os usuários que realizarão login via rede através do Samba.

Os usuários do Samba, assim como citado anteriormente, são usuários comuns do GNU/Linux.

Vamos criá-los.

# useradd joana_dark
# useradd diego_hipolito
# useradd maradonna

Os três usuários acima, serão usuários do Samba, pertencentes ao grupo marketing. Porém, para cada um deles, foi criado um diretório /home.

Abaixo, segue os mesmos comandos, porém, com parâmetros que impossibilitarão o uso do login e senha para login local no servidor, e negarão a criação de uma pasta pessoal (/home/[usuário]):

# useradd –no-create-home -s /bin/false joana_dark
# useradd –no-create-home -s /bin/false diego_hipolito
# useradd –no-create-home -s /bin/false maradonna 

O parâmetro “-s” especifica um shell de comandos para ser atribuído ao usuário criado. O shell /bin/false, como o nome sugere, é um shell falso, e qualquer usuário que utiliza este shell não será capaz de logar-se corretamente no sistema GNU/Linux. Ainda bem que para o usuário acessar os compartilhamentos, ele não precisa de um shell válido, não é mesmo?

Caso você tenha criado um usuário sem especificar o shell, o usuário é configurado com o shell padrão de sua distro. Para alterá-lo, edite diretamente o arquivo de texto /etc/passwd, ou execute o comando usermod -s /bin/false [nomeDoUsuárioExistente].

# nano /etc/passwd
Ou:
# usermod -s /bin/false [nomeDoUsuárioExistente]

Os usuários acima, foram criados sem qualquer tipo de senha, pois, os usuários do Samba não necessitam de uma senha de logon no GNU/Linux, portanto, configurar uma senha é opcional.

Vamos adicionar estes usuários para serem utilizados no Samba:

# smbpasswd -a joana_dark
# smbpasswd -a diego_hipolito
# smbpasswd -a maradonna

Já se pode testar o login destes usuários em seu servidor Samba, utilizando um cliente Microsoft Windows.

* Aviso: logar não quer dizer “acesso garantido aos diretórios”, isso ainda estamos ao passo de configurar.

Para facilitar a administração e ter compartilhamentos Samba extremamente seguros, devemos organizar os usuários em grupos. Em uma empresa, é muito simples: o nome dos grupos de usuários deverão ser os mesmos de cada departamento da empresa.

Vamos criar o(s) grupo(s):

# addgroup marketing
# addgroup departamento_pessoal
# addgroup direcao

Neste exemplo, apesar de criarmos três grupos, apenas o grupo marketing será configurado.

Agora, vamos agrupar os funcionários da empresa nos grupos correspondentes, de acordo com o seu departamento.

Em nosso caso, os três funcionários pertencerão ao mesmo grupo (departamento) marketing:

# adduser joana_dark marketing
# adduser diego_hipolito marketing
# adduser maradonna marketing

Etapa 4

Configuração: Parte 3 – Configurando Permissões (Permissões de acesso e segurança)

Primeiramente, vamos criar um diretório pessoal para cada um dos três membros do grupo marketing:

# mkdir /samba/marketing/maradonna
# mkdir /samba/marketing/diego_hipolito
# mkdir /samba/marketing/joana_dark

* Aviso: os nomes dos diretórios não necessitam ser os mesmos que o do usuário.

Primeiramente, ao diretório raiz do departamento, iremos configurar quem o “comandará”, e o grupo de usuários que o comandará:

# chown root.marketing /samba/marketing

O comando chown (change owner), segue a seguinte sintaxe:

chown [usuário_dono].[grupo_dono] [diretório]

Você deve estar perguntando-se: mas, por que devemos ter o usuário root de dono, uma vez que o mesmo sempre possui acesso irrestrito a todos os diretórios?

E a resposta é simples: o usuário dono, neste momento não será importante. O mais importante é que o grupo marketing agora, é dono de seu próprio diretório. Ótimo!

Agora, vamos a uma das partes mais divertidas, a configuração das permissões.

A partir deste momento, o diretório /samba/marketing pertence ao usuário root, também ao grupo marketing e a todos os membros deste grupo.

É extremamente recomendável conhecer permissões (chmod) a partir deste ponto.

# chmod 000 /samba/marketing

Sintaxe do comando:

chmod [permissão_usuário_dono][permissão_grupo_dono][permissão_para_qualquer_outro_usuário] [diretório]

Para cada permissão (dono, grupo, ou outros usuários), pode-se atribuir um número entre 0 e 7, para permitir o nível de acesso ao diretório especificado.

Abaixo, será explicado cada nível de acesso, sem maiores detalhes:

   
  Permissão   Binário  Decimal
  ---         000        0
  --x         001        1
  -w-         010        2
  -wx         011        3
  r--         100        4
  r-x         101        5
  rw-         110        6
  rwx         111        7

Fonte: www.infowester.com

Onde:

  • R – Read (Leitura) :: Permissão de “olhar” o conteúdo.
  • W – Write (Escrita) :: Permissão de gravar novos arquivos e alterar os já existentes.
  • X – Execution (Execução) :: Permissão de abrir o diretório e abrir arquivos que estão no mesmo.

Se não compreendeu permissões GNU/Linux, você deve estudar sobre a mesma, e o link acima, o auxiliará muito em seu aprendizado.

Vamos analisar novamente o comando digitado anteriormente:

# chmod 000 /samba/marketing

   
 Usuário             Grupo               Outros usuários (não donos)
   0                     0                     0
 Leitura=negada,     Leitura=negada,     Leitura=negada,
 Escrita=negada,     Escrita=negada,     Escrita=negada,
 Execução=negada.    Execução=negada.    Execução=negada.

Sendo assim, ninguém terá acesso ao diretório, correto?

Vamos ser bonzinhos, e liberar o acesso ao usuário e ao grupo? Planejando…

– O usuário (root) poderá receber qualquer permissão.
– O grupo receberá acesso de leitura e execução (r-x – 5).
– Qualquer outro usuário terá seu acesso completamente negado!

# chmod 750 /samba/marketing

   
  Usuário               Grupo                   Outros usuários (não donos)
    7                     5                         0
  Leitura=concedida,    Leitura=negada,         Leitura=negada,
  Escrita=concedida,    Escrita=negada,         Escrita=negada,
  Execução=concedida.   Execução=concedida.     Execução=negada.

Reinicie os daemons do Samba:

# /etc/init.d/samba restart

Pronto, agora experimente acessar o servidor Samba de um cliente Windows, acesse o diretório compartilhado Marketing e uma senha lhe será pedida.

Você deve, apenas, poder ver o conteúdo do diretório, mas não poderá alterá-lo.

Ainda não pode acessar o diretório? Isso é comum e será resolvido assim que alterarmos algumas configurações do arquivo de configurações do Samba, ok? Não se desespere.

Iremos agora, tornar os usuários pertencentes ao grupo marketing donos de seus próprios subdiretórios:

# chown maradonna.marketing /samba/marketing/maradonna
# chown diego_hipolito.marketing /samba/marketing/diego_hipolito
# chown joana_dark.marketing /samba/marketing/joana_dark

Agora, cada usuário é dono de um diretório diferente, e, além disso, o grupo também é dono de cada diretório dos usuários do grupo marketing.

Vamos configurar o nível de acesso de cada usuário, para cada um dos três diretórios:

# chmod 750 /samba/marketing/maradonna
# chmod 750 /samba/marketing/diego_hipolito
# chmod 750 /samba/marketing/joana_dark

Vamos analisar o comando.

# chmod 750 /samba/marketing/joana_dark

O usuário dono (joana_dark) recebeu a permissão 7 (acesso total), os membros do grupo marketing receberam a permissão 5 (r-x – Read & Execution – Leitura + Execução), permitindo a estes, acessarem o diretório livremente, porém, não poderão alterar ou salvar quaisquer dados.

Etapa 5

Configuração: Parte 3 – Configurando Permissões (Realizando alterações no arquivo de configuração do Samba)

# nano /etc/samba/smb.conf

Oba! Estamos novamente configurando o smb.conf.

Faremos agora, os ajustes finais.

#Compartilhando
#[nome do compartilhamento]
[Publicidade e Marketing]
comment = Acesso Restrito ao setor de Marketing
path = /samba/marketing
public = no    #Acesso sem senha, público (yes ou no)
writable = yes    #Permitir alterações no diretório? (yes ou no)
valid users = @marketing    #Apenas os membros do grupo marketing acessarão o compartilhamento.
force group = marketing    #Força o acesso do grupo marketing somente.

Salve o documento e, em seguida, reinicie os daemons do Samba:

# /etc/init.d/samba restart

Há ainda um parâmetro chamado veto files, para você acrescentar à um compartilhamento. O mesmo é útil para vetar nomes de arquivos e/ou extensões, facilitando para o administrador impedir a disseminação de arquivos perigosos que sejam alojados no servidor, e desencorajar os usuários à guardarem arquivos pessoais nos diretórios compartilhados. Veja abaixo um exemplo de uso do parâmetro:

veto files = *.exe/*.com/*. scr/*.rar/*.zip/*.ace*.cab/*.bat/*.inf/

O parâmetro veto files pode ser aplicado à um compartilhamento, ou diretamente na seção global.

Quer mais? Que tal gerenciar o seu servidor com o WEB Admin para o Samba, o SWAT?

# aptitude install swat

Após a instalação, abra seu navegador de Internet preferido e digite o seguinte endereço na barra de endereços de seu navegador:

  • http://localhost:901
Linux: Configuração definitiva do Samba
Rolar para cima