[華語, cmn-Hant-TW]
剛好有兩到三台 samba 3 分享的需求,所以研究了一下怎麼把這堆機器串到 ldap 上。
看了一下 standalone 的架構不好管理,所以就用 domain controller (pdc) 加 members 的形式,也就是只有 pdc 串到 ldap 上,其他的 member 只跟 pdc 問權限而已,不會直接串 ldap。當然,不管是間接或是直接,整個網域使用者帳號跟機器都會由 ldap 管控。
因為還蠻複雜的,這邊就大概列了一下卡關的地方,跟要注意的點而已
首先要把一台設成 pdc,照這篇跟官網這篇來設定應該沒啥太大問題,雖然說那篇的目的是要弄 windows 7 登入網域就是。ldap 存取權限要設好,有用 SSL 的話,CA 也要設好,這樣 domain 應該就會自動在 ldap 上開好了,不過 domain 會自動開在根目錄下,要換位子的話開好再自己移即可。
接下來要設 clients,看官網這篇即可,大致上就是在 smb.conf 裡面 workgroup 要設成跟 pdc 一樣,netbios 設自己的名字,security 設成 domain 即可,接著只要 net join 成功,連到這台要認證的東西都會透過 pdc 處理了,不過要能 join 成功其實沒那麼容易,至少還要達成這些條件
- client 帳號要在 ldap 註冊好
- 下指令的 user 帳號要有 join domain 的權限
- 所有帳號的 primary group sid 都要跟 domain 一致
第一點其實可以在 smb.conf 裡面設好自動開帳號的指令來註冊,不過反正要加的 server 是固定那幾台,用一些常見的 ldap 管理工具先加好即可。第二點的話要注意的是這個權限可以用這篇提到的方法設定,但是要管理者才能設,不過預設情況下 samba 不知道誰才是管理者,所以沒有人有權限可以設定。設管理者最方便的方式就是把某個 unix 群組對應成 samba domain 的管理者群組,詳細方法可以看這篇,對應好之後該群組就是管理者,群組的成員就可以設定權限了,有趣的地方在於管理者本身就有 join domain 的權限,所以變成管理者之後也不用特別再設給自己 join domain 權限了。
第三點基本上就是想辦法讓所有看得到 sid 的地方通通一致化,如果不小心清掉本機 samba 的資料庫,也要想辦法用 net setlocalsid 把他設回來,當然 ldap 裡面的值也要一致,只要有不一致的地方,就很可能會連不上。
大致上這樣就可以動,至於像是 ADS 或是跨網域登入之類的東西這次沒用到就先放著,之後有要用到的話再來作功課好了。