實戰系列是我實際排除問題過程的經驗分享,各位可以跟著我一起看現象、用工具、做推論,一路到問題被解決。尤其值得注意的是,其中採用的工具你是否都見識過它的威力了?
如果是過去所不知道的,只要善用它們,大家都可以變成抓蟲達人哦!
【問題】
兩位同事跟我抱怨,連上WSS會一直跳出輸入Username/Password的對話框
。同事A是每到一個新頁面就要問三次密碼,讓人抓狂!
同事B的遭遇則更離奇,每到一頁會問一次帳號/密碼,但是選擇取消不登入,則畫面依然可以顯示出來,只是某些功能不太正常,這讓人很orz,莫非WSS的權限控管是做假的??
【工具】
這類問題可以考慮用Filddler側聽HTTP傳輸,因為這是明確的權限相關問題,也可以由IIS
Log查。要在同事的機器上裝Fiddler有點麻煩,我決定直接看IISLog。
【觀察】
同事A的Log

GET /_layouts/1028/ows.js - 80 - 401 1 0 0
GET /_layouts/1028/ows.js - 80 Domain\UserA 401 3 5 0
GET /_layouts/1028/ows.js - 80
- 401 1 0 0
GET /_layouts/1028/ows.js - 80
Domain\UserA 401 3 5 0
GET /_layouts/1028/ows.js - 80
-   401 1 0 0
GET /_layouts/1028/ows.js - 80
Domain\UserA 401 3 5 15

同事B的Log
GET /_layouts/1028/ows.js - 80 Domain\UserB 401 3 5 0
GET /_layouts/1028/ows.js - 80
- 401 1 0 0
GET /_layouts/1028/ows.js - 80
Domain\UserB   401 3 5 15
【解讀】
同事A的Log說明了由於ows.js有設NTFS權限,因為第一次先用匿名存取(紅色的-),傳回401.1,於是IE跳出Username/Password對話框要求登入,第二次傳入Domain\UserA的成功登入身份,但傳回401.3。
同事B的Log更有意思,我們一直以為跳出的Username/Password是存取ASPX時要求的,由先前的Log可知在之前早已用"自動登入"的方式完成認證了,一路
用 Domain\UserB 取回ASPX、GIF等...
一直到讀取ows.js時,雖已用Domain\UserB取存,卻碰了401.3的釘子,於是IE跳出登入對話框,但同事按取消,第三次則再用Domain\UserB自動登入
再試,還是401.3。
以上的Log可以解釋三次與一次Username/Password登入畫面的謎團,而按取消後還可用,並不是WSS的權限爛了(好險!),而只是放棄存取ows.js。而少了ows.js的結果,有些功能就不正常了。
【工具】
目標己經很明顯了,ows.js取存失敗,但真的是它的權限問題嗎? 或是IIS瘋了?? 我開啟神兵利器系列的好折凳---File
Monitor
,Filter設ows.js,請同事A、B再試一次。
【觀察】
由監看記錄中看到以Domain\UserA、Domain\UserB讀取ows.js發生ACCESS
DENIED的狀況。再查了一下,原來該檔案前些日子做了Update(由別處Copy覆寫),結果其NTFS權限未繼承自Folder,而只留下Administrators、SYSTEM等。這就是發生ACCESS
DENIED導致401.3的原因!!
【解決】
讓ows.js繼承Folder的權限設定,測試正常, Case Close!!


Comments

# by 小熊子

學到了,謝謝大師

Post a comment