use strict;
use warnings;
use Config;
print "The OS is $Config{osname}, $Config{osvser}\n";
一、 AIX概述
二、 IBM Unix 历史
三、 AIX 5L性能特点
四、 AIX版本历史
一、AIX概述
AIX(Advanced Interactive eXecutive)是IBM开发的一套UNIX操作系统。它符合Open group的UNIX 98行业标准(The Open Group UNIX 98 Base Brand),通过全面集成对32-位和64-位应用的并行运行支持,为这些应用提供了全面的可扩展性。它可以在所有的IBM ~ p系列和IBM RS/6000工作站、服务器和大型并行超级计算机上运行。
二、IBM Unix 历史
自 1986 年 1 月AIX v1推出以来, AIX 就成为 IBM 进入开放系统和标准( UNIX 、 TCP/IP 和以太网)世界的催化剂。从 1990 年到 1994 年, AIX 为支持领先的硬件技术提供了一个优秀的操作系统。 AIX 从一个技术工作站平台发展为一个真正的服务器操作系统。与此同时, IBM 推出了 POWER 微处理器架构并将其与 AIX 结合在一起,制造出第一台 RISC 6000 系统,也就是后来人们所称的 RS/6000 系统。
从 1995 年到 2000 年, AIX 开始将重点放在支持商业和技术应用负载,提供对称多处理以及高端的可扩展性。 IBM 在高性能计算领域所处的领先地位源自运行 AIX 的“深蓝”这样的高可用性系统以及高能集群。随着 2001 年 AIX 5L 的发布, IBM 开始在系统分区领域实现重大的创新。 AIX 利用虚拟技术实现了逻辑分区、动态逻辑分区和微分区,将系统灵活性和使用率提高到了一个新的水平。
IBM 于 2005 年 12 月宣布 AIX 协作中心投入运行。通过 2 年 2 亿美元的投入, IBM 将使用这一设在德州奥斯汀的中心与客户、开发人员、 ISV 和学术界进行合作,推动以 AIX 技术为中心的创新,同时开发、测试和使用各种用于支持 AIX 操作系统的新应用和中间件。
AIX 协作中心将重点推动关键技术领域的系统级创新,如虚拟、安全性、性能和可扩展性,该中心将帮助 ISV 们利用新的 IBM 硬件和软件功能来改进自己在 AIX 上运行的应用。另外,这一中心还将提供包括培训、设备、有经验的技术咨询顾问以及远程或现场测试功能在内的丰富资源,帮助这些 ISV 在 AIX 和最新 64 位 POWER 系统上实现自己的应用。
下面这些"第一个"记录了IBM UNIX系统的技术成长过程.
三、AIX 5L性能特点
AIX 5L 是AIX的当前使用版本,它支持IBM POWER 和Intel 64位(IA-64)平台。“L” 指Linux affinity
虚拟服务器
通过在AIX 5L V5.2中引入动态逻辑分区(DLPAR),IBM为基于POWER4的p系列系统提供了高级的灵活性和可扩展性功能。
LPAR功能使得在一个单一p系列服务器上运行AIX 5L和Linux的多个独立操作系统映像成为可能。逻辑分区不需要与系统的组建模块(资源集合)的物理边界相一致。LPAR允许客户以更小的粒度从整个可用资源池中选择组件,从而能够增加运行的灵活性。一个p系列分区所要求的最少资源包括一个处理器、256MB内存以及一个I/O适配器。
利用DLPAR,客户可以"在一个服务器的内部创建多个虚拟服务器",并能够从活动分区中动态地添加和删除处理器、物理内存和I/O插槽-每个分区都与其它分区相隔离,而且每个分区都运行自己的AIX 5L V5.2操 作系统;添加和删除操作都是在分区环境的内部进行,而且不要求重新执行系统引导。客户可以将系统资源分配给应用程序最需要的地方,在根据不断变化的系统优 先级和资源需求进行调整的同时,能够将多个分区上的负载整合到一个单一服务器上。此外,客户在完成这些工作的同时,能够将运行、服务和支持水平保持在所要 求的级别上。
运行效率和容量规划
为提供更高的灵活性、可扩展性和可用性,AIX 5L V5.2在p650, p670和p690系统上推出了动态随需应变容量升级(CUoD)功能。
CUoD允许客户在进行系统安装时安装比初始需要数量更多的处理器,保持这些处理器(处于休眠状态)直至业务的增长要求将其激活。CUoD选项将为系统管理员提供一个用于激活更多处理器的加密密钥,可以在不中断系统运行的情况下将新激活的处理器动态分配给各个分区。
CUoD提高了系统可用性。当一个处理器的出错频率到达一个错误阀值(尽管发生这种情况的可能性很小),AIX 5L V5.2将以透明的方式激活一个可用的CUoD处理器并使用它来替换故障处理器-直至客户准备好修复计划为止。此外,即使是单处理器分区也可以支持这一被称为动态处理器备用(Dynamic Processor Sparing)的功能,这一功能允许系统在保持处理能力不变的情况下继续运行,能够保证系统的性能和可用性不会受到影响。
集群管理
为实现快速同步和协调响应,集群环境要求节点之间能够进行全面的协作。AIX 5L使用基于AIX 5L的Linux软件和IBM集群系统管理器(CSM)支持和优化集群服务器的管理。CSM为指定p系列和IBM eServer x系列服务器的安装、配置、维护和更新提供了一个单一的控制点。基于AIX 5L的CSM以安装选项和单独许可产品的形式,包括在AIX 5L V5.2基本安装介质之中。
Linux亲和性
AIX 5L与Linux之间的亲和性可以帮助以速度更快、成本更低的方式实现跨AIX和Linux平台的多平台集成解决方案。对于很多在Linux上开发或为Linux开发的应用,只需对源代码进行一次简单的重编译,它们就可以在AIX 5L上运行。IBM免费为客户提供一个用于Linux应用的AIX工具箱,该工具箱由一组多个Linux版本中常见的开放源代码和GNU软件组成。因为这些应用运行在AIX上,所以公司可以将Linux的灵活性与AIX的高级功能结合在一起-这些高级功能包括先进的负载管理、完善的系统管理工具以及可扩展性和安全性功能。
安全性
通过C2级认证的AIX 5L提供并全面使用了强大的行业标准安全技术和目录技术。AIX 5L V5.2包括和扩展了这些技术,它提供了对可拔插身份验证模块(PAM)、基于用户的PKI证书、企业身份映射(EIM)、BIND V9、SNMP V3、移动IPv6、无限访问协议(WAP)v1.1、OpenSSH v3.4的集成支持,并支持新的基于AES(Rijndael)、SEAL、Mars、Twofish和其它算法的加密解密库。此外,AIX 5L V5.2继续支持IBM网络身份验证服务器(NAS)、IBM目录服务器v4.1和ICSA认证IPsec/VPN安全组网功能。AIX 5L V5.2提供的Java安全技术包括JAAS、JCE/JCE、JSSE、JGSS和J-PKI。
四、AIX版本历史
AIX 5L 5.3, 2004年8月
NFS Version 4 支持
Advanced Accounting
虚拟 SCSI
虚拟以太网
SMT
微分区(Micro-Partitioning)
JFS2 配额(quota)支持
JFS2 文件系统收缩(shrink)支持
AIX 5L 5.2, 2002年10月
支持多路IO光纤信道磁盘
动态LPAR支持
AIX 5L 5.1, 2001年5月
引入64位内核
JFS2
AIX 4.3.3, 1999年9月
增加了在线备份功能
AIX 4.3.2, 1998年10月
AIX 4.3.1, 1998年4月
AIX 4.3, 1997年10月
支持 64位 体系
AIX v4, 1994年
AIX v3, 1990年
AIX v3.1
引入了日志文件系统 (JFSv1)
AIX v2
AIX v1, 1986年进入接口->mangle--PREROUTING(用来mangle数据包如改变TOS)
->nat--PREROUTING(用于做DNAT)
->路由判断
->mangle--INPUT
->filter--INPUT
->送达程序
地本程序->路由判断
->mangle--OUTPUT
->nat--OUTPUT
->filter--OUTPUT
->mangle--POSTROUTING
->nat--POSTROUTING
进入接口->mangle--PREROUTING
->nat--PREROUTING
->路由判断
->mangle--FORWARD
->filter--FORWARD
->mangle--POSTROUTING
->离开接口
iptables-save [-c] [-t table]
参数-c的作用是保存包和字节计数器的值。这可以使我们在重启防火墙后不丢失对包和字节的统计。带-c参数的iptables-save命令使重启防火墙而不中断统计记数程序成为可能。这个参数默认是不使用的。
参数-t指定要保存的表,默认是保存所有的表。
iptables-save -c >/root/iptables-backup
iptables-restore [-c] [-n]
参数-c要求装入包和字节计数器。如果你用iptables-save保存了计数器,现在想重新装入,就必须用这个参数。它的另一种较长的形式是--counters。
参数-n告诉iptables-restore不要覆盖已有的表或表内的规则。默认情况是清除所有已存的规则。这个参数的长形式是--noflush。
iptables-restore <back
iptables [-t table] command [match] [target/jump]
表包括nat mangle filter
命令包括
-A, --append
iptables -A INPUT ...
-D, --delete
iptables -D INPUT --dport 80 -j DROP或iptables -D INPUT 1
-R, --replace
iptables -R INPUT 1 -s 192.168.0.1 -j DROP
-I, --insert
iptables -I INPUT 1 --dport 80 -j ACCEPT
-L, --list
iptables -L INPUT
-F, --flush
iptables -F INPUT
-Z, --zero 把指定链(如未指定,则认为是所有链)的所有计数器归零。
iptables -Z INPUT
-N, --new-chain
iptables -N allowed
-X, --delete-chain
iptables -X allowed
-P, --policy
iptables -P INPUT DROP
-E, --rename-chain
iptables -E allowed disallowed
free的输出参数
[root@supersun ~]# free -t
total used free shared buffers cached
Mem: 459568 451368 8200 0 4760 126120
-/+ buffers/cache: 320488 139080
Swap: 514072 119348 394724
Total: 973640 570716 402924
我们使用total1、used1、free1、used2、free2 等名称来代表上面统计数据的各值,1、2 分别代表第一行和第二行的数据。
total1:表示物理内存总量。
used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free1:未被分配的内存。
shared1:共享内存,一般系统不会用到,这里也不讨论。
buffers1:系统分配但未被使用的buffers 数量。
cached1:系统分配但未被使用的cache 数量。buffer 与cache 的区别见后面。
used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量。
free2:未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存。
整理出如下等式:
total1 = used1 + free1
total1 = used2 + free2
used1 = buffers1 + cached1 + used2
free2 = buffers1 + cached1 + free1
tips:将“-/+ buffers/cache”理解为第一行的used - “buffers/cache”第一行的free +“buffers/cache”
buffers: A buffer is something that has yet to be "written" to disk;
cached: A cache is something that has been "read" from the disk and stored for later use.
解压内核
tar jzxvf linux-xxx.tar.bz2
cd linux-xxx
如果需要打补丁的话就打上
patch -pl <</dir/to/patchfile
make mrproper
进入配置菜单
make menuconfig
解决依赖关系
make dep (optional)
make clean
编译内核
make bzImage
编译模块
make modules
安装模块
make modules_install #install to /lib/modules/kernel-version/
cd /boot
mkinitrd initrd-kernel-version.img kernel-version
cd /dir/to/kernel-source/
cp arch/i386/boot/bzImage /boot/vmlinuz-kernel-version
cp System.map /boot/System.map.kernel-version
cd /boot/
rm -rf System.map
ln -s System.map.kernel-version System.map
cat >>/boot/grub/grub.conf <<DATA
title linux-kernel-version
root (hdn,n)
kernel /boot/vmlinuz-kernel-version ro root=/dev/xxx
initrd /boot/initrd-kernel-version.img
DATA
tar zxvf dhcp-3.0.5.tar.gz
cd dhcp-3.0.5
./configure
make
make install
vi /etc/dhcpd.conf
touch /var/state/dhcp/dhcpd.leases
下面是dhcpd.conf的一个例子
[root@supersun dhcp]# cat dhcpd.conf
ddns-update-style interim;
ddns-update-style ad-hoc;
max-lease-time 86400;
default-lease-time 86400;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.220 192.168.2.249;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.2.255;
option routers 192.168.2.254;
option domain-name-servers 192.168.2.20;
option domain-name "ns1.dareway.cn";
host platinum {
hardware ethernet 00:12:79:D5:53:25;
fixed-address 192.168.2.20;
}
# host bchyi {
# hardware ethernet 00:80:c8:e4:c1:e4;
# fixed-address 172.25.39.2;
# }
}
ftp://xmlsoft.org/libxml2/libxml2-2.6.20-1.i386.rpm
ftp://xmlsoft.org/libxml2/libxml2-devel-2.6.20-1.i386.rpm
flex-2.5.4a-29.i386.rpm
歌手:Linkin Park 专辑:Meteora Memories concern Like opening the wound I'm picking me apart again You all assume I'm safer in my room Unless I try to start again I don't want to be the one Who battles always choose Cuz inside I realize That I'm the one confused I don't know what's worth fighting for Or why I have to scream I don't know why I instigate And say what I don't mean I don't know how I got this way I know it's not alright So I'm breaking the habit I'm breaking the habit tonight Cultured my cure I tightly lock the door I try to catch my breath again I hurt much more Than anytime before I have no options left again I dont want to be the one Who battles always choose Cuz inside I realize That I'm the one confused I don't know what's worth fighting for Or why I have to scream I don't know why I instigate And say what I don't mean I don't know how I got this way I'll never be alright So, I'm breaking the habit I'm breaking the habit tonight I'll paint it on the walls Cuz I'm the one that falls I'll never fight again And this is how it ends I don't know what's worth fighting for Or why I have to scream But now I have some clarity to show you what I mean I don't know how I got this way I'll never be alright So, I'm breaking the habit I'm breaking the habit I'm breaking the habit tonight
春天的花会开
阳光照进来
心儿长了翅膀飞了起来
飞到你胸怀!
你的心事我明白
试着说出来
春天的味道四处飘散
太阳也升起来
爱上你这样的女人
给了你全部的温存
即使你有太多的疑问
我会陪你到清晨
爱上你这样的女人
每天每夜为你伤神,
哪怕你有一天会离开我
我会爱你到永远,——这一生
http://cn.stareastnet.com/music/NetFriend/MusicFile/3390.mp3

