20 Samba #
使用 Samba 可以将 Unix 计算机配置为 macOS、Windows 和 OS/2 计算机的文件和打印服务器。Samba 已经发展成功能完备且相当复杂的产品。使用 YaST 或手动编辑配置文件来配置 Samba。
从 Samba 版本 4.17 开始,SUSE Linux Enterprise Server 中便已禁用 SMB1 协议,不再支持该协议。
20.1 术语 #
以下是 Samba 文档和 YaST 模块中使用的一些术语。
- SMB 协议
Samba 使用基于 NetBIOS 服务的 SMB(服务器消息块)协议。Microsoft 发布该协议的目的是让来自其他制造商的软件可以与运行 Microsoft 操作系统的服务器建立连接。Samba 是在 TCP/IP 协议的基础上实施 SMB 协议的,也就是说,所有客户端上都必须安装并启用 TCP/IP。
提示:IBM Z:NetBIOS 支持IBM Z 仅支持基于 TCP/IP 的 SMB。这些系统上不提供 NetBIOS 支持。
- CIFS 协议
CIFS(Common Internet File System,通用互联网文件系统)协议是 SMB 协议的早期版本,也称为 SMB1。CIFS 定义 TCP/IP 上使用的标准远程文件系统访问协议,使用户组能够通过互联网协同工作并共享文档。
SMB1 已被 SMB2 取代,后者最初是作为 Microsoft Windows Vista™ 的一部分发布的。SMB2 又被 Microsoft Windows 8™ 和 Microsoft Windows Server 2012 中的 SMB3 取代。在最近的 Samba 版本中,出于安全原因默认已禁用 SMB1。
- NetBIOS
NetBIOS 是专用于名称解析和在网络上的计算机之间进行通讯的软件接口 (API)。它使连接到网络的计算机能够为自己预留名称。之后便可以根据名称对这些计算机进行寻址。没有任何中心进程来检查这些名称。网络上的任何计算机均可以预留所需数量的名称,前提是这些名称尚未使用。可以在不同网络协议的基础上实现 NetBIOS。一种相对简单、不可路由的实现称为 NetBEUI(常常与 NetBIOS API 混淆)。NetBIOS 也可以在 Novell IPX/SPX 协议上运行。从版本 3.2 开始,Samba 支持在 IPv4 和 IPv6 上运行 NetBIOS。
通过 TCP/IP 发送的 NetBIOS 名称与
/etc/hosts
中使用的名称或 DNS 定义的名称没有相同之处。NetBIOS 使用它自己的、完全独立的命名约定。但为了方便管理或原生使用 DNS,建议您使用与 DNS 主机名对应的名称。Samba 默认采用这种方式。- Samba 服务器
Samba 服务器向客户端提供 SMB/CIFS 服务和 NetBIOS over IP 命名服务。对于 Linux,Samba 服务器有三个守护程序可用:
smbd
用于 SMB/CIFS 服务,nmbd
用于命名服务,winbind
用于身份验证。- Samba 客户端
Samba 客户端是一种能够通过 SMB 协议从 Samba 服务器使用 Samba 服务的系统。常用操作系统(例如 Windows 和 macOS)都支持 SMB 协议。必须在所有计算机上安装 TCP/IP 协议。Samba 提供适用于多种不同类型 UNIX 的客户端。对于 Linux,有一个用于 SMB 的内核模块,它允许在 Linux 系统级别上集成 SMB 资源。不需要对 Samba 客户端运行任何守护程序。
- 共享
SMB 服务器通过共享为客户端提供资源。共享是指服务器上的目录(包括其子目录)和打印机。通过共享名称可导出和访问共享。可以将共享名称设置为任何名称 — 不一定是导出目录的名称。共享打印机也有相应的名称。客户端可以根据共享目录和打印机的名称来访问它们。
按照惯例,以美元符号 (
$
) 结尾的共享名称会被隐藏。使用 Windows 计算机浏览可用共享时,这些共享不会显示。- DC
域控制器 (DC) 是处理域中帐户的服务器。为了进行数据复制,在单个域中可以使用多个域控制器。
20.2 安装 Samba 服务器 #
要安装 Samba 服务器,请启动 YaST 并选择
› 。选择 › ,然后选择 。确认已安装完成安装进程所需的软件包。20.3 启动和停止 Samba #
(引导时)可以自动启动或停止 Samba 服务器,或者手动执行这两个操作。启动和停止策略是第 20.4.1 节 “使用 YaST 配置 Samba 服务器”中所述的 YaST Samba 服务器配置的一部分。
在命令行中使用 systemctl stop smb nmb
可停止 Samba 所需的服务,使用 systemctl start nmb smb
可启动这些服务。smb
服务会根据需要处理 winbind
。
winbind
winbind
是一项独立服务,也是以单独的 samba-winbind
软件包提供。
20.4 配置 Samba 服务器 #
SUSE® Linux Enterprise Server 中的 Samba 服务器可通过两种不同方式进行配置:用 YaST 或手动方式。手工配置可提供更详细的信息,但没有 YaST GUI 方便。
20.4.1 使用 YaST 配置 Samba 服务器 #
要配置 Samba 服务器,请启动 YaST 并选择
› 。20.4.1.1 初始 Samba 配置 #
第一次启动此模块时,
对话框会启动,提示您进行一些与服务器管理相关的基本设置。配置结束时,系统会提示您输入 Samba 管理员口令( )。以后启动时,会显示 对话框。对话框包括两个步骤和详细设置(可选):
- 工作组名或域名
在
中选择一个现有名称或输入一个新的名称,然后单击 。- Samba 服务器类型
在下一步中,指定服务器是应该充当主域控制器 (PDC)、备用域服务器 (BDC) 还是不充当域控制器。按
继续。
如果不想再继续详细的服务器配置,请单击
确认。然后在最后的弹出框中,设置 。稍后可以在
对话框的 、 、 、 和 选项卡中更改所有设置。20.4.1.2 在服务器上启用最新版本的 SMB 协议 #
在运行最新版 SUSE Linux Enterprise Server 或其他最新 Linux 版本的客户端上,默认已禁用不安全的 SMB1/CIFS 协议。但是,现有的 Samba 实例可能配置为仅使用 SMB1/CIFS 版协议处理共享。要与此类客户端交互,需将 Samba 配置为至少使用 SMB 2.1 协议来为共享提供服务。
在某些设置中只能使用 SMB1,例如,当这些设置依赖于 SMB1/CIFS 的 Unix 扩展时。这些扩展尚未移植到更高的协议版本。如果您遇到这种情况,请考虑更改设置,或参见第 20.5.2 节 “在客户端上挂载 SMB1/CIFS 共享”。
要更改设置,请在配置文件 /etc/samba/smb.conf
中设置全局参数 server max protocol = SMB2_10
。有关所有可能值的列表,请参见 man smb.conf
。
20.4.1.3 高级 Samba 配置 #
第一次启动 Samba 服务器模块时,在执行第 20.4.1.1 节 “初始 Samba 配置”中所述的两个初始步骤后, 对话框即会显示。使用它调整您的 Samba 服务器配置。
编辑配置之后,单击
保存设置。20.4.1.3.1 启动服务器 #
在此选项卡中,还可以打开防火墙中的端口。为此应选择
。如果有多个网络接口,则请通过单击 、选择接口并单击 来为 Samba 服务选择网络接口。20.4.1.3.3 身份 #
在例如 LDAP 而不是 TDB 数据库,请单击 。
选项卡中,确定与主机关联的域( )以及是否在网络中使用备用主机名( )。可以使用 Microsoft Windows Internet Name Service (WINS) 进行名称解析。在这种情况下,激活 ,并确定是否 。要设置专家全局设置或设置用户身份验证源,20.4.1.3.4 可信域 #
要使其他域的用户能够访问您的域,在
选项卡中进行适当的设置。单击 以添加新域。要除去所选的域,请单击 。20.4.1.3.5 LDAP 设置 #
在选项卡
中,您可以确定要用于身份验证的 LDAP 服务器。要测试到 LDAP 服务器的连接,请单击 。要设置专家 LDAP 设置或使用默认值,请单击 。有关 LDAP 配置的更多信息,请参见第 5 章 “使用 389 Directory Server 的 LDAP”。
20.4.2 手动配置服务器 #
如果要将 Samba 用作服务器,请安装 samba
。Samba 的主配置文件是 /etc/samba/smb.conf
。可以将此文件分为两个逻辑部分。[global]
部分包含中央和全局设置。以下默认部分包含各个文件和打印机共享:
[homes]
[profiles]
[users]
[groups]
[printers]
[print$]
通过此方法,您可以设置不同的共享选项,或在 [global]
部分设置全局共享选项,这使得配置文件更容易理解。
20.4.2.1 global 部分 #
应该修改 [global]
部分的以下参数来满足网络设置的要求,以使其他计算机能在 Windows 环境中通过 SMB 访问 Samba 服务器。
workgroup = WORKGROUP
此行将 Samba 服务器指派到工作组。将
WORKGROUP
替换为您网络环境的适当工作组。您的 Samba 服务器将出现在其 DNS 名称下,除非此名称已指派给网络中的其他计算机。如果 DNS 名称不可用,请使用netbiosname=MYNAME
设置服务器名称。有关此参数的更多细节,请参见smb.conf
手册页。os level = 20
此参数确定您的 Samba 服务器是否会尝试成为其工作组的 LMB(本地主浏览器)。为了避免现有 Windows 网络因 Samba 服务器配置不当而中断,应选择非常低的值,如
2
。有关此主题的详细信息,请参见 Samba 3 Howto 的“Network Browsing”(网络浏览)一章。有关 Samba 3 Howto 的详细信息,请参见第 20.9 节 “更多信息”。如果网络中没有其他 SMB 服务器(如 Windows 2000 服务器),并且您希望 Samba 服务器保留本地环境中存在的所有系统的列表,请将
os level
设置为较高的值(例如65
)。然后便可以选择您的 Samba 服务器作为本地网络的 LMB。在更改此设置时,应认真考虑这样做对现有 Windows 网络环境的影响。应该先在孤立网络中或一天中的非重要时间,测试这些更改。
wins support
和wins server
为了将您的 Samba 服务器集成到包含活动 WINS 服务器的现有 Windows 网络中,应启用
wins server
选项并将其值设置为 WINS 服务器的 IP 地址。如果将您的 Windows 计算机连接到单独的子网,同时又需要它们互相通讯,则需要设置一个 WINS 服务器。要将 Samba 服务器转变为这样的 WINS 服务器,请设置选项
wins support = Yes
。确保网络中只有一个 Samba 服务器启用了此设置。切勿在smb.conf
文件中同时启用选项wins server
和wins support
。
20.4.2.3 安全性级别 #
要提高安全性,可以使用口令来保护每个共享访问。SMB 提供以下检查权限的方式:
- 用户级安全性 (
security = user
) 此变体将用户的概念引入了 SMB。每个用户都必须使用自己的口令在服务器上注册。注册后,服务器可以根据用户名来授予访问各个已导出共享的权限。
- ADS 级安全性 (
security = ADS
) 在该模式中,Samba 将在 Active Directory 环境中充当域成员。要在该模式中工作,运行 Samba 的计算机需要安装并配置 Kerberos。必须使用 Samba 将该计算机加入到 ADS 领域。此步骤可通过使用 YaST
模块完成。- 域级安全性 (
security = domain
) 仅当计算机已加入 Windows NT 域时,此模式才能正常工作。Samba 会尝试将用户名和口令传递给 Windows 主要或备用域控制器来验证该信息,这与 Windows Server 采用的方式相同。它期望将加密口令参数设置为
yes
。
选择共享、用户或域级安全性适用于整个服务器。无法既为服务器配置的某些共享提供共享级安全性,同时又为其他共享提供用户级安全性。但是,您可以为系统上每个已配置的 IP 地址运行单独的 Samba 服务器。
有关此主题的更多信息,可以在《Samba 3 操作指南》中找到。对于一个系统上的多个服务器,应注意选项 interfaces
和 bind interfaces
only
。
20.5 配置客户端 #
客户端只能通过 TCP/IP 访问 Samba 服务器。NetBEUI 和通过 IPX 的 NetBIOS 不能与 Samba 共用。
20.5.1 使用 YaST 配置 Samba 客户端 #
配置 Samba 客户端来访问 Samba 或 Windows 服务器上的资源(文件或打印机)。在
› 对话框中输入 Windows 或 Active Directory 域或工作组。如果激活 ,则用户身份验证将在 Samba、Windows 或 Kerberos 服务器上运行。
单击pam_mount
手册页。
完成所有设置后,请确认对话框以完成配置。
20.5.2 在客户端上挂载 SMB1/CIFS 共享 #
第一个 SMB 网络协议版本 SMB1 或 CIFS 是不安全的旧协议,其开发者 Microsoft 已將其弃用。出于安全原因,SUSE Linux Enterprise Server 上的 mount
命令默认只会使用较新的协议版本(即 SMB 2.1、SMB 3.0 或 SMB 3.02)挂载 SMB 共享。
但是,此项更改只会影响通过 /etc/fstab
执行的 mount
命令和挂载操作。您仍然可以通过明确要求的方式来使用 SMB1。请使用以下参数:
smbclient
工具。SUSE Linux Enterprise Server 随附的 Samba 服务器软件。
在以下设置中,由于只能使用 SMB1,此项默认设置会导致连接失败:
使用不支持较新 SMB 协议版本的 SMB 服务器的设置。自 Windows 7 和 Windows Server 2008 开始,Windows 已推出 SMB 2.1 支持。
依赖于 SMB1/CIFS 的 Unix 扩展的设置。这些扩展尚未移植到更高的协议版本。
遵循以下说明可以解决安全问题。有关这些问题的详细信息,请参见 https://blogs.technet.microsoft.com/filecab/2016/09/16/stop-using-smb1/。
尽快升级服务器以使用更安全的 SMB 版本。
有关在 SUSE Linux Enterprise Server 上启用适当协议版本的信息,请参见第 20.4.1.2 节 “在服务器上启用最新版本的 SMB 协议”。
如果您需要在当前的 SUSE Linux Enterprise Server 内核中启用 SMB1 共享,请将选项 vers=1.0
添加到所用的 mount
命令行中:
#
mount -t cifs //HOST/SHARE /MOUNT_POINT –o username=USER_ID,vers=1.0
或者,您也可以在安装的 SUSE Linux Enterprise Server 中全局启用 SMB1 共享。要实现此目的,请在 /etc/samba/smb.conf
中的 [global]
部分下添加以下代码:
client min protocol = CORE
20.6 将 Samba 用作登录服务器 #
在商务设置中,组织通常希望只允许已在中心实例上注册的用户进行访问。在基于 Windows 的网络中,此任务由主域控制器 (PDC) 来处理。您可以使用配置为 PDC 的 Windows 服务器,但也可借助 Samba 服务器完成此任务。例 20.3 “Smb.conf 中的 global 部分”中显示了必须在 smb.conf
的 [global]
部分设置的项。
[global] workgroup = WORKGROUP domain logons = Yes domain master = Yes
需要准备所用加密方式与 Windows 兼容的用户帐户和口令。可使用命令 smbpasswd
-a name
来完成此任务。使用以下命令为计算机创建 Windows 域概念要求的域帐户:
useradd hostname smbpasswd -a -m hostname
使用 useradd
命令可添加一个美元符号。与参数 -m
结合使用时,命令 smbpasswd
会自动插入此符号。带注释的配置示例 (/usr/share/doc/packages/samba/examples/smb.conf.SUSE
) 包含自动执行此任务的设置。
add machine script = /usr/sbin/useradd -g nogroup -c "NT Machine Account" \ -s /bin/false %m
要确保 Samba 能够正确执行此脚本,请选择具有必需的管理员权限的 Samba 用户,并将其添加到 ntadmin
组中。然后可以使用以下命令为属于此 Linux 组的所有用户指派 Domain
Admin
状态:
net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin
20.7 配置了 Active Directory 的网络中的 Samba 服务器 #
如果您同时运行 Linux 服务器和 Windows 服务器,则可以构建两个独立的身份验证系统和网络,或者将服务器连接到使用一个中央身份验证系统的网络。由于 Samba 可以与 Active Directory 域协作,因此您可以将 SUSE Linux Enterprise Server 服务器加入 Active Directory (AD) 域。
要加入到 AD 域,请执行以下操作:
以
root
身份登录并启动 YaST。启动
› 。在
屏幕上的 字段中输入要加入的域。图 20.1︰ 确定 Windows 域成员资格 #选中
,以在服务器上使用 SMB 源进行 Linux 身份验证。单击
并在提示时确认域连接。在 AD 服务器上提供 Windows Administrator 的口令,并单击
。现在您的服务器已经设置了从 Active Directory 域控制器获取认证数据。
或者,您可以使用 realmd
工具连接到 Active Directory。有关细节,请参见第 20.7.1 节 “使用 realmd
管理 Active Directory”。
在有多个 Samba 服务器的环境中,将不会采用一致的方式创建 UID 和 GID。指派给用户的 UID 将取决于用户首次登录的顺序,而这会导致在服务器间产生 UID 冲突。要解决此问题,您需要使用身份映射。有关详细信息,请参见 https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/idmapper.html。
20.7.1 使用 realmd
管理 Active Directory #
realmd
属于 DBus 服务,可用于配置网络身份验证和域成员资格。
20.7.1.1 发现 Active Directory 域 #
realmd
通过检查 DNS SRV 记录来发现可以使用或配置哪些域或领域。请确保待发现的 Active Directory 域有相应的 DNS SRV 记录;例如,以下示例中的 domain.example.com:
_ldap._tcp.dc._msdcs.domain.example.com.
DNS 记录应由 Active Directory 附带的 DNS 服务器自动创建。
要发现特定域名,请运行以下命令:
>
sudo
realm discover --verbose domain.example.com
* Resolving: _ldap._tcp.dc._msdcs.domain.example.com * Sending MS-CLDAP ping to: 192.168.20.10 * Sending MS-CLDAP ping to: 192.168.12.12 * Successfully discovered: domain.example.com ...
要加入特定的 Active Directory 域,请运行以下命令:
>
sudo
realm join --verbose domain.example.com
加入 Active Directory 域后,可以将计算机配置为允许使用域帐户登录。要实现此目的,请运行以下命令:
>
sudo
realm permit --realm domain.example.com --all
要通过在命令中指定特定帐户来仅允许这些帐户,请使用以下命令:
>
sudo
realm permit --realm domain.example.com DOMAIN\\USERNAME DOMAIN\\USERNAME
要拒绝任何域帐户登录,请使用以下命令:
>
sudo
realm deny --realm domain.example.com --all
20.8 高级主题 #
本节介绍用于管理 Samba 套件的客户端组件与服务器组件的高级方法。
20.8.1 使用 systemd
自动挂载 CIFS 文件系统 #
在启动时可以使用 systemd
来挂载 CIFS 共享。为此,请执行如下操作:
创建挂载点:
>
mkdir -p PATH_SERVER_SHARED_FOLDER其中 PATH_SERVER_SHARED_FOLDER 是后续步骤中提到的
/cifs/shared
。创建
systemd
单元文件,并基于上一步中指定的路径生成文件名(其中的“/”需替换为“-”),例如:>
sudo
touch /etc/systemd/system/cifs-shared.mount该文件包含以下内容:
[Unit] Description=CIFS share from The-Server [Mount] What=//The-Server/Shared-Folder Where=/cifs/shared Type=cifs Options=rw,username=vagrant,password=admin [Install] WantedBy=multi-user.target
启用服务:
>
sudo
systemctl enable cifs-shared.mount启动服务:
>
sudo
systemctl start cifs-shared.mount要校验该服务是否正在运行,请运行以下命令:
>
sudo
systemctl status cifs-shared.mount要确认 CIFS 共享路径是否可用,请尝试运行以下命令:
>
cd /cifs/shared>
ls -l total 0 -rwxrwxrwx. 1 root root 0 Oct 24 22:31 hello-world-cifs.txt drwxrwxrwx. 2 root root 0 Oct 24 22:31 subfolder -rw-r--r--. 1 vagrant vagrant 0 Oct 28 21:51 testfile.txt
20.8.2 Btrfs 上的透明文件压缩 #
Samba 允许客户端针对 Btrfs 文件系统中的共享远程操作文件与目录压缩标志。Windows 资源管理器可让用户通过
› › 对话框来标记要进行透明压缩的文件/目录:带有压缩标志的文件将以透明方式进行压缩,当用户访问或修改这些文件时,底层文件系统会将其解压缩。这通常可以节省存储容量,不过,在访问文件时会造成额外的 CPU 开销。除非新文件和目录是使用 FILE_NO_COMPRESSION 选项创建的,否则,它们将继承父目录的压缩标志。
Windows 资源管理器以不同的显示方式区分压缩文件和未压缩文件:
要启用 Samba 共享压缩,您可以将以下内容
vfs objects = btrfs
手动添加到 /etc/samba/smb.conf
中的共享配置,或者使用 YaST: › › ,然后选中 。
有关 Btrfs 上的压缩功能的一般概述,请参见第 1.2.2.1 节 “挂载压缩的 Btrfs 文件系统”。
20.8.3 快照 #
快照也称为阴影副本,是指某个文件系统子卷在特定时间点的状态副本。在 Linux 中,可以使用 Snapper 工具来管理这些快照。Btrfs 文件系统或精简配置的 LVM 卷支持快照。Samba 套件支持通过服务器端和客户端的 FSRVP 协议管理远程快照。
20.8.3.1 以前的版本 #
Samba 服务器上的快照可以作为先前版本的文件或目录向远程 Windows 客户端公开。
要在 Samba 服务器上启用快照,必须符合以下条件:
SMB 网络共享位于 Btrfs 子卷上。
SMB 网络共享路径中包含相关的 Snapper 配置文件。可以使用以下命令创建 snapper 文件
>
sudo
snapper -c <cfg_name> create-config/path/to/share
有关 Snapper 的详细信息,请参见第 10 章 “使用 Snapper 进行系统恢复和快照管理”。
必须允许相关用户访问快照目录树。有关更多信息,请参见 vfs_snapper 手册页 (
man 8 vfs_snapper
) 的 PERMISSIONS(权限)部分。
要支持远程快照,需要修改 /etc/samba/smb.conf
文件。要完成此操作,您可以选择 › › ,或者使用以下命令手动增强相关的共享部分
vfs objects = snapper
请注意,只有在重启动 Samba 服务后,手动对 smb.conf
进行的更改才能生效:
>
sudo
systemctl restart nmb smb
经过配置后,可以通过 Windows 资源管理器中某个文件或目录的
选项卡访问 Snapper 为 Samba 共享路径创建的快照。20.8.3.2 远程共享快照 #
默认情况下,只能在 Samba 服务器本地创建和删除快照,使用的工具可以是 Snapper 命令行实用程序或其时间轴功能。
可将 Samba 配置为使用文件服务器远程 VSS 协议 (FSRVP) 处理远程主机发出的共享快照创建和删除请求。
除了 第 20.8.3.1 节 “以前的版本” 中所述的配置和先决条件以外,还需要在 /etc/samba/smb.conf
中指定以下全局配置:
[global] rpc_daemon:fssd = fork registry shares = yes include = registry
然后,FSRVP 客户端(包括 Samba 的 rpcclient
以及 Windows Server 2012 DiskShadow.exe
)便可以指示 Samba 为指定的共享创建或删除快照,并将该快照公开为新共享。
20.8.3.3 使用 rpcclient
从 Linux 中远程管理快照 #
软件包 samba-client
中包含 FSRVP 客户端,可以远程请求 Windows/Samba 服务器创建并公开指定共享的快照。然后,您可以使用 SUSE Linux Enterprise Server 中的现有工具装入公开的共享并备份其文件。向服务器发出的请求将使用 rpcclient
二进制文件发送。
rpcclient
请求 Windows Server 2012 共享快照 #
以 EXAMPLE
域中管理员的身份连接到 win-server.example.com
服务器:
#
rpcclient -U 'EXAMPLE\Administrator' ncacn_np:win-server.example.com[ndr64,sign]
Enter EXAMPLE/Administrator's password:
检查 SMB 共享是否对于 rpcclient
可见:
#
rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path: C:\Shares\windows_server_2012_share
password: (null)
检查 SMB 共享是否支持创建快照:
#
rpcclient $> fss_is_path_sup windows_server_2012_share \
UNC \\WIN-SERVER\windows_server_2012_share\ supports shadow copy requests
请求创建共享快照:
#
rpcclient $> fss_create_expose backup ro windows_server_2012_share
13fe880e-e232-493d-87e9-402f21019fb6: shadow-copy set created
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
\\WIN-SERVER\windows_server_2012_share\ shadow-copy added to set
13fe880e-e232-493d-87e9-402f21019fb6: prepare completed in 0 secs
13fe880e-e232-493d-87e9-402f21019fb6: commit completed in 1 secs
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
share windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777} \
exposed as a snapshot of \\WIN-SERVER\windows_server_2012_share\
确认服务器是否已公开快照共享:
#
rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path: C:\Shares\windows_server_2012_share
password: (null)
netname: windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777}
remark: (null)
path: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{F6E6507E-F537-11E3-9404-B8AC6F927453}\Shares\windows_server_2012_share\
password: (null)
尝试删除快照共享:
#
rpcclient $> fss_delete windows_server_2012_share \
13fe880e-e232-493d-87e9-402f21019fb6 1c26544e-8251-445f-be89-d1e0a3938777
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
\\WIN-SERVER\windows_server_2012_share\ shadow-copy deleted
确认服务器是否已去除快照共享:
#
rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path: C:\Shares\windows_server_2012_share
password: (null)
20.8.3.4 使用 DiskShadow.exe
从 Windows 中远程管理快照 #
您也可以从 Windows 客户端中管理 Linux Samba 服务器上 SMB 共享的快照。Windows Server 2012 提供了 DiskShadow.exe
实用程序,该实用程序可以使用与第 20.8.3.3 节 “使用 rpcclient
从 Linux 中远程管理快照”中所述的 rpcclient
命令类似的方式管理远程共享。请注意,首先您需要妥善设置 Samba 服务器。
以下示例步骤描述了如何设置 Samba 服务器,以使 Windows 客户端能够管理其共享的快照。请注意,EXAMPLE 是测试环境中使用的 Active Directory 域,fsrvp-server.example.com
是 Samba 服务器的主机名,/srv/smb
是 SMB 共享的路径。
通过 YaST 加入 Active Directory 域。有关详细信息,请参见第 20.7 节 “配置了 Active Directory 的网络中的 Samba 服务器”。
确保 Active Directory 域的 DNS 项正确无误:
fsrvp-server:~ # net -U 'Administrator' ads dns register \ fsrvp-server.example.com <IP address> Successfully registered hostname with DNS
在
/srv/smb
处创建 Btrfs 子卷:fsrvp-server:~ # btrfs subvolume create /srv/smb
为路径
/srv/smb
创建 Snapper 配置文件:fsrvp-server:~ # snapper -c <snapper_config> create-config /srv/smb
创建路径为
/srv/smb
的新共享,并选中 YaST 的 复选框。确保将以下代码段添加到/etc/samba/smb.conf
的 global 部分,如 第 20.8.3.2 节 “远程共享快照” 中所述:[global] rpc_daemon:fssd = fork registry shares = yes include = registry
使用
systemctl restart nmb smb
重启动 Samba。配置 Snapper 权限:
fsrvp-server:~ # snapper -c <snapper_config> set-config \ ALLOW_USERS="EXAMPLE\\\\Administrator EXAMPLE\\\\win-client$"
确保还允许所有
ALLOW_USERS
实例访问.snapshots
子目录。fsrvp-server:~ # snapper -c <snapper_config> set-config SYNC_ACL=yes
重要:路径转义请小心使用“\”转义!请转义两次,以确保
/etc/snapper/configs/<snapper_config>
中存储的值转义一次。"EXAMPLE\win-client$" 对应于 Windows 客户端计算机帐户。对此帐户进行验证后,Windows 将发出初始 FSRVP 请求。
授予 Windows 客户端帐户必要的特权:
fsrvp-server:~ # net -U 'Administrator' rpc rights grant \ "EXAMPLE\\win-client$" SeBackupPrivilege Successfully granted rights.
不需要对 "EXAMPLE\Administrator" 用户执行上一条命令,因为已授予该用户特权。
DiskShadow.exe
的实际运用 #引导 Windows Server 2012(示例主机名为 WIN-CLIENT)。
就像在 SUSE Linux Enterprise Server 上那样,加入到同一个 Active Directory 域 EXAMPLE。
重引导.
打开 PowerShell。
启动
DiskShadow.exe
,然后开始执行备份过程:PS C:\Users\Administrator.EXAMPLE> diskshadow.exe Microsoft DiskShadow version 1.0 Copyright (C) 2012 Microsoft Corporation On computer: WIN-CLIENT, 6/17/2014 3:53:54 PM DISKSHADOW> begin backup
指定阴影副本在程序退出、重置和重引导期间持续存在。
DISKSHADOW> set context PERSISTENT
检查指定的共享是否支持快照,然后创建一个快照:
DISKSHADOW> add volume \\fsrvp-server\sles_snapper DISKSHADOW> create Alias VSS_SHADOW_1 for shadow ID {de4ddca4-4978-4805-8776-cdf82d190a4a} set as \ environment variable. Alias VSS_SHADOW_SET for shadow set ID {c58e1452-c554-400e-a266-d11d5c837cb1} \ set as environment variable. Querying all shadow copies with the shadow copy set ID \ {c58e1452-c554-400e-a266-d11d5c837cb1} * Shadow copy ID = {de4ddca4-4978-4805-8776-cdf82d190a4a} %VSS_SHADOW_1% - Shadow copy set: {c58e1452-c554-400e-a266-d11d5c837cb1} %VSS_SHADOW_SET% - Original count of shadow copies = 1 - Original volume name: \\FSRVP-SERVER\SLES_SNAPPER\ \ [volume not on this machine] - Creation time: 6/17/2014 3:54:43 PM - Shadow copy device name: \\FSRVP-SERVER\SLES_SNAPPER@{31afd84a-44a7-41be-b9b0-751898756faa} - Originating machine: FSRVP-SERVER - Service machine: win-client.example.com - Not exposed - Provider ID: {89300202-3cec-4981-9171-19f59559e0f2} - Attributes: No_Auto_Release Persistent FileShare Number of shadow copies listed: 1
完成备份过程:
DISKSHADOW> end backup
创建快照后,尝试将它删除,并确认删除结果:
DISKSHADOW> delete shadows volume \\FSRVP-SERVER\SLES_SNAPPER\ Deleting shadow copy {de4ddca4-4978-4805-8776-cdf82d190a4a} on volume \ \\FSRVP-SERVER\SLES_SNAPPER\ from provider \ {89300202-3cec-4981-9171-19f59559e0f2} [Attributes: 0x04000009]... Number of shadow copies deleted: 1 DISKSHADOW> list shadows all Querying all shadow copies on the computer ... No shadow copies found in system.
20.9 更多信息 #
手册页: 要查看随 samba 软件包一起安装的所有
man
页的列表,请运行apropos samba
。使用man NAME_OF_MAN_PAGE
打开任一手册页。SUSE 特定的 README 文件:: 软件包 samba-client 中包含文件
/usr/share/doc/packages/samba/README.SUSE
。其他软件包文档:: 使用
zypper install samba-doc
安装samba-doc
软件包。此文档将安装到
/usr/share/doc/packages/samba
。其中包含 HTML 版本手册页以及示例配置库(例如smb.conf.SUSE
)。联机文档: https://wiki.samba.org/index.php/User_Documentation 上的 Samba Wiki 包含详尽的 User Documentation。