<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Seafile_Server_-_Active_Directory_Anbindung</id>
	<title>Seafile Server - Active Directory Anbindung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://znil.net/index.php?action=history&amp;feed=atom&amp;title=Seafile_Server_-_Active_Directory_Anbindung"/>
	<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Seafile_Server_-_Active_Directory_Anbindung&amp;action=history"/>
	<updated>2026-04-28T11:09:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in znilwiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://znil.net/index.php?title=Seafile_Server_-_Active_Directory_Anbindung&amp;diff=10437&amp;oldid=prev</id>
		<title>BLinz am 11. Januar 2018 um 09:33 Uhr</title>
		<link rel="alternate" type="text/html" href="https://znil.net/index.php?title=Seafile_Server_-_Active_Directory_Anbindung&amp;diff=10437&amp;oldid=prev"/>
		<updated>2018-01-11T09:33:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;u&amp;gt;&amp;#039;&amp;#039;&amp;#039;Changelog:&amp;#039;&amp;#039;&amp;#039;&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* 20.12.2017: Erste Version&lt;br /&gt;
* 11.01.2018: Probleme mit Sonderzeichen ergänzt&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Es ist zwar in der Anleitung von Seafile beschrieben: https://manual.seafile.com/deploy/using_ldap.html&amp;lt;br&amp;gt;&lt;br /&gt;
Aber man muss genau lesen - und scheitert eventuell doch.&amp;lt;br&amp;gt;&lt;br /&gt;
Deshalb hier meine Version der Anleitung.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
Ich gehe davon aus das der Seafile-Server ansonsten bereits funktioniert, man kann lokale Benutzer anlegen und nutzen.&amp;lt;br&amp;gt;&lt;br /&gt;
Fehlt nur noch die Anbindung an das Active Directory.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Ziel==&lt;br /&gt;
Benutzer die sich in einer bestimmten Active Directory-Gruppe befinden sollen sich ohne weitere Eingriffe in Seafile anmelden können.&amp;lt;br&amp;gt;&lt;br /&gt;
Die Gruppe heißt in diesen Beispielen:&amp;lt;br&amp;gt;&lt;br /&gt;
 SeafileUser&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Voraussetzungen==&lt;br /&gt;
Wir müssen den Namen der Domäne wissen, sowie die Adresse eines Domänencontrollers.&amp;lt;br&amp;gt;&lt;br /&gt;
Wir brauchen einen Benutzer mit dem sich der Seafile Server am Active Directory anmelden kann. Ein ganz normaler Windows-Benutzer reicht:&amp;lt;br&amp;gt;&lt;br /&gt;
Die Gruppe sollte angelegt sein und zumindest ein Mitglied haben. Die Benutzer in der Gruppe haben einen Eintrag im Feld &amp;quot;E-Mail:&amp;quot;, denn Seafile möchte bei LDAP Benutzern immer das Format &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Name@domain.suffix&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; haben.&amp;lt;br&amp;gt;&lt;br /&gt;
Ergibt die folgenden Daten:&amp;lt;br&amp;gt;&lt;br /&gt;
 Domäne ..........: znil.local&lt;br /&gt;
 Domänencontroller: 192.168.45.50&lt;br /&gt;
 Gruppe ..........: seafileUser&lt;br /&gt;
 Benutzer ........: ldapSearch&lt;br /&gt;
 Passwort ........: abcd1234&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Konfiguration Seafile==&lt;br /&gt;
Wir stoppen zunächst den Seafile Server:&amp;lt;br&amp;gt;&lt;br /&gt;
 systemctl stop seahub.service &amp;amp;&amp;amp; systemctl stop seafile.service&lt;br /&gt;
und bearbeiten die Datei &amp;lt;code&amp;gt;ccnet.conf&amp;lt;/code&amp;gt; im Seafile-Verzeichnis:&amp;lt;br&amp;gt;&lt;br /&gt;
 nano /home/seafile/haiwen/conf/ccnet.conf&lt;br /&gt;
Unten an die Datei hängen wir folgenden Abschnitt an:&amp;lt;br&amp;gt;&lt;br /&gt;
 [LDAP]&lt;br /&gt;
 HOST = ldap://192.168.45.50/&lt;br /&gt;
 BASE = OU=3.Funktionsbenutzer,DC=znil,DC=local;OU=1.Email-Benutzer,DC=znil,DC=local&lt;br /&gt;
 USER_DN = CN=ldapSearch,OU=3.Funktionsbenutzer,DC=znil,DC=local&lt;br /&gt;
 PASSWORD = abcd1234&lt;br /&gt;
 LOGIN_ATTR = mail&lt;br /&gt;
 FILTER = memberOf=CN=SeafileUser,OU=4.Funktionsgruppen,DC=znil,DC=local&lt;br /&gt;
