CSS中absolute与relative

absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的特性,可以做出什么样的效果呢?关于两者之间又有什么样的技巧呢?下面我们就来一一解读。

Absolute,CSS中的写法是:position:absolute; 他的意思是绝对定位,他是参照浏览器的左上角,配合TOP、RIGHT、BOTTOM、LEFT(下面简称TRBL)进行定位,在没有设定TRBL,默认依据父级的做标原始点为原始点。如果设定TRBL并且父级没有设定position属性,那么当前的absolute则以浏览器左上角为原始点进行定位,位置将由TRBL决定。



一般来讲,网页居中的话用Absolute就容易出错,因为网页一直是随着分辨率的大小自动适应的,而Absolute则会以浏览器的左上角为原始点,不会应为分辨率的变化而变化位置。很多人出错就在于这点上出错。而网页居左其特性与Relative很相似,但是还是有本质的区别的。
Relative,CSS中的写法是:position:relative; 他的意思是绝对相对定位,他是参照父级的原始点为原始点,无父级则以BODY的原始点为原始点,配合TRBL进行定位,当父级内有padding等CSS属性时,当前级的原始点则参照父级内容区的原始点进行定位。





有时我们还需要依靠z-index来设定容器的上下关系,数值越大越在最上面,数值范围是自然数。当然有一点要注意,父子关系是无法用z-index来设定上下关系的,一定是子级在上父级在下。

winxp下apache+php+mysql 安装配置

一、 安装apache 并配置支持PHP
点击安装文件apache_2.0.50-win32-x86-no_ssl.msi将apache安装在 D:\apache2 目录(随自己喜好)下将php-5.0.0-Win32.zip 里内容解压到 D:\php 里找到 php目录里的 php.ini-dist 重命名为 php.ini 并拷到 windows目录里如我的php.ini是拷到 c:\windows目录再将php目录里的 php5ts.dll,libmysql.dll 拷到 系统目录(system/system32)
配置apache里的httpd.conf打开 D:\Apache2\conf\httpd.conf 这个文件找到 DocumentRoot "D:/Apache2/htdocs" 将其改为你的WEB目录(可不改)如我的为 DocumentRoot "D:/htdocs"找到 DirectoryIndex index.html index.html.var 在后面加入 index.htm index.php
选择安装模式: 模块化模式安装 或 CGI模式安装 (选一样即可)
--------------模块化安装配置------------------------------------
找到 #LoadModule ssl_module modules/mod_ssl.so 这行,在此行后加入一行LoadModule php5_module d:/php/php5apache2.dll其中d:/php/php5apache2.dll 为你php目录中php5apache2.dll所在的位置
找到 AddType application/x-gzip .gz .tgz 这行,在此行后加入一行AddType application/x-httpd-php .php
--------------CGI安装配置--------------------------------------
找到 AddType application/x-gzip .gz .tgz 这行,加入如下即可ScriptAlias /php/ "d:/php/"AddType application/x-httpd-php .phpAction application/x-httpd-php "/php/php-cgi.exe"
---------------------------------------------------------------
此时PHP环境基本已经配置成功 在WEB根目录(如我的D:/htdocs)里建一个名为test.php的文件内容如下

重新启动apache服务用浏览器打开
注意:1./ \和区别 原来用的是什么就用什么
配置完了要重启APACHE才ok
http://localhost/test.php如果可以看到php配置输出信息就OK了

二、安装mysql
安装NEXT到底,全部默认,中间只要设置一个root密码就ok了.

三、配置php.ini并测试mysql(php.ini为 d:\windows下的 php.ini)
找到extension_dir = "./" 改为 extension_dir = "d:/php/ext"找到;extension=php_mysql.dll 将';'去掉改为extension=php_mysql.dll找到;session.save_path = "/tmp"将';'去掉 设置你保存session的目录,如session.save_path = "D:/php/session_temp";
重启apache服务在Web根目录下(如 D:\website)建立testdb.php文件内容如下:$link=mysql_connect('localhost','root','123456');if(!$link) echo "fail";else echo "success";mysql_close();?>用浏览器打开http://localhost/testdb.php 如果输出success就OK了。

四、phpmyadmin的安装配置
将phpMyAdmin-2.5.7.zip解压到WEB根目录中去,重命名文件夹为phpmyadmin或其
它打开phpmyadmin 目录中的 config.inc.php找到$cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = '123456';分别填上你mysql的用户和密码即可。

自己动手做一个迷你型Linux操作系统

本 文要构建的这个迷你型的 Linux 系统只能在一台特定的单机上运行,如果读者朋友们有兴趣的话,在这个系统的基础上加以改进,是可以构建出通用的、可以在大多数常规 PC 机上即插即用的系统来的。但是这已经不在本文的话题之内了,读者朋友们如果有兴趣,可以通过我的电子邮件和我讨论其中的细节问题。

