IIS7~8.5 权限研究
IIS7及以上版本相对于IIS6改变较大,完全不适应于以往的管理方法,需要我们重新学习。通过对微软文档的研究,我觉得IIS7就像是用“管理酒店”的方式来管理网站。下面就用“管理酒店”的例子来简单描述一下过程:
酒店就是把一幢楼开辟出很多房间,供旅客使用。为了管理好房间,更好地为旅客服务,酒店会配备服务员,服务员的日常工作就是打扫、整理房间。服务员一般都会有门卡,可以自由出入房间。旅客到酒店登记后,也会给门卡。旅客使用门卡打开房间门,便可使用房间里的一切物品。IIS7的“应用程序池”就是“服务员”,网站用户就是“旅客”,网站的文件夹就是房间。关于权限问题会有下面几种情况:
1、服务员有默认的门卡,旅客使用和服务员一样的门卡(默认应用程序池帐号IIS APPPOOL\{app pool name});
2、服务员有默认的门卡,旅客也有默认门卡(应用程序池使用默认帐号,网站用户使用默认IUSR账号);
3、服务员和旅客都使用专用门卡(应用程序池和网站用户都使用专用帐号);
针对这三种情况,我们要设置IIS7的访问权限。
第一种情况,都使用“应用程序池”默认帐号
1.添加网站,选择物理路径之后,点“连接为”设定为:应用程序用户
2.给“网站文件夹”添加该网站的“应用程序池”名称帐号(隐藏的,属于“IIS_IUSRS”组)如:iis apppool\你网站的应用程序池名称
回到IIS,点击“测试设置”结果中的授权“无法验证对路径xxxxx的访问”,不用管它
3.点“身份验证”,编辑“匿名身份验证”,选择“应用程序池标识”
4.网站文件夹 -> 属性 -> 安全 中,只有SYSTEM、Administrators、应用程序池名称 三个帐号
给需要写入权限的文件夹或文件,单独设置“应用程序池帐号”的写权限
第二种情况,“应用程序池”使用默认帐号,网站用户也使用默认帐号
与第一种情况不同的设置为:
1.IIS“身份验证”中的“匿名身份验证”默认为“特定用户”,帐户名默认为IUSR。
2.网站文件夹安全属性中同时添加“IUSR帐号”和“应用程序池帐号”并赋予读权限。对某些文件或文件夹需要写入的,再单独给写权限(写入权限由“匿名身份验证”中选定的帐户决定)。
第三种情况,都使用用户专用帐号
1.在 计算机管理 -> 本地用户和组 -> 用户 -> 创建新用户,设置好用户名和密码,勾选“用户不能更改密码和密码永不过期”,并将该用户加入到IIS_IUSRS组中。
2.将用户的帐号绑定到网站文件夹安全属性中,赋予读写权限
3.IIS中网站“连接为”选择“特定用户”,填写用户名和密码。
4.IIS中“身份验证”中的“匿名身份验证”选择“特定用户”,填写用户名和密码。
方案推荐:微软推荐用户使用第一种方案,使用应用程序池默认帐号,将用户限定到自己的网站里,不需要再新建帐号了,网站文件权限设置也方便。
下面是网站文件权限测试的结果:
1.NTFS标准读取权限 默认勾选“列出文件夹/读取数据”、“读取属性”、“读取扩展属性”、“读取权限(特殊)”四个权限
未勾选 “列出文件夹/读取数据”权限 系统报:500错误
未勾选 “读取权限”、“读取属性”系统报:401.3错误
未勾选 “读取扩展属性”系统无反应
2.NTFS标准写入权限(文件)
未勾选 “创建文件/写入数据” php提示:failed to open stream
未勾选 “ 创建文件夹/附加数据”、“写入属性”、“写入扩展属性” 系统无反应
3.NTFS标准写入权限(文件夹)
未勾选 “创建文件夹/附加数据” php 提示: Permission denied
未勾选 “ 创建文件/写入数据”、“写入属性”、“写入扩展属性” 系统无反应
4.特殊NTFS删除权限
勾选 “删除子文件夹及文件”和“删除”权限任一个都可删除文件
都未勾选 php提示:Permission denied
“网站根目录”常规权限设置界面
进入到高级权限设置界面:
“可读写删除的文件或文件夹”的常规权限界面
进入到高级权限界面则是这样
我们在默认的权限上又设置新权限,则会出现“不是继承的”同名权限项目
权限方案推荐:
1.网站根目录,只给“标准读取权限”;
2.网站upload上传文件夹给标准写入权限、某些需要程序写入的文件也给写权限;
3.IIS中对用户上传的文件夹取消脚本执行权限(文件夹->处理程序映射->编辑功能权限->取消脚本)。
原创文章如转载,请注明:转载自无花果的原创博客 [ http://wuhuaguo.lifeskillcn.com ]