不同服务器之间的IIS应用程序池权限

4
我在设置一个IIS web应用程序的权限方面遇到了困难,该应用程序读写位于另一台服务器上的文件。目前我收到的错误信息是“拒绝访问 '\Server\Path\to\ReadWrite\'”。
以下是相关信息:
  • 服务器A运行着安装有Windows Server 2008 R2的IIS 6.1,并托管了web应用程序。
  • 服务器B同样是2008 R2,其中包含需要为服务器A分配读写权限的共享文件夹(使用UNC路径)。
  • 两台服务器都在同一个域内。
通常情况下,我会指定IIS APPPOOL\AppPoolName来授予权限,但从服务器B的上下文来看,它似乎无法找到该项。我也尝试过“Everyone”,但似乎也无效(即使这不是我想要使用的)。
3个回答

4

以下是一种选项:

  • 对于位于Server A上的IIS网站,使用域帐户运行AppPool
  • 对于位于Server B上的UNC共享,允许该域帐户具有读写权限

以下是另一种可能有用的选项:

  • 对于位于Server A上的IIS网站,将文件写入服务器上的特定路径
  • 设置DFS-R以将数据从Server A复制到Server B

你最初的选择,将域帐户绑定到AppPool中,对我很有效。 - ToxicLogix

1
IIS 7.5及更高版本会创建一个虚拟应用程序池用户帐户,该帐户在的保护下运行。这将是该应用程序池特有的,因此不会与另一台服务器上的帐户相同。
您需要将相同的特定域用户帐户设置为对共享文件夹和应用程序池具有权限。为此任务创建一个新的域帐户。
然后,您可以通过转到相关应用程序池的高级设置,选择标识并选择使用自定义帐户来将此用户设置为应用程序池帐户。在此处输入相关的域帐户名称和密码。
您还需要授予该域用户访问IIS和访问该文件夹的权限。因此,该用户可能需要在IIS_IUSRS组以及USERS中。
还要在共享文件夹上为相同的用户授予权限。
请注意,由于出站TCP端口限制,并发SMB / UNC连接数量存在限制。您可以通过更改某些注册表值来增加限制。如果开始出现500错误,请进行关于最大TCP端口的研究。

0

我在同一域中的2个Windows 2012服务器上遇到了相同的问题。服务器A上的Web服务想要通过UNC路径(如\\SERVER_B\C$\Users\Public\MyData)访问服务器B上的数据。

首先,我已经授予服务器A对服务器B上“MyData”数据的完全访问权限。当我尝试使用ApplicationPoolIdentity运行Web服务时,我无法获得访问权限。即使是使用其他内置帐户(如NetworkServiceLocalSystem)运行Web服务也无法获得访问权限。

然后我尝试了一个自定义帐户并授予了完全访问权限,但即使这样也没有成功。最终,我通过访问Server B上的共享MyData$(对应于C:\Users\Public\MyData)来获得访问权限。

看来使用C$存在一些限制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接