使用samba实现共享文档

367 阅读2分钟

“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 14 天,点击查看活动详情

引言

  • 场景:由于公司升级安全系统后,想访问服务器都需要使用跳板机再访问代理服务器,但是有时候第三方软件比如xftp设置代理模式失效,rz和sz又限制文件大小(4G),所以我意外知道了samba模块,可以完成我需要的功能
  • 以下为在docker容器中操作的步骤

samba原理介绍

结构图

  • 上图是我们搭建samba服务的大体框架,在samba服务中可以配置用户的访问权限。用户user1 和user2 访问自己的网络文件夹。其中samba服务需要使用系统端口139和445,139端口主要是SMB运行NBT(NetBIOS over TCP/IP)上使用,445是win2000后SMB直接在tcp/ip上使用的端口。所以没有特殊的NBT层,可以只使用445端口。

使用docker操作

# docker hub
# https://registry.hub.docker.com/r/dperson/samba

关于官方配置介绍

  • 具体看原文参考链接
  • 我们只需要整理一下拿到我们需要用的参数即可
    • docker中常见的启动参数就不介绍了,主要是看samba启动时配置的 -p -u 和 -s。如果需要进行权限管理,那么就需要加上-p,否则默认是全公开的访问。那么-u和-s就是对用户以及共享文件的管理参数设置了。

权限设置

  • -u 新增用户 user1 user2
  • -s 配置文件夹和访问权限
  • 例如:

使用docker创建

sudo docker run -it -p 139:139 -p 445:445 \
            -v /path/to/directory:/share \
            -d dperson/samba -p \
            -u "user1;badpass" \
            -u "user2;badpass" \
            -s "public;/share/public" \
            -s "share_1_2;/share/dir_1_2;yes;no;no;user1,user2;admin;admin;user1与user2专用" \
            -s "share1;/share/dir1;yes;no;no;user1;admin;admin;user1专用" \
            -s "share2;/share/dir2;no;no;no;user2;admin;admin;user2专用"
  • 原作者还给出来另一种配置yml文件的方式,具体看参考资料

如何使用(以个人为例)

结尾

  • 本文仅使用简单的文件传输功能,更多功能以及samba介绍请见参考资料
  • 使用容器建立samba需要掌握docker容器参数,以后本人也会整理一篇关于dockers容器常见操作的文章

参考资料

主要参考资料 samba详细介绍