如何让 centos 7 使用来自活动目录的 uid 和 gid?

如何让 centos 7 使用来自活动目录的 uid 和 gid?

我正在准备从 CentOS 6 升级到 CentOS 7。目前,在版本 6 中,我们仅使用映射到 AD 的 LDAP 进行身份验证。然后使用 Unix 的 Active Directory 扩展中的 UID 和 GID。

在我对 CentOS 7 的实验中,我查阅了文档(我认为是 Red Hat 的),其中解释了如何加入域。这个过程基本上很简单,而且大部分情况下都运行良好。但是,它不仅仅使用 AD Unix 属性中的 UID 和 GID。它将这些 ID 映射到完全不同的 ID。在 AD 中,用户在 10000 范围内。CentOS7 为每个用户提供的 UID 在 625000000 范围内。

到目前为止,在我的小规模测试(3 个盒子)中,UID 似乎在所有盒子上都是一致的,这很好。但是,当我开始在生产中推出 7 时,这将是一个逐步升级的过程。我不会同时升级每个盒子。我担心用户在不同的盒子上拥有不同的 UID 的问题。有没有办法让 CentOS 7 只使用 AD Unix 属性中的 UID 和 GID?

这是我的 smb.conf:

[global]
    workgroup = COMPANY
    client signing = yes
    client use spnego = yes
    kerberos method = secrets and keytab
    log file = /var/log/samba/%m.log
    password server = ad_domaincontroller.company.net
    realm = COMPANY.NET
    security = ads
    server string = Samba Server Version %v
    max log size = 50

这是我的 sssd.conf

[sssd]
config_file_version = 2
domains = company.net
services = nss, pam, pac

[nss]
filter_groups = root
filter_users = root

[domain/company.net]
id_provider = ad
ad_server = ad_domiancontroller.company.net
ad_hostname = centos7-22.company.net
auth_provider = ad
chpass_provider = ad
access_provider = ad
ldap_schema = ad
use_fully_qualified_names = False
cache_credentials = true
ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true

编辑:我尝试将 ldap_id_mapping = False 添加到 sssd.conf,但包含该行后,sssd.service 将无法启动。以下是输出:

Sep 29 12:59:55 centos7-22 sssd[32827]: Starting up
Sep 29 12:59:55 centos7-22 sssd[32828]: Starting up
Sep 29 12:59:55 centos7-22 sssd[32831]: Starting up
Sep 29 12:59:55 centos7-22 sssd[32830]: Starting up
Sep 29 12:59:55 centos7-22 sssd[32829]: Starting up
Sep 29 12:59:55 centos7-22 sssd[32832]: Starting up
Sep 29 12:59:56 centos7-22 sssd[be[32833]: Starting up
Sep 29 12:59:56 centos7-22 systemd[1]: sssd.service: control process exited, code=exited status=1
Sep 29 12:59:56 centos7-22 systemd[1]: Failed to start System Security Services Daemon.
-- Subject: Unit sssd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit sssd.service has failed.
--
-- The result is failed.
Sep 29 12:59:56 centos7-22 systemd[1]: Unit sssd.service entered failed state.

答案1

来自 sssd-ad 的手册页:

默认情况下,AD 提供程序将从 Active Directory 中的 objectSID 参数映射 UID 和 GID 值。有关详细信息,请参阅下面的“ID 映射”部分。如果您想禁用 ID 映射并改为依赖 Active Directory 中定义的 POSIX 属性,则应设置 ldap_id_mapping = False

答案2

SSSD 内部使用 ID 作为唯一性属性,目前不支持更改 UID。

如果 ID 分配发生变化,则必须删除数据库,这是预料之中的,也是必须的,就像您从 ID 映射切换到 POSIX 信息或反之亦然一样。也许手册页中没有明确记录这一点 — 请随时提交错误以改进我们的文档。谢谢!

相关内容