Logo Dicas-L
Dicas-L em RSS
Home Histórico Bookmarks Artigos Cursos Newsletters L.I.C. Rau-Tu FAQ Educação Galeria de Imagens Fale Conosco

Samba: Integração Windows NT e Linux - Parte II

Descrição do Pacote Samba

O software Samba consiste de dois programas principais e alguns outros componentes secundários, que também serão abordados. Estes programas chamam-se smbd e nmbd.

O programa smbd é o componente que permite que servidores Unix compartilhem seus recursos de disco e impressão com clientes Windows. Estes serviços são fornecidos por meio do protocolo SMB ou CIFS (Common Internet File System).

O daemon smbd permite o compartilhamento de seus recursos tanto no modo de compartilhamento (share mode) ou no modo de usuário (user mode). No modo de compartilhamento, que é o modo mais simples e menos recomendável, a cada recurso compartilhado atribui-se uma senha. Se o usuário desejando utilizar tal recurso fornecer a senha correta, então se é permitido o acesso. Este enfoque tem problemas claros de segurança visto que uma senha é distribuída a todos os que desejarem acessar um recurso. Já no modo de compartilhamento em nível de usuário, cada usuário possui sua própria senha e os privilégios de acesso a recursos são outorgados pelo administrador do sistema. Este modo de acesso a recursos, além de mais seguro, é mais conveniente para os usuários, visto que, uma vez identificado pelo sistema, não existe a necessidade de se fornecer senhas várias vezes para acessar recursos diferentes. Em domínios WindowsNT este controle de acesso é gerenciado pelo Controlador do Domínio (Domain Controller). A partir da versão 2.0, o Samba já provê suporte para este tipo de autenticação.

Cada sessão estabelecida gera a criação de uma cópia do programa smbd. Esta cópia atende a todas as conexões solicitadas pelo cliente durante a sessão. Quando todas as conexões estabelecidas pelo cliente são encerradas, a cópia do programa smbd criada é terminada.

O programa smbd irá se comportar de acordo com as definições contidas no arquivo /etc/smb.conf. As opções de configuração do programa smbd são bastante extensas e oferecem um alto grau de flexibilidade. O Samba chega mesmo a oferecer um grau de configurabilidade que mesmo sistemas NT não oferecem.

O outro componente do pacote Samba, nmbd, é o servidor de nomes NetBIOS. Estes servidor entende e responde a solicitações de resolução de nomes NetBIOS sobre IP. No Windows Explorer, no item Network Neighborhood, é o responsável pelo aparecimento do ícone do servidor samba. Isto se dá devido ao fato de que o daemon nmbd participa e responde a solicitações emitidas pelos protocolos de varredura da rede (browsing).

A resolução de nomes pode ser feita de duas formas: por meio de broadcasts e ponto a ponto. Ambos os métodos podem ser utilizados, dependendo da configuração adotada. A resolução por meio de broadcasts é a que mais se aproxima do mecanismo empregado originalmente pelo NetBIOS. Sempre que uma máquina desejar conectar-se com outro computador, uma mensagem é enviada para a rede. Todas as máquinas recebem este pacote e a máquina com a qual se deseja estabelecer a conexão responde com seu número IP.

O outro tipo de resolução de nomes envolve o uso de servidores NBNS (NetBIOS Name Service), ou como são mais comumente conhecidos, servidores WINS. A Microsoft batizou a sua implementação do serviço NBNS de WINS, ou Windows Internet Name Service. Este serviço realiza a coleta de nomes e números IP e disponibiliza esta informação para quem desejar. Os clientes enviam seus nomes NetBIOS e números IP para o servidor NBNS, que por sua vez armazena estes dados em um banco de dados. Quando um cliente desejar se comunicar com um outro cliente, ele envia o nome do outro cliente para o servidor NBNS. Se o nome constar de seu banco de dados, o servidor NBNS retorna ao solicitante o número IP.

Ao contrário do broadcast, que funciona apenas em uma rede local, clientes em redes diferentes conseguem utilizar os serviços de um único servidor WINS. Este mecanismo de resolução de nomes ponto a ponto não se restringe a uma rede local.

O daemon nmbd, à semelhança de servidores WINS, mantém uma lista de serviços de compartilhamento de recursos de impressão e armazenamento oferecidas pelos clientes em uma rede. Esta lista está disponível para consulta para os computadores da rede. Em uma rede local, os computadores participantes realizam uma eleição para decidir qual deles se tornará o Local Master Browser (LMB). O vencedor então se identifica reinvindicando um nome NetBIOS especial (em acréscimo aos nomes que já possui). A função do LMB é manter uma lista dos serviços disponíveis e é esta lista que aparece ao se clicar no ícone Network Neighborhood na área de trabalho.

