ich arbeite mich gerade in LDAP rein. Alle meine Aussagen sind nur das, was ich bis jetzt gelernt habe. Es kann ggf. auch einfach Falsch sein. Freue mich über jede Verbesserung.
Folgende Anforderung:
- LDAP zur User und Gruppenverwaltung
- User einer bestimmten Gruppe dürfen sich per SSH einloggen
- User einer anderen Gruppe dürfen OwnCloud nutzen.
LDAP ist angelegt: Punkt 1 erfüllt
SSH funktioniert für die User in der "sshuser" Group: Punkt 2 erfüllt
Alle User können Owncloud nutzen: Hier hänge ich.
Um die Gruppen im System nutzen zu können muss ich die Struktur "posixGroup" nutzen. Die User werden nur mit ihrem Namen als "memberuid" angegeben.
Um in OwnCloud die User zu beschränken braucht es bei den Usern das Feld "memberof". Dies lässt dich automatisch durch das Overlaymodul memberof erzeugen. Jedoch braucht der dafür den DN der member in den Gruppen. Dies ist bei der posixGroup nicht möglich, sondern bei groupOfNames. Beide zusammen würde bedeuten, dass ich jede Gruppe in zwei unterschiedlichen Formaten pflegen müsste. Die von mir gefundene Lösung heißt RFC2307bis: http://www.heinlein-support.de/blog/how ... x-gruppen/
Unten auf der Seite steht eigentlich schon die Lösung. Ich habe die komplette Seite verstanden, nur weiß ich nicht, was ich mit diesem File machen soll. Ich habe es einfach mal mit
Code: Alles auswählen
ldapmodify -Y EXTERNAL -H ldapi:// -f rfc2307bis.ldif
Code: Alles auswählen
ldapadd -Y EXTERNAL -H ldapi:// -f rfc2307bis.ldif
Kann mir bitte jemand sagen, ob ich auf dem richtigen Weg bin?
Ob es eine bessere Lösung gibt?
Was ich mit dem "rfc2307bis.ldif" machen muss?
Vielen Dank für eure Unterstützung.
------------------------------------------------------------------------------------
Vielleicht hilft das auch noch. Meine Installation sieht wie folgt aus:
OS: Debian jessie/sid
Code: Alles auswählen
kill $(pidof pynslcd)
aptitude purge ldap-utils slapd libnss-ldapd
rm -rf /var/backups/*.ldapdb
echo "slapd slapd/password1 string adminpw1234
slapd slapd/password2 string adminpw1234
slapd slapd/no_configuration boolean false
slapd slapd/move_old_database boolean true
slapd slapd/purge_database boolean true
slapd shared/organization string local
slapd slapd/backend string HDB
slapd slapd/domain string local
slapd slapd/allow_ldap_v2 boolean false
" | debconf-set-selections
aptitude -y install ldap-utils slapd
ldapmodify -Y EXTERNAL -H ldapi:// -f mod_config.ldif
ldapadd -Y EXTERNAL -H ldapi:// -f add_config.ldif
for file in structur.ldif group.ldif user.ldif; do
ldapadd -x -D cn=admin,dc=local -W -f $file
done
for file in mod_user.ldif; do
ldapmodify -x -D cn=admin,dc=local -W -f $file
done
ldappasswd -x -D cn=admin,dc=local -W uid=derpascal,ou=Users,dc=local
echo "libnss-ldapd libnss-ldapd/nsswitch multiselect group, passwd, shadow
pynslcd nslcd/ldap-uris string ldapi:///
pynslcd nslcd/ldap-base string dc=local
" | debconf-set-selections
aptitude -y install libnss-ldapd
Code: Alles auswählen
dn: olcDatabase={1}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=local" write
by self write
by anonymous auth
by * read
olcAccess: {1}to *
by dn="cn=admin,dc=local" write
by * read
by anonymous read
Code: Alles auswählen
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
objectClass: top
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof.la
dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
dn: cn=module,cn=config
cn: module
objectclass: olcModuleList
objectclass: top
olcmodulepath: /usr/lib/ldap
olcmoduleload: refint.la
dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: memberof member manager owner
Code: Alles auswählen
dn: ou=Groups,dc=local
ou: Groups
objectClass: top
objectClass: organizationalUnit
dn: ou=Users,dc=local
ou: Users
objectClass: top
objectClass: organizationalUnit
Code: Alles auswählen
dn: cn=sshuser,ou=Groups,dc=local
cn: sshuser
gidNumber: 100000
objectClass: posixGroup
dn: cn=ownclouduser,ou=Groups,dc=local
cn: ownclouduser
gidNumber: 100001
objectClass: posixGroup
Code: Alles auswählen
dn: uid=derpascal,ou=Users,dc=local
uid: derpascal
uidNumber: 100000
gidNumber: 65534
cn: derpascal
sn: derpascal
objectClass: posixAccount
objectclass: organizationalPerson
loginShell: /bin/bash
homeDirectory: /home/derpascal
dn: uid=ocadmin,ou=Users,dc=local
uid: ocadmin
uidNumber: 100001
gidNumber: 65534
cn: OwnCloud Admin
sn: OwnCloud Admin
objectClass: posixAccount
objectclass: organizationalPerson
loginShell: /bin/false
homeDirectory: /dev/null
Code: Alles auswählen
dn: cn=sshuser,ou=Groups,dc=local
changetype: modify
add: memberuid
memberuid: derpascal
dn: cn=ownclouduser,ou=Groups,dc=local
changetype: modify
add: memberuid
memberuid: derpascal
memberuid: ocadmin
Code: Alles auswählen
wget http://www.heinlein-support.de/blog/wp-content/uploads/2013/12/rfc2307bis.ldif_.txt -O rfc2307bis.ldif