[整理篇]linux加入windows域之完美方案


       筆者這幾天在研究samba服務通過ad域進行用戶驗證。在查資料的過程中發現。關於linux加入windows域,網上資料不少,但是按着網上的說法做大多不成功,甚至很多人估計都不知道自己在說什么,最后一個net ads join就認為已經成功加入到域了,可是然后呢?作為域內的一個成員,普通的機器要可以提供域內的用戶登陸;作為samba服務要把共享加入到目錄中,這樣才起到加入域的作用嘛。筆者經過反復實驗,終於把linux加入到windows域一些細節記錄下來,不敢獨享,特拿出。
       筆者用的linuxcentos5.3ad域為win2k3 sp2。域為:Rainbird.net
Win2k3:
       Name:ad1
       Ip:192.168.1.241
       Dns:192.168.1.241
Centos5.3:
Name:Filesrv
Ip:192.168.1.246
Dns:192.168.1.241
Ok,let’s go!
1.samba服務器軟件需求
krb5-workstation-1.2.7-19
pam_krb5-1.70-1
krb5-devel-1.2.7-19
krb5-libs-1.2.7-19
samba-3.0.5-2
[root@filesrv CentOS]# rpm -qa|grep krb5
krb5-auth-dialog-0.7-1
krb5-libs-1.6.1-25.el5
krb5-devel-1.6.1-25.el5
pam_krb5-2.2.14-1
krb5-workstation-1.6.1-25.el5
[root@filesrv CentOS]# rpm -qa|grep samba
samba-swat-3.0.28-0.el5.8
samba-common-3.0.28-0.el5.8
samba-client-3.0.28-0.el5.8
samba-3.0.28-0.el5.8
 
如果centos在安裝的時候沒有取消默認選中的”Base”,krb5的包是默認全部安裝
如果沒有選擇安裝samba可以這樣安裝
[root@filesrv CentOS]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
[root@filesrv CentOS]# rpm -ivh --aid samba*.rpm
2.配置kerberossamba
因為筆者用的系統為centos所以為保證一次成功的准確率,這里就使用字符界面下的圖形工具來配置了。
運行setup工具
 
 
認證配置
 
 
選擇:
“use winbind”
“use kerberos”
“use winbind authertication”
 
刪除admin server 其余的改成真實情況
Realm為域名,KDC為域服務器的ip
 
配置winbind
Domain為你的域的,左面第一個”.”前面的東東
 
 
選擇”join domain”,提示是否先保存配置信息,肯定是yes了。
嘿嘿,看到這個畫面是不是想到了xp機器加入到域的情景?沒錯就是那個!輸入ad域的管理員密碼吧J
 
不出意外的話,你就到達了最后一個界面,肯定ok,然后退出了。
 
一般來說,只要兩台機器的時間上下不差五分鍾,且項都配置正確的話,你就會看到下面這個圖片。看到這個圖片說明你的linux成功加入到ad域啦!
 
OK,用圖形的好處就是方便快捷,但是這樣只適合rh系統。別的linux系統咋辦呢?別急。這個工具其實就是編輯以下三個配置文件:
/etc/nsswitch.conf
passwd:     files winbind(就是先讀files 然后再通過winbind認證)
shadow:     files winbind
group:      files winbind
/etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
[libdefaults]
 default_realm = RAINBIRD.NET(默認的域名)
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes
 
[realms]
 EXAMPLE.COM = {
  kdc = kerberos.example.com:88
  admin_server = kerberos.example.com:749
  default_domain = example.com
 }
 
 RAINBIRD.NET = {
  kdc = 192.168.1.241:88(域服務器)
  kdc = 192.168.1.241
 }
 
[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
 
 rainbird.net = RAINBIRD.NET
 .rainbird.net = RAINBIRD.NET
[appdefaults]
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }
/etc/samba/smb.conf
   workgroup = RAINBIRD//域名
   password server = 192.168.1.241//域服務器
   realm = RAINBIRD.NET
   security = ads//必須啟用
   idmap uid = 16777216-33554431
   idmap gid = 16777216-33554431
   template shell = /bin/bash
   winbind use default domain = false (改成true)
   winbind offline logon = false(改成true)
template homedir = /home/%U
   winbind separator = /
   winbind enum users = Yes
   winbind enum groups = Yes
