# [Crappy? Solved] Proftpd + LDAP + Gruppenunterscheidung

## JayMad

Hallo zusammen,

ich hoffe, ihr könnt mir weiterhelfen. Nach 2 Tagen googlen und diversem Rumprobieren, bin ich mit meinem Latein am Ende.

Ich habe einen OpenLDAP- und einen ProFTPd-Server aufgesetzt.

Die Einrichtung vom ProFTPd, so dass er den User am LDAP authentifiziert, ist vorgenommen und funktioniert durch folgende Direktiven auch wunderbar:

```
LDAPDoAuth on "cn=%v,ou=Users,dc=example,dc=com"

LDAPServer "ldap.example.com:389"
```

Wie schon gesagt, funktioniert die Benutzerauthentifizierung gegen LDAP ohne Probleme. Nachteil an dieser Geschichte ist natürlich, dass sich wirklich jeder, den ich unter "ou=Users" angelegt habe, per FTP einloggen kann, und das versuche ich zu verhindern.

Zu diesem Zweck habe ich eine neue OrganisationUnit "Services" angelegt, darunter eine posixGroup mit dem Namen "Proftpd" und meinem Account als Gruppenmitglied hinzugefügt:

```
dn: cn=Proftpd,ou=Services,dc=example,dc=com

cn: Proftpd

gidNumber: 1001

objectClass: posixGroup

objectClass: top

description:: WnVnw6RuZ2UgenVtIFByb2Z0cGQtU2VydmVy

memberUid: jaymad
```

Nun möchte ich den FTP-Zugang nur den Benutzern erlauben, die auch in der "Proftpd"-Gruppe sind.

Leider funktioniert das ganze mit der DN

```
cn=JayMad,cn=Proftpd,ou=Services,dc=example,dc=com
```

nicht... Auch mit diversen Filtern habe ich das ganze nicht hinbekommen...

Vielleicht hat ja jemand von euch eine Idee, welche DN und/oder welche zusätzliche Search-Filter ich verwenden muss, damit ich das ganze so aufsetzen kann.

Vielen Dank schonmal im vorraus

JayMadLast edited by JayMad on Sat Jun 16, 2007 4:41 am; edited 1 time in total

----------

## bep

das würde mich auch mal interessieren;) habe das auch mal versucht aber nie erfolgreich gelöst.

beim googlen hab ich auch garnichts gefunden.

----------

## JayMad

Ok, ich habe es nun hinbekommen, wobei ich die Lösung nicht als wirklich schön ansehe.

Bin folgendermaßen vorgegangen....

Ich habe das Schema "inetorgperson.schema" bearbeitet. Und zwar habe ich an der Stelle, wo die einzelnen Attribute einer ObjectClass zugeordnet werden einfach noch das "member"-Attribut hinzugefügt. "member" wird bereits im Core-Schema definiert.

Dann sieht das Schema am Ende so aus:

```
objectclass     ( 2.16.840.1.113730.3.2.2

    NAME 'inetOrgPerson'

        DESC 'RFC2798: Internet Organizational Person'

    SUP organizationalPerson

    STRUCTURAL

        MAY (

                audio $ businessCategory $ carLicense $ departmentNumber $

                displayName $ employeeNumber $ employeeType $ givenName $

                homePhone $ homePostalAddress $ initials $ jpegPhoto $

                labeledURI $ mail $ manager $ mobile $ o $ pager $

                photo $ roomNumber $ secretary $ uid $ userCertificate $

                x500uniqueIdentifier $ preferredLanguage $

                userSMIMECertificate $ userPKCS12 $ member )

        )
```

Diesem Attribut kann man nun mehrere Einträge zuordnen, wie zum Beispiel Service-Gruppen. In meinem konkreten Beispiel:

```
cn=Proftpd,ou=Services,dc=example,dc=com
```

In der Proftpd-Config dann noch die LDAPDoAuth-Directive anpassen:

```
LDAPDoAuth on "cn=%v,ou=Users,dc=example,dc=com" "(&(objectClass=inetOrgPerson)(member=cn=Proftpd,ou=Services,dc=example,dc=com)(cn=%v))"
```

So wird man nur eingeloggt, wenn man:

1. Ein LDAP-Konto hat

2. Dieses LDAP-Konto vom Typ "inetOrgPerson" ist

3. Man im member-Attribut den DN des Services hat

Das wars auch schon.... Funktioniert wunderbar, wobei ich diese Lösung beschissen finde *g*

Ich werde mir wohl etwas genauer anschauen, wie man Schemata schreibt und werde dann wohl ein Services-Schema schreiben.

Gruß

/Jay

----------

## bep

super gemacht ! viel  erfolg  :Wink:  halt uns auf dem laufendem.

----------

