Active-Directory

我如何讓 centos 7 使用活動目錄中的 uids 和 gids?

  • October 2, 2015

我正在準備最終從 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 為每個使用者提供 625000000 範圍內的 UID。

到目前為止,在我的小規模測試(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.

從 sssd-ad 的手冊頁:

預設情況下,AD 提供程序將從 Active Directory 中的 objectSID 參數映射 UID 和 GID 值。有關這方面的詳細資訊,請參閱下面的“ID 映射”部分。如果您想禁用 ID 映射,而是依賴 Active Directory 中定義的 POSIX 屬性,您應該設置 ldap_id_mapping = False

SSSD 內部使用 ID 作為唯一性屬性,目前不支持更改 UID。

如果 ID 分配發生變化,則預期並要求必須刪除數據庫,就像從 ID 映射切換到 POSIX 資訊時一樣,反之亦然。也許它沒有在手冊頁的顯著位置記錄——請隨時送出錯誤以改進我們的文件。謝謝!

引用自:https://serverfault.com/questions/631657