我们最近升级到IIS7作为核心Web服务器,我需要在权限方面进行概述。以前,当需要写入文件系统时,我会给AppPool用户(网络服务)访问目录或文件。
在IIS7中,我看到,默认情况下,AppPool用户设置为ApplicationPoolIdentity。因此,当我检查任务管理器时,我看到一个名为"WebSite.com"的用户帐户正在运行IIS进程('Website.com'是IIS中网站的名称)
但是,如果我尝试使用该帐户授予权限,则此用户帐户不存在。那么,我如何确定哪个用户也可以授予权限呢?
编辑================================================= =============================
有关屏幕截图中的问题,请参阅下文。我们的网站(www.silverchip.co.uk)使用用户名SilverChip.co.uk运行。但是当我添加提交时,这个用户确实存在!
=================================请参阅AppPool图像
ApplicationPoolIdentity实际上是在IIS7 +中使用的最佳实践。它是一个动态创建的,无特权的帐户。要为特定应用程序池添加文件系统安全性,请参阅IIS.net的"应用程序池标识"。快速版:
如果应用程序池名为"DefaultAppPool"(如果命名方式不同,则只需替换下面的文本)
打开Windows资源管理器
选择文件或目录。
右键单击该文件,然后选择"属性"
选择"安全"选项卡
单击"编辑",然后单击"添加"按钮
单击"位置"按钮,确保选择本地计算机。 (如果服务器属于一个域,则不是Windows域。)
在"输入要选择的对象名称:"文本框中输入"IIS AppPool DefaultAppPool"。 (不要忘记将"DefaultAppPool"更改为您为应用程序池命名的任何内容。)
单击"检查名称"按钮,然后单击"确定"。
-
看屏幕截图!
-
@Pino:不,不是网站名称。使用应用程序池名称。每个网站都分配给一个应用程序池。您可以在网站属性"基本设置"对话框(在IIS7中)中分辨出哪一个。
-
那就是AppPool?查看新的屏幕截图。
-
@Pino:在这种情况下,您应该使用的安全角色是IIS AppPool\silverchip.co.uk。我没有在安全名称中尝试过 - 你可能想把它改成没有标点符号的东西。
-
这是一种享受!
-
如果这仍然对WinServ2008R2没有帮助怎么办?
-
@Johnny_D:如果这在Server 2008R2中对你不起作用,你要么没有正确地遵循这个程序,要么你有另一个问题。我建议您发布一个新问题,其中包含您的详细信息,您尝试过的内容,您收到的消息等。
-
正如你所说,我已按照你的指示行事。但有一个黑客。您必须在应用程序池设置中将属性enable load user profile设置为true。只有在这个设置之后我才能运行应用程序。所以请更新您的说明并添加第9点。
-
@siniradam:这个答案是正确的过程。如果它不适合你,那么你可能有不同的设置,错过了一步,或者有一些其他不寻常的环境。我建议问一个新的问题,其中包含更多关于你情况的细节,你尝试过的内容,你得到的错误信息等等。也许你可以将这个作为你尝试但没有工作的东西引用。
-
@Johnny_D:默认情况下,"启用加载用户配置文件"是否已在该环境中设置为"true"?这是我测试过的。或者你是说我们需要明确指出,如果用户改变了这个设置,那么这对他们不起作用?
-
@JonAdams我已经创建了一个新池,并为该池用户授予了权限。很奇怪,但它现在正在运作。谢谢。
-
这对我没用。问题出在高级属性加密检查中。不知道它是怎么发生的,但那就是问题所在。我建议任何有问题的人在按照这些步骤后仔细查看属性。
-
请记住检查匿名身份验证的服务器设置是否也使用应用程序池标识。一旦我从IUSR切换回来,这个解决方案就适用于我。
-
注意这里!您无法使用Userinterface查找用户,但您必须键入它。检查名称是您唯一能做的事情。
-
如果启用了Windows身份验证,那么正确的设置是什么?
-
@ATHER假设您的意思是IIS站点设置通过Windows身份验证对客户端进行身份验证,这是一个单独的主题。它们可能都碰巧涉及相同的Windows凭据存储 - 但这个问题/答案处理IIS访问文件系统而不是客户端访问IIS。
-
unfrivelaged - > nonrivileged,无法编辑,计为少于6个字符的变化。
-
@gerleim感谢拼写纠正;固定
-
@bblue你先生是上帝发送的。感谢您提醒匿名身份验证用户。救了我 :)
-
这仅适用于windows server不是普通的桌面版吗?我使用Windows 10,找不到IIS ApplicationPool
-
@tranquan这适用于所有版本的Windows。仔细阅读上面的说明。 Windows不会让你使用安全对话框中的查找功能 - 这就是为什么这个问题如此受欢迎。上述步骤描述了如何在没有"查找"对话框的情况下设置必要的权限
-
@JonAdams谢谢你:|我现在发现它,太神奇了。因此隐藏了"IIS AppPool DefaultAppPool",您必须输入:|因为我选择高级并列出所有用户但未找到IIS AppPool。我知道它被禁用了
-
@HimalayaGarg使用\IIS_IUSRS的问题在于它不会将应用程序池与其他应用程序池隔离开来。在某些情况下,这比某些用户可能期望/打算的安全性要低一些。
在解析名称时,请记住使用服务器的本地名称,而不是域名
1
| IIS AppPool\DefaultAppPool |
(只是一个提醒,因为这让我吵了一下):
-
是的,我每次都忘记这一点,感谢James Toomey的提醒!
-
这次大声笑,谢谢!
在Windows Server 2008(r2)上,您无法通过"属性" - >"安全性"将应用程序池标识分配给文件夹。您可以使用以下命令通过管理命令提示符执行此操作:
1
| icacls"c:\yourdirectory" /t /grant"IIS AppPool\DefaultAppPool":(R) |
-
你能解释一下吗? (R)是什么意思?你真的在这个命令中输入尖括号吗?
-
嗨Kate,我使用<>来表示"你的apppool名称在这里",但留在一个合法的apppool名称。在IIS管理器 - >应用程序池中,您需要匹配名称,包括空格。我做的最后一个是"IIS AppPool ClientName_CompanyName - Intranet"。 :(R)在这种情况下授予读访问权限。您还可以使用F(完整),M(修改),RX(读取+执行)和W(只写)。
-
您实际上可以通过Windows Server 2008 R2中的"属性"中的"证券"选项卡进行分配,因此您不需要此解决方法。确保在对象类型和位置上选择了内置安全主体。
-
这个答案对我有用。选择的答案对我不起作用。
-
另请参阅[link] serverfault.com/questions/81165/的选择答案的原始响应对于普通的Windows Server 2008(或Datacenter版本),您几乎必须使用命令行将应用程序池帐户放入安全对话框。一旦它在那里,你可以管理它,更改权限级别,子目录等。还要考虑:"icacls"c: yourdirectory"/ t / grant"IIS AppPool DefaultAppPool":( OI)(CI)(R)"OI - 对象继承,CI容器继承。
-
为我工作,除了我必须在引号中包含整个grant参数值:grant"IIS AppPool\DefaultAppPool:(R)"
使用IIS默认配置时,访问IIS AppPool YourAppPoolName用户可能还不够。
在我的情况下,我仍然有错误HTTP错误401.3 - 添加AppPool用户后未经授权,并且只有在向IUSR用户添加权限后才修复它。
这是必要的,因为默认情况下,使用IUSR完成匿名访问。您可以设置另一个特定用户,应用程序池或继续使用IUSR,但不要忘记设置适当的权限。
致谢此答案:HTTP错误401.3 - 未经授权
-
这很关键!!!为了安全起见,必须将"匿名身份验证"更改为"应用程序池标识"!我确定这是一个很好的理由它设置为IUSR,但我不能想到一个单一的。谢谢!!!
-
这为我解决了这个问题。可能是因为我在Windows Server 2012 R2上的IIS版本是8
-
这是一个重要的步骤,应该添加到已接受的答案中。最简单的方法是将单选框更改为应用程序池标识
-
这是我的问题!谢谢!!
A部分:配置应用程序池
假设应用程序池名为"MyPool"
从IIS管理器转到应用程序池的"高级设置"
向下滚动到"身份"。尝试编辑该值将弹出一个对话框。选择"内置帐户",然后选择"ApplicationPoolIdentity"。
在"身份"下面几行,您应该找到"加载用户个人资料"。该值应设置为"True"。
B部分:配置您的网站
网站名称:SiteName(仅举例)
物理路径:C: Whatever(只是一个例子)
以...形式连?樱河τ贸绦蛴没Вù萆矸菅橹ぃ?ㄒ陨仙柚每梢栽贗IS管理器中站点的"基本设置"中找??
配置基本设置后,在站点主控制台的"IIS"下查找"身份验证"配置。打开它。您应该看到"匿名身份验证"选项。确保它已启用。然后右键单击并"编辑..."它。选择"应用程序池标识"。
PA>
C部分:配置文件夹
PA>
有问题的文件夹是C: Whatev
PB>
转到"属性" -"共享" -"高级共享" -"权限",然后选中"共享此文件夹"
在同一个对话框中,您会找到一个"权限"按钮。点击它。
将打开一个新对话框。点击"添加"。
将打开一个新对话框"选择用户或组"。在"从此位置"下,确保名称与本地主机名称相同。然后,在"输入对象名称"下,键入"IIS AppPool MyPool"并单击"检查名称",然后单击"确定"
为"MyPool"用户授予完全共享权限。应用它并关闭文件夹属性
再次打开文件夹属性。这一次,转到安全性 - 高级 - 权限,然后单击添加。顶部会有一个选项'选择一个校长',或者选择一个其他选项来选择一个用户。点击它。
"选择用户或组"对话框将再次打开。重复步骤4。
向"MyPool"用户提供所需或全部权限。
选中"替换所有子对象权限..."并应用并关闭。
PA>
您现在应该可以使用浏览网站
PB>
热门回答乔恩亚当斯
以下是如何为PowerShell人员实现此功能
1 2 3 4 5
| $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 |
我只是通过创建一个名为IUSER的新用户并修改了网络服务和用户组来修复我所有的asp.net问题。然后使用其密码创建所有虚拟站点和应用程序集身份验证到IUSER ..设置高级文件访问权限包括IUSER和BAM它至少修复了3-4个问题,包括这个问题..
戴夫
只是为了增加混淆,(Windows资源管理器)有效权限对话框不适用于这些登录。
我有一个使用传递身份验证的站点"Umbo4",并查看了站点根文件夹中用户的有效权限。
检查名称测试解析了名称"IIS AppPool Umbo4",但有效权限显示用户对该文件夹完全没有权限(未选中所有复选框)。
然后,我使用Explorer Security选项卡显式地从文件夹中排除了此用户。
这导致站点失败,出现HTTP 500.19错误,如预期的那样。然而,有效权限看起来与以前完全一样。