FreeBSD

Autenticação e Compartilhamento de Arquivos para clientes Windows

Samba


O Samba (www.samba.org) é o serviço que promove a integração entre sistemas Unix e Windows em uma rede. Trabalha com o protocolo SMB, o qual o Windows utiliza nativamente, possibilitando desta forma que tenhamos um ambiente com ambas as plataformas interagindo. O Samba foi originalmente criado por Andrew Tridgell, em 1991. Nosso foco será utilizar o Samba como controlador de domínio, servidor de arquivos e autenticação de clientes Windows.
SMB significa Server Message Block, e é o protocolo utilizado pelos sistemas Windows para comunicação e compartilhamento de recursos via rede. O Samba utiliza SMB sobre TCP para compartilhamento de arquivos e UDP para browsing. A Microsoft utiliza no Windows 2000 em diante uma versão melhorada do protocolo SMB, chamada CIFS - Common Internet File System, que também é suportada pelo Samba.

Faça o download do source da última versão estável do Samba, através de algum dos mirrors listados no site. O arquivo tem o nome samba-latest.tar.gz. Pode-se fazer o download a partir de http://us1.samba.org/samba/ftp/samba-latest.tar.gz. A versão atual é 3.0.1. Descompacte o arquivo no /tmp, será criado o diretório samba-3.0.1, acesse-o. Execute os seguintes comandos:

# cd source
# ./configure
# make
# make install

O Samba será instalado em /usr/local/samba. Temos apenas dois daemons, o smbd e o nmbd, que ficam em /usr/local/samba/sbin. O smbd é o responsável por controlar os compartilhamentos de arquivos assim como autenticação e autorização dos clientes. O nmbd auxilia com o browsing da rede e trabalha com NetBIOS (Network Basic Input/Output System) e WINS.

Como os executáveis do Samba são instalados em um diretório diferente do padrão, deve ser ajustado o valor da variável PATH. Para isso, edite o arquivo /root/.profile ou /root/.bash_profile e insira no final da linha iniciada por "PATH" o seguinte valor:

:/usr/local/samba/bin:/usr/local/samba/sbin

Junto com o Samba é instalado o SWAT, que significa Samba Web Administration Tool. Como o próprio nome diz, é uma ferramenta para configurar o Samba a partir de qualquer navegador. Para habilitar esta ferramenta, basta inserir ou ajustar a seguinte linha no arquivo /etc/inetd.conf:

swat stream tcp nowait/400 root /usr/local/samba/sbin/swat swat

Após isso, reinicie o inetd, através do comando "killall -HUP inetd". O SWAT pode ser acessado a partir do endereço http://servidor:901, então entre com o login e senha do root. Se o SWAT não for utilizado é recomendado deixá-lo desativado, para evitar qualquer problema se segurança.

As portas utilizadas pelo Samba são:

netbios-ns 137/udp # NETBIOS Name Service
netbios-dgm 138/udp # NETBIOS Datagram Service
netbios-ssn 139/tcp # NETBIOS Session Service
microsoft-ds 445/tcp # Microsoft-DS

O arquivo de configuração do Samba chama-se smb.conf, e fica no diretório /usr/local/samba/lib. Possui muitas opções, possibilitando inúmeras configurações diferentes, cada uma atendendo ao propósito do servidor que está sendo configurado. Todas opções e variáveis são bem explicadas na sua man page, acessível pelo comando "man smb.conf". Segue abaixo um arquivo exemplo utilizado nesta instalação, adapte o que for necessário:

-------------------- Arquivo smb.conf --------------------
# smb.conf

# Contexto geral.
[global]

# Nome NetBIOS do servidor.
netbios name = SERVTESTE

# Nome do domínio.
workgroup = TESTE

# Descricao do servidor.
server string = Servidor de Arquivos

# Interfaces de rede.
interfaces = 192.168.0.10, 127.0.0.1

# Limita o Samba a utilizar somente as interfaces mencionadas
# acima.
bind interfaces only = yes

# Hosts permitidos a conectar.
hosts allow = 192.168.0.0/255.255.0.0, 127.

# Opcoes de socket, para ajuste das conexoes em camada de rede.
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE

# Nivel de "auto-propaganda" na eleicao de controlador
# de dominio.
os level = 33

# O servidor eh o preferido na eleicao para controlador
# de dominio.
preferred master = Yes

# Permitir logon no domínio de maqs Win9x.
domain logons = Yes

# Diretorio home que sera mapeado quando alguma maq. logar
# no dominio. O valor da variavel %U sera o nome de usuario
# da sessao.
logon home = \\servteste\%U

# Unidade a qual mapear o diretorio home. Usado apenas em WinNT.
logon drive = L:

# Local onde os perfis ambulantes sao armazenados. Se deixado
# em branco ira desabilitar os perfis. Podem ser utilizadas
# variaveis.
logon path =

# Script executado quando o usuario logar.
logon script = %U.bat

# Usuario(s) administrador do dominio.
admin users = root

# Local do arquivo de senhas do Samba.
smb passwd file = /usr/local/samba/private/smbpasswd

# Quando trocar a senha do Samba trocar a do sistema tambem.
unix password sync = Yes

# Programa utilizado para troca a senha do sistema.
passwd program = /usr/bin/passwd %u

# Dialogo para a troca de senha do sistema. A variavel %n sera
# a nova senha.
passwd chat = *New*password* %n\n *Retype*password* %n\n *done*

# Utilizar senhas encriptadas no login.
encrypt passwords = Yes

# Nivel de log (0-10). Quanto maior mais informacoes
# serao logadas.
log level = 1

# Tamanho maximo em KB de cada arquivo de log.
max log size = 2048

# Arquivo de log. A variavel %m sera o nome da maq. cliente.
log file = /var/log/samba/log.%m

# Funcionar como servidor de hora para clientes Windows.
time server = Yes

# Mascara da permissoes dos arquivos criados pelos clientes.
create mask = 0660

# Mascara das permissoes dos diretorios criados pelos clientes.
directory mask = 0770

# Arquivos ou diretorios ignorados nos compartilhamentos.
veto files = /mail/

# Pagina de codigos utilizada pelo servidor.
unix charset = CP850

# Pagina de codigos utilizada nas mensagens do Samba.
display charset = CP850

# Compartilhamento dos diretorios home.
[homes]

# Comentario, descricao.
comment = Diretorio Pessoal

# Ajuste "No" para permitir gravacao.
read only = No

# Nao ira ser anunciado no dominio.
browseable = No

# Compartilhamento Netlogon
[netlogon]

# Caminho no servidor.
path = /usr/local/samba/lib/netlogon

# Permite usuarios anonimos.
guest ok = Yes

browseable = No

# Compartilhamento utilizado, caso habilitado acima,
# para os perfis ambulantes.
[profiles]

# A variavel %H sera o diretorio home do usuario.
path = /%H/Perfil

read only = No
guest ok = Yes
browseable = No

# Compartilhamento do CD-ROM do servidor.
[cdrom]
comment = Drive CD-ROM
path = /cdrom
guest ok = Yes

-------------------- Fim do arquivo smb.conf --------------------

De acordo com esta configuração, os logs serão armazenados em /var/log/samba, então este diretório deverá ser criado manualmente. O arquivo de log do smbd será log.smbd, o do nmbd será log.nmbd e para cada máquina cliente será criado um arquivo no formato log.hostname. O tamanho máximo destes arquivos será 2 MB, quando este limite for excedido o arquivo atual será renomeado com a extensão ".old", e será criado um novo arquivo. Se já houver outro ".old", este será excluído.

Com esta configuração, o nosso servidor será o PDC (Primary Domain Controller) para o domínio TESTE. Para cada máquina ou usuário que irá participar deste domínio, deve ser cadastrada uma conta no sistema e também uma conta no Samba.

Adicione um grupo para as contas de máquinas no sistema, com o nome "maquinas", ou qualquer outro:

# pw group add maquinas -g 160

Para adicionar as contas de máquinas, utilize os seguintes comandos:

# pw user add maquina1$ -c "Conta de Maquina" -d "/nonexistent" -s "/sbin/nologin" -g 160
# smbpasswd -a -m maquina1

Note que as contas de máquinas no sistema devem ser cadastradas com o hostname da máquina cliente seguido de cifrão ($). O parâmetro "-a", no smbpasswd, especifica que estamos fazendo um novo cadastro. Já o "-m" indica que estamos cadastrando uma conta de máquina.

Os cadastros de usuários são feitos da mesma forma como sempre, no sistema. Apenas deve-se cadastrar a senha de usuário do domínio com o comando smbpasswd, da seguinte forma:

# smbpasswd -a usuario1

Insira a senha do usuário, que será posteriormente utilizada para login nas máquinas clientes.

Para inserir as máquinas clientes no domínio, deve-se proceder da mesma forma como se fosse um PDC Windows. Quando solicitada uma conta de administração do domínio, deve-se inserir login e senha do root. Há apenas uma ressalva no Windows XP, deve-se editar o registro e alterar o valor de duas chaves, ou apenas executar o arquivo abaixo:

-------------------- Arquivo winxp.reg --------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
"requiresignorseal"=dword:00000000
"signsecurechannel"=dword:00000000

-------------------- Fim do arquivo winxp.reg --------------------

 

Atualizado em 08/03/04.

Heini Thomas Geib.
http://www2.unijui.edu.br/~heini

Voltar