Skip to content

Samba共享工具

通过docker安装samba

使用的是 dperson/samba 镜像

创建docker容器

bash
docker run -d \
  --name my-samba \
  -p 139:139 -p 445:445 \
  -v /root/samba/data:/share \
  dperson/samba:latest \
  -s "public;/share;yes;no;yes;all"

参数说明

使用 dperson/samba:latest镜像时,不需要手动编辑 smb.conf文件。该镜像的设计理念是通过 Docker 启动命令的参数来动态生成配置,这比手动挂载配置文件更灵活且不易出错。 以下是配置共享目录的两种核心方法:

使用 -s参数(推荐)

这是该镜像最核心的功能。你可以在 docker run命令中直接通过 -s参数定义共享,它会自动写入 smb.conf。 参数格式: -s "共享名称;共享路径;[是否可浏览;是否只读;是否允许访客;允许用户列表;管理员列表;可写列表;注释]" 示例:

bash
docker run -d \
  --name my-samba \
  -p 139:139 -p 445:445 \
  -v /host/data:/share \  # 挂载宿主机目录
  dperson/samba:latest \
  -s "public;/share;yes;no;yes;all" \
  -s "private;/private;no;no;no;user1,user2"

参数解释:

  • public:共享名,在网络上显示为 \IP\public。
  • /share:容器内的路径(必须与 -v挂载的路径一致)。
  • yes:允许浏览。
  • no:非只读(即可写)。
  • yes:允许访客(无需密码)。
  • all:允许所有用户访问。

重要说明

  1. 挂载的目录必须要有访问权限, 在上面的 public 示例中,/share 目录必须有读写权限。否则,Samba 将无法创建新文件或文件夹,必须要将 /host/data目录的权限修改为777,对于访客模式,必须要将 /host/data目录的权限修改为777,samba实际访问的用户是 nobody,所以需要将目录的权限修改为777,否则会出现权限不足的问题。 解决的方法:
bash
chmod 777 /host/data

或是将 /host/data 目录的拥有者修改为 nobody:nogroup

bash
chown nobody:nogroup /host/data