我 们的目标 Linux 系统运行在一台普通的 Intel 386 PC 机上,可以有硬盘,也可以不要硬盘,而用 Flash Disk 来代替。如果是用 Flash 盘的话,需要能够支持从 Flash 盘启动,而且 Flash 盘的大小要在 16M 字节或者以上。我们希望用户一开机启动,就直接进入 X Window 图形界面,运行事先指定好的程序。不需要用户输入用户名和密码进行登录。

我们设定的这个目标有点像一个 X Terminal 终端工作站。稍加改进,还可以做成干脆无盘的形式,也就是说,连 16M 的 Flash 盘也不要了。不过,这也超出了本文的话题了。读者朋友们如果有兴趣,可以来信和我进行讨论。

系统启动

因 为我们要考虑从 Flash 盘进行启动,所以我们选择用 LILO 作为我们的 Boot Loader,而不选用 GRUB。这是考虑到 GRUB 有较强的对硬盘和文件系统的识别能力,而 Flash 盘到底不是标准的硬盘,并且我们选用的文件系统 GRUB 又不一定认识,搞不好的话 GRUB 反会弄巧成拙。而 LILO 就简单的多了,它在硬盘开始的 MBR 写入一个小程序,这个小程序不经过文件系统,直接从硬盘扇区号,读出 Kernel Image 装入内存。这样,保险系数就大大增加。并且也给了我们自由选用文件系统的余地。那么,我们要如何安装 LILO 呢?

首 先,我们要找一块普通的 800M 左右的 IDE 硬盘,连在目标机器的 IDE 线上。这样在我们的目标机器上,IDE1 上挂的是 Flash 盘,IDE2 上挂的是一块工作硬盘。我们用标准的步骤在 IDE2 的标准硬盘上装上一个 Debian GNU/Linux 系统。当然,如果读者朋友们手头没有 Debian,也可以装 Red Hat 系统。装好工作系统之后,要首先做一些裁减工作,把不必要的 Service 和 X Window 等等东西都删掉。这样做的目的是增进系统启动速度,因为我们在后面的工作中,肯定要不停的重新启动机器,所以启动速度对我们的工作效率是很关键的。

装 好工作系统之后,在 Falsh 盘上做一个 Ext2 文件系统,这个用 mke2fs 这个命令就可以完成。由于 Flash 盘是接在 IDE1 上的,所以在 Linux 里面,它的身份是 /dev/hda。本文作者在操作的时候,把整个 Flash 盘划分了一个整个的分区,所以,调用 mke2fs 的时候,处理的是 /dev/hda1。读者朋友们应该可以直接在 /dev/hda 上做一个 Ext2 文件系统,而不用事先分区。

在 Flash 盘上做好了文件系统之后,就可以把一个编译好的内核映像文件 vmlinuz 拷贝到 Flash 盘上了。注意,必须要先把这个 vmlinuz 映像文件拷贝到 Flash 盘上,然后才能在 Flash 盘上安装 LILO。不然的话,LILO 到时候可是会 LILILILI 打结巴的,因为它会找不到 Kernel Image 在 Flash 盘上的位置的,那样的话 Flash 盘也就启动不起来了。还有,如果读者朋友们在 Flash 盘上用的是一个压缩的文件系统的话,到时候 LILO 也会出问题,它虽然能正确的找到 Kernel Image 在硬盘上的起始位置,但是它却没有办法处理被文件系统重新压缩过的这个 Kernel Image,不知道该如何把它展开到内存中去。

把 Kernel Image 拷贝过去以后,我们就可以动手编辑一份 lilo.conf 文件,这份文件可以就放在工作系统上就行了。但是注意在 lilo.conf 中索引的文件名的路径可要写对。这些路径名都是在工作系统上看上去的路径名。比如,如果 Flash 盘 Mount 在 /mnt 目录下面,那么,在 lilo.conf 中,vmlinuz 的路径名就是 /mnt/vmlinuz。注意这一点千万不要搞错。不然的话,如果一不小心把工作系统的 LILO 给破坏掉了,那就麻烦了。编辑好了 lilo.conf,然后再运行 lilo 命令,注意,要告诉它用这个新的 lilo.conf 文件,而不要用 /etc/lilo.conf。

安 装好 LILO 之后,我们可以立即重新启动,测试一下。首先在 BIOS 里面,设置成从 IDE1 开始启动,如果我们看到 LILO 的提示符,按回车后还能看到 Kernel 输出的消息,这就算是 LILO 的安装成功了。记得这个操作的方法,以后每次我们更新 Flash 盘上的 Kernel Image,都记得要更新 LILO。也就是说,要重新运行一遍 lilo 命令。

编译内核

