In meinem Labor gibt es etwa 30 Systeme (Standalone-PCs) und fast 200 Studenten, die sie verwenden werden. Jedes System hat ein Konto namens USER mit dem Passwort 123456, das diesen 200 Personen bekannt ist. Daher greifen sie auf das System zu, das für eine gewisse Zeit frei ist und funktioniert. Ihre Nutzung wird durch einfache Registereinträge protokolliert. Ich möchte jedem Benutzer separate Logins und Passwörter geben, was sich leicht über einen LDAP-Server bewerkstelligen lässt. Aber ich möchte nicht auf jedem PC 200 Benutzerkonten erstellen. Ich möchte alle Logins der 200 Personen dem USER-Konto selbst zuordnen. Sie werden dasselbe Profil und dasselbe Home-Verzeichnis haben. Ich möchte lediglich Uhrzeit und Datum der Labornutzung einzelner Personen in einer Datei protokollieren. Kann dies über LDAP oder eine andere Software erfolgen?
Antwort1
Ich stimme mit SLESKE überein, aber um auf seine/ihre Kommentare einzugehen, müssen Sie zunächst ein paar Dinge tun!
Unter Linux müssen die Bibliotheken, die die Anmeldung steuern, umgeleitet werden, um ein LDAP-Backend zu verwenden, anstatt Dinge in /etc/passwd nachzuschlagen.
Wenn Sie OpenLDAP verwenden, sollten Sie zwei Dinge beachten:
NSCD (Name Server Caching Daemon), der die LDAP-Abfragen zwischenspeichert. Sie führen dies auf jedem Host aus, bei dem sich Benutzer anmelden.
NSSLDAP (Name Server Switch für LDAP) ist der Klebstoff, der dafür sorgt, dass Anmeldungen NSCD abfragen, das wiederum das LDAP-Backend abfragt, oder NSSLDAP fragt das LDAP-Backend direkt ab, wenn NSCD veraltet oder nicht verfügbar ist.
Sie müssen also auf jeder Arbeitsstation OpenLDAP, NSCD und NSSLDAP installieren, wenn diese nicht Teil Ihrer Distribution sind. OpenLDAP ist erforderlich, um die Client-Bibliotheken zu erhalten, die das LDAP-Protokoll beherrschen.
Dann müssen Sie einige Dateien bearbeiten:
/etc/nscd.conf Diese Datei steuert, was zwischengespeichert wird. Hier ist ein Dump von einem meiner Systeme, das als Samba-Server fungiert:
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
Sie müssen dann Ihre Datei nsswitch.ldap ändern (lesen Sie die Dokumentation dazu, es sind zu viele, um hier darauf einzugehen).
EINE SEHR WICHTIGE SACHE!!!!
Wenn Ihr LDAP-Server ausgefallen ist, müssen Sie sicherstellen, dass Sie sich mit dem lokalen Root-Konto weiterhin anmelden können. Oder wenn auf einer Ihrer Arbeitsstationen Netzwerkprobleme auftreten, müssen Sie sicherstellen, dass Sie sich weiterhin anmelden können.
Wenn meine Linux-Boxen hochfahren, habe ich ein Skript, das immer eine nsswitch.conf-Datei an die folgende Stelle kopiert:
passwd: compat-Gruppe: compat
Hosts: Dateien DNS-Netzwerke: Dateien
Dienste: Dateien Protokolle: Dateien RPC: Dateien Ethers: Dateien Netzmasken: Dateien Netzgruppe: Dateien Bootparameter: Dateien
automount: Dateien Aliase: Dateien
und wenn ich bereit bin, LDAP für Anmeldungen zu verwenden, ersetze ich die Datei nsswitch.conf durch Folgendes:
passwd: Dateien LDAP Gruppe: Dateien LDAP Schatten: Dateien LDAP
Hosts: Dateien DNS-Netzwerke: Dateien
Dienste: Dateien Protokolle: Dateien RPC: Dateien Ethers: Dateien Netzmasken: Dateien Netzgruppe: Dateien Bootparameter: Dateien
automount: Dateien Aliase: Dateien
Ersteres ermöglicht mir die lokale Anmeldung und Letzteres ermöglicht beides, aber aufgrund der Zwischenspeicherung durch NSCD dauert es eine Weile, bis NSCD veraltet ist, was zu Verzögerungen oder Problemen bei der Anmeldung führt.
Es gibt noch viel mehr hierzu zu sagen, aber dies ist hoffentlich ein guter Anfang.
Übrigens: Ich bin der Entwickler von Pozix Linux und dem Pozix Linux Small Business Server und wir haben über 400 Samba-Systeme, die größtenteils auf diese Weise laufen!
Einverstanden, die Kommentare von TRS80 sind gültig, aber hier ist ein Skript, mit dem wir LDIF-Dateien aus /etc/passwd-Dateien erstellen. Die resultierende LDIF-Datei kann zum Auffüllen Ihrer LDAP-Datenbank verwendet werden. Wenn Sie dieses Skript auf mehreren Arbeitsstationen ausführen, müssen Sie sicherstellen, dass Sie doppelte Kontonamen aussortieren, damit Sie eindeutige Kontonamen mit eindeutigen UIDs erhalten.
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
Antwort2
Wenn Sie die Attribute uidNumber und homeDirectory für alle Konten gleich festlegen, sollte wahrscheinlich alles wie gewünscht funktionieren.
Antwort3
Man muss nicht auf jedem PC 200 Benutzerkonten anlegen. Linux kann alle Benutzerinformationen aus LDAP holen, die Konten existieren also nicht lokal (also in /etc/passwd). Das Home-Verzeichnis liegt dann meist auf einem Netzlaufwerk (NFS o.ä.).
Dies ist die Standardvorgehensweise. Gibt es einen Grund, warum Sie dies nicht tun?