无法使用 samba 工具 net 或 realm/sssd 加入域

无法使用 samba 工具 net 或 realm/sssd 加入域

在 rhel7 服务器上,我尝试将服务器加入域,但出现以下失败:

net ads join -S domain.example.org -U name
Enter name's password:
Failed to join domain: failed to set machine kerberos encryption types: Insufficient access

与 pam、krb5、samba、dns 以及远程活动目录服务器中的对象相关的设置已正确配置,这意味着系统将使用 rhel6 和 ubuntu 14.04 成功绑定。

我找不到与我遇到的具体错误相关的大量信息。我尝试设置允许弱加密=true在 krb5.conf 中只是为了看看它是否与此有关,但是没有任何影响。

我遵循了一些故障排除提示https://technet.microsoft.com/en-us/library/bb463167.aspx但没有运气,我尝试过的东西似乎效果很好。

具体来说,我可以执行以下操作,这意味着我可以获取用户的初始凭证姓名

kinit name
Password for [email protected]: 

我还可以使用以下方法生成密钥表文件工具当我将它移动到 /etc/krb5.keytab 时列表-e它显示了正确的内容。但是网络广告加入不断失败。

编辑:检查 rhel7 samba 源包后,我发现以下内容自述文件.dc

一旦对 MIT Kerberos KDC 的支持准备就绪,我们将提供 Samba AD DC 功能。

我怀疑这可能是问题所在,我必须等到它准备好。

编辑2:使用 realm 和 sssd 似乎存在同样的问题。执行后:

realm -v join --user=example ad.example.org

我发现以下错误:

* LANG=C /usr/sbin/adcli join --verbose --domain ad.example.org --domain-realm AD.EXAMPLE.ORG --domain-controller 192.0.2.11 --login-type user --login-user example --stdin-password
! Insufficient permissions to set encryption types on computer account: CN=example,OU=w,OU=x,DC=ad,DC=example,DC=org: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0

注意,这适用于 rhel6。我也没有权限更改 AD 服务器或那里的我的帐户。

rhel版本为7.2,相关软件包的版本如下:

Name        : realmd
Version     : 0.16.1
--
Name        : adcli
Version     : 0.7.5
--
Name        : krb5-workstation
Version     : 1.13.2
--
Name        : samba-common
Version     : 4.2.3

净化输出journalctl -e SYSLOG_IDENTIFIER=realmd

Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain name: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using computer account name: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain realm: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Calculated computer account name from fqdn: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Generated 120 character computer password
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using keytab: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using fully qualified name: host.example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain name: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using computer account name: HOST
Jan 21 14:56:20 host.example.org realmd[25796]:  * Using domain realm: example.org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Looked up short domain name: AD
Jan 21 14:56:20 host.example.org realmd[25796]:  * Found computer account for HOST$ at: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Set computer password
Jan 21 14:56:20 host.example.org realmd[25796]:  * Retrieved kvno '87' for computer account in directory: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  ! Insufficient permissions to set encryption types on computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org: 00002098: SecErr: DSID-03150BB9, problem 4003 (INSUFF_ACCESS_RIGHTS),  
Jan 21 14:56:20 host.example.org realmd[25796]:  * Modifying computer account: userAccountControl
Jan 21 14:56:20 host.example.org realmd[25796]:  * Modifying computer account: operatingSystem, operatingSystemVersion, operatingSystemServicePack
Jan 21 14:56:20 host.example.org realmd[25796]:  ! Couldn't set operatingSystem, operatingSystemVersion, operatingSystemServicePack on computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org: Insufficient access
Jan 21 14:56:20 host.example.org realmd[25796]:  * Updated existing computer account: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
Jan 21 14:56:20 host.example.org realmd[25796]:  * Discovered which keytab salt to use
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: [email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: HOST/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:20 host.example.org realmd[25796]:  * Added the entries to the keytab: HOST/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]:  * Added the entries to the keytab: RestrictedKrbHost/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]:  * Added the entries to the keytab: RestrictedKrbHost/[email protected]: FILE:/etc/krb5.keytab
Jan 21 14:56:21 host.example.org realmd[25796]: process exited: 25879
Jan 21 14:56:21 host.example.org realmd[25796]:  * /usr/bin/systemctl enable sssd.service
Jan 21 14:56:21 host.example.org realmd[25796]: process started: 25880
Jan 21 14:56:21 host.example.org realmd[25796]: Created symlink from /etc/systemd/system/multi-user.target.wants/sssd.service to /usr/lib/systemd/system/sssd.service.
Jan 21 14:56:21 host.example.org realmd[25796]: process exited: 25880
Jan 21 14:56:21 host.example.org realmd[25796]:  * /usr/bin/systemctl restart sssd.service
Jan 21 14:56:21 host.example.org realmd[25796]: process started: 25894
Jan 21 14:56:22 host.example.org realmd[25796]: process exited: 25894
Jan 21 14:56:22 host.example.org realmd[25796]:  * /usr/bin/sh -c /usr/sbin/authconfig --update --enablesssd --enablesssdauth --enablemkhomedir --nostart && /usr/bin/systemctl enable oddjobd.service && /usr/bin/systemctl start oddjobd.se
Jan 21 14:56:22 host.example.org realmd[25796]: process started: 25901
Jan 21 14:56:23 host.example.org realmd[25796]: process exited: 25901
Jan 21 14:56:23 host.example.org realmd[25796]:  * Successfully enrolled machine in realm
Jan 21 14:56:23 host.example.org realmd[25796]: released daemon: current-invocation
Jan 21 14:56:23 host.example.org realmd[25796]: client gone away: :1.3100
Jan 21 14:56:23 host.example.org realmd[25796]: released daemon: :1.3100
Jan 21 14:57:23 host.example.org realmd[25796]: quitting realmd service after timeout
Jan 21 14:57:23 host.example.org realmd[25796]: stopping service

