Samba 4 auf dem Raspberry Pi
Worum gehts?
Der eine oder andere hat vielleicht noch ein Raspberry Pi Computer zuhause rumliegen. Mir ging es vor einiger Zeit zumindest so. Durch einen Freund bin ich auf die Idee gekommen mein Raspberry Pi an per USB an unseren Router anzuschließen. So braucht das Raspberry Pi kein weiteres Netzteil und lässt sich gut „Huckepack“ mit dem Router in einem Schränkchen oder ähnlichem verstecken.
Gesagt getan…. doch danach stellte sich mir die Frage: Was mach ich nun damit. Nun fand ich die Idee einer eigenen Windows Domäne bzw. genauer eines eigenen Active Directories im Heimnetz schon immer sehr spannend. Seit Weihnachten 2012 gibt es mit Samba 4 auch eine freie und kostenlose Lösung für solch ein System. Daher starte ich jetzt hier mal eine kleine Reihe die in unregelmäßigen Abständen den Fortschritt meiner Samba 4 Experimente dokumentiert.
Der erste Schritt ist natürlich erstmal das ganze Setup aufzubauen. Ein kleiner Hinweis vorweg: Ein Raspberry Pi ist kein Hochleistungsrechner und mache der Schritte dauern etwas.
Die Installation
Ich starte mit einem frisch installierten Raspbian Image auf einer 16 GByte SD Karte. Bei mir sind am Ende ca. 3 GByte belegt und daher würde vermutlich auch eine kleinere Karte reichen. Mit einer 16 GByte Karte hat man aber noch ausreichend Reserven für weitere Software und auch ein paar Daten.
Da ich Samba 4 direkt auf dem Raspberry Pi übersetzen möchte werden als erstes einige weitere Pakete benötigt. Die installieren wir Debain-Typisch mit apt-get:
root@rohal:~# apt-get install python-dev git-core libacl1-dev libblkid-dev libgnutls-dev build-essential libacl1-dev libattr1-dev libreadline-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev cups cups-pdf
Im nächsten Schritt wird das ~200 MB Samba 4 Git-Repository herunter geladen:
root@rohal:~/samba# git clone -b v4-0-stable git://git.samba.org/samba.git samba-v4-0-stable Cloning into 'samba-v4-0-stable'... remote: Counting objects: 1116798, done. remote: Compressing objects: 100% (253420/253420), done. remote: Total 1116798 (delta 864433), reused 1108782 (delta 857621) Receiving objects: 100% (1116798/1116798), 217.66 MiB | 1.59 MiB/s, done. Resolving deltas: 100% (864433/864433), done. Checking out files: 100% (7154/7154), done.
Nun werden die Automake-Skripte ausgeführt. Ich habe mit dazu entschlossen den Samba 4 Selbsttest mit zu erzeugen. Das hat später zu etwas Verwirrung geführt und im Allgemeinen würde ich es das nächste mal erstmal ohne Selbsttest probieren. Es schadet aber auch nicht den Selbsttest mit zu bauen. Dadurch dauert das übersetzen nur etwas länger.
root@rohal:~/samba# cd samba-v4-0-stable/ && ./configure --enable-selftest 'configure' finished successfully (15m22.921s)
Die Automake-Skripte haben also etwa 15 Minuten gebraucht. Das lässt schon erahnen, dass der nächste Schritt deutlich länger dauern wird. Es geht um das eigentliche übersetzen von Samba 4. Los gehts:
root@rohal:~/samba/samba-v4-0-stable# make [...] Waf: Leaving directory `/root/samba/samba-v4-0-stable/bin' 'build' finished successfully (4h4m30.352s)
Juhu! Das bauen hat funktioniert und „nur“ 4 Stunden gedauert. Es bietet sich meiner Meinung nach an diese Schritt vor der Arbeit oder vor dem schlafen gehen zu starten…
Wie oben bereits erwähnt habe ich auch die Selbsttest-Module mit bauen lassen. Daher wollen wir den Selbsttest nun auch starten:
root@rohal:~/samba/samba-v4-0-stable# make test WAF_MAKE=1 python ./buildtools/bin/waf test [...] [342/1557 in 6h34m32s, 18 errors] samba3.base.chkpath(s3dc) Killed make: *** [test] Fehler 137
Bei mir ist der Selbsttest offensichtlich nach 6,5 Stunden abgebrochen. Ich bin mir aber nicht sicher was letztlich das Problem gewesen ist. Da Samba generell erfolgreich übersetzt wurde habe ich es trotz Probleme im Selbsttest installiert.
root@rohal:~/samba/samba-v4-0-stable# make install WAF_MAKE=1 python ./buildtools/bin/waf install [...] Waf: Leaving directory `/root/samba/samba-v4-0-stable/bin' 'install' finished successfully (50m39.123s)
Auch wenn in diesem Schritt im Grunde nur Dateien kopiert werden dauert er fast eine weitere Stunde. Dafür geht es ab jetzt schneller weiter und der spannende Teil beginnt: Die Einrichtung bzw. das eigentliche Setup
Es beginnt damit das Active Directory und die Domäne zu provisionieren:
root@rohal:/usr/local/samba/bin# ./samba-tool domain provision --realm=weltendiskus.de --domain=WELTENDISKUS --adminpass 'g3he1m' --server-role=dc Looking up IPv4 addresses Looking up IPv6 addresses More than one IPv6 address found. Using 2a01:198:xxxx::xxxx Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=weltendiskus,DC=de Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=weltendiskus,DC=de Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: rohal NetBIOS Domain: WELTENDISKUS DNS Domain: weltendiskus.de DOMAIN SID: S-1-5-21-3758538120-3010327569-907041719
Für verschlüsselte Anmeldungen ist es nun noch notwendig die Kerberos Konfigurationsdatei an die richtige Stelle zu verschieben:
root@rohal:/usr/local/samba/bin# rm /etc/krb5.conf && mv /usr/local/samba/private/krb5.conf /etc
Dann noch die Startskripte einrichten:
root@rohal:/# chmod 755 /etc/init.d/samba4 root@rohal:/# update-rc.d samba4 defaults root@rohal:/# /etc/init.d/samba4 start
Teil des Samba 4 Paketes ist ein eigener DNS Server. Das ist notwendig, damit Windowsrechner ihren gewünschten DNS Hostname Samba 4 mitteilen können und andere Rechner diese Namen anschließend auch auflösen können.
domain weltendiskus.de search weltendiskus.de search fritz.box nameserver 192.168.10.67 nameserver 192.168.10.1
Dabei ist 192.168.10.67 das Raspberry Pi sowie 192.168.10.1 der Internet-Router. Abschließend ein kleiner Test ob die AD-internen Hostnamen von Samba 4 korrekt aufgelöst werden
$ host -t SRV _ldap._tcp.weltendiskus.de. _ldap._tcp.weltendiskus.de has SRV record 0 100 389 rohal.weltendiskus.de. $ host -t SRV _kerberos._udp.weltendiskus.de. _kerberos._udp.weltendiskus.de has SRV record 0 100 88 rohal.weltendiskus.de. $ host -t A rohal.weltendiskus.de. rohal.weltendiskus.de has address 192.168.10.67
Da Samba in /usr/local installiert wurde empfiehlt es sich abschließend noch die PATH-Variable in /etc/profile und /root/.bashrc entsprechend anzupassen.
Last but not least sollte der Raspberry Pi nun noch einmal neu gestartet werden um sicher zu stellen, dass alle Dienst bei einem Neustart wie gewünscht automatisch starten. Dann noch ein kurzer Test ob der Samba Client und Server in der korrekten Version installiert ist:
root@rohal:/home/pi# smbclient --version Version 4.0.6 root@rohal:/home/pi# samba -V Version 4.0.6
Damit ist die eigentliche Installation des Samba 4 Active Directories abgeschlossen. 🙂
Quellen
- http://wiki.samba.org/index.php/Samba_4/OS_Requirements
- http://wiki.samba.org/index.php/Build_Samba
- https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO
- http://blog.dabasinskas.net/installing-samba-4-domain-controller-on-raspberry-pi-running-archlinux-arm/
- http://justtinkering.wordpress.com/2013/01/03/activedirectory-domain-controller-with-samba4-on-raspberrypi/
- http://www.symantec.com/connect/blogs/installing-admin-tools-ad-users-computers-etc-windows-7
- http://praxis.edoceo.com/howto/samba4