當前位置 主頁 > iis相關 > 最大化 縮小

                    關于IIS7的權限簡述

                    欄目:iis相關 時間:2018-09-28 14:19

                      IIS7對于以往是革命性的改變,不再是以前縫縫補補的破衣裳,全部重寫的代碼帶來了更為優秀的性能與擴展能力.他不再是一個WebServer了而變成了一個ApplicationServer能夠承載一切以通訊為基礎的應用.新的變革也帶來了新的知識,想更好的駕馭IIS7權限則是最基礎的一部分也是最先需要了解的一部分.本文讓你初步了解IIS7的權限應用的基本相關知識,了解來龍去脈不會再因應用程序突然多出一個莫名其妙權限而感到困惑.雖然下面的內容均以Web服務為例,但道理同樣適用于以IIS7宿主的其他應用如FTP等等。
                     
                      一、工作進程(WorkerProcess)
                     
                      WorkerProcess是IIS應用程序的宿主,在任務管理器中可以看到每一個WorkerProcess就是一個w3wp.exe.
                     
                      工作進程標識(WorkerProcessIdentity-WPI)
                     
                      是WorkerProcess運行時的身份:
                     
                      1、在IIS6,Windows2008IIS7下,默認關聯權限是NetworkService。
                     
                      2、在Windows2008R2IIS7.5下,默認是關聯權限是ApplicationPoolIdentity。
                     
                      這里并沒有提供一個直接的手段來設置WorkerProcess在什么身份標識下運行,而是通過ApplicationPool的身份標識設定來實現的。
                     
                      二、應用程序池(ApplicationPool)
                     
                      ApplicationPool包含至少一個或多個WorkerProcess(WebGarden模式).在運行時會將ApplicationPool的身份注入到WorkerProcess中,就會以ApplicationPool的身份運行.可以認為ApplicationPool與其包含的WorkerProcess的運行身份是一致的。
                     
                      應用程序池標識(ApplicationPoolIdentity)
                     
                      是ApplicationPool運行時的身份:
                     
                      1、在IIS6,Windows2008IIS7下,默認關聯權限是NetworkService。
                     
                      2、在Windows2008SP2IIS7下,運行身份設置時除了LocalService,NetworkService,LocalSystem外增加了ApplicationPoolIdentity一個選項,而這個則是一個可以設置權限的虛擬標識。
                     
                      3、在Windows2008R2IIS7.5下,默認是關聯權限是ApplicationPoolIdentity。
                     
                      三、虛擬帳戶ApplicationPoolIdentity
                     
                      上面提到的身份標識選項中你可以選擇他,但他只是一個統稱,并不存在實際的這個命名.他依賴你的ApplicationPool的名稱,例如我的ApplicationPool名字叫做:SimonwAppPool,那么這個虛擬標識的全名是:IISAppPool\SimonwAppPool運行在此ApplicationPool下的WorkerProcess從任務管理器中可以看到w3wp.exe是在SimonwAppPool這個用戶下運行的.可以在文件系統中對這個帳戶分配權限.這么做的好處是能夠將能夠將權限分離開來做粒度更細的配置,不像是NetworkService有很多應用基于此,設置一個權限影響一大片。
                     
                      不過有時候通過UI找不到這個對象大約是個Bug,通過命令行icacls處理即可.
                     
                      四、什么是impersonate
                     
                      這可能是一個讓人容易迷糊的詞匯impersonate-扮演,裝扮.他是指在某個特定的時刻以一個新的身份來代替已有身份來運行應用程序.一個請求來臨時在IIS處理管道中,在authentication之前authenticateduser的上下文是未知的,這時你的應用程序以WPI的權限在運行.在authentication之后authenticateduser的上下文被建立,但依然沒有去扮演,直至請求被映射到他的handler也就是handlermapping后應用程序開始使用扮演則將默認的WPI權限替換為authenticateduser的權限來執行應用程序。
                     
                      舉個例子,php配置fastcgi時推薦設置fcgi.impersonate=true,體現在請求一個php文件時
                     
                      false:始終使用WPI的權限,默認權限是NetworkService。
                     
                      true:使用authenticateduser,默認為IUSR,也就是說可以讓在站點級別上設置的權限生效。
                     
                      五、用戶組與用戶
                     
                      在IIS7下需要注意2個特殊的用戶和用戶組,在IIS6中有著類似的對應關系
                     
                      IIS6:IIS_WPG-IIS7:IIS_IUSRS
                     
                      IIS6:IUSR_MachineName-IIS7:IUSR
                     
                      最大的改變就是他們都成為了系統內置帳戶(built-inaccount)有著統一的SID,這樣的好處在于做不同機器/系統間的拷貝時可以連帶權限一同拷貝過去了,在以往因為SID不同換了機器權限是無法有效拷貝的只能挨個手動設置,現在方便多了。
                     
                      1、IIS_IUSRS組
                     
                      默認他會擁有適當的權限來運行WorkerProcess.所有的WPI下的運行帳戶均被隱式的自動加入到這個組中,以獲得最小的運行權限.例如當你將SimonwAppPool這個ApplicationPool的運行身份設置為ApplicationPoolIdentity,那么IISAppPool\SimonwAppPool這個用戶會被自動加入到IIS_IUSRS組中擁有他的全部權限.因此對此組權限賦值需很小心很容易不知不覺中影響一大片。
                     
                      2、IUSR默認匿名帳戶
                     
                      特別需要注意的別看他是一個匿名帳戶并且沒有密碼,但他屬于authenticatedusers,而authenticatedusers屬于Users組,因此IUSR默認具備了Users組的權限。
                  快乐时时彩论坛