Samba 4 中的 NT 到 UNIX 組映射

Samba 4 中的 NT 到 UNIX 組映射

我想將 NT 群組對應Domain Users到與 Samba 4.7.6 Active Directory 網域控制站上不同的 UNIX 群組users,但是當我嘗試執行此操作時,它會失敗,如下所示:

> net groupmap modify ntgroup='Domain Users' unixgroup='share' type=domain
Could not update group database
[255]

我讀到您現在可以使用 winbind 執行此操作,因此我嘗試了,但隨後出現以下錯誤。

> wbinfo --set-gid-mapping=1000,S-1-5-21-...-513
failed to call wbcSetGidMapping: WBC_ERR_NOT_IMPLEMENTED
Could not create or modify gid to sid mapping
[1]

在 Samba 4 中管理 NT 到 UNIX 群組映射的正確方法是什麼?

編輯:在 Samba 郵件清單中我發現有人類似的問題,所以也許我可以透過直接修改內部 LDAP 伺服器來解決這個問題?就像是:

ldbadd /var/lib/samba/private/sam.ldb.d/metadata.tdb ...

不幸的是,我沒有使用 LDAP 的經驗,因此我不知道如何為我的用例提供有效的 LDIF 檔案。

編輯2:感謝一個關於 LDAP 中的 Samba 4 使用者和群組管理的部落格文章,我設法編輯 NT 群組映射到的 UNIX 群組:

> ldbedit -e nano -H /var/lib/samba/private/idmap.ldb '(objectSid=S-1-5-21-1580746459-3543417057-3597883204-513)'

> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:100:

> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> share

因此,現在正在報告正確的群組net groupmap,但wbinfo仍會報告舊值,因此它可能無法從該資料庫取得資料。我不確定wbinfo報告正確的群組對於我的用例有多重要,但在使用它作為我的答案並將其標記為已解決之前,我會看看是否可以更改它。

答案1

據我所知,除了直接編輯內建 LDAP 伺服器之外,Samba 4 中似乎沒有任何工具可以讓您正確配置此功能。

net工具似乎無法很好地與內建 LDAP 伺服器配合使用,只有某些操作成功,例如列出群組映射和授予權限工作,但列出群組成員或修改群組映射不起作用(如我的問題)。

為了修改映射,我以 root 身分執行了以下命令。首先,我們必須檢索 的 SID Domain Users,因為它對於 Samba 伺服器的每次設定都是唯一的。

root> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> users

xidNumber: 100然後,我們透過使用預期的 UNIX GID來更新內建 LDAP 伺服器的 SID 記錄:

root> ldbedit -e nano -H /var/lib/samba/private/idmap.ldb '(objectSid=S-1-5-21-1580746459-3543417057-3597883204-513)'
# 0 adds  1 modifies  0 deletes

假設您將其變更為250名為 的 UNIX 群組的GID share,那麼呼叫net groupmap將導致傳回的群組為share

root> net groupmap list ntgroup='Domain Users'
Domain Users (S-1-5-21-1580746459-3543417057-3597883204-513) -> share

wbinfo仍然winbindd會報告舊的 GID:

root> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:100:

所以我們必須使 的快取條目無效Domain Users。經過一些實驗後,我設法透過要求它找到更新的 GID 來做到這一點:

root> wbinfo --gid-info 250
AD.EXAMPLE\domain users:x:250:

然後也可以透過以下方式正確報告--group-info

root> wbinfo --group-info='Domain Users'
AD.EXAMPLE\domain users:x:250:

相關內容