liunx 加入域控_让Linux使用Windows域控制器做用户认证
最近為了做一個(gè)客戶的問(wèn)題需要搭一套Windows AD給Linux通過(guò)winbind做認(rèn)證使得Windows
AD用戶可以登陸Linux機(jī)器的環(huán)境。因?yàn)轭^一次做這樣的配置,所以頗費(fèi)了一番周折。下面就記錄一下以留作參考。
Windows AD部分不贅述,大家可以參考很多的資料,這里重點(diǎn)放在Linux相關(guān)的配置上。下面要使用到的Windows域?yàn)?/p>
hpc.simon.platform.com。域控制器為winhpchead.hpc.simon.platform.com。你需要有
Windows DC的管理員賬號(hào)密碼以便在后續(xù)操作中使用。
準(zhǔn)備部分
Linux上面你需要Samba這個(gè)軟件包。里面提供了Linux中跟Windows交互的基礎(chǔ)平臺(tái)。(L與W之間文件共享也是使用這個(gè)軟件包提供的功能
[root@hpc30 ~]# rpm -qa | grep samba
samba-3.0.33-3.29.el5_5.1
samba-client-3.0.33-3.29.el5_5.1
samba-common-3.0.33-3.29.el5_5.1
system-config-samba-1.2.41-5.el5
除了上面給出的包以外,還有一個(gè)samba-swat可以讓你用網(wǎng)頁(yè)來(lái)做本地的samba配置,超牛逼。具體方法我這兒就不講了,您可以參考這個(gè)地址里面的內(nèi)容。
除了samba包以外,要讓linux通過(guò)Windows
2k8做認(rèn)證你還需要裝Kerberos相關(guān)的包。別問(wèn)我為什么,Windows就是這么矯情我有什么辦法?
[root@hpc30 ~]# rpm -qa | grep krb
krb5-libs-1.6.1-55.el5
krb5-libs-1.6.1-55.el5
krb5-workstation-1.6.1-55.el5
pam_krb5-2.2.14-18.el5
krb5-devel-1.6.1-55.el5
krb5-devel-1.6.1-55.el5
pam_krb5-2.2.14-18.el5
krb5-auth-dialog-0.7-1
小結(jié)一下,你需要準(zhǔn)備的東西有:
已經(jīng)配置好DC的Windows 2k8一頭
Windows域控制器管理員帳號(hào)
上面提到的Samba跟Kerberos軟件包若干
配置Samba
Samba的配置文件保存在/etc/samba/smb.conf。里面應(yīng)該分成下面這幾節(jié):
[global]
[homes]
[printers]
其中的homes跟printers你可以不用去管它們。我們只要關(guān)心global就好了。
在global里面你要保證有如下的內(nèi)容,其中每行#號(hào)后面是注釋,你可以不用寫到你的實(shí)際配置文件里面。如果有些關(guān)鍵字在默認(rèn)的配置文件里面沒有,那就自己加進(jìn)去。
workgroup = hpc #Windows域的最開頭部分。比如你的域是foo.bar.com,就寫foo。小寫
server string = Samba Server Version %v #不知道干嘛的
netbios name = hpc30 #不知道干嘛的
security = domain #密碼認(rèn)證方式,寫domain是標(biāo)注為域認(rèn)證
password server = winhpchead.hpc.simon.platform.com #密碼服務(wù)器的名字,通常就是你的DC
preferred master = no #不知道干嘛的
domain master = no #不知道干嘛的
domain logons = no #不知道干嘛的
idmap uid = 20000-30000 #Linux本地映射過(guò)來(lái)的用戶ID范圍。如果你AD里面用戶超多,那么這兩個(gè)值之間的差距弄大點(diǎn)兒
idmap gid = 20000-30000 #同上,相對(duì)應(yīng)的用戶組ID范圍。
template shell = /bin/bash #用戶登錄過(guò)來(lái)的默認(rèn)shell
template homedir = /home/%D/%U #用戶登錄以后的默認(rèn)家目錄。%D表示域名,%U表示用戶名
winbind separator = / #域名跟用戶名之間的分隔符
winbind use default domain = Yes #不知道干嘛的
配置Kerberos
Kerberos的默認(rèn)配置文件在/etc/krb5.conf。內(nèi)容不多,我把我的貼在下面,改動(dòng)過(guò)的部分用紅色標(biāo)注出來(lái)。后面的#號(hào)內(nèi)容是我的注釋,你別寫在你的配置文件里。
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = HPC.SIMON.PLATFORM.COM #這個(gè)得大寫,就是你的Windows域全名
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
[realms]
HPC.SIMON.PLATFORM.COM = { #Windows域的配置
kdc = winhpchead.hpc.simon.platform.com:88
admin_server = winhpchead.hpc.simon.platform.com:749
default_domain = HPC.SIMON.PLATFORM.COM
}
[domain_realm]
.hpc.simon.platform.com = HPC.SIMON.PLATFORM.COM
hpc.simon.platform.com = HPC.SIMON.PLATFORM.COM
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
配置nsswitch
這個(gè)配置文件是控制Linux默認(rèn)的認(rèn)證方式順序的。文件保存在/etc/nsswitch.conf。
打開以后找到下面這幾行,添加紅色字體部分:
passwd: files winbind
shadow: files winbind
group: files winbind
配置PAM
以上的內(nèi)容都設(shè)置好之后,我們還需要讓PAM模塊也做好相應(yīng)的配置這樣才能順利地通過(guò)用戶認(rèn)證。其中我們主要使用到的是
pam_winbind.so和pam_krb5.so這兩個(gè)模塊。你需要修改的是/etc/pam.d/system-auth這個(gè)文件。大家可以參考
我下面的文件,其中紅色部分是添加進(jìn)去的內(nèi)容。
[root@hpc30 ~]# cat /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_krb5.so use_first_pass
auth sufficient pam_winbind.so cached_login use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
account [default=bad success=ok user_unknown=ignore] pam_winbind.so cached_login
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_krb5.so use_authtok
password sufficient pam_winbind.so cached_login use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_krb5.so
session required pam_mkhomedir.so silent skel=/etc/skel umask=0077
上面的最后一行是為了Windows的用戶在第一次登陸Linux的時(shí)候自動(dòng)創(chuàng)建家目錄。
啟動(dòng)服務(wù),加入Windows域
做好以上的一系列操作以后,我們的準(zhǔn)備工作應(yīng)該已經(jīng)做得差不多了。這時(shí)候你可以啟動(dòng)所需的兩個(gè)服務(wù)smb和winbind。
# service smb start
# service winbind start
為了讓這兩個(gè)服務(wù)開機(jī)自啟動(dòng),你可以執(zhí)行下面的兩個(gè)命令
# chkconfig smb on
# chkconfig winbind on
然后我們執(zhí)行下面的命令將這臺(tái)機(jī)器加入Windows域。按照提示輸入域控制器的密碼。
#?net rpc join -S hpc.simon.platform.com -U administrator
執(zhí)行上面的命令之后,我們可以執(zhí)行下面的命令來(lái)檢查是否成功。第一條顯示域當(dāng)中的用戶信息,第二條顯示域當(dāng)中的用戶組信息。
# wbinfo -u
# wbinfo -g
網(wǎng)上很多參考資料說(shuō)這時(shí)候你可以用getent passwd和getent
group來(lái)顯示所有的用戶信息,包括Linux本地和Windows域內(nèi)的用戶和用戶組,可是我這邊無(wú)法顯示,不知道為什么。但是命令后面加上用戶名的話沒有問(wèn)題。
以上一切都做好以后,試試用你的Windows帳號(hào)登錄看看吧。
================================================================
最后想說(shuō)一下,做這個(gè)的時(shí)候參考了很多資料,大多都是抄來(lái)抄去的,最后還是這篇博客的內(nèi)容比較靠譜:http://cnctblog.com/?p=590?,在此感謝一下。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的liunx 加入域控_让Linux使用Windows域控制器做用户认证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dqs server sql_SQL-S
- 下一篇: 透明大页相关内核参数_Linux7.4