2005年3月16日

1.rar 在linux的安装
 
 安装:
  root身份解压后 
  cd rar
  cp rar /usr/local/bin
  cp unrar /usr/local/bin
  cp rarfiles.lst /etc
  cp default.sfx /usr/local/lib


2.
如何使用adduser自动建立的用户目录在我制定的目录里
http://www.chinaunix.net 作者:wangfeixue  发表于:2004-01-09 15:26:51

如何使用adduser自动建立的用户目录在我制定的目录里

不使用 -d参数指定

发表回复】【查看CU论坛原帖】【添加到收藏夹】【关闭

 網中人 回复于:2004-01-09 15:38:16
可否請問一下為何不用 -d 呢?


 sakulagi 回复于:2004-01-09 16:00:11
假设你指定的目录是/new_home
那么useradd -D -b /new_home
然后你再useradd -m user1
你可以看到user1的home目录是不是在/new_home/user1


 q1208c 回复于:2004-01-09 16:02:43
rh9:

vi /etc/default/useradd 试试。


 wangfeixue 回复于:2004-01-09 16:04:55
[quote:dea32c713e="q1208c"]rh9:

vi /etc/default/useradd 试试。[/quote:dea32c713e]

多谢多谢 :em02:  :em02:  :em02:


 q1208c 回复于:2004-01-09 16:05:55
[quote:908e1d872f="wangfeixue"]

多谢多谢 :em02:  :em02:  :em02:[/quote:908e1d872f]

8 客气。
解压
unrar e *.rar
posted @ 2005-03-16 10:07 hzy 阅读(438) | 评论 (0)编辑 收藏

2005年3月8日

、本节内容简介

  本章主要介绍JBOSS(免费的EJB服务器),以及教会大家如何安装Jboss,建立你第一个EJB和客户端。关于什么是EJB,以及如何开发等。这些关于EJB方面有很多书籍进行描述,在此不再阐述。描述信息是运行在windows平台,当然你可以应用在其他支持的平台(如:Linux等)。
  2、关于JBOSS

  Jboss支持EJB 1.1和EJB 2.0的规范,它是一个为管理EJB的容器和服务器。类似于Sun’s J2SDK Enterprise Edition(J2EE),但是Jboss核心服务仅是提供EJB服务器。JBOSS不包括serverlers/JSP page 的WEB容器,当然可以和Tomcat或Jetty绑定使用。JBOSS需要比较小的内存和硬盘空间。可以在64M内存以及几兆空间上很好的运行。而Sun’s J2EE需要最少内存为128M,以及31M硬盘空间。JBOSS启动速度要比J2EE快10倍。而且它能内嵌SQL 数据库服务器进行持久性BEAN处理,当启动时会自动启动。(J2EE装载分离CloudScape SQL Server)。

  其中一个非常好的特性JBOSS能够“热”部署,“热”部署的意思就是在部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下,如果BEAN已经被LOAD,JBOSS卸载它,然后LOAD一个新版本BEAN。如果你需要更多的JBOSS特性,你可以查看关于JBOSS论坛的网站。如果需要支持,可以付费联系JBossGroup LLC。

  本章一步一步帮助你开始用jboss进行分布式开发:如何建立一个简单的BEAN,以及如何在jboss服务器上部署和在测试。

  3、必备条件

  JBOSS是一个纯JAVA编写的,需要一个JAVA系统和JDK1.3兼容。为了能便宜和运行所有的例子,你需要有Ant 1.4或以上版本。在下节将会介绍如何获得和安装。当然你要有开发EJB基础。
  4、安装ANT

  我们在很多书上以及网页可能都看见过这个名字,到底它用来作什么的呢?Ant 是一个基于java的build工具。现在已经有了许多的build工具,例如make、gnumake、nmake、jam等,而且这些工具都非常优秀。Ant是一个跨平台的Build工具。之所以Ant能跨平台,是因为Ant不再需要你编写shell命令,Ant的配置文件是基于XML的任务树,能让你运行各种各样的任务,任务的运行是由实现了特定任务接口的对象来完成的。
有两个版本Binary和Source 可以下载最新版本1.5.2。

Binary版: http://ant.apache.org/old-releases/v1.5.2/binaries/
Source版:http://ant.apache.org/old-releases/v1.5.2/source/

  关于这两个版本的不同之处可以参考http://ant.apache.org/ 。如果下载不了可以向我索取QQ:182244794, Email: amaryllis@163.net 。

  在下载完Ant后,你解压文件,全部文件会放在一个apache-ant-1.5.2路径下。Ant文档会释放在docs/manual目录下,你可以打开网页docs/manual/index.html来浏览关于ant文档的内容。 我用Windows系统释放在c:/apache-ant-1.5.2路径下。

  1) 设置ANT_HOME环境变量,指向你的ANT目录。

  2) 需要设置JAVA_HOME环境变量,指向你的JDK目录。

  3) 将%ANT_HOME%\bin加入到PATH环境变量中。

  4) 当你不带任何参数运行ant时,Ant会在当前目录找一个名叫build.xml的文件。如果没找到,会有以下提示:

Buildfile : build.xml does not exist!Build failed

  为了测试ANT安装是否成功,我建立了一个新的build.xml文件,放在当前的目录下%ANT_HOME%\samples。Build.xml内容如下:

<!-- Simple Ant build script to test an Ant installation --><br />
<project name="TestInstall" default="run" basedir="."><br />
<target name="init">  <br />
<available file="ASimpleHelloObject.java" property="ASimpleHelloObject"/> <br />
</target> <br />
<target name="ASimpleHelloObject" unless="ASimpleHelloObject" depends="init"> <br />
<echo file="ASimpleHelloObject.java"><br />
public class ASimpleHelloObject<br />
{<br />
public static void main(String[] args) { <br />
System.out.println("ASimpleHelloObject.main was called"); }<br />
}<br />
</echo> <br />
<echo message="Wrote ASimpleHelloObject.java" /> <br />
</target> <br />
<target name="compile" depends="ASimpleHelloObject"> <br />
<javac destdir="." srcdir="." debug="on" classpath="."> <br />
<include name="ASimpleHelloObject.java"/> <br />
</javac> <br />
</target> <br />
<target name="run" depends="compile"> <br />
<java classname="ASimpleHelloObject" classpath="." /> <br />
<echo message="Ant appears to be successfully installed" /> <br />
</target><br />
</project><br />

  运行ant 显示结果如下:

