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 服务器的启动设置。如果想要在每次系统引导时都启动该服务,请选择。要激活手动启动模式,请选择。有关启动 Samba 服务器的更多信息,请参见第 20.3 节 “启动和停止 Samba”。
在此选项卡中,还可以打开防火墙中的端口。为此应选择。如果有多个网络接口,则请通过单击、选择接口并单击来为 Samba 服务选择网络接口。
20.4.1.3.3 身份 #
在选项卡中,确定与主机关联的域(),以及是否在网络中使用备用主机名()。可以使用 Microsoft Windows Internet Name Service (WINS) 进行名称解析。在这种情况下,选中,并确定是否。要配置专家全局设置或用户身份验证源(例如 LDAP 而非 TDB 数据库),请单击。
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 服务器上进行。
        单击可访问高级配置选项。例如,使用表可设置在通过身份验证时自动挂载服务器用户主目录。这样用户就能访问他们在 CIFS 上的主目录。有关详细信息,请参见 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 服务器自动创建。
要发现特定域名,请运行以下命令:
>sudorealm 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 域,请运行以下命令:
>sudorealm join --verbose domain.example.com
加入 Active Directory 域后,可以将计算机配置为允许使用域帐户登录。要实现此目的,请运行以下命令:
>sudorealm permit --realm domain.example.com --all
要通过在命令中指定特定帐户来仅允许这些帐户,请使用以下命令:
>sudorealm permit --realm domain.example.com DOMAIN\\USERNAME DOMAIN\\USERNAME
要拒绝任何域帐户登录,请使用以下命令:
>sudorealm 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单元文件,并基于上一步中指定的路径生成文件名(其中的“/”需替换为“-”),例如:- >- sudotouch /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 
- 启用服务: - >- sudosystemctl enable cifs-shared.mount
- 启动服务: - >- sudosystemctl start cifs-shared.mount- 要校验该服务是否正在运行,请运行以下命令: - >- sudosystemctl 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 文件 - >- sudosnapper -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 进行的更改才能生效:
        
>sudosystemctl 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)。
- 联机文档: Samba Wiki 包含详尽的 User Documentation,网址为:https://wiki.samba.org/index.php/User_Documentation。 




