NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
20 de dezembro de 2002 | volume 6, número 6
volta à página inicial de NewsGeneration
Nesta edição:

NewsGeneration:



Usando o Samba em um Ambiente Acadêmico

Henri Alves de Godoy <henri@claretianas.com.br>
Supervisor do Provedor Internet da Ação Educacional Claretiana
Faculdades Claretianas

Resumo
1. Introdução
2. Preparando o ambiente
3. Configurando o Samba
3.1 Usando o Poledit e o registro do Windows
4. Ferramentas Administrativas
4.1 Webmin
4.2 SWAT
5. Conclusão
Referências bibliográficas

Resumo

Encontrar uma forma de administrar uma rede de laboratório de informática, oferecendo meios de controles das estações e criando um ambiente para o compartilhamento de arquivos, trabalhos e provas realizadas é o que iremos tratar neste artigo. Apresentaremos como criar esse ambiente, integrando as estações com o servidor Samba, oferecendo juntamente uma solução de controle do desktop aos usuários, baseando-se na modificação do registro do Windows. Duas opções de ferramentas de administração do sistema via web serão comentadas, para facilitar o gerenciamento do ambiente apresentado neste documento.

^

1. Introdução

O objetivo desse artigo é mostrar um estudo de caso, onde se precisava oferecer aos alunos e professores de uma instituição uma forma centralizada de armazenar seus arquivos, trabalhos e provas, gerenciando tudo isso de uma forma fácil e amigável. O estudo foi realizado nos laboratórios de informática das Faculdades Claretianas, equipados com um total de 200 microcomputadores, com o sistema operacional Windows 98 instalado, todos com acesso à Internet, utilizados para pesquisas e desenvolvimentos de atividades acadêmicas.

A implantação de um controle de acesso aos microcomputadores dos laboratórios de informática e a geração de um relatório é de grande importância, visando à identificação dos alunos e professores, de uma forma prática, e impedindo o usuário de realizar mudanças de configurações no Windows 98, para que a manutenção e o trabalho dos monitores nos laboratórios fossem reduzidos. Existia um problema quanto à implantação desses controles, pois não seria viável economicamente a troca de todos os sistemas operacionais das estações dos laboratórios de informática para o sistema operacional Windows 2000, ou NT - com um dos dois se obteria um maior controle das configurações nas estações.

A solução encontrada foi a instalação de um servidor Linux com o Samba instalado, fazendo com que os usuários tenham que se autenticar no servidor para ter acesso à máquina, sendo necessária a mudança no registro do Windows 98 para que a estação não fosse liberada aos usuários sem antes se autenticarem e, também, para realizar alguns controles como, por exemplo, evitar a alteração do número ip da máquina, acesso ao registro, compartilhamento das unidades entre as estações onde, para cada login feito, essas regras fossem buscadas do servidor, dificultando as mudanças nas configurações. Foram criadas, também, pastas particulares dos alunos, pastas de professores e das disciplinas para o compartilhamento e armazenamento de documentos pessoais e trabalhos.

Foi necessário buscar uma forma de geração de registro e, posteriormente, relatórios dos horários de entrada e saída dos alunos nos laboratórios de informática para se ter o controle e a identificação da máquina utilizada.

^

2. Preparando o ambiente

A distribuição utilizada neste caso foi o Linux Slackware 8.1 [5], instalado em uma máquina Pentium III 1 Ghz com 768 Mb de memória RAM e Kernel versão 2.4.18. Não iremos tratar, aqui, da instalação e configuração do Slackware no servidor, visto que existe uma vasta documentação sobre isso na Internet, e sim apenas do ambiente criado e a integração das estações Windows com o servidor Samba.

Todos os alunos da instituição foram cadastrados no servidor de acordo com o cadastro geral de matrícula de cada um, precedido da letra a (de aluno), como sendo o login de acesso ao sistema. Exemplo: a102656

Da mesma forma, os professores foram cadastrados no servidor conforme o número de registro de cada um, precedidos da letra p (de professores). Exemplo: p000231

Devido ao grande número de contas de alunos a serem cadastrados, utilizamos o script addsmbusers.sh, para facilitar o cadastramento dos alunos no sistema.

Todos os scripts que utilizaremos neste artigo estão disponíveis para download no URL http://www.claretianas.com.br/scripts.tar.gz

O arquivo relacaoalunos.txt, citado no script, deve possuir o seguinte formato para que as contas dos alunos sejam criadas corretamente:

