Professional Documents
Culture Documents
卷首语
“口袋电脑”是这段时期 IT 领域一个流行的词汇,“只有口袋大小、永远在线、提供全功能互联
网体验。”这就是口袋电脑贴切的描述。
理器(Atom)和英特尔迅驰凌动处理器技术,以及其它嵌入式计算解决方案。一时间,“口袋电脑”
新的一片蓝海。
源的解决方案,工具和一个框架结构。在这个框架内,开源社区可以分享技术,创意以及使用模型。
也可应用到其它消费类电子产品。
适应,其优势已不存在。在此领域,Linux 开放、可定制、高性能高安全的特点注定了它的优势。目
灵动地使用起来,还得依靠各种功能的软件,操作系统是必须的,同时运行在操作系统之上的应用
含文字、表格、幻灯、绘图、数据库、公式六个组件,可快速的进行文档撰写、公文制作、报表编
讯的这种转变也就很好理解了。
因此 MID 的性能是足够强劲的,应用是丰富多彩的。在移动越来越成为这个社会的主流思想,谁又
其需求覆盖了传统的软件生态链,也涵盖了诸多互联网的要素,从基础软件(如操作系统、Office)
到多样化的应用软件(如即时通讯、浏览器),可以预见,“for MID”将成为软件厂商的战略重点,
也是其时尚标签。
目录
卷首语..................................................................................................................................................2
For MID 软件将大行其道............................................................................................................2
产业聚焦..............................................................................................................................................8
《开源》第三期下载抽奖获奖名单公布.....................................................................................8
intel IDF 落幕 MID 成最大亮点...................................................................................................8
现在可以索取 Ubuntu 8.04 LTS 免费光盘..................................................................................11
盖茨:开源模式即“无人能提高软件性能”..............................................................................11
KDE、GNOME 携手共创 Linux 桌面.........................................................................................12
赵晓亮:MySQL 坚持开源始终如一............................................................................................13
第二部开源电影将发布...............................................................................................................14
对话开源大师,感受前沿技术,立即注册赢取大奖!...........................................................15
Linux 的移动蓝海.........................................................................................................................17
Midinux 诠释移动互联新界面.....................................................................................................23
开源的道路...................................................................................................................................26
博客文摘............................................................................................................................................32
“Linux 桌面”含苞待放在今时.................................................................................................32
坚定不移地推进 UOF...................................................................................................................36
Ubuntu 8.04 给我们……系列文章 .............................................................................................37
开源社区............................................................................................................................................41
项目动态.......................................................................................................................................41
耐寒的苍鹭(Ubuntu 8.04)腾飞................................................................................................41
GNOME 2.24 的首个开发版发布...........................................................................................42
Solaris 10 5/08 操作系统发布..................................................................................................43
Linux Kernel 2.4.36.3 发布......................................................................................................44
Linux 实时系统 RedHawk 5.1 发布.........................................................................................45
Fedora 9 进入开发的最终冻结阶段........................................................................................46
如何帮助开源软件项目...............................................................................................................47
GPLv3,纷争与未来 ..................................................................................................................49
GPL v3,自由与机遇...................................................................................................................56
知识学堂............................................................................................................................................60
GCC 精彩之旅(上)..................................................................................................................60
Linux 内核组成和架构.................................................................................................................70
经验技巧............................................................................................................................................76
Linux 一句话精彩问答——系统配置篇(3)...........................................................................76
Linux 下的计划任务.....................................................................................................................80
RPM 深入应用..............................................................................................................................86
linux 下如何 mount 网络目录?.....................................................................................................93
企业应用............................................................................................................................................94
使用 AWStats 分析站点状况........................................................................................................94
Snort 规则及预处理器................................................................................................................102
混源新视界......................................................................................................................................110
开源既往不咎立新规 混源软件进退维谷................................................................................110
编读往来..........................................................................................................................................114
产业聚焦
《开源》第三期下载抽奖获奖名单公布
为了感谢开源爱好者对《开源》电子杂志的厚爱,在第 3 期杂志发布的同时,进行下载抽奖活动,
抽奖结果公布于第四期杂志发布之时。
现将第三期《开源》电子杂志下载获奖名单公布如下,同时感谢 Intel、中科红旗的支持,请以下获
奖者通过站内短信(kennycx)或 Email(opensource@linuxpk.com)与我们取得联系。
Intel 电脑包:九命怪猫、夏雨、zhongqun、cheiron
红旗钥匙包:Flyinmorning、kakaryan、pavel2006、锅盖头、
trucychen、watkins、id_sonic、迷茫的小猪、Richeal、zhengxistars
英特尔展示多项前沿技术
MID 成最大亮点
IDF:整个 IT 行业的产品竞技台
访问 https://shipit.ubuntu.com/ ,然后注册一下就可以申请了。
盖茨:开源模式即
“无人能提高软件性能”
据国外媒体报道,微软董事长比尔·盖茨(Bill Gates)近日在美国西雅图市
系统生物学研究所(Institute for Systems Biology)发表演讲时表示,与专利性
商用软件相比,开放源代码(以下简称“开源”)软件的最大不足是,正由于开
放了源代码,将导致出现“无人愿意去提高软件性能”现象。
盖茨此前宣布,将于今年 7 月 1 日正式退出微软日常管理工作,而把精力专注于比尔-梅琳达·盖茨(Bill &
Melinda Gates)基金会的慈善工作。在本周举行的演讲中,盖茨首先谈到了科技对提高人类生活水平、战胜
疾病的重要性,并表示今后微软将致力于计算机技术与生物学的结合。
在接受台下听众提问阶段,盖茨指出,目前许多制药企业通常会投入大量资金,以研究治疗脱发等无关紧
要的药物,而不愿意研发可治疗发展中国家各种传染病的相关药品。
盖茨接着表示,各大制药企业之所以这样做,是因为他们面临着进退维谷的局面:如果自己成功开发了某
种可治疗公众传染病的药物,外界就会要求该公司对外开放这项技术。如果开放技术,就意味着赚不到钱,也
就无法收回前期研发投资;如果选择不开放技术,则又将面临着外界的严厉道德指责。
随后台下一名与会者问到,在医药技术开发过程中,是否可借鉴软件开发中的开源模式?盖茨对此回答
道,自己并不认同开源“通用公共许可证(GPL)”模式,但微软经常在发展中国家免费发放 Windows 操作系统
及其他软件产品。
盖茨表示,GPL 许可证导致的结果是,“没人愿意(或能够)提高既有软件性能”;如此一来,开源产业白白
浪费了大量人力物力,同时也错过了大量商机。盖茨说:“开源产业与前面所说药品研发难题之间有很大相
似性。如果我们研制了新药物,就应该对此收费,这样才能调动开发者的积极性。”
不同桌面版之间维持同样的界面集合,简化基础的桌面整合任务。
同时,两个社区还启动了 DAPI (Desktop Application Programming Interface)项目-基于 D-BUS。D-
BUS 本质上是进程间通信(inter-process communication)(IPC)的一个实现。不过,有一些特性使得
D-BUS 远远不是“只是另一个 IPC 实现”。有很多不同的 IPC 实现,因为每一个都定位于解决 特定的明
确定义的问题。CORBA 是用于面向对象编
程中复杂的 IPC 的一个强大的解决方案。
DCOP 是一个较轻量级的 IPC 框架,功能较
少,但是可以很好地集成到 KDE 中。SOAP
和 XML-RPC 设计用于 Web 服务,因而使
用 HTTP 作为其传输协议。D-BUS 设计用
于桌面应用程序和 OS 通信。
GNOME 项目的主管 Behdad Esfahbodof
认为共同举办年会将使桌面自由软件受益,
将众多开发者聚聚一堂将能激发更多的交流
与合作,并产生更多高质量的软件。Linux
基金会的 Jim Zemlin 也对此合作举动报以很大希望:这是一个非常正确的决定,我期待着在这次会议上
能产生对 Linux 桌面有重大影响的成果。
赵晓亮:MySQL 坚持开源始终如一
近日,Sun 的 MySQL 预告了 MySQL 5.1 的发布计划。值得注意的是,其中,新版 MySQL 最引人瞩
目的特性是数据库的在线备份。但是,在线备份特性的一部分功能将不会在 MySQL 社区版本中出现,而
只会提供给付费的 MySQL 企业版。MYSQL 的这一举措引起了开源业界的极大不满,很多人谴责
MYSQL 是在背叛其成长所以依赖的开源社区。
面对这样指责,在 4 月 23 日的 Sun MySQL 产品策
略发布会上,Sun 大中华区软件事业部总监赵晓亮愤怒
且带点无奈的谈到,“关于 MYSQL 部分高级功能闭源
的消息完全是一种谣言,不知道为什么会有这种声音出
来,可能,市场或者一些厂商太在意 MYSQL 的快速增
长,因此需要一些负面的东西来阻止 MYSQL 的高速增
长。另外需要强调的是收费不等于闭源,这是一种误解。”
当记者问道,“新版 MYSQL 中包含分区、事件调度、基于行的复制和基于磁盘的集群这些新功能
是否开源”时,Sun 公司 MySQL 全球开源社区关系副总裁 Kaj Arno 简短而坚定的回答—— “OPEN”。
“以前 OPEN 的东西,我们不会有任何改变。新增加的功能也遵循开源的原则。今天没有开源的部
分,以后也会开源。没有开源的部分是因为涉及到第三方支持,牵扯到版权和专利。SUN 不是说在
MYSQL 上坚持 OPEN,而是 SUN 所有的产品线都是坚持开源,不仅仅是软件,还有硬件。” 赵晓亮补
充说道。
对于有用户担忧“MYSQL 企业版中提供的高级功能因社区版用户无法体验,测试只能在有限的用户
中展开,从而导致这些功能可能是一些未经过充分测试的代码”。
赵晓亮指出“MYSQL 社区版和企业版从技术本质上来说没太多的差别,只是说更高的特性支持更关
键的技术上会有所不同,所以不存在说这个产品没经过大规模用户测试。任何一个商业产品,包含我们
自己和社区都会进行严格的测试来满足关键业务的需求” 。
第二部开源电影将发布
你一定听说过开源软件,也可能听说过开源电影,因为世界上第一部开源电影《Elephants Dream》
早在 2006 年就已经发布。
OLPC 再损失一员大将
众业内权威人士亲临现场,齐聚一堂,为您呈现企业最高校最准确
的发展解决之道,带您体验最新 Linux 研发成果、最先进的虚拟化技术、
身份管理以及企业资源管理。
注册地址:
http://211.157.100.109/register/tracklink.aspxcam_id=novell200804081&url=http://211.157.10
0.109/edm/novell/20080408/edm1.html
产业聚焦
Linux 的移动蓝海
陈杰
并非又一“Linux 系统”
下图为使用开源平台的 Gphone
在 Symbian
看来,Google 精
心打造的 Android
平台只不过是又
一个 Linux 平台,
与以往的移动
Linux 平台并没太
大的差别。但也
有开源社区的人
士表示,Android
将是媲美 Gun 计
划的一个新举措,
这将为移动 Linux
带来巨大的冲击。
Android 是一个完全开放的开发平台,它包括有操作系统,中间件,用户界面和应用程序等一整套完
备的组件。Android 平台基于 Linux 2.6 内核,该内核包含一个名为 Dalvik 的虚拟机,可以最大化的提升
系统的性能,另外 Android 还集成了许多的应用程序,包括 Email 客户端,内存管理服务(SMS)程序,日
历,地图和基于 WebKit 引擎的浏览器。
Google 此次推出的是一个能开发应用程序的开放式平台,强调的是开放性,与此前也采用开源的
Linux 内核的企业或组织不同,Android 还开放了基于 Linux 内核以上的开发工具,等于说是以中间件的
形式推广手机平台,最终提供给上层应用开发者一个统一的内容,从而保证内容的可移植性和多样性。
用 Google 自己的解释就是,该项目是一个全套手机的软件方案,包括中间件、SDK、关键应用和
Linux Kernel 四个部分。而其最吸引人的地方在于,Android 平台将通过的开源授权推出,这为移动运营
商和终端制造商设计产品带来关键的自由度和灵活性。
统一 Linux 平台
同时,赛诺市场调查公司的数据也让我们看到,2006 年 1 月到 9 月,智能手机销售占到中国手机全
部销量的 7%,和上年同期相比增速相当高。许多专家预测中国智能电话市场今年还会持续增长。而在智
能电话市场上,Linux 预期将会占领越来越多的份额。
间层也进行开源,如果确实可行,LiMo 或其他组织就没有太大存在意义了。
移动计算的第二战场
Android 平台的推出了,引爆了人们对于在移动设备上开发、使用开源软件的热情。与传统的移动设
备相比,MID(Mobile Internet Device)则是未来移动计算的一个发展趋势,它是由 Intel 推出的代表便携
式移动计算技术与发展方向的产品。根据 IDC 最新的数据显示,超便携移动终端年增长率超过 13%,到
2009 年,销售量将超过 8500 万台,这无疑也为 MID 设备带来了广阔的前景。
MID 的使用界面
物流、公安、餐饮、旅游等。
MID 定位在移动消费电子,娱乐是重要内容
Linux 机会在移动
月业务完全是垂直性的增长,我们现在担心的不是没有业务可做,而担心是否接的过来这么多业务。预
计到明年,我们在 Midinux 操作系统的收入将超过我们在服务器和桌面端的收入。”
Midinux 诠释移动互联新界面
文玫
口袋中的互联网
尽管笔记本电脑趋于小型化发展,但 7 英寸的最小尺寸在移动方面显然不能满足需求;而手机受制
于比较小的显示屏以及处理能力,无法提供最好的互联网体验,且互不兼容、通信不稳定等。
作为笔记本电脑与手机间的新产品形态,MID 瞄准的是那些想在任何时间和任何地点访问互联网的
消费者。与笔记本相比,它有着 4-6 英寸大小,消费者能随时随地将它放在口袋里。
按照英特尔阿德兰和浦大卫的说法,MID 提供的是一种“不做任何妥协的互联网计算能力”。换言
之,MID 集成了 WiMax、Wi-Fi 甚至 TD-CDMA 等无线技术,能像 PC 一样接入互联网,也能随时执行拍
照、摄像、听音乐、交友、GPS 导航等各种功能。对 MID 用户来说,真正吸引他们的是能够访问互联网
上的海量内容和服务(大部分是免费的),互联网上可供应的内容和服务无论从数量、质量、类别和吸引力
上都远胜 WAP,这是 MID 与当前手机相比的最大优势。
试想一下,因为屏幕够大,浏览网页可以全屏显示,不必像用手机般滑动屏幕,无论上 Youtube 看电
影,还是即时拍照并用邮件发给亲友同事,或是去 Myspace 上秀一把……
总之,这个巴掌大的设备,很快就会令你爱不释手。 它的使命是作为笔记本电脑和手机的有益补充。
有了它,在移动中,你可以实现网页浏览、在线办公、互动交流、乐趣分享。
新面孔 Midinux
作为一种全新消费电子产品的系统,Midinux 相应采用了更加友好、新颖的用户界面和交互方式,体
积小、反应速度快,并支持各种互联网和多媒体应用。目前在 Midinux 上的应用包括 CoolFox 浏览器、
CoolImage 图片浏览器、CoolMedia 播放器,OpenOffice 等办公软件,另有 GPS、即时通信、RSS 等各种
丰富的工具和应用。
根据英特尔公布的资料,爱国者、华硕、明基、Clarion、富士通、技嘉、Hanbit、KJS、联想、LG
电子、NEC、松下、三星、夏普、Sophia Systems、Tabletkoisk、东芝、USI、WiBrain 和 Yuk Yung 等厂
商都已经或即将推出 MID 产品,这些产品将在 6 月集中上市。据预估, Midinux 系统一年内将成为中科
红旗继服务器和桌面端外的第三条支柱,这也从一个侧面彰显了 MID 的普及趋势。
08 年时尚新宠
针对 UMPC(便携式电脑)存在的一些问题,MID 放弃商务应用转向个人消费领域,对硬件性能的
要求降低,采用 Linux 取代 Windows,采用低功耗的新处理器和更省电的小屏幕,加强便携性的同时延长
了续航时间,使 MID 更加贴近用户的体验。毋庸置疑,MID 即将成为手机和笔记本之间的主打产品。
不过,MID 并不准备替代笔记本电脑和智能手机,相反,拥有笔记本电脑或是智能手机的消费者更
有可能购买 MID,因为上网已经成为了他们的日常需要。当他们在办公室或家以外的地方时,MID 将是
比个人电脑和智能手机更好的上网选择。因为 MID 的目标客户正是想在随时随地访问互联网的消费者。
开源的道路
陈绪 赵健平
记者: 什么时候开始对开源的事情感兴趣,都对那些方面比较有兴趣?
2、虚拟技术的开发(Xen/KVM);
4、内核中的一些模块,包括 ACPI 等;
5、x.org 的维护;
记者:商业公司和开源是对立的吗?你怎么看?
如果商业公司和开源是对立的,有几件事情不会发生:
1 、Redhat、Mysql 这样的公司不会像现在这样壮大和有影响力。
事实上,商业公司的巨大支持,成了诸多企业采用开源技术的一个推动力。Linux 和开源技术在企业
中的应用可以分为三个阶段:
1 、本企业员工的自发要求,对决策者造成影响。
3 、使用开源技术,降低了企业成本,提升了竞争力,增强进一步拥抱开源的信心。
1 、终端用户对原有非开源系统的依赖性和惯性。
3 、缺乏驱动程序和其他应用程序的支持。
以 Intel 为代表的商业公司,在下面这些方面做出了巨大努力。
2 、积极推动标准的制定,如 LSB、CGL 等。
记者:现在开源的经营模式都有哪些,有什么人,做了什么探索?
陈绪: 从整个产业链的发展历史来看,开源还算一个新生事物。由于各种模式都在探索过程中,所
以现在的开源商业模式是百花争艳。既然是开源,那么前提条件是:软件是开放源码的。基于此,我展
开一下:
1 、订阅模式
以 redhat/mysql/jboss 为代表。
订阅模式是一种首创,其实是一种软件免费,服务收费的体现。那么服务体现在哪些方面呢?
2)升级补丁的获取,如果交了订阅费,则可以自动升级,方法非常简便,同时,时效上要高一些,
没交订阅费的朋友只能自己编译源码或者等待第三方发布补丁。
3)技术支持,根据费用不同,可获取不同层次的技术支持,包括电话、上门等等。当然,订阅的高
级模式,就是定制,客户单独付钱,可要求厂商进行修改。
2 、赞助模式
以 eclipse/apache 为代表。
这两家都属于基金会支持模式,软件从来都是免费发放,不收取服务费。他们的运营费用来自哪里
呢?来自于各大厂商的赞助。
就 Intel 而言,我们每年会交会费(赞助),因为你是基金会的成员。同时,对于这些基金会组织的
大会和技术研讨会,我们也会积极赞助,并派出技术专家参与。
3、 内嵌广告模式
这种模式,Firefox 算是个代表。
区的。
4 、外链广告模式
他们可以说是中国的开源软件代表,他们有商业模式,而其他很多项目还停留在纯粹的开发者阶段。
5 、集成和管理模式
全世界的开源项目以百万计,一个企业要选择使用开源软件,会陷入迷茫。那么以上的公司,正是
从全世界的项目中,选择典型的软件,进行测试、集成、整合,并可以用搭积木的方式为企业提供服务
和咨询。
通过测试和认证开源应用产品,SpikeSource 向之前可能没有配置开放源代码的企业提供一系列
SpikeCertified 和 SpikeIgnited 解决方案。公司通过基于名为 Spike(TM) Net,交付这些解决方案。企业有
了 SpikeSource 的可信度支撑,就可以确信这些应用软件是根据他们特定的业务需求而配置和定制的。
6 、企业特性收费模式
以 Sugarcrm 为代表
但是企业级的特性和模块,则需要付费才能获取。
7 、以开源换流量的模式
8、 以开源换硬件销售的模式
这个就太多了。主要是硬件厂商和系统厂商会采用这个模式。大家将驱动程序和一些硬件相关的应
用程序采用开源的协议发布,如 GPL、LGPL 等。使整个开源界能充分发挥硬件的潜能,针对硬件编写应
用程序。从而达到提升硬件占有率的效果。
总之,在开源的运作模式方面,探索的人很多,包括我也在不停思考。我想,会有更多的探索者,
用不同的方式总结,得到的结果应该与上述的这几种模式相差不多。
记者: 有一种说法,似乎中国程序员对开源的贡献不大,这是什么原因?
陈绪: 不妨将问题中的“中国程序员”分为两类。其一,中国的开源社区开发人员;其二,在跨国
企业的开源部门中为开源做贡献的人。后者的贡献是很大的,但是我想你主要说的是第一类人。
贡献不大的原因有很多方面。我认为,主要有三点值得考虑。
其二,贡献的回报。我认识很多中国的开源人士,包括项目在国际上大名鼎鼎的,我问他们从项目
上获得了什么。答案是:直接来说,没有回报,但是从其他渠道获得了收益。这一点来说,和上面我们
探讨的商业模式是息息相关的。他们没有从直接的项目中获得回报,这是一个不容忽视的问题。
记者:开源下,你认为比较有意思的项目?
陈绪 : 国际上的项目太多,我这里主要谈一下中国人主导的项目。这个问题也是我的工作内容之
一。我在给老板的汇报中列举了 12 个。
1 、LumaQQ:跨平台 qq 解决方案。
3、 Minigui::嵌入式的图形系统软件。作者:魏永明。
5 、文泉驿字体:最著名的开源汉字字体。
记者:最后一个问题,linux 桌面的发展前景怎么样?
还是借用我上面的一个观点:时间。用户的接受需要时间,企业的接受需要时间,产品的成熟需要
时间。
博客文摘
“Linux 桌面”含苞待放在今时
中国开源软件推进联盟主席 陆首群
博客地址:http://www.lupaworld.com/16128/
敢于挑战 迎接竞争
微软,全球软件产业的“巨无霸”,其 80%的收入来自“桌面”,微软的核心技术主要掌控在“桌
面”,微软的经营重点也在“桌面”。Linux 的崛起,特别是“Linux 桌面”要挑战微软的“Windows 桌
面”,要达到由微软技术、经营和用户使用习惯优势形成的“高度”,Linux 的挑战有很大难度和风险,
而且在挑战过程中,还不时会遭遇来自某些“团队”或“个人”的贬伐和讥讽。年青的、顽强的、富有
生命力的“Linux 桌面”开发者们偏不信邪,敢于挑战权威,敢于迎接竞争。
去年中国“Linux 桌面”销售业绩惊人增长
表1
2007 年中国市场的 Linux 销售额总计为 27734 万元,比 2006 年(21832 万元)增长 27%。
表2
有关说明:
1)在这里我们采用广义的“Linux 桌面”的概念,即把与台式计算机、笔记本计算机、便携式
PC(Laptop)和超移动 PC(UMPC,Ultra-Mobile PC)或移动互联网设备(MID,Mobile Internet
Devices)配套的 Linux 操作系统均归类在“Linux 桌面”的范围内。
如何看待“Linux 桌面”的市场占有率
必须指出,国外已采用“把软件看作服务(SaaS)”这样的经营方式。
过去我曾指出,可以把软件的组成看作为:
软件=程序+文档+支持+服务+培训
一些开源软件的商业模式是,所谓软件免费,其实是软件的程序和文档免费,而对于技术支持与服
务是要收费的。Ubuntu 收取“支持服务”费用的规范是,对服务器,向用户年收 750-2450 美元,对桌
面,向用户年收 250-900 美元,这个价格是不菲的。
我们经常听到有人说,“Ubuntu 是完全、绝对免费的自由软件”,其实如果你从网上下载并自行安
装配置,不需要人家提供“支持服务”,人家也不保证你所下载软件的质量,至于下载软件质量如何,
也只能由你自负其责了;这时你所获得的免费软件,可以说与我们前面讲的要人家提供支持服务的“免
费软件”是完全不同的。
SaaS 要结合国情在国内推行,恐尚需时日。
我认为,科学地对待市场占有率应采用计算销售量(出货量)的概念。按销售量来计算,2007 年中
国桌面 Linux 操作系统的市场占有率约为 33%,这个数字表明,中国“Linux 桌面”今天在市场上已具有
相当规模和价值以及挑战能力,忽视和贬低它都是不现实的,而把 Linux 早期出现的卸载率高的现象拿到
今天来说也无济于事。
当然,理解深层次的市场占有率还要注意累积计算,如按市场拥有量来说事,上述比率可能要降低一些。
中国“Linux 桌面”的完善、创新与开拓
近年来,“Linux 桌面”正在集中全力解决第三方驱动支持和开发、移植大量应用软件的问题;围绕
中国 Linux 新兴企业的“Linux 生态系统”正在形成之中;以中国“Linux 桌面”而论,它还有很大改进、
完善的空间,我们要清醒认识到,它还有不尽人意的地方。我不久之前曾说过,对于“Linux 桌面”的发
展,将出现一个拐点,从而步入快速发展的轨道。现在看来,这个拐点正在孕育中出现。
在中国涌现出一批国际公认的新兴的 Linux/OSS 企业
坚定不移地推进 UOF
中国工程院院士 倪光南
博客地址:http://nign.vip.bokee.com/
虽然遭到包括中国在内的许多国家的反对,OOXML 还是被通过成了国际标准。不过,人们并没有看到
它的最后文本(有关文档总页数可能比当初的 6000 页还多),更无从进行评估;在 2 月底的技术评审会议上仅
讨论了各国提出的 1100 条意见中的 18%,其余 82%意见均来不及讨论。但即使是这样,OOXML 仍然成了
国际标准,整个过程表明,标准本身的成熟与开放程度似乎已变得不重要了,而公关起了更大的作用,这种动
向值得关注。据报道,欧盟反垄断部门正就微软申报 OOXML 为国际标准中的不正当竞争行为进行调查,建
议我国有关部门也对微软在中国的类似行为进行深入的调查。
袁萌
博客地址:http://blog.csdn.net/yuanmeng001
大家知道,Ubuntu 是个“另类”,它是个“集成商品包”(IntegratedCommercialProducts),定价却
为零。它有很好的技术支持,但却绝对不强制你(事先)“接受”,也就是说,Ubuntu 的技术支持,你
用还是不用,随你的便。但是,Ubuntu 的发布者,绝对建议你取得这类(付费的、商业的)技术支持,
其中好处多多(注意:这种技术支持不论来自何方,当然,取自某些特定的厂商,效果更有保证)。这
里要说明的是,Ubuntu 的“技术支持”是一种常见的“商品”,可以有自己的品牌,有自己的定价、有
自己的规格,有自己的......。Canonical 公司是 Ubuntu 开发社区的主要支持者、赞助者,它所提供的多语
种技术支持,毫无疑问,绝对是世界一流水平的。这里有一个非常重要的“关键点”,需要我们注意,
即产品(Ubuntu8.04)与有关它的支持服务是完全分离的,相关的“技术服务供应商”可以有各自不相同
的(独立)品牌,可以属于不同的国家和地区。
的许可(注:金牌、银牌伙伴需付费,一般盟员不需付费。)。
4 月 24 日,这一天终于过去了。在这一天里,一个“小生命”在互联网上诞生了,它就是
Ubuntu8.04(性别:中性)。Ubuntu8.04 是个“混血儿”,它有一个 Windows“襁褓”(“Wubi”),一生
下来,就安安静静地在 Windows “襁褓”中“睡着”。它看上去简直就是 Windows 大家族的“一员”。这
是怎么一回事情呢?
1、在开放的网络端口上,不安装缺省服务,以防止没有经验的管理员通过建立一项新服务而在无意之中
伤害系统;
2、采用基于角色的管理模式,不设置缺省的“根访问” (“rootaccess”),只有在确保操作安全的前提
下,才去除这项缺省设置;
3、在最初设计上,就去除所谓“XServer”,一般而言,服务器总是在远方控制的,不必当成一台 PC 计
算机服务器,鼓捣来鼓捣去;
4、Canonical 公司采用一套称为“Landscape”网络工具,对广大用户提供免费安全监视服务;
5、强化操作系统内核和编译器,防止入侵者袭击一台经过“强化”处理过的服务器,比如:采用内核地
址保护,NuLL 地址(低于 64K 的内存不得分配)保护,可有效抗击外来恶意攻击。很明显,Ubuntu8.04
带给广大用户一种相当坚固的服务器运行环境,而且,网络安全工具“Landscape”的运行模式符合
《Panda 实验室》的安装“新思路”,即把“安全问题”视为一种网络服务(“Securityas a Service”),
大方向正确,,具有很大优势。实际上,至今我们还没有发现存在所谓“Ubuntu 病毒”。 我们可以预见,
Ubuntu8.04 服务器版本堪与微软 WindowsServer 8 相媲美,只要不带“偏见”的话。网络用户,希望用
Ubuntu8.04 服务器来抵抗外来入侵,而用 Windows 服务器处理内部事务,是一个不错的“选择”。我们
何必把 Linux 与 Windows 两者搞得“水火不相容”,成为“你死我活”的“死对头”?我看,就不必费
那个劲了。
开源社区
项目动态
耐寒的苍鹭(Ubuntu 8.04)腾飞
◆GDM - 改善了会话和语言处理、添加了登录倒计时动画;
关于此次更细的详细信息,感兴趣的朋友请参考:docs.sun.com/app/docs/doc/817-0547/gghpo
Files added: 0
Files changed: 21
Files removed: 0
Lines added: 957
Lines changed: 606
Lines removed: 367
据其白皮书中介绍,RedHawk 内核可以将控制权由低优先级进程转交给高优先级进程。这样就保证
了正在等待外部事件发生的高优先级进程能够在事件 发生时被立即响应,即使 CPU 正在被占用也不受影
响。这种操作系统目前的主要支持对象是美国军方,美国海军的神盾级巡洋舰的反空袭,反水面舰艇,
反潜武器 系统均采用的是这种操作系统。
据悉新版本的改进如下:
◆用户级设备驱动支持;
◆NVIDIA 显卡驱动实时性能优化;
Fedora 9 进入开发的最终冻结阶段
◆增强型 NetworkManager,支持移动宽带设备(GSM/CDMA);
◆PackageKit;
◆OpenOffice.org 2.4.0。
如何帮助开源软件项目
很多时候,我们让人参与开源社区,回馈社区时,很多人是讲“我不是技客,不是程序员,没有能
力,虽然我很想参与社区,回馈社区。”然后就没有下文了。
其实这是一种误解;他们都误以为软件开发就是编程,只有程序员才能参与开源社区。任何人都可
以帮助自己喜欢的开源项目或社区,即使你不懂技术,你仍然可以从以下五个方面帮助开源项目。一般
而言,在开源软件项目的官方网站上,也有如何帮助该开源软件的说明。
赞助开源项目
一般而言开源软件是可免费提供的,因此,开源软件就没有了传统的靠授权收费的收入,而开源项
目本身很多时候都需要钱,有开支。很多开源软件开发人员通过获得“赞助”,以解决项目主机空间、
开发会议等经费需求。有时一点点钱也能帮助解决问题。我个人也曾经赞助过部分开发项目,包括资金
赞助和主机赞助。
在国外赞助非盈利项目等,很多时候可以免税的,呵呵,可惜啊,我们在中国,即使可以也繁琐。
软件项目文档
软件是由程序和文档组成的,好的软件一般都有很完备的文档。但是大部分开源软件本身都缺乏文
档,我们作为普通用户,天天使用该开源软件,是否可以帮助撰写部分的用户手册,或其他一些说明文
件呢?这将能帮助开发人员和其他用户解决不少问题。部分开源项目,因为软件本身免费提供,为了维
持生存,也通过付费方式,提供文档--相当于变相的赞助。
软件翻译
一般开源软件最初都支持两种语言:英文与开发人员所用语言;如果需要开源软件支持您所使用的
语言,那就需要志愿者的帮助:如 Openoffice 的中文支持,中文语言包等就是有个中文化支援小组帮助进
行;您喜欢的开源软件,没有支持您使用的语言?那帮助它建立吧;开源软件中文化,有很多人,很多
团体在做:如 linux 系统的中文化,Ubuntu 中文小组,Debian 中文小组,KDE 项目也有专门 KDE 小组-
-个人也参与 Debian,i18n,zope 等多个项目,帮助进行中文化与多语言支持,但感觉山头越发多了,呵呵。
BUG 与问题报告
没有什么软件是完美的,都会有这样那样的问题,开源软件用户最好及时将软件使用中的问题,及
时向开发人员反馈,以利于开发人员改进软件。商业软件的开发一般都会配备相当比例的测试人员,而
开源软件开发者多是志愿者,缺乏专门的测试团队,这时更需要用户的及时反映。这也是开源的一种开
发模式:核心开发+用户参与的广泛测试,经常发布新版本。大的开源项目一般都已建立了专门的志愿
测试团队--如 Firefox 浏览器,就提供每日构建,提供了测试用例,让 QA 志愿团队参与进行手工测试,
自动测试等。
鼓吹开源软件
你喜欢使用开源软件么?在自己享受开源软件的同时,也别忘记对周边的朋友说,向大家宣传开源
软件,开源运动。当然,要宣传开源软件,前提是你自己要理解好开源软件的概念,如果误解开源软件,
以为它等同于免费软件,那就要“误人子弟”了,对开源软件的发展也不利。开源软件仅仅是指软件提
供源代码,不能和免费软件花上等号,虽然很多时候开源软件可以免费获得,但这不代表不能通过提供
开源软件服务而获益。
如果把一个开源软件,作为一个小的生态链,如果我们大家只求索取,而不愿奉献,那开源软件的
大餐,迟早会失去,只有形成“开发人员奉献,用户广泛参与”良性互动循环,开源软件才能一直的发
展和存在。
颜勋
缘起:GPL 前生今世
改进:GPLv3 之变
◆第 3 版 GPL 附带明确的专利许可,意思是任何贡献软
件给 GPL 计划者,都连带把适用该软件的专利授予 GPL
永久使用,而且不收权利金。
纷争:GPLv3,GNU 的繁荣还是没落
GPLv3 支持之声
GPLv3 反对之音
内核,他们也包含各异的开源组件,内核仅仅是一部分(虽然内核是重要而且是不可或缺的),这些一
起构成了可以使用的系统。开源许可证逐渐的变得越来越多使得版本的发行变得越来越麻烦,甚至是花
上大量的时间来检查和评定以不同的许可证发布的(甚至是相互矛盾的),互相关联的软件包分支-确
实,有的时候因为许可证的考虑,不得不将一个软件包排除在外。为了方便起见,应该对开源的许可证
加以整理,而 GPLv2 无疑在当前的开源界是占有统治地位的。Linxu 的成功也依赖于广泛捐助者和用户社
区,他们对于 Linux 的革新起了非常大的作用。协同的努力,而非针对不同目的的妥协,是 Linux 良好的
管理富有热情的开发者与商业利益的一个重要的原因。目的不同的个体是可以互惠互利的走到一起来的。
因此,为了维护基本的开发协同和顺应 Linux 革新的潮流,我们不应该支持 GPL 的任何改变,这些改变
有可能危及基本的自由。
未来:GPLv3 何去何从
FSF 代表 Brett Smith 说,有大约 150 软件项目在 GNU Project 中,其版权归属于 Free Software
Foundation。在这些项目中, 至少 15 个一定会转变到今天的 GPL 版本 3。哪些项目最终会升级到 GPLv3 还
没有最终确定,但应该包括基本的 GNU/Linux 系统工具 sed 和 tar,Internet 软件套件 FTP 和 telnet servers
以及客户端 inetutils,以及 Texinfo 文件系统。
Linux Kernel SCSI Maintainership 的负责人 James Bottomley 也反对 GPLv3。 Bottomley 表示,GPLv2
和 v3 两个版本并不兼容,在可预见的将来,Linux 核心仍然将坚持使用 GPLv2。 之前,Linux 的核心发
展人 Linus Torvalds 也反对 GPLv3,因为担心其中的数字版权管理(digital rights management)条文会引
起困扰.
其实,GPL 版本的改进是依据现有的自由软件许可证使用中出现的问题进行的修补,随着新技术的出现,
GPL 的变化不会随着 GPLv3 的发布而终止。如果有一天新的威胁再次危害到用户的“自由”开发,
GPLv4 也是会出现的。而 GPLv3 对自由软件团体和开发者以及商业软件厂商的影响也会在今后逐渐的显
露。GPLv3 在“自由”与“利益”的冲突间,或许还需要很长一段时间来找到两者平衡点。
识产权问题作了一个比较全面的考虑,在开源许可证协议的发展历程中具有重要意义。
GPL v3,自由与机遇
余水清
随着 GPL v3 的发布,各种争论之声也随之而来,有支持的也有反对的,但从开源软件社区的反应以
及相关法律专家的观点来看,支持的占绝大多数。而且,随着时间的推移,GPL v3 必将广泛的被整个开
源社区各个开源项目所接受,开源项目对 GPL v3 的接纳并向之进行迁移也是时间问题。
GPL v3 与国内软件知识产权保护现状
根据笔者理解,在国内现有的
法律框架下,对于软件(无论是开
源还是私有软件)而言其知识产权
保护的法律体系结构如图 1 所示(该
图借用了软件 UML 模型中的类图对
相关法律,协议之间的关系进行描
述)。
图 1 软件知识产权保护框架
从上述软件知识产权保护框架
的图中可以看出,GPL 协议应该归
入合同法的范畴。也就是说该协议应当是所有使用、修改、传播某项开源软件的所有用户必须遵守的协
议。从合同法的角度来看,协议的一方为软件的使用者(使用,修改,传播等)另一方应该是开源软件
基金会(FSF)以及整个开源社区,因此该协议应当看作是三方的合意一致的产物。GPL 协议涉及到的三
方即开源软件使用者,开源社区以及自由软件基金会(FSF)之间的关系如图 2 所示。
这里整个开源社区作为协议第三方应该是某种虚拟的角色,但实际上确实是有必要将其纳入协议第
三方的。开源软件的使用者只要违犯了该协议的内容,都有可能被视为对相关合同条款的违反,从而导
致侵权诉讼。从国内的实际情况看来,遵不尊守 GPL 协议往往完全在于使用者本身的知识产权意识以及
自律,再者就是依靠开源社区的监督,发生了侵权行为时依靠 FSF 去进行侵权诉讼往往是不可能的。
图 2 GPL 协议三方
从著作权法的角度来看,开源软件应当在著作权法的保护范围之内。著作权是典型的法律上的
一体两权,即既有人身权也有财产权的内容。从 GPL 的内容来看,凡是自愿接受 GPL v3 约束的自由软件
的作者基本都放弃了财产权的绝大部分内容,甚至连人身权也仅仅是保留了署名权而放弃了修改权以及
维护作品完整权。获得该自由软件的使用者可以自由的修改,翻译,传播该软件而无需支付版权费用。
但是正如法律上权利与义务是平等的表述一样,在获得上述自由的情况下,使用者也必须承担一定的义
务那就是必须将同样的许可传播给他人,也就是对其他使用者来说必须放弃绝大部分著作财产权的内容,
否则就是对该协议的违反。
中,按照该协议微软已经在事实上放弃了相应的专利权。
从国内专利法以及专利保护情况来看,目前专利法中并没有提供对计算机软件进行保护的相关条款。
但实际专利审查中已经有一些计算机软件以方法的形式申请了发明专利保护,因此可以获得 20 年的保护
期。但在现有的专利法框架下,笔者认为获得方法专利对计算机软件保护本身的意义并不太大。其一是
因为法律上并没有明确的条款(这一点就没有美国的专利法那么明确),现有的专利授权大都是打得"
擦边球";其二,正是因为法律上的不明确必然导致已经获得的授权具有不确定性,也就是说该授权并
不能发挥常规专利权的作用。因此,GPL v3 如果在国内的开源社区被采用的话,软件专利这块基本可以
不用去考虑。
计算机软件保护条例基本是在著作权法的基础上发展起来的,只是对某些权利作了特别规定,因此
其对软件的保护与著作权法大同小异,在此不再赘述。
影响及新的立法思路
从国内的软件发展来看,目前不接触或者依赖自由软件完完全全自主开发的软件项目并不是很多,
并且政府已经明确表示对开源项目的支持。因此 GPL v3 的发布有可能为国内的知识产权立法带来一些新
的建议或者思路。笔者看来,大致有以下几点:
◆明确对软件专利保护的问题。也就是说在专利法中加入相应的条款明确提供对软件的专利保护或者明
确不对软件提供专利保护。这样,一方面可以减少专利申请成本,避免不必要的专利诉讼(有些甚至导
致巨大的财力物力等资源的浪费),另一方面也并不会导致与 GPL v3 的冲突,并且有利于国内软件公司
的自主创新和研发工作。
图 3 计算机软件与著作权保护对象
GPL 协议鼓励对计算机软件创作的自由共享,而计算机软件与文字,艺术作品一样也是人类独立智
力活动创造的成果。如果将 GPL v3 的这种自由共享的精神上升到著作权法的相关内容中,必然导致著作
权法的重大修改,有些甚至是颠覆性的。至于这种自由的精神能否上升到法律的阶段,以及现行的著作
权法能在多大限度内接受这种精神那还有待于进一步探讨。但有一点是肯定的,那就是这种自由的精神
必将给人类的一切创造活动带来极大的鼓舞,也许当前出现在开源软件领域内的欣欣向荣的景象有朝一
日也会出现在文学艺术作品创造领域。
知识学堂
GCC 精彩之旅(上)
肖文鹏
◆ 预处理(Pre-Processing)
◆ 编译(Compiling)
◆ 汇编(Assembling)
◆ 链接(Linking)
GCC 起步
清单 1:hello.c
#include <stdio.h>
int main(void)
{
printf ("Hello world, Linux programming!\n");
return 0;
}
然后执行下面的命令编译和运行这段程序:
# ./hello
在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成
了多个编译单元,使用 GCC 能够很好地管理这些编译单元。假设有一个由 foo1.c 和 foo2.c 两个源文件组
成的程序,为了对它们进行编译,并最终生成可执行程序 foo,可以使用下面这条命令:
如果同时处理的文件不止一个,GCC 仍然会按照预处理、编译和链接的过程依次进行。如果深究起
来,上面这条命令大致相当于依次执行如下三条命令:
警告提示功能
清单 2:illcode.c
#include <stdio.h>
void main(void)
{
long long int var = 1;
printf("It is not standard C code!\n");
}
下面来看看 GCC 是如何帮助程序员来发现这些错误的。当 GCC 在编译不符合 ANSI/ISO C 语言标准
的源代码时,如果加上了-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息:
库依赖
在 Linux 下开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助一个或
多个函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实际上就是一些头文件(.h)和库
文件(.so 或者.a)的集合。虽然 Linux 下的大多数函数都默认将头文件放到/usr/include/目录下,而库文件
则放到/usr/lib/目录下,但并不是所有的情况都是这样。正因如此,GCC 在编译时必须有自己的办法来查
找所需要的头文件和库文件。
代码优化
代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,
目的是改善程序的执行性能。GCC 提供的代码优化功能非常强大,它通过编译选项-On 来控制优化代码
的生成,其中 n 是一个代表优化级别的整数。对于不同版本的 GCC 来讲,n 的取值范围及其对应的优化
效果可能并不完全相同,比较典型的范围是从 0 变化到 2 或 3。
清单 3:optimize.c
#include <stdio.h>
int main(void)
{
double counter;
double result;
double temp;
for (counter = 0;
counter < 2000.0 * 2000.0 * 2000.0 / 20.0 + 2020;
counter += (5 - 1) / 4) {
temp = counter / 1979;
result = counter;
}
printf("Result is %lf\n", result);
return 0;
}
首先不加任何优化选项进行编译:
# time ./optimize
Result is 400002019.000000
real 0m14.942s
user 0m14.940s
sys 0m0.000s
接下去使用优化选项来对代码进行优化处理:
在同样的条件下再次测试一下运行时间:
# time ./optimize
Result is 400002019.000000
real 0m3.256s
user 0m3.240s
sys 0m0.000s
对比两次执行的输出结果不难看出,程序的性能的确得到了很大幅度的改善,由原来的 14 秒缩短到
了 3 秒。这个例子是专门针对 GCC 的优化功能而设计的,因此优化前后程序的执行速度发生了很大的改
变。尽管 GCC 的代码优化功能非常强大,但作为一名优秀的 Linux 程序员,首先还是要力求能够手工编
写出高质量的代码。如果编写的代码简短,并且逻辑性强,编译器就不会做更多的工作,甚至根本用不
着优化。
优化虽然能够给程序带来更好的执行性能,但在如下一些场合中应该避免优化代码:
◆ 程序开发的时候 优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好不要使用优
化选项,只有到软件发行或开发结束的时候,才考虑对最终生成的代码进行优化。
◆ 资源受限的时候 一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资
源非常紧张(如一些实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产
生非常严重的后果。
◆ 跟踪调试的时候 在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的
性能而进行重组,从而使跟踪和调试变得异常困难。
调试
一个功能强大的调试器不仅为程序员提供了跟踪程序执行的手段,而且还可以帮助程序员找到解决
问题的方法。对于 Linux 程序员来讲,GDB(GNU Debugger)通过与 GCC 的配合使用,为基于 Linux 的
软件开发提供了一个完善的调试环境。
默认情况下,GCC 在编译时不会将调试符号插入到生成的二进制代码中,因为这样会增加可执行文
件的大小。如果需要在编译时生成调试符号信息,可以使用 GCC 的-g 或者-ggdb 选项。GCC 在产生调试
符号时,同样采用了分级的思路,开发人员可以通过在-g 选项后附加数字 1、2 或 3 来指定在代码中加入
调试信息的多少。默认的级别是 2(-g2),此时产生的调试信息包括扩展的符号表、行号、局部或外部
变量信息。级别 3(-g3)包含级别 2 中的所有调试信息,以及源代码中定义的宏。级别 1(-g1)不包含
局部变量和与行号有关的调试信息,因此只能够用于回溯跟踪和堆栈转储之用。回溯跟踪指的是监视程
序在运行过程中的函数调用历史,堆栈转储则是一种以原始的十六进制格式保存程序执行环境的方法,
两者都是经常用到的调试手段。
需要注意的是,使用任何一个调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程
序在执行时的开销,因此调试选项通常仅在软件的开发和调试阶段使用。调试选项对生成代码大小的影
响从下面的对比过程中可以看出来:
下面还是通过一个具体的实例说明如何利用调试符号来分析错误,所用程序见清单 4 所示。
清单 4:crash.c
#include <stdio.h>
int main(void)
{
int input =0;
printf("Input an integer:");
scanf("%d", input);
printf("The integer you input is %d\n", input);
return 0;
}
编译并运行上述代码,会产生一个严重的段错误(Segmentation fault)如下:
# gdb crash
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
……
(gdb)
当 GDB 提示符出现的时候,表明 GDB 已经做好准备进行调试了,现在可以通过 run 命令让程序开始
在 GDB 的监控下运行:
(gdb) run
Starting program: /home/xiaowp/thesis/gcc/code/crash
Input an integer:10
(gdb) backtrace
#0 0x4008576b in _IO_vfscanf_internal () from /lib/libc.so.6
#1 0xbffff0c0 in ?? ()
#2 0x4008e0ba in scanf () from /lib/libc.so.6
#3 0x08048393 in main () at crash.c:11
#4 0x40042917 in __libc_start_main () from /lib/libc.so.6
跳过输出结果中的前面三行,从输出结果的第四行中不难看出,GDB 已经将错误定位到 crash.c 中的
第 11 行了。现在仔细检查一下:
(gdb) frame 3
#3 0x08048393 in main () at crash.c:11
11 scanf("%d", input);
使用 GDB 提供的 frame 命令可以定位到发生错误的代码段,该命令后面跟着的数值可以在 backtrace
命令输出结果中的行首找到。现在已经发现错误所在了,应该将
scanf("%d", input);
改为
scanf("%d", &input);
(gdb) quit
GDB 的功能远远不止如此,它还可以单步跟踪程序、检查内存变量和设置断点等。
Linux 内核组成和架构
Intel 开源技术中心 刘宏
进程管理
Linux 内核支持所谓的多任务运行(multiprogramming),即可以有多个用户程序同时运行,用户可
以一边听音乐一边写文档。为了在一个单 CPU 的系统中支持多任务,Linux 内核使用了进程的概念(内
核中用 task_struct 的结构表示),一个进程就是一个运行中的用户程序。整个系统运行时,每个进程都会
分得一定的时间片(从几十毫秒到几百毫秒),Linux 内核的调度器负责选择不同的进程运行。当这个进
程的时间片用完后,调度器会选择一个新的进程运行。由于切换的时间和频率非常快,给用户的感觉是
有多个程序在同时运行。而实际上,在一个 CPU 上每一个时间点上其实只有一个进程在运行。
1.Linux 的进程
一个用户程序开始运行时,内核会负责把存储在磁盘上的二进制可运行程序调入内存中,同时会分
配一个 task_struct 来代表这个要运行的用户程序。task_struct 是一个非常重要的数据结构,所有关于这个
正在运行的用户程序的信息都会保存在这个结构中,包括用户程序打开的文件,所使用的内存空间等等。
Linux 内核所有对于进程的管理都是通过这个结构进行的。
2.进程调度器
进程调度器是整个系统非常关键的一个子系统,在系统中有多个进程可以运行时,它负责选择哪个
进程来运行。每个进程都是 CPU 计算和 I/O 请求的交替,不同的是,有的进程大部分的时间是花在 CPU
计算上,而有的则把几乎所有的时间花在 I/O 等待上。一个好的调度器,既能够让用户交互程序有很快的
反应时间(如编辑程序必须能够快速地将用户的敲键快速地反映到屏幕上),也能够让 CPU 密集型
(CPU-bound)的进程有很好的吞吐量(throughput)。
Linux 内核调度器是基于优先级的调度器,通过一套非常复杂的算法来决定一个进程当前的优先级,
同时进程的优先级又是动态调整的:一个很久没有得到运行的进程的优先级会被暂时增加,以增加得到
运行的机会;一个花了较多时间睡眠的进程则会被认为是用户交互程序,它的优先级也会被增加,当这
类进程需要运行的时候就会有较大的机会被调度器选到,这样整个系统对用户的输入就会有较快的响应。
内存管理
如何有效的管理整个系统的物理内存,快速地响应内核各个子系统对内存分配的请求是操作系统一
个很重要的功能。我们从下往上看 Linux 内核的内存管理子系统是如何有效地管理系统的物理内存。
1.页帧 (page)
在操作系统启动的初期,内核会通过一定的方法来得到系统中物理内存的分布信息(x86 PC 从 BIOS
2.内存区域(Memory zone)
3.Slab 分配器
由于 Zone 的内存分配是以页为单位进行的,对于小的内存分配请求(几十到几百字节),如果也使
用页为单位进行分配的话就会造成内存的大量浪费。而且内核中,分配和释放某种数据结构是非常常见
的操作,必须快速地完成这些操作。
虚拟文件系统 VFS
1.文件系统的安装(mount)
这个操作会把第一个硬盘的第二个分区上的文件系统安装到根文件系统的/mnt/tmp 目录下。安装完后,
就可以通过/mnt/tmp 来访问此分区上的文件了。
2.文件的打开
假设我们想访问刚才安装的文件系统中的一个文件/mnt/tmp/test,内核需要进行一系列的操作。Linux
内核得到了用户想要打开的文件名称后,从根目录“/”开始一级一级的往下找。
进程间通信
Linux 提供了几种进程间的通信方式,用于不同的进程之间在用户空间进行同步、数据的共享和交换。
因为不同的用户进程都拥有自己独立的进程空间,进程间的通信就必须通过内核来进行中转,进行数据
的共享和传递。
用户可以通过系统调用 pipe()来创建一个管道,这个系统掉调用会返回两个文件描述符,一个用于读
一个用于写。通常管道会用于父子进程之间,因为它需要两个进程能访问同一个 files_struct(见上图),
读的一方会关闭写文件描述符,写的一方关闭读文件描述符;这样两个进程之间就形成了一个单向的数
据通道。命名管道是为了在任意两个进程之间进行通信而设计地,它通过在当前的文件系统中创建一个
节点(通过 mknod 系统调用,指定 S_FIFO 文件类型),任何进程只要去打开这个文件就可以进行同管道
的另一方进行通信了。在 Linux 内核中,管道的实现是通过 pipefs 文件系统实现的。
2.System V IPC
经验技巧
《Linux 一句话精彩问答》是 Linux 初学者很好的入门文档,想必很多朋友当时都是边看该文档,边
敲打键盘,玩着 Linux 过来的。该文档由本刊副总编陈绪主编,迄今已经收录近千个精彩问答。从第二期
期开始将在桌面应用(即经验技巧)栏目进行连载,希望能帮助到更多刚接触到 Linux 的朋友们。
Linux 一句话精彩问答——系统配置篇(3)
陈绪
1041 ls 如何看到隐藏文件(即以.开头的文件)
ls –a 或 l. (适用于 redhat)
标准的内核是分时的,但是有些厂商也改造出了实时 linux 系统
-j 主要是用在当你的系统硬件资源比较足的时候,用改选项可以加快编译速度,如-j 3
1047 如何安装内核源码包
把你光盘上的内核源码包装上即可,rpm -i *kernel*source*.rpm
1048 修改系统时间
1049 把命令结果传给一个变量
1052 让用户的密码必须有一定的长度,并且符合复杂度
vi /etc/login.defs,修改 PASS_MIN_LEN
1053 翻译软件
星际译王 xdict
1054 让显示器不休眠
setterm -blank 0
date --date='yesterday'
使用 Ksnapshot 或者 gimp
1057.a 解压小全
unzip example.zip
http://www.linuxeden.com/download/softdetail.php?softid=883
http://sourceforge.net/projects/alien
sEx 提供了几乎所有可见的压缩格式的解压接口:
http://sourceforge.net/projects/sex
解压:x
压缩:c
针对 gz:z
针对 bz2:j
用于显示:v
解压实例:
压缩实例:
1058 在多级目录中查找某个文件的方法
2 du -a | grep filename.ext
3 locate filename.ext
1059 不让普通用户自己改密码
又想让普通用户自己改密码
1060 显卡实在配不上怎么办
Linux 下的计划任务
陈杰
在 Linux 下,用户有时需要在一个指定的时间运行一个指定的程序,或者在一段时期内重复运行一些
程序,尤其是作为服务器的管理员,每天会重复做许多同样的工作,例如备份日志、数据库和重启服务
等。有什么方法来简化这些令人繁琐的操作呢?这就需要用到类似于 Windwos 下计划任务的的程序。本
文介绍在 Linux 下通过 cron 和 at 实现计划任务的功能。
cron 循环执行定期任务
1.启动 cron 服务
#/etc/init.d/crond start
如果想开机就自动运行此服务,那么可以将其加入到启动脚本里:
# vi/etc/rc.d/rc.Iocal
在文件的末尾加入如下内容:
# /etc/init.d/crond start
保存退出,这样每次系统启动时都会开启此服务。
2.cron 使用上的安全设置
#crontab -u root -l
#crontab -u kennycx -r
#crontab -l
移出当前用户的所有任务:
#crontab -r
#crontab -e
0 12 *** /home/kennycx/test.sh
◆ 分钟(0-59);
◆ 小时(0-23);
◆ 日期 (1-31);
◆ 月份(1-12);
◆ 星期(0-6)。
◆ “*”代表所有有效的值,比如月份为星号,意思就是满足其他时间的制约后的每月都执行。
◆ “/n”代表指定间隔频率,n 为数字。比如月份为*/3,意思就是满足其他时间的制约的情况下每三个月
执行一次。
明白这些辅助字符后就举例说明。例如,每 8 小时运行一次备份脚本,并将日志输出
为/var/Iog/mysqldns.log,可以使用如下命令:
#more/etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/Sbin:usr/bin
Mailto=root
HOME=/
#run-parts
01 **** root run-parts /etc/cron.houdy
02 4 *** root run-parts /etc/cron.daily
22 4 *** root run-parts /etc/cron.weekly
42 4 1 ** root run-parts /etc/cron.monthly
其实上面的内容和用 crontab 命令的“-e”参数下达的内容几乎完全一样,只有几个小的差别:
◆ PATH=/sbin:/bin:/usr/sbin:/usr/bin,这里是指定执行程序的搜索路径,使用默认的已经足够了。
◆ MAlLTO=root,这个项目是指当/etc/crontab 这个文档中的任务执行发生了错误时,系统会直接发一封
邮件给 root,由于 root 账号不一样是管理员常用的,而是希望将其发到指定的邮箱中以便随时了解系统的
运行,可以单独指定,例如 MAILTO=kennycx@gmail.com。
此外,/etc/crontab 这个文档支持两种下达任务的方式,一种是直接执行一个指令,另一种则是执行
一个目录下的所有指令,例如:
每 20 分钟执行一下该目录中的所有程序。
atd 执行单一定期任务
#/etc/init.d/atd start
1.atd 的安全设置
2.用 at 命令下达任务
#at [-m]TlME
讲了 at 的基本用法,在举例说明一下,加深下读者对其应用的理解:
用 at 命令执行一个任务还有个优点就是它在后台执行的,读者经常就遇到在远程连接到服务器上进
行一些操作,操作还没完毕,突然网络断开了,那又只有重新登录服务器进行同样的操作,过程非常繁
琐,而使用 at 命令下达任务后就可以立即断开于服务器的连接,而并不怕网络的不稳定给执行程序带来
的影响,实在是管理员进行服务器维护时进行长时间操作中达命令的不二选择。
3.移出下达的任务
#atq
4 2006-3-11 17:3O a root
atq 列出通过 at 下达的任务的,上面显示出来的意思是在 2006 年 3 月 11 日的 17:30 下达了一条任务,
下达者为 root,该项任务的工作编号为 4。
#atrm 4
RPM 深入应用
PHPChina 肥同小可
RPM 从某种意义上来讲有点像计算器,它具备众多实用的功能,但大多数人只使用它来对软件包进
行安装、升级、卸载,就好像大多数人只用计算器计算加减法一样。然而,如果多深入了解 RPM 一点,
就会发现它的查询、校验等功能可以做更多软件包维护管理、系统故障排除、文件安全性检测等工作。
查询软件包帮助信息
# vi /etc/inittab
Error detected while processing /root/.vimrc:
line
1:
E488: Trailing characters: # set nu
系统提示错误,所以“#”并不是 Vim 的有效注释符号。
诸如此类问题要如何查询得到结果,以下给出一个操作步骤的示例:
思路:Linux 中安装的软件包大多都包含应用示例或说明文档,可以查找到其内容,就可以知道此问
题的答案。
# head -4 /usr/share/vim/vim70/vimrc_example.vim
" An example for a vimrc file.
"
" Maintainer:
Bram Moolenaar <Bram@vim.org>
" Last change:
2006 Aug 12
当看到此文件中“作者”、“最后更新日期”等信息前面的双引号,我们就已经清楚了它一定就是
Vim 配置文件的注释符号!
RPM 软件包校验
RPM 检测结果中包含系统上每个文件的八个属性,每个属性表示如下:
S:文件大小被改变
M:文件的权限或文件的属性被改变
5:md5 校验值被改变(表示文件内容被改变)
D:设备编号被改变
L: 链接属性被改变
U:文件所有者被改变
G:文件所属组被改变
T:文件的时间戳被改变
# rpm -V openssh-server
S.5....T c /etc/ssh/sshd_config
执行结果表示软件包 openssh-server 的文件/etc/ssh/sshd_config 文件大小被改变了(如添加或删除了字
符)、文件内容被改变了(注意:内容改变和文件大小改变不同,因如果只将文件中某个字符替换为另
一个字符,文件大小不会有变化,但是内容变了)、时间戳被改变(最后修改时间变了)。如果校验的
文件变更在预料之中,那么就没有什么大问题,但如果是非预期的,是否被入侵了呢?这一点非常值得
注意。
检测系统上的所有软件包(及其所有文件),可以执行:
# rpm -Va
或者,限制只输出文件路径中有字符串 bin/的命令文件:
如果一个或多个重要的命令文件发生了变化,就可以检测系统是否被攻击。黑客侵入系统后,会更
改或替换如/bin/vi、/bin/login、/usr/bin/passwd、/bin/ps 等命令,如将/bin/vi 命令设置 SetUID:
# ls -l /bin/vi
-rwsr-xr-x 1 root root 594740 Sep 29
2006 /bin/vi
系统故障排除
若 Linux 系统上的某些软件不能正常运转,就需要查看最近添加或升级软件是否是问题所在(类似
Windows 系统发生因安装、升级软件或补丁包,导致系统无法正常引导,在安全模式修复的情况),使
用“--last”选项以安装的时间次序列出 RPM 软件包(从最近安装的软件包开始),针对问题进行故障分
析。
1)如果报错信息详细报告了服务哪一个文件丢失,则只需要针对此文件恢复即可;如果报错信息不明确,
可以使用“rpm -V”命令进行检测:
# rpm -V openssh-server
missing
c /etc/ssh/sshd_config
结果中出现“missing”标示,即可判断它对应的服务配置文件丢失。如果有此文件的备份则进行恢复
即可,如果没有备份请参考第二步。
# cp etc/ssh/sshd_config /etc/ssh/
注意此命令执行时不能将文件直接恢复至/etc/ssh 目录,只能提取到当前目录下,且恢复的文件名称
所在路径要写完整的绝对路径(./etc/ssh/sshd _config)。提取文件成功后,将其复制到/etc/ssh 目录下即可。
RPM 数据库问题
有时 RPM 数据库也会出现故障,其结果是当安装、删除、查询软件包时,请求无法执行,此时需要
重建数据库。
# rm -f /var/lib/rpm/_db.*
重建数据库:
# rpm --rebuilddb
这一步需要花费一定的时间来完成。
1)对于要检查的文件或命令,找出它属于哪个软件包:
“2087”为文件中最初的字符数
3)接下来检查实际的文件,看内容是否被更改过:
# ls -l /etc/rc.d/init.d/smb
-rwxr-xr-x 1 root root 2087 Sep
2
2006 /etc/rc.d/init.d/smb
# md5sum /etc/rc.d/init.d/smb
b1c26e5292157a83cadabe851bf9b2f9
/etc/rc.d/init.d/smb
检测文件大小、所有者、所属组、权限、md5 校验值是否匹配。
检查软件包的脚本
很多 RPM 软件包都包含脚本,包括在安装、卸载、升级软件包过程中要运行的脚本,以及安装期间
满足某些条件时将触发的触发器脚本。这些脚本对于了解 Linux 系统管理、了解软件的应用很有帮助。
触发器脚本在安装期间如果条件满足就会运行。如在升级的时候,如果软件包有不同的安装动作发
生,触发器脚本将特别有用。
touch /var/run/sshd.restart
fi
……
查看 RPM 脚本信息对于了解系统软件的安装、卸载时所做的操作,对出现问题时的解决,将会有更
清晰的思路。
Linuxpk.com cnangel
这里提供一个工具:fuse
从 fedora8 安装如下:
http://fuse.sourceforge.net/
1、如何 mount?
或者使用如下命令:
2、如何卸载?
# fusermount -u mountpoint3
企业应用
知己知彼,百战不殆。对于一个网站管理者来说,清楚了解自己网站的状况,是十分重
要的。本文介绍的 AWStats 能通过对各种服务日志的分析,将结果整理为以 html 形式显示的
图表,帮助管理者进行正确的决策。
使用 AWStats 分析站点状况
岑锐坚
对于一个网站管理者来说,了解自己网站的访问量、独立 IP 数、用户访问的来源等信息是十分有必
要的。有多少用户从首页进入?有多少用户通过搜索引擎进入?哪个关键字是被匹配最多的?如果有了
这些信息,管理者能更清晰的了解自己网站的状况,并对网站内容进行更有效的调整,也可以让广告的
投放更有效率。
目前获取网站访问统计资料通常有两种方法:一种是采用第三方提供的网站流量分析服务;另一种
是通过在自己的网站服务器端安装统计分析软件来进行网站流量监测。
第三方提供的网站流量分析服务有很多,一般是提供一段 javascript 代码让网站管理员将其放在要统
计分析的页面上,当用户访问到该页面的 javascript 代码时,即在数据库中进行一次记录。常用的第三方
提供的网站流量分析服务有 Google Analytics、performancing 的 metrics 等。第三方提供的服务比较方便、
灵活,能针对特定的页面进行分析和统计,其缺点是由于嵌入了第三方额外的链接,可能会导致页面变
缓慢。而且免费的第三方分析服务功能比较有限,商业的服务则价格不菲。
通过在自己的服务器上安装日志分析软件,对网站状态进行分析是一个不错的办法。目前开源的日
志分析软件有很多,比如 awstat、webalizer、Analog 等。相比起在页面中嵌入代码的方式,由于每条日志
都是有效的点击的记录,所以分析服务器日志的方式更准确和详细,而且是它是可控的。这种方式的缺
点是需要开启和接触到服务器日志,针对的是专业的人员。本文要介绍的就是日志分析软件中的新秀,
AWStats。
日志分析利器 AWStats
AWStats 是一个基于 perl 的开源软件,它能对 web、ftp 或邮件等各种服务的日志进行统计分析,
并产生 html 页面和图表。AWStats 可以分析的日志格式包括 Apache 的两种日志格式(NCSA
combined/XLF/ELF 或 common/CLF)、WebStar、IIS (W3C) 、 wap 服务、流媒体服务、邮件服务和一些
ftp 服务的日志。
相比起其它的开源日志分析软件,AWStats 具有鲜明的特点:
界面友好、美观,可以基于浏览器调用相应的语言,包括简体中文;
输出项目非常丰富,比如对搜索引擎和搜索引擎机器人的统计是其它软件少有的;
入手简单,首次使用只需要修改配置文件的 4 个地方即可;
良好的扩展性,有不少针对 AWStats 的插件;
缺点是分析日志的速度稍慢,相比其它基于 C 的软件,AWStats 的分析的速度无可避免会慢一点;
具体的 AWStats 和其它日志分析软件的对比,可以在以下网址里找到:
http://awstats.sourceforge.net/docs/awstats_compare.html
通过 AWStats,我们可以看到什么数据呢:
参观人次—访问网站的 IP 总数;
参观者—访问网站的独立 IP 数;
网页数—也就是常说的 pv 数,是访问所有网页的次数;
文件数和字节;
每个 IP 的访问次数;
访问的文件类型;
参观所花费的时间;
参观者从什么 URL 链接过来的;
操作系统、浏览器;
搜索引擎机器人的访问次数;
从哪个搜索网站跳转过来的次数等,如图 1:
图 1 统计数据
AWStats 的安装
配置与使用 AWStats
接下来我们为站点建立配置文件,在 wwwroot/awstats/目录下有一个名叫”awstats.model.conf”的配置
文件,将它改为“awstats.www.joecen.com.conf”。然后编辑该文件,有几个选项是必须要修改的:
1、LogFile
该选项指定了日志文件的路径和名称,比如:
LogFile="/home/apache_logs/access.log.2006-07-06"
也可以用动态的变量指定:
LogFile="/home/apache_logs/access.log.%YYYY-24-%MM-24-%DD-24″
这样,如果 apache 做了 rotate,就可以自动取到上一天的日志了。
另外如果日志文件是压缩了的,我们也可以在这里直接使用命令来进行读取,而无需另外解压,比
如:
LogFile="gzip -d </var/log/apache/access.log.gz |"
2、LogType=W
该选项指定我们要分析什么类型的日志;
W – web 服务日志
S – 流媒体服务日志
M – 邮件服务的日志
F – ftp 服务的日志
3、LogFormat=1
指定使用的日志的格式。
1 – NCSA combined/XLF/ELF 格式,也就是 apache 中的 combined 格式的日志;
2 – IIS 或 ISA 格式;
3 – WebStat 格式;
4 – NCSA common/CLF 格式,也就是 apache 中的 common 格式的日志;
除了这 4 种默认的日志格式外,我们还可以自己定义要分析的日志格式。比如 IIS 和 apache 就可以自
己对日志进行定义,要分析这样的日志我们必须使用与其相对应的格式,如:
LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot"
4、SiteDomain=”www.joecen.com”
指定站点的名称。
5、HostAliases=”localhost 127.0.0.1 REGEX[joecen\.com$]”
如果站点有其它的域名,希望数据能统计在一起的话,也可以在这里加进来,会一并计算入内。
6、DirData=”/data”
指定存放数据文件的目录,默认是当前目录,为了与其它文件区别,我将其放到一个新的“/data”目
录中,注意该目录需要运行脚本的用户有写入权限。awstats 默认按照月来存放文件,也就是说每个月一
个文件(注意必须使用绝对路径)。
上面前四项配置是必要的配置,只需要设置好前四项 AWStats 即可以正常工作。该配置文件中还有
很多选项,可以做一些细微的调节或者添加插件等,在配置文件中都有详细的介绍。
设置好配置文件后,接下来是正式对系统日志进行分析,运行命令:
/path/to/awstats-6.5/wwwroot/awstats/awstats.pl -config=www.joecen.com -update
awstats.pl 脚本是 AWStats 最重要的一个脚本,使用它可以进行日志的分析以及查看分析结果等操作。
上面命令的意思是对 www.joecenn.com 域名的日志进行“update”操作,awstats.pl 会在当前目录查找名称
为“awstats.www.joecen.com.conf”的配置文件,并根据配置文件中的选项对日志文件进行分析。最后将分
析的结果按照月份放在 data 目录中(根据配置文件的设置),比如 2006 年 10 月份的文件
“awstats102006.www.joecen.com.txt”。
将该命令写入 crontab 中,每天自动进行日志的分析:
* 1 * * * (/path/to/awstats-6.5/wwwroot/awstats/awstats.pl -config=www.joecen.com -update)
这样,每天晚上一点钟会自动运行脚本,对 www.joecen.com 的网站日志进行分析。
查看结果:
查看数据也是使用 awstats.pl 脚本,在浏览器中键入:
http://www.joecen.com/awstats/awstats.pl?config=www.joecen.com
其中“config”参数指定要查看的域名。查看的部分界面如图 2、图 3:
图 2 摘要
图 3 月历史统计
加入 IP 插件
AWStats 可以使用 GeoIP 的 IP 库和 perl 库,加入该插件能在 AWStats 中统计访问者的国籍以及城市。
从 http://www.maxmind.com 中下载需要安装两个软件包:C 库 GeoIP C 和 Perl 库 GeoIP Perl ,并解包。
建议使用的“GeoIP-1.3.17”和“Geo-IP-1.27”两个版本。
安装 C 库:
cd GeoIP
./configure
make
make install
要注意的是,GeoIP 需要 zlib 库支持,否则 configure 不能完成。请先确认系统中已经安装了 zlib 库。
安装 perl 库:
cd Geo-IP
perl Makefile.PL
make
make install
从 http://www.maxmind.com 下载免费的 City 的 IP 文件,解压保存为
“/usr/GeoIP/share/GeoIP/GeoLiteCity.dat”。
图 4 显示国籍和城市信息
AWStats 是一个强大而简洁的日志分析工具,它的分析和统计结果客观可靠,能帮助网站管理者作出
正确的决策。AWStats 的功能和插件还有很多,由于篇幅所限,本文也不一一赘述,读者可以到 AWStats
的官方网站上查看或到网上搜索相关的文章。
资源
http://awstats.sourceforce.net,awstats 官方网站
http://www.maxmaind.net GeoIP 的开发公司
Snort 规则及预处理器
凌晓明
Snort 的构成
Snort 在逻辑上分成多个部件,这些部件共同工作,检测特定的攻击,并产生特定格式的输出。一个
基于 Snort 的 IDS 包含包解码器、预处理器、探测引擎、日志和告警系统、输出模块等主要部件,如图 1
所示。任何来自 Internet 的包到了包解码器,都会被送到输出模块,选择被丢弃或产生日志和告警。
图 1 Snort 部件关系图
1.包解码器
包解码器从不同的网络接口中获取包并准备预处理或送到探测引擎。网络接口可能是以太网、SLIP
和 PPP 等设备。
2.预处理器
3.探测引擎
4.日志和告警系统
依据在数据包中所找到的数据特征,一个包可以用来记录行为或产生告警。日志可以保存为简单的
文本文件、tcpdump 格式文件或其他格式的文件。
5.输出模块
输出模块或插件可以根据指定的保存日志和告警系统产生的输出信息方式来执行不同的动作。基本
这些模块用来控制日志和告警系统产生的输出信息格式。根据配置,输出模块可以将告警日志记录到文
件和发送 SNMP trap,记录日志到 MySQL 或 Oracle 数据库、产生 XML 输出、修改路由器或防火墙配置、
发送 SMB 消息等。其他一些工具可以用来发送如 E-mail 信息或 web 页面浏览等格式的告警。
Snort 规则概述
Snort 采用基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为。
1.Snort 规则的组成
图 2 Snort 规则基本结构
规则的头部包含规则所做动作的信息,也包含与包所比对的一些条件。选项部分通常包含一个告警
消息及包的哪个部分产生的这个消息。一条规则可以用来探测一个或多个类型的入侵活动。Snort 规则头
部的主要结构如图 3 所示。
图 3 Snort 规则头部结构
规则头定义了规则的动作、所匹配网络报文的协议、源地址、目的地址、源端口及目标端口等信息;
规则选项部分则包含了所要显示给用户查看的警告信息及用来判定此报文是否为攻击报文的其他信息。
alert icmp any any -> any any (msg: "Ping with TTL=100"; \ttl: 100;)
括号之前的部分叫做规则头部,括号中的部分叫做规则选项。规则选项并不是必需的,只是用来明
确定义出表示某种攻击、系统需要采取行动的报文。
2.规则结构
按照分类,所有的规则都放在规则文件中(*.rules)。Snort 将规则组成一个二维的链表结构,主要
分为两个部分:链表(Chain Headers)和链表选项(Chain Option),如图 4 所示。在链表头中包含多个
规则中的共同属性,而不同的检测属性选项则包含在不同的链表选项中。所有的链表头统称为
RTN(Rule Tree Node),所有的链表选项统称为 OTN(Option Tree Node)。
图 4 Snort 规则链
3.规则处理
Snort 检测引擎的编程采用“插件”模式,即各种检测功能都是通过各种插件模块完成。这样有利于
用户加入自己编写的检测模块增强系统功能或定制用户特殊需要的系统。每个插件都会与对应的规则关
键字绑定,以保证执行检测引擎时被正确调用。
如果发现规则检测不能满足特殊需要时,Snort 则通过预处理器这个特殊的插件对报文进行处理。预
处理器在检测引擎之前,报文解码之后运行。其有检查某个分片报文大小、处理 HTTP URI 字符串、完成
IP 分片重组、TCP 流重组及状态分析等功能。
Snort 应用与管理
1.Snort 的安装与部署
./configure --help
其中参数开关“-c”用来指定配置文件,如果不指定则在当前目录中寻找,参数开关“-i”用来指定
Snort 运行的网络接口,这个参数也是可选的。需要注意的是,在交换环境下,Snort 探测器应当连接到镜
像端口或 spanning 端口才能正常监听。如果运行时出现错误,Snort 一般会显示错误信息,用于错误排查。
2.Snort 规则应用示例
随 Snort 程序发行的有一系列预定义的规则,如何从中选择适用于应用环境的规则,并定制适当的规
则,是 Snort 应用中最大的难题,需要有着比较深厚的网络安全知识背景。本文通过一些示例解决一些常
见的问题。
每个具体的应用环境都有其自身的特点,因此也不存在能够解决所有问题的规则集合。但有些问题
是几乎所有的网络环境都可能会面对的。下面的规则用来检测类似于尼姆达病毒的 UNICODE 攻击,其
特征是请求执行 HTTP 服务器上的 cmd.exe:
alert tcp any any -> !WEBSERVER any ( content: "GET"; msg: "Detected HTTP GET";)
Alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Bit Torrent client usage"; content:"|00 00
3.Snort 预处理器应用示例
如本文前面的部分所述,Snort 预处理器可以在规则检测之前将数据包或网络应用的编码解码为规则
检测引擎所能够识别的明文。通过预处理器的使用,可以使 Snort 具有能够检测特定类型的攻击的能力。
no_alert_multiple_requests:
Preprocessor rpc_decode: 111 32771 no_alert_multiple_requests
Snort 本身并不提供图形化的用户界面,但是有很多第三方的工具可以提供图形化的用户界面,使
Snort 更加易于管理和使用。
$BASE_urlpath = "/base";
$DBlib_path = "/var/www/html/adodb";
$DBtype = "mysql";
$alert_dbname = "snort";
$alert_host = "localhost";
$alert_port = "";
$alert_user = "snort";
$alert_password = "password_from_snort_conf";
$archive_dbname = "snort";
$archive_host = "localhost";
$archive_port = "";
$archive_user = "snort";
$archive_password = " password_from_snort_conf ";
$ChartLib_path = "/var/www/html/jpgraph-1.16/src";
混源新视界
开源既往不咎立新规 混源软件进退维谷
IT 时代周刊 龙真
6 月初,在各商业软件巨头纷纷进入开源领域攻城略地的情况下,开源软件的“最高管理机构”——
自由软件基金(FSF)发布了新的授权草案。据悉,在这份名为《通用公共授权》第 3 版(GPLv3)的新草案实
施后,Linux 中很多核心代码的授权都将按照它的规定来执行。值得注意的是,新版草案中专门加入新规
定:如果任何厂商希望对客户提供专利权保护,那这种保护将自动延伸到其他任何使用该软件的消费者。
据悉,协议签订后,Novell 依靠微软良好的渠道已经销售了数额巨大的开源产品,并在销售额上超
越了竞争对手 RedHat。同时,微软也依靠该协议的示范效应,与多家开源厂商签署了类似的专利权协议。
Linux 阵营生变
让开源阵营方面不满的是,双方在协议中约定,互不向对方用户提出专利权主张,从而将非常敏感
的专利纠纷问题以协议的方式加以解决,让用户“用得放心”。这等于表明,作为传统 Linux 厂商之一的
Novell 接受了微软拥有开源专利权的观点。微软的这类主张此前长期受到了开源阵营的否认。
开源阵营重创联盟
商业软件巨头微软和开源阵营之间的关系一直处于微妙状态。出于对微软“垄断”形象的传统认知
和非理性的习惯性敌视,后者中的多数人对微软表现出了相当不友好的态度,以致它和 Novell 在合作伊
始,就成为了众矢之的。
开源阵营的最终草案已经是第四个版本。此前,Novell 就草案中可能针对自己的惩罚性条款表现了
强烈担忧,但同时也表示不后悔和微软的合作。
自由软件基金没有掩饰制定新规则的动机。这个条款就是打击微软对开源阵营的入侵,防止 Linux 阵
营中出现更多的叛逃者。他们还预计该版协议 30 天内即可定案。如果新草案按照当前的规定施行,它将
迫使微软要么放弃对 Linux 阵营的进一步入侵,要么放弃对它对 Linux 的专利声明。
混源软件的尴尬
当然,站在用户的角度来看,他们中很少完全采用商业软件,也不可能只使用开源软件,更多时候
是把这二者结合使用。所以,表面看来,是用户需求催生了“混源”。Novell 和微软的共同声明中这一
点得到了充分体现,“从竞争走到了合作,最根本的原因是企业客户已经明确表示他们需要混合型技术。
双方的协议就是要让这两个平台协同工作,为客户所要求的互操作性提供企业支持。”
这位业内人士进一步指出,“‘混源’的出现是完全基于用户需求”的论调是站不住脚的。他认为,
微软“认可”Linux,“服从”用户的需求,并“接受混源”的事实,更多地着眼于对 Linux 阵营的分化
和渗透。事实上,厂商胁迫用户的情形也并不少见。“没有永远的朋友,也没有永远的敌人,只有永远
的利益”,Novell 大中华区总经理张先民的一席话赤裸裸暴露了 Novell 和微软以及戴尔等“混源”联盟
的本质。
“混源”绝不意味着开源软件和商业软件竞争的结束。Novell 和微软协议的签订就遭受了自由软件
基金的围追堵截。随着微软扬言开源软件侵权,开源社区与微软的关系已成水火。迫于压力,最近
Novell 对自由软件基金积极示好,并在公开场合对微软表示了一些不满。业内分析人士指出,Novell 对开
源阵营的示好,也一定程度上缓解了自由软件基金对其的怨恨,也使自己在草案定稿的最后时刻得到了
回报。
开源软件和商业软件共存的现状很长一段时间内还将继续。而谈起“混源”软件的前途,人们却忧
心忡忡。
编读往来
SirKey:电子杂志能更集中的把内容整合,更系统,很好,支持!未来甚至可以出版纸质的,把知识传播
给更多的人。
OpenSource:纸质杂志我们暂时还不能涉及,把开源精神、开源理念及众多的学习方法、心得、技巧传
播到更多需要的人们那时我们共同努力的目标。
OpenSource:这块内容我们在以后的杂志的不同栏目中都将涉及,比如在开源社区中会出现一些著名项
目的介绍,以及社区的一些重大事件,在第二期开始我们在经验技巧栏目推出了“Linux 一句话精彩问
答”,初衷也是考虑到更多的爱好者需要一些常见问题的解决方法,而“Linux 一句话精彩问答”堪称这
方面的经典。
OpenSource:我们也仅仅是做出了我们力所能及的事情,中国的开源得靠大家,只有大家的意识提高了,
我们的开源才有希望。
高涛:可否增加一板块,介绍一些关于职业规划和学习规划方面的知识!
OpenSource:确实有很多的朋友接触开源更多得希望学习到更多知识,从而为自己的职业生涯,知识体
系增加筹码,这块内容待我们丰满了现在以后的栏目后会有所涉及。
彭伟:贵刊真的很好,在红联看到有关你们的杂志,下载一看,非常的精彩, 接着就等你们的第二期了,
期望第三期! 知道你们的杂志是直接从 openoffice 导出 PDF 格式的, 用 Adobe reader 阅读的时候翻页
的时候不太方便,默认的是适合宽度, 但这样往往不能在一屏里显示出一个页面的文章,我看来 ubuntu
的 issue9 杂志,也是电子版的,但他们默认的是适合页面,正好合适,而且字体也比较清晰,希望你们
能够借鉴一下。
OpenSource:现在很多电子杂志采用横排,而我们目前暂无这样的考虑。第一,严谨、专业是我们对这
个杂志的要求,目前来看,我们认为竖排更能给人杂志的感觉;第二个原因则是横排的优势(比如页面
美化等)暂时不是我们追求的方向,现阶段我们更多的希望从内容上做好基本功。
sx_alu:希望开源在年底,出一本合订本,我们好购买,也算是支持开源。
OpenSource:合订本是个很好的建议,不过肯定也会是以电子杂志的形式呈现,我们一开始就承诺了这
是一份永远免费的电子杂志,发行、出版这些有悖于我们办刊的初衷。
simontao:OpenSource 文章不错,不过里面还有好多的错别字哦,希望认真审查。多出精品,本人觉得
好。
OpenSource:错别字的问题我们会引起重视,目前阶段,编辑部也在发展壮大中,也希望愿意为杂志尽
一份力量的朋友加入我们。