3.5. 将 Samba 设置为 AD 域成员服务器
如果您正在运行 AD 或 NT4 域,请使用 Samba 将 Red Hat Enterprise Linux 服务器添加为域的成员,以便可以:
- 访问其他域成员上的域资源
- 
						对本地服务(如 sshd)验证域用户
- 托管在服务器上的共享目录和打印机,以充当文件和打印服务器
3.5.1. 将 RHEL 系统添加到 AD 域中
					Samba Winbind 是系统安全服务守护进程(SSSD)的替代方案,用于将 Red Hat Enterprise Linux(RHEL)系统与活动目录(AD)进行连接。您可以使用 realmd 将 RHEL 系统加入到 AD 域来配置 Samba Winbind 。
				
先决条件
- 主机使用 DNS 服务器来解析 AD 域。
- 主机上的时间与 AD 中的时间同步,时区设置是正确的。
流程
- 如果您的 AD 需要弃用的 RC4 加密类型进行 Kerberos 验证,请在 RHEL 中启用对这些密码的支持: - update-crypto-policies --set DEFAULT:AD-SUPPORT - # update-crypto-policies --set DEFAULT:AD-SUPPORT- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 安装以下软件包: - yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation- # yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要在域成员中共享目录或打印机,请安装 - samba软件包:- yum install samba - # yum install samba- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 备份现有的 - /etc/samba/smb.confSamba 配置文件:- mv /etc/samba/smb.conf /etc/samba/smb.conf.bak - # mv /etc/samba/smb.conf /etc/samba/smb.conf.bak- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 加入域。例如,要加入名为 - ad.example.com的域:- realm join --membership-software=samba --client-software=winbind ad.example.com - # realm join --membership-software=samba --client-software=winbind ad.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用上面的命令, - realm工具会自动:- 
									为ad.example.com域中的成员创建/etc/samba/smb.conf文件
- 
									将用于用户和组查找的winbind模块添加到/etc/nsswitch.conf文件中
- 
									更新/etc/pam.d/目录中的可插拔验证模块(PAM)配置文件
- 
									启动winbind服务,并使服务在系统引导时启动
 
- 
									为
- 可选:在 - /etc/samba/smb.conf文件中设置备用的 ID 映射后端或自定义 ID 映射设置。- 详情请参阅 了解并配置 Samba ID 映射。 
- 验证 - winbind服务是否运行:- systemctl status winbind - # systemctl status winbind ... Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- 要启用 Samba 来查询域用户和组信息,必须在启动 - smb之前运行- winbind服务。
- 如果您安装了 - samba软件包来共享目录和打印机,请启用并启动- smb服务:- systemctl enable --now smb - # systemctl enable --now smb- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							如果您要向活动目录验证本地登录,请启用 winbind_krb5_localauth插件。请参阅 对 MIT Kerberos 使用本地授权插件。
验证
- 显示 AD 用户的详情,如 AD 域中的 AD 管理员帐户: - getent passwd "AD\administrator" - # getent passwd "AD\administrator" AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 查询 AD 域中的域用户组成员: - getent group "AD\Domain Users" - # getent group "AD\Domain Users" AD\domain users:x:10000:user1,user2- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选:验证在对文件和目录设置权限时,您是否可以使用域用户和组。例如,将 - /srv/samba/example.txt文件的所有者设置为- AD\administrator,组设置为- AD\Domain Users:- chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt - # chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证 Kerberos 验证是否如预期正常工作: - 对于 AD 域成员,为 - administrator@AD.EXAMPLE.COM主体获取一个ticket:- kinit administrator@AD.EXAMPLE.COM - # kinit administrator@AD.EXAMPLE.COM- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 显示缓存的 Kerberos ticket: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 显示可用域: - wbinfo --all-domains - # wbinfo --all-domains BUILTIN SAMBA-SERVER AD- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
3.5.2. 使用 MIT Kerberos 的本地授权插件
					winbind服务向域成员提供Active Directory用户。在某些情况下,管理员希望域用户能够对域成员上运行的本地服务(如SSH服务器)启用身份验证。当使用 Kerberos 来验证域用户时,启用winbind_krb5_localauth插件,通过winbind 服务将 Kerberos 主体正确映射到Active Directory帐户。
				
					例如,如果Active Directory用户的sAMAccountName属性设置为EXAMPLE,并且用户尝试使用小写的用户名进行日志记录,Kerberos将返回大写的用户名。因此,条目不匹配,身份验证失败。
				
					使用winbind_krb5_localauth插件时,帐户名称会被正确映射。请注意,这只适用于 GSSAPI 身份验证,不适用于获取初始票据授权票据(TGT)。
				
先决条件
- Samba 配置为 Active Directory 的成员。
- Red Hat Enterprise Linux 对 Active Directory 进行身份验证。
- 
							winbind服务在运行。
流程
						编辑/etc/krb5.conf文件,并添加以下部分:
					
[plugins]
localauth = {
     module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
     enable_only = winbind
}
[plugins]
localauth = {
     module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
     enable_only = winbind
}