Out-of-the-box schafft das Western Digital My Book World Edition II aus dem Jahre 2010 nur das Protokoll Server Message Block (SMB) bzw. Common Internet File System (CIFS) in der Version SMB1. Nachdem aktuelle Windows 10 Versionen aus Sicherheitsgründen SMB1 abschalten gibt’s drei Lösungen…
- trotz allem SMB1 unter Win10 aktivieren
- einen Raspi als Samba-Proxy vorschalten
- die Samba Version am NAS soweit aktualisieren dass es das SMB-Protokoll in der Version SMB2 schafft.
Natürlich ist die Lösung hier ein Upgrade von Samba 3.0.34 auf Samba 3.6.23.
Voraussetzungen
Als Voraussetzung für das Upgrade muss am NAS sowohl ein SSH-Root-Zugang vorhanden als auch ipkg
installiert sein. Eine entsprechende Anleitung findet sich hier.
Um das Upgrade durchführen zu können erstellen wir eine SSH Verbindung zum NAS. Nachdem das Gerät etwas älter ist müssen auch bereits deaktivierte Algorithmen wieder reaktiviert werden.
ssh -l root -oKexAlgorithms=+diffie-hellman-group1-sha1 1.2.3.4
Optionen
Die aktuell installierte Samba Version finden wir mit smbstatus
heraus:
~ # smbstatus | head -n 2
Samba version 3.0.34
Via ipkg
stehen vier verschiedenene Samba Versionen bereit: 3.2.15
, 3.4.17
, 3.5.22
und 3.6.23
.
/opt/bin/ipkg update
/opt/bin/ipkg list | grep samba
samba - 3.2.15-5 - Samba suite provides file and print services to SMB/CIFS clients.
samba2 - 2.2.12-4 - Lightweight Samba suite provides file and print services to SMB/CIFS clients.
samba3-dev - 3.2.15-5 - development files for samba3
samba3-swat - 3.2.15-5 - the Samba Web Admin Tool for samba3
samba34 - 3.4.17-1 - Samba suite provides file and print services to SMB/CIFS clients. This is a newer version.
samba34-dev - 3.4.17-1 - development files for samba34
samba34-swat - 3.4.17-1 - the Samba Web Admin Tool for samba34
samba35 - 3.5.22-1 - Samba suite provides file and print services to SMB/CIFS clients. This is a newer version.
samba35-dev - 3.5.22-1 - development files for samba35
samba35-swat - 3.5.22-1 - the Samba Web Admin Tool for samba35
samba36 - 3.6.23-1 - Samba suite provides file and print services to SMB/CIFS clients. This is a newer version.
samba36-dev - 3.6.23-1 - development files for samba36
samba36-swat - 3.6.23-1 - the Samba Web Admin Tool for samba36
Samba 3.2.15-5
Der erste, konservate Schritt ist ein testweises Upgrade von 3.0 auf 3.2. Hier sollte sich möglichst wenig an zB Konfigurationsdateien ändern sodass dies ein guter Testlauf für das Upgrade ist.
Installation
~ # /opt/bin/ipkg install samba
Installing samba (3.2.15-5) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/samba_3.2.15-5_arm.ipk
package samba suggests installing cups
Installing popt (1.16-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/popt_1.16-1_arm.ipk
Installing openldap-libs (2.3.43-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/openldap-libs_2.3.43-2_arm.ipk
Installing libdb (4.2.52-3) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/libdb_4.2.52-3_arm.ipk
Installing gdbm (1.8.3-4) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/gdbm_1.8.3-4_arm.ipk
Installing cyrus-sasl-libs (2.1.23-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/cyrus-sasl-libs_2.1.23-2_arm.ipk
Installing psmisc (22.17-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/psmisc_22.17-1_arm.ipk
Configuring cyrus-sasl-libs
Configuring gdbm
Configuring libdb
Configuring openldap-libs
Configuring popt
Configuring psmisc
update-alternatives: Linking //opt/bin/killall to /opt/bin/psmisc-killall
update-alternatives: Linking //opt/bin/pidof to /opt/bin/psmisc-killall
Configuring samba
The original samba version 2 config (/etc/samba/smb.conf) is no longer
working with this version of samba.
Please create a new samba version 3 config (/opt/etc/samba/smb.conf).
After verify your smb.conf file, modify and execute /opt/etc/init.d/S08samba
to activate the samba version 3.
Successfully terminated.
Konfiguration
Wir verwenden eine Kopie der Konfiguration von der Werksinstalltion mit einer kleinen Anpassung (die realm
Einstellung gibt es nicht mehr) sowie die selbe Passwortdatei die auch vom Webinterface verwendet wird.
cp /etc/samba/smb.conf /opt/etc/samba/smb.conf
sed -i '/realm/d' /opt/etc/samba/smb.conf
ln -s /usr/private/smbpasswd /opt/etc/samba/smbpasswd
Initskript
Das werkseitige Skript zum Samba-Start wird in einer Kopie wird leicht adaptiert (Anpassung von Pfaden), das Originalskript stillgelegt. Will man auf Samba 3.0 zurückrudern müssen muss man nur das Startskript retour ändern.
mv /etc/init.d/S90smbd /etc/init.d/_S90smbd
cp /etc/init.d/_S90smbd /etc/init.d/S90smbd3
sed -i 's|CONFIG=/etc/samba/smb.conf|CONFIG=/opt/etc/samba/smb.conf|' /etc/init.d/S90smbd3
sed -i 's|nice -n -20 /usr/sbin/smbd -D|nice -n -20 /opt/sbin/smbd -D|' /etc/init.d/S90smbd3
sed -i 's|/usr/sbin/nmbd -D|/opt/sbin/nmbd -D|' /etc/init.d/S90smbd3
Samba 3.2 starten
Neustart vom Samba-Dienst; die Kontrolle im Log zeigt uns dass alles funktioniert.
~ # /etc/init.d/S90smbd3 restart
Restarting SMB services:
Shutting down SMB services: OK
Shutting down NMB services: OK
Starting SMB services: OK
Starting NMB services: OK
done.
tail -f /DataVolume/jewab/log.smbd
Windows Client
Ein Test am (älteren) Windows-Client zeigt dass die Verbindung zwar funktioniert, aber erwartungsgemäß noch SMB1 ist.
PS C:\Windows\system32> Get-SmbConnection -server 192.168.100.200 | fl
ServerName : 192.168.100.200
ShareName : Media
UserName : Wohnzimmer-PC\user
Credential : WOHNZIMMER-PC\nas
Dialect : 1.50
NumOpens : 1
Dialect | SMB-Version |
---|---|
1.50 | SMBv1 / CIFS / NT LM 0.12 |
2.02 | SMBv2 |
2.1 | SMBv2.1 |
3.0 | SMBv3.0 |
3.02 | SMBv3.0.2 |
3.11 | SMBv3.1.1 |
Samba 3.6.23-1
Laut der Samba-Dokumentation wird SMB2 ab Version 3.6 unterstützt: “Samba 3.6 added basic support for SMB2.0”. Zum Glück steht via ipkg die Version 3.6.23 bereit, die nun anstelle von 3.2 installiert wird.
Samba 3.2 stoppen und entfernen
~ # /etc/init.d/S90smbd3 stop
~ # /opt/bin/ipkg remove samba
Removing package samba from root...
Successfully terminated.
Samba 3.6 installieren
~ # /opt/bin/ipkg install samba36
Installing samba36 (3.6.23-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/samba36_3.6.23-1_arm.ipk
package samba36 suggests installing cups
Installing avahi (0.6.30-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/avahi_0.6.30-1_arm.ipk
Installing expat (2.0.1-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/expat_2.0.1-1_arm.ipk
Installing libdaemon (0.14-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/libdaemon_0.14-1_arm.ipk
Installing dbus (1.2.16-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/dbus_1.2.16-1_arm.ipk
Installing e2fsprogs (1.40.3-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs05q1armel/cross/unstable/e2fsprogs_1.40.3-1_arm.ipk
Configuring avahi
Configuring dbus
No messagebus user found, creating it... done
Configuring e2fsprogs
update-alternatives: Linking //opt/bin/chattr to /opt/bin/e2fsprogs-chattr
update-alternatives: Linking //opt/bin/lsattr to /opt/bin/e2fsprogs-lsattr
update-alternatives: Linking //opt/sbin/fsck to /opt/sbin/e2fsprogs-fsck
Configuring expat
Configuring libdaemon
Configuring samba36
The original samba version 2 config (/etc/samba/smb.conf) is no longer
working with this version of samba.
Please create a new samba version 3 config (/opt/etc/samba/smb.conf).
After verify your smb.conf file, modify and execute /opt/etc/init.d/S08samba
to activate the samba version 3.
Successfully terminated.
Konfiguration
Wir bauen auf bereits durchgeführten Änderungen für Samba 3.2 auf. In der smb.conf
Datei zwingend wir Samba, SMB2 zu verwenden. Ebenfalls wollen wir weiterhin das alte Passwort-Backend verwenden.
sed -i 's|\[global\]|[global]\n min protocol = SMB2|' /opt/etc/samba/smb.conf
sed -i 's|\[global\]|[global]\n max protocol = SMB2|' /opt/etc/samba/smb.conf
sed -i 's|\[global\]|[global]\n passdb backend = smbpasswd|' /opt/etc/samba/smb.conf
sed -i 's|\[global\]|[global]\n log level = 1|' /opt/etc/samba/smb.conf
/etc/init.d/S90smbd3 restart
Versionskontrolle
Die Kontrolle der installierten Version erfolgt wieder mit smbstatus
. Achtung: es muß auch das richtige smbstatus
von Optware aufgerufen werden, sonst erhalten wir die Samba-Version der WD-Werksinstalltion!
~ # smbstatus | head -n 2
Samba version 3.0.34
~ # /opt/bin/smbstatus | head -n 2
Ignoring unknown parameter "preallocate"
Ignoring unknown parameter "preallocate"
Ignoring unknown parameter "preallocate"
Ignoring unknown parameter "preallocate"
Samba version 3.6.23
preallocate Paramter
Samba 3.6 unterstützt den preallocate
-Parameter nicht mehr. Da Samba ungültige Paramter ignoriert (siehe oben) ist das kein Beinbruch. Wir könnten den Parameter zwar leicht aus der Konfig entwernen, jedoch würde ihn das Webinterface wieder hinschreiben. Man könnte zwar auch den PHP Sourcecode vom Webinterface editieren, aber etwas viel Aufwand dafür das es ohnehin ignoriert wird.
~ # cat /usr/private/user_smb_conf/.overall_share
[Public]
path = /DataVolume/Public
comment = Public Share
preallocate = yes
public = yes
browseable = yes
writable = yes
guest ok = yes
map read only = no
Password-Backend
Die User/Passwort-Datenbank scheint auch noch zu funktieren…
~ # pdbedit -L
WARNING: The "idmap uid" option is deprecated
WARNING: The "idmap gid" option is deprecated
WARNING: The "null passwords" option is deprecated
admin:98:administrator
nas:503:Linux User
Windows Client
Alles funtioniert: Windows Client verbindet sich zum Share und verwendet SMB2!
PS C:\Windows\system32> Get-SmbConnection -server 192.168.100.200 | fl
ServerName : 192.168.100.200
ShareName : Public
UserName : Wohnzimmer-PC\user
Credential : Wohnzimmer-PC\user
Dialect : 2.02
NumOpens : 1
Linux Client
…funktioniert auch.
$ sudo mount -t cifs -o username=nas,uid=myuser,gid=users,nosuid,nodev,vers=2.0,noforcegid,noforceuid //192.168.100.200/Public /mnt/
[sudo] password for myuser:
Password for nas@//192.168.100.200/Public: