映射:AD、GPO與NTFS權(quán)限排錯(cuò))
簡(jiǎn)介面向企業(yè)IT運(yùn)維人員和域環(huán)境初學(xué)者的實(shí)戰(zhàn)型配置文檔聚焦Windows Server 2016域文件服務(wù)器共享盤(pán)的搭建與管理幫助讀者理解集中存儲(chǔ)、權(quán)限分發(fā)和登錄自動(dòng)映射的完整實(shí)現(xiàn)思路。壓縮包內(nèi)共1個(gè)doc文件大小約468KB以圖文結(jié)合方式整理AD組織單位、用戶(hù)與組規(guī)劃、文件服務(wù)器入域、共享文件夾NTFS權(quán)限、組策略驅(qū)動(dòng)器映射及登錄腳本等關(guān)鍵內(nèi)容可作為域共享盤(pán)部署的參考手冊(cè)和配置對(duì)照材料。目前已有375人學(xué)習(xí)適合需要掌握域內(nèi)文件共享權(quán)限控制、GPO應(yīng)用與批處理腳本配合的中初級(jí)管理員查閱也便于在實(shí)驗(yàn)或生產(chǎn)環(huán)境中梳理配置邏輯、排查權(quán)限與映射問(wèn)題。1. 從一次「登錄了卻看不到盤(pán)」說(shuō)起Server 2016 域共享盤(pán)的三道前置門(mén)檻在 Windows Server 2016 上做域文件服務(wù)器共享盤(pán)映射真正容易出問(wèn)題的地方往往不是鼠標(biāo)點(diǎn)擊的那幾步而是沒(méi)人把前置條件列清楚DNS 指錯(cuò)、全員組沒(méi)建、共享權(quán)限和 NTFS 權(quán)限沖突任何一條沒(méi)對(duì)齊用戶(hù)登錄后打開(kāi)「此電腦」連個(gè) Z 盤(pán)都沒(méi)有。我遇到過(guò)最典型的一次文件服務(wù)器換了 IPAD 里那個(gè)共享文件夾對(duì)象還指著老地址三十多號(hào)人連著三天靠 U 盤(pán)傳文檔最后排查下來(lái)只是一行路徑?jīng)]改。這套環(huán)境涉及 AD 組織單位、用戶(hù)與組、NTFS 權(quán)限、bat 登錄腳本、GPO 驅(qū)動(dòng)器映射五個(gè)環(huán)節(jié)環(huán)環(huán)相扣適合手上有一臺(tái) Server 2016 文件服務(wù)器、要給幾十到幾百號(hào)人做統(tǒng)一共享盤(pán)映射的運(yùn)維按順序走一遍。2. 域里先打地基OU、用戶(hù)和「全員組」怎么建才不返工很多人一上來(lái)就在文件服務(wù)器上建共享、寫(xiě) bat回頭發(fā)現(xiàn) GPO 沒(méi)地方鏈接只能把 OU 推倒重來(lái)。AD 這邊的結(jié)構(gòu)一旦定錯(cuò)后面所有策略的作用范圍都得跟著改所以這一步寧可多花半小時(shí)想清楚。我的習(xí)慣是先把「誰(shuí)需要看到哪些盤(pán)」畫(huà)成一張表再倒推 OU 和組而不是先按部門(mén)建一堆 OU 再說(shuō)。2.1 OU 的分層按部門(mén)切還是按權(quán)限切OU 在 AD 里不只是個(gè)文件夾它是 GPO 鏈接的最小作用單位。你把 GPO 鏈在哪個(gè) OU 上只有這個(gè) OU 下的用戶(hù)和計(jì)算機(jī)會(huì)收到策略。所以 OU 的切法要跟著「策略差異」走而不是跟著組織架構(gòu)圖走。我一般這么分頂層建一個(gè)「員工」OU下面按部門(mén)建子 OU另外單獨(dú)拉一個(gè)「特殊權(quán)限」OU 出來(lái)放需要額外映射只讀盤(pán)或者項(xiàng)目盤(pán)的賬號(hào)。理由是部門(mén) OU 用來(lái)承載日常策略桌面、打印機(jī)、共享盤(pán)特殊權(quán)限 OU 用來(lái)承載差異化策略?xún)烧呋ゲ桓蓴_。如果某個(gè)部門(mén)所有人權(quán)限完全一致也可以直接合并不要為了好看硬拆。OU 層級(jí)名稱(chēng)示例承載的 GPO說(shuō)明一級(jí)員工基礎(chǔ)桌面策略所有在職賬號(hào)的默認(rèn)歸屬二級(jí)員工/研發(fā)部研發(fā)共享盤(pán)映射部門(mén)級(jí)差異化策略二級(jí)員工/行政部行政共享盤(pán)映射部門(mén)級(jí)差異化策略一級(jí)特殊權(quán)限項(xiàng)目盤(pán)只讀映射跨部門(mén)臨時(shí)授權(quán)賬號(hào)建 OU 用 ADUC 圖形界面就行右鍵域根節(jié)點(diǎn) → 新建 → 組織單位。也可以在域控上跑一條命令批量建省得一層層點(diǎn)# 在域控上以管理員身份運(yùn)行批量創(chuàng)建 OU 結(jié)構(gòu) $base DCexample,DClocal $ous (員工, 員工\研發(fā)部, 員工\行政部, 特殊權(quán)限) foreach ($ou in $ous) { $dn OU ($ou -replace \\, ,OU) , $base # -Protected 防止誤刪ErrorAction 忽略已存在的情況 New-ADOrganizationalUnit -Name ($ou -split \\)[-1] -Path (OU (($ou -split \\)[0..(($ou -split \\).Length - 2)] -join ,OU) , $base) -ProtectedFromAccidentalDeletion $true -ErrorAction SilentlyContinue }這段腳本的核心是把「員工\研發(fā)部」這種路徑寫(xiě)法轉(zhuǎn)成 LDAP 的OU研發(fā)部,OU員工,DCexample,DClocal格式-ProtectedFromAccidentalDeletion是給自己留的應(yīng)急保護(hù)誤刪 OU 會(huì)連帶刪掉下面所有賬號(hào)這個(gè)開(kāi)關(guān)能擋住手滑。提示OU 名字里盡量不要帶空格和特殊符號(hào)后面寫(xiě) GPO 的 WMI 篩選和腳本路徑時(shí)會(huì)省很多轉(zhuǎn)義的麻煩。2.2 三層組模型全局組、域本地組和那個(gè)「全員組」組怎么建直接決定后面共享盤(pán)權(quán)限好不好維護(hù)。我踩過(guò)的坑是一開(kāi)始圖省事把用戶(hù)一個(gè)個(gè)往共享文件夾的 ACL 里加人一多誰(shuí)有權(quán)限全靠翻屬性頁(yè)最后連自己都不敢刪人。后來(lái)統(tǒng)一改成「用戶(hù) → 全局組 → 域本地組 → 資源 ACL」這套結(jié)構(gòu)再?zèng)]亂過(guò)。具體分工是這樣的全局組按人劃比如「研發(fā)部全員」「行政部全員」成員就是賬號(hào)域本地組按資源劃比如「共享盤(pán)-讀寫(xiě)」「共享盤(pán)-只讀」成員是全局組共享文件夾的 NTFS 權(quán)限只授給域本地組。人走了從全局組里摘掉權(quán)限自動(dòng)失效不用去碰文件夾。另外必須建一個(gè)「全員組」比如叫GG-All-Staff把所有在職賬號(hào)都塞進(jìn)去。這個(gè)組有兩個(gè)用處一是給共享盤(pán)做統(tǒng)一映射時(shí)的作用對(duì)象二是 GPO 安全篩選里用它替代 Authenticated Users避免把策略誤發(fā)給服務(wù)賬號(hào)和測(cè)試機(jī)。建組命令# 建全局組按人、域本地組按資源、以及全員組 $ouStaff OU員工,DCexample,DClocal $ouSpecial OU特殊權(quán)限,DCexample,DClocal # 全局組成員是用戶(hù)賬號(hào) New-ADGroup -Name GG-研發(fā)部 -GroupScope Global -GroupCategory Security -Path $ouStaff New-ADGroup -Name GG-行政部 -GroupScope Global -GroupCategory Security -Path $ouStaff New-ADGroup -Name GG-All-Staff -GroupScope Global -GroupCategory Security -Path $ouStaff # 域本地組成員是上面的全局組最終授給共享目錄 New-ADGroup -Name DL-共享盤(pán)-讀寫(xiě) -GroupScope DomainLocal -GroupCategory Security -Path $ouSpecial New-ADGroup -Name DL-共享盤(pán)-只讀 -GroupScope DomainLocal -GroupCategory Security -Path $ouSpecial # 把部門(mén)全局組掛進(jìn)資源組 Add-ADGroupMember -Identity DL-共享盤(pán)-讀寫(xiě) -Members GG-研發(fā)部 Add-ADGroupMember -Identity DL-共享盤(pán)-只讀 -Members GG-行政部-GroupScope Global和DomainLocal是這套模型的關(guān)鍵全局組成員可以是本域或其他信任域的用戶(hù)域本地組可以授給本域任何資源兩者組合起來(lái)在多域環(huán)境下也不會(huì)出問(wèn)題。如果公司只有一個(gè)域用全局組直接授權(quán)也能跑但一旦以后要擴(kuò)域或者做資源遷移返工量會(huì)很難看。2.3 用 PowerShell 批量落用戶(hù)和組成員手工建十幾個(gè)賬號(hào)還行上百個(gè)就必須走批量。我用 CSV 導(dǎo)入字段就四個(gè)姓名、登錄名、部門(mén)、是否加入全員組。CSV 放在域控的C:\temp\users.csv編碼存成 UTF-8。# 從 CSV 批量建用戶(hù)并按部門(mén)加入對(duì)應(yīng)全局組 $users Import-Csv -Path C:\temp\users.csv -Encoding UTF8 $domain example.local foreach ($u in $users) { $ou OU$($u.Dept),OU員工,DCexample,DClocal $upn $($u.Login)$domain # -Enabled $true 直接啟用賬號(hào)-ChangePasswordAtLogon 強(qiáng)制首次改密 New-ADUser -Name $u.Name -SamAccountName $u.Login -UserPrincipalName $upn -Path $ou -AccountPassword (ConvertTo-SecureString Init2024 -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true # 加入部門(mén)全局組 Add-ADGroupMember -Identity GG-$($u.Dept) -Members $u.Login # 全員組統(tǒng)一加入 Add-ADGroupMember -Identity GG-All-Staff -Members $u.Login }-ChangePasswordAtLogon $true這個(gè)參數(shù)必須帶初始密碼寫(xiě)死在腳本里只有強(qiáng)制首次改密才能避免所有人共用一個(gè)密碼。-Path用的是部門(mén)字段拼出來(lái)的 OU 路徑所以 CSV 里部門(mén)名必須和 OU 名一字不差差一個(gè)空格就會(huì)報(bào)「找不到對(duì)象」。建完抽兩個(gè)賬號(hào)驗(yàn)證一下Get-ADUser -Identity 用戶(hù)名 -Properties MemberOf看組列表再用Get-ADGroupMember -Identity GG-All-Staff | Measure-Object數(shù)一下人數(shù)對(duì)不對(duì)。這一步做完AD 側(cè)的地基就算打好了后面所有配置都建立在這套組結(jié)構(gòu)上。3. 文件服務(wù)器入域與共享目錄NTFS 權(quán)限和共享權(quán)限到底誰(shuí)生效文件服務(wù)器這邊最容易出的錯(cuò)是把共享權(quán)限和 NTFS 權(quán)限當(dāng)成一回事配完發(fā)現(xiàn)用戶(hù)能進(jìn)目錄但打不開(kāi)文件或者反過(guò)來(lái)只能看到文件夾名字。這兩層權(quán)限是取交集的最終有效權(quán)限 共享權(quán)限 ∩ NTFS 權(quán)限任何一邊卡住另一邊給多大都沒(méi)用。我一般的做法是共享權(quán)限放寬到「Everyone 完全控制」所有限制全壓在 NTFS 上只維護(hù)一處排查時(shí)也只有一個(gè)地方要看。3.1 入域前先釘死的四個(gè)參數(shù)Server 2016 加入域之前有四樣?xùn)|西必須先確認(rèn)錯(cuò)一個(gè)就加不進(jìn)去或者加進(jìn)去了也連不上共享。這四條我每次部署都過(guò)一遍已經(jīng)形成肌肉記憶檢查項(xiàng)正確取值查看命令I(lǐng)P 地址靜態(tài)不要用 DHCP 保留ipconfig /all首選 DNS指向域控 IP不能是公網(wǎng) DNSnslookup example.local時(shí)間偏差與域控相差 5 分鐘內(nèi)w32tm /query /status計(jì)算機(jī)名規(guī)范命名如 FS01不超過(guò) 15 字符hostnameDNS 是最容易翻車(chē)的有人把首選 DNS 寫(xiě)成 8.8.8.8結(jié)果nslookup example.local解析不出來(lái)加域時(shí)提示「找不到域」。這時(shí)候不用懷疑域控壞了先看 DNS 指向。時(shí)間偏差超過(guò) 5 分鐘會(huì)導(dǎo)致 Kerberos 認(rèn)證失敗現(xiàn)象是加域成功但訪(fǎng)問(wèn)共享時(shí)一直彈憑據(jù)框。確認(rèn)無(wú)誤后加域用 PowerShell 比圖形界面好留痕# 加域并重啟-Credential 用有加域權(quán)限的域賬號(hào) $cred Get-Credential EXAMPLE\joinadmin Add-Computer -DomainName example.local -Credential $cred -OUPath OU服務(wù)器,DCexample,DClocal -Restart-OUPath指定計(jì)算機(jī)對(duì)象落在哪個(gè) OU建議單獨(dú)建一個(gè)「服務(wù)器」OU 放文件服務(wù)器這樣后面如果要做計(jì)算機(jī)側(cè)的策略比如防火墻規(guī)則、驅(qū)動(dòng)器映射的計(jì)算機(jī)策略直接鏈在這個(gè) OU 上就行不會(huì)波及辦公電腦。加完域重啟用nltest /dsgetdc:example.local確認(rèn)能定位到域控再用whoami /fqdn看當(dāng)前身份是不是已經(jīng)帶上域前綴兩條都通過(guò)再往下走。3.2 建共享目錄共享權(quán)限放寬、NTFS 收緊目錄結(jié)構(gòu)我一般按「一盤(pán)一用途」來(lái)切不要把所有東西堆在一個(gè)共享里。比如公共盤(pán)放制度文檔和模板部門(mén)盤(pán)放各部門(mén)自己的資料項(xiàng)目盤(pán)放跨部門(mén)協(xié)作文件。每個(gè)共享對(duì)應(yīng)一個(gè)頂層文件夾權(quán)限互不干擾。rem 在文件服務(wù)器上以管理員身份運(yùn)行創(chuàng)建目錄結(jié)構(gòu) mkdir D:\Share\Public mkdir D:\Share\RD mkdir D:\Share\Admin mkdir D:\Share\Project rem 建立共享共享權(quán)限給 Everyone 完全控制實(shí)際限制交給 NTFS net share PublicD:\Share\Public /GRANT:Everyone,FULL /REMARK:公共盤(pán) net share RDD:\Share\RD /GRANT:Everyone,FULL /REMARK:研發(fā)部 net share AdminD:\Share\Admin /GRANT:Everyone,FULL /REMARK:行政部/GRANT:Everyone,FULL看著嚇人但這只是共享層真正的門(mén)在 NTFS 上。這么做的原因很實(shí)際共享權(quán)限一旦收緊后面調(diào)權(quán)限得同時(shí)改兩處還容易出現(xiàn)「NTFS 給了但共享沒(méi)給」的詭異現(xiàn)象排查成本翻倍。統(tǒng)一放寬共享層只維護(hù) NTFS是運(yùn)維里比較通行的做法。共享名用英文別用中文。中文共享名在 bat 腳本、GPO 首選項(xiàng)、某些老客戶(hù)端里都可能出現(xiàn)編碼問(wèn)題現(xiàn)象是路徑明明寫(xiě)對(duì)了卻提示「找不到網(wǎng)絡(luò)路徑」。顯示名和備注可以寫(xiě)中文用戶(hù)看到的是備注。3.3 用 icacls 固化權(quán)限并留一份權(quán)限快照NTFS 權(quán)限我不用圖形界面點(diǎn)直接用icacls。原因是點(diǎn)出來(lái)的權(quán)限繼承關(guān)系經(jīng)常和預(yù)期不一致尤其是子文件夾帶了自己的顯式權(quán)限時(shí)圖形界面的「禁用繼承」按鈕容易點(diǎn)漏。命令行寫(xiě)一次能存進(jìn)文檔重建環(huán)境時(shí)直接跑。rem 關(guān)閉繼承并移除繼承來(lái)的權(quán)限只保留顯式授權(quán) icacls D:\Share\Public /inheritance:r rem 管理員組和 SYSTEM 保留完全控制否則自己也進(jìn)不去 icacls D:\Share\Public /grant:r BUILTIN\Administrators:(OI)(CI)F icacls D:\Share\Public /grant:r NT AUTHORITY\SYSTEM:(OI)(CI)F rem 域本地組授權(quán)讀寫(xiě)組可改只讀組只讀 icacls D:\Share\Public /grant:r EXAMPLE\DL-共享盤(pán)-讀寫(xiě):(OI)(CI)M icacls D:\Share\Public /grant:r EXAMPLE\DL-共享盤(pán)-只讀:(OI)(CI)RX(OI)(CI)是繼承標(biāo)記OI表示對(duì)象繼承文件CI表示容器繼承子文件夾兩個(gè)都寫(xiě)才能保證目錄里新建的文件也帶上權(quán)限。M是修改RX是讀取和執(zhí)行F是完全控制。授權(quán)對(duì)象必須寫(xiě)成域\組名的完整格式只寫(xiě)組名有時(shí)會(huì)解析到本地組上權(quán)限看著配了實(shí)際不生效。配完導(dǎo)出一份權(quán)限快照存檔出問(wèn)題時(shí)拿來(lái)對(duì)比icacls D:\Share\Public /save C:\temp\public_acl.txt /t /c/t遞歸所有子目錄/c表示遇到錯(cuò)誤繼續(xù)。這份 txt 以后可以直接用icacls D:\Share\Public /restore C:\temp\public_acl.txt還原算是給自己留的后悔藥。注意/inheritance:r會(huì)把父目錄繼承來(lái)的權(quán)限全部清掉執(zhí)行前確認(rèn)父目錄沒(méi)有你需要保留的授權(quán)否則要手動(dòng)補(bǔ)回來(lái)。4. 登錄腳本與 GPO 驅(qū)動(dòng)器映射net use 的每一個(gè)參數(shù)都別亂寫(xiě)到這一步AD 和共享目錄都就緒了剩下的事就是讓用戶(hù)登錄時(shí)自動(dòng)看到盤(pán)。原文里給了兩條路bat 登錄腳本走net use或者 GPO 驅(qū)動(dòng)器映射。這兩條路不是二選一很多環(huán)境里是并存的——GPO 管標(biāo)準(zhǔn)盤(pán)符腳本處理帶條件的映射。但兩條都開(kāi)的時(shí)候沖突和殘留問(wèn)題會(huì)成倍出現(xiàn)所以參數(shù)必須寫(xiě)清楚。4.1 net use 的參數(shù)逐項(xiàng)拆開(kāi)看net use這個(gè)命令用了二十年參數(shù)沒(méi)變過(guò)但每個(gè)參數(shù)在新環(huán)境下的含義值得重新過(guò)一遍。我見(jiàn)過(guò)最常見(jiàn)的錯(cuò)誤是腳本里寫(xiě)了net use Z: \\FS01\Public /persistent:yes用戶(hù)換機(jī)登錄后盤(pán)符帶紅叉點(diǎn)開(kāi)提示「網(wǎng)絡(luò)名不再可用」本質(zhì)是持久化映射把老連接寫(xiě)進(jìn)了注冊(cè)表。rem 先刪掉可能殘留的同盤(pán)符映射避免 1219 沖突 net use Z: /delete /y nul 21 rem 建立映射不持久化錯(cuò)誤輸出丟棄退出碼交給下面判斷 net use Z: \\FS01\Public /persistent:no nul 21 rem 根據(jù)退出碼決定是否重試一次 if errorlevel 1 ( ping -n 2 127.0.0.1 nul net use Z: \\FS01\Public /persistent:no nul 21 )/persistent:no是這套方案里的核心參數(shù)。域環(huán)境每次登錄都會(huì)重新跑腳本映射本來(lái)就是臨時(shí)的持久化反而會(huì)讓注冊(cè)表里堆一堆失效記錄用戶(hù)換網(wǎng)絡(luò)、換機(jī)器時(shí)就開(kāi)始報(bào)錯(cuò)。/delete /y放在最前面是為了清掉上一次登錄沒(méi)清干凈的同盤(pán)符連接/y表示不詢(xún)問(wèn)直接刪。nul 21把標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都丟掉因?yàn)榈卿浤_本在用戶(hù)桌面執(zhí)行彈黑框或者報(bào)錯(cuò)信息會(huì)嚇到人。真正的錯(cuò)誤處理交給errorlevel判斷需要排查時(shí)再單獨(dú)跑一遍不帶重定向的命令看報(bào)錯(cuò)。ping -n 2 127.0.0.1這一行是等待兩秒不是玄學(xué)。開(kāi)機(jī)瞬間網(wǎng)絡(luò)??赡苓€沒(méi)完全就緒腳本跑得比網(wǎng)卡快第一次net use就會(huì)返回 53找不到網(wǎng)絡(luò)路徑。等兩秒再重試一次能擋掉相當(dāng)一部分「有些人能映射有些人不能」的隨機(jī)問(wèn)題。4.2 腳本放哪NETLOGON 共享與「登錄腳本」名字bat 文件不能隨便放必須放在域控的NETLOGON共享里路徑是C:\Windows\SYSVOL\sysvol\example.local\scripts\網(wǎng)絡(luò)路徑就是\\example.local\netlogon\。這個(gè)目錄會(huì)自動(dòng)同步到所有域控用戶(hù)從哪臺(tái)域控登錄都能拿到腳本。腳本文件名建議用英文加短橫線(xiàn)比如map-drive.bat別用中文名也別帶空格。GPO 里填登錄腳本的時(shí)候只填文件名不填路徑系統(tǒng)會(huì)自動(dòng)去 NETLOGON 下找。填成完整 UNC 路徑也能跑但一旦域控更換或者做 DFS路徑就得全改。多部門(mén)需要不同盤(pán)符時(shí)我一般寫(xiě)一個(gè)主腳本按組成員判斷分支echo off setlocal set LOG%USERPROFILE%\map-drive.log rem 公共盤(pán)全員都映射 net use P: /delete /y nul 21 net use P: \\FS01\Public /persistent:no nul 21 if errorlevel 1 echo [%date% %time%] P盤(pán)映射失敗 code%errorlevel% %LOG% rem 判斷是否屬于研發(fā)組是則額外映射 R 盤(pán) whoami /groups | findstr /c:GG-研發(fā)部 nul if not errorlevel 1 ( net use R: /delete /y nul 21 net use R: \\FS01\RD /persistent:no nul 21 if errorlevel 1 echo [%date% %time%] R盤(pán)映射失敗 code%errorlevel% %LOG% ) endlocal exit /b 0whoami /groups | findstr是判斷組成員最省事的寫(xiě)法不用調(diào) AD 模塊客戶(hù)端機(jī)器上也能跑。exit /b 0保證腳本無(wú)論如何都返回成功避免登錄過(guò)程因?yàn)槟_本退出碼卡住。日志寫(xiě)到%USERPROFILE%下每個(gè)用戶(hù)自己機(jī)器上一份出問(wèn)題讓他把日志發(fā)過(guò)來(lái)就能定位。不要往網(wǎng)絡(luò)共享寫(xiě)日志登錄那一刻網(wǎng)絡(luò)權(quán)限還沒(méi)完全建立寫(xiě)日志本身就會(huì)失敗反而添亂。4.3 AD 里的共享文件夾對(duì)象與 GPO 鏈接原文提到在 AD 中新建「共享文件夾」對(duì)象地址填\\文件服務(wù)器IP\共享文件夾。這個(gè)對(duì)象的實(shí)際作用是讓用戶(hù)在「網(wǎng)絡(luò)」里能直接瀏覽到這個(gè)共享入口對(duì)映射本身沒(méi)有影響屬于可選項(xiàng)。但如果要做路徑必須和實(shí)際共享一致改 IP 或者改共享名的時(shí)候記得同步否則就會(huì)出現(xiàn)我開(kāi)頭說(shuō)的那種「對(duì)象還在地址早廢了」的情況。建的位置建議放在對(duì)應(yīng)的 OU 下和用戶(hù)放一起找的時(shí)候好找。地址里用主機(jī)名\\FS01\Public比用 IP 穩(wěn)IP 變更時(shí)只需要改 DNS 記錄AD 對(duì)象不用動(dòng)。GPO 的創(chuàng)建和鏈接是這一步的重頭戲。在 ADUC 里選中目標(biāo) OU右鍵 → 新建 GPO 并鏈接到此對(duì)象命名規(guī)范一點(diǎn)比如GPO-共享盤(pán)映射-員工。一個(gè) OU 上如果掛了好幾條 GPO作用順序是先本地、再站點(diǎn)、再域、最后 OUOU 內(nèi)部的多個(gè) GPO 按鏈接順序從下往上生效后鏈接的優(yōu)先級(jí)高這個(gè)順序在沖突排查時(shí)要用到。安全篩選是必踩的坑我在第 5 章單獨(dú)寫(xiě)。這里先記住一條新建的 GPO 默認(rèn)安全篩選里是 Authenticated Users如果你把它刪了換成全員組一定要在「委派」頁(yè)簽里給 Authenticated Users 保留「讀取」權(quán)限否則組策略根本發(fā)不下去客戶(hù)端gpresult里連這條策略都看不到。4.4 驅(qū)動(dòng)器映射和登錄腳本同時(shí)開(kāi)會(huì)不會(huì)打架兩個(gè)功能都能實(shí)現(xiàn)「登錄后看到盤(pán)」但機(jī)制不同行為也不同。我把區(qū)別列出來(lái)方便選對(duì)比項(xiàng)GPO 驅(qū)動(dòng)器映射首選項(xiàng)bat 登錄腳本生效時(shí)機(jī)后臺(tái)刷新周期登錄后可能延遲幾十秒登錄時(shí)同步執(zhí)行立即可見(jiàn)斷線(xiàn)重連支持「重新連接」選項(xiàng)每次登錄重建條件判斷支持按組、按 OU 做項(xiàng)目級(jí)定位腳本里自己寫(xiě) if排錯(cuò)方式gpresult 事件日志腳本日志殘留清理用 Update 動(dòng)作自動(dòng)覆蓋必須手動(dòng) delete如果只是標(biāo)準(zhǔn)盤(pán)符映射我推薦 GPO 驅(qū)動(dòng)器映射動(dòng)作選「更新Update」而不是「創(chuàng)建Create」。Update 會(huì)覆蓋已有映射并修正屬性Create 遇到已存在的盤(pán)符直接跳過(guò)改配置時(shí)會(huì)出現(xiàn)「改了策略但客戶(hù)端沒(méi)變」的假象。如果映射需要復(fù)雜邏輯比如按機(jī)器名后綴、按時(shí)間段、按登錄方式區(qū)分腳本更靈活。兩者同時(shí)用時(shí)務(wù)必讓兩邊的盤(pán)符不重疊腳本里操作的盤(pán)符和 GPO 里配的盤(pán)符錯(cuò)開(kāi)否則 GPO 刷新和腳本執(zhí)行會(huì)互相刪對(duì)方的映射現(xiàn)象是盤(pán)一會(huì)兒有一會(huì)兒沒(méi)有非常難查。5. 避坑與排查盤(pán)符出來(lái)了卻打不開(kāi)的五種現(xiàn)場(chǎng)配置環(huán)節(jié)全部走完并不代表能收工。下面這五條是我在域環(huán)境共享盤(pán)部署里反復(fù)遇到的每條的排查路徑都寫(xiě)在里面遇到同類(lèi)現(xiàn)象可以直接對(duì)號(hào)入座。5.1 現(xiàn)象盤(pán)符顯示帶紅叉雙擊提示「網(wǎng)絡(luò)名不再可用」原因基本是兩個(gè)一是net use加了/persistent:yes注冊(cè)表里殘留了舊服務(wù)器的連接記錄服務(wù)器換 IP 或者共享改名之后客戶(hù)端還在按老記錄連二是用戶(hù)之前手動(dòng)映射過(guò)同一個(gè)盤(pán)符用的是另一套憑據(jù)登錄腳本執(zhí)行時(shí)撞上 1219 錯(cuò)誤映射被拒絕但舊連接還在。解決分三步。先在客戶(hù)端執(zhí)行net use * /delete /y清掉所有映射再執(zhí)行reg delete HKCU\Network\Z /f清理注冊(cè)表殘留最后注銷(xiāo)重登讓腳本重建。根治辦法是腳本里統(tǒng)一加/persistent:no每次登錄先/delete /y再建不給殘留留機(jī)會(huì)。5.2 現(xiàn)象gpresult 里根本看不到共享盤(pán)那條 GPO組策略沒(méi)下發(fā)九成是安全篩選配錯(cuò)了。典型操作是新建 GPO 后進(jìn)「安全篩選」把 Authenticated Users 刪掉加上全員組以為這樣只對(duì)目標(biāo)組生效。結(jié)果 GPO 的「讀取」權(quán)限也一起被刪了客戶(hù)端連策略?xún)?nèi)容都讀不到自然不生效。正確做法是刪掉 Authenticated Users 之后切到「委派」頁(yè)簽點(diǎn)「添加」→ 把 Authenticated Users 加回來(lái)只勾「讀取」?;蛘吒?jiǎn)單的方案不動(dòng) Authenticated Users直接用「安全篩選」追加目標(biāo)組然后在 GPO 的「組策略對(duì)象」屬性里把「安全篩選」中的目標(biāo)組設(shè)為必需??蛻?hù)端用gpresult /r看「已應(yīng)用的組策略對(duì)象」列表里沒(méi)有這一條就是篩選問(wèn)題。5.3 現(xiàn)象能打開(kāi)共享目錄但里面的文件點(diǎn)開(kāi)提示拒絕訪(fǎng)問(wèn)這是典型的 NTFS 權(quán)限問(wèn)題不是映射問(wèn)題。共享權(quán)限放了 Everyone 完全控制映射也建成功了但目錄的 NTFS ACL 里沒(méi)有用戶(hù)所屬的資源組或者組是加了但授權(quán)對(duì)象寫(xiě)成了本地組。排查順序先在客戶(hù)端用whoami /groups確認(rèn)自己的令牌里有沒(méi)有DL-共享盤(pán)-讀寫(xiě)沒(méi)有就說(shuō)明組嵌套沒(méi)生效或者賬號(hào)沒(méi)進(jìn)全局組有的話(huà)在服務(wù)器上跑icacls D:\Share\Public看 ACL 里到底授給了誰(shuí)重點(diǎn)看組名前面有沒(méi)有域名前綴。修復(fù)用icacls重新授一次授完讓用戶(hù)注銷(xiāo)重登因?yàn)榻M成員變更要重新登錄才會(huì)進(jìn)令牌。5.4 現(xiàn)象一部分用戶(hù)映射成功另一部分一直失敗如果失敗的人集中在某個(gè)部門(mén)或者某個(gè)樓層先看他們登錄的機(jī)器是不是在同一個(gè) OU 下、是不是同一個(gè)網(wǎng)段。常見(jiàn)原因是這些機(jī)器還留著舊的驅(qū)動(dòng)器映射注冊(cè)表項(xiàng)或者他們的賬號(hào)在 AD 里被挪了 OUGPO 鏈接的作用范圍覆蓋不到。還有一種容易被忽略的情況腳本里用findstr判斷組名時(shí)寫(xiě)了中文而客戶(hù)端代碼頁(yè)不是 936導(dǎo)致匹配失敗分支根本沒(méi)進(jìn)。解決方法是判斷邏輯里改用組的 SID 或者英文組名避免依賴(lài)控制臺(tái)編碼。同時(shí)在腳本里加日志輸出把每次判斷的結(jié)果寫(xiě)下來(lái)比猜快得多。5.5 現(xiàn)象登錄要等三十秒以上桌面出來(lái)很久盤(pán)才出現(xiàn)登錄腳本是同步執(zhí)行的腳本里每一條net use都在等網(wǎng)絡(luò)響應(yīng)如果服務(wù)器響應(yīng)慢或者腳本里有重試循環(huán)登錄就會(huì)被拖住。另一個(gè)隱形原因是腳本里調(diào)用了ping做等待配了多次重試?yán)塾?jì)起來(lái)就是十幾秒。優(yōu)化方向把等待和重試從腳本里挪出去改用 GPO 驅(qū)動(dòng)器映射的首選項(xiàng)后臺(tái)刷新不影響登錄必須用腳本的把重試次數(shù)壓到一次等待壓到 1 秒以?xún)?nèi)同時(shí)檢查 DNS 反向解析客戶(hù)端連\\FS01\Public時(shí)如果要做反向查詢(xún)而 DNS 沒(méi)配 PTR 記錄每次連接都會(huì)多等幾秒。這條坑很隱蔽ping -a測(cè)一下主機(jī)名解析耗時(shí)就能看出來(lái)。6. 裝完怎么驗(yàn)證三條命令確認(rèn)共享盤(pán)真的通了配完不算完得有一份能復(fù)現(xiàn)的驗(yàn)證動(dòng)作。我的習(xí)慣是分三層驗(yàn)策略層、映射層、訪(fǎng)問(wèn)層三層都過(guò)才算真跑通少一層都可能在上線(xiàn)第一天被打臉。第一層看策略有沒(méi)有到位。在客戶(hù)端用普通域賬號(hào)登錄打開(kāi)命令行執(zhí)行g(shù)presult /r /scope:user輸出里找「已應(yīng)用的組策略對(duì)象」這一段確認(rèn)共享盤(pán)那條 GPO 在列表里。如果不在回到第 5.2 條查安全篩選。再用gpresult /h C:\temp\gp.html生成完整報(bào)告瀏覽器打開(kāi)后搜「驅(qū)動(dòng)器映射」能直接看到策略里配了哪些盤(pán)符、目標(biāo)路徑是什么比翻注冊(cè)表快。第二層看映射有沒(méi)有建起來(lái)net use wmic logicaldisk where drivetype4 get deviceid,providernamenet use列出當(dāng)前會(huì)話(huà)的所有映射重點(diǎn)看狀態(tài)列是不是「正?!挂约斑h(yuǎn)程路徑對(duì)不對(duì)。wmic那條列出所有網(wǎng)絡(luò)驅(qū)動(dòng)器及其 UNC 路徑適合腳本化比對(duì)。兩條結(jié)果對(duì)不上說(shuō)明有殘留或者 GPO 和腳本在搶同一個(gè)盤(pán)符。第三層是真正訪(fǎng)問(wèn)一次別只看盤(pán)符dir P:\ echo test P:\_verify_%USERNAME%.txt type P:\_verify_%USERNAME%.txt del P:\_verify_%USERNAME%.txt寫(xiě)入、讀取、刪除三步都成功才說(shuō)明 NTFS 權(quán)限和共享權(quán)限都對(duì)。只做dir是不夠的只讀權(quán)限也能dir成功寫(xiě)入才是真正驗(yàn)證讀寫(xiě)組有沒(méi)有生效。驗(yàn)完記得刪掉測(cè)試文件我見(jiàn)過(guò)有人留了一堆_verify_開(kāi)頭的文件在公共盤(pán)里被同事當(dāng)成病毒。最后補(bǔ)兩個(gè)環(huán)境級(jí)檢查在服務(wù)器上用Get-SmbShare確認(rèn)共享狀態(tài)是 Online用Get-SmbSession看當(dāng)前有幾個(gè)客戶(hù)端連著有沒(méi)有異常斷連??蛻?hù)端側(cè)再跑一次nslookup FS01確認(rèn)主機(jī)名解析穩(wěn)定這一條能擋掉后面很多「偶發(fā)連不上」的投訴。從那以后我每次配完域共享盤(pán)都會(huì)先用一個(gè)測(cè)試賬號(hào)在一臺(tái)干凈的機(jī)器上完整走一遍這三層驗(yàn)證再拿真實(shí)員工賬號(hào)復(fù)測(cè)一次寫(xiě)入權(quán)限最后才通知部門(mén)切換。這個(gè)習(xí)慣是被坑出來(lái)的——有次上線(xiàn)當(dāng)天才發(fā)現(xiàn)只讀組被錯(cuò)加進(jìn)了讀寫(xiě)域本地組全公司都能改行政部的工資表事后補(bǔ)權(quán)限容易信任補(bǔ)不回來(lái)。按這套順序走一遍能省掉大部分返工。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取