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_Senacserver 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
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
comment = Arquivos dos setores
path = /dados
browseable = yes
writable = yes
valid users = @relgrupo testesmb
write list = @gerente ocara
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.