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?
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.
Update
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.
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 bewindows-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:
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.
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:
'.'