SMB,Server Message Block,译作服务(器)消息块,是 IBM 于 1983 年发布的一种文件共享协议,幼年得到英特尔和微软的照料,最终在微软的培养下成长为当今网络文件共享协议两极之一的存在。另一极是 Sun 公司 1984 年发布的 NFS,之后会介绍。

SMB 只是系统之间通信的一种方式(协议),并不是什么特殊的软件。它被设计成为允许计算机通过本地局域网(LAN)在远程主机上读写文件。

p.s.远程主机上通过 SMB 协议开放访问的目录称为「共享文件夹」。

Samba 也是对 SMB 协议的一种实现,它是一组不同功能程序组成的应用集合,可以让 Linux 服务器实现文件服务器、身份授权和认证、名称解析和打印服务等功能,能够允许 Windows 客户主机访问 Linux 服务器上的目录、打印机和文件。

最重要的是,Samba 可以将 Linux 服务器构建成一个域控制器,这样一来,我们可以直接使用 Windows 域中的用户凭据,免去了手动再在 Linux 服务器上重新创建的麻烦。

SMB1 有太多缺点,除却在 2017 年因为 WannaCry 病毒而再次暴露出的巨大安全漏洞外,本身特性就注定它会耗费巨大的网络资源以及在远距通信场景下极差的性能。

随着互联网产业的快速发展,SMB1 堪忧的安全性和愈发落后时代的性能使得微软不得不对其进行大刀阔斧的修订,并在 2007 年发布了 SMB2.0。

现在 SMB2.x 和 SMB3.x 才是 Windows 系统环境中实际使用的标准,其众多的特性基本都是围绕着增加安全性和提高性能这两个方面来设计的。

如今 Windows 10/11 已默认禁用 SMB1.0/CIFS,运行 OptionalFeatures 命令查询:
Win+R 组合快捷键打开运行窗口
本文所载的 SMB 安全设置,适用于 10/11,但鉴于 Windows 10 早期版本并未默认禁用,所以还是有必要查看一下其是否是已禁用状态:
启用或关闭 Windows 功能
已禁用状态是指「SMB 1.0/CIFS 文件共享支持」选项不被勾选。
共享设置

SMB 安全是一个可以大聊特聊的话题,不过对于大多数人来说,都没必要去了解其深层次的安全运维设置,所以这里所载是在工作或家庭网络中安全地使用 SMB 共享文件。

那么如何进行这个所谓的安全共享设置呢,分为以下四步:

① 创建一个专用的共享帐户,授予其合理的可操作权限;

② 针对网络安全和系统安全方面进行一些必要的设置;

③ 创建一个专用共享的目录,并只授权给专用帐户;

④ 在手机端及其他电脑上进行设置,以快速访问。

(1) 创建一个专用于网络共享的帐户

运行 compmgmt.msc 命令,打开计算机管理(此处也可运行 lusrmgr.msc 命令):
计算机管理
① 双击本地用户和组;

② 单击用户:
本地用户和组
③ 在右边空白处右键打开选项菜单,单击「新用户」,以创建新帐户:

A.填入共享帐户相关信息:用户名(U)和描述(D);

B.先反勾选「用户下次登录时须更改密码(M)」;

C.再勾选「用户不能更改密码(S)」和「密码永不过期(W)」;

D.最后检查确认下填入的信息后,单击「创建」:
创建共享账户

(2) 授予专用共享帐户对操作系统合理的可操作权限

运行 secpol.msc 命令,打开本地安全策略:
本地安全策略
① 双击本地策略;

② 双击用户权限分配;

③ 授予共享帐户「从网络访问此计算机」的权限:
授予共享帐户「从网络访问此计算机」的权限

④ 双击「从网络访问此计算机」后,像下面这样添加和删除帐户:

A.先单击「添加用户或组」,添加帐户 Share;

B.再删除 Everyone 和 Users:
使 Share 帐户能够从网络访问此计算机

⑤ 限制共享帐户登录到本地计算机上:

A.「拒绝本地登录」

