15.samba共享文件夹初探
1 什么是samba?
 samba是基于smb传输协议的数据共享软件,通常用于提供跨平台跨主机的文件共享服务。
2 主控端(服务端)安装samba
2.1 准备工作
一台安装好docker的linux主机.不知道安装可以参考官方文档
2.2 启动服务
docker run -it -p 139:139 -p 62727:445 \
            -p 137:137/udp -p 138:138/udp \
            -v /www/wwwroot/:/share/ \
            --name smb \
            -d dperson/samba -p \
            -u "example1;badpass" \
            -s "public;/share/public" \
            -s "example1;/share/example1;no;no;no;example1" 
以上是把本地目录挂载的容器中去,并基于挂载的目录上再创建共享的目录,分别创建2个目录
public和example1目录,一个是公开的,但不能写,一个是要账号密码的,并配置可以进行读写。更多的配置参数参数可以参考镜像的说明。
warning
2017 5月比特币勒索病毒事件导致445端口至今还被网络运营商品封住,这里使用62727端口来替代。
2.3 开放端口
 在linux如果你是iptables防火墙则IO策略为:
sudo iptables -I INPUT -p tcp --dport 139 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 62727 -j ACCEPT 
sudo iptables -I INPUT -p udp --dport 137 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 138 -j ACCEPT
 如果是其它的防火墙,请查阅相关的资料。
最终的效果是让外网能访问到这4个端口,测试可以是telnet工具测试tcp的端口139和62727格式为telnet <IP> <port> 能连接上则表明端口已经正常了。建议是用nmap的端口扫描工具来,格式为nmap <IP> 最终能访问的端口都会显示出来。
warning
一定要在用户机子上进行测试为准。
3 在windows下连接
 由于网民的445端口出方向被封了。需要访问的数据转发到能访问的62727端口上,流程大致为:
3.1 配置用户端端口转发
打开cmd,以管理员身份打开(如果不是则ctrl+R,然后Ctrl+Shift+Enter切换).
    netsh interface portproxy add v4tov4 listenport=445 connectaddress=远程ip connectport=62727
查看是否生效可以再输入:netsh interface portproxy show all来查询已经生效的端口转发
Microsoft Windows [Version 10.0.18362.592]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Windows\system32>netsh interface portproxy show all
Listen on ipv4:             Connect to ipv4:
Address         Port        Address         Port
--------------- ----------  --------------- ----------
*               445         120.132.11. 62727
C:\Windows\system32>
如果要删除则netsh interface portproxy delete v4tov4 listenaddress=欲删除项目的监听IP listenport=欲删除项目的监听端口
 最后Ctrl-R 然后输入\\127.0.0.1就可以访问了不用密码的公开目录,而\\127.0.0.1\example1输入下密码就能访问账号下的目录了。需要添加快捷方式则在文件管理器中配置下网络位置方便下次使用.
本文资料参考于:
端口转发内容部分: https://www.zhihu.com/question/59814912
cmd管理员部分: https://blog.csdn.net/zyw_anquan/article/details/7756499
镜像内容部分: https://hub.docker.com/r/dperson/samba
本地转发部分: https://blog.csdn.net/cxwithyxy/article/details/83864824
docker案例部分: https://blog.joefom.com/archives/164
相关资料: smbclient使用说明: https://blog.csdn.net/yexiangcsdn/article/details/82867469