English version of this plugin 
Auth Plugin¶
Das Auth Plugin ist eine OpenSLX Erweiterung für die Bereitstellung von User-Authentifizierung und Homeverzeichnisse.
Eventuelle alte Einstellungen via ConfTGZ sollten vorher aus dem ~/openslx/config/<system> entfernt werden, da diese sonst die Einstellungen des Plugins überschreiben könnten.
Es gibt verschiedene Möglichkeiten das Plugin zu verwenden:
Root-Passwort und Verwendung von /etc/passwd¶
slxos-plugin install suse-11.4-auth auth \ auth::rootpwd=foo
Setzt das root-Passwort
LDAP¶
slxos-plugin install suse-11.4-auth auth \ auth::rootpwd=foo \ auth::ldap=1 \ auth::ldapuri="ldap://132.230.4.6" \ auth::ldapbase="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_passwd="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_group="ou=people,dc=uni-freiburg,dc=local" \ auth::ldapbinddn="cn=admin,dc=uni-freiburg,dc=local" \ auth::ldapbindpw="foo"
Setzt das root-Passwort und konfiguriert LDAP. Hierbei sind die letzten zwei Zeilen optional und werden nicht bei jeder LDAP Konfiguration benötigt. Allerdings kann dieses erforderlich sein!
Eine alternative Konfiguration kann folgendermaßen aussehen:
slxos-plugin install suse-11.4-auth auth \ auth::rootpwd=foo \ auth::ldap=1 \ auth::ldapuri="ldap://132.230.1.62" \ auth::ldapbase="ou=people,dc=uni-freiburg,dc=de" \ auth::nss_base_passwd="ou=people,dc=uni-freiburg,dc=de?one?rufdienst=ldap*)(&(rufclienthome=*)(rufstatus=enabled)" \ auth::nss_base_group="ou=group,dc=uni-freiburg,dc=de?one" \ auth::ldap_options="nss_map_attribute homeDirectory rufClientHome\nTLS_REQCERT allow"
Hier ist die letzte Zeile zu beachten. Mit auth::ldap_options können beliebig viele weitere, eher selten verwendete, LDAP Konfigurationen in /etc/ldap.conf eingetragen werden. Will man mehr als eine Option einfügen, so werden diese mit \n geteilt.
Fehlquelle mit LDAPS bzw. LDAP+TLS¶
Kommt die Fehlermeldung wie
nss_ldap: failed to bind to LDAP server ldap(s)://x.x.x.x: Can't contact LDAP server nss_ldap: could not search LDAP server - Server is unavailable
so kann dies auf einen SSL/TLS Fehler hindeuten. Es empfiehlt sich dann ssl start_tls bzw. ssl on zu verwenden. Liegt das Problem am Zertifikat, so ist die Fehlermeldung die gleiche. Soll das Zertifikat nicht überprüft werden, so ist die tls_checkpeer no nötig. Bei Verwendung von ldaps kann trotz funktionierendem ldaps die erste o.g. Fehlermeldung auch auftreten, diese scheint nur Aufzutreten wenn der LDAP Server neben dem ldaps Port auch auf den ldap Port lauscht. Schaltet man den ldap Port auf dem Server aus, so taucht keine Fehlermeldung mehr auf.
Automount/Autofs von HOME-Verzeichnissen¶
NFS¶
Der Anfang entspricht dem ersten LDAP Beispiel mit Verwendung von SSL. Hinzu kommt nun die Automount/Autofs Funktion, um die HOME-Verzeichnisse entsprechend der Konfiguration in LDAP zu mounten. Die drei letzten Zeilen sind die nötigen Zeilen für Autofs.
slxos-plugin install ubuntu-11.04-testing auth \ auth::rootpwd=foo \ auth::ldap=1 \ auth::ldapuri="ldaps://132.230.4.6" \ auth::ldapbase="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_passwd="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_group="ou=people,dc=uni-freiburg,dc=local" \ auth::ldapbinddn="cn=admin,dc=uni-freiburg,dc=local" \ auth::ldapbindpw="foo" \ auth::ldap_options="TLS_REQCERT allow\ntls_checkpeer no\nssl on\n" \ auth::automount=1 \ auth::automnt_src="nfs://132.230.4.6/srv/openslx/export/nfs/autofstest/" \ auth::automnt_dir="/home/users"
Potentielle Konfigurationsprobleme¶
Eine Fehlerquelle kann die Konfiguration von auth::automnt_dir sein. Dieser muss mit dem Pfad übereinstimmen der in der LDAP Datenbank den Nutzern zugeordnet werden. Dies kann u.a. auch durch mapping-Optionen in ldap.conf bzw. auth::ldap behoben werden.
nss-pam-ldapd Probleme
Unter bestimmten Umständen kann das Mapping des Home-Verzeichnisses schief laufen. Dies hängt mit der Benutzung von nslcd (nss-pam-ldapd, welches ein modifiziertes pam_ldap.so ist) zusammen. Dabei wird die /etc/nslcd.conf verwendet die fast analog zu ldap.conf ist, jedoch die meisten nss*_ Optionen nicht versteht. Daher wird bei der Installation bei vorhandenem nss-pam-ldapd Paket eine Warnung ausgegeben. Sollte die ldap.conf keine nss*_ oder sonstige nicht zu nslcd inkompatible Konfigurationsoptionen nutzen, so kann alles reibungslos laufen.
Ist dies nicht der Fall, so muss gibt es drei Möglichkeiten- Anpassen der ldap Konfiguration, so das diese kompatibel mit nslcd ist.
- Anlegen einer nslcd.conf Datei in auth::files, die automatisch nach /etc/nslcd.conf kopierent wird.
- Installieren des bisherigen pam_ldap Paketes auf dem (Clone-)System. Dieses wird auch in der Warnung bei der Plugininstallation mitgeteilt.
NFSv4¶
Will man NFSv4 verwenden, so muss auth::nfs4=1 und auth::idmap_domain definiert sein. Bei auth::automnt_src ist auch nfs4:// als Protokoll möglich, jedoch reicht auch nfs:// aus. auth::idmap_domain gibt die Domain an, welche in /etc/idmapd.conf definiert ist. Eine weitere Anpassung der /etc/idmapd.conf ist momentan nicht implementiert. Das oben aufgeführte Beispiel sieht bei Anpassung für NFSv4 folgendermaßen aus:
slxos-plugin install suse-11.4-auth auth \ auth::rootpwd=foo \ auth::ldap=1 \ auth::ldapuri="ldap://132.230.4.6" \ auth::ldapbase="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_passwd="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_group="ou=people,dc=uni-freiburg,dc=local" \ auth::ldapbinddn="cn=admin,dc=uni-freiburg,dc=local" \ auth::ldapbindpw="foo" \ auth::ldap_options="" \ auth::automount=1 \ auth::automnt_src="nfs://132.230.4.6/srv/openslx/export/nfs/autofstest/" \ auth::automnt_dir="/home/users" \ auth::idmap_domain="uni-freiburg.local" \ auth::nfs4=1
Automount via Script¶
Hier wird statt eines festen Servers für die HOME-Verzeichnisse ein Skript aufgerufen. Dies kann z.B. in grossen Systemen der Fall sein, bei denen verschiedene Fileserver für die HOME-Verzeichnisse verwendet werden. Das aufgerufene Skript gibt für den jeweiligen Nutzer den Server und die mount-Optionen an, mit denen das HOME-Verzeichnis gemountet werden kann.
Soll ein solches Script für die HOME-Verzeichnisse verwendet werden, so wird der Skriptname in auth::automnt_script gesetzt. Das Skript muss dabei in dem in auth::files definierten Verzeichnis (i.d.R. /root/auth-plugin/) befinden. Wichtig ist dabei, das auth::automnt_src nicht definiert ist, d.h. leer ist (auth::automnt_src="").
Benötigt das in auth::automnt_script benannte Skript weitere Programme oder Skripte, so können diese ebenfalls in auth::files abgelegt werden, die auf dem OpenSLX-Client dann unter /opt/openslx/plugin-repo/auth/ zu finden sind. Näheres hierzu finden sie im Kerberos-Teil dieser Dokumentation.
slxos-plugin install ubuntu-10.04-auth auth \ auth::rootpwd=foo \ auth::ldap=1 \ auth::ldapuri="ldap://132.230.4.6" \ auth::ldapbase="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_passwd="ou=people,dc=uni-freiburg,dc=local" \ auth::nss_base_group="ou=people,dc=uni-freiburg,dc=local" \ auth::ldapbinddn="cn=admin,dc=uni-freiburg,dc=local" \ auth::ldapbindpw="foo" \ auth::ldap_options="" \ auth::automount=1 \ auth::automnt_script="automount-home.pl" \ auth::automnt_dir="/home/users"
Verwendet das Skript zum mounten NFSv4, so sollten noch die folgenden zwei Optionen definiert werden: auth::idmap_domain und auth::nfs4. Informationen zu dessen Werten finden Sie in dem vorhergehenden Abschnitt zu NFSv4.
Kerberos¶
Die Verwendung von Kerberos wird mittels setzen von auth::krb=1 aktiviert.
Es muss dabei eine Datei krb5.conf im mittels auth::files (default: /root/auth-plugin) definierten Ordner liegen, welche später auf dem OpenSLX-Client nach /etc/krb5.conf kopiert wird.
Modifikationen und krb5.keytab¶
Es gibt verschiedene Wege das Credentials (/etc/krb5.keytab) auf das Endsystem zu bekommen. Kommt es nicht durch andere Wege auf den OpenSLX Client, so ist es möglich diese durch ein Script in Stage4 zu kopieren. Hierzu muss auth::krbscript gesetzt werden. Das dort definierte Script muss dabei in dem in auth::files definierten Ordner (default: /root/auth-plugin) liegen.
Alle Dateien und Ordner in dem in auth::files definierten Verzeichnis werden kopiert und liegen sind in Stage4 unter /opt/openslx/plugin-repo/auth/ zu finden. D.h. soll das auth::krbscript weitere spezielle Programme oder Dateien aufrufen, so können diese Programme nach auth::files kopiert werden, damit diese in Stage4 in Pfad /opt/openslx/plugin-repo/auth/ aufgerufen werden.
Beispiel:
... auth::krb=1 \ auth::krbscript="krb5-script.sh"
Auszug aus krb5-script.sh
#!/bin/sh
for i in {1..30}; do
test -s /etc/krb5.keytab && break
[ $i -le 10 ] && sleep 3 | /opt/openslx/plugin-repo/auth/geheimesprogramm \
> /etc/krb5.keytab && \
chmod 600 /etc/krb5.keytab 2>/dev/null
[ $i -gt 10 ] && ( set -x; sleep 10 |
/opt/openslx/plugin-repo/auth/geheimesprogramm > \
/etc/krb5.keytab && chmod 600 /etc/krb5.keytab 2>/dev/null )
[ $i -eq 30 ] && echo -e \
"\n\tGetting Krb keytable failed, only root login possible!\n"
done
/root/auth-plugin enthält dabei folgende Dateien: krb5-script.sh, geheimesprogramm, krb5-script.sh.
Eigene Konfigurationsdateien¶
Neben den bisher spezifisch aufgeführten Konfigurationsdateien können auch die im folgenden aufgeführten Konfigurationsdateien überschrieben werden. Diese Dateien müssen hierzu im auth::files (default: /root/auth-plugin) definierten Verzeichnis abgelegt.
Zu beachten ist hierbei, das die im folgenden aufgeführten Dateien auch die vom auth-plugin erstellte Konfigurationsdateien überschreiben!
- nsswitch.conf wird nach /etc/nsswitch.conf kopiert
- krb5.conf wird nach /etc/krb5.conf kopiert
- ldap.conf wird nach /etc/ldap.conf kopiert und nach /etc/ldap/ldap.conf und /etc/openldap/ldap.conf verlinkt (sofern die Verzeichnisse vorhanden sind).
- pam.d/* (alle Dateien unterhalb des pam.d Verzeichnisses (z.B. /root/auth-plugin/pam.d/foo) werden nach /mnt/etc/pam.d/ kopiert\
- nslcd.conf wird nach /etc/nslcd.conf kopiert (z.B. für OpenSuSE 11.4 verwendeten nslcd (local LDAP name service daemon). Vorsicht nss_* ist nicht z.B. bekannt, analog zu ldap.conf, aber nicht alle ldap.conf Konfiguration unterstützt!
- Alle sonstigen Dateien und Verzeichnisse in auth::files werden nach /opt/openslx/plugin-repo/auth/ kopiert.