c:\apache-ant-1.5.2\samples> antBuildfile: build.xml
Init :
AsimpleHelloObject:
[echo] Wrote AsimpleHelloObject.java
compile:
[javac] Compiling 1 source file to c:\apache-ant-1.5.2\samples
run :
[java] AsimpleHelloObject.main was called[echo] Ant appears to be successfully installed
BUILDE SUCCESSFUL
Total time :11 seconds.

  到此你安装的ANT以及环境已经设置成功。如果有以下警告
Warning: JAVA_HOME environment variable is not set. If build fails because sun.* classes could not be found you will need to set the JAVA_HOME environment variable to the installation directory of java.

  表示你需要设置JAVA_HOME环境,指定你安装的JDK 目录。如何运用Ant 中的各种命令,我会在以后编写《ANT文档》介绍。
  5、安装JBOSS

  1) 在安装和运行JBoss 之前,你必须检查是否安装了JDK,需要在PATH环境中,设置JDK的目录。

  2)、 下载JBoss 服务器。JBoss 是一个压缩文件,你可以下载最新版本。为了能支持Web Server,我用的是Windows平台,所以下载了jboss3.0.6-tomcat4.1.18。你可以到http://prdownloads.sourceforge.net/jboss/ 中直接下载。如果你使用的是Unix/Lunix平台也可以从这个网址下载相应的JBoss 服务器。

  3)、安装

  (1) Lunix/Unix下安装

  a、 你下载了对于Unix/Lunix版本的JBoss 服务器l 用JDK 的JAR工具来解压文件到一个临时目录。

  b、 设置JBOSS_DIST指向JBoss 解压后最顶级目录。

  c、 然后到此目录下

cd JBOSS_DIST/bin
sh run.shl

  运行完后显示信息如下:

bash-2.04$ /bin/sh run.sh
JBOSS_CLASSPATH=:run.jar:../lib/crimson.jar
jboss.home = /tmp/JBoss-2.2.2
Using JAAS LoginConfig: file:/tmp/JBoss-2.2.2/conf/default/auth.conf
Using configuration "default"
[Info] Java version: 1.3.1,Sun Microsystems Inc.
[Info] Java VM: Java HotSpot(TM) Server VM 1.3.1-b24,Sun Microsystems Inc.
[Info] System: Linux 2.2.16-22,i386
[Shutdown] Shutdown hook added
[Service Control] Registered with server
[Service Control] Initializing 24 MBeans
...
[Service Control] Started 24 services
[Default] JBoss 2.2.2 Started in 0m:7s

  (2) Windows下安装

  a、 下载jboss3.0.6-tomcat4.1.18.zip, 然后用winzip解压到一个目录,我解压在c:\jboss3.0.6-tomcat4.1.18目录

  b、 解压后基本上不需要配置,运用bin目录下的run.bat命令。

  c、 运行run.bat命令,请看后台有没有什么异常抛出。

  d、 运行成功请访问http://localhost:8083将会出现空白页。访问http://localhost:8080将会出现Tomcat的欢迎页面,如果出现Apache Tomcat/4.1.12 - HTTP Status 500 - No Context configured to process this request的错误,这是正常的,因为你还没有发布.ear或.war应用。当然jboss-3.2.ORC3_tomcat-4.1.18.zip不会出现这样的问题,因为在目录server\default\deploy\中自带了web测试文件webtest.ear 访问http://localhost:8082你可以看到Jboss起动的服务。你可以运行http://localhost:8080/jmx-console就会出现相关页面。

  (3) Window NT 和2000补充

  对于NT和Win2k系统如果你要安装NT或Win2k服务的话,可以把jboss加在系统服务中,避免你每次需要到jboss目录下运行run.bat命令,只是当系统启动时,自动启动jboss服务器。

  a、 首先你需要下载javaservice.exe文件。l 编辑一个批处理文件,自己命名文件名,存入和JavaService.exe相同的目录。我命名为Jboss_Tomcat_Service.bat此文件的内容@echo offecho --------
echo Usage: %0 jdk_home tomcat_home (classic/hotspot/server)echo NOTE: You MAY NOT use spaces in the path names. If you know howecho to fix this, please tell me.echo JDK 1.4 does not come with hotpot server by default, you mustecho install this seperately if you wish to use it.echo Example: %0 ..\jdk ..\jboss30 hotspot
echo --------
if "%1" == "uninstall" goto uninstall
if "%1" == "-uninstall" goto uninstall
if "%1" == "" goto usage
if "%2" == "" goto usage
if "%3" == "" goto usage
if "%1" == "-help" goto usage
if "%1" == "-?" goto usage
if "%1" == "/?" goto usage
:install
JavaService.exe -install JBoss306 %1\jre\bin\%3\jvm.dll -Djava.class.path=%1\lib\tools.jar;%2\bin\run.jar -start org.jboss.Main -stop org.jboss.Main -method systemExit -out %2\bin\out.txt -current %2\bin goto eof
:uninstall
JavaService.exe -uninstall JBoss306
goto eof
:usage
echo -------- To Install JBoss 3.0.6 do
echo Usage: %0 jdk_home jboss_home (classic/hotspot/server)
echo NOTE: You MAY NOT use spaces in the path names. If you know how echo to fix this, please tell me.
echo JDK 1.4 does not come with hotpot server by default, you must echo install this seperately if you wish to use it.
echo Example: %0 ..\jdk ..\jboss30 hotspot
echo --------
echo -------- To Uninstall JBoss 3.0.6 do
echo Usage: %0 uninstall echo --------
goto eof
:eof

  e、 运行以下命令