净化输出净广告-P 状态

objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: user
objectClass: computer
cn: host
distinguishedName: CN=host,OU=w,OU=x,DC=ad,DC=example,DC=org
instanceType: 4
whenCreated: 2012
whenChanged: 2016
uSNCreated: 1687590
memberOf: CN=group,OU=groups,OU=w,DC=ad,DC=example,DC=org
uSNChanged: 1212121212
name: host
objectGUID: x
userAccountControl: 6
badPwdCount: 0
codePage: 0
countryCode: 0
badPasswordTime: 1
lastLogoff: 0
lastLogon: 1
localPolicyFlags: 0
pwdLastSet: 1
primaryGroupID: 600
objectSid: S-1-5-21
accountExpires: 9
logonCount: 1
sAMAccountName: HOST$
sAMAccountType: 8
dNSHostName: host.ad.example.org
servicePrincipalName: RestrictedKrbHost/HOST
servicePrincipalName: RestrictedKrbHost/host.ad.example.org
servicePrincipalName: HOST/host.ad.example.org
servicePrincipalName: HOST/HOST
objectCategory: CN=Computer,CN=Schema,CN=Configuration,DC=ad,DC=example,DC=org
isCriticalSystemObject: FALSE
dSCorePropagationData: 2
dSCorePropagationData: 3
dSCorePropagationData: 4
dSCorePropagationData: 5
dSCorePropagationData: 6
lastLogonTimestamp: 1

答案1

我遇到了同样的问题,解决方案是 realmplus 。默认情况下使用 samba-common 后端。获取 realmd 和 adcli 包,然后使用adclirealm

# realm join --membership-software=adcli -U <username> <domain>

您甚至不必adcli直接使用。请注意,会发生相同的权限错误,但您继续加入域,而不是因加密类型拒绝而失败。

这让我忙了好几个星期。项目最终被推迟了,直到我弄清楚了。从我的痛苦中吸取教训。

不幸的是,据我所知,adcli似乎没有任何方法可以在不更改 AD 的情况下验证加入。要验证,您可以备份 /etc/samba/smb.conf 并将其替换为(仅):

realm = <REALM>
workgroup = <WORKGROUP>

然后运行net ads -P status以获取从 AD 中提取的有关您新注册的机器帐户的大量信息。您可以ldapsearch对 DC 执行相同操作,通过使用 Windows 工具进行搜索,或询问您的 AD 管理员,但我不知道要为 LDAP 使用哪些选项,而且我喜欢自给自足。

通常情况下,adcli/net 会注册一台机器,但 sssd_ad 无法很好地进行开箱即用的身份管理。我发现,尤其是在 RIDS 超过 200000 或已从旧版本更新多次的企业 AD 环境中,问题通常会出现。如果您从命令中获得结果net ads status但仍无法获取用户信息,请查找 sssd 和 sssd_ad 的问题。 systemctl status sssd.service是一个很好的起点。但是,对 sssd_ad 进行 I'd 映射和身份验证的故障排除不在您的原始问题范围内。

额外读物:

领域文档 在 freedesktop.org 上。

adcli 文档在 freedesktop.org 上。

sssd_ad 的手册页

答案2

你为什么要使用 net?你应该使用 samba-tool 加入域

samba-tool domain join domain.example.org DC -Uadministrator --realm=domain.example.org

除了共享和其他一些东西之外,net 在 samba 4 中实际上不再使用。
不要弄乱 kerberos 加密设置。

答案3

在 samba 从 4.1 升级到 4.3 次要版本后,debian 和 ubuntu 似乎也出现了此问题。这意味着它不是 redhat 独有的。顺便说一句,我确实联系了 redhat 支持。

我找不到解决方案,但我找到了一个足够好的解决方法。由于某种原因,当发生特定故障时,密钥表未创建或创建了错误的密钥表。与 Active Directory 服务器的绑定实际上是成功的,要使一切正常,需要创建一个新的密钥表。

无法加入域:无法设置机器 Kerberos 加密类型:访问权限不足

运行此命令来创建密钥表:

net -P ads keytab create

虽然我选择继续使用 samba,但我认为当使用 realm 时您也可以使用这种方法。

相关内容