102656|HENRI ALVES DE GODOY|18126986|31ADA

Onde:

102656 - número do cadastro de matrícula do aluno. 
HENRI ALVES DE GODOY - nome do aluno. 
18126986 - a senha do usuário que, no caso, colocamos o RG do aluno. 
31ADA - a turma à qual ele pertence.

Foi sugerido aos usuários que trocassem sua senha logo depois de realizarem o primeiro login através da opção "Senhas", no painel de controle do Windows.

Os dados do arquivo relacaoaluno.txt podem ser alterados para realizar o cadastro dos professores no sistema da mesma forma.

Assim, criamos dentro do diretório /home do servidor Linux, a área pessoal de cada aluno:

drwx------ 2 a101659 users 4096 Aug 19 09:15 a101659/ 
drwx------ 2 a101660 users 4096 Aug 19 09:16 a101660/ 
drwx------ 2 a101661 users 4096 Aug 19 09:00 a101661/

Para organizarmos os alunos pertencentes a uma determinada turma, foram criados grupos com o nome de cada turma precedido da letra t (de turma):

# /usr/sbin/groupadd t31ada

Foi criado um grupo especial para organizarmos os professores de cada turma:

# /usr/sbin/groupadd doc31ada

Para os alunos colocarem seus trabalhos e arquivos para serem entregues aos professores, foi criado um diretório para cada turma existente, com as seguintes permissões:

# mkdir /home/t31ada 
# chown root.t31ada /home/t31ada 
# chmod 750 /home/t31ada

Em seguida, é necessário, dentro desse diretório, a criação de subdiretórios, tendo como nome o login de cada aluno que pertence ao grupo, para que nenhum aluno interfira nos trabalhos e arquivos dos outros alunos e para que somente o professor correspondente daquela turma possa ver os arquivos disponíveis.

Para isso, utilizamos um outro script chamado criadir.sh, para facilitar a criação dos diretórios e suas permissões, aproveitando o mesmo arquivo relacaoalunos.txt.

Dentro do mesmo diretório da turma foi criado um outro subdiretório chamado publico, por exemplo, para que o professor pudesse disponibilizar seu material de aula para todos os alunos da turma e eles pudessem somente acessar o material, sem apagar e nem copiar nada para este diretório.

# mkdir /home/t31ada/publico 
# cd /home/31ada 
# chmod 775 publico 
# chgrp doc31ada

Durante os períodos de prova, elas eram entregues aos professores via disquete ou e-mail, meios que sempre davam um trabalho a mais para o professor organizar todos esses dados. Utilizando a estrutura de diretórios do servidor, criamos um diretório de provas para cada turma onde o aluno, ao término da prova, coloca seu arquivo nesse diretório.

Com a ajuda das permissões definidas no diretório, podemos configurá-lo de forma que o aluno ao colocar seu arquivo neste diretório não o apague mais, e nem os outros alunos possam acessá-lo. Após todos terminarem as provas, o monitor, ou o próprio administrador, poderá mover todas as provas para o diretório pessoal do professor, limpando o diretório de provas para ser utilizado por um outro professor.

# mkdir /home/p31ada 
# chown root.t31ada /home/p31ada 
# chmod 770 /home/p31ada

Por fim, foi criado um diretório chamado netlogon dentro de /home, onde ficarão os arquivos de controle das estações, definições dos mapeamentos das unidades e profiles dos alunos.

# mkdir /home/netlogon 
# chmod 755 /home/netlogon

^

3. Configurando o Samba

Começamos fazendo o download do Samba [1].

Descompactamos o arquivo para dentro do diretório /usr/local do servidor Linux, usando o comando tar. Note que será criado um diretório samba-2.2.6.

# cd /usr/local 
# tar -xzvf samba-latest.tar.gz

Para compilarmos o Samba com as opções que iremos precisar, utilizaremos o arquivo configure de dentro do diretório source do samba. Para obter uma lista das opções de configurações possíveis, digitamos o comando ./configure --help.

A opção que iremos utilizar para criar os relatórios de entrada e de saída dos usuários no servidor Samba é a opção --with-utmp.

Ativando essa opção, estaremos registrando no arquivo /var/run/utmp do servidor as conexões dos usuários, podendo ser consultado quem está on-line no momento através do comando w e who. Uma relação geral de todos os usuários que utilizaram as estações pode ser consultada através do uso do comando last do linux.

