配置和使用网络文件服务
大约 84 分钟
配置和使用网络文件服务
来源:官方文档 原始多页入口:配置和使用网络文件服务 内容规模:约 76,505 字符,112 个章节标题,379 个命令/代码块,45 条提示框
阅读提要
- 副标题:在 Red Hat Enterprise Linux 10 中配置和使用网络文件服务的指南
- 摘要:本文档论述了如何在 Red Hat Enterprise Linux 10 上配置和运行网络文件服务,包括 Samba 服务器和 NFS 服务器。
- 主要章节:在 Red Hat Enterprise Linux 10 中配置和使用网络文件服务的指南;对红帽文档提供反馈;第 1 章 使用 Samba 作为服务器;第 2 章 部署 NFS 服务器
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
在 Red Hat Enterprise Linux 10 中配置和使用网络文件服务的指南
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 使用 Samba 作为服务器
- 要点:Samba 在Red Hat Enterprise Linux中实现了服务器消息块(SMB)协议。SMB 用于访问服务器资源,如文件共享和打印机。Samba 还实现了 Microsoft Windows 使用的分布式计算环境远程过程调用(DCE RPC)。
- 要点:如需更多信息,请参阅:
- 列表:您系统上的 smb.conf (5) 手册页
- 列表:/usr/share/docs/samba-version/ 目录,其中包含 Samba 项目提供的一般文档、示例脚本和 LDAP 架构文件
- 列表:Active Directory(AD)或 NT4 域成员
- 列表:独立服务器
- 列表:NT4 主域控制器(PDC)或备份域控制器(BDC) 注意 红帽支持仅在支持 NT4 域的 Windows 版本的现有安装中支持 PDC 和 BDC 模式。避免设置新的 Samba NT4 域。Windows 7 和 Windows Server 2008 R2 之后的 Microsoft 操作系统不支持 NT4 域。 红帽不支持将 Samba 作为 AD 域控制器(DC)来运行。
- 注意:注意 红帽支持仅在支持 NT4 域的 Windows 版本的现有安装中支持 PDC 和 BDC 模式。避免设置新的 Samba NT4 域。Windows 7 和 Windows Server 2008 R2 之后的 Microsoft 操作系统不支持 NT4 域。 红帽不支持将 Samba 作为 AD 域控制器(DC)来运行。
1.1. 了解不同的 Samba 服务和模式
- 要点:samba 软件包提供多个服务。根据您的环境和您要配置的场景,您需要一个或多个这些服务,并在不同模式下配置 Samba。
1.1.1. Samba 服务
- 要点:Linux 中的 Samba 服务包括 smbd、nmbd、winbindd 和 samba-bgqd。它们的角色涵盖了文件和打印机共享、名称解析、域集成和打印机管理。
- 要点:Samba 提供以下服务:
- 注意:重要 红帽只支持使用 winbindd 服务将 Samba 作为服务器运行,以在本地提供域用户和组。由于限制,如缺少 Windows 访问控制列表(ACL)支持和 NT LAN Manager (NTLM)回退,不支持 SSSD。
1.1.2. Samba 安全服务
- 要点:/etc/samba/smb.conf 文件中的 [global] 部分中的 security 参数管理 Samba 如何验证连接到服务的用户。
- 要点:根据您在其中安装 Samba 的模式,参数必须设为不同的值:
- 列表:将 Samba 设置为 AD 域成员服务器
- 列表:将 Samba 设置为独立服务器
1.1.3. Samba 服务和 Samba 客户端工具加载并重新载入其配置的情况
- 要点:当 Samba 服务和客户端工具加载或重新载入配置文件时,自动和手动重新载入的详情会触发。某些设置需要完全重启的服务才能使配置更改生效。
- 要点:下面描述了 Samba 服务和工具加载并重新载入其配置:
- 列表:Samba 服务在以下情况下重新载入其配置: 每 3 分钟自动进行 在手动请求时,例如运行 smbcontrol all reload-config 命令时。
- 列表:每 3 分钟自动进行
- 列表:在手动请求时,例如运行 smbcontrol all reload-config 命令时。
- 列表:Samba 客户端实用程序仅在启动时读取其配置。
- 列表:您系统上 smb.conf (5) 手册页中的 配置更改是如何应用的 部分
- 列表:您系统上的 smbd (8)、nmbd (8) 和 winbindd (8) 手册页
1.1.4. 以安全的方式编辑 Samba 配置
- 要点:Samba 服务每 3 分钟自动重新载入其配置。要防止服务在验证配置前重新载入更改,您可以以安全的方式编辑 Samba 配置。使用 testparm 工具来验证配置。
- 要点:先决条件
- 列表:已安装 Samba。
- 列表:创建一个 /etc/samba/smb.conf 文件的副本: # cp /etc/samba/smb.conf /etc/samba/samba.conf.copy
- 列表:编辑复制的文件,并进行必要的更改。
- 列表:验证 /etc/samba/samba.conf.copy 文件中的配置: # testparm -s /etc/samba/samba.conf.copy 如果 testparm 报告错误,请修复它们并再次运行命令。
- 列表:使用新配置覆盖 /etc/samba/smb.conf 文件: # mv /etc/samba/samba.conf.copy /etc/samba/smb.conf
- 列表:等待 Samba 服务自动重新载入其配置或手动重新载入配置: # smbcontrol all reload-config
- 命令/配置摘录:
# cp /etc/samba/smb.conf /etc/samba/samba.conf.copy
# testparm -s /etc/samba/samba.conf.copy1.2. 使用 testparm 工具验证 smb.conf 文件
- 要点:testparm 工具验证 /etc/samba/smb.conf 中的 Samba 配置。它检测无效的参数、值和不正确的 ID 映射。如果没有报告错误,Samba 服务将成功加载配置。testparm 无法验证服务可用性或运行时行为。
- 要点:先决条件
- 列表:您已安装了 Samba。
- 列表:/etc/samba/smb.conf 文件已存在。
- 列表:以root用户身份运行testparm工具: # testparm Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Unknown parameter encountered: "log level" Processing section "[example_share]" Loaded services file OK. ERROR: The idmap range for the domain * (tdb) overlaps with…
- 列表:如果testparm报告了配置中不正确的参数、值或其他错误,请修复问题并再次运行该工具。
- 命令/配置摘录:
# testparm
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Unknown parameter encountered: "log level" Processing section "[example_share]" Loaded services file OK. ERROR: The idmap range for the domain * (tdb) overlaps with the range of DOMAIN (ad)! Server role: ROLE_DOMAIN_MEMBER Press enter to see a dump of your service definitions # Global parameters [global] ... [example_share] ...- 注意:重要 每次修改此文件后,使用 testparm 来验证 /etc/samba/smb.conf 文件。
1.3. 将 Samba 设置为独立服务器
- 要点:您可以将 Samba 配置为域之外的独立服务器。在这个模式中,Samba 会根据本地数据库而不是域控制器(DC)验证用户。您还可以在不身份验证的情况下启用客户机访问服务。
1.3.1. 为独立服务器设置服务器配置
- 要点:您可以为 Samba 独立服务器设置服务器配置。如需更多信息,请参阅系统中的 smb.conf (5) 手册页。
- 要点:流程
- 列表:安装 samba 软件包: # dnf install samba
- 列表:编辑 /etc/samba/smb.conf 文件并设置以下参数: [global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 1 此配置在Example-learning工作组里定义了一个名为Server的独立服务器。另外,此配置启用最小级别的日志记录(1),并将日志文件存储在 /var/log/samba/ 目录中。Samba 将 日志文件 参数中的 %m 宏扩展到连接客户端的 NetBIOS 名称,启用单个日志文件。
- 列表:可选:配置文件或打印机共享。请参阅: 设置使用 POSIX ACL 的 Samba 文件共享 设置使用 Windows ACL 的共享 将 Samba 设置为打印服务器
- 列表:设置使用 POSIX ACL 的 Samba 文件共享
- 列表:设置使用 Windows ACL 的共享
- 列表:将 Samba 设置为打印服务器
- 命令/配置摘录:
# dnf install samba
[global] workgroup = Example-WG netbios name = Server security = user log file = /var/log/samba/%m.log log level = 11.3.2. 创建并启用本地用户帐户
- 要点:要验证连接到共享的用户,请在 Samba 主机上创建帐户。在操作系统和 Samba 数据库中创建帐户。操作系统帐户验证 ACL,Samba 帐户会验证用户。
- 要点:如果您使用 passdb backend = tdbsam 默认设置,则 Samba 会将用户帐户存储在 /var/lib/samba/private/passdb.tdb 数据库中。
- 列表:Samba 已安装,并配置为独立服务器。
- 列表:创建操作系统帐户: # useradd -M -s /sbin/nologin example 此命令添加了example帐户,而不创建主目录如果帐户仅用于对 Samba 进行身份验证,请将 /sbin/nologin 命令分配为 shell。这可防止帐户在本地登录。
- 列表:为操作系统帐户设置密码以启用它: # passwd example Enter new UNIX password: password Retype new UNIX password: password passwd: password updated successfully Samba 不会使用操作系统帐户中的密码集进行身份验证。然而,您需要设置密码才能启用帐户。如果一个帐户被禁用,当这个用户连接时,Samba 会拒绝访问。
- 列表:将用户添加到 Samba 数据库,并为帐户设置密码: # smbpasswd -a example New SMB password: password Retype new SMB password: password Added user example. 当使用此帐户连接到 Samba 共享时,使用此密码进行验证。
- 列表:启用 Samba 帐户: # smbpasswd -e example Enabled user example.
- 命令/配置摘录:
# useradd -M -s /sbin/nologin example
# passwd example1.4. 了解并配置 Samba ID 映射
- 要点:Windows 域根据安全标识符(SID)识别用户和组。Linux 需要唯一的用户标识符(UID)和组标识符(GID)。在 Samba 域成员中,winbindd 为操作系统提供域用户和组信息。
- 要点:要启用 winbindd 服务来为用户和组向 Linux 提供唯一 ID,请在 /etc/samba/smb.conf 中配置 ID 映射:
- 列表:本地数据库(默认域)
- 列表:Samba 服务器所属的 Active Directory (AD)或 NT4 域
- 列表:每个用户必须能够访问这个 Samba 服务器上的资源的可信域
- 表格样本(共 5 行):
- 后端 | 使用案例
- tdb | *仅限默认域
- ad | 仅限 AD 域
- rid | AD 和 NT4 域
1.4.1. 规划 Samba ID 范围
- 要点:每个域配置都需要一个唯一的 ID 范围,这些范围不得与其他域重叠。这适用于是否将 Linux 用户标识符(UID)和组标识符(GID)存储在 Active Directory (AD)中,或使用 Samba 生成它们。
- 要点:例 1.1. 唯一的 ID 范围
- 命令/配置摘录:
[global] ... idmap config * : backend = tdb idmap config * : range = 10000-999999 idmap config AD-DOM:backend = rid idmap config AD-DOM:range = 2000000-2999999 idmap config TRUST-DOM:backend = rid idmap config TRUST-DOM:range = 4000000-4999999- 注意:警告 如果您设置了重叠 ID 范围,Samba 无法正常工作。
- 注意:重要 每个域只能分配一个范围。因此,在域范围之间有足够的空间。这可让您在域扩展后扩展范围。 如果您稍后给某个域分配了一个不同的范围,所有权将会丢失。这会影响之前由这些用户和组创建的文件和目录。
1.4.2. * 默认域
- 要点:您可以配置默认的 Samba ID 映射域,以确保为本地用户、组和内置帐户进行正确的 ID 分配。选择和管理适当的后端,以便在域环境中维护系统安全性、可扩展性和合规性。
- 要点:在域环境中,您可以为以下每个情况添加一个 ID 映射配置:
- 列表:Samba 服务器所属的域
- 列表:每个可以访问 Samba 服务器的可信域
- 列表:本地 Samba 用户和组
- 列表:Samba 内置帐户和组,如BUILTIN\Administrators
- 列表:使用 TDB ID 映射后端
- 列表:使用自动 ID 映射后端
- 命令/配置摘录:
idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = autorid idmap config * : range = 10000-999999- 注意:重要 您必须按照描述配置默认域,以便使 Samba 正确运行。
- 注意:注意 范围应该是 rangesize 的倍数,且必须至少为其值。这样可确保有足够的 ID 范围空间,用于强制的 BU foundation IN 域。当默认的 rangesize 为 100000 时,范围必须至少跨越 200000。例如,range = 100000 - 299999。
1.4.3. 使用 tdb ID 映射后端
- 要点:winbindd 服务默认使用可写的 tdb ID 映射后端。它存储安全标识符(SID)、用户标识符(UID)和组标识符(GID)映射表。这包括本地用户、组和内置主体。
- 要点:仅将此后端用于*默认域。例如:
- 命令/配置摘录:
idmap config * : backend = tdb idmap config * : range = 10000-9999991.4.4. 使用 ad ID 映射后端
- 要点:您可以将 Samba Active Directory (AD)成员配置为使用 ad ID 映射后端。ad ID 映射后端实现了一个只读 API,以便从 AD 读取帐户和组信息。
- 要点:使用 ad ID 映射后端具有以下优点:
- 列表:所有用户和组群设置都集中存储在 AD 中。
- 列表:使用这个后端的所有 Samba 服务器中的用户和组群 ID 是一致的。
- 列表:ID 不存储在本地数据库中,防止文件所有权损坏和丢失。
- 列表:用户和组必须在 AD 中有唯一的 ID 集合,并且 ID 必须在 /etc/samba/smb.conf 文件中配置的范围内。在这个范围外具有 ID 的对象在 Samba 服务器上不可用。
- 列表:用户和组必须在 AD 中设置所有必需的属性。缺少的属性使用户或组在 Samba 服务器上不可用,具体取决于配置。
- 列表:您已安装了 Samba。
- 命令/配置摘录:
idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config DOMAIN : backend = ad- 注意:注意 ad ID 映射后端不支持带有单向信任的 {AD} 域。如果您在带有单向信任的 {AD} 中配置域成员,请使用以下 ID 映射后端之一:tdb、rid 或 autorid。
- 注意:重要 范围不得与这个服务器上的任何其他域配置重叠。此外,范围必须足够大,以便包含将来分配的所有 ID。详情请查看 规划 Samba ID 范围。
- 表格样本(共 8 行):
- AD 属性名称 | 对象类型 | 映射到
- sAMAccountName | 用户和组群 | 用户和组名称,取决于对象
- uidNumber | 用户 | 用户 ID(UID)
- gidNumber | 组 | 组 ID(GID)
1.4.5. 使用网格 ID 映射后端
- 要点:您可以将 Samba 域成员配置为使用 rid ID 映射后端。Samba 可以使用 Windows 安全标识符(SID)的相对标识符(RID)在 Red Hat Enterprise Linux 上生成 ID。
- 要点:ridID映射后端实施了一个只读 API,以便根据 AD 和 NT4 域的算法映射方案计算帐户和组信息。当配置后端时,您必须在 idmap config DOMAIN : range参数中设置最低和最高的 RID。Samba 不会映射比这个参数中设置低或更高的 RID 的用户或组。
- 列表:所有在配置范围内具有 RID 的域用户和组都会自动在域成员中可用。
- 列表:您不需要手动分配 ID、主目录和登录 shell。
- 列表:所有域用户可以获得相同的登录 shell 和主目录。但是,您可以使用变量。
- 列表:如果所有用户都使用 rid 后端,用户和组群 ID 仅在 Samba 域成员中相同。它们还必须具有相同的 ID 范围设置。
- 列表:您不能阻止单独的用户或组在域成员中可用。只有超出配置范围以外的用户和组才会包括。
- 列表:如果不同域中的对象具有相同的 RID,则在多域环境中可能会出现重复的 ID。这基于 winbindd 用于计算 ID 的公式。
- 命令/配置摘录:
idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config DOMAIN : backend = rid- 注意:注意 RID 是 SID 的最后部分。例如,如果用户的 SID 是S-1-5-21-5421822485-1151247151-421485315-30014,那么30014是对应的 RID。
- 注意:重要 作为只读后端,rid无法分配新的ID,例如为BUILTIN组。因此,请勿将此后端用于 * 默认域。
1.4.6. 使用自动 ID 映射后端
- 要点:您可以将 Samba 域成员配置为使用 autorid ID 映射后端。autorid 后端的工作方式与 rid ID 映射后端类似,但会自动为不同的域分配 ID。
- 要点:autorid ID 映射后端支持以下部署场景:
- 列表:仅用于*默认域
- 列表:对于*默认域和附加域,不需要为每个附加域创建 ID 映射配置
- 列表:只适用于特定域
- 列表:所有计算用户标识符(UID)和组标识符(GID)的域用户和组都位于配置范围内。它们在域成员中自动可用。
- 列表:您不需要手动分配 ID、主目录和登录 shell。
- 列表:没有重复的 ID,即使多域环境中的多个对象具有相同的相对标识符(RID)。
- 命令/配置摘录:
idmap config * : backend = autorid
idmap config * : range = 10000-999999- 注意:注意 如果您对默认域使用autorid,为域添加额外的 ID 映射配置是可选的。
- 注意:警告 设置范围并开始使用 Samba 后,您只能增加范围的上限。对范围的任何其他变化都可能会导致分配新的 ID,从而会丢失文件的所有者信息。
1.5. 将 Samba 设置为 AD 域成员服务器
- 要点:如果您正在运行 AD 或 NT4 域,请使用 Samba 将您的 Red Hat Enterprise Linux 服务器添加为域的成员。
- 要点:这有助于您获得以下内容:
- 列表:访问其他域成员上的域资源
- 列表:对本地服务(如 sshd)验证域用户
- 列表:托管在服务器上的共享目录和打印机,以充当文件和打印服务器
1.5.1. 将 RHEL 系统添加到 AD 域中
- 要点:Samba Winbind 是系统安全服务守护进程(SSSD)的替代选择。它将 Red Hat Enterprise Linux (RHEL)系统与 Active Directory (AD)连接。您可以使用 realmd 将 RHEL 系统加入到 AD 域来配置 Samba Winbind 。
- 要点:流程
- 列表:如果您的 AD 需要弃用的 RC4 加密类型进行 Kerberos 验证,请在 RHEL 中启用对这些密码的支持: # update-crypto-policies --set DEFAULT:AD-SUPPORT
- 列表:安装以下软件包: # dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation
- 列表:要在域成员中共享目录或打印机,请安装samba 软件包: # dnf install samba
- 列表:备份现有的/etc/samba/smb.conf Samba 配置文件: # mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
- 列表:加入域。例如,要加入名为ad.example.com的域: # realm join --membership-software=samba --client-software=winbind ad.example.com 使用上面的命令,realm工具会自动: 为ad.example.com域中的成员创建/etc/samba/smb.conf文件 将用于用户和组查找的winbind模块添加到/etc/nsswitch.conf文件中 更新/etc/pam.d/目录中的可插拔验证模块(PAM)配置文件 启动winbind服务,并使服务在系统引导时启动
- 列表:为ad.example.com域中的成员创建/etc/samba/smb.conf文件
- 命令/配置摘录:
# update-crypto-policies --set DEFAULT:AD-SUPPORT
# dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation- 注意:重要 要启用 Samba 来查询域用户和组信息,必须在启动smb之前运行winbind服务。
1.5.2. 使用 MIT Kerberos 的本地授权插件
- 要点:winbind 服务向域成员提供 {AD} 用户。要为本地服务验证域用户,请使用 winbind_krb5_localauth 插件。这会通过 winbind 将 Kerberos 主体映射到 {AD} 帐户。
- 要点:当 Kerberos 和 {AD} 使用不同的帐户名称格式时,身份验证可能会失败。考虑将 sAMAccountName 属性设置为 EXAMPLE 的 {AD} 用户。如果用户尝试使用小写的用户名登录,Kerberos 会以大写形式返回用户名。因此,条目不匹配,身份验证失败。
- 列表:Samba 被配置为 {AD} 的成员。
- 列表:Red Hat Enterprise Linux 对{AD}的登录尝试进行身份验证。
- 列表:winbind服务在运行。
- 列表:编辑/etc/krb5.conf文件,并添加以下部分: [plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind } 如需更多信息,请参阅系统中的 winbind_krb5_localauth (8) 手册页。
- 命令/配置摘录:
[plugins] localauth = { module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so enable_only = winbind }1.5.3. 对 Samba 客户端启用证书自动注册
- 要点:在 Samba 客户端上启用证书自动注册,以便从 Active Directory (AD)证书颁发机构(CA)自动注册证书请求和续订。此功能通过在没有手动监控或用户交互的情况下管理证书来防止中断。
- 要点:如果 AD 提供证书颁发机构(CA)且 RHEL 主机是 AD 的成员,则证书自动注册可用。在 RHEL 主机上启用此功能。然后,Samba 从 AD 应用自动注册组策略,并配置 certmonger 服务来请求和管理证书。
- 列表:Samba 配置为 AD 的成员。
- 列表:AD 中的 Windows 服务器有安装了以下服务的 Active Directory Certificate Services 服务器角色: 证书颁发机构 证书注册 策略 Web 服务
- 列表:证书颁发机构
- 列表:证书注册
- 列表:策略 Web 服务
- 列表:互联网信息服务(ISS)被配置为通过 HTTPS 提供证书自动注册功能。
- 命令/配置摘录:
# dnf install samba-gpupdate
kerberos method = secrets and keytab sync machine password to keytab = "/etc/krb5.keytab:account_name:sync_spns:spn_prefixes=host:sync_kvno:machine_password", "/etc/samba/cepces.keytab:account_name:machine_password" apply group policies = yes1.6. 在 IdM 域成员中设置 Samba
- 要点:您可以在加入到 Red Hat Identity Management (IdM)域的主机上配置 Samba。来自IdM的用户,以及来自受信任的 Active Directory(AD)域的用户(如果有的话)可以访问 Samba 提供的共享和打印机服务。
- 要点:如果 AD 域中的用户通过 Samba 访问共享和打印机服务,请确保在 AD 中启用了高级加密标准(AES)。
- 注意:重要 对 IdM 域成员使用 Samba 是一种不受支持的技术预览特性,且包含了某些限制。例如,IdM 信任控制器不支持活动目录全局目录服务。它们还不支持使用分布式计算环境/远程过程调用(DCE/RPC)协议解析 IdM 组。因此,在登录到其他 IdM 客户端时,AD 用户只能访问托管在 IdM 客户端上的 Samba 共享和打印机。登录到 Windows 机器的 AD 无法访问托管在 IdM 域成员中的 Samba 共享。 我们鼓励在 IdM 域成员中部署 Samba 的用户向红帽提供反馈意见。
1.6.1. 先决条件
- 列表:主机作为 IdM 域的客户端加入。
- 列表:IdM 服务器和客户端必须运行在 RHEL 10 上。
1.6.2. 准备 IdM 域以便在域成员中安装 Samba
- 要点:在 IdM 客户端上配置 Samba 之前,您必须在 IdM 服务器上使用 ipa-adtrust-install 工具来准备 IdM 域。
- 要点:运行ipa-adtrust-install命令的任何系统都会自动成为 AD 信任控制器。但是,您只能在 IdM 服务器上运行ipa-adtrust-install一次。
- 列表:IdM 服务器已安装。
- 列表:您有 root 特权来安装软件包和重启 IdM 服务。
- 列表:安装所需的软件包: [root@ipaserver ~]# dnf install ipa-server-trust-ad samba-client
- 列表:以 IdM 管理用户身份进行身份验证: [root@ipaserver ~]# kinit admin
- 列表:运行ipa-adtrust-install工具: [root@ipaserver ~]# ipa-adtrust-install 如果 IdM 安装了集成的 DNS 服务器,则会自动创建 DNS 服务记录。 如果您安装的IdM没有集成 DNS 服务器,ipa-adtrust-install会打印一个服务记录列表,您必须手动将其添加到DNS后才能继续操作。
- 列表:该脚本会提示您/etc/samba/smb.conf已存在,并将被重写: WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yes
- 命令/配置摘录:
[root@ipaserver ~]# dnf install ipa-server-trust-ad samba-client
[root@ipaserver ~]# kinit admin1.6.3. 在 IdM 客户端中安装和配置 Samba 服务器
- 要点:您可以在 IdM 客户端上安装和配置 Samba,以安全地共享具有集成身份验证的文件。这利用 IdM 域帐户来访问。确保适当的先决条件和配置,以便在您的网络上启用无缝资源共享。
- 要点:先决条件
- 列表:IdM 服务器和客户端必须运行在 RHEL 10 或更高版本上。
- 列表:IdM 域已就绪,如 准备 IdM 域以便在域成员上安装 Samba 中所述。
- 列表:如果 IdM 具有配置了 AD 的信任,请为 Kerberos 启用 AES 加密类型。例如,使用组策略对象(GPO)来启用 AES 加密类型。详情请参阅 使用 GPO 在活动目录中启用 AES 加密。
- 列表:安装ipa-client-samba软件包: [root@idm_client]# dnf install ipa-client-samba
- 列表:使用ipa-client-samba工具准备客户端并创建初始 Samba 配置: [root@idm_client]# ipa-client-samba Searching for IPA server... IPA server: DNS discovery Chosen IPA master: idm_server.idm.example.com SMB principal to be created: cifs/idm_client.idm.example.com@IDM.EXAMPLE.COM NetBIOS name to be used: IDM_CLIENT Discovered domains to use: D…
- 列表:默认情况下,ipa-client-samba 会自动将 [homes] 部分添加到 /etc/samba/smb.conf 文件中。本节在用户连接时动态共享用户的主目录。如果用户在这个服务器上没有主目录,或者您不想共享主目录,请从 /etc/samba/smb.conf 中删除它们: [homes] read only = no
- 命令/配置摘录:
[root@idm_client]# dnf install ipa-client-samba
[root@idm_client]# ipa-client-samba- 注意:注意 不要启动 nmbd 服务。当将 Samba 与 Active Directory 搭配使用时,互操作性不需要 NetBIOS - DNS 在 AD 环境中处理名称解析。
1.6.4. 如果 IdM 信任新域,请手动添加 ID 映射配置
- 要点:Samba 需要访问资源的每个域的 ID 映射配置。在 IdM 客户端上运行的现有 Samba 服务器上,手动添加配置。在向 AD 域添加新信任后执行此操作。
- 要点:先决条件
- 列表:您在 IdM 客户端中配置了 Samba。之后,IdM 增加了一个新的信任。
- 列表:必须在可信 AD 域中禁用 Kerberos 的数据加密标准(DES)和 RC4 加密类型。为了安全起见,RHEL 10 不支持这些弱加密类型。
- 列表:使用主机的 keytab 进行身份验证: [root@idm_client]# kinit -k
- 列表:使用ipa idrange-find命令来显示新域的基本 ID 和 ID 范围大小。例如,以下命令显示了ad.example.com域的值: [root@idm_client]# ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw --------------- 1 range matched --------------- cn: AD.EXAMPLE.COM_id_range ipabaseid: 1918400000 ipaidrangesize: 200000 ipabaserid: 0 ipanttrusteddomainsid: S-1-5-21-9…
- 列表:要计算可用最高的 ID,请使用以下公式: maximum_range = ipabaseid + ipaidrangesize - 1 使用上一步中的值,ad.example.com域的最大可用 ID 是1918599999(1918400000 + 200000 - 1)。
- 列表:编辑/etc/samba/smb.conf文件,并将域的 ID 映射配置添加到[global]部分: idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sss 将 ipabaseid 属性中的值指定为最低值,并将上一步中的 computed 值指定为最高值。
- 命令/配置摘录:
[root@idm_client]# kinit -k
[root@idm_client]# ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw1.6.5. 其它资源
- 列表:安装身份管理客户端
- 列表:使用 GPO 在 Active Directory 中启用 AES 加密类型
1.7. 设置使用 POSIX ACL 的 Samba 文件共享
- 要点:Samba 支持与 POSIX 访问控制列表(ACL)的共享。使用 chmod 等实用程序在本地管理 Samba 服务器上的权限。在具有扩展属性的文件系统上,ACL 可以包含多个用户和组。
- 注意:注意 您还可以使用精细的 Windows ACL。
1.7.1. 添加使用 POSIX ACL 的共享
- 要点:您可以创建一个名为 example 的共享,该共享提供 /srv/samba/example/ 目录的内容,并使用 POSIX ACL。
- 要点:先决条件
- 列表:独立服务器
- 列表:域成员
- 列表:如果目录不存在,请创建它。例如: # mkdir -p /srv/samba/example/
- 列表:如果您在enforcing模式下运行 SELinux,请在目录中设置samba_share_t上下文: # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?" # restorecon -Rv /srv/samba/example/
- 列表:在目录中设置文件系统 ACL。详情请查看: 对使用 POSIX ACL 的 Samba 共享设置标准 ACL 对使用 POSIX ACL 的共享设置扩展 ACL。
- 列表:对使用 POSIX ACL 的 Samba 共享设置标准 ACL
- 命令/配置摘录:
# mkdir -p /srv/samba/example/
# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"- 注意:注意 无论文件系统 ACL 是什么;如果您没有设置read only = no,Samba 会以只读模式共享该目录。
1.7.2. 在使用 POSIX ACL 的 Samba 共享中设置标准 Linux ACL
- 要点:Linux 中的标准 ACL 支持为一个所有者、一个组和所有其他未定义用户设置权限。您可以使用chown、chgrp和chmod工具来更新 ACL。如果您需要精确控制,请使用更复杂的 POSIX ACL。
- 要点:以下流程将 /srv/samba/example/ 目录的所有者设置为 root 用户。它为 Domain Users 组授予读取和写入权限,并拒绝访问所有其他用户。
- 列表:存在要设置 ACL 的 Samba 共享。
- 列表:运行以下命令来初始化进程: # chown root:"Domain Users" /srv/samba/example/ # chmod 2770 /srv/samba/example/ 注意 在目录中启用 set-group-ID (SGID)位会自动将默认组设置为目录组。这适用于所有新文件和子目录。这与将它设置为创建新目录条目的用户的主组群行为不同。
- 命令/配置摘录:
# chown root:"Domain Users" /srv/samba/example/
# chmod 2770 /srv/samba/example/- 注意:注意 在目录中启用 set-group-ID (SGID)位会自动将默认组设置为目录组。这适用于所有新文件和子目录。这与将它设置为创建新目录条目的用户的主组群行为不同。
1.7.3. 在使用 POSIX ACL 的 Samba 共享中设置扩展的 ACL
- 要点:如果文件系统中保存了共享目录的支持扩展 ACL,您可以使用它们设置复杂的权限。扩展 ACL 可以包含多个用户和组群的权限。
- 要点:扩展 POSIX ACL 可让您使用多个用户和组配置复杂的 ACL。但是,您只能设置以下权限:
- 列表:无权限
- 列表:读权限
- 列表:写权限
- 列表:完整控制
- 列表:存在要设置 ACL 的 Samba 共享。
- 列表:在 /etc/samba/smb.conf 文件的共享部分中启用以下参数,以启用扩展 ACL 的 ACL 继承: inherit acls = yes 详情请查看 smb.conf(5)手册页中的参数描述。
- 命令/配置摘录:
inherit acls = yes
# systemctl restart smb- 表格样本(共 9 行):
- 主体 | 权限 | 适用于
- domain\DomainAdmins | 完整控制 | 这个文件夹、子文件夹和文件
- Domain\Domain Users | 读和执行 | 这个文件夹、子文件夹和文件
- 每个人 [a] | 无 | 这个文件夹、子文件夹和文件
1.8. 对使用 POSIX ACL 的共享设置权限
- 要点:要限制或授予 Samba 共享的访问权限,您可以在 /etc/samba/smb.conf 文件的共享部分中设置某些参数。
- 要点:使用基于共享的设置来限制对共享的访问,例如拒绝特定主机的访问。
- 注意:注意 如果用户、组或主机能够访问共享,则进行基于共享的权限管理。这些设置不会影响文件系统访问控制列表(ACL)。
1.8.1. 先决条件
- 列表:与 POSIX ACL 的共享已被设置。
1.8.2. 配置基于用户和组群的共享访问权限
- 要点:基于用户和组的访问控制,使您能够赋予或拒绝特定用户和组对共享的访问权限。如需更多信息,请参阅系统中的 smb.conf (5) 手册页。
- 要点:先决条件
- 列表:已存在您要设置用户或组群访问的 Samba 共享。
- 列表:例如,您可以启用 Domain Users 组的所有成员访问共享,并拒绝 用户帐户 的访问。为此,请在共享配置中添加以下参数: valid users = +DOMAIN"Domain Users" invalid users = DOMAIN\user invalid users 参数的优先级高于valid users 参数。例如,如果 用户帐户是 Domain Users 组的成员,则上例中会拒绝访问。
- 列表:重新载入 Samba 配置: # smbcontrol all reload-config
- 命令/配置摘录:
valid users = +DOMAIN\"Domain Users" invalid users = DOMAIN\user
# smbcontrol all reload-config1.8.3. 配置基于主机的共享访问权限
- 要点:您可以根据客户端主机名、IP 地址或 IP 范围授予或拒绝对共享的访问。您可以使用基于主机的访问控制进行此操作。如需更多信息,请参阅系统中的 smb.conf (5) 手册页。
- 要点:以下流程解释了启用 127.0.0.1 IP 地址、192.0.2.0/24 IP 范围和 client1.example.com 主机来访问共享。它还拒绝对 client2.example.com 主机的访问。
- 列表:已存在您要设置基于主机的访问的 Samba 共享。
- 列表:将以下参数添加到 /etc/samba/smb.conf 文件中共享的配置中: hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.com hosts deny = client2.example.com hosts deny 参数的优先级高于 hosts allow。例如,如果 client1.example.com 解析为 hosts allow 参数中列出的 IP 地址,则此主机的访问将被拒绝。
- 列表:重新载入 Samba 配置: # smbcontrol all reload-config
- 命令/配置摘录:
hosts allow = 127.0.0.1 192.0.2.0/24 client1.example.com hosts deny = client2.example.com
# smbcontrol all reload-config1.9. 设置使用 Windows ACL 的共享
- 要点:Samba 支持在共享和文件系统对象上设置 Windows 访问控制列表(ACL)。
- 要点:这个功能可让您:
- 列表:使用精细 Windows ACL
- 列表:使用 Windows 管理共享权限和文件系统 ACL
1.9.1. 授予 SeDiskOperatorPrivilege 特权
- 要点:只有被赋予了 SeDiskOperatorPrivilege 特权的用户和组才能对使用了 Windows ACL 的共享配置权限。
- 要点:流程
- 列表:例如,要对 DOMAIN\Domain Admins 组赋予 SeDiskOperatorPrivilege 特权: # net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully granted rights. 注意 在域环境中,对域组赋予 SeDiskOperatorPrivilege。这可让您通过更新用户的组成员资格来集中管理权限。
- 列表:列出所有被赋予了 SeDiskOperatorPrivilege 的用户和组: # net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMAIN\administrator" Enter administrator's password: SeDiskOperatorPrivilege: BUILTIN\Administrators DOMAIN\Domain Admins
- 命令/配置摘录:
# net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password: Successfully granted rights.- 注意:注意 在域环境中,对域组赋予 SeDiskOperatorPrivilege。这可让您通过更新用户的组成员资格来集中管理权限。
1.9.2. 启用 Windows ACL 支持
- 要点:要配置支持 Windows ACL 的共享,您必须在 Samba 中启用此功能。
- 要点:先决条件
- 列表:在 Samba 服务器中配置了一个用户共享。
- 列表:要对所有共享全局启用它,请在 /etc/samba/smb.conf 文件的 [global] 部分中添加以下设置: vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes 或者,您可以通过将相同的参数添加到共享部分来启用对单个共享的 Windows ACL 支持。
- 列表:重启 smb 服务: # systemctl restart smb
- 命令/配置摘录:
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
# systemctl restart smb1.9.3. 添加使用 Windows ACL 的共享
- 要点:您可以创建一个名为 example 的共享,其共享 /srv/samba/example/ 目录的内容,并使用 Windows ACL 。
- 要点:流程
- 列表:如果不存在,请创建文件夹。例如: # mkdir -p /srv/samba/example/
- 列表:如果您在enforcing模式下运行 SELinux,请在目录中设置samba_share_t上下文: # semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?" # restorecon -Rv /srv/samba/example/
- 列表:将共享示例添加到 /etc/samba/smb.conf 文件中。例如,添加启用了共享的写操作: [example] path = /srv/samba/example/ read only = no 注意 无论文件系统 ACL 是什么;如果您没有设置read only = no,Samba 会以只读模式共享该目录。
- 列表:如果您还没有在 [global] 部分中启用 Windows ACL 支持,请在 [example] 部分中添加以下参数以启用此功能: vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 列表:打开所需的端口并使用firewall-cmd工具重新载入防火墙配置: # firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
- 命令/配置摘录:
# mkdir -p /srv/samba/example/
# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"- 注意:注意 无论文件系统 ACL 是什么;如果您没有设置read only = no,Samba 会以只读模式共享该目录。
1.9.4. 管理使用 Windows ACL 的共享的共享权限和文件系统 ACL
- 要点:要管理与 Windows ACL 的 Samba 共享上的共享权限和文件系统 ACL,请使用 Windows 应用程序,如 计算机管理。详情请查看 Windows 文档。或者,使用 smbcacls 工具来管理 ACL。
- 要点:其它资源
- 列表:设置使用 POSIX ACL 的 Samba 文件共享
- 注意:注意 要从 Windows 修改文件系统权限,您必须使用赋予了 SeDiskOperatorPrivilege 特权的帐户。
1.10. 使用 smbcacls 在 SMB 共享上管理 ACL
- 要点:smbcacls 工具列出了、设置和删除文件和目录的访问控制列表(ACL)。它适用于存储在服务器消息块(SMB)共享中的资源。
- 要点:您可以使用 smbcacls 来管理文件系统 ACL:
- 列表:在使用高级 Windows ACL 或 POSIX ACL 的本地或远程 Samba 服务器中
- 列表:在 Red Hat Enterprise Linux 上,远程管理在 Windows 上托管的共享的 ACL
1.10.1. 访问控制条目
- 要点:访问控制条目(ACE)定义文件和目录的权限、继承和访问权限。ACEs 有助于通过访问控制列表(ACL)解释和管理文件系统访问。这在 SMB 环境中尤其重要。
- 要点:文件系统对象的每个 ACL 条目都包含以下格式的访问 ACE:
- 列表:代表一个或多个 Windows 权限的十六进制值。 下表以十六进制格式显示了高级 Windows 权限及其对应的值: Expand 表 1.3. 十六进制格式的Windows权限及其相应的smbcacls值 Windows 权限 十六进制值 全控制 0x001F01FF 遍历文件夹 / 执行文件 0x00100020 列出文件夹 / 读数据 0x00100001 读取属性 0x00100080 读取扩展属性 0x00100008 创建文件 / 写数据 0x00100002 创建文件夹/附加数据 0x00100004 写入属性 0x00100100 写扩展属性 0x00100010 删除子文件夹和…
- 列表:smbcacls 别名。下表显示了可用的别名: Expand 表 1.4. 现有 smbcacls 别名及其对应的 Windows 权限 smbcacls 别名 映射至 Windows 权限 R 读 READ 读和执行 W 特殊: 创建文件 / 写数据 创建文件夹/附加数据 写入属性 写扩展属性 读取权限 D 删除 P 更改权限 O 获取所有权 X 遍历 / 执行 CHANGE 修改 FULL 完整控制 Show more 注意 设置权限时,您可以组合单例别名。例如,您可以设置 RD 来应用 Windows 权限 读 和 删除。但是,您既不能组合多个非字母别名,也无法组合别名和十六进制值。
- 列表:ACE 掩码计算
- 命令/配置摘录:
security_principal:access_right/inheritance_information/permissions
AD\Domain Users:ALLOWED/OI|CI/CHANGE- 注意:注意 设置权限时,您可以组合单例别名。例如,您可以设置 RD 来应用 Windows 权限 读 和 删除。但是,您既不能组合多个非字母别名,也无法组合别名和十六进制值。
- 表格样本(共 5 行):
- 值 | 描述 | 映射到
- OI | 对象实例 | 这个文件夹和文件
- CI | 容器继承 | 这个文件夹和子文件夹
- IO | 只继承 | ACE 不适用于当前文件或目录
1.10.2. 使用 smbcacls 显示 ACL
- 要点:要显示 SMB 共享的 ACL,请使用 smbcacls 工具。如果您运行不带任何操作参数的 smbcacls,如 --add,那么工具会显示文件系统对象的 ACL。
- 要点:流程
- 列表:例如,列出 //server/example 共享的根目录的 ACL: # smbcacls //server/example / -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: REVISION:1 CONTROL:SR|PD|DI|DP OWNER:AD\Administrators GROUP:AD\Domain Users ACL:AD\Administrator:ALLOWED/OI|CI/FULL ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE ACL:AD\Domain Guests:ALLOWED/O…
- 列表:REVISION :安全描述符的内部 Windows NT ACL 修订版
- 列表:CONTROL :安全描述符控制
- 列表:OWNER :安全描述符所有者的名称或 SID
- 列表:GROUP :安全描述符组的名称或 SID
- 列表:ACL 条目.详情请参阅 访问控制条目。
- 命令/配置摘录:
# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password: REVISION:1 CONTROL:SR|PD|DI|DP OWNER:AD\Administrators GROUP:AD\Domain Users ACL:AD\Administrator:ALLOWED/OI|CI/FULL ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE ACL:AD\Domain Guests:ALLOWED/OI|CI/0x001000211.10.3. ACE 掩码计算
- 要点:在大多数情况下,当添加或更新 ACE 时,您可以使用 smbcacls 别名。
- 要点:但是,如果要设置高级 Windows 权限,则必须使用位 OR 操作来计算正确的值。您可以使用以下 shell 命令计算值:
- 列表:遍历文件夹/执行文件(0x00100020)
- 列表:列出文件夹/读数据(0x00100001)
- 列表:读属性(0x00100080)
- 列表:现有 smbcacls 别名及其对应的 Windows 权限
- 列表:十六进制格式的Windows权限及其相应的smbcacls值
- 命令/配置摘录:
# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))1.10.4. 使用 smbcacls 添加、更新和删除 ACL
- 要点:根据您传递给 smbcacls 工具的参数,您可以添加、更新和删除文件或目录的 ACL。
- 要点:添加 ACL
- 命令/配置摘录:
# smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
ACL for SID principal_name not found1.11. 允许用户在 Samba 服务器上共享目录
- 要点:在 Samba 服务器上,你可以配置用户共享目录,而无需root权限。
1.11.1. 启用用户共享功能
- 要点:在用户可以共享目录之前,管理员必须在 Samba 中启用用户共享。
- 要点:流程
- 列表:如果本地 example 组不存在,请创建它: # groupadd example
- 列表:为 Samba 准备目录以存储用户共享定义并正确设置其权限。例如: 创建目录: # mkdir -p /var/lib/samba/usershares/ 为 example 组设置写权限: # chgrp example /var/lib/samba/usershares/ # chmod 1770 /var/lib/samba/usershares/ 设置粘性位以防止用户重命名或删除此目录中其他用户存储的文件。
- 列表:创建目录: # mkdir -p /var/lib/samba/usershares/
- 列表:为 example 组设置写权限: # chgrp example /var/lib/samba/usershares/ # chmod 1770 /var/lib/samba/usershares/
- 列表:设置粘性位以防止用户重命名或删除此目录中其他用户存储的文件。
- 列表:编辑 /etc/samba/smb.conf 文件,并将以下内容添加到 [global] 部分中: 设置您配置用来存储用户共享定义的目录的路径。例如: usershare path = /var/lib/samba/usershares/ 设置允许在这个服务器上创建多少个用户共享 Samba。例如: usershare max shares = 100 如果您对 usershare max shares 参数使用默认值 0,则用户共享将被禁用。 可选:设置绝对目录路径的列表。例如,要配置 Samba 只允许共享 /data 和 /srv 目录的子目录,请设置: usershare prefix allow list = /data…
- 命令/配置摘录:
# groupadd example
# mkdir -p /var/lib/samba/usershares/1.11.2. 添加用户共享
- 要点:在 Samba 中启用用户共享功能后,用户可以使用 net usershare add 在 Samba 服务器上共享目录,而无需 root 权限。
- 要点:net usershare add 命令的说明:
- 命令/配置摘录:
$ net usershare add example /srv/samba/ "" "AD\Domain Users":F,Everyone:R guest_ok=yes- 注意:重要 如果在创建用户共享时设置了 ACL,您必须在 ACL 之前指定comment参数。要设置空的comment,请在双引号中使用空字符串。
1.11.3. 更新用户共享的设置
- 要点:要更新用户共享的设置,请使用 net usershare add 命令覆盖共享。使用相同的共享名称和新设置。请参阅 添加用户共享。
1.11.4. 显示现有用户共享的信息
- 要点:用户可以在 Samba 服务器上输入 net usershare info 命令,来显示用户共享及其设置。
- 要点:先决条件
- 列表:在 Samba 服务器中配置了一个用户共享。
- 列表:显示任意用户创建的所有用户共享: $ net usershare info -l [share_1] path=/srv/samba/ comment= usershare_acl=Everyone:R,host_name\user:F, guest_ok=y ... 若要只列出运行命令的用户所创建的共享,请省略 -l 参数。
- 列表:若要只显示关于特定共享的信息,请将共享名称或通配符传给命令。例如,显示名称以 share_ 开头的共享的信息: $ net usershare info -l share_*
- 命令/配置摘录:
$ net usershare info -l
[share_1]1.11.5. 列出用户共享
- 要点:如果您想只列出可用的用户共享,而不列出它们的设置,请使用 net usershare list 命令。
- 要点:先决条件
- 列表:在 Samba 服务器中配置了一个用户共享。
- 列表:列出任意用户创建的共享: $ net usershare list -l share_1 share_2 ... 若要只列出运行命令的用户所创建的共享,请省略 -l 参数。
- 列表:若要只列出特定的共享,请将共享名称或通配符传给命令。例如,只列出名称以 share_ 开头的共享 : $ net usershare list -l share_*
- 命令/配置摘录:
$ net usershare list -l
share_1 share_2 ...1.11.6. 删除用户共享
- 要点:若要删除用户共享,可使用 net usershare delete 命令。使用此命令作为创建共享的用户或 root 用户。
- 要点:先决条件
- 列表:在 Samba 服务器中配置了一个用户共享。
- 列表:删除用户: $ net usershare delete share_name
- 命令/配置摘录:
$ net usershare delete share_name1.12. 配置共享以允许不进行身份验证的访问
- 要点:在某些情况下,您想要共享一个用户无需身份验证即可连接到的目录。若要对此进行配置,请对共享启用guest访问。
- 注意:警告 不需要身份验证的共享可能会造成安全隐患。
1.12.1. 启用对共享的客户机访问
- 要点:如果对共享启用了 guest 访问,Samba 会将guest连接映射到guest account参数中设置的操作系统帐户。如果帐户列在文件系统 ACL 中或 POSIX 权限允许,来宾用户可以访问此共享上的文件。
- 要点:例 1.6. 客户端共享权限
- 列表:允许 guest 用户读 file1.txt
- 列表:允许 guest 用户读和修改 file2.txt
- 列表:防止 guest 用户读或修改 file3.txt
- 列表:编辑 /etc/samba/smb.conf 文件: 如果这是您在这个服务器上设置的第一个客户机共享: 在 [global] 部分中设置map to guest = Bad User : [global] ... map to guest = Bad User 使用这个设置,Samba 将拒绝使用错误密码的登录尝试,除非用户名不存在。如果指定的用户名不存在,且在共享中启用了 guest 访问,Samba 会将连接视为 guest 登录。 默认情况下,Samba 将 guest 帐户映射到 Red Hat Enterprise Linux 上的 nobody 帐户。另外,您也可以设置另外一个帐户。例如: [global] ..…
- 列表:如果这是您在这个服务器上设置的第一个客户机共享: 在 [global] 部分中设置map to guest = Bad User : [global] ... map to guest = Bad User 使用这个设置,Samba 将拒绝使用错误密码的登录尝试,除非用户名不存在。如果指定的用户名不存在,且在共享中启用了 guest 访问,Samba 会将连接视为 guest 登录。 默认情况下,Samba 将 guest 帐户映射到 Red Hat Enterprise Linux 上的 nobody 帐户。另外,您也可以设置另外一个帐户。例如: [global] ... guest account = user_nam…
- 列表:在 [global] 部分中设置map to guest = Bad User : [global] ... map to guest = Bad User 使用这个设置,Samba 将拒绝使用错误密码的登录尝试,除非用户名不存在。如果指定的用户名不存在,且在共享中启用了 guest 访问,Samba 会将连接视为 guest 登录。
- 命令/配置摘录:
-rw-r--r--. 1 root root 1024 1. Sep 10:00 file1.txt -rw-r-----. 1 nobody root 1024 1. Sep 10:00 file2.txt -rw-r-----. 1 root root 1024 1. Sep 10:00 file3.txt
[global] ... map to guest = Bad User1.13. 为 macOS 客户端配置 Samba
- 要点:fruit 虚拟文件系统(VFS) Samba 模块提供了与 Apple 服务器消息块(SMB)客户端的增强的兼容性。
1.13.1. 优化 Samba 配置,以便为 macOS 客户端提供文件共享
- 要点:fruit 模块提供了 Samba 与 macOS 客户端的增强的兼容性。您可以为托管在 Samba 服务器上的所有共享配置模块,来为 macOS 客户端优化文件共享。如需更多信息,请参阅系统中的 vfs_fruit (8) 手册页。
- 要点:先决条件
- 列表:Samba 配置为文件服务器。
- 列表:编辑 /etc/samba/smb.conf 文件,并在 [global] 部分中启用 fruit 和 streams_xattr 虚拟文件系统(VFS)模块: vfs objects = fruit streams_xattr 重要 在启用 streams_xattr 之前,您必须启用 fruit 模块。fruit 模块使用备用数据流(ADS)。因此,您还必须启用 streams_xattr 模块。
- 列表:可选: 要在共享上提供 macOS Time Machine 支持,请在 /etc/samba/smb.conf 中的共享配置中添加以下设置: fruit:time machine = yes
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 列表:重新载入 Samba 配置: # smbcontrol all reload-config
- 列表:设置使用 POSIX ACL 的 Samba 文件共享
- 命令/配置摘录:
vfs objects = fruit streams_xattr
fruit:time machine = yes- 注意:注意 全局启用 fruit 模块。在客户端建立第一个连接时,使用 macOS 的客户端协商服务器消息块版本 2 (SMB2) Apple (AAPL)协议扩展。如果客户端首先连接到没有启用 AAPL 扩展的共享,则它不会对任何服务器共享使用扩展。
- 注意:重要 在启用 streams_xattr 之前,您必须启用 fruit 模块。fruit 模块使用备用数据流(ADS)。因此,您还必须启用 streams_xattr 模块。
1.14. 使用 smbclient 工具访问 SMB 共享
- 要点:smbclient 工具可让您访问服务器消息块(SMB)上的文件共享。同样,您可以访问命令行文件传输协议(FTP)客户端。例如,您可以使用它来向共享上传文件和从共享下载文件。
1.14.1. 先决条件
- 列表:samba-client 软件包已安装。
1.14.2. smbclient 互动模式如何工作
- 要点:smbclient的交互模式支持连接到服务器消息块/通用互联网文件系统(SMB/CIFS)共享以及文件和目录的导航。您还可以通过使用内置命令安全地运行常见文件操作。
- 要点:使用 DOMAIN\user 帐户对在 server 上托管的 example 共享进行身份验证:
- 命令/配置摘录:
# smbclient -U "DOMAIN\user" //server/example
Enter domain\user's password: Try "help" to get a list of possible commands. smb: \>1.14.3. 在互动模式中使用 smbclient
- 要点:如果您使用不带 -c 参数的 smbclient,那么工具将进入交互模式。下面的步骤演示了如何连接到 SMB 共享并从子目录中下载文件。
- 要点:流程
- 列表:连接到共享: # smbclient -U "DOMAIN\user_name" //server_name/share_name
- 列表:进到 /example/ 目录: smb: > d /example/
- 列表:列出目录中的文件: smb: \example> ls . D 0 Thu Nov 1 10:00:00 2018 .. D 0 Thu Nov 1 10:00:00 2018 example.txt N 1048576 Thu Nov 1 10:00:00 2018 9950208 blocks of size 1024. 8247144 blocks available
- 列表:下载 example.txt 文件: smb: \example> get example.txt getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)
- 列表:从共享断开: smb: \example> exit
- 命令/配置摘录:
# smbclient -U "DOMAIN\user_name" //server_name/share_name
smb: \> d /example/1.14.4. 在脚本模式中使用 smbclient
- 要点:如果您将 -c 参数传递给 smbclient,您可以在远程 SMB 共享上自动运行命令。这可让您在脚本中使用 smbclient。
- 要点:下面的步骤演示了如何连接到 SMB 共享并从子目录中下载文件。
- 列表:使用以下命令连接到共享,进到 example 目录,下载 example.txt 文件: # smbclient -U DOMAIN\user_name //server_name/share_name -c "cd /example/ ; get example.txt ; exit"
- 命令/配置摘录:
# smbclient -U DOMAIN\user_name //server_name/share_name -c "cd /example/ ; get example.txt ; exit"1.15. 将 Samba 设置为打印服务器
- 要点:如果您将 Samba 设置为打印服务器,那么网络中的客户端可以使用 Samba 进行打印。此外,如果进行了配置, Windows 客户端可以从 Samba 服务器下载驱动程序。
1.15.1. 先决条件
- 要点:Samba 采用以下模式之一设置:
- 列表:独立服务器
- 列表:域成员
1.15.2. 在 Samba 中启用打印服务器支持
- 要点:默认情况下,在 Samba 中不启用打印服务器支持。要将 Samba 用作打印服务器,您必须相应地配置 Samba。
- 要点:先决条件
- 列表:打印机在 CUPS 服务器中配置。 有关在 CUPS 中配置打印机的详情,请查看打印服务器上 CUPS Web 控制台(https://printserver:631/help)中提供的文档。
- 列表:编辑 /etc/samba/smb.conf 文件: 添加 [printers] 部分,以便在 Samba 中启用打印后端: [printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600 重要 [printers] 共享名称是写死的,不能更改。 如果 CUPS 服务器运行在不同的主机或端口上,请在 [printers] 部分中指定设置: cups server = printserver.example.com:631 如果您有很多打印机,请设置比连接到 CUPS 的打印机数高的空闲秒数。例如,如果您有 100 台…
- 列表:添加 [printers] 部分,以便在 Samba 中启用打印后端: [printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600 重要 [printers] 共享名称是写死的,不能更改。
- 列表:如果 CUPS 服务器运行在不同的主机或端口上,请在 [printers] 部分中指定设置: cups server = printserver.example.com:631
- 列表:如果您有很多打印机,请设置比连接到 CUPS 的打印机数高的空闲秒数。例如,如果您有 100 台打印机,请在 [global] 部分中设置: rpcd_spoolss:idle_seconds = 200 如果这个设置在您的环境中没有缩放,请在 [global] 部分中增加 rpcd_spools worker 的数量: rpcd_spoolss:num_workers = 10 默认情况下,rpcd_spools 启动 5 个 worker。
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 命令/配置摘录:
[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600
cups server = printserver.example.com:631- 注意:注意 打印作业和打印机操作需要远程过程调用(RPC)。默认情况下,Samba 根据需要启动 rpcd_spools 服务来管理 RPC。在第一个 RPC 调用过程中,或者当您更新 Common UNIX 打印系统(CUPS)中的打印机列表时,Samba 会检索打印机信息。每台打印机可能需要大约 1 秒。因此,如果您有超过 50 台打印机,请调优 rpcd_spools 设置。
- 注意:重要 [printers] 共享名称是写死的,不能更改。
1.15.3. 手动共享特定的打印机
- 要点:如果您将 Samba 配置为打印服务器,它会共享在 Common UNIX 打印系统(CUPS)后端中配置的所有打印机。以下流程解释了如何只共享特定的打印机。
- 要点:先决条件
- 列表:Samba 被设置为打印服务器
- 列表:编辑 /etc/samba/smb.conf 文件: 在 [global] 部分中,通过以下设置禁用自动打印机共享: load printers = no 为您要共享的每个打印机添加一段。例如,要在 Samba 中将 CUPS 后端中名为 example 的打印机共享为 Example-Printer,请添加以下部分: [Example-Printer] path = /var/tmp/ printable = yes printer name = example 您不需要为每个打印机单独设置 spool 目录。您可以在打印机的path 参数中设置与您在 [printers] 部分中设置的完全相同的 spool 目录。
- 列表:在 [global] 部分中,通过以下设置禁用自动打印机共享: load printers = no
- 列表:为您要共享的每个打印机添加一段。例如,要在 Samba 中将 CUPS 后端中名为 example 的打印机共享为 Example-Printer,请添加以下部分: [Example-Printer] path = /var/tmp/ printable = yes printer name = example 您不需要为每个打印机单独设置 spool 目录。您可以在打印机的path 参数中设置与您在 [printers] 部分中设置的完全相同的 spool 目录。
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 列表:重新载入 Samba 配置: # smbcontrol all reload-config
- 命令/配置摘录:
load printers = no
[Example-Printer] path = /var/tmp/ printable = yes printer name = example1.16. 在 Samba 打印服务器中为 Windows 客户端设置自动打印机驱动程序下载
- 要点:如果您在为 Windows 客户端运行 Samba 打印服务器,你可以上传驱动程序并预配置打印机。
- 要点:如果用户连接到打印机,Windows 会自动在客户端本地下载并安装驱动程序。用户不需要本地管理员权限进行安装。另外,Windows 应用预配置的驱动程序设置,如纸匣的数量。
1.16.1. 先决条件
- 列表:Samba 被设置为打印服务器
1.16.2. 有关打印机驱动程序的基本信息
- 要点:Samba 中打印机驱动程序的主要概念包括支持的版本和限制。为 32 位和 64 位 Windows 客户端准备和提供兼容驱动程序的驱动程序在不同的环境中都适用。
- 要点:支持的驱动程序模型版本
- 列表:如果驱动程序采用压缩格式提供,请解包它。
- 列表:有些驱动程序需要启动一个设置的应用程序,该应用程序在本地在 Windows 主机上安装驱动程序。在某些情况下,安装程序会在设置运行时将单个文件提取到操作系统的临时文件夹中。使用驱动程序文件上传: 启动安装程序。 将临时文件夹中的文件复制到新位置。 取消安装。
- 列表:启动安装程序。
- 列表:将临时文件夹中的文件复制到新位置。
- 列表:取消安装。
1.16.3. 启用用户上传和预配置驱动程序
- 要点:要上传和预配置打印机驱动程序,请授予 SePrintOperatorPrivilege 特权。用户还需要 printadmin 组中的成员资格。Red Hat Enterprise Linux 在安装 samba 时创建此组,并在 1000 下分配动态系统 GID。
- 要点:流程
- 列表:例如,要对 printadmin 组赋予 SePrintOperatorPrivilege 特权: # net rpc rights grant "printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully granted rights. 注意 在域环境中,将 SePrintOperatorPrivilege 赋予域组。这可让您通过更新用户的组成员资格来集中管理权限。
- 列表:列出所有被赋予了 SePrintOperatorPrivilege 的用户和组: # net rpc rights list privileges SePrintOperatorPrivilege -U "DOMAIN\administrator" Enter administrator's password: SePrintOperatorPrivilege: BUILTIN\Administrators DOMAIN\printadmin
- 命令/配置摘录:
# net rpc rights grant "printadmin" SePrintOperatorPrivilege -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password: Successfully granted rights.- 注意:注意 在域环境中,将 SePrintOperatorPrivilege 赋予域组。这可让您通过更新用户的组成员资格来集中管理权限。
1.16.4. 设置 print$ 共享
- 要点:Windows 从打印服务器上的 print$ 共享下载打印机驱动程序。print$ 共享名称是固定的,不可更改。您可以将 /var/lib/samba/drivers/ 共享为 print$,并允许 printadmin 成员上传驱动程序。
- 要点:流程
- 列表:在 /etc/samba/smb.conf 文件中添加 [print$] 部分: [print$] path = /var/lib/samba/drivers/ read only = no write list = printadmin force group = printadmin create mask = 0664 directory mask = 2775 使用这些设置: 只有 printadmin 组成员才能将打印机驱动程序上传到共享。 新创建的文件和目录的组将设置为 printadmin。 新文件的权限将被设置为 664。 新目录的权限将被设置为 2775。 如需更多信息,请参阅启用用户上传和预配置驱动…
- 列表:只有 printadmin 组成员才能将打印机驱动程序上传到共享。
- 列表:新创建的文件和目录的组将设置为 printadmin。
- 列表:新文件的权限将被设置为 664。
- 列表:新目录的权限将被设置为 2775。 如需更多信息,请参阅启用用户上传和预配置驱动程序。
- 列表:要只为所有打印机上传 64 位驱动程序,请在 /etc/samba/smb.conf 文件的 [global] 部分中包含此设置: spoolss: architecture = Windows x64 如果没有这个设置,Windows 只显示您上传的至少 32 位版本的驱动程序。
- 命令/配置摘录:
[print$] path = /var/lib/samba/drivers/ read only = no write list = printadmin force group = printadmin create mask = 0664 directory mask = 2775
spoolss: architecture = Windows x64- 表格样本(共 4 行):
- 主体 | 权限 | 适用于
- 创建者所有者 | 完整控制 | 只适用于子文件夹和文件
- 通过身份验证的用户 | 读和执行、列出目录内容、读 | 这个文件夹、子文件夹和文件
- printadmin | 完整控制 | 这个文件夹、子文件夹和文件
1.16.5. 创建 GPO 以启用客户端信任 Samba 打印服务器
- 要点:最近的 Windows 版本阻止从不受信任的服务器下载非软件包感知型打印机驱动程序。在 AD 域中,创建一个组策略对象(GPO)。GPO 可让客户端信任 Samba 服务器。
- 要点:先决条件
- 列表:Samba 打印服务器是 AD 域的成员。
- 列表:您用来创建 GPO 的 Windows 计算机必须安装有 Windows 远程服务器管理工具(RSAT)。详情请查看 Windows 文档。
- 列表:使用允许编辑组策略的帐户登录 Windows 计算机,如 AD 域 Administrator 用户。
- 列表:打开 组策略管理控制台。
- 列表:右键单击 AD 域并选择 创建此域中的 GPO,并链接到此处。
- 列表:为 GPO 输入一个名称,如 Legacy Printer Driver Policy ,并点击 OK。新的 GPO 将在域条目下显示。
1.16.6. 上传驱动程序和预配置打印机
- 要点:在 Windows 客户端使用 打印管理 应用程序上传托管在 Samba 打印服务器上的驱动程序和预配置打印机。详情请查看 Windows 文档。
1.17. 在启用了 FIPS 模式的服务器上运行 Samba
- 要点:运行启用了 FIPS 模式的 Samba 存在限制。您还可以在运行 Samba 的 Red Hat Enterprise Linux 主机上启用 FIPS 模式。
1.17.1. 在 FIPS 模式中使用 Samba 的限制
- 要点:在联邦信息处理标准(FIPS)模式下运行时,Samba 功能有具体的限制。有些模式在某些条件下工作,其他模式则受到安全合规的限制。
- 要点:在指定条件下,以下 Samba 模式和功能在 FIPS 模式下工作:
- 列表:Samba 仅在 Active Directory (AD)或使用高级加密标准(AES)密码使用 Kerberos 的 Red Hat Enterprise Linux 身份管理(IdM)中作为域成员。
- 列表:Samba 作为 Active Directory 域成员上的文件服务器。但是,这需要客户端使用 Kerberos 向服务器进行身份验证。
- 列表:NT LAN Manager(NTLM)验证,因为 RC4 密码已被阻止
- 列表:服务器消息块版本 1(SMB1)协议
- 列表:独立文件服务器模式,因为它使用了 NTLM 身份验证
- 列表:NT4 风格的域控制器
1.17.2. 在 FIPS 模式下使用 Samba
- 要点:您可以在运行 Samba 的 RHEL 主机上启用 FIPS 模式。
- 要点:先决条件
- 列表:在 Red Hat Enterprise Linux 主机上配置了Samba 。
- 列表:Samba 以 FIPS 模式支持的模式运行。
- 列表:在 RHEL 中启用 FIPS 模式: # fips-mode-setup --enable
- 列表:重启服务器: # reboot
- 列表:使用 testparm 工具验证配置: # testparm -s 如果命令显示任何错误或不兼容,请修复它们以确保 Samba 正常工作。
- 列表:limitations-of-using-samba-in-fips-mode.xml
- 命令/配置摘录:
# fips-mode-setup --enable
# reboot1.18. 调整 Samba 服务器的性能
- 要点:在某些情况下提高了 Samba 性能的设置,以及可能会影响性能的那些会对性能造成负面影响的设置。
1.18.1. 先决条件
- 列表:Samba 被设置为文件或打印服务器。
1.18.2. 设置 SMB 协议版本
- 要点:新的 SMB 版本添加了功能并改进协议性能。Windows 客户端支持最新的 SMB 版本,并在 Samba 执行此操作时获益。默认情况下,Samba 使用最新支持的稳定 SMB 协议版本。
- 要点:以下流程解释了如何对 server max protocol 参数使用默认值。
- 列表:从 /etc/samba/smb.conf 文件的 [global] 部分中删除 server max protocol 参数。
- 列表:重新载入 Samba 配置 # smbcontrol all reload-config
- 命令/配置摘录:
# smbcontrol all reload-config- 注意:注意 要确保启用了最新的稳定的 SMB 协议版本,请不要设置 server max protocol 参数。手动配置需要使用每个新的 SMB 协议版本更新设置。这种方法保持启用最新的协议版本。
1.18.3. 与包含大量文件的目录调整共享
- 要点:Linux 支持区分大小写的文件名。因此,在搜索或访问文件时,Samba需要针对大小写文件名来扫描目录。您可以将共享配置为只以小写或大写来创建新文件,这可以提高性能。
- 要点:先决条件
- 列表:Samba 配置为文件服务器
- 列表:将共享上的所有文件重命名为小写。 注意 使用这个过程中的设置,名称不为小写的文件将不再显示。
- 列表:在共享部分中设置以下参数: case sensitive = true default case = lower preserve case = no short preserve case = no 有关参数的详情,请查看您系统上 smb.conf (5) 手册页中的描述。
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 列表:重新载入 Samba 配置: # smbcontrol all reload-config 应用了这些设置后,此共享上所有新创建的文件的名称都使用小写。由于这些设置,Samba 不再需要针对大小写来扫描目录,这样可以提高性能。
- 命令/配置摘录:
case sensitive = true default case = lower preserve case = no short preserve case = no
# testparm- 注意:注意 使用这个过程中的设置,名称不为小写的文件将不再显示。
1.18.4. 可能会对性能造成负面影响的设置
- 要点:默认情况下,Red Hat Enterprise Linux 内核被调优为高网络性能。内核对缓冲区大小使用自动调整。在 smb.conf 中设置 套接字选项 会覆盖这些设置,通常会降低 Samba 性能。
- 要点:要使用内核的优化的设置,请从 /etc/samba/smb.conf 中的 [global] 部分删除 socket options 参数。
1.19. 将 Samba 配置为与需要 SMB 版本低于默认版本的客户端兼容
- 要点:Samba 对它支持的最小服务器消息块(SMB)版本使用合理的安全默认值。但是,如果您的客户端需要较旧的 SMB 版本,您可以配置 Samba 来支持它。
1.19.1. 设置 Samba 服务器支持的最小 SMB 协议版本
- 要点:在 Samba 中,/etc/samba/smb.conf 中的 server min protocol 参数定义 Samba 服务器支持的最小服务器消息块(SMB)协议版本。您可以更改最小 SMB 协议版本。如需更多信息,请参阅系统中的 smb.conf (5) 手册页。
- 要点:先决条件
- 列表:已安装并配置 Samba。
- 列表:编辑 /etc/samba/smb.conf 文件,添加 server min protocol 参数,并将其设置为服务器应支持的最小 SMB 协议版本。例如,要将 SMB 协议的最小版本设置为 SMB3,请添加: server min protocol = SMB3
- 列表:重启 smb 服务: # systemctl restart smb
- 命令/配置摘录:
server min protocol = SMB3
# systemctl restart smb- 注意:注意 默认情况下,RHEL 8.2 及之后版本上的 Samba 只支持 SMB2 和更新的协议版本。避免使用已弃用的 SMB1 协议。如果您的环境需要 SMB1,请将 server min protocol 参数设置为 NT1 以重新启用它。
1.20. 经常使用 Samba 命令行工具
- 要点:本章论述了使用 Samba 服务器时经常使用的命令。
1.20.1. 使用 net ads join 和 net rpc join 命令
- 要点:使用 net 工具的 join 子命令,您可以将 Samba 加入 Active Directory (AD)或 NT4 域。要加入域,您必须手动创建 /etc/samba/smb.conf 文件。(可选)更新其他配置,如可插拔验证模块(PAM)。
- 要点:realm 工具是加入域的首选方法。realm 工具自动更新所有涉及的配置文件。
- 列表:使用以下设置手动创建 /etc/samba/smb.conf 文件: 对于 AD 域成员: [global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM 对于 NT4 域成员: [global] workgroup = domain_name security = user passdb backend = tdbsam
- 列表:对于 AD 域成员: [global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
- 列表:对于 NT4 域成员: [global] workgroup = domain_name security = user passdb backend = tdbsam
- 列表:为 * 默认域和您要加入的域添加 ID 映射配置。将其添加到 /etc/samba/smb.conf 文件中的 [global] 部分。
- 列表:验证/etc/samba/smb.conf文件: # testparm
- 列表:以域管理员身份加入域: 加入 AD 域: # net ads join -U "DOMAIN\administrator" 要加入 NT4 域: # net rpc join -U "DOMAIN\administrator"
- 命令/配置摘录:
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
[global] workgroup = domain_name security = user passdb backend = tdbsam1.20.2. 使用 net rpc right 命令
- 要点:在 Windows 中,您可以为帐户和组分配特权来执行特殊操作。示例包括设置共享上的访问控制列表(ACL)或上传打印机驱动程序。在 Samba 服务器上,您可以使用 net rpc permissions 命令来管理特权。
- 要点:列出您可以设置的权限
- 命令/配置摘录:
# net rpc rights list -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password: SeMachineAccountPrivilege Add machines to domain SeTakeOwnershipPrivilege Take ownership of files or other objects SeBackupPrivilege Back up files and directories SeRestorePrivilege Restore files and directories SeRemoteShutdownPrivilege Force shutdown from a remote system SePrintOperatorPrivilege Manage printers SeAddUsersPrivilege Add users and groups to the domain SeDiskOperatorPrivilege Manage disk shares SeSecurityPrivilege System security1.20.3. 使用 net rpc share 命令
- 要点:net rpc share 命令提供了在本地或远程 Samba 或 Windows 服务器上列出、添加和删除共享的功能。
- 要点:列出共享
- 列表:在 -U 参数中指定的用户必须拥有在目标服务器上赋予了 SeDiskOperatorPrivilege 的特权。
- 列表:您必须编写一个在 /etc/samba/smb.conf 文件中添加了一个共享部分的脚本,并重新加载 Samba。脚本必须在 /etc/samba/smb.conf 的 [global] 部分中的 add share command 参数中设置。详情请查看您系统上 smb.conf (5) 手册页中的 add share command 描述。
- 列表:在 -U 参数中指定的用户必须被赋予了 SeDiskOperatorPrivilege 特权。
- 列表:您必须编写一个从 /etc/samba/smb.conf 文件中删除共享部分的脚本,并重新加载 Samba。脚本必须在 /etc/samba/smb.conf 的 [global] 部分中的 delete share command 参数中设置。详情请查看您系统上 smb.conf (5) 手册页中的 delete share command 描述。
- 命令/配置摘录:
# net rpc share list -U "DOMAIN\administrator" -S server_name
Enter DOMAIN\administrator's password: IPC$ share_1 share_2 ...- 注意:注意 在 /etc/samba/smb.conf 文件中的相应部分中设置了 browseable = no 的 Samba 服务器上托管的共享不会在输出中显示。
- 注意:注意 在指定 Windows 目录名称时,您必须省略路径中的结尾反斜杠。
1.20.4. 使用 net user 命令
- 要点:net user 命令管理活动目录(AD)域控制器(DC)或 NT4 主域控制器(PDC)上的用户帐户。它允许您列出所有用户帐户、添加用户和删除用户
- 要点:将 -U user_name 参数传给命令,以指定允许执行所请求的操作的用户。
- 列表:添加帐户: # net user add user password -U "DOMAIN\administrator" User user added
- 列表:可选:使用远程过程调用(RPC) shell 来启用 AD DC 或 NT4 PDC 上的帐户。例如: # net rpc shell -U DOMAIN\administrator -S DC_or_PDC_name Talking to domain DOMAIN (S-1-5-21-1424831554-512457234-5642315751) net rpc> user edit disabled user: no Set user's disabled flag from [yes] to [no] net rpc> exit
- 命令/配置摘录:
# net ads user -U "DOMAIN\administrator"
# net rpc user -U "DOMAIN\administrator"- 注意:注意 只有在列出域用户帐户时,才需要指定连接方法,如 AD 域的ads 或 NT4 域的rpc 。其他用户相关的子命令可以自动探测连接方法。
1.20.5. 使用 rpcclient 工具
- 要点:rpcclient 工具运行客户端 Microsoft 远程过程调用(MS-RPC)功能。它可用于本地和远程 SMB 服务器。大部分功能存在于其他 Samba 工具中,因此主要使用 rpcclient 进行测试。
- 要点:先决条件
- 列表:samba-client 软件包已安装。
- 列表:您可以使用 rpcclient 工具来: 通过为打印机分配驱动程序来管理打印机 Spool 子系统(SPOOLSS): # rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"' Enter DOMAIN\administrators password: Successfully set printer_name to driver driver_name. 通过列出所有文件共享和共享打印机来检索有关 SMB 服务器的信息: # rpcclient server_name -U "DOMAIN\admin…
- 列表:通过为打印机分配驱动程序来管理打印机 Spool 子系统(SPOOLSS): # rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"' Enter DOMAIN\administrators password: Successfully set printer_name to driver driver_name.
- 列表:通过列出所有文件共享和共享打印机来检索有关 SMB 服务器的信息: # rpcclient server_name -U "DOMAIN\administrator" -c 'netshareenum' Enter DOMAIN\administrators password: netname: Example_Share remark: path: C:\srv\samba\example_share\ password: netname: Example_Printer remark: path: C:\var\spool\samba\ password:
- 列表:通过在 SMB 服务器上列出用户,使用安全帐户管理器远程(SAMR)协议执行操作: # rpcclient server_name -U "DOMAIN\administrator" -c 'enumdomusers' Enter DOMAIN\administrators password: user:[user1] rid:[0x3e8] user:[user2] rid:[0x3e9] 如果您针对独立服务器或域成员运行命令,它将列出本地数据库中的用户。针对 AD DC 或 NT4 PDC 运行命令列出域用户。 如需更多信息,请参阅系统中的 rpcclient (1) 手册页。
- 命令/配置摘录:
# rpcclient server_name -U "DOMAIN\administrator" -c 'setdriver "printer_name" "driver_name"'
Enter DOMAIN\administrators password: Successfully set printer_name to driver driver_name.1.20.6. 使用 samba-regedit 应用程序
- 要点:某些设置(如打印机配置)存储在 Samba 服务器上的注册表中。您可以使用基于 ncurses 的 samba-regedit 应用程序来编辑 Samba 服务器的注册表。
- 要点:先决条件
- 列表:samba-client 软件包已安装。
- 列表:要启动应用程序,请输入: # samba-regedit 使用以下键:
- 列表:上键和下键:在注册表树和值中进行导航。
- 列表:Enter:打开关键字或编辑值。
- 列表:选项卡 :在 Key 和 Value 窗格间切换。
- 列表:Ctrl+C:关闭应用程序。
- 命令/配置摘录:
# samba-regedit1.20.7. 使用 smbcontrol 工具
- 要点:smbcontrol 工具允许您向 smbd、nmbd、winbindd 或 所有这些服务发送命令消息。这些控制消息指示服务重新载入其配置。
- 要点:先决条件
- 列表:samba-common-tools 软件包已安装。
- 列表:通过将 reload-config 消息类型发送到 所有 目的地,来重新载入 smbd、nmbd、winbindd 服务的配置: # smbcontrol all reload-config 如需更多信息,请参阅系统中的 smbcontrol (1) 手册页。
- 命令/配置摘录:
# smbcontrol all reload-config1.20.8. 使用 smbpasswd 工具
- 要点:smbpasswd 工具管理本地 Samba 数据库中的用户帐户和密码。如需更多信息,请参阅系统中的 smbpasswd (8) 手册页。
- 要点:先决条件
- 列表:samba-common-tools 软件包已安装。
- 列表:如果您以用户身份运行命令,smbpasswd 将修改运行命令的用户的 Samba 密码。例如: [user@server ~]$ smbpasswd New SMB password: password Retype new SMB password: password
- 列表:如果以 root 用户身份运行 smbpasswd,例如,您可以使用该工具来: 创建一个新用户: [root@server ~]# smbpasswd -a user_name New SMB password: password Retype new SMB password: password Added user user_name. 注意 在将用户添加到 Samba 数据库之前,您必须先在本地操作系统中创建帐户。 启用 Samba 用户: [root@server ~]# smbpasswd -e user_name Enabled user user_name. 禁用 Samba 用户: [root@server ~]#…
- 列表:创建一个新用户: [root@server ~]# smbpasswd -a user_name New SMB password: password Retype new SMB password: password Added user user_name. 注意 在将用户添加到 Samba 数据库之前,您必须先在本地操作系统中创建帐户。
- 列表:启用 Samba 用户: [root@server ~]# smbpasswd -e user_name Enabled user user_name.
- 列表:禁用 Samba 用户: [root@server ~]# smbpasswd -x user_name Disabled user user_name
- 命令/配置摘录:
[user@server ~]$ smbpasswd New SMB password: password Retype new SMB password: password
[root@server ~]# smbpasswd -a user_name New SMB password: password Retype new SMB password: password Added user user_name.- 注意:注意 在将用户添加到 Samba 数据库之前,您必须先在本地操作系统中创建帐户。
1.20.9. 使用 smbstatus 工具
- 要点:smbstatus 工具报告 Samba 服务器的当前状态,包括活动连接和文件锁定。它为每个 smbd 进程和每个共享提供详细信息,如用户、IP 地址和安全设置。它还列出了带有 oplock 详细信息的锁定文件。
- 要点:先决条件
- 列表:samba 软件包已安装。
- 列表:smbd 服务在运行。
- 列表:运行 smbstatus 工具: # smbstatus Samba version 4.15.2 PID Username Group Machine Protocol Version Encryption Signing ....------------------------------------------------------------------------------------------------------------------------- 963 DOMAIN\administrator DOMAIN\domain users client-pc (ipv4:192.0.2.1:57786) SM…
- 命令/配置摘录:
# smbstatus
Samba version 4.15.2 PID Username Group Machine Protocol Version Encryption Signing ....------------------------------------------------------------------------------------------------------------------------- 963 DOMAIN\administrator DOMAIN\domain users client-pc (ipv4:192.0.2.1:57786) SMB3_02 - AES-128-CMAC Service pid Machine Connected at Encryption Signing: ....--------------------------------------------------------------------------- example 969 192.0.2.1 Thu Nov 1 10:00:00 2018 CEST - AES-128-CMAC Locked files: Pid Uid DenyMode Access R/W Oplock SharePath Name Time ....------------------------------------------------------------------…1.20.10. 使用 smbtar 工具
- 要点:smbtar 工具备份服务器消息块(SMB)共享或其子目录的内容。它将其存储在 tar 归档中。或者,您可以将内容写入磁带设备。如需更多信息,请参阅系统中的 smbtar (1) 手册页。
- 要点:先决条件
- 列表:samba-client 软件包已安装。
- 列表:使用以下命令备份 //server/example/ 共享上的 demo 目录内容,并将其存储在 /root/example.tar 中: # smbtar -s server -x example -u user_name -p password -t /root/example.tar
- 命令/配置摘录:
# smbtar -s server -x example -u user_name -p password -t /root/example.tar1.20.11. 使用 wbinfo 工具
- 要点:wbinfo 工具查询并返回 winbindd 服务创建和使用的信息。如需更多信息,请参阅系统中的 wbinfo (1) 手册页。
- 要点:先决条件
- 列表:samba-winbind-clients 软件包已安装。
- 列表:例如,您可以使用 wbinfo 来: 列出域用户: # wbinfo -u AD\administrator AD\guest ... 列出域组: # wbinfo -g AD\domain computers AD\domain admins AD\domain users ... 显示用户的安全标识符(SID): # wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1) 显示域和信任的信息: # wbinfo --trusted-domains --verbose Domain Name…
- 列表:列出域用户: # wbinfo -u AD\administrator AD\guest ...
- 列表:列出域组: # wbinfo -g AD\domain computers AD\domain admins AD\domain users ...
- 列表:显示用户的安全标识符(SID): # wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)
- 列表:显示域和信任的信息: # wbinfo --trusted-domains --verbose Domain Name DNS Domain Trust Type Transitive In Out BUILTIN None Yes Yes Yes server None Yes Yes Yes DOMAIN1 domain1.example.com None Yes Yes Yes DOMAIN2 domain2.example.com External No Yes Yes
- 命令/配置摘录:
# wbinfo -u
AD\administrator AD\guest ...1.21. 其他资源
- 列表:设置 Samba 和 Clustered Trivial Database (CDTB)以共享存储在 GlusterFS 卷上的目录
- 列表:挂载 SMB 共享
第 2 章 部署 NFS 服务器
- 要点:通过使用网络文件系统(NFS)协议,远程用户可以通过网络挂载共享目录。它们可以像本地挂载一样使用它们。这可让您将资源整合到网络的集中服务器中。
2.1. 次 NFSv4 版本的主要功能
- 要点:每个次 NFSv4 版本均带来了旨在提高性能和安全的增强。使用这些改进来利用 NFSv4 的完整潜力,确保跨网络高效且可靠的文件共享。
- 要点:NFSv4.2 的主要功能
- 列表:exactly-once-semantics (EOS)其帮助区分旧操作和新操作的响应。
- 列表:为 NFS 操作绑定多个网络连接,提高性能
- 列表:文件处理类型 通过易失性文件句柄,服务器可以调整为文件系统更改,并使客户端能够根据需要进行调整,而无需永久处理。
- 列表:属性类型 文件属性结构包括 required, recommended, 和 named 属性,各自有不同的目的。必要的属性(从 NFSv3 衍生)对于区分文件类型至关重要。推荐的属性,如访问控制列表(ACL),提供增强的访问控制。
- 列表:多服务器命名空间 命名空间跨多个服务器,根据属性、支持引用、冗余和无缝服务器迁移简化文件系统传输。
2.2. AUTH_SYS 身份验证方法
- 要点:AUTH_SYS 方法(也称为 AUTH_UNIX )是一种客户端身份验证机制。使用 AUTH_SYS ,客户端向服务器发送用户的用户 ID (UID)和组 ID (GID),来在访问文件时验证其身份和权限。
- 要点:它被视为不太安全,因为它依赖于客户端提供的信息,使得在错误配置时容易受到未经授权的访问。
2.3. AUTH_GSS 身份验证方法
- 要点:Kerberos 是一种网络身份验证协议,它允许通过非安全网络对客户端和服务器进行安全身份验证。它使用对称密钥加密,并需要一个可信密钥分发中心(KDC)来验证用户和服务。
- 要点:与 AUTH_SYS 不同,RPCSEC_GSS Kerberos 机制可确保服务器不依赖于客户端来正确地表示哪些用户访问文件。相反,系统使用加密向服务器验证用户身份。这可防止恶意客户端在不提供该用户的 Kerberos 凭据的情况下模拟用户。
- 列表:sys: 无加密保护(默认)
- 列表:krb5 :仅用于验证
- 列表:krb5i: 身份验证和完整性保护
- 列表:krb5p :身份验证、完整性检查和流量加密
2.4. 导出的文件系统上的文件权限
- 要点:导出的文件系统上的文件权限决定了对客户端通过 NFS 访问它们的文件和目录的访问权限。
- 要点:远程主机挂载 NFS 文件系统后,每个共享文件系统的唯一保护是其文件系统权限。如果两个用户共享相同的用户 ID (UID)值,他们可以在不同客户端系统上挂载相同的 NFS 文件系统。在这种情况下,他们可以修改彼此的文件。
2.5. NFS 服务器上需要的服务
- 要点:Red Hat Enterprise Linux (RHEL)使用内核模块和用户空间进程的组合来提供 NFS 文件共享。NFS 服务器使用的主体服务包括内核模块和用户空间进程,它们提供对 NFS 文件共享的访问。
- 要点:下表包含其功能和配置的详细信息。
- 列表:rpcbind(8)
- 列表:rpc.mountd(8)
- 列表:rpc.nfsd(8)
- 列表:rpc.statd(8)
- 列表:rpc.rquotad(8)
- 列表:rpc.idmapd(8)
- 表格样本(共 9 行):
- 服务名称 | NFS 版本 | 描述
- rpcbind | 3 | 这个过程接受来自本地远程过程调用(RPC)服务的端口保留,使其可用或公告。这允许对应的远程 RPC 服务访问它们。rpcbind 服务响应请求,并建立到指定的 RPC 服务的连接。
- rpc.mountd | 3, 4 | 此服务处理来自 NFSv3 客户端的 MOUNT 请求,NFSv4 服务器使用此服务的内部功能。 它检查请求的 NFS 共享目前是否由 NFS 服务器导出,并且客户端是否具有访问权限。
- rpc.nfsd | 3, 4 | 这个进程通告显式的 NFS 版本和服务器定义的协议。它可与内核配合使用,以满足 NFS 客户端的动态需求。例如,在每次 NFS 客户端连接时提供服务器线程。 nfs-server 服务启动此进程。
2.6. /etc/exports 配置文件
- 要点:/etc/exports 文件控制服务器导出哪些目录。每行包含一个导出点、允许使用空格分隔的客户端列表以及每个客户端的选项。
- 要点:以下是 /etc/exports 条目的格式:
- 命令/配置摘录:
<directory> <host_or_network_1>(<options_1>) <host_or_network_n>(<options_n>)...
/projects client.example.com(rw) /projects client.example.com (rw)- 表格样本(共 5 行):
- 默认设置 | 描述
- ro | 以只读模式导出目录。
- sync | 在之前的请求所做的更改写入磁盘之前,NFS 服务器不会回复请求。
- wdelay | 如果服务器怀疑另一个写入请求正在等待,服务器会延迟写入磁盘。
2.7. 配置只使用 NFSv4 的服务器
- 要点:如果您的网络中没有任何 NFSv3 客户端,您可以将 NFS 服务器配置为只支持 NFSv4。您还可以支持特定的次版本。在服务器上仅使用 NFSv4 可减少向网络开放的端口数量。
- 要点:流程
- 列表:安装 nfs-utils 软件包: # dnf install nfs-utils
- 列表:编辑 /etc/nfs.conf 文件,并进行以下更改: 在 [nfsd] 部分中禁用 vers3 参数来禁用 NFSv3: [nfsd] vers3=n 可选:如果您只需要特定的 NFSv4 次版本,请取消所有 vers4.<minor_version> 参数的注释,并相应地设置它们,例如: [nfsd] vers3=n # vers4=y vers4.0=n vers4.1=n vers4.2=y 使用这个配置,服务器仅提供 NFS 版本 4.2。 重要 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 vers4 参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,vers4 参数启用或禁用所有…
- 列表:在 [nfsd] 部分中禁用 vers3 参数来禁用 NFSv3: [nfsd] vers3=n
- 列表:可选:如果您只需要特定的 NFSv4 次版本,请取消所有 vers4.<minor_version> 参数的注释,并相应地设置它们,例如: [nfsd] vers3=n # vers4=y vers4.0=n vers4.1=n vers4.2=y 使用这个配置,服务器仅提供 NFS 版本 4.2。 重要 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 vers4 参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,vers4 参数启用或禁用所有 NFSv4 次版本。但是,如果您将 vers4 与其他 vers 参数一起设置了,则此行为会改变。
- 列表:禁用所有与 NFSv3 相关的服务: # systemctl mask --now rpc-statd.service rpcbind.service rpcbind.socket
- 列表:将 rpc.mountd 守护进程配置为不侦听 NFSv3 挂载请求。使用以下内容创建 /etc/systemd/system/nfs-mountd.service.d/v4only.conf 文件: [Service] ExecStart= ExecStart=/usr/sbin/rpc.mountd --no-tcp --no-udp
- 命令/配置摘录:
# dnf install nfs-utils
[nfsd] vers3=n- 注意:重要 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 vers4 参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,vers4 参数启用或禁用所有 NFSv4 次版本。但是,如果您将 vers4 与其他 vers 参数一起设置了,则此行为会改变。
2.8. 配置一个具有可选的 NFSv4 的 NFSv3 服务器
- 要点:在仍然使用 NFSv3 客户端的网络中,配置服务器,以使用 NFSv3 协议提供共享。如果在您的网络中还有较新的客户端,您也可以启用 NFSv4。默认情况下,Red Hat Enterprise Linux NFS 客户端使用服务器提供的最新 NFS 版本。
- 要点:流程
- 列表:安装 nfs-utils 软件包: # dnf install nfs-utils
- 列表:可选:默认启用 NFSv3 和 NFSv4。如果您不需要 NFSv4 或只需要特定的次版本,请取消所有 vers4.<minor_version> 参数的注释,并相应地设置它们: [nfsd] # vers3=y # vers4=y vers4.0=n vers4.1=n vers4.2=y 使用这个配置,服务器仅提供 NFS 版本 3 和 4.2。 重要 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 vers4 参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,vers4 参数启用或禁用所有 NFSv4 次版本。但是,如果您将 vers4 与其他 vers 参数一起设置,则此行为会改变。
- 列表:默认情况下,NFSv3 RPC 服务使用随机端口。要启用防火墙配置,请在 /etc/nfs.conf 文件中配置固定端口号: 在 [lockd] 部分中,为 nlockmgr RPC 服务设置固定端口号,例如: [lockd] port=5555 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。 在 [statd] 部分中,为 rpc.statd 服务设置一个固定端口号,例如: [statd] port=6666 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。
- 列表:在 [lockd] 部分中,为 nlockmgr RPC 服务设置固定端口号,例如: [lockd] port=5555 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。
- 列表:在 [statd] 部分中,为 rpc.statd 服务设置一个固定端口号,例如: [statd] port=6666 使用这个设置时,服务会自动对 UDP 和 TCP 协议使用这个端口号。
- 列表:可选:创建一个您要共享的目录,例如: # mkdir -p /nfs/projects/ 如果要共享一个现有目录,请跳过这一步。
- 命令/配置摘录:
# dnf install nfs-utils
[nfsd] # vers3=y # vers4=y vers4.0=n vers4.1=n vers4.2=y- 注意:重要 如果您只需要特定的 NFSv4 次版本,则只为次版本设置参数。不要取消 vers4 参数的注释,以避免不可预测的次版本的激活或停用。默认情况下,vers4 参数启用或禁用所有 NFSv4 次版本。但是,如果您将 vers4 与其他 vers 参数一起设置,则此行为会改变。
2.9. 在 NFS 服务器上启用配额支持
- 要点:您可以通过在文件系统中配置配额来限制用户或组群可以存储的数据量。在 NFS 服务器上,rpc-rquotad 服务确保配额也应用于 NFS 客户端上的用户。如需更多信息,请参阅系统中的 quota (1) 和 xfs_quota (8) 手册页。
- 要点:先决条件
- 列表:NFS 服务器正在运行并已配置。
- 列表:已对 ext 或 XFS 文件系统配置了配额。
- 列表:验证是否已在您导出的目录上启用了配额: 对于 ext 文件系统,请输入: # quotaon -p /nfs/projects/ group quota on /nfs/projects (/dev/sdb1) is on user quota on /nfs/projects (/dev/sdb1) is on project quota on /nfs/projects (/dev/sdb1) is off 对于 XFS 文件系统,请输入: # findmnt /nfs/projects TARGET SOURCE FSTYPE OPTIONS /nfs/projects /dev/sdb1 xfs rw,relatime,s…
- 列表:对于 ext 文件系统,请输入: # quotaon -p /nfs/projects/ group quota on /nfs/projects (/dev/sdb1) is on user quota on /nfs/projects (/dev/sdb1) is on project quota on /nfs/projects (/dev/sdb1) is off
- 列表:对于 XFS 文件系统,请输入: # findmnt /nfs/projects TARGET SOURCE FSTYPE OPTIONS /nfs/projects /dev/sdb1 xfs rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,usrquota,grpquota
- 列表:安装 quota-rpc 软件包: # dnf install quota-rpc
- 命令/配置摘录:
# quotaon -p /nfs/projects/
group quota on /nfs/projects (/dev/sdb1) is on user quota on /nfs/projects (/dev/sdb1) is on project quota on /nfs/projects (/dev/sdb1) is off2.10. 在 NFS 服务器上启用 NFS over RDMA
- 要点:远程直接内存访问(RDMA)启用系统间的直接数据传输。它提高了吞吐量,缩短延迟,并降低服务器和客户端上的 CPU 用量。通过 RDMA 连接时,NFS 客户端可以使用 NFSoRDMA 挂载导出的目录。
- 要点:先决条件
- 列表:NFS 服务正在运行且已配置
- 列表:服务器上安装了 InfiniBand 或 RDMA over Converged Ethernet (RoCE)设备。
- 列表:IP over InfiniBand (IPoIB)已在服务器上配置,InfiniBand 设备已分配了一个 IP 地址。
- 列表:安装 rdma-core 软件包: # dnf install rdma-core
- 列表:如果软件包已安装,请验证 /etc/rdma/modules/rdma.conf 文件中的 xprtrdma 和 svcrdma 模块是否已取消注释: # NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdma
- 列表:可选:默认情况下,RDMA 上的 NFS 使用端口 20049。如果要使用不同的端口,请在 /etc/nfs.conf 文件的 [nfsd] 部分中设置 rdma-port 设置: rdma-port=<port>
- 命令/配置摘录:
# dnf install rdma-core
# NFS over RDMA client support xprtrdma # NFS over RDMA server support svcrdma2.11. 在身份管理域中使用 Kerberos 设置 NFS 服务器
- 要点:如果使用 Red Hat Enterprise Linux Identity Management (IdM),您可以将 NFS 服务器加入到 IdM 域中。这可让您集中管理用户和组,并使用 Kerberos 进行身份验证、完整性保护和流量加密。
- 要点:先决条件
- 列表:NFS 服务器已在 Red Hat Enterprise Linux Identity Management (IdM)域中 注册了。
- 列表:NFS 服务器正在运行并已配置。
- 列表:以 IdM 管理员身份获取 kerberos 票据: # kinit admin
- 列表:创建一个 nfs/<FQDN> 服务主体: # ipa service-add nfs/nfs_server.idm.example.com
- 列表:从 IdM 检索 nfs 服务主体,并将其存储在 /etc/krb5.keytab 文件中: # ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
- 列表:可选:显示 /etc/krb5.keytab 文件中的主体: # klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.…
- 命令/配置摘录:
# kinit admin
# ipa service-add nfs/nfs_server.idm.example.com2.12. 配置支持 TLS 的 NFS 服务器
- 要点:如果没有 RPCSEC_GSS 协议,网络文件系统(NFS)流量默认是未加密的。从 Red Hat Enterprise Linux 10 开始,可以使用传输层安全(TLS)配置 NFS。这允许默认加密 NFS 流量。
- 要点:先决条件
- 列表:您已配置了一个 NFSv4 服务器。具体说明请参阅 配置一个仅 NFSv4 服务器。
- 列表:您有一个证书颁发机构(CA)证书。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:创建一个私钥和一个证书签名请求(CSR): # openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1" 重要 通用名称(CN)和域名系统(…
- 列表:将 /etc/pki/tls/private/server.example.com.csr 文件发送到 CA ,并请求服务器证书。将收到的 CA 证书和服务器证书存储在主机上。
- 列表:将 CA 证书导入到系统的 truststore 中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 命令/配置摘录:
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/server.example.com.key \ -out /etc/pki/tls/private/server.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=server.example.com" \ -addext "subjectAltName=DNS:server.example.com,IP:192.0.2.1"
# cp ca.crt /etc/pki/ca-trust/source/anchors- 注意:重要 通用名称(CN)和域名系统(DNS)必须与主机名匹配。IP 必须与主机的 IP 匹配。
2.13. 配置支持 TLS 的 NFS 客户端
- 要点:如果服务器支持带有 TLS 的 NFS,请使用 xprtsec=tls 配置客户端并挂载。导入 CA 证书,启用 TLS 守护进程,并使用加密挂载共享。TLS 有助于保护客户端和服务器之间的传输数据。
- 要点:先决条件
- 列表:您已配置了带有 TLS 加密的 NFS 服务器。详情请参阅 配置支持 TLS 的 NFS 服务器。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:将证书颁发机构(CA)证书导入到系统的 truststore 中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 列表:启用并启动 tlshd 服务: # systemctl enable --now tlshd.service
- 列表:使用 TLS 加密挂载 NFS 共享: # mount -o xprtsec=tls server.example.com:/nfs/projects/ /mnt/
- 列表:验证客户端是否成功挂载了带有 TLS 支持的 NFS 共享: # journalctl -u tlshd … Apr 01 08:37:56 client.example.com tlshd[10688]: Handshake with server.example.com (192.0.2.1) was successful
- 命令/配置摘录:
# cp ca.crt /etc/pki/ca-trust/source/anchors
# update-ca-trust2.14. 配置支持 mutual TLS 的 NFS 客户端
- 要点:如果服务器支持带有 TLS 加密的 NFS,请同时配置服务器和客户端。TLS 在系统间提供 mutual 身份验证。配置包括证书、TLS 守护进程设置和加密的 NFS 挂载。
- 要点:先决条件
- 列表:您已配置了带有 TLS 加密的 NFS 服务器。详情请参阅 配置支持 TLS 的 NFS 服务器。
- 列表:您已安装了 ktls-utils 软件包。
- 列表:创建一个私钥和一个证书签名请求(CSR): # openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2" 重要 通用名称(CN)和域名系统(…
- 列表:将 /etc/pki/tls/private/client.example.com.csr 文件发送到证书颁发机构(CA),并请求客户端证书。将收到的 CA 证书和客户端证书存储在主机上。
- 列表:将 CA 证书导入到系统的 truststore 中: # cp ca.crt /etc/pki/ca-trust/source/anchors # update-ca-trust
- 列表:将客户端证书移到 /etc/pki/tls/certs/ 目录中: # mv client.example.com.crt /etc/pki/tls/certs/
- 命令/配置摘录:
# openssl req -new -newkey rsa:4096 -noenc \ -keyout /etc/pki/tls/private/client.example.com.key \ -out /etc/pki/tls/private/client.example.com.csr \ -subj "/C=US/ST=State/L=City/O=Organization/CN=client.example.com" \ -addext "subjectAltName=DNS:client.example.com,IP:192.0.2.2"
# cp ca.crt /etc/pki/ca-trust/source/anchors- 注意:重要 通用名称(CN)和域名系统(DNS)必须与主机名匹配。IP 必须与主机的 IP 匹配。
完整目录
- 在 Red Hat Enterprise Linux 10 中配置和使用网络文件服务的指南
- 对红帽文档提供反馈
- 第 1 章 使用 Samba 作为服务器
- 1.1. 了解不同的 Samba 服务和模式
- 1.1.1. Samba 服务
- 1.1.2. Samba 安全服务
- 1.1.3. Samba 服务和 Samba 客户端工具加载并重新载入其配置的情况
- 1.1.4. 以安全的方式编辑 Samba 配置
- 1.2. 使用 testparm 工具验证 smb.conf 文件
- 1.3. 将 Samba 设置为独立服务器
- 1.3.1. 为独立服务器设置服务器配置
- 1.3.2. 创建并启用本地用户帐户
- 1.4. 了解并配置 Samba ID 映射
- 1.4.1. 规划 Samba ID 范围
- 1.4.2. * 默认域
- 1.4.3. 使用 tdb ID 映射后端
- 1.4.4. 使用 ad ID 映射后端
- 1.4.5. 使用网格 ID 映射后端
- 1.4.6. 使用自动 ID 映射后端
- 1.5. 将 Samba 设置为 AD 域成员服务器
- 1.5.1. 将 RHEL 系统添加到 AD 域中
- 1.5.2. 使用 MIT Kerberos 的本地授权插件
- 1.5.3. 对 Samba 客户端启用证书自动注册
- 1.6. 在 IdM 域成员中设置 Samba
- 1.6.1. 先决条件
- 1.6.2. 准备 IdM 域以便在域成员中安装 Samba
- 1.6.3. 在 IdM 客户端中安装和配置 Samba 服务器
- 1.6.4. 如果 IdM 信任新域,请手动添加 ID 映射配置
- 1.6.5. 其它资源
- 1.7. 设置使用 POSIX ACL 的 Samba 文件共享
- 1.7.1. 添加使用 POSIX ACL 的共享
- 1.7.2. 在使用 POSIX ACL 的 Samba 共享中设置标准 Linux ACL
- 1.7.3. 在使用 POSIX ACL 的 Samba 共享中设置扩展的 ACL
- 1.8. 对使用 POSIX ACL 的共享设置权限
- 1.8.1. 先决条件
- 1.8.2. 配置基于用户和组群的共享访问权限
- 1.8.3. 配置基于主机的共享访问权限
- 1.9. 设置使用 Windows ACL 的共享
- 1.9.1. 授予 SeDiskOperatorPrivilege 特权
- 1.9.2. 启用 Windows ACL 支持
- 1.9.3. 添加使用 Windows ACL 的共享
- 1.9.4. 管理使用 Windows ACL 的共享的共享权限和文件系统 ACL
- 1.10. 使用 smbcacls 在 SMB 共享上管理 ACL
- 1.10.1. 访问控制条目
- 1.10.2. 使用 smbcacls 显示 ACL
- 1.10.3. ACE 掩码计算
- 1.10.4. 使用 smbcacls 添加、更新和删除 ACL
- 1.11. 允许用户在 Samba 服务器上共享目录
- 1.11.1. 启用用户共享功能
- 1.11.2. 添加用户共享
- 1.11.3. 更新用户共享的设置
- 1.11.4. 显示现有用户共享的信息
- 1.11.5. 列出用户共享
- 1.11.6. 删除用户共享
- 1.12. 配置共享以允许不进行身份验证的访问
- 1.12.1. 启用对共享的客户机访问
- 1.13. 为 macOS 客户端配置 Samba
- 1.13.1. 优化 Samba 配置,以便为 macOS 客户端提供文件共享
- 1.14. 使用 smbclient 工具访问 SMB 共享
- 1.14.1. 先决条件
- 1.14.2. smbclient 互动模式如何工作
- 1.14.3. 在互动模式中使用 smbclient
- 1.14.4. 在脚本模式中使用 smbclient
- 1.15. 将 Samba 设置为打印服务器
- 1.15.1. 先决条件
- 1.15.2. 在 Samba 中启用打印服务器支持
- 1.15.3. 手动共享特定的打印机
- 1.16. 在 Samba 打印服务器中为 Windows 客户端设置自动打印机驱动程序下载
- 1.16.1. 先决条件
- 1.16.2. 有关打印机驱动程序的基本信息
- 1.16.3. 启用用户上传和预配置驱动程序
- 1.16.4. 设置 print$ 共享
- 1.16.5. 创建 GPO 以启用客户端信任 Samba 打印服务器
- 1.16.6. 上传驱动程序和预配置打印机
- 1.17. 在启用了 FIPS 模式的服务器上运行 Samba
- 1.17.1. 在 FIPS 模式中使用 Samba 的限制
- 1.17.2. 在 FIPS 模式下使用 Samba
- 1.18. 调整 Samba 服务器的性能
- 1.18.1. 先决条件
- 1.18.2. 设置 SMB 协议版本
- 1.18.3. 与包含大量文件的目录调整共享
- 1.18.4. 可能会对性能造成负面影响的设置
- 1.19. 将 Samba 配置为与需要 SMB 版本低于默认版本的客户端兼容
- 1.19.1. 设置 Samba 服务器支持的最小 SMB 协议版本
- 1.20. 经常使用 Samba 命令行工具
- 1.20.1. 使用 net ads join 和 net rpc join 命令
- 1.20.2. 使用 net rpc right 命令
- 1.20.3. 使用 net rpc share 命令
- 1.20.4. 使用 net user 命令
- 1.20.5. 使用 rpcclient 工具
- 1.20.6. 使用 samba-regedit 应用程序
- 1.20.7. 使用 smbcontrol 工具
- 1.20.8. 使用 smbpasswd 工具
- 1.20.9. 使用 smbstatus 工具
- 1.20.10. 使用 smbtar 工具
- 1.20.11. 使用 wbinfo 工具
- 1.21. 其他资源
- 1.1. 了解不同的 Samba 服务和模式
- 第 2 章 部署 NFS 服务器
- 2.1. 次 NFSv4 版本的主要功能
- 2.2. AUTH_SYS 身份验证方法
- 2.3. AUTH_GSS 身份验证方法
- 2.4. 导出的文件系统上的文件权限
- 2.5. NFS 服务器上需要的服务
- 2.6. /etc/exports 配置文件
- 2.7. 配置只使用 NFSv4 的服务器
- 2.8. 配置一个具有可选的 NFSv4 的 NFSv3 服务器
- 2.9. 在 NFS 服务器上启用配额支持
- 2.10. 在 NFS 服务器上启用 NFS over RDMA
- 2.11. 在身份管理域中使用 Kerberos 设置 NFS 服务器
- 2.12. 配置支持 TLS 的 NFS 服务器
- 2.13. 配置支持 TLS 的 NFS 客户端
- 2.14. 配置支持 mutual TLS 的 NFS 客户端
