NIS帳號在LDAP上遷移

實驗步驟介紹
1.先讓目錄服務加入到NIS域中得到帳戶,組信息
2.把信息重定向到/tmp目錄下取名爲passwd.nis和group.nis
3.把passwd.nis分割成兩個文件passwd.nis-new和shadow.nis(爲何要分割,由於passwd.nis中的信息包含了密碼和帳戶,咱們須要密碼信息獨立成一個文件,帳戶獨立成一個文件,爲了往後用遷移命令轉成ldif文件)
4.用遷移命令轉成ldif文件
5.導入ldif文件
6.被認證的用戶訪問ldap服務器
 
小知識點先預熱一下
爲啥要把NIS裏的帳號遷移到LDAP中去
1.NIS只能存儲帳戶信息也就是用戶名和密碼家目錄,而LDAP能夠額外存儲用戶信息例如電話,郵箱,地址,郵編等。你能夠得到更多有用的用戶資料
2.NIS每次添加一次帳戶就要重建一次數據庫,而LDAP添加帳戶後當即更新,所見即所得。
 
咱們能把什麼數據從NIS中轉移出去呢
/etc/passwd
/etc/group
/etc/shadow
/etc/auto.*
 
請注意這個傢伙posixAccount
1.在ldap中登陸名用uid屬性存放,uid不是帳戶id號碼,帳戶id用uidNumber屬性存放。
2.cn和gecos均可以表示全名,這老是讓人有些困惑。cn屬性存放真實的名字real name,而gecos存放的cn,roomNumber,telephoneNumber,homeNumber
3.posixAccount是一個輔類,描述的就是/etc/passwd的一行用戶記錄
4.posixAccount是一個輔類,那就不能在一條記錄中單獨存在必須有一個主類。這裏有兩個主類可選,account和inetOrgPerson
*account選擇是你當你肯定把ldap做爲nis的替代品來管理帳號信息
*inetOrgPerson選擇是你決定把不少用戶的信息存儲下來,例如電話,地址,郵箱,郵編,國家,區域等。由於inetOrgPerson能夠提供更多的屬性來更好的描述一個用戶。
順便注意一下還有同黨shadowAccount
1.shadowAccount中的屬性就是描述了/etc/shadow中的一條記錄
2.當記錄中有shadowAccount這個輔類後就會把密碼的相關屬性(從/etc/shadow獲得的)寫在這條記錄中
 
 
 
咱們先在ldap服務器上規定好加密機制用crypt
p_w_picpath
 
添加一個新的管理帳戶client-root,給客戶端提高權限。
1若是客戶端用普通用戶登陸getent時是沒法獲得有關shadow密碼信息的,而若是是root登陸則能夠.
2.若是客戶端用普通用戶登錄ldapsearch時是沒法獲得有關shadow密碼信息的,root也不行,除非指定下圖這個client-root專門的用戶來作這件事情,由於在ldap服務器中作了訪問控制規定只有這個用戶能在查詢時獲得密碼信息。
p_w_picpath
p_w_picpath
p_w_picpath
p_w_picpath
p_w_picpath
p_w_picpath
p_w_picpath
 
 
 
開始作NIS遷移,先從NIS從導出你要的全部信息passwd,group
p_w_picpath
這條命令是把passwd.nis的前2列截取出來做爲shadow.nis文件的前2列,命令的最終樣子和/etc/shadow格式一致 p_w_picpath
p_w_picpath
這條命令是把psswd.nis文件第二列密碼加密部分變成x,也就是和/etc/passwd格式保持一致
p_w_picpath
p_w_picpath
這裏是在配置遷移腳本最終導出成ldif數據庫文件被ldap服務器所用
vim  /usr/share/openldap/migration/migrate_base.pl
p_w_picpath
p_w_picpath
vim  /usr/share/migration/migrate_passwd.pl
p_w_picpath
p_w_picpath
vim  /tmp/base.ldif注視掉前面2條記錄,由於已經在目錄服務中了
p_w_picpath
開始把生成的ldif文件添加到目錄服務中
p_w_picpath
p_w_picpath
如今咱們就要容許被認證的用戶(可以提供用戶名密碼的用戶)訪問目錄服務器
p_w_picpath
這一設置將涉及到如下的幾個配置文件
/etc/ldap.conf
p_w_picpath
p_w_picpath
由於是被認證的用戶來訪問目錄服務因此須要檢查ca中心的證書以及匹配與服務器之間加密的方式,作一點小小的改動
checkpeer :  on  (開啓檢查ca證書功能)
tls_cacertfile  /etc/openldap/cacerts/my-ca.crt (把my-ca.crt拷貝到此目錄)
pam_password  crypt (目錄服務用得這種加密方式,那客戶端就要匹配往後好協商)
rootbinddn   uid=client-root,dc=server109,dc=example,dc=com(在目錄服務中創建的一個有點大權限的帳戶能夠獲得不少密碼相關的屬性信息,而匿名用戶就沒法看到了,給rootbinddn用戶一個密碼存放在/etc/ldap.secret中,chmod 0600權限,chown  root:root所屬)
/etc/nsswitch.conf
p_w_picpath
/etc/pam.d/system-auth
p_w_picpath
如今咱們來作幾個小測試
第一個看看root登錄使用getent命令有什麼不一樣
如今你用getent  passwd能夠看到帳戶信息了,而且getent  shadow是能夠看到密碼信息的。
p_w_picpath
p_w_picpath
第二個看看普通用戶登錄
p_w_picpath
若是你發現getent得不到帳戶信息,那是由於帳戶在ldap服務器上沒有開啓posixAccount屬性,你看getent獲得的信息是否是有用戶名,密碼,家目錄,uid,gid,shell。看下圖的用戶屬性是否是這些屬性都有呢
p_w_picpath
第三個看看普通用戶和root查詢是否能夠看到shadow信息呢
p_w_picpath
p_w_picpath
第四個咱們來看看我指定ldap服務器的用戶來查詢, 上面兩圖無論你是普通用戶仍是root你都是本地系統帳戶,而你查詢ldap的數據庫要想獲得你要的信息就必須指定ldap上的帳戶,跟你本地什麼帳戶登錄沒任何關係。
p_w_picpath
如今咱們來作一個測試,利用ssh客戶端遠程登陸192.168.0.209這臺ftp服務器,用guest2001帳戶。
p_w_picpath
p_w_picpath
p_w_picpath
你能不能在遠程利用ldap驗證guest2001登錄成功,功勞都要歸功於guest2001在ldap服務器上擁有一個posixAccount信息,你們會很疑惑了,在User選項中已經設置了用戶名和密碼難道用戶還不能登錄嗎?回答是的確不能登錄!!!由於一個用戶登錄用戶名和密碼做爲驗證信息是覈查身份之用,而同時你登錄系統言外之意就是進入系統的家目錄,使用什麼命令解釋器,你屬於哪一個組,帳戶號碼uid多少,加載用戶bash_profile.你想若是沒有這些信息,就算你身份驗證成功了,你登錄系統後你總有個落腳點呆着吧。因此第二個圖就是有關於帳戶登錄信息的。因此帳戶登錄=身份覈查+落腳點。
p_w_picpath
相關文章
相關標籤/搜索