# last 
a200521 smb/1 192.168.1.56 Wed Nov 6 13:09 still logged in 
a100615 smb/3 192.168.1.110 Wed Nov 6 12:25 - 12:50 (00:24) 
a100626 smb/6 192.168.1.116 Wed Nov 6 12:23 - 12:46 (00:22) 
a101579 smb/5 192.168.1.33 Wed Nov 6 12:22 - 12:23 (00:01)

Outra opção que estaremos utilizando é a --prefix, informando, em seguida, o diretório que iremos instalar o Samba como, por exemplo, o diretório /usr/local/samba.

# ./configure --prefix=/usr/local/samba --with-utmp 
# ./make 
# ./make install

Toda a configuração do Samba é centralizada no arquivo smb.conf [RDP99] que se encontra no diretório /usr/local/samba/lib. Nele é que descreveremos os compartilhamentos dos diretórios pessoais, das turmas, provas e as permissões adicionais de acesso ao diretório compartilhado.

Entraremos em detalhes somente na parte de configuração dos compartilhamentos e dos controles no arquivo smb.conf. Mas, basicamente, ele é dividido em três partes: a configuração do servidor Samba (parâmetros da seção [global]), a configuração das pastas pessoais dos usuários (seção [homes]) e as demais seções, que correspondem aos diretórios compartilhados.

Cada seção é representada entre colchetes [nome compartilhamento] e os parâmetros são seguidos do sinal de igual (=) e o valor correspondente.

Na seção global devemos configurar os seguintes parâmetros:

[global] 
  smb passwd file = /usr/local/samba/private/smbpasswd 
  browseable = no 
  encrypt passwords = yes 
  null passwords = no 
  logon path = \\nomedoservidor\netlogon\CONFIG.POL 
  utmp = yes 
  socket options = TCP_NODELAY IPTOS_LOWDELAY 
  announce as = NT Server 
  preferred master = yes 
  wtmp directory = /var/log 
  logon script = .%U.bat 
  utmp directory = /var/run 
  domain logons = yes 
  workgroup = Samba 
  server string = Samba Server 
  log level = 2 
  syslog = 1 
  log file = /usr/local/samba/var/log.%m 
  os level = 33

No parâmetro logon path, definimos o caminho para o arquivo que iremos gerar pelo programa de edição de políticas do Windows, chamado Poledit; usado para definir o controle de acesso de algumas opções do Windows nas estações. Quando o usuário entra no sistema, o controle dessas opções é ativado automaticamente.

Para registrarmos, também, todas as atividades de acesso a um compartilhamento (leitura, escrita e gravação) de uma determinada estação, utilizamos o parâmetro log file, o qual criará um arquivo de log no diretório /usr/local/samba/log com o nome da estação configurada pelo Windows. A variável utilizada %m faz com que registremos o nome da máquina cliente fornecida pelo NetBios.

A próxima seção a ser configurada é a dos diretórios pessoais de cada aluno:

[homes] 
   path = %H 
   writable = yes 
   comment = Home Directories 
   browseable = no 
   force directory mode = 700 
   create mode = 700
   force create mode = 700
   directory mode = 700

Nela através do parâmetro path = %H informamos o diretório home de cada aluno, com a opção de escrita e permissão 700 de criação de arquivos e diretórios.

Agora iremos configurar os parâmetros dos diretórios compartilhados, começando pelo diretório netlogon.

[netlogon] 
   hide dot files = yes 
   path = /home/netlogon 
   root preexec = /bin/login.pl %U 
   root postexec = /bin/logout.pl %U 
   browseable = no 
   share modes = no

Estaremos utilizando dois parâmetros para montar o logon de script para cada usuário automaticamente e auxiliarmos na criação do mapeamento das unidades.

O parâmetro root preexec executa um comando como root antes de conectar ao compartilhamento. De forma semelhante, o parâmetro root postexec executa um comando como root depois de desconectar do compartilhamento.

Utilizaremos um script, chamado login.pl, do qual a função é criar o arquivo de logon script do usuário, contendo os mapeamentos das unidades do diretório pessoal do aluno e da turma, que será lido pelo Windows no momento da efetuação do logon na rede.

O script logout.pl faz com que o arquivo de logon script gerado pelo login.pl seja apagado quando o usuário efetuar o logoff da rede.

Podemos conferir, por exemplo, o arquivo criado pelo script, digitando:

 
# cd /home/netlogon 
# more .a102656.bat 
@ECHO OFF 
NET TIME \\nomedoservidor /SET /YES 
NET USE H: /HOME 
NET USE T: \\nomedoservidor\t31ada 
NET USE P: \\nomedoservidor\p31ada 
\\nomedoservidor\NETLOGON\.logon.bat

