說實話我本身的工做都是關注存儲結構,集羣,負載均衡,基於操做系統級別的安全。不多研究目錄服務以及相關的整合技術,去網上看了一下不少文章不是體系太龐大就是環境未知,憑藉個人智商是沒辦法搞定了。這裏我就班門弄斧給新人們一點小小的入門,我本身都是新人獻醜了。
我理解的整合?
就是把現有的資源發揮最大的使用限度,各類服務器依據自身硬件軟件優勢各揮所長,各司其職。網絡中的服務器衆多
1.文件服務器
2.網站服務器
3.帳號管理服務器
我就先說這麼多舉個簡單例子。文件服務器用得samba,網站服務器用得apache,帳號管理服務器用得AD活動目錄。
1.客戶端user1要訪問samba的共享目錄須要提供身份覈查
2.samba這臺linux服務器本地帳號庫上沒有user1,那怎麼驗證呢?
3.因此samba就把這個身份覈查請求交給了帳號管理服務器AD
4.AD身上存了公司全部用戶的用戶名,密碼,郵箱,電話,地址等信息,因此AD能夠幫samba覈查user1的身份是否合法。
5.一旦經過覈查就把這個消息傳給samba並容許訪問共享目錄
6.用戶知道samba不能覈查本身身份嗎?絕對不會知道,用戶一直覺得是samba作的核查身份。這個過程是samba把AD的帳戶映射了一份在本身本地。什麼叫映射?就若是你的影子同樣,有你的人在就會有影子在,人不在了影子天然就沒了。映射不是什麼複製,只是依據主載體變了一個樣子而已。
7.這樣作的好處就是不論你登錄什麼linux服務器,只要有身份覈查就交給AD去作,AD就是幹這個活的很專業,而samba就是文件共享的很專業。你們就作本身最擅長的事就行了,但同時你們也有不擅長的或者不能實現的缺點,那麼你們就整合在一塊兒,優勢融合了,那就掩蓋了缺點,共同完成用戶這樣那樣煩人的需求
那麼linux服務器怎麼和AD整個在一塊兒呢?
1.由於linux服務器的目錄服務使用的標準schema,而AD把schema擴展了並把objetclass和attribute都該了自定的名字
2.好比linxu服務器的用戶名屬性叫uid,而AD的用戶名屬性叫sAMAccountName
3.當linux映射AD用戶時就說「如今幫我覈查一個uid=user1的帳戶」,AD收到這個消息後一查說不認識uid這個屬性幫不上忙呀。
4.因此須要先作attribute和objectclass的映射nss_map_attribute uid sAMAccountName
5.如今linux改詞了說「如今幫我覈查一下uid=user1的帳戶,你的說法叫sAMAccountName=user1」,這回AD知道samba想幹啥了,ok小case。
6.固然linux服務器和AD之間不少有關用戶的屬性都要作映射,咱們慢慢來作實驗吧。班門弄斧完畢!!
實驗環境
station9.example.com是客戶機,域爲example.com,dns指向AD
server109.example.com是linux服務器,域爲example.com,dns指向AD
w2k3.ad.example.com是AD活動目錄,域爲ad.example.com,本身是dns服務器,並把dns指向本身
AD上有個Linux-NSS帳戶用來得到AD數據庫裏的帳號信息,AD你好歹也要給linux服務器一個綠色通道呀直接用Linux-NSS從AD裏拿帳戶信息,AD一看是Linux-NSS來請求帳戶映射的固然是容許的了。要不怎麼叫整合呢。
首先咱們先創建一臺AD
由於server109.example.com和station9.example.com都屬於example.com域了,爲了能解析到這兩臺計算機,我決定在AD上的dns再創建一個正向域example.com,並添加主機記錄server109和station9
在dns窗口作得導航欄中選擇example.com點右鍵選擇「新建主機」
咱們在AD上創建一個帳戶Linux-NSS,這個帳戶專門是AD容許Linux服務器映射帳戶用的綠色通行證。
而後咱們在創建一個用戶叫billgates,看到可否映射到這個帳戶的信息
在映射過程當中須要把AD的schema擴展掉要否則他就不認識uid=sAMAccountName是一回事,因此必需要讓AD也認識uid這是什麼東東。咱們要安裝一個SFU3.5的包。完成後須要從新啓動,漫長等待。。。。
開啓相關支撐Linux服務器的服務
其次咱們把用戶相關的類和屬性讓linux服務器與AD達成一致,互相通告。
nss_map_objectclass posixAccount User 映射用戶類
nss_map_objectclass shadowAccount User 映射密碼類
nss_map_attribute uid sAMAccountName 映射用戶名屬性
nss_map_attribute uidNumber msSFU30uidNumber 映射用戶號碼屬性
nss_map_attribute gidNumber msSFU30gidNumber 映射組號碼屬性
nss_map_attribute gencos cn 映射用戶全名屬性
nss_map_attribute loginShell msSFU30loginShell 映射用戶命令解釋器屬性
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_objectclass posixGroup Group 映射組類
pam_login_attribute sAMAccountName 映射pam模塊驗證用戶名
pam_filter objectclass=User
pam_password ad 採用AD來驗證身份,我理解爲使用kerberos
把Linux服務器加入到AD的LDAP數據庫中
此時咱們用getent passwd看能不能得到AD上的帳戶了
咱們在試試能不能用gates登錄
在來利用ldapsearch查找一下
ldapsearch -x 'sAMAccountName=gates' -D 'cn=billgates,cn=Users,dc=ad,dc=example,dc=com' -W -LLL
最後一個實驗就是如何把linux計算機加入到活動目錄中,利用winbind
首先把AD中的dns服務器主機記錄創建好如圖
Linux服務器的dns解析順序必定先用AD的dns服務器
必定要注意和AD同步時區 net time –S w2k3.ad.examle.com固然你能夠把AD當成NTP服務器加入到Linux服務器中,我每次用net time同步都不成功,最後都是直接用date命令手工改的
如今開始利用winbind把Linux服務器加入到AD中做爲一臺普通的客戶機而已
咱們回到AD中看有沒有計算機加入進來,我把server109,server209都加進來,station9死活進不來不知道爲什麼。
夜已經深了,如今凌晨了,爲了作實驗今天的魔獸世界戰場平常沒作,鍊金也沒作,又損失了幾百G。