1.6. 在 IdM 域成员中设置 Samba
您可以在加入到 Red Hat Identity Management (IdM)域的主机上设置 Samba。来自IdM的用户,以及来自受信任的 Active Directory(AD)域的用户(如果有的话)可以访问 Samba 提供的共享和打印机服务。
对 IdM 域成员使用 Samba 是一种不受支持的技术预览特性,且包含了某些限制。例如,IdM 信任控制器不支持活动目录全局目录服务,并且不支持使用分布式计算环境/远程过程调用(DCE/RPC)协议解析 IdM 组。因此,AD 用户在登录到其他 IdM 客户端时只能访问托管在 IdM 客户端上的 Samba 共享和打印机;登录到 Windows 机器的 AD 用户无法访问托管在 IdM 域成员上的 Samba 共享。
我们鼓励在 IdM 域成员中部署 Samba 的用户向红帽提供反馈意见。
如果 AD 域中的用户需要访问 Samba 提供的共享和打印机服务,请确保在 AD 中启用了 AES 加密类型。如需更多信息,请参阅 使用 GPO 在活动目录中启用 AES 加密类型。
先决条件
- 主机作为 IdM 域的客户端加入。
- IdM 服务器和客户端都必须运行在 RHEL 9.0 或更高版本上。
1.6.1. 准备 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 服务记录。
如果您在没有集成 DNS 服务器的情况下安装了 IdM,
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
该脚本提示您配置
slapi-nis
插件,这是一个兼容插件,允许旧的 Linux 客户端与受信任的用户一起工作:Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]:
yes
系统会提示您运行 SID 生成任务,以便为任何现有用户创建 SID:
Do you want to run the ipa-sidgen task? [no]:
yes
这是一个资源密集型任务,因此如果您有大量的用户,您可以在其他时间运行此操作。
(可选) 默认情况下,对于 Windows Server 2008 及更高版本,动态 RPC 端口范围定义为
49152-65535
。如果需要为您的环境定义一个不同的动态 RPC 端口范围,请将 Samba 配置为使用不同的端口,并在防火墙设置中开放这些端口。以下示例将端口范围设置为55000-65000
。[root@ipaserver ~]# net conf setparm global 'rpc server dynamic port range' 55000-65000 [root@ipaserver ~]# firewall-cmd --add-port=55000-65000/tcp [root@ipaserver ~]# firewall-cmd --runtime-to-permanent
重启
ipa
服务:[root@ipaserver ~]# ipactl restart
使用
smbclient
工具来验证 Samba 是否响应 IdM 端的 Kerberos 身份验证:[root@ipaserver ~]#
smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required
lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.15.2) ...
1.6.2. 在 IdM 客户端中安装和配置 Samba 服务器
您可以在已在 IdM 域注册的客户端上安装和配置 Samba。
先决条件
- IdM 服务器和客户端都必须运行在 RHEL 9.0 或更高版本上。
- 已准备好 IdM 域,如 为在域成员上安装 Samba 准备 IdM 域 中所述。
- 如果 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: Domain name: idm.example.com NetBIOS name: IDM SID: S-1-5-21-525930803-952335037-206501584 ID range: 212000000 - 212199999 Domain name: ad.example.com NetBIOS name: AD SID: None ID range: 1918400000 - 1918599999 Continue to configure the system with these values? [no]: yes Samba domain member is configured. Please check configuration at /etc/samba/smb.conf and start smb and winbind services
默认情况下,
ipa-client-samba
会自动将[homes]
部分添加到/etc/samba/smb.conf
文件中,该文件在用户连接时动态共享用户的主目录。如果用户在这个服务器上没有主目录,或者您不想共享主目录,请从/etc/samba/smb.conf
中删除以下行:[homes] read only = no
共享目录和打印机。详情请查看:
在本地防火墙中打开 Samba 客户端所需的端口:
[root@idm_client]# firewall-cmd --permanent --add-service=samba-client [root@idm_client]# firewall-cmd --reload
启用并启动
smb
和winbind
服务:[root@idm_client]# systemctl enable --now smb winbind
验证
在安装了 samba-client
软件包的不同 IdM 域成员上运行以下验证步骤:
使用 Kerberos 身份验证列出 Samba 服务器中的共享:
$
smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
其它资源
-
ipa-client-samba(1)
man page
1.6.3. 如果 IdM 信任新域,请手动添加 ID 映射配置
Samba 需要一个 ID 映射配置,用户可从该域访问资源。在 IdM 客户端上运行的现有 Samba 服务器上,在管理员向 Active Directory(AD)域添加了新的信任后,您必须手动添加 ID 映射配置。
先决条件
- 您在 IdM 客户端中配置了 Samba。之后,IdM 增加了一个新的信任。
- 在可信 AD 域中必须禁用 Kerberos 的 DES 和 RC4 加密类型。为了安全起见,RHEL 9 不支持这些弱加密类型。
步骤
使用主机的 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-968346183-862388825-1738313271 iparangetype: ipa-ad-trust ---------------------------- Number of entries returned 1 ----------------------------
在后续步骤中,您需要
ipabaseid
和ipaidrangesize
属性的值。要计算可用最高的 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
属性的值指定为最小值,将上一步中的计算值指定为该范围的最大值。重启
smb
和winbind
服务:[root@idm_client]# systemctl restart smb winbind
验证
使用 Kerberos 身份验证列出 Samba 服务器中的共享:
$
smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...