试 验成功 LILO 的安装以后,我们开始考虑编译一个新的内核。当然,要编译新的内核,我们首先要进入我们的工作系统。这里有两个办法进入工作系统,一是在 BIOS 里面设置从 IDE2 启动,当然,这就要求当初安装工作系统的时候,要把 LILO 安装在 /dev/hdb 上;另一个办法是还是从 IDE1 启动,不改变 BIOS 的设置,但是在看到 LILO 的提示符的时候,要键入 linux root=/dev/hdb1,最前面的 linux 是在 lilo.conf 里面定义的一个 entry,我们只采用这个 entry 所指定的 Kernel Image,但是用 /dev/hdb1 作为 root 文件系统。两个办法可能有的时候一个比另一个好,更方便一些。这就要看具体的情况了。不过,它们的设置并不是互相冲突的。

在 编译内核的时候,由于我们的内核是只有一台机器使用的,所以我们应该对它的情况了如指掌;另外一方面,为了减低不必要的复杂性,我们决定不用 kernel module 的支持,而把所有需要的东西直接编译到内核的里面。这样编译出来的内核,在一台普通的 586 主板上,把所有必要的功能都加进去,一般也不到 800K 字节。所以,这个办法是可行的。而且减低了 init scripts 的复杂程度。从运行方面来考虑,由于需要的 kernel 代码反正是要装载到内存中的,所以并不会引起内存的浪费。

在 我们的目标平台上,我们希望使用 USB 存储设备。还有一点要注意的,就是对 Frame buffer 的支持。这主要是为了支持 XFree86。一般说来,如果我们的显卡是 XFree86 直接支持的,那当然最好,也就不需要 frame buffer 的内核支持。但是如果 XFree86 不支持我们的显卡,我们可以考虑用 VESA 模式。但是 XFree86 的 VESA 卡支持运行起来不太漂亮,还有安全方面的问题,有时在启动和退出 X Window 的时候会出现花屏。所以我们可以采用 kernel 的 vesa 模式的 frame buffer,然后用 xfree86 的 linux frame buffer 的驱动程序。这样一般就看不到花屏的现象了,而且安全方面也没有任何问题。

devfs 也是我们感兴趣的话题。如果 kernel 不使用 devfs,那么系统上的 root 文件系统就要有 /dev 目录下面的所有内容。这些内容可以用 /dev/MAKEDEV 脚本来建立,也可以用 mknod 手工一个一个来建。这个方法有其自身的好处。但是它的缺点是麻烦,而且和 kernel 的状态又并不一致。相反的,如果使用了 devfs,我们就再也不用担心 /dev 目录下面的任何事情了。/dev 目录下面的项目会有 kernel 的代码自己负责。实际使用起来的效果,对内存的消耗并不明显。所以我们选择 devfs。

busybox

有 了 LILO 和 kernel image 之后,接下来,我们要安排 root 文件系统。由于 flash 盘的空间只有 16M 字节,可以说,这是对我们最大的挑战。这里首先要向大家介绍小型嵌入式 Linux 系统安排 root 文件系统时的一个常用的利器:BusyBox。

Busybox 是 Debian GNU/Linux 的大名鼎鼎的 Bruce Perens 首先开发,使用在 Debian 的安装程序中。后来又有许多 Debian developers 贡献力量,这其中尤推 busybox 目前的维护者 Erik Andersen,他患有癌症,可是却是一名优秀的自由软件开发者。

Busybox 编译出一个单个的独立执行程序,就叫做 busybox。但是它可以根据配置,执行 ash shell 的功能,以及几十个各种小应用程序的功能。这其中包括有一个迷你的 vi 编辑器,系统不可或缺的 /sbin/init 程序,以及其他诸如 sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等这些都是一个正常的系统上必不可少的,但是如果我们把这些程序的原件拿过来的话,它们的体积加在一起,让人吃不消。可是 busybox 有全部的这么多功能,大小也不过 100K 左右。而且,用户还可以根据自己的需要,决定到底要在 busybox 中编译进哪几个应用程序的功能。这样的话,busybox 的体积就可以进一步缩小了。

使 用 busybox 也很简单。只要建一个符号链接,比方 ln -s /bin/busybox /bin/ls,那么,执行 /bin/ls 的时候,busybox 就会执行 ls 的功能,也会按照 ls 的方式处理命令行参数。又比如 ln -s /bin/busybox /sbin/init,这样我们就有了系统运行不可或缺的 /sbin/init 程序了。当然,这里的前提是,你在 busybox 中编译进去了这两个程序的功能。

这里面要提出注意的一点是,busybox 的 init 程序所认识的 /etc/inittab 的格式非常简单,而且和常规的 inittab 文件的格式不一样。所以读者朋友们在为这个 busybox 的 init 写 inittab 的时候,要注意一下不同的语法。至于细节,就不在我们这里多说了,请大家参考 Busybox 的用户手册。

从启动到进入 shell

