Pam
LDAP 每使用者覆蓋
我正在使用
openldap
+nslcd
連接到 LDAP 伺服器以對某些使用者進行身份驗證(這些使用者希望他們的密碼和大部分配置在許多設備上共享)。我不控制 LDAP 伺服器。但是,同步是在使用者已經擁有雙帳戶之後進行的,因此主文件夾的名稱不匹配(由於腳本中可能存在硬編碼路徑,因此移動它們是不明智的)。我正在考慮一個硬連結目錄,但我想知道是否有辦法為特定使用者覆蓋主文件夾,這看起來更乾淨,聽起來應該是一個常見的案例。
我很驚訝
nslcd.conf
似乎只接受一個過濾器(每個 map=passwd
),並且map
指令將簡單地立即替換所有使用者的首頁。有沒有辦法在 LDAP 查找後優雅地“修復”單個條目?我的搜尋大多遇到了替換所有使用者模式的答案,或者給出了無用的答案(例如這個簡單地覆蓋了以前的過濾器的答案)。
我認為我需要什麼:
filter passwd (&(objectClass=inetOrgPerson)(<redacted>)) # the last part is wishful thinking, not actual syntax map passwd homeDirectory "<redacted>" if (uid=<redacted>)
我是 LDAP 的新手,所以我可能不完全理解事務發生的順序以及應該執行此操作的是 PAM 還是 nslcd。我意識到這不是正確處理這種情況的最佳方法,但我仍然想知道是否可以做到。
我認為您不能在nslcd.conf(5)中使用map指令實現單獨的覆蓋。這種映射應用於整個 passwd 映射。但是,根據模組名稱的順序,您可以設置具有不同主目錄的本地passwd條目,該主目錄在文件**/etc/passwd中具有更高的優先級。
/etc/nsswitch.conf
範例行
/etc/nsswitch.conf
:passwd: files ldap
確保其餘屬性保持一致!
IIRC 較新版本的sssd有一個 CLI 工具sss_override(8),它允許為某些使用者設置單獨的值。
但問問你自己:你真的想維持這個爛攤子嗎?
作為您,我首先要與使用者交談,他們寧願
$HOME
在腳本中使用 env var。