插件地址:
http://alogblog.com/movabletype/plugins/quickimagepost_a_blogging_tool_for_an_entry_with_representative_image/
下载地址:
http://alogblog.com/downloads/dn.cgi?QuickImagePost-3.3.02.tar.gz
解压文件并将内容复制到对应的目录
/mt-static/plugins/alogblog/QuickImagePost.xpi
文件复制到本地,使用浏览器运行,然后重启firefox
找到图片,右键就可以看到 QuickImagePost的图标了,设置后就可以图片一键发布了
#!/usr/bin/perl -w
use strict;
my $file=shift;
my $hostname=shift;
open FD,'+<',$file;
while(<FD>)
{
if($_ =~ /(127.0.0.1\s+)(\S+$)/)
{
seek FD,-length($_),1;
print FD $1,$hostname," ",$2;
close FD;
exit 0;
}
}
close FD
[root@supersun changehostname]# cat hosts
127.0.0.1 localhost.localdomain localhost
192.168.2.11 newmail
[root@supersun changehostname]# ./host.pl hosts sun
[root@supersun changehostname]# cat hosts
127.0.0.1 sun localhost.localdomain localhost
192.168.2.11 newmail
[root@supersun changehostname]#
seek的用法
seek FH,$pos,0 这里的$pos是指针的绝对位置如: seek FH,0,0指针移到文件的开始处
seek FH,$pos,1 向前或向后移动$pos个字节,如果$pos为正则指针前移,$pos为负则指针后移
seek FH,$pos,2 相对于文件结尾处进很定位
更改文件/etc/sysconfig/netwrok
系统启动时使用该文件定义主机名
[root@supersun changehostname]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=supersun
GATEWAY=192.168.1.245
另外使用命令
hostname supersun
vi /etc/hosts
127.0.0.1 supersun localhost.localdomain localhost
I've lied to you
The same way that I always do
This is the last smile
That I'll fake for the sake of being with you
Everything falls apart
Even the people who never frown eventually break down
The sacrifice of hiding in a lie
Everything has to end
You'll soon find we're out of time left to watch it all unwind
The sacrifice is never knowing
Why I never walked away
Why I played myself this way
Now I see your testing me pushes me away
I've tried like you
To do everything you wanted too
This is the last time
I'll take the blame for the sake of being with you
Everything falls apart
Even the people who never frown eventually break down
The sacrifice of hiding in a lie
Everything has to end
You'll soon find we're out of time left to watch it all unwind
The sacrifice is never knowing
Why I never walked away
Why I played myself this way
Now I see your testing me pushes me away
We're all out of time
This is how we find how it all unwinds
The sacrifice of hiding in a lie
We're all out of time
This is how we find how it all unwinds
The sacrifice is never knowing
Why I never walked away
Why I played myself this way
Now I see your testing me pushes me away
Pushes me away...
Pushes my away
It starts with one thing
I don't know why
It doesn't even matter how hard you try
keep that in mind
I designed this rhyme
To explain in due time
All I know
Time is a valuable thing
Watch it fly by as the pendulum swings
Watch it count down to the end of the day
The clock ticks life away
It's so unreal
Didn't look out below
Watch the time go right out the window
Trying to hold on, but didn't even know
Wasted it all just to watch you go
I kept everything inside and even though I tried, it all fell apart
What it meant to me will eventually be a memory of a time when
I tried so hard
And got so far
But in the end
It doesn't even matter
I had to fall
To lose it all
But in the end
It doesn't even matter
One thing, I don't know why
It doesn't even matter how hard you try
keep that in mind
I designed this rhyme, to explain in due time
I tried so hard
In spite of the way you were mocking me
Acting like I was part of your property
Remembering all the times you fought with me
I'm surprised it got so (far)
Things aren't the way they were before
You wouldn't even recognize me anymore
Not that you knew me back then
But it all comes back to me (in the end)
You kept everything inside and even though I tried, it all fell apart
What it meant to me will eventually be a memory of a time when I
Chorus
I've put my trust in you
Pushed as far as I can go
And for all this
There's only one thing you should know (2x) Chorus
OpenGL是个与.硬件无 关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于 OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等 3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。
在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互 的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。
OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了 OpenGL的1.0版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面 市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶 点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL 1.5又新增了“OpenGL Shading Language”,该语言是“OpenGL 2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。
OpenGL 2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管 理上与DirectX共同合作以维持均势。OpenGL 2.0将由OpenGL 1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此 外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户的认知程度并不高,未来的OpenGL发展前景迷茫。
[Verse 1]
I had nothing to say
and i get lost in the nothingness inside of me
(i was confused)
and i live it all out to find, but im not the only person wit these things in mind
(inside of me)
but all that they can see the words revealed
is the only real thing that i got left to feel
(nothing to lose)
just stuck hollow and alone
and the fault is my own and the fault is my own
[Chorus]
i wanna heal i wanna feel what i thought was never real
i wanna let go of the pain ive felt so long.
erase all the pain til its gone
i wanna heal i wanna feel like im close to something real.
i wanna find something ive wanted all along
somewhere i belong
and i got nothing to say. i cant believe i didnt fall right down on my face
(i was confused)
look at everywhere only to find.
it is not the way i had imagined it all in my mind.
(so what am i)
what do i have but negativity
cuz i cant trust no one by the way everyone is looking at me
(nothing to lose)
nothing to gain im hollow and alone
and the fault is my own
and the fault is my own
[repeat chorus]
[Verse 3] (Chester)
I will never know myself until i do this on my own
cuz i will never feel anything else until my wounds are healed
i will never be anything til i break away from me
i will break away. ill find myself today
[repeat chorus]
正文
列表结束
图片

