I have set a shared directory on my Windows machine, and given full control permissions to username@workgroup.

When I try to connect to the Windows machine with Linux using smbclient, I get the error NT_STATUS_DUPLICATE_NAME. Here is the transcript:

$ smbclient -U username -W workgroup -L //windows-machine
Enter username's password: 
Domain=[workgroup] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
tree connect failed: NT_STATUS_DUPLICATE_NAME

If I intentionally enter the wrong username, password or workgroup, I get a different error: NT_STATUS_LOGON_FAILURE. So it seems like I'm getting the other information right.

I put an entry in /etc/hosts that points windows-machine to its IP address. The NetBIOS name of the windows machine is something different.

Does anyone know what this error means?


The NetBIOS name of the windows machine is something different

That's your problem. It's easily fixed by a registry hack on the Windows machine. See http://support.microsoft.com/kb/281308 for the details.


The original support article linked above has disappeared (thanks Microsoft). The new article is SMB file server share access is unsuccessful through DNS CNAME alias.

Joril also points out that a server can have multiple NetBIOS names. This is done by editing the registry key:


and adding the extra names.

  • 1
    I wonder why this isn't just fixed in a patch. – Neil Jun 2 '09 at 18:36
  • It's not a bug, it's deliberately designed that way. Possibly for security, though I'm not sure why precisely. I suppose it stops you accidentally connecting to the wrong server if you have rogue entries in the hosts file or duff DNS. Personally I put the registry hack on all of my servers. – John Rennie Jun 3 '09 at 7:18
  • link looks dead (404). Anyway the key should be HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\DisableStrictNameChecking – Joril Jun 21 at 7:01
  • ...or better yet, OptionalNames – Joril Jun 21 at 7:11

You're probably getting that error because the Windows machine doesn't understand itself to be identified as what you're connecting to it as. (Using a wrong auth information changes the error because this issue doesn't crop up until later in the connection process.)

Try connecting to it as its IP number, not windows-machine. If that works, it confirms that the name thing is what's going on, and you can resolve it either by making the PDC understand itself to be windows-machine or by just using the IP number.


You should use the "-m" flag to specify the max protocol version you'll be using. By default it's "NT1", here from the smbclient's man page:

-m|--max-protocol protocol
    This allows the user to select the highest SMB protocol level that
    smbclient will use to connect to the server. By default this is set
    to NT1, which is the highest available SMB1 protocol. To connect
    using SMB2 or SMB3 protocol, use the strings SMB2 or SMB3
    respectively. Note that to connect to a Windows 2012 server with
    encrypted transport selecting a max-protocol of SMB3 is required.

I suspect the "NT1" version to rely on netbios things, unlike SMB2 and next.

So try again with "-m SMB3" or "-m SMB2", you also benefit a lot in performance as well.


you can use the -I option and provide the ip address.

smbclient -U username -W workgroup -L //windows-machine  -I <machine-ipaddr>

You can't use either the name of the machine in /etc/hosts, nor probably the name from the DNS server.

You must use either the machine's IP address or the NetBIOS name of the machine specified in Windows.

To find the NetBIOS name in Windows XP:

  1. Right click on "My Computer"
  2. Click "Properties"
  3. Click the "Computer Name" tab
  4. Read the "Full computer name" field up to the first period '.'

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.