请问在IIS6里如何设置CGI

请问在IIS6里如何设置CGI,第1张

配置 CGI 应用程序 (IIS 6.0)

IIS 6.0 支持通用网关接口 (CGI) 应用程序。本主题提供了有关在 Web 服务器上安装和配置 CGI 应用程序以及设置 CGI 脚本超时值的管理信息。

要点:

为了最大限度地减少服务器的攻击面,默认情况下,Windows Server 2003 上不安装 IIS 6.0。首次安装 IIS 6.0 时,IIS 6.0 将被锁定 -- 这表明只启用处理静态网页的请求,并且只安装万维网发布服务(WWW 服务)。IIS 上的所有功能都将关闭,包括 ASP、ASP.NET、CGI 脚本、Microsoft 的 FrontPage® 2002 Server Extensions 以及 WebDAV 发布功能。如果未启用这些功能,那么 IIS 将返回 404 错误。您可以通过 IIS 管理器中的 启用 Web 服务扩展节点启用这些功能。有关如何解决 404 错误及其他问题的详细信息,请参阅 IIS 6.0 中的疑难解答。

CGI 程序在 Web 服务器接收到包含 CGI 程序名和程序所需参数的 URL 时执行。如果将 CGI 程序编译为可执行 (.exe) 文件,则必须提供包含程序执行权限的目录,以便用户可以运行程序。如果 CGI 程序以脚本形式(例如 Perl 脚本)编写,则既可为目录提供执行权限,也可为其提供脚本权限。要使用脚本权限,必须将脚本解释程序标记为脚本引擎。

注意:

默认情况下,备源IIS_WPG 组不具备启动历滚和 CGI 进程的权利。如果创建了新帐户并将其添加到 IIS_WPG 组以运行工作进程标识,还必须授予此帐户两种启动 CGI 进程的用户权限。这些用户权利是“调整进程的内存配额”和“替换进程级令牌”。有关如何修改用户权利的详细信息,请参阅 Windows Server 2003 帮助和支持中心中的“编辑本地安全设置”或“编辑组策略对象上的安全设置”。

如果要开发新 CGI 应用程序,Microsoft 提供了几种选择。要加快执行速度,请考虑开发 Internet 服务器 API (ISAPI) 扩展。为便于开发,请考虑开发 ASP.NET 应用程序。

本节包含下列信息:

• 在 IIS 6.0 中安装 CGI 应用程序:介绍如何在 Web 服务器上安装 CGI 应用程序。

• 配置并发 CGI 请求的最大数:介绍如何配置最大的并发 CGI 请求数。

• 配置 CGI 应用程序超时:介绍如何配置 CGI 应用程序的超时值。

在 IIS 6.0 中安装 CGI 应用程序 (IIS 6.0)

要点:

只有本地计算机上 Administrators 组的成员才能执行以下过程。作为安全性最佳 *** 作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入 runas /User:Administrative_AccountName"mmc %systemroot%/system32/inetsrv/iis.msc"。

过程

安装和配置 CGI 应用程序

1.

为 CGI 程序创建目录。为了增加安全,请将 CGI 程序与内容文件分开。没有必要将目录命名为 Cgi-bin,虽然您可以这么做。详细信息,请参阅使用虚拟目录。

2.

如果 CGI 程序是脚本,那么请获取并安装相应的脚本解释程序。例如,要运行 Perl 脚本,要有 Perl 解释程序。Windows *** 作系统不提供 Perl、SED 或 AWK 的版本。因此,您必须从第三方开发商处获取这些解释程序。

3.

如果 CGI 程序为 .exe 文件,应为目录提供执行权限。如果 CGI 程序是脚本,则既可为目录提供执肢盯行权限,也可为其提供脚本权限。详细信息,请参阅Access Control in IIS 6.0。

如果选择为目录提供脚本权限,则必须在该目录的属性中将脚本解释程序标记为脚本引擎。只有标记为脚本引擎的解释程序才能够在该目录中执行。可执行文件(.dll 和 .exe 文件)无法直接执行,即浏览器请求无法通过在 URL 中包含程序名来启动 Web 服务器中的可执行文件。通过启用“仅脚本”权限并选中“脚本引擎”复选框,可以将内容文件(如 .htm 或 .gif 文件)作为 CGI 脚本安全地放在同一个目录中。内容文件可以在浏览器中显示,同时可以执行脚本,但是不能运行未授权的程序且不在浏览器中显示脚本命令。

