今天的妖事
tcsm | 21 三月, 2006 21:06
今天下班的时候重启了公司的服务器,重启好之后发现,公司的论坛不能用了,最要紧的就是我自己的论坛也在上面牙,不能为大众服务,我有多急牙
打开页面出现登陆画面,取消后,出现http错误 HTTP 401.3 - ACL 禁止访问资源
这个错误的原因是无法查看网页资源,上去看权限发现,网页的权限全都是对的,再运行一下,发现动态网页都不行了,一个静态的广播界面还可以看看,可能是运行的php的权限出了问题,马上进去看,发现iis的那个运行页面的用户没有权限对php的运行文件进行读和运行的操作,马上加权限,重启iis
结果 当然是ok咯
上面写的很简单 但是我实际操作过程中 用了2个小时,直到今天重启之前,iis还是一切正常的,我只是升级了一下,重启一下机器(44天没重启了)什么都没有改上去就这个样子了,好怪啊,在修改的过程中包括增加新帐户,修改磁盘的权限,都试过了,最后用了一招,大包揽,用一个admin帐户用来iis,然后慢慢把这个帐户权限降低,找到了这个原因,但是还是发现怪事这个admin帐户没有php的运行权限 网页也可以打开,现在想想可能是没有重启iis 的缘故
iis 为什么一定要重启呢?这个我也不知道只是我的经验,因为有时候iis 不重启,修改的效果就看不出来的
下面这个是我在网上找到的今天对我处理这个问题有很大启发的一篇文章 HTTP 401.3 - ACL 禁止访问资源 解决问题 | | |
您没有权限查看该网页 您提供的证书没有权限查看该目录或网页。
--------------------------------------------------------------------------------
请尝试下列操作:
单击刷新按钮,并使用其他证书重试。 如果您确信应该能够查看该目录或网页,请与 Web 站点管理员联系, HTTP 401.3 - ACL 禁止访问资源 Internet 信息服务
--------------------------------------------------------------------------------
| 技术信息(支持个人)
详细信息: Microsoft 支持
解决方法: 会弹出一个密码验证的对话框吧。如果该站点或者虚拟目录启用了集成 windows 验证(windows NT challenge/ response)的话,当匿名访问禁止或者ntfs设置guests用户无权访问该文件时 IIS 就会使用nt/2000的用户验证机制,从而弹出一个对话框。我们就利用这个设置上的隐患,你是不是知道了....
把ntshell.exe设置只有admin完全控制(其他也可以了,反正IUSR_computer无权执行就行了),cacls c:ntshell /p admin:f 。
然后从web上执行它,这样如果他设置了集成 windows 验证的话,会让你输入用户名、密码和域,输入后,这个程序就是admin身份运行了。然后去连接你就是admin而不是guests了。
问题:不过大家也看出问题来了吧,就是如果对方没有设置虚拟目录集成 windows 验证的话,就不会弹出密码验证对话框,而是直接出现“HTTP 401.3 - ACL 禁止访问资源”的错误。还有就是要有一个可以执行的虚拟目录(这个好办些,可能就是你最初下手并执行一些上传文件、查看信息的地方)
解决:可执行的虚拟目录不止一个,这个不行你可以试试别的,缺省安装有的可执行目录有scripts、msadc和iisadmpwd 。
如果还找不到就只有修改虚拟目录的设置(当然需要权限)使他允许集成 windows 验证,IIS安装目录(%windir%system32inetsrv)下的metabase.bin就是存放IIS配置的。
于是我们可以修改这个文件来启动虚拟目录使他允许集成windows验证,怎么改?看下面:
Metabase 本质上就是 IIS 的注册表,它包含每个实际可用的配置参数,包括那些与安全相关的参数,是控制IIS行为的分层数据库。可以使用MetaEdit(Windows 2000 Resource Kit带的,图形界面)来查看该库的结构。
但是MetaEdit不能在对方那运行,于是我们需要一个命令行的:mdutil.exe 这是在 NT4 Option Pack CD-ROM 中附带的 IIS Metabase 处理工具。 mdutil 是将 IIS 的所有配置数据转储到命令提示符下的便捷工具(就像reg.exe转储注册表),可以查询和修改。
mdutil的用法可以看它的帮助,说明得很清楚,举个例子:修改虚拟目录msadc,使它启用集成 windows NT 验证:
C:>mdutil enum w3svc/1/root/msadc ;看看他都有什么设置
AccessPerm : [IF] (DWORD) 0x207={ Read Write Execute Script } Authorization : [IF] (DWORD) 0x1={ Anonymous }
......
AccessPerm 是允许的访问,现在是完全访问。 Authorization 就是身份验证的方式, 1-就是匿名,2-明文,4-集成windows NT验证
我们就把它改为5 - 匿名和集成windows NT验证两种方式(这些参数在不同的工具里叫法不一样)
C:>mdutil set w3svc/1/root/cgi/Authorization 5 |