IIS站点权限设置

//创建管理用户

public string CreateUser(string sys_username, string sys_passwd)
{
     try
     {
        DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
        DirectoryEntry NewUser = AD.Children.Add(sys_username, "user");
        NewUser.Invoke("SetPassword", new object[] { sys_passwd });
        NewUser.Invoke("Put", new object[] { "Description", "网站‘" + sys_username + "‘的独立用户" });
        NewUser.Invoke("Put", "UserFlags", 66049);
        NewUser.CommitChanges();
        DirectoryEntry grp;
        if (IISVersionMajor == "6")
        {
            try
            {
               grp = AD.Children.Find("IIS_WPG", "group");
               if (grp != null)
               {
                   grp.Invoke("Add", new object[] { NewUser.Path.ToString() });
               }
            }
           catch (Exception ex)
           {
               string[] str = new string[] { "net user " + sys_username + " /del" };
               Cmd(str);
               if (ex.Message.Contains("调用目标发生了异常"))
               {
                      MessageBox.Show("您的系统初始化配置不完整,\n\n请【重启系统】后再进行操作" + "\n\n通常这种情况会在系统安装或重装后第一次打开时发生;\n\n重启后,系统会自动配置完善。", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
               }
              else
               {
                      MessageBox.Show(ex.Message + "__IIS" + IISVersionMajor);
               }
               return "error";
           }
       }
      else
      {
         try
         {
              grp = AD.Children.Find("IIS_IUSRS", "group");
              if (grp != null)
              {
                   grp.Invoke("Add", new object[] { NewUser.Path.ToString() });
              }
          }
          catch (Exception ex)
          {
               string[] str = new string[] { "net user " + sys_username + " /del" };
               Cmd(str);
               if (ex.Message.Contains("调用的目标发生了异常") || ex.Message.Contains("exception occurred"))
               {
                     MessageBox.Show("您的系统初始化配置不完整,\n\n请【重启系统】后再进行操作" + "\n\n通常这种情况会在系统安装或重装后第一次打开时发生;\n\n重启后,系统会自动配置完善。", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
               }
               else
              {
                     MessageBox.Show(ex.Message + "__IIS" + IISVersionMajor);
              }
              return "error";
          }
    }

return null;
       }
       catch (Exception ex)
       {
           log("创建用户异常:"+ex.Message.ToString());
            return ex.Message;
        }
     }

//设置文件夹权限

public void SetDirectoryQX(string sitename, string sitePath)
    {
         var security = new DirectorySecurity();
         string path = sitePath;
         try
         {

// 设置文件夹独立用户权限
               security.AddAccessRule(new FileSystemAccessRule("Administrators", FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
               security.AddAccessRule(new FileSystemAccessRule(sitename, FileSystemRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
               security.SetAccessRuleProtection(true, false);//取消继承父级文件夹权限
               Directory.SetAccessControl(path, security);
          }
          catch (Exception ex)
         {
                 MessageBox.Show("站点文件夹管理用户设置失败:" + ex.Message);
         }
    }

//设置站点匿名用户

public void SetAnonymousUser(string sitename,string username,string userpwd)
     {
         //设置匿名用户
         try
         {
              using (Microsoft.Web.Administration.ServerManager serverManager = new Microsoft.Web.Administration.ServerManager())
              {
                     Microsoft.Web.Administration.Configuration config = serverManager.GetApplicationHostConfiguration();
                     Microsoft.Web.Administration.ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", sitename);
                     anonymousAuthenticationSection["enabled"] = true;
                     anonymousAuthenticationSection["userName"] = username;
                     anonymousAuthenticationSection["password"] = userpwd;
                     serverManager.CommitChanges();
              }
         }
         catch (Exception ex) { log("添加站点匿名用户异常:" + ex.Message.ToString()); }
      }

//设置站点物理路径凭据

public void ModifySitePJ(string sitename, string username, string userpwd)
     {
         DirectoryEntry rootEntry = GetSite(false, sitename);
         DirectoryEntry path = rootEntry.Children.Find("Root", "IISWebVirtualDir");
         try
         {
              path.Properties["UNCUserName"].Value = username; // Web服务器桥接文件服务器的UNC账户
              path.Properties["UNCPassword"].Value = userpwd;
              path.CommitChanges();
              path.Close();
           }
           catch (Exception ex) { log("设置站点物理路径凭据失败:" + ex.Message.ToString()); }
           finally { rootEntry.Dispose(); rootEntry.Close(); path.Dispose(); path.Close(); }
      }

private DirectoryEntry GetSite(bool isRoot, string siteName)
     {
         DirectoryEntry itemEntry = null;
         try
         {
             //存放到缓存当中
             DirectoryEntry directoryEntity = new DirectoryEntry("IIS://localhost/W3SVC");
             directoryEntity.UsePropertyCache = true;
             directoryEntity.RefreshCache();
            if (isRoot)
            {
                return directoryEntity;
            }
            if (string.IsNullOrEmpty(siteName))
            {
                return null;
            }
            //取指定名称的站点
            foreach (DirectoryEntry item in directoryEntity.Children)
            {
                //获取站点
                if ("IIsWebServer".Equals(item.SchemaClassName))
                {
                      if (item.Properties["ServerComment"].Value != null && siteName.ToLower().Equals(item.Properties["ServerComment"].Value.ToString().ToLower()))
                      {
                            itemEntry = item;
                            break;
                       }
                 }
              }
          }
          catch (Exception ex) { }
          return itemEntry;
     }

//应用程序池标识独立用户

public void ModappBS(string appPoolName, string username, string userpwd)
     {
         DirectoryEntry apppools = new DirectoryEntry("IIS://localhost/W3SVC/AppPools");
         try
         {
                //找到站点物理路径

foreach (DirectoryEntry entry in apppools.Children)
               {
                   if (entry.Name.Equals(appPoolName))
                   {
                         if (IISVersionMajor == "6")
                         {
                               //iis6
                               entry.Properties["AppPoolIdentityType"][0] = "3";
                               entry.Properties["WamUserName"][0] = username;
                               entry.Properties["WamUserPass"][0] = userpwd;
                          }
                          else
                          {
                               //IIS7+
                               entry.Properties["AppPoolIdentityType"].Value = Microsoft.Web.Administration.ProcessModelIdentityType.SpecificUser;
                               entry.Properties["WamUserName"].Value = username;
                               entry.Properties["WamUserPass"].Value = userpwd;
                          }
                 entry.CommitChanges();
                 entry.Close();
                }
            }
        }
        catch (Exception ex)
        {
              log("设置独立用户应用程序标识池异常:" + ex.Message.ToString());
         }
        finally { apppools.Dispose(); apppools.Close(); }
     }

时间: 2024-10-23 19:19:22

IIS站点权限设置的相关文章

多站点IIS用户安全权限设置图解教程

如果我们为每个站点都建立一个用户,并设置该用户只有访问本站点的权限,那么就能将访问权限控制在每个站点文件夹内,旁注问题也就解决了 一.这样配置的好处? 不知大家有没有听过旁注?我简单的解释一下吧:有个人想黑掉A站点,但找来找去都没发现可利用的漏洞,无意中他发现与A同服务器上还有个B站点,并且在B站点上找到了可利用的漏洞,于是他将木马从B站中上传至服务器,如果服务器权限配置不当,那么现在他就可以黑掉服务器上的所有站点了!如果我们为每个站点都建立一个用户,并设置该用户只有访问本站点的权限,那么就能将

IIS中的上传目录权限设置问题

虽然 Apache 的名声可能比 IIS 好,但我相信用 IIS 来做 Web 服务器的人一定也不少.说实话,我觉得 IIS 还是不错的,尤其是 Windows 2003 的 IIS 6(马上 Longhorn Server 的 IIS 7 也就要来了,相信会更好),性能和稳定性都相当不错.但是我发现许多用 IIS 的人不太会设置 Web 服务器的权限,因此,出现漏洞被人黑掉也就不足为奇了.但我们不应该把这归咎于 IIS 的不安全.如果对站点的每个目录都配以正确的权限,出现漏洞被人黑掉的机会还是

C#下编程完成IIS网络App的权限设置

转自:http://linwx1978.blog.163.com/blog/static/1504106920101104834271/ 以前的日志中转了不少文章,最近听说转文不是好习惯,决定普世一把,改贴链接了.大家有兴趣的话可以顺着链接进去看看:http://geekswithblogs.net/mnf/articles/78888.aspx用途是,对于IIS下的网络应用程序,通过编程改变权限设置.IIS Manager当然挺方便的,但是有些时候(特别是在做部署文件的时候)是不能使用图形界面

IIS7.5 用 IIS AppPool\应用程序池名 做账号 将各站点权限分开

IIS6里面,要把服务器上的各站点权限分开,要建一堆帐号,再一个一个站点绑定.IIS7.5就不用了. 选择 "应用程序用户" 选择 "应用程序用户",启动应用程序池时动态创建 "应用程序池标识" 帐户,创建是的"虚拟"帐号(在用户管理里看不到该用户). 给网站文件夹添加权限 因为是虚拟账号搜索不到的,只能手动输入. IIS AppPool\应用程序池名 配置身份验证方式 IIS7.5中神秘的ApplicationPoolIde

iis 7.5设置站点首页为index.aspx

最近公司改首页,改为index.aspx需要变更iis站点的默认首页. 例如我要修改anna.test.com站点的默认首页,iis 7.5操作方式如下:(注意:如下方式增加的Index.aspx文件只对anna.test.com站点生效且条目类型为"本地") 如果想要使"index.aspx文件对所有的iis站点都生效且 "条目类型"为"继承"那么操作方式如下:

超强IIS站点工具一键设置PHP,支持多个PHP同时运行

PHPWAMP8.8.8.8IN支持三大主流Web服务器:iis.apache.nginx NGINX站点管理.IIS站点管理.Apache站点管理均支持php多版本同时运行,无限自定义mysql.php版本 PHPWAMP同时支持32和64,如果你系统没安装VC或者dll损坏缺失一般是无法运行php环境的,但是PHPWAMP确可以运行,其他集成环境安装的时候一般都需要安装VC运行库,phpwamp是不需要的,dll丢失也能运行. PHPWAMP最新版的iis站点管理可支持多个php同时运行,站

IIS站点/虚拟目录中访问共享目录(UNC)以及建立后的应用程序的信任级别问题

UNC是 Universal Naming Convention 的简称,也叫通用命名规范.通用命名约定.网络(范指局域网)上资源的完整位置名称.格式为 \\servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称.目录或文件的 UNC 名称可以包括共享名称下的目录路径,如:\\servername\sharename\directory\filename亦可作为 \\serverip\sharename 格式,其中 serveri

Windows2003中IIS的安全设置技巧

在Windows Server 2003中对于IIS的安全设置具有十分重要的意义,所以掌握IIS安全设置的六大技巧是一个网管员必备的基本技能.下面就是对IIS的安全设置的六大技巧. 技巧1.安装系统补丁 安装好操作系统之后,最好能在托管之前就完成补丁的安装,配置好网络后,如果是2000则确定安装上了SP4,如果是Windows Server 2003 系统,则最好安装上SP1,然后点击开始→Windows Update,安装所有的关键更新. 技巧2.设置端口保护和防火墙 Windows Serv

服务器资源共享--IIS站点/虚拟目录中访问共享目录(UNC)

UNC是 Universal Naming Convention 的简称,也叫通用命名规范.通用命名约定. 网络(范指局域网)上资源的完整位置名称. 格式为 \\servername\sharename ,其中 servername 是服务器名,sharename 是共享资源的名称. 目录或文件的 UNC 名称可以包括共享名称下的目录路径,如:\\servername\sharename\directory\filename 亦可作为 \\serverip\sharename 格式,其中 ser