使用 LDAP:如何使用 SSH 登錄,如何使用 autofs 掛載 Samba 主目錄?
考慮到 MacOS 和 Synology(我的 NAS)的特殊特性,我花了一些時間在我的 MacOS、iOS 和 Linux 網路中設置基於 LDAP 的身份驗證。SSH 登錄(SSH 密鑰等)有效,Samba 共享掛載有效。這一切都非常繁瑣,而且我現在對 LDAP 的了解比我預期的要多。
然而…
在達到我可以(至少在理論上)登錄到我網路中的任何機器的程度之後,我認為使用者也可以在任何地方訪問同一個主目錄會很好。沒問題:
autofs
,也可以從 LDAP 管理!或者我是這麼想的……我正在嘗試以下方法來設置 Samba 主目錄
autofs
:cn=*,ou=auto.home,cn=automount,cn=etc,dc=home,dc=arpa cn: * objectClass: automount objectClass: top automountInformation: -fstype=cifs,vers=3.0,domain=HOME,rw,username=&,uid=&,gid=& ://s-sy-00.local/home
一些背景:
s-sy-00.local
是我的主目錄所在的 Synology NAS。/home
是 Synology 為 中定義的使用者提供的主目錄共享的 UNCusername=
。當我使用 SSH 登錄到遠端機器時,問題就開始了。
autofs
嘗試掛載使用者的主目錄,但需要使用者的密碼。我可以將密碼放入password=
該行中的參數中automountInformation
,或者我可以將使用者名和密碼放入與credentials=
參數一起傳遞的憑據文件中。這兩種方法都會增加複雜性(automount
每個使用者的條目)和重複(在兩個不同的地方使用相同的使用者名和密碼:LDAP 和憑證文件或 LDAP 中的 theautomount
和 theposixUser
)。有處理這個問題的標準方法嗎?我的搜尋引擎技能還沒有出現任何東西。
在我看來,有三種可能的解決方案:
- 對其他人來說是顯而易見的,但對我來說不是;
- 使用 SSH 密鑰從 SSHFS 共享中為每個使用者安裝憑據文件(可能從 LDAP 動態生成);
- 使用 Kerberos 實現成熟的 SSO。
我更喜歡數字 1 :-) 我對 Kerberos 有反感:它似乎有點矯枉過正,而且肯定相對複雜。
任何人都可以提供一些智慧的話,讓我在新的一年裡有一個飛躍的開始嗎?
好吧,只要您在 Linux 上並且如果您在初始登錄時使用密碼身份驗證,那麼您就可以擁有一個 PAM 模組,它將密碼儲存在核心密鑰環中,mount.cifs 可以從中獲取它。我不能 100% 確定 cifs-utils 目前是否帶有一個,但它確實有一個
cifscreds
CLI 工具可以做到這一點。不過,就我個人而言,我只會設置 Kerberos 身份驗證而不是 LDAP。(也就是說,讓 LDAP 只做目錄服務的工作。)總體而言,Kerberos 就像 LDAP:從外部看起來很複雜,但仔細觀察會發現非常簡單,除了數百萬個怪癖、邊緣情況和可追溯到 1980 年代的奇怪決定再次使其變得複雜。
它將比特定於 SMB 的 PAM hacks 更加通用——相同的票證可用於訪問 SMB、NFS、LDAP、HTTP、SSH……您甚至可以將現有的 LDAP 伺服器用作 KDC 數據庫後端,獲得免費複製,無需處理 kprop。
請注意,對於 mount.cifs, Kerberos 和 cifscreds都旨在通過
multiuser
選項掛載共享時使用,這為您提供類似 NFS 的行為 - 多個使用者可以訪問相同的 SMB 掛載,並且核心將自動使用每個 uid 的正確 SMB 憑據。至於 SSH 公鑰身份驗證,您可以自動執行的操作並不多——要麼檢索憑證文件並將其
cifscreds
與kinit
..