我想通过代码检查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权限吗?
答案 0 :(得分:0)
Server Fault上有一篇与此有关的有用文章。主要原因是在IIS 7.5(以及可选的IIS 7)中,所有工作进程都使用应用程序池标识运行:用户“ IIS AppPool PoolName ”,这就是IUSR组不在列表中的原因。
我建议先检查apppool组,然后再检查IUSR。 然后尝试获取特定用户(而不是组),并检查读写权限,如果在此测试中成功,那就可以了。
也请检查此post以供参考。