3.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 提供的共享和打印机服务,请确保 AES 加密类型在 AD 中启用了。如需更多信息,请参阅使用 GPO 在 Active Directory 中启用 AES 加密类型。
先决条件
- 主机作为 IdM 域的客户端加入。
- IdM 服务器和客户端必须在 RHEL 8.1 或更高版本中运行。
3.6.1. 准备 IdM 域以便在域成员中安装 Samba
在IdM客户端上设置Samba之前,必须在IdM服务器上使用ipa-adtrust-install
工具来准备IdM域。
运行ipa-adtrust-install
命令的任何系统都会自动成为 AD 信任控制器。但是,您只能在 IdM 服务器上运行ipa-adtrust-install
一次。
先决条件
- IdM 服务器已安装。
- 您需要 root 特权才能安装软件包并重新启动 IdM 服务。
流程
安装所需的软件包:
[root@ipaserver ~]# yum 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
该脚本提示您配置
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
提示时,输入 IdM 域的 NetBIOS 名称,或者按 Enter 接受推荐的名称:
Trust is configured but no NetBIOS domain name found, setting it now. Enter the NetBIOS name for the IPA domain. Only up to 15 uppercase ASCII letters, digits and dashes are allowed. Example: EXAMPLE. NetBIOS domain name [IDM]:
系统会提示您运行 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) ...
3.6.2. 在 IdM 客户端中安装和配置 Samba 服务器
您可以在已在 IdM 域中注册的客户端上安装和配置 Samba。
先决条件
- IdM 服务器和客户端必须在 RHEL 8.1 或更高版本中运行。
- 已准备好 IdM 域,如 为在域成员上安装 Samba 准备 IdM 域 中所述。
- 如果 IdM 具有配置了 AD 的信任,请为 Kerberos 启用 AES 加密类型。例如,使用组策略对象(GPO)来启用 AES 加密类型。详情请参阅 使用 GPO 在活动目录中启用 AES 加密。
流程
安装
ipa-client-samba
软件包:[root@idm_client]# yum 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)
手册页
3.6.3. 如果 IdM 信任新域,请手动添加 ID 映射配置
Samba 需要一个 ID 映射配置,用户可从该域访问资源。在 IdM 客户端上运行的现有 Samba 服务器上,在管理员向 Active Directory(AD)域添加了新的信任后,您必须手动添加 ID 映射配置。
先决条件
- 您在 IdM 客户端中配置了 Samba。之后,IdM 增加了一个新的信任。
- 在可信 AD 域中必须禁用 Kerberos 的 DES 和 RC4 加密类型。为了安全起见,RHEL 8 不支持这些弱加密类型。
流程
使用主机的 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) ...