让Samba共享支持软链接(symlink)
前言
昨天想到在samba共享的目录下新建了一个软链接指向了另外一个目录,试一下能否通过这种方式把多个目录整合到一个共享目录下,方便windows上进行访问。这样的话,windows只需要添加一个网络文件夹就行了,不需要每个共享目录都创建一个网络文件夹的入口。
实际测试以后,在默认的samba配置下,可以在samba共享文件内创建软连接,但是在windows终端上挂载/访问这个目录是看不到目录内的软链接的。
网上查了一下,只需要简单配置就可以支持,在此做个记录。
配置
网上找到的配置教程里都说在smb.conf
文件中添加三个配置即可,如下
wide links = yes
follow symlinks = yes
unix extensions = no
直接加到global
域然后重启smbd.service
以后就行了。
测试成功以后起了好奇心,顺便查了下samba官方wiki这仨参数都是什么意思,是不是可以优化、精简。
以下就是参数释疑:
wide links
简单来讲就是【是否允许samba服务跟踪位于共享目录之外的链接】,默认是no
。讲人话就是,假设指定共享data
目录,然后data
目录下有个软连接指向了data
之外的其它目录,这是否允许,默认是no
。
很明显要实现我想要的功能,这个配置要改成yes
。
然后这个参数和unix extensions
同时启用的话会存在安全漏洞,所以要启动wide link
就必须把unix extensions
功能关闭。
然后官网wiki对这个参数定义的作用域是section
,所以按照wiki规范是应该配置在共享目录下而不是global
域。
unix extensions
这个参数是smb1 unix extensions
的同义词,也就是仅对smb1协议有效,如果你在smb.conf中设定了最低协议是smb2或者更高版本,那这个参数可以忽略。
这个参数是HP定义的用来支持unix smb1/cifs特性的参数,作用域是global
,默认是yes
。wiki中特别说明windows终端默认已经不支持这个特性(因为windows默认禁用smb1协议)
考虑到smb1协议的漏洞、我访问samba共享文件夹的设备都是windows pc、和wide links
参数冲突,所以这个参数要设定为no
。
follow sysmlink
这个参数用来设定是否允许samba支持软连接,看上去和wide link
没区别。
作用域section
,默认是启用
。
总结
通过对官方wiki的查询,了解了这三个配置参数的明确定义。所以,合理、规范、精简的配置如下:
[global]
unix extensions = no
[share folder]
wide links = yes