Ubuntu + latest samba version, symlinks no longer work on share mounted in windows

I just apt-getted (apt-got?) the latest software for my Ubuntu 9.10 linux box, and I noticed that samba was the included in the update.

After the install, the symlinks in my home directory no longer work when mounted as a drive in my linux box. They worked literally seconds before I did the update. All my normal directories work just fine. Viewing the directory listing on the command line, all the files, dirs & links have the exact same permissions, yet this is the error I get:

Location is not available
L:\LinkDir is not accessible.
Access is denied.

I looked on the forums, and i saw this option for the smb.conf

follow symlinks = yes
wide symlinks = yes
unix extensions = no

I put those in, but they had no effect. Has anyone had this problem yet?


Solution 1:

There was a recent security issue in Samba (Feb 5 2010), a claimed zero-day exploit that exploited an insecure default configuration. According to an Ubuntu Forums post on the topic, the "wide links" option now defaults to no.

Apparently the option's name was changed since those earlier instructions you found.

Adding this to the global section of your smb.conf file should fix the issue:

follow symlinks = yes
wide links = yes
unix extensions = no

After saving smb.conf, be sure you restart Samba:

sudo /etc/init.d/samba restart

Solution 2:

This helped me too although I didn't think it would. I have two Samba shares on mu Ubuntu. In both shares I use symlinks but in one disrectory (shared) the symlinks were working but in another disrectory (also shared) the weren't.

I had no problems following the links on the linux but on the Win it wouldn't work.

I could even use two puTTy windows next to each other, one in my /data directory and one in my /data2 directory and issue the same command: ln -s /data3/Mydata.

The Mydata directory would appear in both my mapped drives on the Win box but in one case it would work but in the other I'd get an "Access denied" error.

The "unix extensions = no" did the trick but I don't know why...