程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 理解IIS7的用戶和組

理解IIS7的用戶和組

編輯:.NET實例教程

介紹
在以前的IIS版本中有一個本地帳號,是在安裝時創建的,叫做IUSR_MachineName。一旦啟用匿名身份認證,這個IUSR_MachineName帳號就是IIS默認使用的身份(identity),它同時在FTP和HTTP服務中使用。另外還有一個叫做IIS_WPG的組,它是所有應用程序池帳號的容器。在IIS安裝期間,必須保證所有的系統可用資源已經為IIS_WPG設置了適當的權限,當管理員創建一個新的應用程序池帳號時,只需要把新帳號(身份)加入這個組即可。

這個模型運轉得很好,但是和其他任何設計一樣,它們有他們的缺點,主要的缺點是IUSR_MachineName帳號和IIS_WPG組對於創建它們的系統來說都是本地的。 Windows中的每個帳號或組都有一個唯一的號碼叫做SID(安全識別號),這樣就可以區別於其它的帳號或組。我們僅使用SID來創建創建ACL。作為以前版本的IIS設計的組成部分,我們將IUSR_MachineName包含在了metabase.xml文件中,如果你嘗試從一台機器拷貝metabase.XML到另一台機器上,它並不會馬上運轉起來,因為另一台機器上的帳號使用的名字是不同的。另外,你不能僅用xcopy /o來拷貝ACL,因為不同機器上的SID也是不同的。一個解決方法是使用域帳號,但是你需要在你的架構中添加一個活動目錄。IIS_WPG組也有同樣的權限問題,如果你在一個機器的文件系統上為IIS_WPG組設置ACL,使用xcopy /o來拷貝ACL到另一台機器上是無法成功的。IIS了解了這一問題,並通過在IIS7.0中使用內建的帳號和組對其作了改進。

內建的帳號和組是由操作系統保證的,這樣就可以保證有一個唯一的SID,IIS甚至做得更好,它保證了新的帳號名稱和組名稱永遠不會被本地化。例如,無論你安裝的是那種語言版本的Windows,IIS帳號名稱將永遠是IUSR,而組名稱將永遠是IIS_IUSRS。

總的來說,在IIS 7.0中:

IUSR內建帳號替代了IUSR_MachineName帳號
IIS_IUSRS內建組替代了IIS_WPG組

因為IUSR是一個內建帳號,它不再需要密碼。邏輯上你可以認為它就是NETWORKSERVICE或LOCALSERVICE帳號。IUSR帳號和IIS_IUSRS組將在下面的章節中做進一步介紹。

理解新的IUSR帳號
正如上面所說的,在IIS 7.0中IUSR帳號將替代IUSR_MachineName 帳號。僅在安裝FTP服務器時,IUSR_MachineName 帳號才會被創建和使用。如果不安裝FTP,那麼這個帳號將永遠不會被創建。

這個內建帳號並不需要密碼,當啟用匿名身份認證時,該帳號並將被作為默認的用戶身份使用。如果你看一看applicationHost.config文件,你會發現下面的定義:
 <anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />


這就告訴了IIS對所有的匿名身份認證請求使用新的內建帳號。這樣做的最大優點在於,我們現在可以:

* 使用Windows Explorer或許多其他命令行工具為IUSR設置文件系統權限
* 不用再擔心這個帳號的密碼會過期
* 使用xcopy /o無縫拷貝文件以及它們的所有權和ACL信息到不同的機器上

有一點要重點提一下:IUSR帳號和LOCALSERVICE帳號在方式上很相似,它是在網絡上匿名工作。NETWORKSERVICE和LOCALSYSTEM 可以以機器身份工作,但IUSR則不是,因為它是一種特權的升遷。如果你希望有一個擁有網絡訪問權限的匿名帳號,你就需要創建一個新的用戶帳號,並手工設置用戶名和密碼,就像你以前設置匿名身份驗證一樣。要在IIS Manager中實現這一點,你可以:

* 點擊Start按鈕,鍵入"INetMgr.exe"並按回車(如果彈出提示框,請按Continue來提升權限)
* 點擊Connection中機器名稱旁邊的"+"按鈕
* 在IIS Manager中雙擊你要管理的站點
* 雙擊Feature Name標題下面的Authentication項
* 選擇Anonymous Authentication,點擊右側Task標題下面的Edit,彈出Specify Credentials dialog(指定認證對話框)
* 點擊Specific User選項,然後按下"Set"按鈕
* 輸入想設的用戶名和密碼,按OK

理解新的IIS_IUSRS組
正如前面所提到的,IIS_IUSRS組是用來替代IIS_WPG組的,它已經擁有了所有的文件和系統資源的訪問權限,因此如果一個帳號被添加到該組中,它將以應用程序池身份無縫工作。

由於與內建帳號配合工作,該內建組可以解決幾個xcopy的部署問題。如果你在文件上為IIS_WPG設置權限(在IIS6中這是可以的),並嘗試把這些文件拷貝另外一個Windows系統中,由於組SID在不同機器上是不同的,站點設置可能被破壞。

在IIS7中,由於組SID在所有Longhorn系統中是相同的。當你從一台機器向令一台機器移動文件時,使用'xcopy /o'可以保留ACL和擁有權信息,這使得xcopy部署變得簡單的多!

客戶們的第二個請求是“一旦我們配置了應用程序池身份,我們需要IIS來幫我們做所有必要的修改”。我們接受了這個意見,並使這一過程在IIS7.0中變得更加簡單。當IIS啟動一個工作者進程(worker process)時,需要創建一個供該進程使用的令牌(token)。現在,當我們創建這個令牌時,IIS將自動在運行時添加IIS_IUSRS membership到工作者進程令牌中,這麼做能夠讓賬號以應用程序池身份運行,而不需要顯示地作為IIS_IUSRS組的一部分。我們相信這一修改將幫助你更輕易地設置系統,並讓您的整體體驗更好。

如果你想禁用這個特性並手工添加賬號到IIS_IUSRS組,你可以通過設置manualGroupMembership值為true來僅用這一特性。下面是關於如何設置defaultAppPool來禁用這一特性的例子:

<applicationPools>
    <add name="DefaultAppPool">
        <processModel manualGroupMembership="true" />
    </add>
</applicationPools>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved