我们最近升级到IIS7作为核心web服务器,我需要一个权限方面的概述。以前,当需要写入文件系统时,我会给AppPool用户(网络服务)访问目录或文件的权限。

在IIS7中,我看到,默认情况下,appppool用户被设置为ApplicationPoolIdentity。因此,当我检查任务管理器时,我看到一个名为WebSite的用户帐户。例如,正在运行IIS进程('Website。示例'是IIS中的网站名称)

但是,如果我尝试使用该用户帐户来授予权限,则该用户帐户不存在。那么,我如何确定哪个用户也给予权限呢?

请看下面的屏幕截图中的问题。我们的网站(www.silverchip.co.uk)以用户名SilverChip.co.uk运行。但是当我添加权限时,这个用户不存在!

请看appool图片:


当前回答

乔恩·亚当斯的最佳回答

下面是如何为PowerShell实现这个功能

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

其他回答

更令人困惑的是,(Windows资源管理器)有效权限对话框对这些登录不起作用。 我有一个网站“Umbo4”使用直通身份验证,并在网站根文件夹中查看了用户的有效权限。 检查名称测试解析了名称“IIS AppPool\Umbo4”,但有效权限显示用户对文件夹没有任何权限(所有复选框都未选中)。

然后,我使用Explorer Security选项卡显式地将该用户从文件夹中排除。 正如预期的那样,这导致站点失败,出现HTTP 500.19错误。然而,有效权限看起来和以前一模一样。

在Windows Server 2008(r2)上,您不能通过属性->安全性为文件夹分配应用程序池标识。你可以使用以下命令通过管理命令提示符来完成:

icacls "c:\yourdirectory" /t /grant "IIS AppPool\DefaultAppPool":(R)

乔恩·亚当斯的最佳回答

下面是如何为PowerShell实现这个功能

$IncommingPath = "F:\WebContent"
$Acl = Get-Acl $IncommingPath
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule("IIS AppPool\DefaultAppPool","FullControl","ContainerInherit, ObjectInherit", "None", "Allow")
$Acl.SetAccessRule($Ar)
Set-Acl $IncommingPath $Acl

在解析名称时,请记住使用服务器的本地名称,而不是域名

IIS AppPool\DefaultAppPool

(只是一个提醒,因为这让我有点困惑):

我通过创建一个名为IUSER的新用户和密码,并将其添加到网络服务和用户组,就解决了所有asp.net问题。然后创建所有的虚拟站点和应用程序,将身份验证设置为IUSER及其密码。设置高级文件访问包括IUSER和BAM,它至少修复了3-4个问题,包括这个问题。

戴夫