busybox 安装好以后,我们就可以考虑重新启动,一直到进入 shell 提示符了。这之前,我们要准备一下 /etc 目录下的几个重要的文件,而且要把 busybox 用到的 library 也拷贝过来。

用 ldd 命令,后面跟要分析的二进制程序的路径名,就可以知道一个二进制程序,或者是一个 library 文件之间的互相依赖关系,比如 busybox 就依赖于 libc.so 和 ld-linux.so ,我们有了这些知识,就可把动手把所有需要的 library 拷贝到 flash 盘上。由于我们的 flash 盘说大不大,说小倒也不小,有 16M 字节之多。我们直接就用 Glibc 的文件也没有太多问题。如果读者朋友们有特殊的需要,觉得 Glibc 太庞大了的话,可以考虑用 uClibc,这是一个非常小巧的 libc 库,功能当然没有 Glibc 全,但是足够一个嵌入式系统使用了。本文就不再介绍 uClibc 了。

库 程序拷贝过来以后,我们就可以考虑系统启动的步骤了。启动的时候,先是 lilo,接下来就是 kernel,kernel 初始化之后,就调用 /sbin/init,然后由 init 解释 /etc/inittab 运行各种各样的东西。inittab 会指导 init 去调用一个最重要的系统初始化程序 /etc/init.d/rcS,我们将要在 rcS 中完成各个文件系统的 mount,此外,还有在 rcS 中调用 dhcp 程序,把网络架起来。rcS 执行完了以后,init 就会在一个 console 上,按照 inittab 的指示开一个 shell,或者是开 getty + login,这样用户就会看到提示输入用户名的提示符。我们这里为了简单起见,先直接进入 shell,然后等到调试成功以后,再改成直接进入 X Window。

关于 inittab 的语法,我们上面已经提到过了,希望读者朋友们去查权威的 busybox 的用户手册。这里,我们先要讲一下文件系统的构成情况。

安排文件系统

大 家已经看到,我们的 root 文件系统为了避免麻烦,用的是标准的 ext2 文件系统。由于我们的硬盘空间很小,只有不到 16M,而且我们还要在上面放上 X Window,所以,如果我们全部用 ext2 的话,Flash 盘的有限空间会很快耗尽。我们唯一的选择是采用一个适当的压缩文件系统。考虑到 /usr 目录下面的内容在系统运行的时候,是不需要被改写的。我们决定选择只读的压缩文件系统 cramfs 来容纳 /usr 目录下面的全部内容。

cramfs 是 Linus Torvalds 本人开发的一个适用于嵌入式系统的小文件系统。由于它是只读的,所以,虽然它采取了 zlib 做压缩,但是它还是可以做到高效的随机读取。既然 cramfs 不会影响系统读取文件的速度,又是一个高度压缩的文件系统,对于我们,它就是一个相当不错的选择了。

我 们首先把 /usr 目录下的全部内容制成一个 cramfs 的 image 文件。这可以用 mkcramfs 命令完成。得到了这个 usr.img 文件之后,我们还要考虑怎样才能在系统运行的时候,把这个 image 文件 mount 上来,成为一个可用的文件系统。由于这个 image 文件不是一个通常意义上的 block 设备,我们必须采用 loopback 设备来完成这一任务。具体说来,就是在前面提到的 /etc/init.d/rcS 脚本的前面部分,加上一行 mount 命令:

mount -o loop -t cramfs /usr.img /usr

这 样,就可以经由 loopback 设备,把 usr.img 这个 cramfs 的 image 文件 mount 到 /usr 目录上去了。哦,对了,由于要用到 loopback 设备,读者朋友们在编译内核的时候,别忘了加入内核对这个设备的支持。对于系统今后的运行来说,这个 mount 的效果是透明的。cramfs 的压缩效率一般都能达到将近 50%,而我们的系统上绝大部分的内容是位于 /usr 目录下面,这样一来,原本可能要用到 18M 的 Flash 盘,现在可能只需要 11M 就可以了。一个 14M 的 /usr 目录,给压缩成了仅仅 7M。

上 面考虑了压缩问题,下面还要考虑到,Flash 盘毕竟不像普通硬盘,多次的擦写毕竟不太好,所以我们考虑,在需要多次擦写的地方,使用内存来做。这个任务,我们考虑用 tmpfs 来完成。至于 tmpfs 和经典的 ramdisk 的比较,我们这里就不多说了。一般说来,tmpfs 更加灵活一些,tmpfs 的大小不像 ramdisk,可以顺着用户的需要增长或者缩小。我们选择把 /tmp、/var 等几个目录做成 tmpfs。这只需要我们在 /etc/fstab 里面加上两行类似下面的文字就可以了:

none /var tmpfs default 0 0

然后别忘了在 /etc/init.d/rcS 里面靠近开头的地方,加上 mount -a。这样,就可以把 /etc/fstab 里面指定的所有的文件系统都 mount 上来了。