Na primeira linha do arquivo bat, usamos o comando NET TIME para sincronizarmos o horário da estação com a do servidor Samba.

Em seguida, mapeamos a unidade H: com o comando NET USE, como sendo o diretório pessoal de cada aluno; a unidade T: como sendo o diretório da turma t31ada; e a unidade P: como sendo o mapeamento da prova p31ada, quando ela estiver disponível.

O parâmetro hide dot files foi utilizado para esconder os arquivos iniciados com ponto (.) de logon script dos usuários, gerado no exemplo acima.

Por último, adicionamos a execução de um arquivo .logon.bat no qual estarão as regras de controle do registro que veremos no item 3.1

A última seção é a dos diretórios das turmas e provas, que deverão obedecer aos seguintes parâmetros:

Parâmetros das turmas:

 
[t31ada] 
   path = /home/t31ada 
   writable = yes 
   comment = Turma 31ADA 
   force directory mode = 755 
   create mode = 644 
   force create mode = 644 
   directory mode = 755 
   write list = @doc31ada

Parâmetro das provas:

 
[p31ada] 
   path = /home/p31ada 
   writable = yes 
   force directory mode = 750 
   create mode = 400 
   directory mode = 750 
   force create mode = 400 
   comment = Prova Turma 31ADA 
   write list = @t31ada force 
   group = nobody

^

3.1 Usando o Poledit e o registro do Windows

Além de oferecer os recursos de compartilhamento de arquivos e pastas pessoais para os alunos e professores, o uso de políticas de controles de cada estação de trabalho dos laboratórios de informática é de grande utilidade para bloquear os alunos de alterarem algumas configurações, de forma a prejudicarem a identificação dos alunos que usaram aquela máquina num determinado horário, dispensando, assim, o trabalho dos monitores de registrarem manualmente os alunos presentes.

Para obter tal controle, a solução foi, em parte, utilizar o editor de políticas do Windows, chamado Poledit, incluído no cd de instalação do Windows. Algumas opções que queríamos controlar não estavam disponíveis nas opções do Poledit e a solução foi importar, diretamente para o registro do Windows, algumas linhas que veremos a seguir no arquivo .logon.bat.

Ao executar o Poledit, primeiramente selecionamos a opção de criar um novo arquivo. O Poledit cria dois planos para o sistema, o plano do computador padrão e o plano do usuário padrão. Iremos utilizar o plano do computador padrão e ativar, em Rede, a opção para o Windows requerer a validação do usuário cadastrado no Samba, fazendo com que seja registrada a entrada do usuário. Caso o usuário não se autentique, o desktop do Windows não será liberado para o uso.

Tela do Editor de Políticas Poledit

Figura 1 - Tela do Editor de Políticas Poledit

Desabilitamos, também, o compartilhamento de arquivos no Windows para que os alunos não possam criar pastas compartilhadas além daquelas permitidas, mapeadas a cada login no sistema.

Após ativarmos essas opções, devemos salvar o arquivo com o nome de CONFIG.POL e transferí-lo para o diretório netlogon no servidor Linux, para ser interpretado pelo Windows a cada login do aluno.

A segunda parte do controle está na execução do arquivo de políticas do registro do Windows [3][4], através do comando abaixo, e salvo num arquivo chamado .logon.bat que será lido a cada login, como vimos anteriormente.

 
@echo off 
CLS 
REGEDIT /S \\nomedoservidor\NETLOGON\.lab.reg 
CLS 
EXIT

As entradas do registro no Windows serão importadas do arquivo .lab.reg, através do comando REGEDIT /S, que devem seguir o formato:

REGEDIT4 
[HKEY_CURRENT_USER\Control Panel\Desktop] 
"Wallpaper"=""
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Network] 
"NoNetSetup"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] 
"NoSaveSettings"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Network] 
"NoEntireNetwork"=dword:00000001
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"HomePage"=dword:00000001
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"Connection Settings"=dword:00000001
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel] 
"Proxy"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System] 
"DisableRegistryTools"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] 
"NoFolderOptions"=dword:00000001

Os arquivos .logon.bat e .lab.reg devem ser criados utilizando o notepad do Windows, a fim de conservar o formato do arquivo.

Outras opções e controle podem ser adicionados no registro do Windows, seguindo o formato das chaves acima.

Para saber qual chave incluir no registro e qual o seu caminho, existe um ótimo site [2] que serve como um guia, com todas as descrições do registro do Windows que poderá ser modificado.

