Windows server 2008 R2 + IIS7.5,ASP网站设置

时间:2023-03-09 03:05:29
Windows server 2008 R2 + IIS7.5,ASP网站设置

Windows server 2008 R2 + IIS7.5,ASP网站设置

1. 让IIS7支持ASP
  Win2008 IIS7 默认不安装ASP,如果需要ASP 的支持,需要将这个角色服务选上。

2、相关设置
  应用程序池-->DefaultAppPool-->高级设置-->启用32位应用程序,置为True
  如果只使用ASP功能,可将2项ASP.NET 以及Classic .NET AppPool停止

  网站-->编辑权限-->网站目录属性,安全-->添加 IUSR:修改、读取、写权限(仅读权限可能读不出 .mdb)
  网站-->IIS-->ASP-->行为-->启用父路径,置为True;并视需要修改“调试”里的参数

  网站-->IIS-->默认文档-->添加网站首页文档,如 index.asp

以下的权限设置可以参考:

1、在服务器计算机管理中新建一网站用户用于对网站的匿名访问,比如用户名为vcoo
2、IIS7.5中新建网站时物理路径下面有个【连接为...】,点开后设置为特定用户为之前新建的vcoo
3、IIS7.5中选择网站,在右边的功能视图中选择身份验证,编辑【匿名身份验证】为新建的vcoo
4、在磁盘网站目录中添加vcoo用户的读取和修改权限
5、值的注意的是硬盘网页目录权限要设置网页web目录上级目录的权限(暂时不知为何)
6、可笑的是从网上搜索到的答案是给网页目录添加Everyone用户的完全控制权,找黑呢!可笑!

以下是IIS7.5的权限介绍:

工作进程(Worker Process)
Worker Process是IIS应用程序的宿主, 在任务管理器中可以看到每一个Worker Process就是一个w3wp.exe.

工作进程标识(Worker Process Identity - WPI)
是Worker Process运行时的身份:
  * 在IIS6, Windows 2008 IIS7下, 默认关联权限是NetworkService.
  * 在Windows 2008 R2 IIS7.5下, 默认是关联权限是Application Pool Identity.

这里并没有提供一个直接的手段来设置Worker Process在什么身份标识下运行, 而是通过Application Pool的身份标识设定来实现的.

应用程序池(Application Pool)
Application Pool包含至少一个或多个Worker Process(Web Garden模式). 在运行时会将Application Pool的身份注入到Worker Process中, 就会以ApplicationPool的身份运行. 可以认为Application Pool与其包含的Worker Process的运行身份是一致的.

应用程序池标识(Application Pool Identity)
是Application Pool运行时的身份:
  * 在IIS6, Windows 2008 IIS7下, 默认关联权限是NetworkService.
  * 在Windows 2008 SP2 IIS7下, 运行身份设置时除了LocalService,NetworkService, LocalSystem外增加了Application Pool Identity一个选项, 而这个则是一个可以设置权限的虚拟标识.
  * 在Windows 2008 R2 IIS7.5下, 默认是关联权限是Application Pool Identity.

虚拟帐户 Application Pool Identity
只是一个统称, 并不存在实际的这个命名。他依赖你的Application Pool的名称,例如我的Application Pool名字叫做: SimonwAppPool, 那么这个虚拟标识的全名是: IIS AppPool\SimonwAppPool运行在此Application Pool下的Worker Process从任务管理器中可以看到w3wp.exe是在SimonwAppPool这个用户下运行的。可以在文件系统中对这个帐户分配权限.这么做的好处是能够将能够将权限分离开来做粒度更细的配置,不像是NetworkService有很多应用基于此,设置一个权限影响一大片。

不过有时候通过UI找不到这个对象大约是个Bug, 通过命令行icacls处理即可.

用户组与用户
在IIS7下需要注意2个特殊的用户和用户组, 在IIS6中有着类似的对应关系
IIS6:IIS_WPG - IIS7:IIS_IUSRS
IIS6:IUSR_MachineName - IIS7:IUSR

最大的改变就是他们都成为了系统内置帐户(built-in account)有着统一的SID,这样的好处在于做不同机器/系统间的拷贝时可以连带权限一同拷贝过去了, 在以往因为SID不同换了机器权限是无法有效拷贝的只能挨个手动设置, 现在方便多了.

IIS_IUSRS组
默认他会拥有适当的权限来运行Worker Process. 所有的WPI下的运行帐户均被隐式的自动加入到这个组中, 以获得最小的运行权限. 例如当你将SimonwAppPool这个Application Pool的运行身份设置为Application Pool Identity, 那么IISAppPool\SimonwAppPool这个用户会被自动加入到IIS_IUSRS组中拥有他的全部权限. 因此对此组权限赋值需很小心很容易不知不觉中影响一大片.

IUSR默认匿名帐户
特别需要注意的别看他是一个匿名帐户并且没有密码, 但他属于authenticatedusers ,而authenticated users属于Users组, 因此IUSR默认具备了Users组的权限.

以下为网上找到的其它设置,试过,发现在2008 IIS7.5中,不设也可以:
默认装完IIS7之后,如果使用ASP程序时,提示数据库连接失败,可能是因为MS Jet引擎改变了临时目录的位置,但是又没有对临时的存取权限所致:

给C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp 目录添加 Authenticated Users 用户,并赋全部权限。其中AppData目录是隐藏的,在进入的时候可以直接在地址栏输入路径,或者在文件夹选项里显示隐藏文件。

也有贴子提到给  C:\Windows\Temp 文件夹,添加用户 Authenticated Users ,并赋全部权限。

链接方式:
ServerPath=Server.MapPath("/xxx.mdb")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ServerPath
Set schooldb=Server.CreateObject("Adodb.Connection")
schooldb.Open connstr