筆者這幾天在研究samba服務(wù)通過ad域進(jìn)行用戶驗證。在查資料的過程中發(fā)現(xiàn)。關(guān)于linux加入windows域,網(wǎng)上資料不少,但是按著網(wǎng)上的說法做大多不成功,甚至很多人估計都不知道自己在說什么,最后一個net ads join就認(rèn)為已經(jīng)成功加入到域了,可是然后呢?作為域內(nèi)的一個成員,普通的機(jī)器要可以提供域內(nèi)的用戶登陸;作為samba服務(wù)要把共享加入到目錄中,這樣才起到加入域的作用嘛。筆者經(jīng)過反復(fù)實驗,終于把linux加入到windows域一些細(xì)節(jié)記錄下來,不敢獨(dú)享,特拿出。
筆者用的linux為centos5.3。ad域為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服務(wù)器軟件需求
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在安裝的時候沒有取消默認(rèn)選中的”Base”,則krb5的包是默認(rèn)全部安裝
如果沒有選擇安裝samba可以這樣安裝
[root@filesrv CentOS]# rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
[root@filesrv CentOS]# rpm -ivh --aid samba*.rpm
2.配置kerberos和samba
因為筆者用的系統(tǒng)為centos所以為保證一次成功的準(zhǔn)確率,這里就使用字符界面下的圖形工具來配置了。
運(yùn)行setup工具
認(rèn)證配置
選擇:
“use winbind”
“use kerberos”
“use winbind authertication”
刪除admin server 其余的改成真實情況
Realm為域名,KDC為域服務(wù)器的ip
配置winbind
Domain為你的域的,左面第一個”.”前面的東東
選擇”join domain”,提示是否先保存配置信息,肯定是yes了。
嘿嘿,看到這個畫面是不是想到了xp機(jī)器加入到域的情景?沒錯就是那個!輸入ad域的管理員密碼吧J
不出意外的話,你就到達(dá)了最后一個界面,肯定ok,然后退出了。
一般來說,只要兩臺機(jī)器的時間上下不差五分鐘,且項都配置正確的話,你就會看到下面這個圖片。看到這個圖片說明你的linux成功加入到ad域啦!
OK,用圖形的好處就是方便快捷,但是這樣只適合rh系統(tǒng)。別的linux系統(tǒng)咋辦呢?別急。這個工具其實就是編輯以下三個配置文件:
/etc/nsswitch.conf
passwd: files winbind(就是先讀files 然后再通過winbind認(rèn)證)
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(默認(rèn)的域名)
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(域服務(wù)器)
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//域服務(wù)器
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修改的不徹底,還不能滿足我們的要求,怎么辦呢?手動把藍(lán)色部分加上,并把那兩個false改成ture,然后設(shè)置samba的開機(jī)自動啟動chkconfig smb on,service smb on啟動服務(wù),然后就是手工把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”喲,不是這個提示就是有問題,再仔細(xì)檢查。
OK,重啟linux,這時候用一個域用戶登陸linux如果提示用戶或密碼驗證失敗,說明你重啟之前的東西沒配置對。仔細(xì)檢查一下哪里不對呢?
如果提示如下,那么恭喜你,可以繼續(xù)下一個話題了。
3.自動創(chuàng)建用戶目錄.
用到的文件pam_mkhomedir.so
在/etc/pam.d/sysconf-auth文件中的sesson部分添加一行
session required pam_mkhomedir.so silent skel=/etc/skel umask=0077
silent不打印創(chuàng)建目錄信息
skel 告訴pam_mkhomedir.so拷貝/etc/skel里的文件到新創(chuàng)建的目錄里.
umask 是創(chuàng)建的目錄的權(quán)限
創(chuàng)建哪個目錄是在smb.conf里的template homedir定義的
如圖:
保存退出,重啟一下X-window。再次用域用戶登陸,是不是成功看到了久違的linux桌面呢?
Ok,到此為止,linux加入windows的故事就講完了。而samba服務(wù)器通過ad域認(rèn)證并實現(xiàn)每個用戶500M的共享空間,且當(dāng)用戶登陸windows域的時候自動掛載已經(jīng)成型,近期放出,敬請期待。