Jboss_Tomcat_Service C:\j2sdk1.4.0_02 C:\jboss-3.0.6_tomcat-4.1.18 server
其中C:\j2sdk1.4.0_02是java安装的目录 C:\jboss-3.0.6_tomcat-4.1.18是Jboss安装的目录,server是不变的参数

  f、将会看到安装成功的命令,你到win2k或NT的Service中看我可以看Jboss306的服务,你可以正常的起动它。然后再查看各种网页(同windows安装相同)如果成功,到此恭喜你,你安装了JBoss服务器。

  (4)问题

  如果在在安装了服务,网页显示不正确。你需要多试几次,首先运行
Jboss_Tomcat_Service uninstall

  然后再运行

Jboss_Tomcat_Service C:\j2sdk1.4.0_02 C:\jboss-3.0.6_tomcat-4.1.18 server。
posted @ 2005-03-08 11:51 hzy 阅读(982) | 评论 (0)编辑 收藏

2005年2月24日

Apache服务器的安全性及实现

作者:谷和启  来源:yesky  加入时间:2004-2-6  阅读次数:
阅读选项: 文字 背景 字号 字型  自动滚屏[左键停止]


【摘要】作为网管人员最担心Web服务器遭到攻击,一旦遭到攻击,网站的所有信息可能面目全非,直到整个Web系统全面瘫痪。因此,选择安全性能好的Web服务器软件尤其重要。作为Internet 上最流行的Web服务器软件,Apache的安全性经受了时间和市场的双重检验。取得了惊人的成功。了解Apache Server的特性,并进行合理的配置将是每一个站点管理维护或开发人员必须关注的问题。

  一、Apache 服务器的功能
  
  Apache Serve的前身是NCSA的httpd,曾经在1995年成为最为流行的万维网的服务器。因为强大的功能和灵活的设置及平台移植性,Apache Server取得了广泛的信赖。Apache Server的主要功能有:

  1、支持最新的HTTP1.1协议(RFC2616)。
  2、极强的可配置和可扩展性,充分利用第三方模快的功能。
  3、提供全部的源代码和不受限制的使用许可(License)。
  4、广泛应用于Windows 2000/NT/9x、Netware 5.x,OS/2 和UNIX家族极其他操作系统,所支持的平台多达17余种。
  5、强大的功能,涵盖了用户的需求,包括:认证中的DBM数据库支持;错误和问题的可定制响应的目录导向功能;不受限的灵活的URL别名机制和重定向功能;虚拟主机(多宿主主机)支持多个域主页共存一台主机;超强的日志文件功能;利用站点的分析;拓展于维护等等。

  正因为这些强大的优势,使Apache Server与其他的Web服务器相比,充分展示了高效、稳定及功能丰富的特点。Apache Server 已用于超过600万个Internet站点。

  二、Apache 服务器的安全特性

  作为最流行的Web服务器,Apache Server提供了较好的安全特性,使其能够应对可能的安全威胁和信息泄漏。

1、采用选择性访问控制和强制性访问控制的安全策略

  从Apache 或Web的角度来讲,选择性访问控制DAC(Discretionary Access Control)仍是基于用户名和密码的,强制性访问控制MAC(Mandatory Access Control)则是依据发出请求的客户端的IP地址或所在的域号来进行界定的。对于DAC方式,如输入错误,那么用户还有机会更正,从新输入正确的的密码;如果用户通过不了MAC关卡,那么用户将被禁止做进一步的操作,除非服务器作出安全策略调整,否则用户的任何努力都将无济于事。

  2、Apache 的安全模块

  Apache 的一个优势便是其灵活的模块结构,其设计思想也是围绕模块(Modules)概念而展开的。安全模块是Apache Server中的极其重要的组成部分。这些安全模块负责提供Apache Server的访问控制和认证、授权等一系列至关重要的安全服务。

  mod_access模块能够根据访问者的IP地址(或域名,主机名等)来控制对Apache服务器的访问,称之为基于主机的访问控制。

  mod_auth模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和mod_auth_dbm模块则分别将用户信息(如名称、组属和口令等)存于Berkeley-DB及DBM型的小型数据库中,便于管理及提高应用效率。

  mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证,但它相应的需要客户端的支持。

  mod_auth_anon模块的功能和mod_auth的功能类似,只是它允许匿名登录,将用户输入的E-mail地址作为口令。

  SSL(Secure Socket Lager),被Apache所支持的安全套接字层协议,提供Internet上安全交易服务,如电子商务中的一项安全措施。通过对通讯字节流的加密来防止敏感信息的泄漏。但是,Apache的这种支持是建立在对Apache的API扩展来实现的,相当于一个外部模块,通过与第三方程序的结合提供安全的网上交易支持。

