8

Since the 18.04 upgrade, I am not able to connect to a Samba server using the Nautilus window. I have found out that I have to specify protocol to SMB1.0 (-o vers=1.0 in console). I have tried to add the following commands:

max protocol = SMB1
client max protocol = SMB1

to /etc/samba/smb.conf but it did not help, still prints Function not implemented.

Any ideas how to do this?

1
  • I had the same problem in reverse: had to specify higher SMB levels for my fstab shares. You have to set it on the client side somewhere, and make sure the server can take that low of a level. May 18, 2018 at 22:44

2 Answers 2

12

Disclaimer

The SMBv1 protocol is from the 1983, it is unsecure and thus disabled for a good reason. The SMBv2 protocol has been available since 2006.

Problem Description

I arrived at this question trying to find a solution for the following two problems:

  1. I have an HP printer that can only use the legacy SMBv1 protocol (HP OfficeJet Pro 8620). So my printer refused to connect to the network share and the scan to network feature stopped working.
  2. I tried to use Nautilus to browse the network shares on my own Ubuntu system. And I was getting an error with the message Unable to access location Failed to retrieve share list from server: Invalid Argument:

    enter image description here

Solution

After several attempts with different values in the /etc/samba/smb.conf file I was finally able to resolve these problems using these two values:

client min protocol = NT1
server min protocol = NT1

I also found posts that suggested to add this third parameter:

ntlm auth = ntlmv1-permitted

However, on my system this was not necessary.

Explanation

As I understand it, the client min protocol option controls how your system communicates with other SMB servers, changing this option could be useful if your Ubuntu system works as a client and you want to use SMBv1 to access a server. By default (with Samba 4.11) your local Samba installation is configured to require SMBv2 or higher connections.

On the other hand, if your Ubuntu system acts as the server that requires SMBv2 or higher and you have a remote client (such as a printer) that can only understand the legacy SMBv1 protocol, then it seems that changing the client min protocol has no effect. Instead you need to change the server min protocol. This way the client can negotiate SMBv1 with the Samba daemon running on your Ubuntu system.

Side note, you can also pass the client min protocol option to tools such as smbclient, for example:

smbclient -L //<hostname>/<folder> --option='client min protocol=NT1'

Can be used to set the client protocol to SMBv1. This was useful to test the effect of changes in the smb.conf file.

I tried this on Ubuntu 20.04 which comes with samba version 4.11. I have not tested this solution on older Ubuntu distributions.

3
  • 2
    The including of the server min protocol and the client fixed this for me. I thought I was going mad as I had all the same issues but just the client version wasn't changing anything. May 16, 2020 at 15:02
  • 2
    THIS is the correct answer. Thank you!! This especially works for connecting Ubuntu to an old Windows XP machine. Took me 8 hours until I found your solution. Thank you!
    – dsolaris
    Sep 17, 2020 at 19:21
  • Some answers deserve 2 ups! Fixed Nautilus invalid Argument and share folder with my HP 8600 AIO too. Jan 5, 2021 at 1:43
2

NOTE: This answer relates to version 4.7.6 of samba and for a unique circumstance. Current versions of Samba work differently and setting client max to NT1 would make the max less than the min. To enable SMB1 ( NT1 ) on newer versions of Samba - like the one in Ubuntu 20.04 - use the answer provided by lanoxx below

client max protocol = SMB1

In an attempt to confuse as many people as possible SMB1 in samba is called NT1. So change your line to:

client max protocol = NT1

And don't add the max protocol = SMB1 line at all. If you set up a server on your 18.04 box it will negotiate the right level to use with its clients and by default the upper limit is SMB3. Has been for years.

3
  • This answer may work but it is not correct since it will set the client to the maximum level of NT1 which will prevent the client from negotiating SMBv2 or above! The correct fix is in the answer by lanoxx using client min protocol = NT1
    – Cas
    Mar 29, 2021 at 11:50
  • 1
    The original question - which I will admit is odd since he wants to prevent newer smb dialects - relates to version 4.7.6 of samba. The client and server negotiate the correct dialect to use between a client min value and a client max value. In V4.7.6 of samba the client min was already set to NT1 ( it's actually set to "core" which predates NT1.) The max level is set to SMB3. All of this can be verified by running man smb.conf - on a system running V4.7.6 of samba. In subsequent versions of samba the min was set to SMB2.02 so if one wanted to use SMB1 the min would have to be set to NT1.
    – Morbius1
    Mar 30, 2021 at 14:21
  • Since this is causing confusion to some folks I added a disclaimer to my answer noting that this relates to a version of samba unique to Ubuntu 18.04.
    – Morbius1
    Mar 30, 2021 at 14:37

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .