Múltiplos nomes de login para um único usuário no linux usando a autenticação do servidor LDAP

2

Existem cerca de 30 sistemas (PCs autônomos) no meu laboratório e quase 200 alunos que irão usá-lo. Cada sistema tem uma conta chamada USER, cuja senha é 123456, que é conhecida por essas 200 pessoas. Assim, eles acessam qualquer sistema que seja gratuito e funcione por algum tempo. Seu uso é registrado por apenas registrar a entrada do livro. Quero dar a cada usuário logins e senhas separados, o que é facilmente obtido pelo servidor LDAP. Mas eu não quero criar 200 contas de usuário em cada PC. Eu quero mapear todos os 200 povos login para ser feito na conta do usuário em si. Eles terão o mesmo perfil e o mesmo diretório inicial. Eu só quero registrar a hora e a data do uso do laboratório de indivíduos em um arquivo. Isso pode ser feito usando o LDAP ou algum outro software?

    
por Akilan 09.07.2009 / 10:46

3 respostas

4
Concorde com o SLESKE, mas para expandir seus comentários, você precisa fazer algumas coisas primeiro!

No Linux, as bibliotecas que controlam o login precisam ser redirecionadas para usar um back-end do LDAP, em oposição a procurar coisas em / etc / passwd.

Se você estiver usando o OpenLDAP, convém analisar duas coisas:

NSCD (Daemon de cache do servidor de nomes) que armazena em cache as consultas LDAP. Você executará isso em cada host em que os usuários efetuam login.

NSSLDAP (Switch de Servidor de Nome para LDAP) é a cola que faz com que os logins consultem o NSCD, que por sua vez consultará o backend LDAP ou o NSSLDAP consultará o backend LDAP diretamente se o NSCD for obsoleto ou não disponível.

Portanto, em cada estação de trabalho, você precisará instalar o OpenLDAP, o NSCD e o NSSLDAP, se não fizer parte de sua distribuição. O OpenLDAP é necessário para obter as bibliotecas do cliente que sabem como falar o protocolo LDAP.

Você precisa fazer edições em alguns arquivos:

/etc/nscd.conf Este arquivo controla o que é armazenado em cache. Aqui está um despejo de um dos meus sistemas que funciona como um servidor Samba:

    enable-cache            passwd          yes
    positive-time-to-live   passwd          10
    negative-time-to-live   passwd          3
    suggested-size          passwd          211
    check-files             passwd          yes
    persistent              passwd          yes
    shared                  passwd          yes
    max-db-size             passwd          33554432
    auto-propagate          passwd          yes

    enable-cache            group           yes
    positive-time-to-live   group           3600
    negative-time-to-live   group           3
    suggested-size          group           211
    check-files             group           yes
    persistent              group           yes
    shared                  group           yes
    max-db-size             group           33554432
    auto-propagate          group           yes

    enable-cache            hosts           yes
    positive-time-to-live   hosts           3600
    negative-time-to-live   hosts           3
    suggested-size          hosts           211
    check-files             hosts           yes
    persistent              hosts           yes
    shared                  hosts           yes
    max-db-size             hosts           33554432

Você então precisará modificar seu arquivo nsswitch.ldap (leia os DOCs sobre ele, muito para entrar aqui).

UMA COISA MUITO IMPORTANTE !!!!

Se o seu servidor LDAP estiver inativo, você deseja garantir que a conta raiz local ainda possa fazer login. Ou, se uma de suas estações de trabalho estiver com problemas de rede, você deverá garantir que ainda possa fazer login. / p>

Então, quando minhas caixas de Linux inicializam, eu tenho um script que sempre copia um arquivo nsswitch.conf no lugar da seguinte forma:

passwd: compat grupo: compat

hosts: arquivos dns redes: arquivos

serviços: arquivos protocolos: arquivos rpc: arquivos éteres: arquivos netmasks: arquivos netgroup: arquivos bootparams: arquivos

montagem automática: arquivos aliases: arquivos

e uma vez que eu estou pronto para usar o LDAP para logins, eu substituo o arquivo nsswitch.conf com o seguinte:

passwd: arquivos ldap grupo: arquivos ldap shadow: arquivos ldap

hosts: arquivos dns redes: arquivos

serviços: arquivos protocolos: arquivos rpc: arquivos éteres: arquivos netmasks: arquivos netgroup: arquivos bootparams: arquivos

montagem automática: arquivos aliases: arquivos

O primeiro permite que eu faça o login localmente e o último permite que ambos, mas devido ao cache do NSCD, leva tempo para o NSCD ficar obsoleto, causando atrasos ou problemas de login.

Há muito mais a ser dito sobre isso, mas esperamos que você comece.

BTW: Eu sou o desenvolvedor do Pozix Linux e do Pozix Linux Small Business Server e temos mais de 400 sistemas Samba rodando desse jeito!

De acordo, os comentários do TRS80 são válidos, mas aqui está um script que usamos para criar arquivos LDIF a partir de arquivos / etc / passwd. O arquivo LDIF resultante pode ser usado para preencher seu banco de dados LDAP. Você precisará certificar-se de que, se executar este script em várias estações de trabalho, elimine nomes de conta duplicados para que você acabe com nomes de conta exclusivos com UIDs exclusivos.

cat /etc/passwd | while read i; do
  uid='echo $i | cut -d : -f 1'
  uidNumber='echo $i | cut -d : -f 3'
  gidNumber='echo $i | cut -d : -f 4'
  gecos='echo $i | cut -d : -f 5'
  homeDirectory='echo $i | cut -d : -f 6'
  loginShell='echo $i | cut -d : -f 6'
  userPassword='cat /etc/shadow | grep $uid | cut -d : -f 2'

  echo "dn: cn=$gecos,ou=people,dc=mycompany,dc=com"
  echo "objectClass: account"
  echo "objectClass: posixAccount"
  echo "cn: $gecos"
  echo "uid: $uid"
  echo "uidNumber: $uidNumber"
  echo "gidNumber: $gidNumber"
  echo "homeDirectory: $homeDirectory"
  echo "loginShell: $loginShell"
  echo "userPassword: $userPassword"

done
    
por 09.07.2009 / 15:01
1

Se você definir os atributos uidNumber e homeDirectory como iguais para todas as contas, as coisas provavelmente funcionarão da maneira desejada.

    
por 09.07.2009 / 11:53
1

Você não precisa criar 200 contas de usuário em cada PC. O Linux pode buscar todas as informações do usuário do LDAP, portanto, as contas não existem localmente (ou seja, em / etc / passwd). O diretório inicial é geralmente em uma unidade de rede (NFS ou similar).

Esta é a abordagem padrão. Existe uma razão pela qual você não está fazendo isso?

    
por 09.07.2009 / 12:54