Da sehen wir nun die ersten Hürden und Probleme. Zum einen müssen &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Distinguished Names&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; angegeben werden, zum anderen Unterstützt der Seafile Server &amp;#039;&amp;#039;&amp;#039;keine&amp;#039;&amp;#039;&amp;#039; globale Suche in der Domäne, man muss immer eine OU (Organisationseinheit) angeben. Aber hier die Erklärungen im Detail:&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
===HOST===&lt;br /&gt;
Hier geben wir den Namen oder die IP-Adresse des Domänencontrollers an:&lt;br /&gt;
 HOST = ldap://192.168.45.50/&lt;br /&gt;
Alternativ mit Port:&lt;br /&gt;
 HOST = ldap://192.168.45.50:389/&lt;br /&gt;
Es geht auch mit Verschlüsselung - was Ihr auf dem Domänencontroller aber erst einrichten müsst. Wer das will - siehe Seafile Handbuch.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
===BASE===&lt;br /&gt;
&amp;lt;code&amp;gt;BASE&amp;lt;/code&amp;gt; ist die Suchbasis. Unterhalb dieses Knotens werden die Benutzer(!) gesucht. Bei vielen anderen Lösungen würde man einfach&lt;br /&gt;
 BASE = DC=znil,DC=local&lt;br /&gt;
eingeben und er würde alles innerhalb der Domäne durchsuchen. &amp;#039;&amp;#039;&amp;#039;Das geht mit Seafile NICHT!&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Es muss immer eine OU angegeben werden. Für die Standard-OU &amp;quot;Users&amp;quot; sähe die korrekte Zuordnung also so aus: &amp;lt;br&amp;gt;&lt;br /&gt;
 BASE = OU=Users,DC=znil,DC=local&lt;br /&gt;
Wohl dem der alle Benutzer unterhalb der selben OU hat ... nein, ganz so schlimm ist es nicht.&amp;lt;br&amp;gt;&lt;br /&gt;
Mein Test Active Directory sieht so aus:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-151942.PNG]]&amp;lt;br&amp;gt;&lt;br /&gt;
Und ich möchte Benutzer unterhalb der beiden markierten OUs hinzufügen:&amp;lt;br&amp;gt;&lt;br /&gt;
 1.Email-Benutzer&lt;br /&gt;
 3.Funktionsbenutzer&lt;br /&gt;
Man darf mehrere BASE angeben, jeweils getrennt durch ein &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;, also brauchen wir nur noch die &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Distinguished Names&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; der beiden OUs.&amp;lt;br&amp;gt;&lt;br /&gt;
Da Copy&amp;amp;Paste in der Regel weniger Fehler erzeugt zeige ich euch 2 Methoden um an diesen Namen zu kommen:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
====per CMD====&lt;br /&gt;
Startet auf einem Domänencontroller(!) eine Eingabeaufforderung und gebt folgenden Befehl ein:&amp;lt;br&amp;gt;&lt;br /&gt;
 dsquery ou -name 1.Email-Benutzer&lt;br /&gt;
Ausgabe:&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;quot;OU=1.Email-Benutzer,DC=znil,DC=local&amp;quot;&lt;br /&gt;
Das Wiederholt Ihr für alle OUs unterhalb derer eure Benutzer stehen. Ihr müsst NICHT jede Unter-OU mit aufführen!&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
====per Active Directory-Benutzer und -Computer====&lt;br /&gt;
Öffnet &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Active Directory-Benutzer und -Computer&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Aktiviert unter &amp;#039;&amp;#039;&amp;#039;Ansicht&amp;#039;&amp;#039;&amp;#039; die &amp;#039;&amp;#039;&amp;#039;Erweiterte Features&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-153033.PNG]]&amp;lt;br&amp;gt;&lt;br /&gt;
Ruft per Rechtsklick auf die OU deren Eigenschaften auf:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-153253.PNG]]&amp;lt;br&amp;gt;&lt;br /&gt;
Geht auf den Reiter &amp;#039;&amp;#039;&amp;#039;Attribut-Editor&amp;#039;&amp;#039;&amp;#039; und sucht die Zeile &amp;#039;&amp;#039;&amp;#039;distinguishedName&amp;#039;&amp;#039;&amp;#039; und macht einen Doppelklick:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-153402.PNG]]&lt;br /&gt;
Nun könnt Ihr den Text herauskopieren.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
Nun haben wir also die DN zusammen:&amp;lt;br&amp;gt;&lt;br /&gt;
 1.Email-Benutzer      = OU=3.Funktionsbenutzer,DC=znil,DC=local&lt;br /&gt;
 3.Funktionsbenutzer   = OU=1.Email-Benutzer,DC=znil,DC=local&lt;br /&gt;
Diese beiden gebe ich nun, per &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt; getrennt bei &amp;lt;code&amp;gt;BASE&amp;lt;/code&amp;gt; an:&amp;lt;br&amp;gt;&lt;br /&gt;
 BASE = OU=3.Funktionsbenutzer,DC=znil,DC=local;OU=1.Email-Benutzer,DC=znil,DC=local&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==USER_DN, PASSWORD==&lt;br /&gt;
Als nächstes folgt der Benutzer für den Active Directory Zugriff und dessen Passwort:&amp;lt;br&amp;gt;&lt;br /&gt;
 USER_DN = CN=ldapSearch,OU=3.Funktionsbenutzer,DC=znil,DC=local&lt;br /&gt;
 PASSWORD = abcd1234&lt;br /&gt;