Além dos LMBs, existem também os Domain Master Browsers (DMB). Os DMBs coordenam suas listas de recursos por entre domínios NT. Usando serviços oferecidos por um servidor WINS, os LMBs conseguem localizar os DMBs para trocar informações e combinar listas de recursos. Desta forma, esta lista de recursos é propagada para todos os computadores em um domínio NT. Esta propagação de recursos entretanto pode tomar um tempo considerável até que todas as mudanças estejam sincronizadas.

Sistemas Linux oferecem ainda um nível adicional de funcionalidade através do suporte a sistemas de arquivos do tipo smbfs. Desta forma é possível se utilizar em sistemas Linux arquivos compartilhados do ambiente Microsoft como se fossem sistemas de arquivos locais.

Instalação

A instalação do Samba em sistemas Linux não poderia ser mais simples. Dependendo da variante de Linux utilizada, tudo o que é necessário é localizar um site na Internet que distribua os binários para sua arquitetura e instalá-los.

O site do Samba, que fica em http://www.samba.org, distribui os binários para praticamente todas as variantes Unix existentes. Entretanto, se você for um dos poucos felizardos que trabalha em uma arquitetura não muito comum, não se desespere. O código fonte do Samba, seguindo a tradição de todos os softwares abertos, também está disponível. A instalação a partir do código fonte normalmente se dá se maiores problemas.

Para o RedHat Linux, a instalação é feita através do gerenciador de pacotes do RPM (RedHat Package Manager). A instalação deve ser feita a partir da conta do superusuário: .. rpm -i sambaxxx.rpm ;;

Através deste único comando todas as tarefas de configuração são executadas. Os binários são colocados em /usr/bin/..., a documentação é colocada em /usr/doc/sambaxxx, um arquivo padrão de configuração é copiado para /etc/ e assim por diante. Além da instalação de todos os binários, arquivos de documentação e configuração, são também configurados os scripts de inicialização para que já durante o boot estes serviços (nmbd e smbd) sejam ativados.

A opção de se instalar ou não o Samba é dada a usuários do Linux RedHat já na instalação do sistema, através da seleção dos serviços SMB.

A instalação a partir do código fonte, a partir da versão 2.0, é bastante simples. Obtenha o código fonte de alguma site de distribuição do samba, e expanda-o em algum diretório de seu sistema. A regra não oficial vigente em ambientes Unix é que todo o código fonte seja expandido no diretório /usr/local/src: .. [1] # cd /usr/local/src [2] # gzip -dc sambaxxx.tar.gz | tar xvf - [3] # ln -s sambaxxx samba [4] # cd samba [5] # ./configure [6] # make [7] # make install ;;

Nas linhas acima, os números entre colchetes foram incluídos apenas para facilitar a explanação que se segue.

Em [1] deslocamo-nos para o diretório /usr/local/src, onde se encontra armazenado o código fonte de todos os programas instalados em nosso sistema. O passo [2] realiza a expansão dos arquivos integrantes do software Samba. A distribuição original consiste de um arquivo no formato tar compactado com o programa gzip. O comando ?gzip -dc? realiza a descompactação do arquivo sambaxxx.tar.gz e o resultado é fornecido como entrada para o programa tar, que faz então a expansão final. O passo seguinte [3] cria um link de nome samba, para o diretório criado em [2]. O comando executado em [5] faz uma análise do ambiente computacional, define diversas variáveis e cria um arquivo Makefile apropriado. Embora seja possível se fornecer uma enorme variedade de opções ao programa configure, a minha recomendação é que sejam usados os valores default, ou seja, aqueles definidos pelo comando configure invocado sem se fornecer nenhum argumento. Mas se mesmo assim você desejar conhecer as opções disponíveis, basta invocar o comando configure -help. A etapa final [7] realiza a instalação final do produto, criando a árvore de diretórios necessária e copiando os binários e outros arquivos relevantes para os locais definitivos.

O pacote RPM (RedHat Package Manager) que contém o software Samba em formato pré-compilado, pronto para instalação em sistemas RedHat Linux, contém 271 arquivos, dos quais 217 são arquivos documentando os vários componentes do software. Não é por falta de informação que o Samba não vai funcionar em seu sistema, não?

Neste ambiente, os 271 arquivos são distribuídos pelos seguintes diretórios: .. /etc/codepages /usr/bin /usr/sbin /usr/doc/samba-xxx /usr/lib /usr/man /usr/share/ /var ;;

