NOME
nsswitch.conf − Base de dados do sistema e arquivo de configuração para troca de serviço de nomes
DESCRIÇÃO
Várias funções na Biblioteca C precisam ser configuradas para trabalhar corretamente no ambiente local. Tradicionalmente, este modo se faz com o uso de arquivos (por exemplo, ’/etc/passwd’), mas outros serviços de nomes (como o Serviço de Informação de Rede (NIS) e o Serviço de Nome de Domínio (DNS)) se torna popular, e estão em partes dentro da Biblioteca C, usualmente com um ordem de procura fixa.
A libc5 do Linux com suporte a NYS e a Biblioteca GNU C 2.x (libc.so.6) contém uma solução clara deste problema. Ela é desenhada em cima de um método usado pela Sun Microsystems na Biblioteca C do Solaris 2. Nós seguimos os nomes deles e chamamos este esquema de "Name Service Switch" (NSS). As fontes para a "databases" e a ordem de procura deles são especificadas no arquivo /etc/nsswitch.conf .
A base de dados
seguinte está disponível no NSS:
aliases
aliases de correio eletrônico, usado pelo sendmail(8). Atualmente ignorada.
ethers |
Números da Ethernet. | ||
group |
Grupos de usuários, usado pelas funções getgrent(3). | ||
hosts |
Números e nomes das máquinas, usado por gethostbyname(3) e funções similares. |
netgroup
Lista longa da rede de máquinas e usuários, usado para regras de acesso. Bibliotes C antes da glibc 2.1 somente suportavam grupos de rede sobre NIS.
network
Número e nomes da rede, usado pelas funções getnetent(3).
passwd |
Senha do usuários, usado pelas funções getpwent(3). |
protocols
Protocolos de rede, usado pelas funções getprotoent(3).
publickey
Chaves públicas e privadas para Secure_RPC usado por NFS e NIS+.
rpc |
Número se nomes para processo de chamada remota, usado por getrpcbyname(3) e funções similares. |
services
Serviços de rede, usado pelas funções getservent(3).
shadow |
Senha Shadow de usuários, usado por getspnam(3). |
Um exemplo, o arquivo /etc/nsswitch.conf pode ser visto como (Isto é o padrão se /etc/nsswitch.conf estiver faltando):
passwd: |
compat |
|||
group: |
compat |
|||
shadow: |
compat |
|||
hosts: |
dns [!UNAVAIL=return] files |
|||
networks: |
nis [NOTFOUND=return] files |
|||
ethers: |
nis [NOTFOUND=return] files |
|||
protocols: |
nis [NOTFOUND=return] files |
|||
rpc: |
nis [NOTFOUND=return] files |
|||
services: |
nis [NOTFOUND=return] files |
A primeira coluna é a base de dados como você pode supor a partir da tabela acima. O resto da linha especifica como o processo de visualização trabalha. Você pode especifiar o modo de trabalho para cada base de dados individualmente.
As
especificações de configuração
para cada base de dados podem conter dois itens diferentes:
* A especificação do serviço como
’files’, ’db’, ou ’nis’.
* A reação na visualização do
resultado como ’[NOTFOUND=return]’.
Para a libc5, as especificações de serviço permitidas são ’files’, ’nis’ e ’nisplus’. Para máquinas, você pode especificar ’dns’ como um serviço extra, para passwd e group ’compat’, mas não para shadow.
Para glibc, você terá um arquivo chamado de /lib/libnss_SERVICE.so.X para todo SERVICE que você estiver usando. Em uma instalação padrão, você pode usar ’files’, ’db’, ’nis’ e ’nisplus’. Para máquinas, você pode especificar ’dns’ como serviços extras, para passwd, group e shadow ’compat’. Estes serviços não podem ser usados pela libc5 com NYS. O número de versão X é 1 para glibc 2.0 e 2 para glibc 2.1.
O segundo item na especificação concede ao usuário controle fino no processo de visualização. Itens de ação são colocados entre dois nomes de serviço e são escritos entre parentesis. A forma geral é:
onde
STATUS => success | notfound | unavail | tryagain
ACTION => return | continue
O tipo de
letras é insignificante. O valor STATUS é o
resultado de uma chamada para a função de
visualização do serviço especificado.
Eles significam:
success
Nenhum erro ocorreu e a entrada procurada é devolvida. A ação padrão para isto é ’return’.
notfound
O processo de visualização foi feito, mas o valor desejado não foi achado. A ação padrão para isto é ’continue’.
unavail
O serviço está indisponível permanentemente. Isto pode significar que o arquivo não está disponível, ou, para DNS, que o servidor não esta disponível ou que não permite requisições. A ação padrão para isto é
tryagain
O serviço está temporariamente indisponível. Isto pode significar que um ’file’ está travado ou que o servidor não acessa mais conexões atualmente. A ação padrão para isto é ’continue’.
Interação
com a sintaxe +/- (modo de compatibilidade)
A Biblioteca do Linux libc5 sem o suporte a NYS não
tem o seletor de nome de serviço, mas pode permitir
ao usuário muitas politícas de controle. Em
/etc/passwd você pode ter entradas da forma
+user ou +@netgroup (inclui o usuário especificado a
partir do mapa de passwd do NIS), -user ou -@netgroup
(retira o usuário especificado) e + (incluí
todo usuário, exceto os excluídos, a partir do
mapa de passwd do NIS). Então muitas pessoas somente
colocam um + no final de /etc/passwd para incluir
tudo a partir do NIS, a seleção forneçe
uma alternativa rápida para este caso (’passwd:
files nis’) o qual não requer a simples entrada
+ em /etc/passwd, /etc/group e
/etc/shadow. Se isto não é suficiente,
o serviço NSS ’compat’ fornece a
semântica completa +/-. Por padrão, a origem
é ’nis’, mas isto pode ser sobreposto
especificando o ’nisplus’ como origem para as
falsas bases de dados passwd_compat, group_compat e
shadow_compat. Esta falsa base de dados somente
está disponível na Biblioteca GNU C.
ARQUIVOS
Um
serviço nomeado de SERVICE é implementado por
um objeto biblioteca nomeada, e compatilhada,
libnss_SERVICE.so.X que fica no
diretório /lib.
O arquivo de configuração
/etc/nsswitch.conf
/lib/libnss_compat.so.X |
implementa a fonte ’compat’ para glibc2 | ||
/lib/libnss_db.so.X |
implementa a fonte ’db’ para glibc2 | ||
/lib/libnss_dns.so.X |
implementa a fonte ’dns’ para glibc2 | ||
/lib/libnss_files.so.X |
implementa a fonte ’files’ para glibc2 | ||
/lib/libnss_hesoid.so.X |
implementa a fonte ’hesoid’ para glibc2 | ||
/lib/libnss_nis.so.X |
implementa a fonte ’nis’ para glibc2 | ||
/lib/libnss_nisplus.so.2 |
implementa a fonte ’nisplus’ para glibc 2.1 |
NOTAS
Dentro de cada processo que use
nsswitch.conf, o arquivo inteiro é lido
somente uma vez; se o arquivo é alterado
posteriormente, o processo irá continuar usando as
antigas configurações.
Com o Solaris, não é possivel ligar programas
estaticamente usando o serviço NSS. Com o Linux, isto
não é problema.
TRADUZIDO POR LDP-BR em 21/08/2000.
André L. Fassone Canova <lonelywolf [AT] techno.br> (tradução) Roberto Selbach Teixeira <robteix [AT] zaz.br> (revisão)