紅色部分就是工具自動修改的了,但是smb.conf修改的不徹底,還不能滿足我們的要求,怎么辦呢?手動把藍色部分加上,並把那兩個false改成ture,然后設置samba的開機自動啟動chkconfig smb on,service smb on啟動服務,然后就是手工把linux加入到windows了

[root@filesrv ~]# net ads join -U administrator@RAINBIRD.NET

administrator@RAINBIRD.NET's password:

The workgroup in /etc/samba/smb.conf does not match the short

domain name obtained from the server.

Using the name [RAINBIRD] from the server.

You should set "workgroup = RAINBIRD" in /etc/samba/smb.conf.

Using short domain name -- RAINBIRD

Joined 'FILESRV' to realm 'RAINBIRD.NET'
提示“Joined”喲,不是這個提示就是有問題,再仔細檢查。
OK,重啟linux,這時候用一個域用戶登陸linux如果提示用戶或密碼驗證失敗,說明你重啟之前的東西沒配置對。仔細檢查一下哪里不對呢?
 
如果提示如下,那么恭喜你,可以繼續下一個話題了。
3.自動創建用戶目錄.
用到的文件pam_mkhomedir.so
/etc/pam.d/sysconf-auth文件中的sesson部分添加一行
session     required      pam_mkhomedir.so silent skel=/etc/skel umask=0077
silent不打印創建目錄信息
skel 告訴pam_mkhomedir.so拷貝/etc/skel里的文件到新創建的目錄里.
umask 是創建的目錄的權限
創建哪個目錄是在smb.conf里的template homedir定義的
如圖:
 
保存退出,重啟一下X-window。再次用域用戶登陸,是不是成功看到了久違的linux桌面呢?
 
Ok,到此為止,linux加入windows的故事就講完了。而samba服務器通過ad域認證並實現每個用戶500M的共享空間,且當用戶登陸windows域的時候自動掛載已經成型,近期放出,敬請期待。

Rainbird2大俠出品了一篇 “Linux加入windows域之完美方案”,雖然網上流傳了很多加入liunx到windows的文章,比如, “夢想開始的地方”的“使用Samba將linux主機加入AD域”,該帖子即詳細介紹了加入的方法和具體步驟,見原文: http://www.cnblogs.com/lizl/articles/852846.html#891920, 但基於CentOS的圖形化界面,Raidbird2的方法相對簡單,容易,但其實在安裝CentOS5.3的時候,要求創建新賬號的右下,已經存在一個“使用網絡賬號登錄”的按鈕,點擊它即可進行純GUI
界面的操作,比Raidbird2文中所描述的更為漂亮。但毋庸置疑,Raidbird2的該文依然可以用幫助大多數想實現這種方法的朋友。
 
不過,縱觀所有的文章,僅僅都是提到了如何加入linux主機到windows域,卻沒有提及任何相關如何對域賬號,或使用域賬號對linux主機進行管理的文章。 在下這里拋磚引玉,簡單提一下需求和解決辦法。
 
首先,我們的構想環境是30台linux主機,均已安裝要求加入到 windows域。由於地理位置的分布和權限分派的要求,所有計算機管理員均為admin,但非root,即他們均可以使用sudo為宜。30台 linux主機如果都使用本地計算機賬號,那么對於密碼的維護將是一個噩夢的開始,所以,在這里我們使用AD域賬號來進行管理和驗證。
 
  1. 問題:多台linux主機管理員賬號混亂,密碼重設繁瑣 (當然高手可以用shell來實現,這里暫且不提)
  2. 要求:使用域賬號,作為本地管理員可以使用sudo操作
  3. 方法:
    1. 創建一本地組(你也可以使用已存在的組)
    2. group add groupname
    3. 修改sudo列表
    4. visudo
    5. 在root ALL=(ALL) ALL 下添加一行
    6. %groupname ALL=(ALL) ALL
    7. 保存退出
    8. 修改group文件
    9. vim /etc/group
    10. groupname:x:501:DOMAIN\username 或者域組名
    11. 這里DOMAIN必須大寫
    12. 如果已經用該域賬號登錄了,注銷即可。
該方法成功運行在CentOS5.3系統。
由於在下水平問題,估計文章有所疏漏,還請大俠們補正,謝謝。

本文出自 “狼牙” 博客,請務必保留此出處http://wolfteeth.blog.51cto.com/923253/199692


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM