C:\Windows\System32\inetserv 上的权限问题

C:\Windows\System32\inetserv 上的权限问题

我们拥有装有 IIS 8 的 Windows 2012 服务器。

此服务器上运行着一个 ASP.NET 应用程序,它通过 REST API 向另一个应用程序进行身份验证。该另一个应用程序会返回一个名为 login.xml 的 .XML 文件,默认情况下,ASP.NET 应用程序会尝试将该文件放在本地 C:\Windows\System32\inetsrv 文件夹中。ASP.NET 应用程序不会请求此 .xml 文件,而且似乎没有办法将此文件转储到其他地方。

由于“IIS AppPool\DefaultAppPool”用户(即 ASP.NET 应用程序运行所处的应用程序池的标识)没有此 C:\Windows\System32\inetserv 文件夹的权限,因此无法在该文件夹中写入 .XML 文件,并且浏览器中会显示错误。

浏览器中显示的错误部分内容如下:

“拒绝访问路径‘C:\windows\system32\inetserv\login.xml’。

我怀疑通常情况下,向这个“IIS AppPool\DefaultAppPool”用户授予“C:\windows\system32\inetserv\”目录的权限在安全方面并不是一个好主意,但在我们的具体情况下,这样做是可以的。

之前我在 Google 上搜索了解决浏览器中显示的错误的方法,似乎很多人都能够成功授予文件夹所需的权限。但是,在我看到的有关该主题的所有帖子中,使用的 IIS 版本似乎都是 7 或更早的版本。

作为本地管理员,我尝试将用户所需的权限添加到“C:\windows\system32\inetserv\”,但均未成功,还尝试取消选中文件夹的只读属性,但均未成功,因为即使管理员用户也没有更改文件夹权限的权限,因此请求被拒绝。仔细查看文件夹的权限,所有用户都具有“读取和执行”、“列出文件夹内容”和“读取”权限,但管理员没有额外的权限。

我在互联网上没有找到任何具体说明微软已锁定 Windows Server 2012 或 IIS 8,无法在此文件夹上授予额外权限...任何读过这篇文章的人都可以解释一下为什么我无法授予这些权限吗?

另外,还有一个相关问题 - 该服务器位于 AWS,由 Amazon 提供的 AMI 构建。Amazon 的 AMI 是否可能以某种方式进行了特殊强化,以拒绝此类权限更改,从而尽可能保证 AWS 托管的服务器的安全?

谢谢,迈克

答案1

system32\inetsrvServer 2012的默认权限为:

NT SERVICE\TrustedInstaller:(F)
NT SERVICE\TrustedInstaller:(CI)(IO)(F)
NT AUTHORITY\SYSTEM:(M)
NT AUTHORITY\SYSTEM:(OI)(CI)(IO)(F)
BUILTIN\Administrators:(M)
BUILTIN\Administrators:(OI)(CI)(IO)(F)
BUILTIN\Users:(RX)
BUILTIN\Users:(OI)(CI)(IO)(GR,GE)
CREATOR OWNER:(OI)(CI)(IO)(F)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(RX)
APPLICATION PACKAGE AUTHORITY\ALL APPLICATION PACKAGES:(OI)(CI)(IO)(GR,GE)

管理员具有修改权限,这意味着 AWS 默认值不同或其他人已经更改了权限。

您遇到的主要问题是您的 ASP.NET 应用程序正在尝试写入inetsrc,这是不行的。请联系编写该应用程序的人,请他们修复此问题。

如果你确实想更改 inetsrv 的权限,你首先需要将所有权更改为管理员

takeown.exe /F .\inetsrv /R /A

2012 年的默认所有者是TrustedInstaller

然后您可以为AppPool身份添加修改权限。

正如您正确指出的那样,这会削弱安全性并可能危及整个服务器,因此请先尝试修复应用程序。

相关内容