Servidor de Arquivos – SAMBA

O Samba é um software do Linux que possibilita compartilhamento entre máquinas Linux e Windows, além de possibilitar o controle de compartilhamento através de validação de usuários e oferecem serviços de impressão para outros clientes deste protocolo, como máquinas Windows.

Os pacotes do Samba recebem nomes um pouco diferentes nas distribuições derivadas do Debian (incluindo o Ubuntu, Kubuntu e outras) e no Fedora (e outras distribuições derivadas do Red Hat, como o CentOS).

No Fedora e no CentOS a instalação é feita usando o yum:

# yum install samba samba-client samba-doc samba-swat

O Fedora inclui mais um pacote, o “system-config-samba”, um utilitário de configuração rápida, que permite criar e desativar compartilhamentos de forma bem prática.

Com os pacotes instalados, use os comandos:

# /etc/init.d/samba start

# /etc/init.d/samba stop

… para iniciar e parar o serviço. Por padrão, ao instalar o pacote é criado um link na pasta “/etc/rc5.d”, que ativa o servidor automaticamente durante o boot. Para desativar a inicialização automática, use o comando:

# update-rc.d -f samba remove
Pata reativá-lo mais tarde, use:

# update-rc.d -f samba defaults

 

No Fedora, CentOS e no Mandriva, os comandos para iniciar e parar o serviço são:

# service smb start

# service smb stop

 

Para desabilitar o carregamento durante o boot, use o “chkconfig smb off” e, para reativar, use o “chkconfig smb on”. Note que, em ambos, o pacote de instalação se chama “samba”, mas o serviço de sistema chama-se apenas “smb”.

Os principais diretórios e arquivos utilizados pelo samba são:

/etc/samba = Diretório que contem arquivos de configuração e contas de usuários e máquinas.

/etc/samba/smb.conf = Arquivo de configuração principal.

Para verificar qual é a versão do Samba instalado, podemos utilizar o comando:

# smbd -V

IMPORTANTE:

Para usar o Samba em conjunto com estações rodando o Windows Vista, você deve utilizar o Samba versão 3.0.22, ou superior, que oferece suporte ao protocolo NTLMv2, que é o protocolo de autenticação utilizado por padrão pelo Windows Vista.

Se não for possível atualizar o Samba, a segunda opção é configurar as estações com o Vista para permitirem o uso do sistema NTLM, o que é feito através do utilitário “secpol.msc” em “Diretivas locais > Opções de segurança > Segurança de rede: nível de autenticação Lan Manager”, alterando o valor da opção de “Enviar somente resposta NTLMv2” para “Enviar LM e NTLM – use a segurança da sessão NTLMv2, se negociado”.

 

Configurando o Samba

Vamos colocar o servidor de samba no ar. Para tal, vamos utilizar um arquivo de configuração bem simples que está listado a seguir.

#vi /etc/samba/smb.conf

[global]

workgroup = Aula_Senac
server string = Servidor SMB
log file = /var/log/samba/%m.log
max log size = 50
log level = 1
name resolve order = Imhosts bcast
security = share

O arquivo de configuração é dividido em seções. Por enquanto temos apenas a seção [global]. Dentro desta seção, configuramos:

Parâmetro Descrição
Workgroup Grupo de trabalho ou domínio ao qual a máquina pertence.
server string Comentário qualquer sobre o servidor.
log file Nome e localização do arquivo de log. %m será substituído pelo nome da maquina que efetuou alguma conexão.
max log size Tamanho máximo do arquivo de log (em bytes) antes que um novo arquivo seja criado.
log level Controla o detalhamento das mensagens de debug a serem enviadas para os logs.
name resolve order Configura a resolução de nomes NetBIOS.

 

Há vários outros parâmetros que, quando não utilizados, assumem valores padrão que nos são apropriados no momento e por isto no momento não estão sendo especificados.

Com esta configuração já podemos iniciar o serviço:

# service smb restart

Obs: A partir deste momento, o computador já é listado no ambiente de rede de uma estação Windows.

 

Compartilhamento Simples

Vamos criar no servidor um diretório chamado /dados, e criar dentro deles os arquivos: alunos, professor e geral.

Agora vamos exportar este diretório. Para isso vamos criar uma nova seção no arquivo de configuração do Samba que definirá este compartilhamento:

#vi /etc/samba/smb.conf

[global] workgroup = Aula_Senac
server string = Servidor SMB
log file = /var/log/samba/%m.log
max log size = 50
log level = 1
name resolve order = Imhosts bcast
security = share

[relatórios]

comment = Arquivos dos setores.
path = /dados
guest ok = yes
O comando parâmetro comment serve apenas para uma pequena descrição (opcional) do compartilhamento, enquanto que o parâmetro patch indica que diretório do sistema de arquivos está sendo exportado. O parâmetro guest permite que os usuários façam autenticação anônima.

Devemos agora reiniciar novamente o serviço:

#service smb restart

Autenticação de Usuários

Porque questões de incompatibilidade precisaremos ter duas bases de autenticação de usuários: a do sistema que continua a mesma (/etc/shadow) e uma base exclusiva para o Samba.

Vamos utilizar o backend (base) tdbsam e para isto faremos as seguinte alterações no arquivo de configuração (linhas em negrito).:

#vi /etc/samba/smb.conf

[global]

workgroup = Aula_Senac
server string = Servidor SMB
log file = /var/log/samba/%m.log
max log size = 50
log level = 1
name resolve order = Imhosts bcast
passdb backend = tdbsamsecurity = user

[relatórios]

