【问题标题】:How to check what user is trying to access a file?如何检查哪个用户正在尝试访问文件?
【发布时间】:2011-05-17 10:30:31
【问题描述】:

我有一个 ASP.NET 网站,它使用文件流从远程服务器 2003 框上的 UNC 共享中读取 PDF 图像。

我试图在网站上加载文件(它只是在网站上嵌入了一个 PDF 查看器)但是当我调试代码时,当我尝试访问文件时它会引发安全异常。

访问 _________ 路径被拒绝。

所以我授予 ASPNET 用户访问 UNC 路径目录的权限。 我还授予在 IIS 中的站点本身中为匿名访问指定的用户的访问权限。那没用。

但是,当我授予“所有人”访问权限并且文件通过时。

所以,我需要知道谁在尝试访问该文件。假设是 ASPNET 用户或 IIS 中的匿名用户设置。两者都没有获得访问权限。

我尝试在 Server 2003 机器上设置文件审核,但当我收到拒绝访问异常时,它没有在安全事件日志中记录失败。

【问题讨论】:

  • 我意识到我遇到的问题。
  • 由于某种原因,尝试访问文件的是网络服务而不是 ASPNET 或 IUSR。我授予对该目录的 NETWORK SERVICE 的读取访问权限,一切都很好。再次感谢。

标签: asp.net filesystems file-permissions windows-server-2003


【解决方案1】:

我意识到我遇到的问题。 出于某种原因,尝试访问文件的是 NETWORK SERVICE,而不是 ASPNET 或 IUSR。 我授予对该目录的 NETWORK SERVICE 的读取访问权限,一切都很好。 再次感谢。

【讨论】:

    【解决方案2】:

    System.Security.Principal.WindowsIdentity.GetCurrent().Name 将为您获取当前用户名,您可以将此用户输出到屏幕或日志文件以检查其身份。

    ASPNET 用户是运行 ASP.NET 的 Windows 帐户,这可能不是要访问该文件的用户。您可能需要显式授予匿名用户访问网络的权限(可能是 IUSR_MACHINENAME)。

    编辑:

    由于您已在 IIS 中启用匿名访问,因此您可以通过修改 web.config 以使用 Forms 身份验证来强制您的应用使用匿名访问。搜索 '

    <authentication mode="Forms" /> 
    

    <authentication mode="Forms">
      <forms loginUrl="~/Login.aspx" timeout="2880"/>
    </authentication>
    

    【讨论】:

    • 啊,好的,所以我记录下来,发现只是 NT 用户从他们的工作站访问该站点。访问文件时如何强制匿名访问。我尝试过程序化的 Windows 模拟,但似乎无法正常工作。例如,在 IIS 中,站点可以使用给定用户“IUSR_KTSRV1”的匿名访问。如何强制此文件流式处理进程在该用户下运行?
    • 修改您的 web.config 以使用表单身份验证
    • 其实已经设置好了...:
    • 尝试在 IIS 的身份验证方法对话框中取消选中集成 Windows 身份验证。如果这不起作用,恐怕我的想法已经用完了:(
    • 哦,另外,请确保您正在配置网络应用程序而不是网站,因为网站上的设置将被网络应用程序上的设置覆盖
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2020-04-27
    • 1970-01-01
    相关资源
    最近更新 更多