SSSD是否应对本地用户进行AD访问validation?

我花了很多很多的快乐时光来探索集成RHEL7和Active Directory所需的sssdconfiguration。 其中很大一部分包括浏览SSSD和AD集成的许多post,特别是在AD中进行本地UID查找。 虽然这些启发,似乎没有涵盖我的情况。

我目前的问题是,我可以使用Windows用户(使用Windows用户的密码“DOMAIN1 \ sales1”)通过SSHlogin,SSSD将正确validationWindows用户的状态。 如果Windows用户被禁用,或帐户已过期,则login失败 – 全部都应该如此。

如果我通过使用与windows用户具有相同id的linux用户(使用linux用户密码的“sales1”)通过SSHlogin,SSSD将在AD中查找并匹配windows用户,但不会validationAD帐户。 我已经将linux用户的UID应用到了windows用户的uidNumber属性,以帮助AD-linux用户匹配,但是当我使用linux用户凭证login时,似乎没有任何东西可以影响AD用户状态validation。

sssd.conf

[sssd] domains = domain1.local config_file_version = 2 services = nss, pam debug_level = 7 [domain/domain1.local] ad_domain = domain1.local krb5_realm = DOMAIN1.LOCAL realmd_tags = manages-system joined-with-adcli id_provider = ad auth_provider = ad access_provider = ad chpass_provider = ad ## We do NOT want offline caching of Windows authentications cache_credentials = False krb5_store_password_if_offline = False ## Found this ticket for sssd: https://fedorahosted.org/sssd/ticket/2851 ## might be the GC lookup that is stopping expired users from being denied access ad_enable_gc = False ldap_id_mapping = False override_homedir = /home/%u default_shell = /bin/bash debug_level = 8 

的nsswitch.conf

 passwd: files sss shadow: files sss group: files sss hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files rpc: files services: files sss netgroup: files sss publickey: nisplus automount: files aliases: files nisplus 

pam.d /密码authentication – 交stream

(由authconfigconfiguration)

 #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_env.so auth [default=1 success=ok] pam_localuser.so auth [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_oddjob_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so 

我试图用SSSD来实现可行性吗?

编辑#1

我对sssd以及AD集成对RHEL系统的影响非常陌生,所以我认为我的解决方法是错误的。

我有一个现有的RHEL独立服务器,运行使用linux用户authentication(passwd,shadow,groups)的应用程序。 我已经被要求在允许他们访问Linux应用程序之前validation广告中的应用程序用户。 应用程序必须继续使用现有的linux用户和组ID,因为它目前不能处理长时间窗户用户或用“@”处理用户标识,并且很大一部分acl行为是build立在现有组上的。

我原来的方法(导致这个问题)是使用sssd&realm将RHELjoinAD,然后(通过pam / sssd)获得linuxlogin,为linux用户find一个匹配的AD用户,最有可能使用在Windows用户的POSIX属性,并validation他们的AD帐户。

我想我实际需要达到的是
– build立AD用户和使用该应用程序的本地linux用户之间的映射关系

当这样的地图/关系存在时:
– login时只需要inputAD密码
– validationAD帐户访问状态(帐户启用/未过期/ GPOlogin权限/正确AD组的成员)
– 始终使用映射用户的本地用户名,uid和gid

我认为使用realm permit --groups [email protected]将允许我限制AD用户login到一个特定的AD组(我们目前不希望有Windows用户login到Linux上面的应用程序用例)。
我不确定的是将AD用户映射到现有Linux用户的最佳方式。 该应用程序目前创build和维护Linux用户帐户,所以任何解决scheme都需要能够使用这个。

从过去两周我所读到的,我想我的select是:
– 使用SSSD本地覆盖来映射AD和Linux用户。
我没有这方面的经验,所以我依靠像SSSD本地覆盖这样的文章作为指标,这是可行的
– 依靠AD用户定义的POSIX属性。
这确实意味着这些值将被用户在他们连接到的每个服务器上使用,这也引用了POSIX属性。 我不确定这是否长远来说是明智的。 testing显示,当用户loginlinux时,在windows用户上定义的uid,uidNumber和gidNumber使用这些值。 这确实会强制执行维护工作,以确保AD用户定义这些值。
– 安装IPA并使用ID视图。
我没有安装或设置的经验,但我的阅读表明这是一个可能的select。 使用这个选项似乎有额外的安装,configuration和维护成本。

所以我想我现在需要确认这些确实是唯一的select,还是有其他我不知道的,以及最适合我最小的AD集成需求的可用选项。

是的,这是正确的。 事实上,SSSD的devise决定只关心SSSD本身能够服务的用户(getent passwd -s sss $ someuser)。

如果你想继续使用远程密码的本地用户(为什么?sssdcaching..)你想使用id_provider =代理和远程auth_provider。 请参阅我的博客文章的主题: https : //jhrozek.wordpress.com/2015/07/17/get-rid-of-calling-manually-calling-kinit-with-sssds-help/