[Authentication] realm list output changes after joining AD domain
Ben Cohen
cohen.ben at gmail.com
Fri Mar 27 16:39:04 PDT 2015
Hi -- I posted this question to serverfault -- I think maybe I should ping
this list though as I'm not sure if this is a bug:
http://serverfault.com/questions/678884/realm-join-client-software-sssd-on-centos-7-joins-two-realms-one-with-sssd
On clean installed centos-7 host:
realm join -U foo --client-software sssd AD.EXAMPLE.COM
After running realm list output looks initially like this:
AD.EXAMPLE.COM
type: kerberos
realm-name: AD.EXAMPLE.COM
domain-name: ad.example.com
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common
login-formats: %U at ad.example.com
login-policy: allow-realm-logins
Showing me that I joined an active directory with sssd as I had intended --
logins work as expected both via ssh and samba.
Later on (not sure what triggers or it but a system reboot guarantees it)
-- the realm list output changes to this
ad.example.com
type: kerberos
realm-name: AD.EXAMPLE.COM
domain-name: ad.example.com
configured: kerberos-member
server-software: active-directory
client-software: winbind
required-package: oddjob-mkhomedir
required-package: oddjob
required-package: samba-winbind-clients
required-package: samba-winbind
required-package: samba-common
login-formats: AD\%U
login-policy: allow-any-loginAD.EXAMPLE.COM
type: kerberos
realm-name: AD.EXAMPLE.COM
domain-name: ad.example.com
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: oddjob
required-package: oddjob-mkhomedir
required-package: sssd
required-package: adcli
required-package: samba-common
login-formats: %U at ad.example.com
login-policy: allow-realm-logins
A few more details: -- after running realm join --verbose --client-software
sssd --user foo AD.EXAMPLE.COM, I
(1) shutdown sssd
(2) replace sssd.conf
(3) rm -rf /var/lib/sss/db/*
(4) restart sssd
I have to do this because the active directory domain I'm joining is larger
than the default ldap_idmap_range_size -- the sssd.conf I generate looks
like this:
[sssd]
domains = AD.UCSD.EDU
config_file_version = 2
services = nss, pam
[domain/AD.UCSD.EDU]
ad_domain = AD.UCSD.EDU
krb5_realm = AD.UCSD.EDU
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%d/%u
ldap_idmap_default_domain=AD.UCSD.EDU
ldap_idmap_range_size=2000000
ldap_search_base = dc=AD,dc=UCSD,dc=EDU
override_homedir=/home/%d/%u
dyndns_update=False
access_provider = ad
# define the sts_ad_access_filter host variable in ansible if you wish to
restrict access to this host
# example: sts_ad_access_filter:
"(memberOf=CN=somts,OU=Share-access,OU=BusinessOffice,OU=Groups,OU=SOMTS,OU=SIO,DC=AD,DC=UCSD,DC=EDU)"
I also try with a realmd.conf
[active-directory]
default-client = sssd
[service]
automatic-install = no
No matter what I do:
- realm list initially doesn't return anything about a winbind domain --
but everything works
- after reboot, realm list shows the two domains (and now I can login as
either user at ad.example.com or AD\\user ...
Maybe this is by design -- but I suspect that something is afoot and this
has me worried ... I've been re-doing clean installs trying to figure this
out for hours now -- here's a snippet from my ansible config automated this
if it helps anyone reproduce ...
---
- name: "Ensure libraries required to join Active Directory domain are
installed"
yum: name={{ item }} state="present"
with_items:
- krb5-workstation
- realmd
- sssd
- samba
- oddjob
- oddjob-mkhomedir
- adcli
- samba-common
- name: "Ensure winbind is not present to avoid the possibility of
CRAZY CONFUSION?"
yum: name={{ item }} state="absent"
with_items:
- samba-winbind
- samba-winbind-clients
- samba-winbind-krb5-locator
- samba-winbind-modules
- name: "Ensure sane realmd.conf exists prior to running realm command"
template: src=sssd/realmd.conf.j2 dest=/etc/realmd.conf
- name: "Test if we are currently part of Active Directory"
shell: "realm list"
register: domain_membership_test
ignore_errors: True
- name: "Join to UCSD Active directory if needed"
when: domain_membership_test.stdout.find("AD.EXAMPLE.COM") == -1
shell: "echo -n {{ foo_password_from_vault }} | realm join --user
foo --verbose --client-software sssd --server-software
active-directory AD.EXAMPLE.COM"
notify:
- clear sssd cache and restart
#- name: "Ensure appropriate krb5.conf file is deployed"
# template: src=sssd/krb5.conf.j2 dest=/etc/krb5.conf
# a custom sssd.conf is needed rather than the one built by realm for
a few reasons:
# - default ldap_idmap_range_size is too small for ucsd-ad
# - want custom ad_access_filter
# - want deterministic id mapping for @AD.EXAMPLE.COM domain which requires:
# using a pre-established ldap_idmap_range_size and using
ldap_idmap_default_domain which ensures that @ad.ucsd.edu will always
be mapped into first domain 'slice'
- name: "Ensure appropriate sssd.conf is deployed"
template: src=sssd/sssd.conf.j2 dest=/etc/sssd/sssd.conf mode=0600
notify:
- clear sssd cache and restart
- name: "Ensure sssd service is enabled"
service: name=sssd enabled=yes
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/authentication/attachments/20150327/1f395291/attachment.html>
More information about the Authentication
mailing list