B.「拒绝通过远程桌面服务登录」
限制共享帐户登录到本地计算机

(3) 在网络安全和系统安全方面进行一些必要设置

运行 gpedit.msc 命令,打开本地组策略编辑器:
本地组策略编辑器
① 禁用「启用不安全的来宾登录」

A. 计算机配置

B. 管理模块

C. 网络

D. Lanman 工作站

E. 双击「启用不安全的来宾登录」

F. 单击「已禁用」,确定
禁用「启用不安全的来宾登录」

② 安全选项设置

A. 计算机配置

B. Windows 设置

C. 安全设置

D. 本地策略

E. 安全选项

- (禁用) Microsoft 网络服务器:对通信进行数字签名(如果客户端允许)

- (禁用) Microsoft 网络服务器:对通信进行数字签名(始终)

- (启用) Microsoft 网络客户端:对通信进行数字签名(如果服务器允许)

- (禁用) Microsoft 网络客户端:对通信进行数字签名(始终)

- (禁用) 设备:防止用户安装打印机驱动程序

- 网络访问:本地帐户的共享和安全模型

  (经典 - 对本地用户进行身份验证,不改变其本来身份)

(4) 开启“有保护的”网络共享

运行 control /name Microsoft.NetworkAndSharingCenter 命令,打开网络和共享中心:
网络和共享中心

单击「更改高级共享设置」:

① 关闭专用网络和公用网络上的「网络发现」;

② 开启专用网络和公用网络上的「文件和打印机共享」;

③ 开启所有网络上的「密码保护的共享」:
高级共享设置

(5) 创建专用于共享的目录
专用于共享的目录 SMBshare

右击目录名称,在选项菜单中选择「属性」,进去后:

① 单击共享,选择要与其共享的帐户;

② 单击高级共享:
SMBshare 目录属性

③ 在「高级共享」中单击「权限」;

④ 添加共享帐户 Share,并勾选「完全控制」;

⑤ 删除 Everyone:
添加共享帐户

⑥ 最后确定,确定。

(6) 获取本机 IPv4 地址

① 运行 cmd 命令,打开命令行窗口;

② 执行 ipconfig 命令,找到「无线局域网适配器 WLAN」一栏;

③ 再找到 IPv4 地址一栏,其后就是建立连接必需的 IPv4 地址。

手机端访问设置

此处基于安卓平台,使用 ES 文件浏览器作为桥梁实现手机和电脑间的文件共享。

① 下载 ES 文件浏览器,并打开;

② 点击左上角,打开应用主菜单;

③ 点击「网络」,展开子选项:
ES 文件浏览器 - 网络

④ 再点击「我的网络」;

⑤ 接着点击右上角,打开功能主菜单;

⑥ 随后点击「新建」,在子菜单中选择「局域网」;

⑦ 最后填入访问共享目录所需的有关信息,确定:
新建 - 局域网

正常来说苹果手机使用 ES 文件浏览器也能依此实现与 Windows 电脑的文件共享,但因为笔者没法测试其有效性,故不敢保证此法也适用于苹果手机和 Windows 电脑。

其他电脑访问设置

(1) 在访问端创建被访问端的访问凭据

这里主要是创建一个存储被访问端(远程主机)共享目录网络位置信息的访问凭据,这样在访问端(本地主机)需要访问共享目录时就无需每次都输入帐户名和密码了。

运行 control keymgr.dll 命令,打开凭据管理器:
凭据管理器

凭据管理器
① 单击「Windows 凭据」;

② 单击「添加 Windows 凭据」;

③「键入网站地址(或网络位置)和凭据」:
键入网络位置和凭据

④ 确定即可。

(2) 映射网络驱动器

Win+E 组合键,打开文件资源管理器:

① 右击「此电脑」;

② 在选项菜单中选择「映射网络驱动器」;

③ 填入「要映射的网络文件夹」的信息:
要映射的网络文件夹
最后,就可以在「此电脑」的「网络位置」下快速访问共享文件夹了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