samba 文件共享

Samba(SMB)是一种强大的局域网文件共享协议,Linux、Windows、Android操作系统均对其有内建支持,例如在Android操作系统中,我们可以直接用系统的文件管理器访问Samba服务器,可以用MX Player直接播放Samba上的视频;Windows操作系统中,很多软件甚至可以像操作本地磁盘一样直接操作Samba映射的“网络驱动器”。在内网搭建文件共享服务时,尤其是对安全性没有企业级要求的家庭场景,我们应该优先考虑使用Samba服务。

这篇笔记我们介绍如何在Linux操作系统下搭建和使用Samba。

Ubuntu下安装Samba服务器

执行以下命令可以安装Samba服务。

apt install samba

安装完成后,Samba的主配置文件在/etc/samba/smb.conf,对Samba服务的各项配置都需要编辑这个文件。

补充说明:如果你的Samba服务器主要面向Windows客户端访问,目前还需要安装wsdd服务(注意未来情况可能发生变化)。

apt install wsdd

这是因为早期版本的Windows操作系统基于NetbIOS这个古老的接口实现局域网内Samba服务发现,但在最新版本的Windows10和Windows11中,Windows的SMBv1由于存在诸多漏洞而被默认关闭,NetBIOS也被一起禁用了,这导致一个神奇的现象,我们能够主动将Samba挂载到文件资源管理器中,但网络邻居中却搜索不到任何Samba服务,很多人说要在控制面板中开启SMBv1和NetBIOS,这是错误的,Windows这混乱而隐晦的设计也是让人非常无语。新版本Windows中,共享服务发现使用了一个新的协议Web Service Dynamic Discovery(WS-Discovery,底层基于SOAP over UDP实现),但Linux的Samba服务没有实现该协议,因此还要额外安装一个叫wsdd的软件包。

配置共享目录

我们可以打开/etc/samba/smb.conf配置文件并观察其中的内容。它是一个INI格式文件,其中[global]字段下是全局配置,其中的配置字段大多有详细注释,我们根据需要调整即可;[homes]是一个默认开启的共享设置,它默认会共享当前系统用户的Home目录,如果不需要可将[homes]相关内容注释掉;[printers][print$]是打印机相关的配置,我们可以暂时忽略。

现在假设我们要配置服务端磁盘上/home/pi/smb目录为Samba共享的路径,我们在配置文件最后添加一个类似如下的[share]字段(这个名字可以随意起)。

[share]
comment = Raspberry SMB Storage
path = /home/pi/smb
read only = no
public = no
browseable = yes
valid users = pi
available = yes

配置项都比较容易理解,我们指定了路径和共享的权限等信息,该共享配置仅允许pi用户访问,valid users也可以指定多个,多个用户用逗号分隔,它也可以指定用户组,写法例如valid users = @smbgroup。修改完配置文件后,我们执行以下命令重启Samba服务,配置即可生效。

systemctl restart smbd

配置完成后,我们还可以创建Samba用户,这里要说明一下,Samba支持使用Linux系统用户名和密码登录,但Samba自己也有一套用户系统,这两个用户系统在Samba中是被可以同时使用的。下面命令创建Samba用户pi并设置密码。

smbpasswd -a pi

创建Samba用户后,我们可以使用pdbedit -L命令查看当前都有哪些Samba用户。

在Windows上访问Samba服务

这里以最新版本的Windows11为例进行配置,Windows11默认开启了共享服务,通常不需要额外安装任何组件了,打开网络邻居即可看到已配置的的共享文件夹。

图中,RASPBERRYPI是Samba服务所在计算机的Hostname(这里其实是一个树莓派),双击打开即可看到前面配置的共享文件夹share

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap