sexta-feira, 20 de novembro de 2009

Instalando e Configurando um Servidor SAMBA

Seguindo a Série de Artigos para serem utilizados em sala de aula, desta vez apresentaremos o Servidor SAMBA. SAMBA é um acrônimo para o protocolo SMB da Microsoft. O SMB quer dizer Service Message Block e é responsável pelo compartilhamento de arquivos e impressoras na rede Microsoft.

Criado por Andrew Tridgell, o Samba é uma excelente ferramenta para fornecer conectividade entre sistemas Windows e Unix-like, e sua configuração está basicamente concentrada em um único arquivo, que é altamente complexo, mas isto somente no começo de seu uso. Assim que você se acostumar com o programa, verá inúmeras linhas como boas e velhas amigas.

Para configurar o Samba é necessário abrir o arquivo smb.conf em um editor de textos como nano, vi ou mcedit. Este arquivo se encontra em /etc/samba, é nele que serão feitas todas as alterações para que a conectividade entre o Windows e o Linux funcione.

Arquivo de Configuração:
/etc/samba/smb.conf

Portas:
139 tcp 445 tcp

Daemon:
/etc/init.d/samba

1 - Instalando o Samba:
# apt-get install samba cifs-utils

2 - Configurando o mínimo no /etc/smb.conf
O arquivo smb.conf é dividido em duas sessões:

[GLOBALS]
Opções que alteram o comportamento e recursos do servidor Linux na rede Windows

[SHARES]
Sessão que cria e mantém os compartilhamentos do servidor Linux na rede Windows


Abra o arquivo /etc/samba/smb.conf e altere as seguintes linhas:
Na sessão globals:
[GLOBALS]

Linha que decide o Grupo de Trabalho que o Servidor Linux irá entrar na Rede Microsoft
WORKGROUP = ALUNOS

Linha que configura o nome da máquina na rede Windows
NETBIOS NAME = Server_Linux

Linha que decide o tipo de autenticação. Para exigir que todo usuário que acessar o servidor necessite digitar uma senha:
SECURITY = USER

Você pode usar os seguintes atalhos nas configurações do smb.conf
  • %M, Máquina (Machine)
  • %U, Usuário (User)
  • %L, Nome da Máquina Local (Local Machine)

3 - Configurando os compartilhamentos
Depois da sessão [GLOBALS] qualquer outro nome com chaves que for digitado, o Samba já irá reconhecer como compartilhamento. O nome que vem entre chaves já é o nome do compartilhamento e o único parâmentro obrigatório é o caminho do compartilhamento.
Veja abaixo alguns exemplos:

Exemplo 1: Compartilhando o CDROM
[cdrom]
path = /media/cdrom


Exemplo 2: Compartilhando as Músicas:
[mp3]
path = /home/dailson/mp3


Exemplo 3: Compartilhando Jogos
[jogos]
path = /usr/games


As opções mais comunos na área de compartilhamento são:
Comment: Mostra um comentário para o diretório em questão
Browseable: Define se o diretório pode ser visto por todos
Available: Define se o diretório estará disponível para acesso ou não.
Writable: Define se é possível ou não escrever neste arquivo
Read only: Define se o diretório está ou não disponível para gravação.
Write List: Este parâmetro diz ao servidor qual o grupo ou usuário tem permissão para gravar no diretório, caso este seja definido como "@root", somente quem faz parte do grupo root poderá gravar neste diretório, os outros usuários somente poderão ler o conteúdo deste diretório.

Veja abaixo, um diretório compartilhando com as opções acima:
[mp3]
path = /home/dailson/mp3

comment = Pasta de Musicas

browseable = yes

available = yes

writable = yes
read only = no

write list = dailson, @alunos

Obs:
No samba, existe um compartilhamento especial chamado [HOMES] que faz com que todas as pastas homes dos usuários fiquem disponíveis para eles no momento que eles logam no servidor. Por padrão esta pasta vem comentada no arquivo de configuração. Para deixá-la com acesso aos usuários autenticados e com acesso de gravação, deixe este compartilhamento especial da seguinte forma:

[homes]
comment = Home Directories
read only = no


Note que não tem a opção path


Depois de configurado o /etc/samba/smb.conf você já pode reiniciar o daemon e colocar o servidor samba no ar
# /etc/init.d/samba restart