Den &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Distinguished Names&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039; erhalten wir nach dem gleichen Prinzip wie für die OU, der CMD Aufruf ist&lt;br /&gt;
 dsquery user -samid ldapSearch&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==LOGIN_ATTR==&lt;br /&gt;
 LOGIN_ATTR = mail&lt;br /&gt;
Damit geben wir an das wir die Email-Adresse des Benutzers als Login-Benutzernamen verwenden wollen.&amp;lt;br&amp;gt;&lt;br /&gt;
Das ist das Feld &amp;#039;&amp;#039;&amp;#039;E-Mail:&amp;#039;&amp;#039;&amp;#039; bei den Eigenschaften eines Benutzer im Active Directory&lt;br /&gt;
Alternativ ginge auch&lt;br /&gt;
 LOGIN_ATTR = userPrincipalName&lt;br /&gt;
Das wäre die folgenden Stelle:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-154436.PNG]]&amp;lt;br&amp;gt;&lt;br /&gt;
Das kann mit der E-Mail-Adresse identisch sein, muss er aber nicht. Wenn der Administrator nichts anderes konfiguriert hat ist der in der Regel der interne Domänenname, also &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Bernhard@znil.local&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==FILTER==&lt;br /&gt;
Mit Filter kann ich die Bedingungen definieren die ein Benutzer erfüllen muss um Seafile nutzen zu können.&amp;lt;br&amp;gt;&lt;br /&gt;
Hier soll er Mitglied der Gruppe &amp;quot;SeafileUser&amp;quot; sein:&amp;lt;br&amp;gt;&lt;br /&gt;
 FILTER = memberOf=CN=SeafileUser,OU=4.Funktionsgruppen,DC=znil,DC=local&lt;br /&gt;
Den DN kriegen wir wiederum wie bei der OU raus, die Abfrage per CMD sieht so aus:&amp;lt;br&amp;gt;&lt;br /&gt;
 dsquery group -samid SeafileUser&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{Tipp| Ihr könnt den Filter auch ganz weglassen - dann dürfen alle Benutzer unterhalb der OU sich anmelden}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{Hinweis| Besondere Zeichen müssen ggf. wiederum &amp;quot;escaped&amp;quot; werden. Zum Beispiel wird ein &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; im Namen bei der Ermittlung als &amp;lt;code&amp;gt;\#&amp;lt;/code&amp;gt; eingefügt. Für einen DN ist das auch die Korrekte Schreibweise. Hier an dieser Stelle geht es aber um einen LDAP-Suchstring - und in dem ist es so nicht erlaubt. Statt &amp;lt;code&amp;gt;\#&amp;lt;/code&amp;gt; muss man hier ein &amp;lt;code&amp;gt;\\23&amp;lt;/code&amp;gt; einfügen. Die Werte findet Ihr hier: http://www.utf8-zeichentabelle.de/&amp;lt;br&amp;gt; Wenn es nicht klappt, eure Gruppe Sonderzeichen enthält die bei der Ermittlung mit &amp;lt;code&amp;gt;\&amp;lt;/code&amp;gt; escaped wurden dann liegt es daran!}}&amp;lt;br&amp;gt;&lt;br /&gt;
{{Warnung| Generell ist es eine schlechte Idee eine Gruppe mit Sonderzeichen zu verwenden. Der Name sollte nur aus Buchstaben, Zahlen und dem &amp;quot;-&amp;quot; bestehen. Bei einem Kunden hat es zwar scheinbar nach vorzu beschriebener Methode geklappt - aber dann gab es Probleme bei der Anmeldung. Nur Benutzer die auf dem Reiter &amp;#039;&amp;#039;&amp;#039;LDAP&amp;#039;&amp;#039;&amp;#039; erscheinen können sich auch anmelden. Ist dieser Leer stimmt etwas nicht mit der Gruppe}}&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Kontrolle==&lt;br /&gt;
Speichert die &amp;lt;code&amp;gt;ccnet.conf&amp;lt;/code&amp;gt; und startet die Dienste wieder:&amp;lt;br&amp;gt;&lt;br /&gt;
 systemctl start seafile.service &amp;amp;&amp;amp; systemctl start seahub.service&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In der Administrationsoberfläche von Seafile in der Benutzerverwaltung gibt es nun einen neuen Reiter LDAP:&amp;lt;br&amp;gt;&lt;br /&gt;
:[[Datei:ClipCapIt-171220-155449.PNG]]&amp;lt;br&amp;gt;&lt;br /&gt;
Dort werden alle gefundenen Benutzer aufgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
Diese können sich mit ihrer Email-Adresse (alles klein geschrieben) und Ihrem Windows-Passwort an Seafile anmelden.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
==Kommentare==&lt;br /&gt;
&amp;lt;comments /&amp;gt;&lt;/div&gt;</summary>
		<author><name>BLinz</name></author>
	</entry>
</feed>