comment = Arquivos dos setores.
path = /dados
#guest ok = Yes ## Não permitir acesso anônimo.

 

Criando o usuário no Samba

Para criarmos o usuário no Samba precisamos primeiro criá-lo no sistema:

#useradd testesmb

# smbpasswd –a testesmb

A base com os usuários fica no diretório /etc/samba.

A ferramenta smbpasswd pode ser utilizada tanto para adicionar usuários como para remove-los e mudar a senha. As principais opções são:

 

Alterar a senha do usuário testesmb:

#smbpasswd testesmb

 

Desativar temporariamente o usuário testesmb:

#smbpasswd –d testesmb

Desativar temporariamente o usuário testesmb:

#smbpasswd –e testesmb

Remover o usuário testesmb:

#smbpasswd –x testesmb

(Lembrando que este comando não irá excluir o usuário no sistema).

 

Melhorando o Compartilhamento

O compartilhando configurado até o momento é bem simples. Atualmente ninguém pode escrever no diretório /dados, apenas ler os arquivos que lá estão. Vamos incrementar esta configuração utilizando novos parâmetros:

 

#vi /etc/samba/smb.conf

[global]

workgroup = Aula_Senac
server string = Servidor SMB
log file = /var/log/samba/%m.log
max log size = 50
log level = 1
name resolve order = Imhosts bcast
unix charset = isso-8859-1
security = user
passdb backend = tdbsam
username map = /etc/samba/smbusers
[relatórios]

comment = Arquivos dos setores
path = /dados
browseable = yes
valid users = @relgrupo testesmb
write list = @gerente ocara
writable = yes

Conhecendo os novos parâmetros:

  • browseable: Indica se este compartilhamento deve aparecer na lista de compartilhamentos disponíveis ou não. O padrão deste parâmetro é yes.
  • writable: Indica se este compartilhamento será do tipo escrita e leitura (“yes”) ou somente leitura (“no”). O padrão é ser somente leitura. O contrario desta opção é a diretiva “read only”.
  • valid users: Fornece uma lista de usuários e/ou grupos que tem direito de acessar este compartilhamento. O caractere @ na frente indica que trata-se de um grupo.
  • write list: Fornece uma lista de usuários e/ou grupos que tem direito de escrita este compartilhamento.

 

Compartilhamento [Homes]

Este é um compartilhamento especial para o Samba. É utilizado para automaticamente criar compartilhamento oferecendo o diretório /home dos usuários.

Sempre que um cliente SMB tentar uma conexão a um compartilhamento que não existe, o Samba vai verificar se o nome do compartilhamento por acaso é um nome de usuário valido. Se for, e se senha estiver certa, então um compartilhamento com o nome do usuário será automaticamente criado a partir das configurações [homes] apontando para o diretório /home deste usuário.

#vi /etc/samba/smb.conf

[homes]

comment = Home Directories
browseable = no
writable = yes

 

Compartilhando Impressoras

Semelhante ao [homes], se o nome do compartilhamento que o cliente quer não for encontrado nem no smb.conf e hem no [homes], então o Samba vai procurar uma impressora com este nome. Se for encontrada será criado neste momento um compartilhamento com o nome desta impressora fazendo uma cópia da seção [printers].

Esta é uma forma bastante prática para compartilhar todas as impressoras conhecidas pelo servidor.

Veremos a seguir um exemplo da configuração necessária para compartilharmos todas as impressoras conhecidas pelo servidor:

#vi /etc/samba/smb.conf

[global]

workgroup = Aula_Senac
server string = Servidor SMB
log file = /var/log/samba/%m.log
max log size = 50
log level = 1
name resolve order = Imhosts bcast
unix charset = isso-8859-1
security = user
passdb backend = tdbsam
username map = /etc/samba/smbusers
printcap name = cups
load printers = yesprinting = cups

[relatórios]

comment = Arquivos dos setores
path = /dados
browseable = yes
writable = yes
valid users = @relgrupo testesmb
write list = @gerente ocara

[homes]

comment = Home Directories
browseable = no
writable = yes

[printers]

path = /var/spoll/samba
printable = Yes
browseable = no
writable = nocomment = Todas as Impressoras

Conhecendo os novos parâmetros:

  • printing: Indica o tipo de sistema de impressão a ser utilizado. O Valor padrão e atualmente indicado pelo SAMBA é o cups.
  • printcap name: Caso seja utilizado printing = cups, também deve ser informado aqui.
  • load printers: Indica se o Samba deve ou não carregar uma lista com todas as impressoras disponíveis ao ser iniciado. O Valor padrão é yes.

Para o compartilhamento das impressoras, utilizamos:

  • path: Diretório onde os trabalhos de impressão podem ser armazenados temporariamente.
  • printable: O valor yes deve ser utilizado para compartilhamentos de impressoras.
  • browseable: Da mesma forma que foi feito com o compartilhamento [homes], tiramos o compartilhamento [printers] da lista de compartilhamentos disponíveis.
  • writable: Deve ser configurado para “no” neste caso.

 

Controle de Acesso por IP

Esta camada de controle pode ser acrescentada aos compartilhamentos ou à seção [global], o endereço do cliente. Os parâmetros que controlam estes privilégios são hosts allow e host deny.

hosts allow: lista os endereços (IP ou rede), separados por espaços ou vírgulas, que podem se conectar a este compartilhamento. Endereços não listados aqui terão acessos negados.

Exemplos:

Permite o acesso apenas a maquina com o IP 192.168.11.01:

hosts allow = 192.168.11.01

hosts deny: lista os endereços (IP ou rede), separados por espaços ou vírgulas, que não podem se conectar.