Configuração

O Samba pode ser configurado de inúmeras formas, adequando-se a praticamente qualquer tipo de ambiente. O Samba pode ser usado como servidor de arquivos e de impressão, pode utilizar os serviços de autenticação de um servidor Windows NT (Primary Domain Controller) ou então realizar ele próprio esta autenticação. As versões mais recentes, ainda em desenvolvimento, permitem até mesmo que um servidor Samba atue como um Primary Domain Controller.

O coração de tudo está no arquivo /etc/smb.conf. Em sistemas Red Hat Linux, este arquivo de configuração fica no diretório /etc. O arquivo é fartamente comentado e permite que configurações mais simples sejam feitas simplesmente através da leitura destas informações e da modificação de alguns poucos parâmetros. O arquivo é dividido em três sessões principais denominadas [global], [home] e [printers]. O nome da sessão (à exceção da sessão [global]) é o nome do recurso compartilhado e os parâmetros dentro delas definem os atributos destes recursos. O parâmetro [global] define os parâmetros padrão do sistema (defaults). Como veremos nos exemplos que se seguem, à exceção de alguns poucos parâmetros, normalmente não necessitamos nos preocupar muito com estas definições. Os valores padrão assumidos pelo Samba são via de regra bastante razoáveis. Em [homes] são definidas as permissões padrão para os diretórios de usuários quando montados a partir de computadores NT ou Windows. Em [printers] temos a definição de permissão de acesso às impressoras compartilhadas pelo servidor Samba. Um compartilhamento (share) consiste de um diretório ao qual se está permitindo o acesso acrescido de uma descrição dos direitos de acesso outorgados ao usuário do serviço, além de outras opções. As sessões podem descrever recursos de disco compartilhados ou impressoras. A sessão denominada [global] especifica opções que se aplicam ao servidor como um todo, ou definem parâmetros padrão (default). A seguir, um breve exemplo de definição da sessão [global] do arquivo . Todos os comentários foram removidos para uma melhor visualização dos parâmetros. [global] workgroup = computacao hosts allow = 10.0.0. 127. server string = Servidor Samba - Computacao printcap name = /etc/printcap load printers = yes log file = /var/log/samba/log.%m max log size = 50 security = server password server = 10.0.0.1 encrypt passwords = yes socket options = TCP_NODELAY dns proxy = no A seguir incluímos a descrição dos itens acima: workgroup = computacao Esta opção define define o nome de um grupo de trabalho ou o nome de um domínio NT. Em nosso exemplo atribuímos o valor ?computacao? a esta opção hosts allow = 10.0.0. 127. Aqui são especificadas as máquinas que estão autorizadas a se conectarem a este servidor. Os valores 10.0.0. e 127. indicam que apenas computadores pertencentes a classe A de número 10.0.0. e a própria máquina (por meio da especificação do endereço de loopback 127.) estão autorizadas a usar os serviços deste servidor samba. server string = Servidor Samba - Dep.de Computação Este valor é equivalente ao campo de descrição de um servidor NT (NT Description Field). É o valor que aparece ao lado do nome do computador quando exibido na janela do Windows Explorer. printcap name = /etc/printcap Em sistemas Unix, as impressoras costumam ser definidas em um arquivo chamado printcap, que normalmente fica no diretório /etc. Esta opção permite que seja especificada uma outra localização para este arquivo. No nosso exemplo foi mantida a localização default. load printers = yes 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 print log file = /var/log/samba/log.%m Como especificado acima, cada máquina que se conectar a este servidor Samba terá um arquivo de log separado indicando todas as solicitações feitas e tudo o mais que se relacionar com estas conexões. Esta separação é bastante útil, principalmente quando se está realizando a configuração inicial, permitindo identificar rapidamente qualquer erro. max log size = 50 Este é o valor máximo em Kb que os arquivos de log podem ter. security = server 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? (default), o cliente se autentica separadamente para cada recurso que desejar acessar. A password é enviada juntamente com cada solicitação de acesso. Já na opção ?user? o cliente envia o nome do usuário e a senha quando do estabelecimento da sessão. Neste momento o servidor não sabe qual recurso será solicitado. Se o servidor aceitar a conexão (username e password válidos) então o cliente terá direito de acesso a todos os recursos para os quais está autorizado. Na opção ?user?, o acesso aos recursos compartilhados será permitido ou negado levando-se em conta as permissões de acesso dos usuários relativamente ao próprio recurso. Na opção ?server?, o servidor Samba envia ao servidor de senhas (password server, próxima opção), o conjunto ?username/password? da mesma forma como recebeu. Se o servidor de senhas confirmar a identificação, o servidor Samba aceita a conexão. Isto permite que um servidor Samba utilize os serviços de outro servidor SMB para autenticação das conexões. Para maiores informações consultar o documento security_level.txt, distribuído juntamente com o Samba. password server = 10.0.0.1 Temos aqui o endereço IP do servidor SMB que irá autenticar os usuários que desejarem se utilizar dos serviços do servidor Samba. encrypt passwords = yes Se possível, sempre especificar esta opção como ?yes?, para evitar que senhas sejam descobertas através da análise dos pacotes circulando na rede (packet sniffers). Dependendo de seu ambiente, podem existir algumas restrições que impeçam ou dificultem esta encriptação. Para maiores detalhes ler os documentos ENCRIPTION.txt, Win95.txt e WinNT.txt da documentação do Samba. socket options = TCP_NODELAY dns proxy = no [Homes] comment = Diretórios de Trabalho browseable = no writable = yes Esta sessão define os diretórios dos usuários. Basicamente se especifica que estes diretórios não estão disponíveis para visualização pública (browseable = no). Apenas usuários autorizados conseguirão examinar seu conteúdo. Estes diretórios podem ser montados para gravação uma vez que o usuário tenha sido autenticado (writable = yes). Até aqui, a configuração fornecida especifica que o servidor Samba irá utilizar como servidor SMB, para autenticação de usuários, o computador cujo endereço IP é 10.0.0.1. Uma vez que este usuário tenha sido autenticado, ele terá acesso de leitura e gravação a um diretório existente no servidor Samba. As senhas serão encriptadas e apenas os computadores da rede 10.0.0. e o próprio servidor Samba terão acesso aos arquivos. Do arquivo /etc/smb.conf original, apenas cinco opções foram modificadas para disponibilizar este servidor Samba como servidor de arquivos para um domínio NT: workgroup = computacao hosts allow = 10.0.0. 127. security = server password server = 10.0.0.1 encrypt passwords = yes