X Window

进 行到这里,读者朋友们可能会以为,X Window 的安装可能会很复杂。其实不然,由于我们上面的架子搭好了,X Window 的安装非常简单,只需要把几个关键的程序拷贝过来就可以了。一般说来,只需要 /usr/X11R6 目录下面的 bin 和 lib 两个目录。然后,根据用户各自的需要,还可以做大幅的裁减。比如,如果你的局域网上有一个开放的 xfs 字体服务器的话,你可以把所有本地的字体都删掉,而使用远端的字体服务器。如果只需要运行有限的程序,别忘了把没有用的 library 都删掉。此外,还可以把多余的 X Window 的 driver 都删掉,只保留本机的显示卡所需要的 driver 就可以了。当然,这一关免不了要做多次测试。

其它技巧

如果你的工作系统式在另外一台机器上,通过局域网和本机互联的话,ssh 是一个不错的工具。此外,ssh 中带的 scp 用起来和普通的 cp 拷贝程序差不多,非常方便。用 ssh 和 scp 来共享文件,远程试验,你就可以不需要在办公室里跑来跑去的了。

如果你需要一个 MS Windows 上运行的 X Server 和 xfs 字体服务器,可以考虑包括在 Red Hat 的 Cygwin 工具箱中的 XFree86 系统。

七大步骤建立可靠的Linux操作系统

许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。本文列出七条管理员能够也应该可以做到的步骤,从而帮助他们建立更加安全的Linux服务器,并显著降低他们所面临的风险。

请任何大型机构的网络管理员对Linux和网络操作系统(如Windows NT或Novell)进行比较,可能他会承认Linux是一个内在更加稳定,扩展性更强的解决方案。可能他还会承认,在保护系统免受外部攻击方面,Linux可能是三者中最难配置的系统。

这种认识相当普遍——许多刚接触Linux的网络管理员发现,他们很难由指向点击式的安全配置界面转换到另一种基于编辑复杂而难以捉摸的文本文件的界面。多数管理员充分认识到他们需要手工设置阻碍和障碍,以阻止可能的黑客攻击,从而保护公司数据的安全。只是在他们并不熟悉的Linux领域内,他们不确定自己的方向是否正确,或该从何开始。

这就是本文的目的所在。它列出一些简易的步骤,帮助管理员保障Linux的安全,并显著降低他们面临的风险。本教程列出了七个这样的步骤,但您也可以在Linux手册和讨论论坛中发现更多内容。

保护根账户

Linux系统上的根账户(或超级用户账户)就像是滚石演唱会上的后台通行证一样——它允许您访问系统中的所有内容。因此,值得采取额外的步骤对它加以保护。首先,用密码命令给这个账户设置一个难以猜测的密码,并定期进行修改,而且这个密码应仅限于公司内的几个主要人物(理想情况下,只需两个人)知晓。

然后,对/etc/securetty文件进行编辑,限定能够进行根访问的终端。为避免用户让根终端“开放”,可设置TMOUT当地变量为非活动根登录设置一个使用时间;并将HISTFILESIZE当地变量设为0,保证根命令记录文件(其中可能包含机密信息)处于禁止状态。最后,制订一个强制性政策,即使用这个账户只能执行特殊的管理任务;并阻止用户默认以根用户服务登录。

提示:关闭这些漏洞后,再要求每一个普通用户必须为账户设立一个密码,并保证密码不是容易识别的启示性密码,如生日、用户名或字典上可查到的单词。

安装一个防火墙

防火墙帮助您过滤进出服务器的数据包,并确保只有那些与预定义的规则相匹配的数据包才能访问系统。有许多针对Linux的优秀防火墙,而且防火墙代码甚至可直接编译到系统内核中。首先应用ipchains或iptables命令为进出网络的数据包定义输入、输出和转寄规则。可以根据IP地址、网络界面、端口、协议或这些属性的组合制订规则。这些规则还规定匹配时应采取何种行为(接受、拒绝、转寄)。规则设定完毕后,再对防火墙进行详细检测,保证没有漏洞存在。安全的防火墙是您抵御分布式拒绝服务(DDoS)攻击这类常见攻击的第一道防线。

使用OpenSSH处理网络事务

在网络上传输的数据安全是客户-服务器构架所要处理的一个重要问题。如果网络事务以纯文本的形式进行,黑客就可能“嗅出”网络上传输的数据,从而获取机密信息。您可以用OpenSSH之类的安全壳应用程序为传输的数据建立一条“加密”通道,关闭这个漏洞。以这种形式对连接进行加密,未授权用户就很难阅读在网络主机间传输的数据。

禁用不必要的服务

