IIS 7.5中神秘的應用程序池標識解析(程序池賬戶)
IIS7.5中(僅win7,win2008 SP2,win2008 R2支持),應用程序池的運行帳號,除了指定為LocalService,LocalSystem,NetWorkService這三種基本類型外,還新增了一種ApplicationPoolIdentify
win7的官方幫助上是這么說的:ApplicationPoolIdentity – 默認情況下,選擇“應用程序池標識”帳戶。啟動應用程序池時動態(tài)創(chuàng)建“應用程序池標識”帳戶,因此,此帳戶對于您的應用程序來說是最安全的。
也就是說"ApplicationPoolIdentity"帳號是系統(tǒng)動態(tài)創(chuàng)建的“虛擬”帳號(說它是虛擬的,是因為在用戶管理里看不到該用戶或用戶組,在命令行下輸入net user也無法顯示,但該帳號又是確實存在的)
如何驗證該帳號確實是存在的的?打開任務管理器,觀察一下:
w3wp.exe即iis進程,上圖中高亮部分表明該iis進程正在以帳號luckty運行(注意這里的luckty即為上圖中的應用程序池名稱)
好了,搞清楚這個有什么用?
先來做一個測試,比如我們在iis里新建一個站點,主目錄設置為c:\2\,應用程序池就指定剛才圖中的luckty
假如我們在該站點的default.aspx.cs里寫入這樣一行代碼 :
File.AppendAllText("C:\\TestDir\\1.txt",DateTime.Now.ToString());
前提是c盤必須先建一個目錄TestDir,同時除Administrator,System保留完全控制權外,其它帳號的權限都刪除掉
運行后,會提示異常: 對路徑“C:\TestDir\1.txt”的訪問被拒絕。
原因很明顯:該站點運行時是以應用程序池(luckty)對應的虛擬帳號運行的,而這個虛擬帳號不具備c:\TestDir的訪問權限
這種情況在web服務器(iis6)安全配置中很常見,比如我們把圖片上傳目錄,常常放在主目錄之外,同時以虛擬目錄形式掛于站點之下,另外在IIS6中不指定該目錄任何執(zhí)行權限 ,這樣即使有人非法上傳了asp/aspx木馬上去,也無法運行搞不成破壞!言歸正傳,要想讓那一行測試代碼正常運行,解決辦法很簡單,把虛擬帳號的權限加入文件夾安全權限中即可,但是問題來了:這個虛擬帳號我們是不可見的,如果你直接添加名為luckty的用戶到文件夾安全帳號里,根本通不過(提示找不到luckty用戶),說明這個虛擬帳號名稱并不是"luckty"
關鍵:手動輸入 IIS AppPool\luckty (即IIS AppPool\應用程序池名),再確定,這回ok了.
當然除了用"IIS AppPool\應用程序池名"外,windows內部還有一個特殊的用戶組Authenticated Users,把這個組加入TestDir的安全權限帳號里也可以,不過個人覺得沒有"IIS AppPool\應用程序池名"來得精確.
結束語:IIS7.5的虛擬帳號設計確實很棒,想想傳統(tǒng)IIS6的時候,為了把同一服務器上的各站點權限分開(以防止木馬搗亂),不得不創(chuàng)建一堆iuser_XXX,iwam_XXX帳號并指定密碼,再一個個站點分配過去,累死人!而虛擬帳號設計則讓這類管理輕松多了,也不用擔心密碼過于簡單或過期問題。So,還在等什么,趕緊升級到win7/win2008 R2吧!
相關文章
IIS7 網(wǎng)站發(fā)布常見報錯問題解決方案匯總
這篇文章主要為大家詳細介紹了IIS7網(wǎng)站發(fā)布常見問題及解決方案,感興趣的小伙伴們可以參考一下2016-08-08解決IIS中應用程序池提供服務的進程無法響應Ping或進程關閉時間超過了限制
這篇文章主要介紹了解決IIS中應用程序池提供服務的進程無法響應Ping或進程關閉時間超過了限制,需要的朋友可以參考下2016-06-06win2008 r2 安裝sqlserver 2000問題的解決方法
最近服務器升級了win2008 r2系統(tǒng),考慮到用戶額需要,sqlserver使用了2000,其實個人建議安裝sql2005或sql2008,但也不能考慮一些朋友額需求2013-08-08win2003 64位系統(tǒng)下ODBC連接使用方法
一般系統(tǒng)部署的服務器若是windows系統(tǒng),就會采用64位win2003的結構??墒俏覀兙帉懙某绦蚪^大多數(shù)都是在x86下32位cpu架構中編譯的,要正常移植到64位機器還真的是很麻煩,不僅要求應用程序是64位模式編譯,還需要數(shù)據(jù)庫也得是64位,iis64位2017-03-03