Thursday, May 26, 2011

Samba NT_STATUS_INVALID_PARAMETER listing *

I was trying to share a FAT32 external HDD via SAMBA across my home network and ran into a very strange problem and a very hacky "solution".

I was constantly receiving the following message from smbclient when trying to do an 'ls':


$ smbclient //192.168.0.3/network
Enter ash's password:
Anonymous login successful
Domain=[BSDHOME] OS=[Unix] Server=[Samba 3.4.9]
smb: \> ls
NT_STATUS_INVALID_HANDLE listing \*

59601 blocks of size 33553920. 39165 blocks available


After a few hours googling I discovered a few other people have the exact same problem on FreeBSD. I didn't see references to this happening on Linux or OS X, so I assume it's FreeBSD specific?

The samba log file shows the following:

[2011/05/26 10:14:55, 3] smbd/vfs.c:865(check_reduced_name)
reduce_name [*] [/mnt/network]
[2011/05/26 10:14:55, 1] smbd/vfs.c:932(check_reduced_name)
reduce_name: couldn't get realpath for *

I tried changing a few smb settings - forcing users, groups, public etc. with no avail. So, my hacky solution to this problem is creating a symlink, linking the FAT32 mountpoint to UFS volume - instead of trying to share a FAT32 mountpoint directly. I realise this isn't an ideal situation, but it's ok for now - I have the system doing more-or-less what I want.

There are a few changes that needed to be made to smb.conf:

follow symlinks=yes
wide links = yes
unix extensions = No
This is to make sure the symlink will be followed and that it can be followed outside the current volume.


3 comments:

alex said...

Thanks a lot!

I've just face the same problem, and wasn't able to find any solution till read you post.

BTW, hopefully it would be useful for you: after little investigation a symlink creation appears to be unnecessary.

Indeed, when wide links are turned on, check_reduced_name() function isn't called from the check_name() function. So,

wide links = yes
unix extensions = no

is enough for samba access to the fat drive.

Unknown said...

For all the people who are still having this problem, like me now, this is how I solved it.

I was trying to connect with a Windows 10 pc, but kept gettings this error. I was able to solve it by telling the Windows 10 PC it was not on a public network, but on a home network.

Anonymous said...

i find it for long time,thank you very much.