前言

昨天想到在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

喝杯奶茶