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?