魏春兵 2008-08-27 (此文章是總結(jié)網(wǎng)上大量AD結(jié)合samba的實例加上自己親身試驗所做筆記)
環(huán)境:
Windows 2003 Server R2 Linux Samba's Server
IP地址 192.168.0.254 192.168.0.251
DNS 192.168.0.254 192.168.0.254
hostname Limaoco-dc Server1
域 Limaoco.com
一、 先安裝samba服務(wù)器
這里事前配置好了本地的yum倉庫
Yum –y install samba*
二、再編輯krb5
vim /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 = LIMAOCO.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
EXAMPLE.COM = {
kdc = 192.168.0.254:88
admin_server = 192.168.0.254:749
default_domain = LIMAOCO.COM
}
[domain_realm]
.limaoco.com = LIMAOCO.COM
limaoco.com = LIMAOCO.COM
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
然后調(diào)整系統(tǒng)時間,使系統(tǒng)時間與域控時間不能相統(tǒng)一,時間相差不能超過半小時
Ntpdate 192.168.0.254
調(diào)整完時間利用Kinit工具測試krb5的設(shè)置是否正確
kinit administrator@LIMAOCO.COM
password :
輸入password 后返回success 字符或直接返回命令行表示成功通信,其它的信息表明不能正常通信。
klist 可以查看有效憑證時間
三、然后編輯samba與域用戶相結(jié)合
vim /etc/samba/smb.conf
[global]
workgroup = CJJM
idmap gid = 10000-20000
idmap uid = 10000-20000
password server = 192.168.0.254
security = ads
realm = LIMAOCO.COM
winbind enum users = yes
winbind enum groups = yes
socket ōptions = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/%m.log
winbind separator = +
winbind use default domain = yes
os level = 33
interfaces = 192.168 eth0
bind interfaces ōnly = true
printing = cups
printcap name = /etc/printcap
load printers = yes
可根據(jù)自身網(wǎng)絡(luò)需求加入如下語句:
include = /etc/samba/conf/smb.%G.%G.conf
注意:在共享目錄的時候 切忌權(quán)限問題。
可使用 create mask = 0766
Directory mask = 0777
等的umask 權(quán)限
以上語句是做文件服務(wù)器的時候針對用戶,組設(shè)置的動態(tài)共享
注意:如這里使用
config file = /etc/samba/conf/smb.%G.%U.conf
可能會出現(xiàn)AD用戶無法登陸samba的現(xiàn)象。
(conf目錄可自定義,且smb.%G.%U.conf需要用戶按照個人需求自行建立共享目錄和路徑,%G必須和AD的組名一直,注意大小寫)
以上可根據(jù)自已的實際情況而修改
重啟samba、winbind,然后將機子加入windows域。
/etc/init.d/smb restart
/etc/init.d/winbind restart (failed) ?????
winbind 為什么會起動不了?
答案是應(yīng)先執(zhí)行samba重啟,然后再將機子加入域,然后才重啟winbind
net ads join -U administrator@LIMAOCO.COM
[2008/04/03 08:17:38, 0] libads/kerberos.c:create_local_private_krb5_conf_for_domain(651)
create_local_private_krb5_conf_for_domain: failed to create directory /var/lib/samba/smb_krb5. Error was 權(quán)限不夠
如果加入域的時候出現(xiàn)這樣的錯誤,估計是selinux的問題,將selinux禁止吧!
vim /etc/sysconfig/selinux
change to SELINUX=disabled
再一次執(zhí)行 net ads join -U administrator@LIMAOCO.COM
Using short domain name – LIMAOCO-DC
Failed to set servicePrincipalNames. Please ensure that
the DNS domain of this server matches the AD domain,
Or rejoin with using Domain Admin credentials.
Deleted account for 'SERVER1' in realm 'LIMAOCO.COM'
Failed to join domain: Type or value exists
又失敗??看到原因了吧,是主機名的問題,怎辦?那就改唄!
vim /etc/sysconfig/network
加入 HOSTNAME=server1.limaoco.com
vim /etc/hosts
192.168.0.248 server1.limaoco.com server1
好了,重啟機子吧!
重啟后再執(zhí)行 net ads join -U administrator@LIMAOCO.COM
終于OK了,
administrator@LIMAOCO.COM's password:
Using short domain name – LIMAOCO.COM
Joined 'SERVER1' to realm 'LIMAOCO.COM'


現(xiàn)在重啟samba 、winbind 吧
etc/init.d/smb restart
/etc/init.d/winbind restart
OK,全部都正常restart了!
用以下命令測試一下
wbinfo -t 測試通信成功與否 checking the trust secret via RPC calls succeeded (返回此信息表示成功了)
wbinfo -u 查看域用戶
wbinfo -g 查看組用戶
getent group 查看在/etc/group 里生成映射域組用戶 (看不到?)
getent passwd 查看在/etc/passwd 里生成映射域用戶 (看不到?)
要先配制NSS
Nss為Name Service Switch,控制賬號的驗證。編輯/etc/nsswitch.conf,如下
vim /etc/nsswitch.conf
passwd: files winbind
shadow: files winbind
group: files winbind
再執(zhí)行 getent group /getent passwd 就可以看到了!



通過ntlm驗證程序來測試之前所做的配置是否正確
ntlm_auth --username=administrator
返回
NT_STATUS_OK: Success (0x0)
說明域賬號administrator已經(jīng)通過了AD的認(rèn)證
修改以下內(nèi)容 (通過samba訪問的時候需要注意的)
[home]
path = /home/%D/%U
browsable = no
writable = yes
create mask = 0664
directory mask = 0775
前面不是看到/home/%D/%U 不過這里比較麻煩,AD賬號的個人目錄必須要手工的去創(chuàng)建,而不能說自動的檢測是否已存在,不存在自動創(chuàng)建.不知道哪個高手能夠說說有什么方法解決,我想到用腳本去做.但還在測試中...大家說說你們的高見
#mkdir /home/LIMAOCO-DC
#chmod -R 777 /home/LIMAOCO-DC
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域的故事就講完了。