^

4. Ferramentas Administrativas

Duas ferramentas de administração pela web foram testadas para facilitar o dia-a-dia do administrador, para que ele possa realizar consultas, criar contas, atribuir grupos e turmas, ativar ou desativar compartilhamentos no Samba e monitorar as conexões.

^

4.1 Webmin

O Webmin [6] é uma ferramenta de desenvolvimento livre, muito conhecida. É utilizada não apenas para o gerenciamento de servidores Samba, como também para um gerenciamento total de um servidor Linux, como por exemplo, gerenciamento de servidores dns, web, contas dos usuários e acompanhamento e configuração do hardware. É de fácil instalação e possui um módulo de atualização de versão automática, sem a necessidade de reinstalação, caso venha a surgir algum problema ou bug na versão instalada.

^

4.2 SWAT

O SWAT é uma ferramenta de administração via web muito boa, que vem junto com o Samba e possibilita a total configuração do arquivo smb.conf e gerenciamento dos recursos disponíveis. Muitos usuários acabam por esquecer de ativar o SWAT no arquivo /etc/inetd.conf, que pode ser feito inserindo a linha.

 
# swat stream tcp nowait.400 root /usr/sbin/swat swat

Após a adição da linha, o serviço inetd deve ser reiniciado:

 
# killall -HUP inetd

A partir do momento em que o inetd for reiniciado, o SWAT será acessível através da porta padrão 901 de seu servidor. Você pode acessar o SWAT pelo endereço http://nomedoservidor:901 através de qualquer navegador.

^

5. Conclusão

Primeiramente, a adoção de um sistema operacional aberto Linux como servidor desse ambiente, proporcionou uma economia para a instituição, do ponto de vista de licenciamento de software e quanto à substituição do sistema operacional das estações nos laboratórios, resultando em uma perfeita integração entre o servidor Samba e as estações com Windows 98.

Os alunos e professores aprovaram o novo ambiente, principalmente quanto à facilidade de entrega de trabalhos e a disponibilidade do material de aula, de uma forma rápida, segura e utilizando o conceito de diretórios e pastas compartilhadas já bem fixadas no uso diário do Windows Explorer.

Quanto aos controles realizados no desktop, houve uma redução na manutenção das máquinas dos laboratórios e a identificação dos alunos e professores que utilizaram tal estação foi de grande utilidade na solução de alguns abusos que antes havia durante a navegação e envio de e-mails na Internet.

O uso das ferramentas gráficas para administração do ambiente facilitou o gerenciamento e criação das contas e pastas compartilhadas até mesmo por uma pessoa que não tem muito conhecimento do sistema operacional Linux.

Algumas sugestões foram recebidas e serão implantadas brevemente como, por exemplo: realização de uma cópia de segurança dos dados das áreas pessoais dos alunos e professores, verificação periódica dos arquivos salvos contra vírus e o acesso remoto dos dados pela Internet.

^

Referências bibliográficas

[RDP99] ECKSTEIN, R.; COLLIER-BROWN, D.; KELLY, P. Using Samba.
[S.l.]: O´Reilly & Associates, nov. 1999. 416p. ISBN 1-56592-449-5.

[1] SAMBA WEB PAGES. Samba opening windows to a wider world: web sites.
Disponível em: <http://www.samba.org>. Acesso em: 01 nov. 2002.

[2] WINGUIDES NETWORK FOR WINDOWS. Guide Network for Windows: Empowering the Windows operating system. Disponível em: <http://www.winguides.com>. Acesso em: 28 out. 2002.

[3] WAYNE'S NT RESOURCES FOR ADMINISTRATORS AND USERS. Tips for NT administrators and users, extensive NT Registry Index and NT Book Recommendations.
Disponível em: <http://is-it-true.org/nt/index.shtml>. Acesso em: 28 out. 2002.

[4] FAQ WINDOWS 95 NETWORKING. Windows 95 / 98 (Last update on the Win95/98 FAQ: Aug. 31, 2002). Disponível em: <http://www.wown.com/j_helmig/faq.htm>. Acesso em: 30 out. 2002.

[5] THE SLACKWARE LINUX PROJECT. Slackware Linux.
Disponível em: <http://www.slackware.com>. Acesso em: 01 nov. 2002.

[6] WEBMIN. Webmin Version: 1.050. Disponível em: <http://www.webmin.com>.
Acesso em: 01 nov. 2002.

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2002