1.5. 将 Samba 设置为 AD 域成员服务器
如果您正在运行 AD 或 NT4 域,请使用 Samba 将 Red Hat Enterprise Linux 服务器添加为域的成员,以便可以:
- 访问其他域成员上的域资源
-
对本地服务(如
sshd
)验证域用户 - 托管在服务器上的共享目录和打印机,以充当文件和打印服务器
1.5.1. 将 RHEL 系统添加到 AD 域中
Samba Winbind 是系统安全服务守护进程(SSSD)的一个替代方案,用于将活动目录(AD)与 Red Hat Enterprise Linux(RHEL)系统连接。您可以使用 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
服务,并使服务在系统引导时启动
-
为
-
另外,在
/etc/samba/smb.conf
文件中设置备用的 ID 映射后端或自定义 ID 映射设置。
详情请参阅 了解和配置 Samba ID 映射。
验证
winbind
服务是否运行:# systemctl status winbind ... Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
重要要启用 Samba 来查询域用户和组信息,必须在启动
smb
之前运行winbind
服务。如果您安装了
samba
软件包来共享目录和打印机,请启用并启动smb
服务:# systemctl enable --now smb
-
另外,如果您要验证Active Directory的本地登录,请启用
winbind_krb5_localauth
插件。请参阅 使用 MIT Kerberos 的本地授权插件。
验证
显示 AD 用户的详情,如 AD 域中的 AD 管理员帐户:
# getent passwd "AD\administrator" AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
查询 AD 域中的域用户组成员:
# getent group "AD\Domain Users" AD\domain users:x:10000:user1,user2
另外,还可在设置文件和目录权限时验证您可以使用域用户和组。例如,将
/srv/samba/example.txt
文件的所有者设置为AD\administrator
,组设置为AD\Domain Users
:# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
验证 Kerberos 验证是否如预期正常工作:
对于 AD 域成员,为
administrator@AD.EXAMPLE.COM
主体获取一个ticket:# kinit administrator@AD.EXAMPLE.COM
显示缓存的 Kerberos ticket:
# klist Ticket cache: KCM:0 Default principal: administrator@AD.EXAMPLE.COM Valid starting Expires Service principal 01.11.2018 10:00:00 01.11.2018 20:00:00 krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM renew until 08.11.2018 05:00:00
显示可用域:
# wbinfo --all-domains BUILTIN SAMBA-SERVER AD
其它资源
- 如果您不想使用弃用的 RC4 密码,可以在 AD 中启用 AES 加密类型。查看
- 使用 GPO 在 Active Directory 中启用 AES 加密类型
-
realm(8)
手册页
1.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 }
其它资源
-
winbind_krb5_localauth(8)
手册页。