大多数Linux系统安装后,各种不同的服务都被激活,如FTP、telnet、 UUCP、ntalk等等。多数情况下,我们很少用到这些服务。让它们处于活动状态就像是把窗户打开让盗贼有机会溜进来一样。您可以在 /etc/inetd.conf或/etc/xinetd.conf文件中取消这些服务,然后重启inetd或xinetd后台程序,从而禁用它们。另外,一些服务(如数据库服务器)可能在开机过程中默认启动,您可以通过编辑/etc/rc.d/*目录等级禁用这些服务。许多有经验的管理员禁用了所有系统服务,只留下SSH通信端口。

使用垃圾邮件和反病毒过滤器

垃圾邮件和病毒干扰用户,有时可能会造成严重的网络故障。Linux有极强的抗病毒能力,但运行Windows的客户计算机可能更易受病毒攻击。因此,在邮件服务器上安装一个垃圾邮件和病毒过滤器,以“阻止”可疑信息并降低连锁崩溃的风险,会是一个不错的主意。

首先安装SpamAssassin这个应用各种技术识别并标注垃圾邮件的一流开源工具,该程序支持基于用户的白名单与灰名单,提高了精确度。接下来,根据常规表达式安装用户级过滤,这个工具可对收件箱接收的邮件进行自动过滤。最后再安装Clam Anti-Virus,这个免费的反病毒工具整合Sendmail和SpamAssassin,并支持电子邮件附件的来件扫描。

安装一个入侵检测系统

  入侵检测系统(IDS)是一些帮助您了解网络改变的早期预警系统。它们能够准确识别(并证实)入侵系统的企图,当然要以增加资源消耗与错误线索 为代价。您可以试用两种相当知名的IDS:tripwire,它跟踪文件签名来检测修改;snort,它使用基于规则的指示执行实时的信息包分析,搜索并 识别对系统的探测或攻击企图。这两个系统都能够生成电子邮件警报(以及其它行为),当您怀疑您的网络受到安全威胁而又需要确实的证据时,可以用到它们。

定期进行安全检查

  要保障网络的安全,这最后一个步骤可能是最为重要的。这时,您扮演一个反派的角色,努力攻破您在前面六个步骤是建立的防御。这样做可以直接客观地对系统的安全性进行评估,并确定您应该修复的潜在缺陷。

  有许多工具可帮助您进行这种检查:您可以尝试用Crack和John the Ripper之类的密码破解器破译您的密码文件;或使用nmap或netstat来寻找开放的端口;还可以使用tcpdump探测网络;另外,您还可以利 用您所安装的程序(网络服务器、防火墙、Samba)上的公开漏洞,看看能否找到进入的方法。如果您设法找到了突破障碍的办法,其他人同样也能做到,您应 立即采取行动关闭这些漏洞。

  保护Linux系统是一项长期的任务,完成上述步骤并不表示您可以高枕无忧。访问Linux安全论坛了解更多安全提示,同时主动监控并更新系统安全措施。

Flash全屏效果

FLASH 全屏有二类四种:

1、不用浏览器直接用FLASH播放器播放的类型:
A、不显示FLASH播放器菜单栏的全屏(类似屏保效果),在第一帧处的Actions用FS Command 命令,在For standalone player 选项中选择fullscreen 为true 即可。运行中可按 ESC 退出或设一按钮在Actions上用FS command ,在For standalone player 选项中选择quit 也可退出。附带说一句:For standalone player上的所的选项只适合于用FLASH 播放器播放的情况。
B、如果仅是要使SWF文件占满FLASH播放器的窗口,什么也不需要做。直接击SWF文件。  以上一类全屏多用在非网络的运行。

2、第二类是在非FLASH 浏览器(如IE)中运行的全屏:
A、只占满浏览器:这种情况相对简单,不管您设的FLASH是否是800*600,只要在调用SWF文件的HTML文件中将WIDTH= HEIGHT= 后面的两个参数设为100即可,当然也可以在FLASH 导出HTML文件的设置中进行设置,方法是:打开FILE菜单:选Publish Settings 弹出导出设置对话框:在HTML标签下的Dimensions选项中下拉后选中Percent,并在WIDTH 和HEIGHT 框中填100,运行这个与SWF同名的HTML文件则与直接加语句同效。这种占满浏览器的全屏与SWF文件的设置无关,但最好设置的大小在700*400附近,否则容易导致图像特别是汉字的失真。
B、不显示浏览器菜单栏、工具栏的全屏。这种全屏稍稍复杂,也与FLASH的设置无关,但要借助Javacript来完成。方法是:在HTML文件中间加入以下代码:<script language="Javascript"><!-- window.open("nfd.swf","","fullscreen=1,menubar=no,width=800,height=600") //--> </script>    注:nfd.swf 改为您要播放的SWF文件名,也可以在SWF文件的第一帧Actions上的URL 命令上加上:javascript:window.open("nfd.swf","","fullscreen=1,menubar=no,width=800,height=600") 注:nfd.swf 改为您要播放的SWF文件名。

这种全屏也是类似屏保,用ALT+F4或设置按钮退出。把fullscreen设为=0,则只是不显示浏览器菜单栏、工具栏的全屏。用FLASH 的 player 播放时,即使没有设置 FSCOMMAND 也可以用 CTRL+F 的方式全屏播放。

whois概览

一. WHOIS的概念

1.1什么是“WHOIS”
“WHOIS”是当前域名系统中不可或缺的一项信息服务。在使用域名进行Internet冲浪时,很多用户希望进一步了解域名、名字服务器的详细信息,这 就会用到WHOIS。对于域名的注册服务机构(registrar)而言,要确认域名数据是否已经正确注册到域名注册中心(registry),也经常会 用到WHOIS。直观来看,WHOIS就是链接到域名数据库的搜索引擎,一般来说是属于网络信息中心(NIC)所提供和维护的名字服务之一。

1.2 WHOIS系统组成

根据IETF标准 要求,WHOIS服务一般由WHOIS系统来提供。WHOIS系统是一个Client/Server系统。其中Client端主要负责:
1)提供访问WHOIS系统的用户接口;
2)生成查询并将其以适当的格式传送给Server;
3)接收Server传回的响应,并以用户可读的形式输出。

Server端则主要负责接收Client端的请求并发回响应数据。Internet上基于TCP协议的基本服务都有自己默认的TCP端口号,象HTTP 服务的默认端口号为80,FTP服务的默认端口号为21等。同样作为Internet上核心服务之一的WHOIS服务,其Server端默认监听43号 TCP端口,接收查询请求并产生响应。一般来说,Server端可以接收三种类型的信息查询:联系人、主机和域名。对于同一查询,Server端的输出应 该具有一致性和稳定性。

1.3 WHOIS工作过程
WHOIS服务是一个在线的“请求/响应”式服务。WHOIS Server运行在后台监听43端口,当Internet用户搜索一个域名(或主机、联系人等其他信息)时,WHOIS Server首先建立一个与Client的TCP连接,然后接收用户请求的信息并据此查询后台域名数据库。如果数据库中存在相应的记录,它会将相关信息如 所有者、管理信息以及技术联络信息等,反馈给Client。待Server输出结束,Client关闭连接,至此,一个查询过程结束。

二. WHOIS的历史及其发展

域名系统理论的建立和应用对于Internet而言具有里程碑式的意义,因而早在ARPANet时代,域名信息就备受网络用户的关注。位于美国加州 Menlo Park的斯坦福研究院(Stanford Research Institute,SRI)在20世纪80年代初行使着DDN网络信息中心(Network Information Center,NIC)的职责,在这里工作的Ken Harrenstien和Vic White等人敏感地意识到提供已注册域名信息的查询对于NIC而言是一项非常重要的工作,于是便开始着手建立WHOIS系统,并将其工作成果提交给 IETF 。经过Ken Harrenstien等人的改进和修改,NICNAME/WHOIS理论得以进一步完善,成为Internet上的标准服务之一 。其中,NICNAME是WHOIS服务在TENEX, TOPS-20和一部分UNIX系统上的叫法。因为ARPANet上主机数目有限,此时的WHOIS服务主要通过位于SRI的中央数据库来维护。

这以后几乎所有的UNIX版本都将WHOIS作为TCP/IP协议栈中的上层应用协议,并实现了著名的客户端程序whois。在绝大多数UNIX和类 UNIX系统中键入man 1 whois,都会得到whois客户端程序的使用帮助。同样,用户只要telnet到运行WHOIS Server的43端口,敲入所需查询的信息,也能得到相应的信息反馈。

随着Internet的急速膨胀,人们意识到集中式的WHOIS Server越来越不能够满足网络用户的需求,于是分布式就成了WHOIS Server的主要发展方向。“Referral WHOIS”(简称为RWhois) 就是这个方向上的研究成果,其主要思路是利用分布式的数据库来维护众多的域名、主机等信息,用referral来指示client经由网络上的多个的 Server最后连到所查询信息的权威WHOIS Server。另一方面,IETF成立了Whois and Network Information Lookup Service Working Group(WNILS)来研究将本地WHOIS服务进行扩展和标准化,并称之为WHOIS++ 。

计算机和网络通信技术在不断发展,WHOIS系统新的功能也在不断增加。比如多语言功能,支持更多的字符集,结构化数据,更强劲的表达式搜索,更安全的数 据连接,更友好的用户界面等等。上世纪90年代以来,Web应用迅速普及,通过Web系统进行域名信息的查询已经成为主流趋势,各级域名注册管理机构都实 现了其基于Web的WHOIS系统,Client端多以网页为主的形式提供。如InterNIC的WHOIS主页:

http://www.internic.net/whois.html
。这样的界面对于普通Internet用户而言更加友好直观,清晰易读。

三. CNNIC WHOIS

3.1 CNNIC WHOIS系统
中国互联网络信息中心(China Internet Network Information Center ,简称CNNIC)是经我国国务院主管部门批准授权,行使我国国家互联网络信息中心职责的管理和服务机构。作为我国的域名体系注册管理机构,CNNIC也 提供了所辖范围内域名信息查询的WHOIS服务。
当前,能注册在CNNIC域名数据库中的域名有三种:

1)CN域名:以.cn结尾的二级域名和三级域名(edu.cn除外),如cnnic.cn、sina.com.cn等;
2)中文域名:至少含有一个中文文字,由中文、字母(A-Z,a-z,大小写等价)、数字(0-9)或符号(-)和域名层次分隔符“.”(或者中文的“。”)组成,最多不超过20个字符的字符串,如中国互联网络信息中心.网络、人民日报.中国、新浪.公司等;
3)通用网址:由中文、字母(A-Z,a-z,大小写等价)、数字(0-9)或符号(-)组成,最多不超过31个字符的字符串,并且不含域名分隔符“.”,如:中国互联网络信息中心、CNNIC等。

相应的,CNNIC WHOIS服务也由三个系统构成:

1).cn域名 WHOIS系统(http://ewhois.cnnic.cn);
2)中文域名WHOIS系统(http://cwhois.cnnic.cn);
3)通用网址WHOIS系统(http://seal.cnnic.cn)。

当前我国有的注册服务机构也提供WHOIS服务,但对于注册在CNNIC的域名等信息,这些注册服务机构的信息来源最终还是CNNIC的WHOIS系统。所以,CNNIC的WHOIS在所辖域内是最权威的。

3.2 CNNIC WHOIS的使用

3.2.1 .cn域名WHOIS查询
使用这个WHOIS系统,Internet用户可以查询除.edu.cn 之外所有注册在CNNIC域名数据库中以.cn结尾的英文域名。只要在“域名查询”栏中输入以.cn结尾的英文域名字符串,然后回车,即可得到查询结果。

如果查询的域名不在CNNIC域名数据库中,比如错误键入了.com或.net等结尾的域名,系统将会显示“你所查询的信息不属于本注册机构”。对于涉 及到著名企业的单位名称、驰名商标等的域名,CNNIC会进行保护性预留,查询这类域名系统会声明“经主管部门批准您申请的域名已经被列入限制注册名 单”。如果所查询的域名还没有注册,或者域名因为不同的理由被CNNIC禁止查询,系统会显示“你所查询的信息不存在”。

同时,按照惯例,该系统还提供注册在CNNIC域名数据库中的联系人信息和主机信息查询,只要在“联系人查询”或“主机查询”栏中输入主机的域名或联系人号,然后回车,系统会返回相应信息。若输入有误,系统会提示“你所查询的信息不存在”。

3.2.2 中文域名WHOIS查询
使用这个系统,Internet用户可以查询注册在CNNIC域名数据库中的中文域名,域名后缀目前可以是“.cn”、“.中国”、“.公司”和“.网 络”四者之一。如果域名分隔符“.”不小心输成了中文句号“。”,系统会进行自动更正并返回正确的查询信息。一般来说,输入简体的中文域名,系统会将相应 的简繁体的中文域名信息都显示到客户端。

CNNIC对于诸如著名企业的单位名称、驰名商标、地理名称等的中文域名,如“北京.公司”,也会给予保护性预留。查询此类域名系统会说明:“该中文域 名已由中国互联网络信息中心预留”。如果查询的域名不在CNNIC数据库中,系统会显示“此域名没有被注册”。如果系统称“此域名不存在”,则有可能是因 为所查询的域名因为某种原因被禁止注册。

Internet用户也可以利用该系统进行联系人和主机信息的查询。

3.2.3 通用网址WHOIS查询
使用这个系统,Internet用户可以查询注册在CNNIC域名数据库中的通用网址相关信息。

若要查询CNNIC进行了保护性预留的通用网址,系统会通知“您查询的通用网址限制注册”;对于禁止注册的通用网址,系统则会显示“您所查询的通用网址不 存在”。如果系统声明“您查询的通用网址/联系人目前没有被注册”,则说明可以向相应的注册服务机构申请注册该通用网址。
使用该系统 Internet用户也可以查询到相关的联系人信息。只需键入所需查询的联系人姓名或联系人号,在其后的下拉列表中选择联系人所属的注册服务机构,回车, 系统就会返回相应信息。如果不清楚联系人属于哪个注册服务机构,也可以保持下拉列表为“全部”,系统会返回所有与输入相符的联系人信息。

综上,CNNIC的WHOIS系统能够在所管理的范围内,提供清晰易读的域名信息。同时CNNIC也在积极进取,不断完善WHOIS系统,努力为广大Internet用户和域名注册服务机构提供更加方便、准确、快捷的域名信息查询服务。