對(duì)于網(wǎng)絡(luò)管理員來(lái)講,關(guān)于組策略的問(wèn)題可能聽(tīng)到最多的抱怨就是:“我設(shè)置了一個(gè)策略,為什么它不生效?”。對(duì)于一些比較大的網(wǎng)絡(luò)環(huán)境,組策略可以減輕網(wǎng)管人員的管理工作,但其出問(wèn)題的幾率還是比較大的。這一方面是由于我們?cè)谌粘2僮鲿r(shí)不慎引起的,另一方面是由于策略相互影響而造成最終的結(jié)果與設(shè)想不一致。
組策略應(yīng)用要點(diǎn)
這里,筆者給出幾點(diǎn)微軟不推薦的做法:
1.不要?jiǎng)h除兩條默認(rèn)的策略(默認(rèn)域策略和默認(rèn)域控制器策略),很多問(wèn)題的發(fā)生都是由刪除這兩條默認(rèn)策略而引起的。而且要使用組策略管理控制臺(tái)(GPMC)工具備份這兩條默認(rèn)策略,用于將來(lái)還原。如果直接通過(guò)GPMC刪除默認(rèn)策略時(shí),我們會(huì)發(fā)現(xiàn)是行不通的,但是,稍有經(jīng)驗(yàn)的讀者知道如何刪除它們。既然是一個(gè)不推薦的做法,希望大家不要?jiǎng)h除它們。
2.組策略是不能夠鏈接在用戶組上的。有很多初次接觸活動(dòng)目錄的管理員,經(jīng)常設(shè)想將組策略生效于某一用戶組,這是行不通的。組策略不是為用戶組設(shè)定的策略,而是一組策略的集合,只能鏈接在站點(diǎn)、組織單元和域上面。
3.組策略的生效問(wèn)題
(1)生效順序
正常生效順序:本地策略→站點(diǎn)策略→域策略→父OU策略→子OU策略。
我們使用時(shí),在出現(xiàn)登錄對(duì)話框前,會(huì)有“應(yīng)用安全策略”的提示,這也就是本地策略生效的過(guò)程。
發(fā)生沖突時(shí),最新的策略設(shè)置會(huì)覆蓋其他設(shè)置。計(jì)算機(jī)設(shè)置高于用戶設(shè)置(即使用戶設(shè)置是后設(shè)置的)。父容器組策略設(shè)置與子容器設(shè)置發(fā)生沖突,子容器中組策略的設(shè)置將最終生效。同一容器的多個(gè)策略按照優(yōu)先權(quán)順序進(jìn)行生效。所以,當(dāng)在一個(gè)容器上面鏈了多個(gè)GPO時(shí),不妨仔細(xì)看看它們的順序,很有可能問(wèn)題是順序不當(dāng)引起的。
(2)生效時(shí)間
默認(rèn)情況下,非域控制器的計(jì)算機(jī)每90分鐘刷新一次策略,其中含有隨機(jī)的30分鐘時(shí)間偏移量,時(shí)間偏移量保證了多個(gè)計(jì)算機(jī)不會(huì)同時(shí)連接到同一個(gè)域控制器上面。域控制器每5分鐘刷新一次,保證了緊急更新的組策略設(shè)置(安全性設(shè)置)能夠得到及時(shí)執(zhí)行,可以在 “域控制器組策略重新刷新時(shí)間間隔”里面更改(如圖1)。
498)this.style.width=498;">
圖1 “域控制器組策略重新刷新時(shí)間間隔”進(jìn)行更改
在Windows 2000里面可以使用secedit/refreshpolicy machine_policy或secedit /refreshpolicy user_policy命令強(qiáng)制刷新,在Windows XP或Windows 2003使用gpresult /force強(qiáng)制刷新。如果新做的設(shè)置沒(méi)有能夠生效,不妨考慮一下是否為刷新時(shí)間間隔問(wèn)題。
組策略常規(guī)排錯(cuò)法
如果您平時(shí)是按照以上建議做的,結(jié)果組策略的某些設(shè)置還是沒(méi)有按照預(yù)期生效,我們就需要做排錯(cuò)處理了。
1.首先,確保客戶端拿到了相關(guān)的策略。比如,希望域內(nèi)所有的計(jì)算機(jī)不要顯示上次登錄的用戶名以確保安全,可是在所有的用戶端都沒(méi)有生效,說(shuō)明這條策略很有可能客戶端就沒(méi)有拿到。從Gpresult或者是組策略結(jié)果集,可以知道客戶端拿到了哪些策略。前者是命令行模式,后者是圖形界面,功能都是相同的。下面介紹組策略結(jié)果集的使用。
(1)打開(kāi)gpmc.msc,單擊組策略結(jié)果收集向?qū)Вx擇是本機(jī)還是遠(yuǎn)程計(jì)算機(jī),選擇為哪一個(gè) 用戶顯示最終結(jié)果,我們就可以查看結(jié)果了(如圖2)。
498)this.style.width=498;">
圖2 查看結(jié)果
在“組策略對(duì)象→應(yīng)用的策略”中,我們能夠看到出問(wèn)題的客戶端應(yīng)用了哪些GPO,沒(méi)有應(yīng)用哪些GPO,如果某一條組策略沒(méi)有被應(yīng)用,那么設(shè)置必定沒(méi)有生效,因?yàn)橛?jì)算機(jī)根本就沒(méi)有拿到這個(gè)策略。
正如案例中所述的那個(gè)問(wèn)題(希望域內(nèi)所有的計(jì)算機(jī)不要顯示上次登錄的用戶名以確保安全,可惜在所有的用戶端都沒(méi)有生效),后來(lái)在隨機(jī)的客戶端運(yùn)行 gpresult,結(jié)果發(fā)現(xiàn),為計(jì)算機(jī)設(shè)置的不顯示上次登錄的用戶名策略(當(dāng)時(shí)命名為Do not Display last logon name)根本就沒(méi)有應(yīng)用到客戶端,自然策略不會(huì)生效。
2.如果網(wǎng)絡(luò)里面有多臺(tái)域控制器,要確保多臺(tái)域控制器的策略保持一致,檢查方法是運(yùn)行 gpotool(需要安裝Windows Resource Kit工具包)。
Validating DCs... Available DCs: mic-technet.dc.mic Searching for policies... Found 4 policies Policy {31B2F340-016D-11D2-945F-00C04FB984F9} Friendly name: Default Domain Policy Policy OK ========================================================== Policy {6AC1786C-016F-11D2-945F-00C04FB984F9} Friendly name: Default Domain Controllers Policy Policy OK ========================================================== Policy {90BD780C-D2E8-44CB-97B8-80B343852457} Friendly name: Do not display logon name Policy OK ========================================================== Policy {CC2C8E4F-FA55-4824-AC75-0122494DCC31} Friendly name: user Policy OK ========================================================== Policies OK |
這是一次運(yùn)行g(shù)potool的結(jié)果,當(dāng)然,筆者這里只是一個(gè)虛擬環(huán)境,只有一臺(tái)域控制器,讀者可以拿出問(wèn)題的日志與正常日志進(jìn)行比對(duì),便會(huì)發(fā)現(xiàn)問(wèn)題所在。設(shè)想,如果有兩臺(tái)域控制器它們之間的復(fù)制又出了問(wèn)題,那么意味著每個(gè)域控制器的組策略不統(tǒng)一了,自然客戶端在應(yīng)用時(shí)會(huì)發(fā)生問(wèn)題。
3.檢查組策略對(duì)象是否在AD中和Sysvol中,而且GUID是否與正確的GPO相關(guān)聯(lián)。
(1)查看組策略的GUID。
(2)用Search.vbs檢查L(zhǎng)DAP協(xié)議正確性,GPO和GUID是否為真正意義的對(duì)應(yīng)。
Search.vbs是Windows 2003安裝光盤(pán)SupportTools Support.cab下的一個(gè)腳本工具,可以將GPO名稱解析為GUID。
使用方法:
cscript search.vbs "LDAP://dc=mydomain,dc=com"
/C:"&(objectClass= groupPolicyContainer)(displayName=Default Domain
Policy)" /P:name /S:SubTree
將mydomain和com換成您自己的域名。
3.以上兩步結(jié)束后,如果仍然沒(méi)有查到問(wèn)題所在,可以激活userenv.log:
打開(kāi)注冊(cè)表編輯器,定位至HKEY_LOCAL_MACHINESoftware MicrosoftWindows NT CurrentVersionWinlogon。
新建dword值:UserEnv DebugLevel,數(shù)據(jù)為10002 (Windows 2000/XP),Windows 2003改為30002。重新啟動(dòng)后在%SystemRoot%Debug UserMode下可找到Userenv.log 文件。該文件對(duì)我們解決用戶配置文件和組策略處理方面的問(wèn)題很有幫助。
例如,有時(shí)會(huì)在該文件中發(fā)現(xiàn):
USERENV(178.63c) 22:27:23:188 EvalList: Object cannot be accessed
這說(shuō)明登錄的用戶對(duì)要應(yīng)用給他的GPO是沒(méi)有權(quán)限的,這時(shí)就要注意組策略的權(quán)限問(wèn)題。
4.如果是和安全設(shè)定有關(guān)的策略沒(méi)有生效,可以開(kāi)啟Winlogon:
打開(kāi)注冊(cè)表編輯器,定位至HKEY_LOCAL_MACHINESoftware MicrosoftWindows NT CurrentVersionWinlogon GPExtensions{827D319E-6EAC-11D2-A4EA-00C04F79F83A},新建一個(gè)DWORD值,名稱為 Extension DebugLevel,數(shù)值設(shè)為2,刷新策略,這樣在以下位置Windows SecurityLogs生成winlogon.log,所有安全設(shè)定會(huì)被詳細(xì)記錄在里面。
舉例來(lái)說(shuō),啟動(dòng)基于Windows 2000的計(jì)算機(jī)時(shí),事件查看器大約每5分鐘記錄一次事件ID 1202和1000。
然后當(dāng)查看 Winlogon.log 文件時(shí),會(huì)發(fā)現(xiàn)下面的錯(cuò)誤信息:
Error 1332: No mapping between account names and security IDs was done.Cannot find Power Users.
很明顯,這是有人給Power Users組做了安全權(quán)利指派,但是當(dāng)計(jì)算機(jī)被提升成為域控制器后,Power Users組就會(huì)被刪除掉,然而組策略里卻沒(méi)有將其權(quán)限相應(yīng)的刪除,計(jì)算機(jī)就會(huì)不停地找(準(zhǔn)確的說(shuō)是對(duì)應(yīng))Power Users組,因此就會(huì)報(bào)錯(cuò)。
當(dāng)我們?cè)诓榭碪serenv.log和Winlogon.log時(shí),可以關(guān)注以下信息:fail,error,cannot等這些失敗、錯(cuò)誤信息。