無法使用 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 成功綁定。
關於我遇到的具體錯誤,我無法找到太多資訊。我試圖在 krb5.conf 中設置allow_weak_crypto=true只是為了看看它是否與此有關,但它沒有效果。
我遵循了https://technet.microsoft.com/en-us/library/bb463167.aspx中的一些故障排除提示,但沒有運氣,我嘗試過的東西似乎工作正常。
具體來說,我能夠執行以下操作,這意味著我可以獲得使用者名的初始憑據:
kinit name Password for name@domain.example.org:
我還可以使用ktutil生成一個 keytab 文件,當我將它移動到 /etc/krb5.keytab klist -e時,它會顯示正確的內容。但網路廣告加入不斷失敗。
編輯:檢查 rhel7 samba 源包後,我在README.dc中發現以下內容:
一旦 Samba AD DC 對 MIT Kerberos KDC 的支持準備就緒,我們就會提供 Samba AD DC 功能。
我懷疑這可能是問題所在,我必須等到它準備好。
Edit2:使用領域和 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: HOST$@AD.EXAMPLE.ORG: FILE:/etc/krb5.keytab Jan 21 14:56:20 host.example.org realmd[25796]: * Added the entries to the keytab: HOST/HOST@AD.EXAMPLE.ORG: FILE:/etc/krb5.keytab Jan 21 14:56:20 host.example.org realmd[25796]: * Added the entries to the keytab: HOST/host.example.org@AD.EXAMPLE.ORG: FILE:/etc/krb5.keytab Jan 21 14:56:21 host.example.org realmd[25796]: * Added the entries to the keytab: RestrictedKrbHost/HOST@AD.EXAMPLE.ORG: FILE:/etc/krb5.keytab Jan 21 14:56:21 host.example.org realmd[25796]: * Added the entries to the keytab: RestrictedKrbHost/host.example.org@AD.EXAMPLE.ORG: 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
你為什麼用網路?您應該使用 samba-tool 加入域
samba-tool domain join domain.example.org DC -Uadministrator --realm=domain.example.org
net 在 samba 4 中不再真正使用,除了共享和其他一些東西。
不要亂用 kerberos 加密設置。
我有同樣的問題,
realm
加上adcli
是解決方案。realm
預設使用 samba-common 後端。獲取 realmd 和 adcli 包,然後使用# 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
通過使用 Windows 工具搜尋或詢問您的 AD 管理員對 DC 執行相同操作,但我不知道哪些選項可用於 LDAP,我喜歡自給自足。通常 adcli/net 會註冊一台機器,但 sssd_ad 不能很好地用於開箱即用的身份管理。我發現尤其是在 RIDS 超過 200000 或已從舊版本更新多次的企業 AD 環境中,通常會出現問題。如果您從
net ads status
命令中獲得結果但仍無法獲取使用者資訊,請查找 sssd 和 sssd_ad 的問題。systemctl status sssd.service
是一個很好的起點。但是,針對 Id 映射和身份驗證的 sssd_ad 故障排除不在您原始問題的範圍內。額外的信用閱讀:
freedesktop.org 上的領域文件。