Skip to main content

15.samba共享文件夹初探

1 什么是samba?

samba是基于smb传输协议的数据共享软件,通常用于提供跨平台跨主机的文件共享服务。

2 主控端(服务端)安装samba

2.1 准备工作

一台安装好dockerlinux主机.不知道安装可以参考官方文档

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个目录publicexample1目录,一个是公开的,但不能写,一个是要账号密码的,并配置可以进行读写。更多的配置参数参数可以参考镜像的说明

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的端口13962727格式为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