c# - 检查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 权限?
解决方案
Server Fault上有一篇关于此的有用帖子。主要原因是在 IIS 7.5(以及可选的 IIS 7)下,所有工作人员都使用应用程序池标识运行:用户“IIS AppPool PoolName ”,这就是 IUSR 组不会出现在列表中的原因。
我建议检查 apppool 组而不是 IUSR。然后尝试获取特定用户,而不是组并检查读写权限,如果您通过此测试成功,您就可以了。
检查这篇文章以供参考。
推荐阅读
- amazon-web-services - 为 EC2 Windows 机器收集事实 - 错误“ShellModule”对象没有属性“ECHO”
- asp.net-core - ASP.NET Core 3.1 - signalR 集成测试 - 带有身份验证的 webhost 固定装置
- java - Mapstruct:嵌套对象的自定义映射方法
- python - 如何打印分数线以上的分数和下一个分数线以下的分数?
- css - MaterialUI:为什么在 Select 组件上设置背景颜色会隐藏 InputLabel 文本,我该如何避免它发生?
- amazon-web-services - AWS:certbot-auto 不再支持您的系统
- mysql - 如何更改 MySQL 中的 TIMESTAMPDIFF 日期格式?
- terraform - 我该如何做尺寸块“动态”?
- javascript - (鼠标离开)时保持(点击)效果
- elasticsearch - Timelion:如何计算拆分组