4.

对于 CGI 脚本,应在脚本的文件扩展名和脚本解释程序之间创建应用程序映射。

IIS 可将文件扩展名映射到解释程序。例如,如果使用 Perl 脚本(该脚本存储在以 .pl 为扩展名的文件中),请将 .pl 扩展名映射到运行 Perl 脚本的程序。请将 .bat 和 .cmd 文件映射到命令解释程序 (Cmd.exe)。详细信息,请参阅在 IIS 6.0 中设置应用程序映射。

5.

设置 NTFS 权限。如果使用 NTFS 访问权限,请验证所有需要运行程序的用户都具有对该目录的执行权限。如果网站接受匿名用户,请确保匿名用户(IUSR_computername 帐户)具有执行权限。

IIS 支持大多数的标准服务器环境变量。

为更加安全起见,Web 服务器不将命令解释程序的特殊字符传递给映射的 CGI 应用程序。在默认情况下,以下字符不能包含在调用 CGI 应用程序的 URL 中:

| ( , % <>配置并发 CGI 请求的最大数 (IIS 6.0)为了防止性能下降并减少 Web 服务器上可能存在的安全隐患,可以配置同时运行的并发 CGI 请求的最大数。 要点:只有本地计算机上的 Administrators 组成员,才能执行以下过程。作为安全性的最佳 *** 作,请使用不属于 Administrators 组的帐户登录计算机,然后使用 runas 命令以管理员身份运行 IIS 管理器。在命令提示符下,键入 runas /User:Administrative_AccountName"mmc %systemroot%/system32/inetsrv/iis.msc"。 要点:注册表编辑器使用不当可能导致需要重新安装 *** 作系统的严重问题。因为注册表编辑器会跳过标准安全保护(禁止您输入存在冲突或者有可能降低性能或损坏系统的设置),所以在更改注册表时一定要格外小心。Microsoft 无法保证解决由于错误使用注册表编辑器而引起的问题。有关如何编辑注册表的信息,请参阅注册表编辑器帮助中的“更改项和值”主题。过程配置并发 CGI 请求的最大数1. 从“开始”菜单,单击“运行”。 2. 在“打开”框中,键入 Regedit.exe,然后单击“确定”。 3. 定位至注册表中的以下位置:HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/W3SVC/Parameters。 4. 从“编辑”菜单中,指向“添加”,单击“DWORD 值”,然后添加以下注册表值:名称:MaxConcurrentCgisExecuting类型:REG_DWORD数据:如果该注册表项不存在,则 IIS 使用默认值 256。根据需要,可以将该值设置在 0 和 4294967295(无穷大)之间。使用如果使用的值较小,则表示在 Web 服务器上并发运行的 CGI 请求数较少,但是,使用较大的值可能会降低性能。 5. 退出注册表编辑器。 配置 CGI 应用程序超时 (IIS 6.0)设置 CGI 应用程序的超时值时,需要手动设置 CGITimeout 配置数据库属性。 有关该配置数据库属性的信息,请参阅 CGITimeout 配置数据库属性。可以在全局级别、单个站点级别和站点元素级别上设置 CGITimout 属性。为此,可以灵活地对整个 CGITimeout 级别进行配置,然后为各个站点和站点元素自定义设置。如果要在运行 IIS 时编辑该设置,请确保启用“配置数据库运行时编辑”设置。详细信息,请参阅在 IIS 6.0 中启用运行时编辑功能。

------------------------------------------------------------

微软相关文档

Configuring CGI Applications (IIS 6.0)

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/bc0c4729-e892-4871-b8f3-fcbf489f2f09.mspx?mfr=true

在IIS管理器中镇型兄找租陆到exe所在的目录

属性--〉目录 页--〉应用程序选项

执行许可--〉选择脚本和可执行御袭程序.

一、NCSA Server

二、CERN httpd

三、Netscape Server

四、IIS

一、设置NCSA Server或Apache Server以使用CGI

NCSA Server的CGI1.1只允许用下列两种方式激活用户服务器上的脚本:ScriptAlias指令和AddType指令。这两条指令都放在srm.conf文件中,该文件一般在用户的服务器根目录的conf目录中。

ScriptAlias指令告诉服务器该目录中的所有文件都是脚本或者是服务器作为CGI文件执行的程序。该方法能保证用户的CGI程序在特定位置。AddType指令允许用户告诉服务器任何具有指定前缀的文件都是可执行文件。如果希望将CGI程序放在服务器中任何地方的话该指令即很有用。

1、ScriptAlias指令

ScriptAlias指令位于Server Resource Map文件(srm.conf)中,程序内容例如下:

DocumentRoot /usr/local/etc/httpd/htdocs

UserDir public_html

REdirect /HTTPD/ http://www.server.com/

Alias /icons/ /usr/local/etc/httpd/icons/

ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/

DirectoryIndex index.html index.shtml index.cgi

IndexOptions FancyIndexing

AddIcon /icons/movie.gif .mpg .qt

AddIcon /icons/menu.gif

AddIcon /icons/blank.xbm

DefaultIcon /icons/unknown.xbm

IndexIgnore */.??* *~ *# */HEADER* */纤备README*

DefaultType text/备中plain

AccessFileName .htaccess

srm.conf文件允许用户根毁滚毁据自己系统需要设置HTTP Server。它允许用户告诉服务器用户的主页在什么地方,目录中的哪个文档是索引文档,如果不存在索引文件的话将装载什么图片文件以显示文件的类型,等等。srm.conf及其他配置文件的说明可查阅http://www.nease.net/tppmsgs/msgs0.htm#34。

2、AddType指令

AddType指令是执行CGI程序的另一种方式,它是在srm.conf文件中加入下列行:

AddType application/x-httpd-cgi.cgi

在自己的系统中设置了该指令后,任何在服务器控制范围内的扩展名为.cgi的文件都会被作为CGI程序执行而不是作为文本文件阅读。这意味着用户可以在他的个人目录中创建脚本并能执行它。但是如果脚本写得不正确,就可能导致对文件系统、口令文件等的不同类型伤害。

AddType指令可以扩展为允许扩展名不是.cgi的程序同样被执行。大家经常会看见以.pl(Perl脚本的常见扩展名)或.sh(Bourne Shell脚本的常见扩展名)结尾的脚本。如果想支持其他扩展名的程序,只需简单地将它们加入AddType指令中,如下所示:

AddType application/x-httpd-cgi .cgi .pl .sh

3、访问配置文件

为了支持CGI程序的执行必须多加入一条指令。在Server Root/conf目录中是一个名为access.conf的配置文件。该文件允许用户设置ServerRoot下的哪个目录能够访问的全局限制,甚至允许用户控制哪些站点可以访问这些目录。下面是access.conf文件的一个例子:

<Directory /usr/local/etc/httpd/cgi-bin>

Options INdexes Exec CGI

</Directory>

<Directory /usr/local/etc/httpd/htdocs>

Options Indexes FollowSymLinks

AllowOverride All

<Limit GET>

order allow,deny

allow from all

</Limit>

</Directory>

Exec CGI表示允许执行该目录中的CGI脚本。Options Indexes FollowSymLinks表示允许索引(显示某文件夹中的内容)并能够遵循符号链(这就意味着在ServerRoot之外的文件也能被访问)。AllowOverride指令允许用户决定哪个指令可以被目录的.htaccess文件覆盖。中设置了对该目录中允许使用GET方式的限制。在HTTPD中,部分指令的选项是GET、POST和PUT(目前PUT尚未实现)。order allow,deny一行告诉服务器先找allow行再找deny行。下一行则是告诉服务器允许所有站点访问该目录中的页面。

二、设置CERN HTTP服务器以使用CGI

CERN HTTP服务器(也称为W3C HTTP服务器)仅需要编辑/etc/httpd.conf文件即可支持在服务器内使用CGI程序。这个指令类似于NCSA Server使用的指令:

Exec /url-prefix/* /physical-path/*

其中/url-prefix/定义了客户能看见的路径,而/physical-path/则是包含脚本的目录的实际路径。

三、设置Netscape以使用CGI

首先要启动管理服务器。以root身份登录,并运行/ServerRoot/admserv/start-admin,缺省端口为81。然后启动浏览器连接。在Netscape Admin页面中,单击Select URL Mapping,从d出窗口中选择Map a URL to a Local Directory。然后单击Select CGI and Server Parsed HTML,从d出窗口中选择Activate CGI as a File Type。现在即可单击Browse Files并选择欲激活的目录。选择完目录后,单击I'd Like to Activate CGI as a File Type。在ServerRoot中即会看到Conf目录中的obj.conf配置文件中已加入了下列行:

NameTrans form="/cgi-bin" fn="pfx2dir" dir="/usr/local/web/cgi-bin" name="cgi"

name=cgi调用了下列行:

<Object name="cgi">

ObjectType fn="force-type" type="magnus-internal/cgi"

Service fn="send-cgi"

</Object>

它告诉服务器此为一个CGI目录,其中的所有文件都将用Netscape内部提供的CGI执行。 四、设置IIS以使用CGI

在IIS上运行CGI有十个简单的步骤:

1)安装Internet Service Manager。

2)从列表中选择WWW Servive。

3)选择Properties/Service Properties命令。

4)单击Directories标签。

5)单击Add按钮。

6)指定自己的cgi-bin目录的完整路径(例如,c:\webfiles\scripts)。

7)使用/scripts作为目录别名。

8)选中Execute检查框。

9)单击OK保存修改。

10)将自己的CGI程序放在c:\webfiles\scripts中并在HTML中作为/scripts/someprogram.exe引用。

在使用IIS时经常出现的问题与设置IIS没太大关系而是和基本的 *** 作系统功能有很大关系。IIS与底层的 *** 作系统联系很紧密,即使已经设置为服务,Web服务器基本上是作为应用程序来运行的,通常只有一个用户安全环境,Web服务器能访问到的与Web服务器下的CGI程序能访问到的内容几乎没什么不同(这类似于UNIX环境,在UNIX环境下,很重要的一点就是不要将Web服务器作为root来运行)。IIS的工作很像一个扩展的文件系统。每个用户有自己的权限。CGI程序在执行该程序的访问者的用户安全环境中运行。对于未验证的页面,这就是缺省提供的“无名的”用户,而对验证的页面,安全环境就像用户位于服务器控制台前手工运行该程序一样。使大部分初学者犯错误的正是这种额外的安全层次。

IIS管理员最常抱怨的一个错误信息是"The Application misbehaved by not returning a complete set of headers"。错误消息接下来列出服务器接收到的头标--一般是个空的清单。这种讨厌的不明确的错误有一个直接的原因,不过这个原因与CGI脚本的错误 *** 作没有一点关系。如果因为某种原因某个CGI脚本不能运行,它就不能产生任何头标。IIS将错误的责任推在脚本身上,实际上却几乎总是服务器管理员的错。CGI脚本需要访问系统DLLs、系统的临时目录以及它们使用的任何其他资源。如果该脚本是按静态约束进行编译的,那么除非所有组件均可用,否则 *** 作系统不会装载该程序的。如果系统管理员锁紧了安全级使得脚本不能装载它的DLLs,那么脚本就不能运行。当脚本不能运行时,它也就不产生任何头标了(或者其他的输入),从而导致出现本段开头引用的错误消息。

如果管理员是在一个安全目录中运行脚本的(安全目录即是一个需要单独用户验证才能访问的目录),那么每个可能访问系统的用户都必须有下列安全权限。如果是无名地运行脚本,那么只有无名用户需要这些权限:

.对%systemroot%system(一般为c:\winnt\system)的读权限

.对%systemroot%system32(一般为c:\winnt\system32)的读权限

.对临时目录(一般为c:\temp)的修改权限

.对Web根的读权限

.对CGI目录的修改权限

如果在有了这些访问权限之后仍然出问题,可以进一步临时给特殊的用户帐号Everyone赋予这些目录的修改权限。如果问题解决了,就可以认定是少了一个步骤(或一个用户)。纠正问题然后慢慢回收权限直至服务器重新安全。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12321503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存