首页 > 解决方案 > 检查IUSR组是否对文件夹有写权限

问题描述

我想通过代码检查 IUSER 组是否对文件夹具有写权限。为了测试我手动向我的文件夹中的 IUSR 组授予了写入权限:

在此处输入图像描述

这是我编写的用于检查的代码:

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Collections.ObjectModel" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Security.Principal" %>
<%@ Import Namespace="System.Security.AccessControl" %>



<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {

        try
        {
            string FilePath = @"D:\\Shared";

            FileSystemSecurity security;
            if (File.Exists(FilePath))
            {
                security = File.GetAccessControl(FilePath);
            }
            else
            {
                security = Directory.GetAccessControl(Path.GetDirectoryName(FilePath));
            }


            foreach (AccessRule rule in security.GetAccessRules(true, true, typeof(NTAccount)))
            {
                Response.Write("<br/>");
                Response.Write(string.Format("Identity = {0}; Access = {1}",
                               rule.IdentityReference.Value, rule.AccessControlType));
            }


        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

    }



</script>

这是输出: 在此处输入图像描述

如您所见,IUSR 组不在该列表中。

我的问题是,我错过了什么阻止IUSR 小组进入该列表。

我是否需要添加一些特殊检查来检查 IUSR 权限?

标签: c#asp.net.net

解决方案


Server Fault上有一篇关于此的有用帖子。主要原因是在 IIS 7.5(以及可选的 IIS 7)下,所有工作人员都使用应用程序池标识运行:用户“IIS AppPool PoolName ”,这就是 IUSR 组不会出现在列表中的原因。

我建议检查 apppool 组而不是 IUSR。然后尝试获取特定用户,而不是组并检查读写权限,如果您通过此测试成功,您就可以了。

检查这篇文章以供参考。


推荐阅读