Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1104073
  • 博文数量: 276
  • 博客积分: 8317
  • 博客等级: 少将
  • 技术积分: 2329
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-12 08:17
个人简介

http://ads.buzzcity.net/adpage.php?partnerid=40096

文章分类

全部博文(276)

文章存档

2013年(1)

2012年(38)

2011年(102)

2010年(85)

2009年(45)

2008年(5)

分类: LINUX

2010-05-17 19:10:07

问题举例:
有个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中文显示问题,不是这篇文章要讨论的问题,我会专门写文讲解。
大家也可以在网上搜索。
阅读(2739) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~