Samba4
Auch für die Samba-Installation sind einige Abhängigkeiten aufzulösen. So benötigen wir Python, womit Samba entwickelt wird, und für die späteren Druckdienste installieren wir cups gleich mit:
apt-get -y install ntp build-essential libacl1-dev python-dev\
libldap2-dev pkg-config gdb libgnutls-dev libblkid-dev\
libreadline-dev libattr1-dev python-dnspython libpopt-dev\
libbsd-dev attr docbook-xsl libcups2-dev krb5-user git\
cups
Ebenfalls installiert wird damit für Testzwecke der Kerberos-Client. Daher werden wir nach dem Default Realm gefragt, das ist der FQDN unserer AD-Domäne, und nach dem Default Server. Das ist natürlich der Pi.
Quellcode herunterladen und Samba installieren
Jetzt klonen wir das offizielle Git-Repository mit den Samba-Quellen. Gegenstand dieser Anleitung ist die Version 4.1.0-stable, die wir hiermit auschecken:
git clone git://git.samba.org/samba.git /usr/src/samba4/
cd /usr/src/samba4
git checkout tags/samba-4.1.0
Das Repository ist mit über 200 MByte nicht gerade klein, daher kann dieser Vorgang einige Minuten dauern.
Konfiguration und Installation
Das Kompilieren von Samba dauert noch länger als bei Bind. Wer schlafen gehen will, hilft sich ggf. wieder mit nohup. Alle anderen nehmen:
./configure --enable-debug
make
make install
Während des Kompilierens werden unzählige Warnungen ausgeworfen, die wir besser ignorieren (solange es sich nicht um wirkliche Fehler handelt). Die erfolgreiche Installation signalisiert eine Ausgabe wie diese:
Pfad-Umgebungsvariable anpassen
Auch der Samba-Pfad muß in /etc/profile
nun noch ergänzt werden:
cp /etc/profile /etc/profile.bak.2
sed 's#^\(export PATH\)$#PATH="/usr/local/samba/sbin:/usr/local/samba/bin:$PATH"\n\1#'\
/etc/profile > /tmp/profile.tmp
mv -f /tmp/profile.tmp /etc/profile
Apparmor anpassen
Damit Bind auch auf die Samba-Erweiterungen zugreifen kann, müssen wir in /etc/apparmor.d/usr.local.bind9.sbin.named
noch ein paar Zeilen vor der letzten schließenden Klammer einfügen:
-
/usr/local/bind9/sbin/named {
-
-
# ...
-
# Andere, bereits existierende Einträge
-
# ...
-
-
/usr/local/samba/private/** rkw,
-
/usr/local/samba/private/dns/** rkw,
-
/usr/local/samba/lib/bind9/** rm,
-
/usr/local/samba/lib/gensec/** rm,
-
/usr/local/samba/lib/ldb/** rm,
-
}
Start-/Stop-Skript
Daß auch Samba automatisch gestartet wird, stellt ein ein modifiziertes Debian-Skript für Samba 3 sicher, das in der Datei /etc/init.d/samba4
abgelegt wird:
-
#!/bin/sh
-
-
### BEGIN INIT INFO
-
# Provides: samba-ad-dc
-
# Required-Start: $network $local_fs $remote_fs
-
# Required-Stop: $network $local_fs $remote_fs
-
# Default-Start: 2 3 4 5
-
# Default-Stop: 0 1 6
-
# Short-Description: start Samba daemons for the AD DC
-
### END INIT INFO
-
-
#
-
# Start/stops the Samba daemon (samba).
-
# Adapted from the Samba 3 packages.
-
#
-
-
SAMBAROOT="/usr/local/samba"
-
PIDDIR="${SAMBAROOT}/var/run"
-
SAMBAPID="${PIDDIR}/samba.pid"
-
SAMBACMD="${SAMBAROOT}/sbin/samba"
-
SAMBACONF="${SAMBAROOT}/etc/smb.conf"
-
SAMBATOOL="${SAMBAROOT}/bin/samba-tool"
-
-
# clear conflicting settings from the environment
-
unset TMPDIR
-
-
# See if the daemon and the config file are there
-
test -x $SAMBACMD -a -r $SAMBACONF || exit 0
-
-
. /lib/lsb/init-functions
-
-
case "$1" in
-
start)
-
SERVER_ROLE=`$SAMBATOOL testparm --parameter-name="server role" 2>/dev/null | tail -1`
-
if [ "$SERVER_ROLE" != "active directory domain controller" ]; then
-
exit 0
-
fi
-
-
if init_is_upstart; then
-
exit 1
-
fi
-
-
# CVE-2013-4475
-
KEYFILE=/var/lib/samba/private/tls/key.pem
-
if [ -e $KEYFILE ]
-
then
-
KEYPERMS=`stat -c %a $KEYFILE`
-
if [ "$KEYPERMS" != "600" ]
-
then
-
echo "wrong permission on $KEYFILE, must be 600"
-
echo "samba will not start (CVE-2013-4475)"
-
echo "Removing all tls .pem files will cause an auto-regeneration with the correct permissions."
-
exit 1
-
fi
-
fi
-
-
log_daemon_msg "Starting Samba AD DC daemon" "samba"
-
# Make sure we have our PIDDIR, even if it's on a tmpfs
-
install -o root -g root -m 755 -d $PIDDIR
-
-
if ! start-stop-daemon --start --quiet --oknodo --pidfile $SAMBAPID --exec $SAMBACMD -- -D; then
-
log_end_msg 1
-
exit 1
-
fi
-
-
log_end_msg 0
-
;;
-
stop)
-
if init_is_upstart; then
-
exit 0
-
fi
-
log_daemon_msg "Stopping Samba AD DC daemon" "samba"
-
-
start-stop-daemon --stop --pidfile $SAMBAPID --exec $SAMBACMD
-
# Wait a little and remove stale PID file
-
sleep 1
-
if [ -f $SAMBAPID ] && ! ps h `cat $SAMBAPID` > /dev/null
-
then
-
# Stale PID file (samba was succesfully stopped),
-
# remove it (should be removed by samba itself IMHO.)
-
rm -f $SAMBAPID
-
fi
-
-
log_end_msg 0
-
-
;;
-
restart|force-reload)
-
if init_is_upstart; then
-
exit 1
-
fi
-
$0 stop
-
sleep 1
-
$0 start
-
;;
-
status)
-
status_of_proc -p $SAMBAPID $SAMBACMD samba
-
exit $?
-
;;
-
*)
-
path=$(cd $(dirname "$0"); pwd)
-
cmd=$(basename "$0")
-
echo "Usage: ${path}/${cmd} {start|stop|restart|force-reload|status}"
-
exit 1
-
;;
-
esac
-
-
exit 0
Damit dieses Skript beim Systemstart ausgeführt wird, müssen seine Zugriffrechte angepaßt und das Skript registriert werden:
cd /etc/init.d
chmod a+x samba4
update-rc.d samba4 defaults
Webmin anpassen
Das Samba-Webmin-Modul basiert immer noch auf Samba 3, genügt aber für unsere Zwecke. Auch hier muß unter Server > Samba - SMB/CIFS-Fileserver (eventuell auch Unbenutzte Module) die Modulkonfiguration angepaßt werden:
Auch hier das Speichern und ggf. das Neuladen der Seite nicht vergessen. Daß das Modul eine fehlende Datei smb.conf
meldet, ist erst mal egal.
Zum Abschluß wird noch einmal neu gestartet.
Kommentare
Carsten (nicht überprüft)
20. November 2015 - 19:33
Permalink
Fehler nach apt-get -y install
Hallo,
habe mich bis hierhin durchgearbeitet, aber gleich nach dem auf dieser Seite ganz oben angegebenen Befehl:
"apt-get -y install ntp build-essential libacl1-dev python-dev\
libldap2-dev pkg-config gdb libgnutls-dev libblkid-dev\
libreadline-dev libattr1-dev python-dnspython libpopt-dev\
libbsd-dev attr docbook-xsl libcups2-dev krb5-user git\
cups"
bekomme ich die Fehlermeldung: "E: Package 'libgnutls-dev' has no installation candidate" und es geht nicht mehr weiter.
Ich komme also gar nicht mehr zu den Abfragen des Kerberos-Clients.
Was mache ich falsch bzw. was muss ich ändern?
Gruß
Carsten
Marvin (nicht überprüft)
28. November 2015 - 7:35
Permalink
Fix
Hallo Carsten,
seit Version "Jessie" wurde "libgnutls-dev" durch " libgnutls28-dev" tausche einfach die Pakete aus und du wirst glücklich werden ;-)
Martin (nicht überprüft)
9. Dezember 2015 - 9:01
Permalink
libgnutls-dev
Ich hatte eben den gleichen Fehler.
Für alle nachfolgenden: das package "libgnutls-dev" gibt es scheinbar nicht mehr. es wurde durch "libgnutls28-dev" ersetzt. einfach im befehl die 28 einfügen, dann klappts :)
Hamed (nicht überprüft)
15. Januar 2017 - 11:20
Permalink
smb.conf
Hallo,
ich habe Samb4 nach Anleitung installiert. Die Datei smb.conf ist im Verzeichnis /usr/local/samba/etc nicht zu finden.
Was könnt passiert sein? Habe ich bei der Installation was übersehen?
Hamed (nicht überprüft)
15. Januar 2017 - 11:22
Permalink
smb.conf
Hallo,
ich habe Samb4 nach dieser Anleitung installiert. Die Datei smb.conf ist im Verzeichnis /usr/local/samba/etc nicht zu finden.
Was könnte passiert sein? Habe ich bei der Installation was übersehen?
Dennis (nicht überprüft)
13. März 2017 - 22:57
Permalink
Abbruch von Samba Installation
Während ich die Eingabe zu den Fenster Configuring Kerberos Authentication machen wollte, ist mein Raspberry abgeschmiert. Also hab ich die Befehle erneut ausgeführt, allerdings bekomme ich die Fenster jetzt nicht mehr. Gibt es eine Möglichkeit die Einträge trotzdem zu machen?