Vários nomes de login para um único usuário no Linux usando autenticação de servidor LDAP

Vários nomes de login para um único usuário no Linux usando autenticação de servidor LDAP

Existem cerca de 30 sistemas (PCs independentes) em meu laboratório e quase 200 alunos que os utilizarão. Cada sistema possui uma conta chamada USUÁRIO cuja senha é 123456 que é conhecida por essas 200 pessoas. Conseqüentemente, eles acessam qualquer sistema que seja gratuito e funcionam por algum tempo. Seu uso é registrado apenas por registro no livro. Quero fornecer a cada usuário logins e senhas separados, o que é facilmente obtido pelo servidor LDAP. Mas não quero criar 200 contas de usuário em cada PC. quero mapear todos os logins de 200 pessoas para serem feitos na própria conta do USUÁRIO. 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 pelos indivíduos em um arquivo. Isso pode ser feito usando LDAP ou algum outro software?

Responder1

Concordo com 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 backend LDAP em vez de procurar coisas em /etc/passwd.

Se você estiver usando OpenLDAP, deverá observar duas coisas:

NSCD (Name Server Caching Daemon) que armazena em cache as consultas LDAP. Você executará isso em cada host onde os usuários fizerem login.

NSSLDAP (Name Server Switch for 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 estiver obsoleto ou não disponível.

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

Então você precisa fazer edições em alguns arquivos:

/etc/nscd.conf Este arquivo controla o que é armazenado em cache. Aqui está um dump de um dos meus sistemas que atua como 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ê precisará então modificar seu arquivo nsswitch.ldap (leia os DOCs nele, há muito para abordar aqui).

UMA COISA MUITO IMPORTANTE!!!!

Se o seu servidor LDAP estiver inativo, você deseja ter certeza de que a conta root local ainda pode fazer login. Ou se uma de suas estações de trabalho estiver com problemas de rede, você vai querer ter certeza de que ainda pode fazer login.

Portanto, quando minhas máquinas Linux inicializam, tenho um script que sempre copia um arquivo nsswitch.conf com a seguinte aparência:

senha: grupo de compatibilidade: compatibilidade

hosts: arquivos redes DNS: arquivos

serviços: arquivos protocolos: arquivos rpc: arquivos éteres: arquivos máscaras de rede: arquivos netgroup: arquivos bootparams: arquivos

automount: arquivos aliases: arquivos

e quando estiver pronto para usar o LDAP para logins, substituo o arquivo nsswitch.conf pelo seguinte:

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

hosts: arquivos redes DNS: arquivos

serviços: arquivos protocolos: arquivos rpc: arquivos éteres: arquivos máscaras de rede: arquivos netgroup: arquivos bootparams: arquivos

automount: arquivos aliases: arquivos

O primeiro me permite fazer login localmente e o último permite 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 espero que isso ajude você a começar.

A propósito: sou o desenvolvedor do Pozix Linux e do Pozix Linux Small Business Server e temos mais de 400 sistemas Samba rodando dessa maneira!

Concordo, 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 esse script em várias estações de trabalho, elimine nomes de contas duplicados para obter nomes de contas 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

Responder2

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

Responder3

Você não precisa criar 200 contas de usuário em cada PC. O Linux pode buscar todas as informações do usuário no LDAP, portanto as contas não existem localmente (ou seja, em /etc/passwd). O diretório inicial geralmente está 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?

informação relacionada