27

我正在使用 PHP 5.4 在 Windows Server 2008 R2 上运行 IIS 7。我的一个 PHP 脚本正在尝试使用 UNC 路径访问受保护网络共享上的文件。如何将 IIS 服务帐户更改为有权访问共享的帐户?这在 Apache HTTP 服务器上很容易做到(您只需更改它),但不清楚如何使用 IIS。我能做些什么?

更新:

我能够使用我网站的“基本设置”中的“连接为”选项让事情正常工作,然后指定一个可以访问网络共享的帐户。看来的问题与这个问题有关:

https://serverfault.com/questions/366234/iis-identities-application-pool-vs-connect-as-in-basic-settings

4

3 回答 3

46

对于在 Windows Server 2008 R2 上运行的 IIS 7 ... 在 中IIS Manager,选择Application Pool您的网站正在运行的位置。

单击“高级设置”。将有一个条目Identity(在该Process Model部分下)。单击它,为您有权访问共享的帐户提供凭据。

更新

如果您使用的是 Active Directory 域帐户,则应确保Identity在运行的应用程序池下正确提供了该帐户。例如,MYDOMAIN\myAccount

进行此更改后,您需要执行以下操作:

  1. 停止网站。
  2. 回收您的应用程序池。
  3. 启动网站。

更新二

从对此答案的评论讨论中,@HydroPowerDeveloper 能够使用 WebSite -> Basic Settings -> "Connect As" 并在此处设置凭据,使 PHP 脚本能够通过 UNC 路径访问网络共享。

过去,我一直使用设置Identityvia的方法Application Pool,这允许我的代码通过 UNC 路径访问网络共享。

但是,我部署的所有站点/应用程序IIS都是基于 .NET 的 WCF 或 ASPX 站点。

我推测(但对此不是 100% 确定,需要研究/测试来确认)在 .NET 代码中Identity指定的Application Pool内容是通过执行 .NET 代码使用的,而 PHP 脚本使用“Connect As”。

于 2013-01-30T18:26:30.037 回答
6

通常,应用程序池设置使用尽可能少的权限。

http://msdn.microsoft.com/en-us/library/ff647402.aspx

最简单的方法是允许访问当前的 IIS 帐户。

在资源管理器中,导航到共享目录。

右键单击-> 属性-> 安全

如果在列表中看不到预期的 IIS 用户(组或用户名),请根据需要编辑并添加用户。

我使用“网络服务”-> 检查名称。

详细说明在那个网站上。

这样,系统仍然是受限的,我们只允许访问特定目录,我们不需要创建任何新用户,我们不需要回收应用程序池,我们不需要执行任何操作漂亮的模拟代码。

于 2014-06-23T02:36:31.317 回答
1

复活一个老问题...

我刚刚设置了一个使用 Perl 访问 UNC 共享的 Win 2016 服务器。我将应用程序池设置为我验证对该共享具有正确权限的帐户。然后我将我的网站设置为“连接为...”(在“基本设置”下)同一用户。我仍然无法访问工作。

挠头之后,我意识到我的“虚拟目录”cgi-bin 是在原来的“通过”帐户下运行的。然后,我将虚拟目录设置为“连接为...”与站点和应用程序池相同的帐户,宾果游戏,一切正常。

因此,请记住更新任何虚拟目录以及站点和应用程序池...

于 2018-05-15T15:53:12.333 回答