Active-Directory

Samba 4 升級後不支持 Winbind rfc2307 shell

  • March 21, 2019

我有帶有 samba-winbind 的 CentOS 7 伺服器與 AD 對話。我們使用 rfc2307 來覆蓋某些(高級)使用者的預設 shell。一台這樣的伺服器仍在執行舊版本的 samba-winbind,v.4.4.4-14.el7_3;這按預期工作。

從 smb.conf 那裡:

#--authconfig--start-line--

# Generated by authconfig on 2016/09/06 08:59:23
# DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--)
# Any modification may be deleted or altered by authconfig in future

  workgroup = MYDOMAIN
  realm = MYDOMAIN.COM
  security = ads
  idmap config * : range = 16777216-33554431
  template homedir = /home/%U
  template shell = /sbin/nologin
  kerberos method = secrets only
  winbind use default domain = true
  winbind offline logon = false

#--authconfig--end-line--
idmap_ldb:use rfc2307 = yes
winbind nss info = rfc2307

從這個伺服器,我可以查詢一個非超級使用者:

$ wbinfo -i Scott
scott:*:16777255:16777217:Scott - My Company:/home/scott:/sbin/nologin

我還可以查詢高級使用者:

$ wbinfo -i tgirsch
tgirsch:*:16777216:16777217::/home/tgirsch:/bin/ksh

高級使用者已覆蓋 shell。

但在大多數伺服器上,我們已經更新,samba-winbind 是 4.6 或 4.7;在這些伺服器上,“超級”使用者沒有選擇覆蓋外殼:

$ wbinfo -i tgirsch
tgirsch:*:16777218:16777219:Tom Girsch - My Company:/home/tgirsch:/sbin/nologin

一些初步搜尋建議需要更新 smb.conf 文件,以用一些新參數替換一些不推薦使用的參數。我已經這樣做了,但我仍然看到完全相同的行為。下面是相關 smb.conf 部分在具有 samba-winbind 4.7.1-9.el7_5 的機器上的樣子:

#--authconfig--start-line--

# Generated by authconfig on 2019/03/14 16:23:41
# DO NOT EDIT THIS SECTION (delimited by --start-line--/--end-line--)
# Any modification may be deleted or altered by authconfig in future

  workgroup = MYDOMAIN
  realm = MYDOMAIN.COM
  security = ads
  idmap config * : range = 16777216-33554431
  template homedir = /home/%U
  template shell = /sbin/nologin
  kerberos method = secrets only
  winbind use default domain = true
  winbind offline logon = false

#--authconfig--end-line--
  idmap_ldb:rfc2307
  idmap config * : backend = tdb
  idmap config MYDOMAIN:backend = ad
  idmap config MYDOMAIN:schmea_mode = rfc2307
  idmap config MYDOMAIN:unix_nss_info = yes

我試過註釋掉 idmap_ldb 行並重新啟動,那裡沒有區別。

請注意,“Scott”使用者(非 power/default shell)和“tgirsch”使用者(power-user/overridden shell)都是 AD-only。

我難住了。任何幫助將不勝感激。

回答了我自己的問題。每個定義的域都需要自己的範圍,該範圍不與 * 範圍重疊。因此,以下更改清除了一切:

  ; The following line is deprecated, replaced by the schema_mode line below
  ;idmap_ldb:rfc2307
  idmap config * : backend = tdb
  idmap config MYDOMAIN:backend = ad
  idmap config MYDOMAIN:schmea_mode = rfc2307
  ; Added the following to define custom non-overlapping range
  idmap config MYDOMAIN:range = 10000-19999
  idmap config MYDOMAIN:unix_primary_group = yes
  idmap config MYDOMAIN:unix_nss_info = yes

“idmap config MYDOMAIN:range” 行修復了它。我還需要添加“idmap config MYDOMAIN:unix_primary_group = yes”行

**重要提示:**如果您進行了設置,MYDOMAIN 中的 AD 使用者必須在 AD 中填充“Unix 屬性”選項卡,否則他們將被拒絕。

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