Mas antes de acessar o servidor SAMBA de uma máquina Windows, é necessário cadastrar usuários no SAMBA. Para isso faça o seguinte comando:
# smbpasswd -a usuário

Exemplo:
# smbpasswd -a dailson

Lembre-se que dailson já deve existir no Linux como um usuário comum criado com o comando useradd ou adduser.
Cadastre a senha do usuário

E você agora já pode acessar o servidor Linux em Iniciar / Executar e digite \\ip.do.servidor.linux
Exemplo:
\\192.168.0.1

O Windows irá apresentar a tela de autenticação. Digite usuário e Senha e pronto!
Referências:
http://www.vivaolinux.com.br/artigo/Configurando-o-Samba/

Como utilizar o SAMBA para acessar uma Estação Windows?
Bom, acessar o Linux a partir do Windows já foi visto. Mas para fazer o inverso, a partir de uma máquina Linux, acessar compartilhamentos no Windows.

Se você tiver interface gráfica, pode utilizar o smb4k (Samba para KDE). O smb4k faz todas as tarefas necessárias para gerenciamento de compartilhamento em máquinas remotas Windows. É um "canivete suíço"! Para instalar o smb4k faça:
# apt-get install smb4k

Tela do smb4k

Ou ainda utilizar os próprios Gerenciadores de Arquivos como o Nautilus ou o Konquerror e digitar na barra de endereços: smb:///

Veja o exemplo no Nautilus do GNOME:

Tela do Nautilus

Via linha de comando, existem diversas maneiras. Para facilitar, vamos instalar alguns clientes do Samba:
# apt-get install smbclient smbfs

1 - Listando os Compartilhamentos disponíveis de uma máquina Windows:
# smbclient -U usuário -L \\host

Exemplo:
#smbclient -U dailson -L \\dailson
Informe a senha e veja os compartilhamentos.

Uma dica também é na hora da senha dar enter em branco, para ver se o smbclient lista toda a rede.

2 - Exibindo todas as máquinas da rede e todos os compartilhamentos
# smbtree

Uma dica também é na hora da senha dar enter em branco, para ver se o smbclient lista toda a rede.

3 - Montando um compartilhamento Windows em uma máquina Linux.
Dados do compartilhamento:
IP da Estação Windows: 192.168.0.1
Usuário: dailson
Compartilhamento: Filmes
Ponto de Montagem no Linux: /media/windows

Um dos comandos para resolver este problema é este:
# mount.cifs //192.168.0.1/filmes /media/windows -o username=dailson

Ou ainda:
# mount.cifs \\\\192.168.0.1\\filmes /media/windows -o username=dailson

Você ainda pode especificar a senha diretamente na linha de comando. Isto é útil caso você queira colocar uma montagem em scripts ou na inicialização do sitema:
# mount.cifs //192.168.0.1/filmes /media/windows -o username=dailson,password=senha

Uma maneira bem interessante de configurar o SAMBA é usar uma ferramenta chamada SWAT. O SWAT é o Samba Web Administration Tool. Neste link você encontra um tutorial completo sobre esta ferramenta.

2 comentários:

  1. Olá Dailson! Já tenho um servidor de arquivos com o samba instalando. De windows pra linux ele lista os compartilhametos tudo certinho, pede usuário e senha, enfim. Porém, ao fazer isso por uma máquina Linux com o nautilus, thunar e pedir para listar sempre dá erro. Sei que existe a opção de do control+l no nautilus e digitar smb://ip_do_server mas eu quero a solução via nome da máquina que nem no caso do windows. Você saberia informar algo? Parabéns pelo tópico e as explicações! Obrigado pela atenção!

    ResponderExcluir
    Respostas
    1. Opa Douglas,

      Se você tiver um servidor DNS rodando para linux que possa achar a máquina, creio que isso se resolva. Veja também se o serviço nmdb está rodando. O nmdb é responsável pelo NETBIOS.
      Veja em pesquisa que tem pessoas com este mesmo problema. Se mesmo assim, não resolver, posta aqui pra gente tentar ajudar.
      http://www.vivaolinux.com.br/topico/Servidores-Linux-para-iniciantes/Resolucao-de-Nomes-NMBD-samba

      Excluir