动易SiteFactory目录权限详解
分享到朋友社区

官方说明中,指出在2003版本上的目录权限是给Network Service帐户分配写入权限。这是一个理想化的状态,如果要满足分配该帐户写入权限即可正常使用的话,那么要满足以下条件:

  1. 你的站点是采用了默认的帐号设置,即站点程序池的运行标识帐户是Network Service(网络服务);
  2. 你给根目录分配了写入权限,而不是按照安装向导页所提示的那几个目录设置;
  3. 你从来没有修改过NTFS的默认权限设置,对所有目录和文件都会有“Creator Owner”这个帐户的特殊权限。

满足以上条件的话,你给动易所在的目录分配了Network Service的写入权限后,基本上能够正常安装和使用动易(还会遇到一些问题,但是基本上可以了)。

下面解释一下:由于程序池运行标识帐户是“网络服务”,因此你的动易站点在读写磁盘文件、创建目录、创建文件的时候都是以Network Service帐户身份运行的,于是乎,创建和写入权限就不是问题了,再加上Creator Owner帐户的特殊权限(完全控制),也就对站点自己创建的文件和目录拥有了完全控制权限,因此可以正常运行。可能遇到的问题:由于只拥有写入权限(写入权限只包括创建目录和文件、写入属性、写入扩展属性),在修改站点配置,或者是在后台修改广告目录、JS目录、上传目录的时候,需要对已有的目录,而且创建者、所有者一般是Administrators组或者是Administrator,于是出现“对IAA目录的访问被拒绝”这一类的权限不足的提示。

现在考虑第二种情况,站长拥有一定的服务器安全配置知识,或者是虚拟主机、合租主机,WEB站点有下列任意一种情况:

  1. 没有用网络帐户来运行程序池而是用IWAM_机器名用户;
  2. 没有用Windows的任意一个默认帐户,而是自己创建了一个用户来运行程序池,比如我自己创建了IWAM_OOPHOME来运行程序池,IUSR_OOPHOME来运行IIS。
  3. 在创建站点之后,删除了站点根目录的Creator Owner权限,只保留了Administrators和System的完全控制权限和IWAM_机器名和IUSR_机器名的读写权限。

有上述任意一种情况,将导致安装不能成功,站点也不能正常运行。

动易SF在运行中,到底需要哪些帐户,需要哪些权限呢?下面我结合自己的测试,分析一下:

  1. 创建临时文件、静态页面、新增标签……,也就是“创建新目录和新文件”,这要求给程序池标识用户写入权限,具体的目录有config,IAA,JS,UploadFiles,Skin,Temp,Template。实际上还有一个目录,那就是系统根目录(因为要在根目录下创建保存配置的临时文件、创建首页静态文件、创建新增根节点的目录。这是需要“写入”权限的。
  2. 修改原有文件、删除临时文件……,也就是“删除目录和文件”,这要求给程序池标识用户权限高级设置里的”删除子目录和文件,删除”两项权限,实际上我们在基本的权限分配界面指定“修改”而不是“写入”权限就完成了这项权限的分配。
  3. 修改IAA、JS、UploadFiles的名称。虽然后台提示说要先修改目录,然后再到后台修改,但是经过试验发现,必须是直接在后台修改并保存,系统会自动给这几个目录更名。这要求程序池标识用户对根目录的修改权限。

既然权限分析清楚了,那我们就明白了,动易始终是对根目录有“修改”权限需求的。因此作为一劳永逸的办法,直接给网站根目录加上程序池标识用户的“修改”权限,就OK了。但是这样很多朋友会不满意。那怎么办呢?可以试试按下面的方法:

  1. 给站点根目录加上程序池标识帐户的“修改”权限,默认是继承到所有目录的。
  2. 打开根目录,对根目录下的图片目录、上传文件目录、纯读取运行的目录等取消“从父级目录继承权限”,提示的时候选择“删除”,这样这些目录就完全没有权限了;
  3. 重新给刚才删除了权限的目录给它们分配Administrators和System的完全控制权限;
  4. 给静态文件目录(例如上传、你各个节点的生成目录等)加上程序池标识帐户的“写入”权限(最好到高级权限里设置,只给“写入”权限,最多再加上“读取”权限,不需要“运行”和“列目录”的权限;
  5. 给非写入的程序文件夹,例如Rss、User等目录,增加IIS匿名用户和程序池标识帐户的“读取和运行”权限。

这样我们的站点就给了动易运行所需要的全部最大权限,同时也把不需要权限的目录统统去除了权限,比如上传目录,只有程序池帐户的写入权限和IIS匿名帐户的读取权限,就算被上传了木马到里面,除非是JavaScript木马,否则是不会被运行的。目前还没听说过JavaScript能对服务器端造成攻击和破坏的。至于ASPX、ASP、VBS一类的木马,传上去了也不能运行。哪怕是代码藏到图片里,也不能运行。

这样就最大程度地保护了站点的安全,又避免了权限分配不够造成的使用问题。

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名小李刀刀(包含链接)。如您有任何疑问或者授权方面的协商,请给我发送邮件

2008年6月26日 | 归档于 所谓技术
  1. 2012年4月16日 15:01 | #1

    问天何必 :

    有点乱七八糟。 读不通,

    要阅读这篇文章,需要理解Windows系统的ACL(访问控制列表)和IIS 7运行机制。否则无法理解ASP.NET程序运行时对站点下各种目录的权限要求。虚拟主机用户也不会涉及这部分。

  2. frank324
    2009年3月17日 17:36 | #2

    遇到这种情况怎么办?
    http://social.microsoft.com/Forums/zh-CN/netframeworkzhchs/thread/c53bd6a4-988b-40a5-99e7-199f854e3b80/

    这个是遇到的问题,权限设置基本OK。除了
    C:\WINDOWS\IIS Temporary Compressed Files\* 这个目录creat owner没有完全控制权限外(因为添加不了)。
    有什么好的解决办法?

    谢谢

    • 2009年3月25日 21:07 | #3

      我的机器上查看C:\WINDOWS\IIS Temporary Compressed Files 目录的安全设置里,Creat Owner本来就具有完全控制权啊。

  3. 问天何必
    2012年4月7日 15:06 | #4

    有点乱七八糟。 读不通,

显示 隐藏 1 trackbacks

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>