三、Apache服务器的安全配置

  在前面的内容中提到过,Apache具有灵活的设置。所有Apache的安全特性都要经过周密的设计与规划,进行认真地配置才能够实现。Apache服务器的安全配置包括很多层面,有运行环境、认证与授权设置及建立安全的电子交易链接等。

  1、Apache的安装配置和运行

  (1)以Nobody用户运行一般情况下,Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Apache Server进程以最可能低的权限用户来运行。通过修改httpd.conf文件中的下列选项,以Nobody用户运行Apache 达到相对安全的目的。

  User nobody
  Group# -1

  (2) ServerRoot目录的权限

  为了确保所有的配置是适当的和安全的,需要严格控制Apache 主目录的访问权限,使非超级用户不能修改该目录中的内容。Apache 的主目录对应于Apache Server配置文件httpd.conf的Server Root控制项中,应为:

  Server Root /usr/local/apache

  (3)SSI的配置

  在配置文件access.conf 或httpd.conf中的确Options指令处加入IncludesNOEXEC选项,用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。

  <Directory /home/*/public_html>
  Options Includes Noexec
  </Directory>

  (4)阻止用户修改系统设置

  在Apache 服务器的配置文件中进行以下的设置,阻止用户建立、修改 .htaccess文件,防止用户超越能定义的系统安全特性。

  <Directory />
  AllowOveride None
  Options None
  Allow from all
  </Directory>

  然后再分别对特定的目录进行适当的配置。

  (5)Apache 服务器的确省访问特性

  Apache 的默认设置只能保障一定程度的安全,如果服务器能够通过正常的映射规则找到文件,那么客户端便会获取该文件,如http://local host/~ root/ 将允许用户访问整个文件系统。在服务器文件中加入如下内容:

  <Directory />
  order deny,ellow
  Deny from all
  </Directory>

  将禁止对文件系统的缺省访问。

  (6)CGI脚本的安全考虑

  CGI脚本是一系列可以通过Web服务器来运行的程序。为了保证系统的安全性,应确保CGI的作者是可信的。对CGI而言,最好将其限制在一个特定的目录下,如cgi-bin之下,便于管理;另外应该保证CGI目录下的文件是不可写的,避免一些欺骗性的程序驻留或混迹其中;如果能够给用户提供一个安全性良好的CGI程序的模块作为参考,也许会减少许多不必要的麻烦和安全隐患;除去CGI目录下的所有非业务应用的脚本,以防异常的信息泄漏。

  以上这些常用的举措可以给Apache Server 一个基本的安全运行环境,显然在具体实施上还要做进一步的细化分解,制定出符合实际应用的安全配置方案。

四、Apache Server基于主机的访问控制

  Apache Server默认情况下的安全配置是拒绝一切访问。假定Apache Server内容存放在/usr/local/apache/share 目录下,下面的指令将实现这种设置:

  <Directory /usr/local/apache/share>
  Deny from all
  AllowOverride None
  </Directory>

  则禁止在任一目录下改变认证和访问控制方法。

  同样,可以用特有的命令Deny、Allow指定某些用户可以访问,哪些用户不能访问,提供一定的灵活性。当Deny、Allow一起用时,用命令Order决定Deny和Allow合用的顺序。

  1、拒绝某类地址的用户对服务器的访问权(Deny)

  如:Deny from all
  Deny from test.cnn.com
  Deny from 204.168.190.13
  Deny from 10.10.10.0/255.255.0.0

  2、允许某类地址的用户对服务器的访问权(Allow)

  如:Allow from all
  Allow from test.cnn.com
  Allow from 204.168.190.13
  Allow from 10.10.10.0/255.255.0.0
  Deny和Allow指令后可以输入多个变量。

  3、实例:

  Order Allow, Deny
  Allow from all
  Deny from www.***.com

  则,想让所有的人访问Apache服务器,但不希望来自www.***.com的任何访问。

  Order Deny, Allow
  Deny from all
  Allow from test.cnn.com

  则,不想让所有人访问,但希望给test.cnn.com网站的来访。

  有关访问控制的高级设置请阅读UNIX系统管理书籍。

  五、Apache Sever的用户认证与授权

  概括的讲,用户认证就是验证用户的身份的真实性,如用户帐号是否在数据库中,及用户帐号所对应的密码是否正确;用户授权表示检验有效用户是否被许可访问特定的资源。在Apache中,几乎所有的安全模块实际上兼顾这两个方面。从安全的角度来看,用户的认证和授权相当于选择性访问控制。

  建立用户的认证授权需要三个步骤:

  (1)建立用户库

  用户名和口令列表需要存在于文件(mod_auth模块)或数据库(mod_auth_dbm模块)中。基于安全的原因,该文件不能存放在文挡的根目录下。如,存放在/usr/local/etc/httpd下的users文件,其格式与UNIX口令文件格式相似,但口令是以加密的形式存放的。应用程序htpasswd可以用来添加或更改程序:

  htpasswd –c /usr/local/etc/httpd/users martin

  -c表明添加新用户,martin为新添加的用户名,在程序执行过程中,两次输入口令回答。用户名和口令添加到users文件中。产生的用户文件有如下的形式:

  martin:WrU808BHQai36
  jane:iABCQFQs40E8M
  art:FadHN3W753sSU

  第一域是用户名,第二个域是用户密码。

(2)配置服务器的保护域

  为了使Apache服务器能够利用用户文件中的用户名和口令信息,需要设置保护域(Realm)。一个域实际上是站点的一部分(如一个目录、文档等)或整个站点只供部分用户访问。在相关目录下的.htaccess文件或httpd.conf(acces.conf)中的<Directory>段中,由AuthName来指定被保护层的域。在.htaccess文件中对用户文件有效用户的授权访问及指定域保护有如下指定:

  AuthName “restricted stuff”
  Authtype Basic
  AuthUserFile /usr/local/etc/httpd/users
  Require valid-user

  其中,AuthName指出了保护域的域名(Realm Name)。valid-user参数意味着user文件中的所有用户都是可用的。一旦用户输入了一个有效的用户/口令时,同一个域内的其他资源都可以利用同样的用户/口令来进行访问,同样可以使两个不同的区域共用同样的用户/口令。

  (3)告诉服务器哪些用户拥有资源的访问权限

  如果想将一资源的访问权限授予一组客户,可以将他们的名字都列在Require之后。最好的办法是利用组(group)文件。组的操作和标准的UNIX的组的概念类似,任一个用户可以属于一个和数个组。这样就可以在配置文件中利用Require对组赋予某些权限。如:

  Require group staff
  Require group staff admin
  Require user adminuser

  指定了一个组、几个组或一个用户的访问权限。

  需要指出的是,当需要建立大批用户帐号时,那么Apache服务器利用用户文件数据库将会极大地降低效率。这种情况下,最好采用数据库格式的帐号文件,譬如 DBM数据库格式的文件。还可以根据需要利用db格式(mod_auth_db)的数据文件,或者直接利用数据库,如:mSQL(mod_auth_msql)或DBI兼容的数据库(mod_auth_dbi)。

  六、在Apache中使用DBM用户认证

  DBM 文件是一种简单而标准的用于加快读取效率的保存信息的方法。文件中存放的每一个记录由两个部分组成部分:键和值。由于DBM的格式,使得与键相关的信息非常有效。在Web用户认证中,这里的键将是用户名,而与该键相关的值将是该用户经过加密的口令信息。从DBM文件中查找用户名和口令,要比从一个纯文本文件中查找有效得多。对于有很多用户的站点,这种方法将大大提高用户认证的效率。

  (1) 在Apache服务器中增加DBM模块

  在默认的条件下,Apache不使用DBM文件来完成用户认证,因此编译时一定要加入可选的DBM认证模块。重新配置Apache服务器文件,去掉其中的注释行

  #Module dbm_auth_module mod_auth_dbm.o

  前的“#”,并重新编译。但是,在编译之前,需要指出Apache DBM函数的位置。

  (2) 创建DBM用户文件(假设文件名为users)

  Apache提供了一个“dbmmanage”的程序,用于创建和管理DBM文件。其中:

  Dbmmanage /usr/local/etc/httpd/usersdbm     创建DBM文件
  Dbmmanage /usr/local/etc/httpd/users adduser martin hamster 新增用户
  Dbmmanage /usr/local/etc/httpd/usersdbm delete martin   删除用户
  Dbmmanage /usr/local/etc/httpd/usersdbm view 显示DBM中所有用户

  有了DBM数据库文件,还要替换目录访问控制,即将Apache配置文件(access.conf)中的AuthUserFile部分替换成:AuthUserFile /usr/local/etc/usersdbm 告诉Apache现在的用户文件是DBM的格式。

  以上内容,是作者在长期的网站管理工作中的一点积累。由于篇幅的关系,只能作粗略的描述,远不能表达清楚Apache服务器的安全使用。安全是相对的,严防是绝对的。只有及时了解最新的安全信息,掌握最新的安全技术、工具,根据实际情况,制定安全策略,才能及时有效地抵御各种各样的网上“侵略者”。

posted @ 2005-02-24 16:40 hzy 阅读(757) | 评论 (0)编辑 收藏

2005年2月22日

RDBMS Version: 9.2.0.1
Operating System and Version: Windows 2000
Error Number (if applicable): sp2-0640
Product (i.e. SQL*Loader, Import, etc.): statspack
Product Version:

Error ora-0064 when installing statspack

I get the following errors during the creation of the statspack package.

creating Package STATSPACK ..
SP2-0640 not connected
SP2-0640 not connected
SP2-0641 "Show Errors" reuire connection to server

creating Package Body STATSPACK ..
SP2-0640 not connected
SP2-0640 not connected
SP2-0641 "Show Errors" reuire connection to server

I connected into PLSQL as sysdba





From: Manjunath Kottur 01-Feb-05 19:22
Subject: Re : Error ora-0064 when installing statspack

Hi Ken,
Check the spcreate.sql file. Most probably you will find that the connect string needs to be modified as below:
connect perfstat/&&perfstat_password@rh10
(substitute rh10 with your instance name per your tnsnames.ora)

HTH
Thanks
Manjunath

posted @ 2005-02-22 22:41 hzy 阅读(2588) | 评论 (1)编辑 收藏
 
aa

ChinaUnix-Web服务器讨论区精华帖
 

 
Tomcat 5 + Apache 2 + mod_jk 2 实现虚拟主机
http://www.chinaunix.net 作者:perryhg  发表于:2004-03-17 08:58:21

Tomcat 5 实现了 servlet 2.4 和jsp2.0,在性能上有所提升,尤其是,对我们来说,实现了真正的中文支持,无需添加特别参数就可以直接显示中文内容,让java和jsp中文问题成为历史!

1.首先apache2 ,unix/linux下面就从源代码编译安装,最重要的configure 参数是 --enalbe-modules="so" 其他根据自己需要安装,windows下面直接安装编译好的二进制版本。具体安装方法很多地方已经有介绍了,这里不赘述,如有需要可以参考 http://httpd.apache.org 或者 chinaunix 的web服务器区精华,唯一一点需要提醒的是,要将 httpd.conf 里面的
[code:1:141851c2a4]#AddDefaultCharset ISO-8859-1[/code:1:141851c2a4]
前面加#注销掉,很多人提问为什么Apache2显示中文乱码,根源就在这里,最简单的方法就是加一个#就可以正常显示中文了,无需设置什么GB2312。

2.安装jdk,tomcat的运行需要j2sdk支持,可以去 http://java.sun.com 下载。windows 的可以下载 offline installation 版本,大概50M左右,下载以后安装,linux下建议下载 self-extract版本,下载完以后用 chmod +x j2sdk... 加上执行属性,然后运行下载的文件,会出来一个许可协议,按几次空格跳过几页后,输入 yes 表示接受协议,然后程序会自动释放,并建立一个子目录 j2sdk1.4.2_04。

3.设置环境变量,java的运行需要设置一下环境变量,通常只要设置一个 JAVA_HOME,另外,把java的可执行程序放到path里面去就可以了。在linux下运行
[code:1:141851c2a4]JAVA_HOME=/usr/local/j2sdk1.4.2-04;export $JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin[/code:1:141851c2a4]如果你需要所有的用户都可以使用java,可以把这段代码放到 /etc/profile 里面去,这样你每次登陆的时候就会自动把有关变量设置好了。
windows下面要在“系统属性”里面->“高级”->点“环境变量”按钮,如果你希望所有用户都能用,就建立在“系统变量”里面,点“新建”按钮,变量名是 “JAVA_HOME”,变量值是你安装java的路径,通常是 C:\j2sdk1.4.2-04 ,然后编辑path变量,在变量值最后加上;%JAVA_HOME%\bin

4.安装tomcat,最简单是下载binary版本,在linux下面,直接 tar -xzvf jakarta-tomcat-5.0.19 即可。windows下面,直接运行那个exe文件,就会自动安装了。windows的安装过程要求设置一个admin用户和密码,这个用户可以在web上管理tomcat服务器的运行和安装和解除web应用的,还可以创建其他管理用户,权限很大,所以密码要小心得取,如果是linux下面,没有创建这个用户,则需要到 jakarta-tomcat-5.0.19/conf 下面编辑 tomcat-users.xml 手工添加2个role和1个用户,最简单的例子文件如下:
[code:1:141851c2a4]<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="admin" password="administratorpassword123" roles="admin,manager"/>
</tomcat-users>[/code:1:141851c2a4]
启动tomcat,tomcat/bin目录下有startup.sh 用于Linux 和start.bat 用于windows,shutdown.sh 和 shutdown.bat 则用于关闭tomcat,当然,windows下面还有专门的图形界面的启动程序,其实效果都是一样的。

当然,在linux下面也可以用jsvc启动,并做成启动脚本随机器一起启动。jsvc本来要从 http://jakarta.apache.org 下载 commons-daemon-1.0-Alpha ,不过tomcat 已经自己带了一个了,在tomcat/bin目录下有一个jsvc.tar.gz 解压,编译:
解压 tar -xzvf jsvc.tar.gz 然后 cd jsvc-src 然后,运行
[code:1:141851c2a4]sh support/buildconf.sh
./configure
make[/code:1:141851c2a4]
(注意:tomcat-5.0.18版本带的jsvc源代码有一个低级错误--少一个分号,会导致编译不成功,可以自己加上这个分号)

tomcat自己带的jsvc-src/native目录下还有两个脚本 Tomcat.sh 和 Tomcat5.sh ,可以用作启动和停止tomcat的脚本,我把Tomcat5.sh略作修改,文件如下:

[code:1:141851c2a4]#!/bin/sh
#
# Startup Script for Tomcat5
#
# chkconfig: 345 87 13
# description: Tomcat Daemon
# processname: jsvc
# pidfile: /var/run/jsvc.pid
# config:
#
# Source function library.
. /etc/rc.d/init.d/functions
#
prog=tomcat
#
# Small shell script to show how to start/stop Tomcat using jsvc
# If you want to have Tomcat running on port 80 please modify the server.xml
# file:
#
#    <!-- Define a non-SSL HTTP/1.1 Connector on port 80 -->
#    <Connector className="org.apache.catalina.connector.http.HttpConnector"
#               port="80" minProcessors="5" maxProcessors="75"
#               enableLookups="true" redirectPort="8443"
#               acceptCount="10" debug="0" connectionTimeout="60000"/>
#
# You need a developement version of Tomcat (Apache Tomcat/4.1-dev)
#
# Adapt the following lines to your configuration

#设定自己的参数
JAVA_HOME=/usr/local/j2sdk1.4.2-04
CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.19
DAEMON_HOME=$CATALINA_HOME/bin
#需要在系统中设定一个没有权限的
#用户来运行,这样比较安全
TOMCAT_USER=tomcat5 
TMP_DIR=/var/tmp
CATALINA_OPTS=
CLASSPATH=\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar

start(){
    echo -n $"Starting $prog: "
    #
    # Start Tomcat
    #
    $DAEMON_HOME/jsvc-src/jsvc \
    -user $TOMCAT_USER \
    -home $JAVA_HOME \
    -Dcatalina.home=$CATALINA_HOME \
    -Djava.io.tmpdir=$TMP_DIR \
    -outfile $CATALINA_HOME/logs/catalina.out \
    -errfile '&1' \
    $CATALINA_OPTS \
    -cp $CLASSPATH \
    org.apache.catalina.startup.Bootstrap
    #
    # To get a verbose JVM
    #-verbose \
    # To get a debug of jsvc.
    #-debug \
    RETVAL=$?
    [ $RETVAL = 0 ] && touch /var/lock/subsys/jsvc
    [ $RETVAL = 0 ] && echo_success || echo_failure
    echo
    return $RETVAL
}
stop(){
    echo -n $"Stopping $prog: "
    #
    # Stop Tomcat
    #
    PID=`cat /var/run/jsvc.pid`
    kill $PID
    RETVAL=$?
    [ $RETVAL = 0 ] && rm /var/lock/subsys/jsvc
    [ $RETVAL = 0 ] && echo_success || echo_failure
    echo
    return $RETVAL
}

case "$1" in
  start)
        start
    ;;

  stop)
        stop
    ;;

  restart|reload)
        stop
        start
    ;;

  *)
    echo "Usage $0 start/stop"
    exit 1;;
esac[/code:1:141851c2a4]
把这段代码保存为 /etc/rc.d/init.d/tomcat ,然后运行 [code:1:141851c2a4]chkconfig --add tomcat[/code:1:141851c2a4]即可把tomcat 添加为系统服务自动随系统启动了。这个脚本会在runlevel 3/4/5三种模式自动启动。注意这段脚本是为tomcat5创建的,如果你用tomcat4,则需要在另一个tomcat.sh的基础上修改。

5.编译和设置mod_jk
windows版本的mod_jk可以直接从 jakarta.apache.org 下载binary版本,linux下只好下载源代码编译了。从 http://jakarta.apache.org 下载 jakarta-tomcat-connectors-jk2-src-current.tar.gz 解压,然后 [code:1:141851c2a4]cd /jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
./buildconf.sh[/code:1:141851c2a4]然后运行
[code:1:141851c2a4]./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/j2sdk1.4.2-04[/code:1:141851c2a4]
(具体路径按照你实际的调整)
运行
[code:1:141851c2a4]make jk2-build-apxs
cd server/apache2
make -f Makefile.apxs install[/code:1:141851c2a4]
其实这个软件包本来有ant的配置文件,用ant编译可能会简单一些,但是要另外装ant,而且里面有些模块不是ant本身native的功能,还要为ant加装相应的功能模块,所以这里就略过,下次有时间再发一个ant的应用。

这样,你的mod_jk总算是装好了,现在开始进入配置阶段,其实,配置很简单了

6.设置虚拟主机
比如,我现在有虚拟主机 vhosts.vicp.net 希望把jsp和servlet都转到tomcat去,而其他的文件比如html页面,图片等等仍然用apache解析。
Tomcat设置:
修改 tomcat/conf/server.xml,在 <Engine></Engine>里面再增加一个<host/>,
[code:1:141851c2a4]<Host name="vhosts.vicp.net" debug="0"
    appBase="/opt/jakarta-tomcat-4.1.12-LE-jdk14/webapps/struts-example" 
    unpackWARs="true" autoDeploy="true">
    <Alias>localhost</Alias>
    <Alias>www</Alias>
    <Alias>10.0.0.10</Alias>
    <Context path="" docBase="" debug="1"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve"
            directory="logs"  prefix="vhost.vicp.net_access_log." suffix=".txt"
            pattern="common" resolveHosts="false"/>
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="home_log_" suffix="_app_log.txt"
            timestamp="true"/>
</Host>[/code:1:141851c2a4]
调整里面的参数和设置使之适合你的环境,当然,如果你还有其他的<host/>添加在后面。

在 /usr/local/apache/conf 下面创建一个workers2.properties,内容如下:

[code:1:141851c2a4]#---- worker2.properties

[logger.apache2]
level=DEBUG

# Shared memory handling. Needs to be set.
[shm]
file=/usr/local/apache2/logs/shm.file
size=1048576

# Example socket channel, explicitly set port and host.
[channel.socket:localhost:8009]
tomcatId=localhost:8009
port=8009
host=127.0.0.1

# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009

#[status:status]

# Uri mapping

#[uri:/jkstatus/*]
#group=status:status

#[uri:/jsp-examples/*]
#group=ajp13:localhost:8009

#[uri:/servlets-examples/*]
#group=ajp13:localhost:8009

#[uri:/javaapp/*]
#group=ajp13:localhost:8009

#[uri:www.home.net/*.jsp]
#worker=ajp13:localhost:8009

#[uri:10.0.0.10/*]
#worker=ajp13:localhost:8009

#---- end of workers2.properties[/code:1:141851c2a4]

当然,你可以删除其中的注释符使其中的uri和worker的配置生效,我现在不用这种方式配置是因为找到一个更好的方法:在httpd.conf里面配置:

把下面这段放到VirtualHost之前,可以从全局避免用户用apache访问WEB-INF目录。
[code:1:141851c2a4]<Directory ~ "/WEB-INF/">
    Order allow,deny
    Deny from all
</Directory>[/code:1:141851c2a4]

典型的VirtualHost配置样本

[code:1:141851c2a4]<VirtualHost _default_:80>
        ServerName vhost.vicp.net
        DocumentRoot /home/webapp/public_html/
        DirectoryIndex index.htm index.html default.htm index.php index.jsp
        <Location ~ "/*.jsp|/*/servlet/*">
            JkUriSet worker ajp13:localhost:8009 
        </Location>
        ErrorLog logs/vhosts.vicp.net-err_log
        CustomLog logs/vhosts.vicp.net-acc_log common
</VirtualHost>[/code:1:141851c2a4]
这样就可以为每个不同的虚拟主机分别指定使用或者不使用jsp功能。

好了,可以开始开发和使用你的web应用了!

参考文献:
1. http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jk2/jk2/vhosthowto.html
2. http://bbs.chinaunix.net/forum/6/20040214/259794.html
3. http://chinaunix.net/jh/6/263220.html
 

posted @ 2005-02-22 17:46 hzy 阅读(433) | 评论 (0)编辑 收藏
 
一般以用户root身份安装。
先从SUN网站上下载一个jdk.比如:j2sdk1_4_2_05-linux-i586.bin,放到/usr/local 目录下,
  [root@server /]#  chmod a+x j2sdk1_4_2_05-linux.bin     (添加执行权限)
  [root@server /]#  ./j2sdk1_4_2_05-linux.bin       (执行j2sdk1_4_2_05-linux.bin)

执行完毕后会在本目录下生成 j2sdk1_4_2_05-linux.rpm
使用 rpm安装:
  [root@server /]#  rpm -iv j2sdk1_4_2_05-linux.rpm

安装完毕后设置环境变量:
把下面代码加入到/etc/profile最后:

JAVA_HOME=/usr/java/j2sdk1.4.2_05/
CLASSPATH=/usr/java/j2sdk1.4.2_05/jre/lib/rt.jar:.
PATH=$PATH:/usr/java/j2sdk1.4.2_05/bin
export JAVA_HOME CLASSPATH PATH

最后是测试
[root@server /]#  source /etc/profile
[root@server /]#  java -version

Tomcat 5.0.25

http://www.apache.org下载得到jakart...t-5.0.25.tar.gz
#gunzip jakarta-tomcat-5.0.25.tar.gz
#tar xvf jakarta-tomcat-5.0.25.tar
#mv jakarta-tomcat-5.0.25 /usr/local/tomcat5.0.25
#cd /usr/local/tomcat5.0.25/bin
#./catalina.sh start

然后测试 http://localhost:8080 看到那个猫了吧,恭喜你tomcat安装ok

_____________________________________________________________________

安装apache2.0.50
估计用到的工具有:gcc,automake,autoconfig;libtools,m4 大家可以去下载rpm包安装就行了,别忘了写人环境变量噢 :-P

http://www.apache.org下载后

gunzip httpd-2.0.50.tar.gz
tar xvf httpd-2.0.50.tar
cd httpd-2.0.50/bin
./configure -prefix=/usr/local/apache2 -enable-so (可改为你自己的目录;-enable-so用于加载connector,不可省略,你还可以加上你自己的其他模块)
make
make install
cd /usr/local/apache2/conf
vi httpd.conf
更改:servername 你的机器ip或域名
group nobody
listen yourip:80 (apache2以后把port已经改成了listen)

保存后,cd ../bin
./apachectl start

测试:http://localhost 看到apache的欢迎界面了吧,ok

_____________________________________________________________________________________

整合apache2与tomcat5.0.25

用连接器jakarta-tomcat-connectors-jk2-src-current.tar.gz(就是jk2),大家可到http://jakarta.apache.org/site/sourceindex.cgi下载

gunzip jakarta-tomcat-connectors-jk2-src-current.tar.gz
tar xvf jakarta-tomcat-connectors-jk2-src-current.tar
cd jakarta-tomcat-connectors-jk2-src-current/jk/native2
./configure --with-apxs2=/usr/local/apache2/bin/apxs (注意改为你的apache安装目录)
make
cd ../build/jk2/apache2
/usr/local/apache2/bin/apxs -n jk2 -i mod_jk2.so

另外,我在执行configure的时候提示有错误,好像是关于路径的,我就先启动了tomcat,执行通过。(也许是我没有设置关于tomcat目录的环境变量的原因)
make
make install

所有的文档都说如果发布不成功,那么要手工发布,我也是手工发布的:
cp PathOfJK2/build/jk2/apache2/mod_jk2.so  PathOfApache/modules/
现在大家可以看到mod_jk2.so文件已经在你的apache/modules/ 中了

编辑apache/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so 保存

在apache/conf/中新建文件workers2.properties,内容为下(注意其中目录要改为你的目录噢):

[shm]
file=/usr/local/apache2/logs/shm.file
size=1048576
# Example socket channel, override port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Uri mapping
[uri:/*]
worker=ajp13:localhost:8009

保存后,就快大功告成啦,呵呵

cd apache2/bin
./apachectl start

测试:http://localhost 大家是不是看到了那个猫猫的界面啊,恭喜恭喜,整合成功咯!!!(可别忘了启动tomcat)

posted @ 2005-02-22 11:10 hzy 阅读(2971) | 评论 (2)编辑 收藏

2005年2月21日

     如何限定特定IP访问数据库
                  可以利用登录触发器、cmgw或者是在$OREACLE_HOME/network/admin下新增一个protocol.ora文件(有些os可能是. 
                  protocol.ora),9i可以直接修改sqlnet.ora:
                  增加如下内容:
                  tcp.validnode_checking=yes
                  #允许访问的ip
                  tcp.inited_nodes=(ip1,ip2,……)
                  #不允许访问的ip
                  tcp.excluded_nodes=(ip1,ip2,……)

                  如何穿过防火墙连接数据库
                  这个问题只会在WIN平台出现,UNIX平台会自动解决。
                  解决方法:
                  在服务器端的SQLNET.ORA应类似
                  SQLNET.AUTHENTICATION_SERVICES= (NTS) 
                  NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) 
                  TRACE_LEVEL_CLIENT = 16 
                  注册表的HOME0加[HKEY_LOCAL_MACHINE] 
                  USE_SHARED_SOCKET=TRUE

                  如何利用hostname方式连接数据库
                  host name方式只支持tcp/ip协议的小局域网
                  修改listener.ora中的如下信息
                  (SID_DESC =
                  (GLOBAL_DBNAME = ur_hostname) --你的机器名
                  (ORACLE_HOME = E:\oracle\ora92) --oracle home
                  (SID_NAME = orcl) --sid name
                  )
                  然后在客户端
                  的sqlnet.ora中,确保有
                  NAMES.DIRECTORY_PATH= (HOSTNAME)
                  你就可以利用数据库服务器的名称访问数据库了

                  dbms_repcat_admin能带来什么安全隐患
                  如果一个用户能执行dbms_repcat_admin包,将获得极大的系统权限。
                  以下情况可能获得该包的执行权限:
                  1、在sys下grant execute on dbms_repcat_admin to 
public[|user_name]
                  2、用户拥有execute any procedure特权(仅限于9i以下,9i必须显示授权)
                  如果用户通过执行如下语句:
                  exec 
sys.dbms_repcat_admin.grant_admin_any_schema('user_name');
                  该用户将获得极大的系统特权
                  可以从user_sys_privs中获得详细信息

                  在不知道用户密码的时候,怎么样跳转到另外一个用户执行操作后并不影响该用户?
                  我们通过如下的方法,可以安全使用该用户,然后再跳转回来,在某些时候比较有用
                  需要Alter user权限或DBA权限:
                  SQL> select password from dba_users where username='SCOTT';
                  PASSWORD
                  -----------------------------
                  F894844C34402B67
                  SQL> alter user scott identified by lion;
                  User altered.
                  SQL> connect scott/lion
                  Connected.
                  REM Do whatever you like...
                  SQL> connect system/manager
                  Connected.
                  SQL> alter user scott identified by values 'F894844C34402B67';
                  User altered.
                  SQL> connect scott/tiger
                  Connected.

                  如何加固你的数据库
                  要注意以下方面
                  1. 修改sys, system的口令。 
                  2. Lock,修改,删除默认用户: dbsnmp,ctxsys等。 
                  3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直接登陆。 
                  4. 把O7_DICTIONARY_ACCESSIBILITY改成False。 
                  5. 把一些权限从PUBLIC Role取消掉。 
                  6. 检查数据库的数据文件的安全性。不要设置成666之类的。检查其他dba 用户。 
                  7. 把一些不需要的服务(比如ftp, nfs等关闭掉) 
                  8. 限制数据库主机上面的用户数量。 
                  9. 定期检查Metalink/OTN上面的security 
                  Alert。比如:http://otn.oracle.com/deploy/security/alerts.htm 
                  10. 把你的数据库与应用放在一个单独的子网中,要不然你的用户密码很容易被sniffer去。或者采用advance 
                  security,对用户登录加密。 
                  11. 限止只有某些ip才能访问你的数据库。 
                  12. lsnrctl 要加密码,要不然别人很容易从外面关掉你的listener。 
                  13. 如果可能,不要使用默认1521端口

                  如何检查用户是否用了默认密码 
                  如果使用默认密码,很可能就对你的数据库造成一定的安全隐患,那么可以使用如下的查询获得那些用户使用默认密码
                  select username "User(s) with Default Password!" 
                  from dba_users 
                  where password in 
                  ('E066D214D5421CCC', -- dbsnmp 
                  '24ABAB8B06281B4C', -- ctxsys 
                  '72979A94BAD2AF80', -- mdsys 
                  'C252E8FA117AF049', -- odm 
                  'A7A32CD03D3CE8D5', -- odm_mtr 
                  '88A2B2C183431F00', -- ordplugins 
                  '7EFA02EC7EA6B86F', -- ordsys 
                  '4A3BA55E08595C81', -- outln 
                  'F894844C34402B67', -- scott 
                  '3F9FBD883D787341', -- wk_proxy 
                  '79DF7A1BD138CF11', -- wk_sys 
                  '7C9BA362F8314299', -- wmsys 
                  '88D8364765FCE6AF', -- xdb 
                  'F9DA8977092B7B81', -- tracesvr 
                  '9300C0977D7DC75E', -- oas_public 
                  'A97282CE3D94E29E', -- websys 
                  'AC9700FD3F1410EB', -- lbacsys 
                  'E7B5D92911C831E1', -- rman 
                  'AC98877DE1297365', -- perfstat 
                  '66F4EF5650C20355', -- exfsys 
                  '84B8CBCA4D477FA3', -- si_informtn_schema 
                  'D4C5016086B2DC6A', -- sys 
                  'D4DF7931AB130E37') -- system 
                  /

posted @ 2005-02-21 21:06 hzy 阅读(589) | 评论 (0)编辑 收藏
仅列出标题