动易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一类的木马,传上去了也不能运行。哪怕是代码藏到图片里,也不能运行。

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

               

动易SiteFactory目录权限详解》上有5条评论

  1. 小李刀刀 文章作者

    问天何必 :

    有点乱七八糟。 读不通,

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

  2. Pingback引用通告: anothr user

    1. 小李刀刀 文章作者

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

评论已关闭。