粗体
斜体
下划线
测试结束,怎么没有代码引用啊!
perl-Digest-SHA1-2.01-15.1.i386.rpm
perl-Digest-HMAC-1.01-11.1.noarch.rpm
perl-Authen-SASL-2.03-1.rh.el.um.1.noarch.rpm
perl-Convert-ASN1-0.16-2.rh.el.um.1.noarch.rpm
perl-HTML-Tagset-3.03-28.noarch.rpm
perl-HTML-Parser-3.26-17.i386.rpm
libghttp-1.0.9-8.1.i386.rpm
libnet-1.1.0-1.rh.el.1.i386.rpm
libnet-debuginfo-1.1.0-1.rh.el.1.i386.rpm
perl-HTTP-GHTTP-1.07-1.n0i.3.i386.rpm
perl-Net-SSLeay-1.23-1.rh.el.um.1.i386.rpm
perl-Net-SSLeay-debuginfo-1.23-1.rh.el.um.1.i386.rpm
perl-IO-Socket-SSL-0.92-1.rh.el.um.1.noarch.rpm
perl-URI-1.21-7.noarch.rpm
perl-XML-NamespaceSupport-1.08-1.rh.el.um.1.noarch.rpm
perl-libwww-perl-5.65-6.noarch.rpm
perl-XML-Parser-2.31-15.i386.rpm
perl-XML-SAX-0.12-1.rh.el.um.1.noarch.rpm
perl-Parse-RecDescent-1.80-1.rh.el.um.1.noarch.rpm
perl-ldap-0.2701-1.rh.el.um.1.noarch.rpm
perl-Mail-IMAPClient-2.2.7-1.rh.el.um.1.noarch.rpm
openssl-perl-0.9.7a-33.12.i386.rpm
openssl096b-0.9.6b-16.i386.rpm
ipvsadm-1.21-1.rh.el.1.i386.rpm
ipvsadm-debuginfo-1.21-1.rh.el.1.i386.rpm
heartbeat-pils-1.2.3-2.rh.el.3.0.i386.rpm
heartbeat-stonith-1.2.3-2.rh.el.3.0.i386.rpm
heartbeat-1.2.3-2.rh.el.3.0.i386.rpm
heartbeat-ldirectord-1.2.3-2.rh.el.3.0.i386.rpm
/var/qmail/supervise/qmail-pop3d/run这个文件
更改前:
exec tcpserver -H -R -v -t 1 -c100 0 110 qmail-popup mail.xxxx.cn \
home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
更改后:
exec tcpserver -H -R -v -l mail.xxxx.cn -c100 0 110 qmail-popup mail.xxxx.cn \
/home/vpopmail/bin/vchkpw qmail-pop3d Maildir 2>&1
-l localhost 不使用dns查找本地服务器主机名,而使用localhost
用法: wget [选项]… [URL]…
长选项必须用的参数在使用短选项时也是必须的。
启动:
-V, –version 显示 Wget 的版本并且退出。
-h, –help 打印此帮助。
-b, -background 启动后进入后台操作。
-e, -execute=COMMAND 运行‘.wgetrc’形式的命令。
日志记录及输入文件:
-o, –output-file=文件 将日志消息写入到指定文件中。
-a, –append-output=文件 将日志消息追加到指定文件的末端。
-d, –debug 打印调试输出。
-q, –quiet 安静模式(不输出信息)。
-v, –verbose 详细输出模式(默认)。
-nv, –non-verbose 关闭详细输出模式,但不进入安静模式。
-i, –input-file=文件 下载从指定文件中找到的 URL。
-F, –force-html 以 HTML 方式处理输入文件。
-B, –base=URL 使用 -F -i 文件选项时,在相对链接前添加指定的 URL。
一.前言
Security Enhanced Linux(以下简称为SELinux)是RedHat Enterprise Linux 4(以下简称为RHEL4)上新的安全机制,在以往的RHEL系统中从未使用,这使得很多资深的系统管理员已开始使用RHEL4时弄得一头雾水,出现了很 多莫名其妙的错误,随后寻找帮助才发现原来是SELinux弄的。由于SELinux有着严格的安全控制和管理权使得系统管理员一时不知如何设定,索性就 关闭了,很是可惜。究其原因,是当一个事物出现时,如果他给你带来了麻烦,增加了工作量,便对其产生了厌恶感,这是人之常情。本文暂不探讨SELinux 复杂的内部运作机制,只是先让读者对SELinux有个初步的认识和了解,希望能在您的心里对SELinux留下一个好的印象,并认识到尽管一开始时有些 麻烦,但当你熟悉了它以后,系统的管理会变得更轻松。
二.认识DAC与MAC
在介绍SELinux之前,读者需要了解两个基本的系统访问控制机制:
☆ DAC(Discretionary access control,自主访问控制):DAC机制就是指对象(比如程序、文件或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。例如传统Linux,Windows等。
☆ MAC(Mandatory Access Control,强制访问控制):MAC机制是指系统不再允许对象(比如程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式为每个对象统一授予权限,例如SELinux。
图1 DAC与MAC的不同(引自 Security Features in Red Hat Enterprise Linux 4)
三.SELinux的出身
National Security Agency(美国国家安全局,以下简称为NSA)一直非常关注计算机操作系统的安全领域。毕竟他们的工作任务之一就是要确保美国政府使用的计算机的安 全,保证在其面临没完没了的攻击时仍能安全可靠的运行。NSA发现大部分操作系统的安全机制,包括Windows和大部分UNIX以及Linux系统,都 是以DAC机制为安全认证基础的。由于DAC机制的设计很不利于系统安全,NSA便一直致力于开发出一套好的MAC安全认证机制。
MAC并不是由 NSA发明的,它很早就出现了,但由于MAC的诸多问题,使得大型系统提供商对于将MAC集成到自己的系统中始终没有兴趣。即使是那些集成了 MAC 的提供商也通常是将其做为可选件提供,而没有默认安装使用。原因很多,一是因为MAC还不够灵活,二是对于像Windows客户系统这种面向普通用户的系 统来说,MAC加大了系统管理和使用的复杂性,得不偿失。于是NSA的为了推广MAC,确立了MAC下一步的研究方向,为使MAC更灵活并且并更容易被嵌 入到操作系统。
起初,NSA的MAC系统是在LOCK系统上基于类型增强而且策略灵活的强制访问控制体系,并且随后发展为两个基于Mach的系统: DTMach和DTOS,后来在犹他大学的微内核操作系统Fluke上实现出来,并命名为Flask安全体系。NSA希望有操作系统商能支持其开发的 MAC机制,但由于所有的这些工作都是基于实验室,极少可以在实验室之外来进行尝试,以查看这些思想在真实的应用程序的可行性,加之为保密项目,因此很难 说服某个系统商采用,谁也不敢头一个吃这个螃蟹。于是,NSA决定选择开源代码的Linux系统为实际市场试验系统。NSA把Flask安全体系集成到 Linux操作系统中,SELinux便孕育而生,为了真正配合SELinux在Linux系统上的应用实施,NSA将SELinux作为一个开放源码项 目发布出来,从而能获得更加广泛的开发者和用户支持。
毫无意外,使用真正的系统让 NSA 研究人员可以更好的理解SELinux在实际中的应用,而其中体现出的问题是在试验系统中无法找到的。NSA的这一开源措施,在开源界犹如一颗原子弹,业 界普遍对此是欢迎的,但也不能说NSA是为此作出了牺牲,因为这是个双赢的举措,因为没有Linux这个试验田,NSA的SELinux很难修得正果。另 外选择Linux不是毫无理由的:首先,Linux系统拥有着众多的使用用户,而且很多用户本身具有很高的技术水平;其次,Linux基于开源,这样使得 SELinux不属用任何商业组织或公司,防止依此来牟利,也不利于SELinux的发展;最后,对于Linux,它作为新兴的操作系统,在桌面领域很难 打败Windows,因此它主要面对服务器领域,而安全就显得至关重要,SELinux正好是它所迫切需要的。RedHat是个很聪明的公司, Fedora是其领导的Linux开源组织。其实说穿了,Fedora就是其企业发行版的实验田。RedHat首先选择了Fedora Core 2作为第一个SELinux实验操作系统,但是预设为不开启,但SELinux在其平台上的表现还是取得了成功。到了Fedora Core3,SELinux已经默认为开启,然后经过修改,我们便在RHEL4上也看到SELinux。
另外需要补充说明的是,读者不要以为仅仅存在SELinux这一个MAC项目,还有很多其他的MAC实现项目,用于其他不同的系统中。
四.SELinux原理
在SELinux 中,每个对象(程序、档案、进程等)都拥有一个Security Context(安全上下文),它就像标签一样,贴在每个对象身上,上面记载着这个对象所具有的权限。而我们可以通过制定Security Policy(安全策略)来定义这些Security Context,从而定义哪种对象具有哪些权限。当一个对象需要执行某个动作时,系统会依照Security Policy所制定的内容来检查相对应的权限,如果全部权限都符合的话,系统就会允许这个操作的执行,否则都将遭到拒绝或失败。这些过程不会影响到其它正 常运行的对象,系统会保证它们的安全系统结构以及稳定运行。这里还要说明的是,到目前为止,SELinux系统中的某个对象需要执行某个动作的时,系统权 限认证不仅仅单独根据Security Policy所制定的内容来检查,同时还要根据传统DAC来检测,只有DAC以及SELinux全部认证通过了才能进行正常操作。
如果读者了解 chroot,那么就能很好的理解SELinux。 chroot 就是把某程序置于文件系统下的某一处,而当运行的时候,就不会离开这个文件系统的部份,也就是不会影响整个的文件系统。就好比如果把所有的对象都分配到不 同的domain(域)中。而不同的 domain 却彼此独立,而且如果没有经过授权的对象就不可以在domain之间传递数据,也就是说对象不能没有授权就由domain A 跳到 domain B中,情况就如 chroot 一样。
在传统的类Unix中,root拥有着所有权限,有些用户使用采用SELinux的Linux时发现自己就是root,但为何有些事情却不允许 执行。其实说穿了就是因为 root 所属的 domain 没有授权可以跳到所需要执行某程序的domain下,也就无法做希望的工作了。
在 SELinux系统启动的时候,会加载一个叫做 policy,* 的安全策略权限文件,这文件内中就定义了相关权限。如果你之前设定了 SELinux 是不能在开机后转回 permissive 模式的话,那你的 root 则可能无法修改当中的设定!也就是说root在SELinux中已经不具有默认的所有权限。那到底这有什么好处呢?其实好处就如 chroot 一样把系统内任何东西都加上一层保护层。那就算是入侵进入了你的计算机,也只能在他破坏他入侵的这个domain环境!
对于RHEL4系统,如何检测是否已经安装了SELinux呢。首先检查你的Linux系统的核心是否有支持ACL的功能。因为Linux系统并不是每一个版本的核心都有支持ACL的功能,而最简单的方法就是检查系统目前的核心能否支持:
# cat /boot/config-2.6.9-11.EL | grep ACL
CONFIG_EXT2_FS_POSIX_ACL=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_FS_POSIX_ACL=y
注:config-2.6.9-11.EL位置根据系统的不同而不同,这里用的是RHEL4.1。
此时如果能看到上面的几项则表示已经编译到核心中,ext3文件系统已支持ACL功能,这些功能在编译核心选项中也可以找到。
五.传统Linux 与SELinux
传统Linux的安全认证基于内核的DAC机制,这种机制在遇到一个有缺陷或是恶意编写的程序时就会导致很大的问题出现,尤其是对于 setuid/setgid这种权限的设计。有些程序员在程序设计时,当需要设置执行权限的时候,为了省事就直接用 setuid root,这样的好处是给予程序最大的用户权限root来运行,避免了因权限引起的问题,大大简化程序的设计,但是这种方式是极其危险的。本文已经提及 过,类Unix系统中的root拥有绝对的权限,如果某个有缺陷的程序以root用户运行,可能会破坏系统文件甚至系统核心部分。如果是网络服务程序,其 漏洞很容易被黑客利用并发起攻击,造成不可预知的后果。
SELinux的安全认证基于内核外的MAC机制,这种机制使得系统管理员可以定义整个系统的安全策略,这个策略可以基于其他因素,例如用户的 角色、程序的可信性及预期使用、程序将要使用的数据的类型等等,来限制对象所具有的权限。当你正确配置了SELinux系统,不正常的应用程序只会影响自 己权限内的domain,而对其它domain中的对象没有丝毫影响。其它用户程序的安全性和他们的后台程序仍然可以正常运行,并保持着它们的安全系统结 构。例如你某个服务是以 root 的权限执行的。而此服务存在着一个极严重的 bug ,而使得入侵者可以通过这个服务的漏洞进入系统。但如果你的 Linux 系统有SELinux 保护的话,那么入侵者仍没有办法破坏整个系统,因为它被这个服务所属的 domain 所限制。但是没有 SELinux 保护的系统,它就可能因此而入侵整个系统,而产生不可预料的后果。
但是前提是要有好的安全原则,SELinux 最麻烦的就是需要配置一个好的Policy 才可以让 SELinux 发挥效果。制定的太宽松会使 SELinux 毫无用武之地,而太严格又会让使用者连日常工作都变的麻烦至极。NSA让制定安全原则的工作由系统地发行者来做,而像Fedora、Redhat、 Novell SUSE 、Debian、Gentoo 等都制定了一套基本的安全原则用于自己的系统。
凭借着SELinux在Linux 上这一个十分重要技术的应用,使其在加强了安全级别,传统的Linux 安全级别一直是 C1 级或 C2 级,和 Windows 服务器的安全级别相同,而 SELinux 把 Linux 的安全级别提升至 B1 级,达到了基本的军事级别。
在RHEL4中, SELinux 与一系列因特网服务加以整合,包括 BIND、Network Time Protocol (NTP)、Apache等,使得其优点能够更轻易地拓展。其要求极度安全环境的组织,可以于更多的应用程序上实作更广泛的SELinux 功能,甚至为
每一服务制定严格的SELinux 原则。。比如,传统的Linux 系统若遭黑客侵入Web Server,可能导致整个系统的瘫痪;但有了SELinux 的保护,我们可以很容易的建立一个只能在特定程序及特定的安全系络中才能执行的 Web 服务器,尽管Web Server被入侵,那么他也只能破坏这个Web Server,无法影响到其它的系统区域,将受害范围减至最少。
列出或杀死匹配的程序
#!/bin/sh
#name:lkp
#comment:list or kill processor
if [ $# = "2" ] && [ $2 = "l" -o $2 = "k" ] ; then
{
if [ -z "$2" -o "$2" = "l" ]; then
ps aux |grep "$1" |grep -v "grep"|grep -v "/bin/sh"|awk '{print "\t" $1"\t"$2"\t"$11}'
elif [ "$2" = "k" ]; then
ps aux |grep "$1" |grep -v "grep"|grep -v "/bin/sh"|awk '{print $2}'|xargs kill
else
echo "Useage:$0 processname l|k";
fi
}
else
{
echo "usage:
list the match processor: `basename $0` processor2match l
kill the match processor: `basename $0` processor2match k"
}
fi
去掉注释:
#!/bin/sh
#name:clcom
#clear the comment
grep -v -e "^#" -e "^ *#" -e "^$" $1
rhythmbox:
yum install rhythmbox gstreamer-plugins-ugly gstreamer-plugins
-bad
下面是我的/etc/yum.conf
[fc5]
name=vmmatrix
baseurl=http://mirror.vmmatrix.net/Fedora/core/5/i386/os/
[development]
name=vmmatrix1
baseurl=http://mirror.vmmatrix.net/Fedora/core/development/i386/os
[extra]
name=vmmatrix2
baseurl=http://mirror.vmmatrix.net/Fedora/extras/5/i386/
运行了一下locale命令,出现一堆输出,
LANG=C
LC_CTYPE="zh_CN.GB2312"
LC_NUMERIC="zh_CN.GB2312"
LC_TIME="zh_CN.GB2312"
LC_COLLATE="zh_CN.GB2312"
LC_MONETARY="zh_CN.GB2312"
LC_MESSAGES="zh_CN.GB2312"
LC_ALL=zh_CN.GB2312
它们都是什么意思?
Qmail的开发者dan Bernstein 开发了ucspi-tcp(UNIX客户-服务器程序端口)包来取代inetd程序。Ucspi格式定义了一种程序来交换数据的方法,主要体现出三个优点:
1、 ucspi端口独立于底层的通讯介质。
2、 ucspi允许shell脚本程序利用网络的互联。
3、 ucspi程序建立了unix环境变量,这些变量定义了可以被程序和用户使用的网络信息。
Ucspi-tcp使用称为tool的程序在应用程序之间建立连接。有两种类型的ucspi tool ---客户tool(tcpclient)和服务器tool(tcpserver)。
Ucspi-tcp的tcpserver程序就是替代unix的inetd程序的,有如下优点:
1、他能够把来自服务器端的所有输入和输出都记到一个文件中。
2、他能提供访问控制特征,拒绝或者允许来自客户端的连接。
3、它包含了并发限制,防止使unix系统过载。
/etc/skel建立使用起来非常简单。它使所有在LFS系统上面的新用户拥有一样的初始设置。 /etc/skel目录是被 /usr/sbin/useradd 使用的。
阅读man useradd可以得到更多信息
开始需要建立一个/etc/skel 目录,最好使用root用户。然后把你想要新用户拥有的配置文件拷贝到/etc/skel目录。比如: .bash_profile, .bashrc, .bash_logout, dircolors, .inputrc, 和 .vimrc。
当使用 /usr/sbin/useradd建立新用户的时候使用 -m 参数,例如:
useradd -m -s/bin/bash jwrober
/usr/sbin/useradd使用了一系列缺省设置,位于 /etc/default/useradd(如果这个文件存在的话)。如果这个文件不存在,它会使用其内部缺省设置,可以用/usr/sbin/useradd -D 来列处这些设置。
如果想对这个缺省设置作一些变动,就要建立一个 /etc/default/useradd 文件,并使用和 /usr/sbin/useradd -D输出一样的内容。例如:
# /etc/default/useradd 开始
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel
# /etc/default/useradd 结束
里面少了对缺省shell的设置。运行此命令添加:
/usr/sbin/useradd -D -s/bin/bash
这样 SHELL= 那一行将被设置成 SHELL=/bin/bash。这样使得在LFS系统增加新用户更加容易。 /usr/sbin/useradd 有很多参数可以在/etc/default/useradd中设置。可以阅读man手册来获取更多细节。
#!/usr/bin/perl -w
#name:getmail.pl
use strict;
use Mail::POP3Client;
my $user="user";
my $passwd="password";
my $host="pop.163.com";
my $pop=new Mail::POP3Client(USER=>$user,PASSWORD=>$passwd,HOST=>$host);
for( my $i = 1; $i <= $pop->Count(); $i++ ) {
foreach( $pop->Head( $i ) ) {
print $_, "\n";
}
}
$pop->Close();
print "--------------------------------\n";
print " Over\n"
print "--------------------------------\n";
运行此脚本,就可以得到信件头部信息了,如果要运用该模块的其他功能,可以用
perldoc Mail::POP3Client
查阅。当然我们还可以写脚本进行过滤。
默认的情况下ssh是要输密码的,当然ssh也提供其他的验证方法,公钥认证就是其中的一种。
首先,在客户端生成一个对钥:
[root@supersun .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
fa:49:6c:0a:90:0e:0f:57:2e:21:79:f6:65:7f:8d:42 root@supersun
这里我们用的是rsa算法,我们也可以使用dsa算法:
ssh-keygen -t dsa
从上面可以看到,提示输入私钥的保护密码,我们也可以不选,直接ENTER就行了!
现在密钥已经生成:
id_rsa(私钥) id_rsa.pub(公钥)
如果是dsa算法生成的话:
id_dsa id_dsa.pub
我们将公钥传到服务器的.ssh目录下.
scp id_rsa.pub user@hostname:/home/user/.ssh/authorized_keys
将/etc/ssh/sshd_config
中的rsa认证功能打开.(去掉注释)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后重新启动sshd就行了.
如果是dsa算法的话同理.
参考:http://www.imacat.idv.tw/tech/sslcerts.html.zh-cn
在/home目录下建立ssl目录:
cd /home
mkdir ssl
cd ssl
建立几个要用到的目录:
mkdir private certs newscerts crl
其中private主要用来存放私钥的.
certs用于存入签出的书
将配置文件复制到当前目录
cp /usr/share/ssl/openssl.cnf /home/ssl/
设定环境变量
export OPENSSL_CONF="/home/ssl/openssl.cnf"
更改openssl.cnf中的配置:
dir = /home/ssl
产生一个随机数文件:
openssl rand -out /home/ssl/private/.rand
1.制作私钥:
[root@supersun perl]# cat getindex.pl
#!/usr/bin/perl -w
#function:get the index ;
#useage:
# getindex.pl filename url
use strict;
use LWP::Simple;
my $file=shift;
my $url=shift;
my $count=get $url;
open HD,'>',$file;
print HD $count;
close HD;
得到文件filename其中的内容为web页的内容;
如:
[root@supersun perl]# ./getindex.pl filename http://list.mp3.baidu.com/topso/mp3topsong.html#top2
下面我们再来解析文件filename
[root@supersun perl]# cat link.pl
#!/usr/bin/perl -w
use strict;
my $file=shift;
my @link;
open HD,$file;
my @count=
my %result;
foreach my $util (@count)
{
if($util =~ m{http://mp3.baidu.com/} and $util =~ m|
{
$util=~ s|
my @hello=split ' ',$util;
shift @hello;
$hello[1] =~ s|target.*?>||g;
$hello[1] =~ s|||;
$hello[0] =~ s/(href=|")//g;
$result{@hello[1]}=$hello[0];
}
}
foreach my $key (keys %result)
{
print "Key:$key\nLink:$result{$key}\n";
}
运行:
[root@supersun perl]# ./link.pl filename
部分结果如下:
Key:大女人
Link:http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=500&word=%B4%F3%C5%AE%C8%CB+%D5%C5%D3%EE
Key:娃娃
Link:http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=500&word=%CD%DE%CD%DE+%D5%C5%C9%D8%BA%AD
Key:星晴
Link:http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=500&word=%D0%C7%C7%E7+%D6%DC%BD%DC%C2%D7
此时,我们已经得到歌曲的名字及相应的搜地址了,下面的工作就是下载相应的mp3文件,待续。。。。。。。
本来呢,用wget已经实现了,apple说在windows下用monad也很容易,我也写了一个perl脚本抓取:
http://man.chinaunix.net/tech/lyceum/linuxK/tlk.html
这个手册。脚本内容如下:
看到cu上的man手册页想下载下来,可是没有打包下载的,又不想手动一个一个下载页面。之前写过一个perl脚本,不过还是有点烦琐!这两天看了wget的手册页,发现wget可以这一功能。
所下手册地址:
http://man.chinaunix.net/tech/lyceum/linuxK/tlk.html
首先下载tlk.html
wget http://man.chinaunix.net/tech/lyceum/linuxK/tlk.html
得到tlk.html文件。
下载tlk.htl中的链接:
wget -x -nc -B http://man.chinaunix.net/tech/lyceum/linuxK/ -F -nH --cut-dirs=3 -i tlk.html
得到以下两个文件:tlk-title.html tlk-toc.html
然后再下载以上两个文件中的链接
wget -x -nc -B http://man.chinaunix.net/tech/lyceum/linuxK/ -F -nH --cut-dirs=3 -i
tlk-title.html
wget -x -nc -B http://man.chinaunix.net/tech/lyceum/linuxK/ -F -nH --cut-dirs=3 -i tlk-toc.html
这样,整个手册就下完了!
组成部分:
一组数组块 索引节点是长度固定的表项,每个索引节点保存一个文件的信息。 超级块是一个描述文件系统特性的记录。它包含的信息有:磁盘块的长度,索引节结点表的大小和位置,磁盘块的映射表和使用信息,块 簇的大小,以及其他几个重要文件系统参数。 系统调用sysc把被缓存的超级块冲洗(flush)到硬盘的永久位置上,让文件系统保持一致性同时sync冲洗被修改过的索引结点和缓存的数据块。update命令通常在引导时刻运行,启动守护进程bdflush每30秒执行一次sync ext3: mode: ordered(规则) writeback(写回) journal(日志) fstab date=mode fsck检查和修复文件系统 文件系统一致性检查 易于修复的5种损坏类型: 未被引用的索引节点 难以置信的超大链接数目 没有记录在磁盘块映射表中的空闲数据块 列出的空闲数损块还在某个文件中使用 超级块中的不正确汇总信息
常用术语
数据字典 分区 授权 块 系统全局区 用户进程 Oracle进程 Oracle实例=SGA+后台进程