Docker配置Samba文件共享服务

在windows网络环境中,主机之间进行文件和打印机共享是通过微软公司自己的SMB/CIFS网络协议实现的。SMB(Server Message Block,服务消息块)和CIFS(Common Internet File System,通用互联网文件系统)协议是微软的私有协议,在Samba项目出现之前,并不能直接与Linux/UNIX系统进行通信。
Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署Windows、Linux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。

选择高下载量的镜像拉取 docker pull dperson/samba
关闭必要端口防火墙,执行下面命令

1
2
3
4
5
sudo iptables -I INPUT -p tcp --dport 139 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 445 -j ACCEPT

sudo iptables -I INPUT -p udp --dport 137 -j ACCEPT
sudo iptables -I INPUT -p udp --dport 138 -j ACCEPT

运行执行以下命令后,在window本机使用window+R调出运行窗口,输入 linux主机的IP回车,比如 \\192.168.2.156即可看到分享的xugz_tp5文件目录。选中目录右键选择映射网络驱动器选择喜欢的盘,即可在计算机中找到。如此可实现先共享文件夹到本地盘。

1
2
3
4
5
6
7
8
docker run -it -p 139:139 -p 445:445  --name smb -d --rm  \
-v /home/xugz/tp5/web:/mount \
dperson/samba \
-u "xugz;123" \
-s "xugz_tp5;/mount/;yes;no;yes;all;all;all" \
-w "WORKGROUP" \
-g "force user= xugz" \
-g "guest account= xugz"

Samba在docker镜像地址中介绍了很多参数选项,简单记录上条命令用到的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-u "<username;password>[;ID;group;GID]"  
设置用户及密码
-s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]"
配置一个共享。其中<name;/path>为必须参数
<name> 分享名称
<path> 要分享的路径
[browsable] 是否可浏览 参数值为:'yes' or 'no'
[readonly] 是否只读 参数值为:'yes' or 'no'
[guest] 游客模式 参数值为:'yes' or 'no'
[users] 用户列表 参数值为:'all' or 允许的用户秒表,多用户使用','分割
[admins] 系统用户 参数值为:'none' or 系统用户列表
[writelist] 可以写入RO共享的用户列表
[comment] 分享描述
-w "<workgroup>" 配置要使用的工作组 比如要和windows共享,这里的工作组路径在 控制面板>系统和安全>系统>工作组设置里面。(此电脑右键选择管理以快速打开)
-g "<parameter>" 配置全局变量 相当于修改配置文件 smb.conf
格式参考: -g "log level = 2"
上行命令中我们使用用户xugz挂载程序文件夹到mount文件夹,所以mount目录下文件的所有者为xugz。当我们在外部访问分享文件夹此时新建文件,他的所属者默认为smbuser(我们可以通过 docker run -it dperson/samba sh 进入命令行查看 /etc/samba/smb.conf)配置force user指定用户以解决用户
map to guest 匿名访问且无密码 guest account 匿名用户映射到指定账户

本文标题:Docker配置Samba文件共享服务

文章作者:xugz

发布时间:2019年12月03日 - 17:41

最后更新:2021年09月11日 - 16:17

原始链接:https://xlline.github.io/2019/12/03/Docker-samba/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。