问题举例:
有个samba服务叫incoming,incoming中有以下目录:movie,song。
其中song是个符号链接,它指向/mnt/500g。
当你挂载incoming服务后,却发现song是个失效的符号链接。
问题原因:
这是因为Linux下的符号链接是个相对路径。它在服务器上时,指向/mnt/500g,
因为服务器上确实存在/mnt/500g,所以在服务器上它是有效的。
当把incoming服务挂载到本地后,song指向的目标仍然是/mnt/500g。
但是,你的机器上并没有/mnt/500g这个目录,所有song是失效的。
即使你的机器上有/mnt/500g,也不是你想要的,你本来想通过song访问服务器上的内容,却访问到了本机上的内容。
解决方法:
我们还是从符号链接来着手,要知道符号链接、硬链接都是Unix/Linux专有的属性(至少windows/dos上没有)。
这些属性可以称作 Unix/Linux extensions。
要想使符号链接不指向本地的相对路径,我们可以把Unix/Linux这些扩展的特性禁掉,
这样在提供的samba服务中,客户端看到的服务器上的符号链接将不再是符号链接,而是一个确实指向服务器上正确目标的路径。
具体怎么做呢?有两种方法。
第一种方法是从服务器下手:
在server端,改samba配置(debian/ubuntu下是/etc/samba/smb.conf),加入:
unix extensions = no
follow symlinks = yes
然后重启samba服务。
第二种方法是在客户端做手脚:
# echo "0" > /proc/fs/cifs/LinuxExtensionsEnabled
然后重新挂载服务。
这个方法有两点需要注意:
1)需要su变成root,才能执行成功。
2)/proc/fs/cifs/LinuxExtensionsEnabled需要挂载cifs(或smbfs)后才存在。
关于samba中文显示问题,不是这篇文章要讨论的问题,我会专门写文讲解。
大家也可以在网上搜索。
阅读(2890) | 评论(0) | 转发(0) |