liunx 加入域控_让Linux使用Windows域控制器做用户认证
最近為了做一個客戶的問題需要搭一套Windows AD給Linux通過winbind做認證使得Windows
AD用戶可以登陸Linux機器的環境。因為頭一次做這樣的配置,所以頗費了一番周折。下面就記錄一下以留作參考。
Windows AD部分不贅述,大家可以參考很多的資料,這里重點放在Linux相關的配置上。下面要使用到的Windows域為
hpc.simon.platform.com。域控制器為winhpchead.hpc.simon.platform.com。你需要有
Windows DC的管理員賬號密碼以便在后續操作中使用。
準備部分
Linux上面你需要Samba這個軟件包。里面提供了Linux中跟Windows交互的基礎平臺。(L與W之間文件共享也是使用這個軟件包提供的功能
[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
除了上面給出的包以外,還有一個samba-swat可以讓你用網頁來做本地的samba配置,超牛逼。具體方法我這兒就不講了,您可以參考這個地址里面的內容。
除了samba包以外,要讓linux通過Windows
2k8做認證你還需要裝Kerberos相關的包。別問我為什么,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
小結一下,你需要準備的東西有:
已經配置好DC的Windows 2k8一頭
Windows域控制器管理員帳號
上面提到的Samba跟Kerberos軟件包若干
配置Samba
Samba的配置文件保存在/etc/samba/smb.conf。里面應該分成下面這幾節:
[global]
[homes]
[printers]
其中的homes跟printers你可以不用去管它們。我們只要關心global就好了。
在global里面你要保證有如下的內容,其中每行#號后面是注釋,你可以不用寫到你的實際配置文件里面。如果有些關鍵字在默認的配置文件里面沒有,那就自己加進去。
workgroup = hpc #Windows域的最開頭部分。比如你的域是foo.bar.com,就寫foo。小寫
server string = Samba Server Version %v #不知道干嘛的
netbios name = hpc30 #不知道干嘛的
security = domain #密碼認證方式,寫domain是標注為域認證
password server = winhpchead.hpc.simon.platform.com #密碼服務器的名字,通常就是你的DC
preferred master = no #不知道干嘛的
domain master = no #不知道干嘛的
domain logons = no #不知道干嘛的
idmap uid = 20000-30000 #Linux本地映射過來的用戶ID范圍。如果你AD里面用戶超多,那么這兩個值之間的差距弄大點兒
idmap gid = 20000-30000 #同上,相對應的用戶組ID范圍。
template shell = /bin/bash #用戶登錄過來的默認shell
template homedir = /home/%D/%U #用戶登錄以后的默認家目錄。%D表示域名,%U表示用戶名
winbind separator = / #域名跟用戶名之間的分隔符
winbind use default domain = Yes #不知道干嘛的
配置Kerberos
Kerberos的默認配置文件在/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 = HPC.SIMON.PLATFORM.COM #這個得大寫,就是你的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
這個配置文件是控制Linux默認的認證方式順序的。文件保存在/etc/nsswitch.conf。
打開以后找到下面這幾行,添加紅色字體部分:
passwd: files winbind
shadow: files winbind
group: files winbind
配置PAM
以上的內容都設置好之后,我們還需要讓PAM模塊也做好相應的配置這樣才能順利地通過用戶認證。其中我們主要使用到的是
pam_winbind.so和pam_krb5.so這兩個模塊。你需要修改的是/etc/pam.d/system-auth這個文件。大家可以參考
我下面的文件,其中紅色部分是添加進去的內容。
[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的時候自動創建家目錄。
啟動服務,加入Windows域
做好以上的一系列操作以后,我們的準備工作應該已經做得差不多了。這時候你可以啟動所需的兩個服務smb和winbind。
# service smb start
# service winbind start
為了讓這兩個服務開機自啟動,你可以執行下面的兩個命令
# chkconfig smb on
# chkconfig winbind on
然后我們執行下面的命令將這臺機器加入Windows域。按照提示輸入域控制器的密碼。
#?net rpc join -S hpc.simon.platform.com -U administrator
執行上面的命令之后,我們可以執行下面的命令來檢查是否成功。第一條顯示域當中的用戶信息,第二條顯示域當中的用戶組信息。
# wbinfo -u
# wbinfo -g
網上很多參考資料說這時候你可以用getent passwd和getent
group來顯示所有的用戶信息,包括Linux本地和Windows域內的用戶和用戶組,可是我這邊無法顯示,不知道為什么。但是命令后面加上用戶名的話沒有問題。
以上一切都做好以后,試試用你的Windows帳號登錄看看吧。
================================================================
最后想說一下,做這個的時候參考了很多資料,大多都是抄來抄去的,最后還是這篇博客的內容比較靠譜:http://cnctblog.com/?p=590?,在此感謝一下。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的liunx 加入域控_让Linux使用Windows域控制器做用户认证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dqs server sql_SQL-S
- 下一篇: 透明大页相关内核参数_Linux7.4