【问题标题】:CreateSymbolicLink works in Visual Studio, from IIS throws error 1314 (A required privilege is not held by the client)CreateSymbolicLink 在 Visual Studio 中工作,从 IIS 抛出错误 1314(客户端不持有所需的权限)
【发布时间】:2019-12-18 19:51:30
【问题描述】:

我已经在 Stack 和 Net 上搜索了一个半星期,试图找出这个问题,但没有成功。

我有一个网站部署到 Windows Server 2012 上的 IIS 8。在我的网站上,我编写了一个在不同服务器上创建目录结构的方法。在该结构中是文件夹(作品)、文件快捷方式(作品)以及指向第三台服务器上文件夹的一个符号链接 (ISSUE)。

在通过 Visual Studio 运行时,此符号链接的创建没有错误。发布到 IIS 时,不会创建符号链接。通过 Marshall.GetLastWin32Error() 我发现错误代码 1314 被抛出,A required privilege is notheld by the client.

到目前为止我做过的事情:

  1. 将应用程序池身份设置为作为我创建的 Active Directory 帐户运行。
  2. 将帐户添加到所有三台服务器上的管理员组。
  3. 在本地策略下,将该帐户添加到所有三台服务器上的“创建符号链接”策略中。
  4. 在本地策略下,确保在所有三台服务器上禁用“用户帐户控制:以管理员批准模式运行所有管理员”。
  5. 为所有 3 台服务器上的“创建符号链接”策略添加了 IUSR。

我假设问题出在 IIS 中,因为它通过 VS 运行得非常好。

编辑

我调用的方法是

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);

CreateSymbolicLink("{FolderName}", @"//{servername}/{path}/", 0x1)

编辑 2 我从头开始使用权限和安全设置并尝试 Jokies 的步骤。希望明天有更新

【问题讨论】:

  • 你试过用绝对路径运行吗?有时 IIS 没有设置正确的当前目录,因此您正在创建您不认为的路径。

标签: c# windows iis


【解决方案1】:

创建符号链接的权限需要授予 AppPool 用户本身或 IIS_IUSRS 组。还需要确保重新启动托管 IIS 服务的进程(如果其他服务也托管在同一进程中,仅重新启动 IIS 可能还不够。因此,重新启动服务器可能是最简单的)。

完成上述操作后,应该可以从 IIS 应用程序创建符号链接(至少,它在我的服务器上工作)。

【讨论】:

  • AppPool 用户已添加到这些权限,但我不确定服务器是否已重新启动。我今晚会这样做,如果可行,我会更新!
【解决方案2】:

您是否通过使用 mklink 命令行运行 Process cmd.exe 创建了符号链接?

  1. 我只是创建了一个新用户并将其添加到域管理员组。
  2. 然后我用该用户登录并检查是否可以在此帐户(工作)下执行 mklink。
  3. 我只是回到原来的 IIS 服务器并将其设置为我的应用程序池标识。 最后我可以看到输出告诉我它已经正确创建了符号链接。

我没有更改经过身份验证的用户 (IUSR) 的任何权限。

进程监视器将帮助您检查有关系统或应用程序 I/O 的访问被拒绝错误。也许您的环境需要额外的权限。

https://docs.microsoft.com/en-us/sysinternals/downloads/procmon

【讨论】:

  • 我添加了一个编辑来显示我用来创建链接的方法。我还尝试在所有三台服务器上使用 ProcMon 并在路径中过滤 kernel32.dll,但从未发现任何值得注意的地方。我将使用几个不同的过滤器来查看是否找到任何东西!
【解决方案3】:

在尝试诊断此问题数周后,问题出在 IIS 中。

我进入应用程序池,点击“设置应用程序池默认值...”,“加载用户配置文件”设置为 false。将此设置为 true 允许 IIS 创建符号链接。

奇怪的是在 ProcMon 中我看到我创建的域帐户登录并在我进行此更改之前创建文件夹和快捷方式,它只是没有创建符号链接。我不完全确定这个变化在后台做了什么,但不管它起作用了!

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 2012-01-03
    相关资源
    最近更新 更多