Teste da Sintaxe do Arquivo de Configuração

Uma vez modificado o arquivo /etc/smb.conf para atender às especificações de sua rede, é possível realizar um teste da configuração através do utilitário testparm. A melhor forma de se usar este utilitário é redirecionando a saída para um arquivo e em seguida analisando-se o resultado. Importante, o script fica aguardando que se pressione alguma tecla para encerrar o processamento. O resultado gerado exibe uma lista completa das variáveis e os valores de cada uma delas. A mensagem Loaded services file OK, como abaixo, indica que o arquivo foi processado sem erros. # testparm /tmp/testparm.out # vi /tmp/testparm.out Load smb config files from /etc/ Processing section ?[homes]? Processing section ?[printers]? Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters workgroup = MYGROUP netbios name = netbios aliases = server string = Samba Server interfaces = bind interfaces only = No security = USER encrypt passwords = No update encrypted = No use rhosts = No .... várias linhas omitidas Simulemos então um erro de configuração no arquivo . Ativemos simultaneamente os valores ?wins support = yes? e ?wins server = wins?. Estes valores são mutuamente excludentes, pois especificam que o servidor Samba irá atuar como um servidor Wins e ao mesmo tempo especifico o nome de um outro servidor Wins. Ao executar o comando testparm neste arquivo de configuração temos: # testparm Load smb config files from /etc/ Processing section ?[homes]? Processing section ?[printers]? Loaded services file OK. ERROR: both ?wins support = true? and ?wins server = ? cannot be set in the file. nmbd will abort with this setting. Press enter to see a dump of your service definitions O erro foi corretamente identificado e somos avisados de que o programa nmbd não irá funcionar com esta configuração. Pela análise do arquivo de saída é possível se identificar quaisquer erros eventualmente cometidos

Conclusão

Este dois artigos certamente não esgotam todos os recursos oferecidos pelo software Samba. Esperamos entretanto termos conseguido ilustrar algumas das possibilidades e também exemplificar como, de uma forma simples e com a alteração de alguns poucos parâmetros se é possível configurar um servidor Samba. Como já dito anteriormente, um dos pontos fortes do Samba é justamente sua documentação abundante onde podem se encontrar informação sobre praticamente todos os aspectos relativos ao seu uso e configuração.

Referências

Para a criação destes dois artigos sobre Samba consultou-se um grande número de artigos publicados em revistas eletrônicas, diversos tutoriais e a própria documentação do pacote. Estes links podem ser encontrados no endereço [1]http://www.dicas-l.com.br/hotlinks/Samba/index.html