Linux kernel 4.13 and SMB protocol version fun

There’s been a rather interesting change in the Linux kernel recently, which may affect you if you’re mounting network drives using SMB (the Windows native protocol, occasionally also called CIFS).

There have been several versions of the protocol – Wikipedia has a good writeup. Both servers and clients may support different versions; when accessing a shared resource, the client tells the server which protocol version it wants to use, and if the server supports that version then everyone’s happy and the access goes ahead; if the server doesn’t support that version, you get an error and no-one’s happy.

Up until kernel 4.13, the kernel’s default SMB protocol version was 1.0. So when you mount an SMB share, if you don’t explicitly specify a protocol version with the vers= mount option, with kernel 4.12 or earlier, SMB 1.0 will be used.

With kernel 4.13, the default protocol version is changed to 3.0. So now, when mounting SMB mounts that don’t explicitly specify a version, your system will request 3.0.

As I understand it, the main reason for this is security: SMB 3.0 is considerably more secure as a protocol than 1.0. Microsoft has been gradually trying to push Windows users towards later versions of the protocol over the last few releases.

Kernel 4.13 has been released as an update for Fedora 25 and Fedora 26, so users of those Fedora releases will hit this change when updating the kernel. Fedora 27 comes with kernel 4.13 out of the box.

Obviously, this comes with some compatibility consequences. If the server providing the share is running Windows 8 or later, you should be fine. However, in other cases, you may find your SMB mount suddenly fails after the kernel update. Older versions of Windows do not support SMB 3.0.

Samba added SMB 3.0 support in version 4.2, at least according to this page, so mounts provided by earlier Samba versions similarly will not work.

If your server is a NAS, it may or may not support SMB 3.0. My NAS is a Thecus N5550, so I know that for ThecusOS 5-based NASes, firmware version 2.06.02.10 added SMB 3.0 support. However, it’s not enabled by default; you have to log into the admin UI, go to Network Service, select Samba/CIFS, and set ‘SMB Max Protocol’ to 3. Note that with this update, the default SMB minimum version is set to 2, so the NAS will no longer support 1.0 – you can change the minimum version to ‘NT1’ if you have a client which cannot do 2 or 3, though.

If you know information about SMB protocol support for any other NAS brand or other common SMB server of any kind, please post a comment and I’ll add it to this post.

If you get caught out by this, the best solution is to somehow update the server end of your setup so that it supports SMB 3.0. However, if you can’t do that, you can use the vers mount option. Use the highest version that works – 2.x isn’t as good as 3.0, but better than 1.0. The available choices are documented in man mount.cifs; at present they are 1.0, 2.0, 2.1 and 3.0.

Leave a Reply

Your email address will not be published. Required fields are marked *