Como surgiu o Samba?

Para podermos compreender um pouco melhor o samba vamos partir do principio.
O criador dessa ferramenta de altíssimo potencial chama-se Andrew Tridgell que quando criou ainda era um estudante. A ferramenta foi criada por que Andrew precisava integrar maquinas rodando Unix com PC rodando DOS. Esta integração na verdade não era o problema, visto que ele possuía uma versão do NFS (Network File System) que permitia que o PC acessasse os arquivos do seu servidor Unix. O problema estava que uma de suas aplicações exigia a interface NetBIOS, e neste pequeno problema o mundo hoje pode se beneficiar do software conhecido como Samba.

Escrever o Samba não foi uma tarefa muito fácil, sendo que na época a Microsoft ainda não tinha disponibilizado especificações sobre o protocolo SMB (Server Message Block) responsável pelo compartilhamento de recursos entre computadores. Sendo assim Andrew teve que realizar a engenharia reversa do protocolo utilizando um software de análise de rede o (Packet Sniffer), assim decifrado o modo de operação do protocolo SMB, Andrew fez a implementação do protocolo em seu computador Unix. Assim o seu computador Unix aparecia na rede NetBIOS. Com isso deu inicio o software de integração que conhecemos como samba, hoje não mais sendo uma iniciativa isolada de uma única pessoa, e sim controlada por diversos colaboradores do mundo de desenvolvimento.

O pacote Samba?

O Software Samba é composto de dois programas principais e alguns outros componentes secundários. Estes programas chamam-se smbd e nmdb.

SMBD: é o componente que permite que o servidor Linux compartilhem seus recursos de disco e impressão com clientes Windows. Este serviço é fornecido por meio do protocolo SMB ou CIFS (Commom Internet File System). O programa smbd irá se comportar de acordo com as definições contidas no arquivo smb.conf geralmente encontrada na pasta /etc/samba ou /etc.

NMBD: é o servidor de nome do NetBIOS. Estes servidores entendem e respondem a solicitações de resolução de nomes NetBIOS sobre IP. A resolução de nomes pode ser feita de duas formas: por meio de broadcast e ponto a ponto. Ambos os métodos podem ser utilizados, dependendo da configuração adotada.

Instalação do Samba

Bom a instalação do Samba não poderia ser mais simples, primeiro entre no site www.samba.org e baixe a versão mais nova para a sua distribuição.

Para distribuições que utilizam o gerenciador de pacotes RPM (RedHat Package Manager). A instalação deve ser feita a partir da conta do superusuário(root).

# rpm –i sambaxxx.rpm

Pronto com esse simples comando no pacote pré-compilado todas as tarefas necessárias para a instalação do Samba será executada e configurada.

A instalação a partir de código fonte, também é bastante simples, obtenha o código fonte no site www.samba.org e siga as instruções.

# cd /usr/local/src
# gzip –dc sambaxxx.tar.gz tar vxf
# ln –s sambaxxx samba
# cd samba
# ./configure
# make
# make install

Pronto, vamos entender o que esses comandos fazem, vou explicar de forma seqüencial, o primeiro comando nos desloca para o diretório especificado, o segundo comando faz a expansão dos arquivos integrantes do software, funciona como o Winzip você compacta alguns arquivos e depois descompacta o mesmo, o terceiro passo cria um link que podemos chamar de alias para ser um atalho do diretoria criado, no quarto passo usamos o link criado para entrar no diretoria e no quinto executamos uma analise do ambiente computacional, e definimos diversas variáveis e assim é criado o arquivo Makefile apropriado para a compilação final do aplicativo. A sexta opção compila do produto e a etapa final realiza a instalação do mesmo no sistema, criando a arvore de diretórios necessários e copiando os binários e outros arquivos relevantes para os locais definitivos.

Configuração do smb.conf

O Samba pode ser configurado de inúmeras formas, adequando-se a praticamente qualquer tipo de ambiente, pode ser usado como servidor de arquivos, impressão ou até mesmo ambos.

O arquivo é divido em seções tais como [global], [home] e [printers] que podemos destacar como as mais importantes.

[global] os parâmetros passados para essa seção definem o comportamento do aplicativo.

[home] são definidas as permissões padrão para os diretórios de usuários quando montados a partir de computadores em rede para usar os recursos de compartilhamento.

[printers] temos a definição de permissão de acesso as impressoras compartilhadas pelo servidor Samba.

Vamos montar um arquivo para entender melhor como funciona esse software.
#vi /etc/samba/smb.conf

[global]
Workgroup = GRUPO
Hosts allow = 10.0.0. 127.0.0. 192.168.1. 192.168.2.
Server string = Servidor Samba
Printcap name = /etc/printcap
Load printers = yes
Log file = /var/log/samba/log %m
Max log = 50
Debug level = 1
Security = server
Password server = 127.0.0.1
Encrypt passwords = yes

Vamos agora entender o que significa esses parâmetros, quais comportamentos foram definidos e algumas outras opções de configuração.

Workgrup: este parâmetro define o nome do grupo de trabalho.

Host allow: neste parâmetro definimos as maquinas ou grupo de subclasses que terão autorização para conectar a este servidor.

Server string: Define o nome do servidor samba.

Printcap name: especifica o direcionamento do arquivo de define as impressoras.

Load printers: Esta diretiva sinaliza ao servidor Samba para realizar a carga automática da lista de impressoras ao invés de optar pela carga individual de cada uma delas. Esta lista é obtida do arquivo printcap.

Log file: cria um arquivo log especificando todos os usuários que conectaram a este servidor, descrevendo todas as solicitações feita pelo o mesmo.

Max log size: define o valor maximo em KB que o arquivo log pode ter.

Debug level: define o nível de debugação do arquivo log, o recomendável é um, temos como opção 0, 1 e 2.

Security: Este é um parâmetro muito importante, pois define o modo de segurança em que o servidor Samba irá operar. As opções possíveis são share, user e server. Na opção share, o cliente se autentica separadamente para cada recurso que desejar acessar. A senha é enviada para cada solicitação de acesso. Já na opção user o cliente envia o nome do usuário e a senha, sendo assim neste momento o servidor ainda não sabe qual a solicitação sendo que se o usuário for validado ele terá acesso conforme as definições de acesso do seu próprio usuário. Na opção server envia o servidor de senhas para identificação assim podendo usar os usuários de outros servidores como SMB.

Password server: este parâmetro será usado somente no caso do security ser definido como server, assim aqui definimos o endereço IP do servidor SMB que ira autenticar os usuários.

Encrypt password: define se as senhas serão transitadas usando o critério de criptografia.

Com esses parâmetros podemos compreender os principais recursos da sessão [global], vamos agora compreender como compartilhamos um diretório, usando a sessão [home].

Vamos criar um diretório a ser compartilhado.

# cd /
# mkdir flavio

Agora vamos configurar o smb.conf para compartilhar o diretório criado acima.

# vi /etc/samba/smb.conf

[Flavio]
   Comment = estou compartilhando este diretório
   Path = /flavio
   Browseable = yes
   Writeable = yes

Existem diversos parâmetros que pode ser usado para uma melhor customização do seu compartilhamento, usamos três dos principais parâmetros da sessão [home] o parâmetro de comentário, o parâmetro que define se o diretório poderá ser visualizado e a parâmetro que define se poderá ser escrito algo sobre ele.

Na sessão de impressora caso o servidor seja um servidor de impressão vamos definir a mesma de forma que libere todas as impressoras para uso na rede, tal qual definida no parâmetro host allow na sessão [global].

# vi /etc/samba/smb.conf

[printers]
  Comment = todas as impressoras
  Path = /var/spool/samba
  Browseable = yes
  Guest ok = yes
  Writable = no
  Printable = yes

Assim definimos que todas as impressoras instaladas no servidor serão usadas e visualizadas na rede.

Conclusão

Podemos concluir então que para montar um servidor Samba basta alterar poucos parâmetros do software, claro que este artigo não aborda todos os recursos do aplicativo, mas certamente alguns principais parâmetros de configuração para subir um servidor Samba.