Samba und AD-Domäne einrichten
Damit Samba als Active Directory-Domain Controller arbeiten kann, müssen wir diese Domäne jetzt erstellen und einrichten („provisionieren“).
samba-tool domain provision
Wir verwenden dazu für diese Anleitung folgende Daten:
Nach diesen Eingaben wird die Domäne provisioniert, alle Datenbanken und Netzfreigaben erzeugt und die DNS-Einträge aktualisiert. Das dauert einen kleinen Moment und sieht im Erfolgsfall etwa so aus:
Rot markiert sind hier noch die Hinweise auf zwei nötige, gleich folgende Konfigurationsanpassungen.
Kerberos-Konfiguration übernehmen
Falls schon eine eigene Kerberos-Konfiguration existiert, muß der Inhalt der von Samba erzeugten Konfigurationsdatei /usr/local/samba/private/krb5.conf
bestehende /etc/krb5.conf
integriert werden. Ansonsten kann die aktuellen Konfiguration gesichert und danach einfach ersetzt werden:
mv /etc/krb5.conf /usr/local/samba/private/krb5.conf.original
cp /usr/local/samba/private/krb5.conf /etc
Domäne in Bind integrieren und DNS-Dienst übernehmen
Zunächst muß in der Datei /usr/local/samba/private/named.conf
die für unsere Bind-Version
9.9 zutreffende Konfiguration aktiviert und die andere auskommentiert werden:
-
dlz "AD DNS Zone" {
-
# For BIND 9.8.0
-
# database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";
-
-
# For BIND 9.9.0
-
database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
-
};
Anschließend wird diese Samba-Konfiguration in der Datei /usr/local/bind9/etc/named.conf
eingebunden. Im folgenden Beispiel ist das die letzte Zeile:
-
include "/etc/bind/named.conf.options";
-
include "/etc/bind/named.conf.local";
-
include "/etc/bind/named.conf.default-zones";
-
include "/usr/local/samba/private/named.conf";
Optional: DNS-Weiterleitung
Um den Pi zu entlasten, können wir ihm einen Forwarder zur Verfügung stellen. Dazu kann ein öffentlicher DNS, der lokale Internetrouter und weitere Server in /usr/local/bind9/etc/named.conf.options
ergänzt werden:
-
options {
-
-
// ... andere Optionen ...
-
-
forward first;
-
forwarders {
-
192.168.1.1; // Lokaler Router
-
8.8.8.8; // Google oder ein beliebiger anderer
-
// Beliebige weitere externe DNS-Server.
-
// Jede Adresse muß mit einem Semikolon enden.
-
};
-
notify no;
-
};
Wer statt Bind den eingebauten Samba-DNS nutzen will, kann bzw. muß stattdessen einen(!) Forwarder in der /usr/local/samba/etc/smb.conf
eintragen:
-
[global]
-
; ...
-
; andere Optionen
-
; ...
-
dns forwarder = 192.168.1.1
-
allow dns updates = nonsecure and secure
x64-Support vorbereiten
Um später Druckertreiber auch für x64-Systeme hochladen zu können, müssen wir aufgrund von Windows-Konventionen einen x64-Server betreiben. Das ist der Pi zwar nicht, aber mit der folgenden Anpassung der /usr/local/samba/etc/smb.conf
können wir ihn gegenüber Windows-Clients so tun lassen, als ob:
-
[global]
-
; ...
-
; andere Optionen
-
; ...
-
spoolss: architecture = Windows x64
Konfiguration prüfen
Nach einem Neustart beider Dienste ist es Zeit für ein paar Testkommandos:
service bind9custom restart
service samba4 start
host -t SRV _ldap._tcp.ad.example.com. localhost; host -t SRV _kerberos._udp.ad.example.com. localhost
Dabei sollte eine Antwort wie
Name: localhost
Address: 127.0.0.1#53
Aliases:
_ldap._tcp.ad.example.com has SRV record 0 100 389 raspberrypi.ad.example.com.
Name: localhost
Address: 127.0.0.1#53
Aliases:
_kerberos._udp.ad.example.com has SRV record 0 100 88 raspberrypi.ad.example.com.
herauskommen. Wenn das der Fall ist, kann unser Domain Controller die Rolle des lokalen Nameservers übernehmen.
DNS-Einstellungen/DHCP-Server umstellen
Sofern der Pi nicht bereits im lokalen Netz als Primärer DNS bekannt ist, wird das jetzt nachgeholt. Am einfachsten ist das mit DHCP, wo wir nur den DNS-Eintrag am DHCP-Server (bzw. in den DHCP-Optionen des Routers) anzupassen brauchen.
Wer kein DHCP nutzt, muß nun als DNS-Server-Adresse für jeden Computer im LAN die IP des Pi eintragen.
Als Suchdomäne (je nach System manchmal auch nur Domain o.ä.) wird, entweder am DHCP-Server oder an jedem Client einzeln, der Name unserer Domäne (hier: ad.example.com
) eingetragen.
In beiden Fällen ist noch einmal ein Neustart fällig.
NTP testen
Spätestens jetzt sollte der NTP-Client, den wir zuvor bereits installiert haben, richtig funktionieren. Das läßt sich relativ einfach überprüfen:
ntpq -p
sollte etwas ähnliches wie dies ausgeben:
Kerberos testen
Zuletzt testen wir noch, ob Kerberos wie gewünscht funktioniert, denn ohne diesen Dienst würde der gesamte Controller niemals richtig arbeiten:
kinit administrator
Nach Eingabe des beim Provisionieren vergebenen Paßworts wird nun ein „Berechtigungsausweis“ („Ticket“) erstellt. Ob das funktioniert, überprüfen wir mit:
klist
Das Ergebnis sollte in etwa so aussehen:
Admin-Privilegien vergeben
Zwei wichtige Rechte müssen jetzt noch an die Gruppe „Domain Admins“ vergeben werden. Der Namenspräfix AD
wird dabei ggf. durch den tatsächlichen (Kurz-)Namen der Domäne ersetzt. Anschließend wird das Ergebnis kontrolliert:
net rpc rights grant 'AD\Domain Admins'\
SePrintOperatorPrivilege SeDiskOperatorPrivilege\
-Uadministrator
net rpc rights list accounts -Uadministrator
Als Paßwort dient wiederum das bei der Provisionierung erstellte. Bei Erfolg sieht das Ergebnis ungefähr so aus:
Kommentare
Macxsis (nicht überprüft)
19. Oktober 2014 - 23:22
Permalink
samba-tool: Kommando nicht gefunden
Bei mir sind alle Schritte ohne Auffälligkeiten durchgelaufen. Allerdings bekomme ich beim Einrichten die Fehlermeldung: samba-tool: Kommando nicht gefunden. Was kann ich dagegen tun?
DH
2. November 2014 - 14:29
Permalink
$PATH?
Vielleicht hast du einfach an einer Stelle vergessen, die Umgebungsvariable PATH anzupassen? Das muss an einigen Stellen in der Anleitung gemacht werden. Samba-tool hieß in Samba 3 noch anders, existiert in den Standard-Debian-Pfaden als m. E. noch nicht (was in dem Fall auch gut ist, sonst hättest du womöglich jetzt ganz andere, versionsbedingte Probleme ;)).
daragus (nicht überprüft)
28. März 2015 - 22:56
Permalink
Kommando wird mit Sudo nicht gefunden
Ich habe die Anleitung bis soeben verfolgt, nur stoße ich jetzt an ein Problem. Und zwar kommt bei mir immer command not foound. Ich weiß nicht genau warum. Wenn ich als pi user samba eingebe, kommt das mir die rechte fehlen, aber wenn ich sudo samba oder samba als sudo ausführe, kommt immer, das das kommando nicht gefunden wurde. Der Pfad wurde aber aufjedenfall hinnzugefugt, wie ich mit
$ sudo sh -c 'echo $PATH'
bereits bestätigen konnte.
Hoffe auf baldige Hilfe,
Colin
DH
5. August 2015 - 0:33
Permalink
Und mit vollem Pfad?
Also „sudo /path/to/samba“ bzw. mal als root versucht?
Nils Schiele (nicht überprüft)
27. Oktober 2014 - 14:19
Permalink
Fehlermeldung beim Provisionieren
Hallo,
ich bekomme beim Domain provisioning folgende Fehlermeldungen:
pi@pi /etc/init.d $ samba-tool domain provision
Realm [INTRANET.SCHIELE.LOCAL]: INTRANET.SCHIELE.LOCAL
Domain [INTRANET]: SCHIELE
Server Role (dc, member, standalone) [dc]: dc
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
ERROR(<type 'exceptions.OSError'>): uncaught exception - [Errno 13] Permission denied: '/usr/local/samba/tmpxRADVw'
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/__init__.py", line 175, in _run
return self.run(*args, **kwargs)
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/domain.py", line 366, in run
file = tempfile.NamedTemporaryFile(dir=os.path.abspath(os.path.dirname(lp.get("private dir"))))
File "/usr/lib/python2.7/tempfile.py", line 454, in NamedTemporaryFile
(fd, name) = _mkstemp_inner(dir, prefix, suffix, flags)
File "/usr/lib/python2.7/tempfile.py", line 235, in _mkstemp_inner
fd = _os.open(file, flags, 0600)
Was könnte die Ursache sein.
Gruss
Nils Schiele
pascal (nicht überprüft)
3. November 2014 - 7:33
Permalink
Fehlermeldung beim Provisionieren
Probier mal ein sudo vor dem Befehl.
Christoph Biegner (nicht überprüft)
10. April 2015 - 10:39
Permalink
Ich bekam den gleichen Fehler
Ich bekam den gleichen Fehler, konnte diesen Schritt mittlerweile aber erfolgreich abschliessen.
Angemeldet als Benutzer 'pi' Hatte ich keine Berechtigung, in /usr/local/samba/tmpXXXX zu schreiben. Es wird wohl wärend des provisioning dort temporär (?) eine Datei mit zufälligem Namen angelegt.
Ein vorgestelltes sudo half auch nciht weiter; ich bekam den Hinweis, "/bin/bash: samba-tool: Kommando nicht gefunden." Gleiches galt, wenn ich mit mit "sudo su" als root anmeldete.
Dies wiederum lag daran, daß die PATH-Umgebungsvariable (als Root) nicht auf die Samba (und Bind9) Binary-Pfade zeigt.
PATH="/usr/local/bind9/sbin:/usr/local/bind9/bin:$PATH"
PATH="/usr/local/samba/sbin:/usr/local/samba/bin:$PATH"
half dann weiter. Anschliessend lässt sich das Provisioning durchführen.
DH
5. August 2015 - 0:34
Permalink
Nachträglich
Danke für das Posten der Lösung!
Orhan (nicht überprüft)
3. Dezember 2014 - 21:10
Permalink
samba-tool domain provision
Hallo David,
hab es jetzt geschaft bis hierhin ohne Fehler zu kommen. leider Funktioniert das aussetzen der Domain nicht.
Ich kriege nicht raus woran es liegt :S
root@raspberrypi:/etc/init.d# samba-tool domain provision
Realm: DERNEK.TR
Domain [DERNEK]:
Server Role (dc, member, standalone) [dc]: DC
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password:
Retype password:
ERROR(<class 'samba.provision.ProvisioningError'>): Provision failed - ProvisioningError: server role (DC) should be one of "active directory domain controller", "member server", "standalone server"
File "/usr/local/samba/lib/python2.7/site-packages/samba/netcmd/domain.py", line 398, in run
use_rfc2307=use_rfc2307, skip_sysvolacl=False)
File "/usr/local/samba/lib/python2.7/site-packages/samba/provision/__init__.py", line 1912, in provision
raise ProvisioningError('server role (%s) should be one of "active directory domain controller", "member server", "standalone server"' % serverrole)
root@raspberrypi:/etc/init.d#
DH
7. Dezember 2014 - 22:59
Permalink
Oh, komisch. Kann es sein
Oh, komisch. Kann es sein dass du beim Kompilieren bei Samba ein neueres Branch erwischt hast? Irgendwie tauchen so viele Fehler auf die ich nicht hatte, das ist komisch.
Mal ganz am Rande, braucht ihr denn wirklich Bind als Backend? Ich hatte zwischendurch nämlich auch noch mit dem internen DNS experimentiert, das ging ganz gut. Ich glaube inzwischen kann man Samba 4 nämlich ganz gut über die normalen Paketmanager bekommen.
Vielleicht ist die Anleitung ja auch nach einem Jahr echt schon überholt in Teilen…
Orhan (nicht überprüft)
8. Dezember 2014 - 13:46
Permalink
nach mindestens 30x neu
nach mindestens 30x neu aufsetzen der SD Karte und jedes Mal knapp 6 stunden Kompillieren konnte ich nun alles ohne Fehler erstellen. Auch die Domain konnte ich ohne Probleme erstellen. leider bekomme ich jetzt eine Fehlermeldung wenn ich den folgenden Test durchführe "host -t SRV _ldap._tcp.DERNEK.TR. localhost; host -t SRV _kerberos._udp.DERNEK.TR. localhost"
root@raspberrypi:~# service bind9custom restart
[....] Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: timed out
waiting for pid 7433 to die
. ok
[ ok ] Starting domain name service...: bind9.
root@raspberrypi:~# service samba4 start
[ ok ] Starting Samba AD DC daemon: samba.
root@raspberrypi:~# host -t SRV _ldap._tcp.DERNEK.TR. localhost; host -t SRV _kerberos._udp.DERNEK.TR. localhost
;; connection timed out; no servers could be reached
;; connection timed out; no servers could be reached
Gruß
Orhan
orhan (nicht überprüft)
8. Dezember 2014 - 16:15
Permalink
achso.. hätte fast vergessen.
achso.. hätte fast vergessen.... :D
natürlich kann ich auf den BIND verzichten. denke das samba da ausreicht. Habe mir gerade die SD Karte neu Formatiert :)) werde mir gleich das SAMBA Paket von Sernet installieren.
Hoffe das ich es hinbekomme....(werde berichten)
Gruß
Orhan
Karl Haue (nicht überprüft)
22. Dezember 2014 - 19:03
Permalink
Bind Absturz - von Mai bis jetzt hat alles wunderbar funktionier
Hallo,
seit heute stürzt bei mir der bind andauernd ab. Starte ich den bind neu, läuft es wieder für ein paar Minuten.
Hier der Absturzeintrag vom Log:
###
Dec 22 18:53:13 raspberry01 named[7369]: samba_dlz:
Dec 22 18:53:13 raspberry01 named[7369]: samba_dlz: ldb: ltdb: tdb(/usr/local/samba/private/dns/sam.ldb.d/DC=DOMAINDNSZONES,DC=AD,DC=DAHEIM,DC=LOCAL.ldb): tdb_transaction_cancel: no transaction
Dec 22 18:53:13 raspberry01 named[7369]: samba_dlz:
Dec 22 18:53:13 raspberry01 named[7369]: samba_dlz: failed to commit a transaction for zone ad.daheim.local
Dec 22 18:53:13 raspberry01 named[7369]: sdlz closeversion on origin ad.daheim.local failed
Dec 22 18:53:13 raspberry01 named[7369]: db.c:463: ENSURE(*versionp == ((void *)0)) failed
Dec 22 18:53:13 raspberry01 named[7369]: exiting (due to assertion failure)
sdlz closeversion on origin ad.daheim.local failed
###
Ich hab keine Ahnung wo ich den Fehler suchen soll - Tipp?
Felix Schrouff (nicht überprüft)
22. Januar 2015 - 13:19
Permalink
Error bei kinit administrator
Bei mir kommt, wenn ich den kinit Befehl ausführen möchte folgender fehler:
kinit: Cannot resolve servers for KDC in realm "FELIXSCHROUFF.HOME" while getting initial credentials
beim host Befehl ist alles gut
John Ripper (nicht überprüft)
15. April 2015 - 21:45
Permalink
Hast du eine Lösung dafür
Hast du eine Lösung dafür gefunden? Ich become den selben Fehler und sehe nicht woran es liegt...
John Ripper (nicht überprüft)
16. April 2015 - 0:32
Permalink
Gelöst
Okay bei mir hat folgendes geholfen:
1) Folgenden Befehl weglassen
mv /etc/krb5.conf /usr/local/samba/private/krb5.conf.original
cp /usr/local/samba/private/krb5.conf /etc
2) Wenn o.g. Behehl schon ausgeführt, dann rückgängig machen
cp /usr/local/samba/private/krb5.conf.original /etc/krb5.conf
3) In der /etc/krb5.conf die Domain (Realm), Servername und Windows Domäne in GROSSBUCHSTABEN schreiben
Bswp AD.EXAMPLE.COM
DH
5. August 2015 - 0:30
Permalink
Spät, aber
Danke noch für die Lösung!
Fabian (nicht überprüft)
12. März 2015 - 15:00
Permalink
Samba-tool: Command not found
Hier wurde diese Frage schon einmal gestellt, aber die Antwort darauf ist wenig zufriedenstellend. Ich bin noch einmal alle Umgebungsvariablen durch gegangen, muss aber feststellen das ich alles nach Anleitung gemacht habe.
Die Eingabe "update-rc.d samba4 dafaults" wirft die folgende Meldung aus: "using dependency based sequencing".
Ich denke das Problem liegt hier. Kann es aber nicht sicher sagen. Ich würde mich sehr freuen wenn Sie dort in kürze einen Lösungsvorschlag geben könnten. Möchte nicht unbedingt umsonst über mehrerer Stunden Kompiliert haben.
Gast (nicht überprüft)
18. August 2015 - 17:56
Permalink
Danke für dieses super
Danke für dieses super Tutorial. Bei mir hat die Installation ohne Probleme funktioniert und seither läuft mein Raspberry als DC. Viel stromsparender als der alte PC.
Danke!
DH
24. August 2015 - 19:47
Permalink
Freut mich
dass die Anleitung immer noch was gut ist, sie ist ja nicht mehr ganz neu. Ich würde dir (und allen) raten, habe ich glaube ich auch irgendwo dazugeschrieben: Schön Backups machen. Auf Dauer ist so eine SD-Karte und das kleine Teil zumindest mit einer größeren Last irgendwann an seiner Grenze. Also Redundanz (was ja gerade mit AD prima geht) würde ich hier für jeden ernsthafteren Einsatz vielleicht doch empfehlen.
Danke für dein Lob, so macht das Schreiben immer etwas mehr Spaß. Und viel Spaß mit deinem AD.
ThomasD (nicht überprüft)
29. September 2015 - 15:07
Permalink
DNS Zonen Editieren?
Hallo,
mein DNS läuft und konnte auch immer mit dem Windows Remote Tool konfiguriert werden.
Jetzt steht mir das Windows nicht mehr zur Verfügung und ich finde auf dem gesamten Rpi nicht die Dateien wo die Zonen gespeichert sind. keine db.0.168.192 oder db.home.local. Ich habe mit find nach den Dateien gesucht und mit grep -r -i '0.168.192.in-addr.arpa' / alle dateien durchsucht, ich finde einfach nichts.
Kann hier jemand helfen?
Schöne Grüße
Thomas
Souljacker (nicht überprüft)
31. Dezember 2015 - 1:59
Permalink
Probleme mit KINIT...
Hallo!
Erstmal meine Respekt da in diesem Tutorial jede Menge Arbeit steckt!
Bis zu diesem Punkt lief alles wie beschrieben...
Ich habe jetzt leider folgendes Problem:
"kinit administrator" liefert folgendes -> kinit: Cannot find KDC for realm "MYLITTLEPI.LOCAL" while getting initial credentials
Der Fehler liegt aber vermutlich in der Netzwerkkonfiguration, weil in /etc/resolv.conf steht folgendes:
domain fritz.box
nameserver 192.168.178.1
Ich habe versucht das ganze zu ändern (über webmin oder SSH-Konsole), nach einem reboot ist alles weg. Ebenso verschwinden Änderungen die ich in /etc/network/interfaces mache (z.B. dns-nameserver).
Steh jetzt im BIND9/SAMBA4-Wald und seh vor lauter Bäumen nix mehr ;)
John Ripper (nicht überprüft)
1. Januar 2016 - 14:27
Permalink
1/
1/
Änderungen in der resolv.conf wird wirklich nicht nachhaltig. Die steht auch in der Datei selbst, wenn ich es richtig in Erinnerung habe.
2/
Änderungen kannst du jedoch in zweifacher Weise erreichen:
1. Paket resolvconf installieren und anpassen
2. Die Daten statisch (wie hier beschrieben zuweisen).
Ich habe es jedoch einfach anders gemacht. Mein Router=Gateway hat die 10.0.1.1 und meine DNS Server 10.0.1.2/3. Diese DNS Server lasse ich über DHCP an alle Clients und Server zuweisen. So haben die DNS Server selbst sich selbst als DNS Server. Und dies ist genau die Anforderung.
In deinem Beispiel ist der Server=Gateway 192.168.178.1 und der DNS Server vielleicht 192.168.178.2. Lasse über deine DHCP Server den DNS Server (..178.2) verteilen.
3/
Anschließend sollte deine Domain ("MYLITTLEPI.LOCAL") entsprechend aufgelöst werden und das Problem sollte dann entsprechend beseitigt sein.
Ansonsten melde dich mal, dann ist ggf. noch die /etc/krb5.conf anzupassen.
Hatte ich auch relativ viele Probleme Kerberos vernünftig zum laufen zu bringen, die auch einen Neustart und den Ausfall eines DNS übersteht.
Jörg (nicht überprüft)
16. Mai 2017 - 9:45
Permalink
Probleme mit samba-tool
Hallo auch bei mir hat alles so weit tadellos geklappt. Nur das ich jetzt auch vor dem Problem stehe und der Befehl "samba-tool domain provision " nicht ausfürbar ist da Kommando nicht gefunden. Giebt es hierzu schon eine Lösung?