FreeBSD

Autenticação para clientes Unix

NIS (Network Information Services)


O NIS (Network Information Services), também conhecido como YP (Yellow Pages), foi desenvolvido pela Sun Microsystems para centralizar a administração de máquinas com o sistema operacional SunOS. Com o tempo, tornou-se um padrão entre os sistemas Unix Like, servindo geralmente para compartilhar entre várias máquinas informações como contas de usuários, grupos, nomes de máquinas etc.


Configuração do Servidor

O FreeBSD possui suporte nativo ao NIS, bastando configurá-lo, sem ter que instalar nada adicional. Para isso, adicione as seguintes linhas ao arquivo /etc/rc.conf:

portmap_enable="YES"
nisdomainname="teste-nis"
nis_server_enable="YES"
nis_yppasswd_enable="YES"

Com a primeira linha, confirmamos que o portmap estará rodando, pois o NIS utiliza RPC. O parâmetro "nisdomainname" especifica o nome do domínio NIS, que deve preferencialmente ser diferente do domínio do hostname. Pode-se configurar o nome que achar mais adequado, mas não deve ser confundido com o que chamamos simplesmente de domínio: o que tratamos agora é o "domínio NIS". O parâmetro "nis_yppasswd_enable" permite que os usuários troquem suas senhas a partir das máquinas clientes. Após isso, reinicie a máquina.

Passamos agora a configurar o NIS. Os arquivos dos quais ele busca as informações são chamados "NIS maps", e são guardados no diretório "/var/yp". Estes arquivos são gerados a partir de alguns arquivos de configuração que estão no diretório "/etc", exceto um, que deve ser ajustado manualmente, que é o "master.passwd".
Vá até o diretório /var/yp e copie para lá o arquivo /etc/master.passwd. Após isso, edite o arquivo (/var/yp/master.passwd) e remova todas as contas administrativas, que não deverão ser propagadas aos clientes, como por exemplo root, bin, tty, games etc. O arquivo "/var/yp/master.passwd" deverá ter a permissão 600.
Execute o seguinte comando:

# ypinit -m teste-nis

O "ypinit" é um utilitário que inicializa os "NIS maps". O parâmetro -m indica que estamos configurando um servidor mestre (master). Serão apresentadas algumas informações e então uma linha com o seguinte:

master server : servteste

Ao invés de servteste deverá constar o hostname do seu servidor. Pressione Ctrl+D e então enter. O ypinit irá criar o arquivo /var/yp/Makefile. Este arquivo possui toda a configuração do NIS, sendo que assume por padrão que os clientes serão apenas FreeBSD. Caso haja algum Linux, deve-se editar o arquivo e descomentar a seguinte linha:

UNSECURE = "True"

Crie agora o arquivo /var/yp/securenets, com o seguinte conteúdo:

127.0.0.1 255.255.255.255
192.168.0.0 255.255.0.0

Este arquivo é uma lista de endereços de rede, espaço em branco, e a máscara de rede. As redes que forem especificadas são as autorizadas a utilizar o serviço NIS, ou seja, ninguém com endereço IP fora das especificadas conseguirá fazer uso do serviço. Isto visa restringir o acesso ao servidor, e se o arquivo securenets não for criado o acesso ficará liberado para todos, o que pode gerar problemas de segurança.

Terminadas estas etapas, temos um servidor NIS funcionando e capaz de autenticar os clientes. Um detalhe importante: toda vez que for modificada ou adicionada uma nova conta no sistema, deve-se executar a seguinte linha de comando:

# cd /var/yp ; make teste-nis

Isto irá recriar os "NIS maps", e sem isso o usuário recém-criado não conseguirá logar nas máquinas clientes.


Configuração dos Clientes (FreeBSD)

Edite o arquivo /etc/rc.conf e adicione as seguintes linhas:

portmap_enable="YES"
nisdomainname="teste-nis"
nis_client_enable="YES"

Edite o arquivo /etc/master.passwd, através do comando "vipw", e adicione a seguinte linha ao final do arquivo:

+:::::::::

Edite o arquivo /etc/group e adicione a seguinte linha ao final do arquivo:

+:*::

Edite o arquivo /etc/hosts e adicione um sinal de "+" em uma linha em branco no final do arquivo:

+


Após isso, reinicie a máquina e teste o login com uma conta de usuário, deverá funcionar normalmente.

É interessante também que os diretórios home guardados no servidor sejam compartilhados com os clientes. Para isso, pode ser utilizado o NFS, adicionando no arquivo /etc/exports do servidor uma linha que compartilha o /home e adicionando no arquivo /etc/fstabs, nos clientes, uma linha que monta o /home. Deverá ser criado o diretório /home nos clientes, para que nele seja montado o /home do servidor.
Como as permissões e propriedade dos arquivos serão mantidas, e os UIDs e GIDs serão os mesmos, pois são resgatados via NIS, o usuário que logar em uma máquina cliente terá acesso de forma transparente a apenas seus arquivos, como se estivesse logando no servidor.

 

Atualizado em 03/02/04.

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

Voltar