wiki:AdminLdap
close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Version 13 (modified by bau, 13 years ago) ( diff )

--

LDAP-Server

Unser LDAP-Server läuft auf dem paedml-Rechner. Er authentifiziert alle Nutzer, die ein Account unter der PaedML-Musterlösung haben, also alle am Gymnasium aktiven Schüler und Lehrer.

Wenn Änderungen am LDAP vorgenommen wurden sollte auch der samba neu gestartet werden, da sich in letzter Zeit vermehrt Probleme mit dem Domänenanmeldedienst nach einer Änderung am LDAP ergaben.

LDAP in der Linux-Musterlösung

Informationen zum LDAP finden sich unter ​http://www.linuxmuster.net / Stichwort LDAP.

Common-Name-(dc)-Attribute

Bei uns müssen die dc-Attribute angegeben werden als:

dc=kg-fds, dc=de

Achtung!
dc=paedml darf nicht angegeben werden!

LDAP-Gruppen

Wir verwenden die Einstellungen der PaedML. Dort gibt es eine Gruppe für die Lehrer, die Schüler sind aber etwas komisch erfasst. Allerdings gilt: Entweder bist du Lehrer oder eben Schüler :-)

Recht gut ist die Abfrage einer LDAP-Gruppe hier beschrieben:
​http://www.linuxmuster.net/version3:webverzeichnisse_schuetzen_mit_.htaccess-dateien?s[]=ldap

dort steht:

# Prototyp einer .htaccess für die LML 4.0
AuthType? Basic
AuthName? "Interner Bereich"
AuthBasicProvider? ldap
AuthLDAPUrl ldap://10.16.1.1/dc=linuxmuster,dc=local?uid
AuthLDAPGroupAttributeIsDN off
AuthLDAPGroupAttribute memberUid
Require ldap-group cn=teachers,ou=groups,dc=linuxmuster,dc=local

Die dc's am Ende müssen bei uns dc=kg-fds, dc=de heißen.

Achtung!
dc=paedml darf nicht angegeben werden!

Für ein funktionierendes Beispiel siehe AdminApache#Trac.

Testfall: Nutzer test

Nutzer test ist nicht in der LDAP-Gruppe teachers.

Nutzer in eine LDAP-Gruppe aufnehmen

  1. Die LDAP-Gruppen stehen unterhalb der organizational unit ou=groups.
  2. Den dortigen LDAP-Datensätzen muss ein weiterer Eintrag memberUID=<uid> hinzugefügt werden.

Alternative: Stattdessen kann offenbar auch das Tool smbldap-usermod verwendet werden:

smbldap-usermod -G <group> <uid>
Hinweis
Wenn auch die Benutzerverwaltung sophomorix der Linuxmusterlösung über diese Zugehörigkeit informiert sein soll (wichtig, wenn der LDAP-Baum einmal neu erzeugt werden muss), stattdessen diesen Befehl verwenden:
sophomorix-teacher --teacher <uid> --add <group>
(Zum Anlegen neuer Gruppen konsistent mir sophomorix, siehe unten.)
  1. wichtig: damit diese Änderung sofort Effekt zeigt, muss der name service caching deamon nscd über die Änderung informiert werden. Das geht mittels
    nscd --invalidate group
    
    Sonst wirkt sich die Änderung erst aus, wenn der nscd regulär die LDAP-Konfiguration neu einliest.

Neue LDAP-Gruppe anlegen

Eine neue LDAP-Gruppe wird mit dem Befehl

smbldap-groupadd <group>

angelegt. Die nächste Freie Unix-ID wird dabei automatisch ermittelt.

Hinweis
Bei der Linuxmusterlösung funktioniert obiger Befehl nicht, weil in dem LDAP-Baum, den sophomorix erzeugt, der Eintrag der nächsten freien Unix-ID fehlt, siehe comment:2:ticket:751 Punkt 1). Stattdessen kann hier folgender Befehl verwendet werden. Dann weiß auch sophomorix über die neue Gruppe bescheid:
sophomorix-groupadd --local --unix-group <group> --nt-group <group>

Mit der Option -g kann die Gruppen-ID vorgegeben werden:

smbldap-groupadd <group> -g <GID>

Existierende lokale Gruppe über LDAP verfügbar machen

Soll lediglich ein LDAP-Eintrag für eine Gruppe angelegt werden, die bereits existiert (z.B. lokale oder Systemgruppen), so muss zusätzlich die Option -o gesetzt werden:

smbldap-groupadd <group> -g <existing-GID> -o

Beispiel: Mit der folgenden Sequenz habe ich die auf allen Rechnern lokal existierende Gruppe video (GID 44) ins LDAP aufgenommen und Nutzer kup hinzugefügt:

root@paedml:~# smbldap-groupadd -g 44 -o video
root@paedml:~# smbldap-usermod  -G +video kup

Squid und LDAP

Wir haben mehrere Proxy-Server im grünen Netz stehen, die am Besten ihre User gegen den zentralen LDAP verifizieren. Dazu benutzen beide (10.32.1.250 und 251) den /usr/lib/squid/ldap_auth, der 10.32.1.250/proxyl.kg-fds.de zusätzlich den /usr/lib/squid/squid_ldap_group zur Abfrage, ob der User der Gruppe teachers angehört:

10.32.1.251 / proxys.kg-fds.de / Schülernetzproxy für alle

# ldap_auth gegen den LDAP-Server auf der paedml
auth_param basic program /usr/lib/squid/ldap_auth -b ou=accounts,dc=kg-fds,dc=de -h 10.32.1.1 -p 389 -f "(&(objectClass=*)(uid=%s))"

auth_param basic children 5
auth_param basic realm Zieladresse ausserhalb des Kepler-Netzwerkes (proxyL)
auth_param basic credentialsttl 45 minutes


# ACL external_traffic nur mit BASIC-Auth (Kann entfallen?)
acl external_traffic proxy_auth REQUIRED

http_access allow external_traffic

10.32.1.250 / proxyl.kg-fds.de / Schülernetzproxy für Lehrer

# ldap_auth gegen den LDAP-Server auf der paedml
auth_param basic program /usr/lib/squid/ldap_auth -b ou=accounts,dc=kg-fds,dc=de -h 10.32.1.1 -p 389 -f "(&(objectClass=*)(uid=%s))"

auth_param basic children 5
auth_param basic realm Zieladresse ausserhalb des Kepler-Netzwerkes (proxyL)
auth_param basic credentialsttl 45 minutes

# Definiert den ACL-Typ ldapGROUP
external_acl_type ldap_filter %LOGIN /usr/lib/squid/squid_ldap_group -b "ou=groups,dc=kg-fds,dc=de" -h paedml.kg-fds.de -p 389 -f "(&(cn=%g)(memberUid=%u))"

# Nur fuer Gruppe teachers
acl inetusers external ldap_filter teachers

http_access allow inetusers
Note: See TracWiki for help on using the wiki.