专访Linus Torvalds:对所有Bug一视同仁

2011-05-23 11:08


今年,Linux 20岁了。各地都在筹划着如何庆祝Linux 20岁的生日。近日, LinuxFR对Linux的创始人Linus Torvalds进行了采访,在采访的第一部分《专访Linus Torvalds:鄙视用道德绑架开源的行为》中,Linus Torvalds回答了为何选择非GPL版权而不是GPL许可等问题。本文是LinuxFr对Linux创始人Linus Torvalds的采访的第二部分,主要从自由开发软件、内核安全等方面进行了回答。以下是原文。

LinuxFR:Lennart Poettering曾说:“实际上,Linux API已经取代了POSIX API的角色,Linux已成为所有自由软件开发的焦点”,你对此有何看法?

Linus Torvalds:的确如此,我认为它为简化非常困难的问题提供了一个可行的方法.linux API兼容POSIX API,因此,如果你想以后将项目移植到其它平台,选择Linux作为开发平台无疑是最佳的选择。

LinuxFR:你认为systemd相比SysV初始化程序是一个巨大的进步吗?它是一个改变游戏规则的技术吗?

Linus Torvalds:我对此也持观望的态度,它的使用范围还不够广泛,我认为启动性能很重要,任何对此有帮助的技术都是好事情。

LinuxFR:你使用btrfs吗?你认为它何时能准备好取代默认推荐的文件系统ext4?

Linus Torvalds:我在我的两台笔记本电脑上使用了btrfs,但坦白地说,谈到文件系统的使用时,最大的因素是发行版的支持。当然,文件系统本身的核心功能也很重要。人们除了关心文件系统的功能和性能外,更关心其稳定性。

LinuxFR:通过Linux和Git这两个软件,你对计算机行业的影响非常大,你是怎么做到这两个巨大的成功呢?你和凡人有什么区别?

Linus Torvalds:首先我要纠正一点,我也是凡人,我认为成功最重要的就是持之以恒,就Linux而言,我拥有了天时和地利,当时也有其他的人在开发操作系统,但他们没有坚持做下去,而我一做就是20年。大多数开发人员都会做一些他们感兴趣的私人项目,但他们的兴趣也消失得很快,很少有人能坚持10年。

对Git而言,情况有所不同,当初我希望通过它更好地管理Linux内核树,因为内核源代码变得越来越大,维护者也越来越多,需要一个更好的源代码管理和协作开发工具,于是便有了Git的架构。其实在Linux和Unix世界,已经有很多成熟的SCM工具。

对Git贡献最大的不是我,而是Junior Hamano,他真的是一位伟大的维护者,像他这样的人对开源项目来说是至关重要的。开源编程是一项团队运动,找到合适的人非常不容易,对Linux内核开发来说更是如此。让我感到欣慰的是,我们已经拥有一大批优秀的内核维护者。当开发工作裹足不前时,我可能会向他们冒火,但与此同时,我相信有更好的维护者站出来。

LinuxFR:据我所知,你对生物学和进化论也很感兴趣,这些只是对Linux开发有用吗?

Linus Torvalds:我不认为这些知识对Linux内核开发有用,这些都只是我的个人兴趣而已,生物学、进化论和人类行为都是让人着迷的主题,我认为在技术发展和进化论之间有许多相似之处。技术进步更多的是“有机”的发展,只有很少一部分是超前设计,实际上,我认为大多数技术问题都太复杂了,只能通过渐进式改进、试验和不断摸索才能找到最佳的解决方案。

LinuxFR:你现在是一位美国公民,你如何看待美国软件专利法呢?你的声音可以帮助和这部法律斗争么?

Linus Torvalds:虽然我不喜欢专利,但我们必须承认它们,我也尽量保持远离涉及到专利的问题,但我希望有更多的人参与进来。

LinuxFR:你经常在realworldtech.com(简称rwt)发表文章,但我从来没见你在lwn.net上发表过文章,为什么?你会习惯性地浏览lwn.net吗?

Linus Torvalds:我到rwt是去讨论计算机体系结构的,我喜欢和那里的人展开激烈的讨论,甚至是争论,我也喜欢和非Linux用户,甚至连Linux都没听说过的用户讨论问题,那样我才能听到有价值的反对声音和意见。

Lwn它是一个完全不同的“鱼塘”。

LinuxFR:有各种不同的人批评内核安全,你认为内核开发者在内核安全机制和代码审查方面做了足够的工作吗?你认为GRSecurity应该进入内核主线吗?

Linus Torvalds:我认为我们的工作已经做得很好了,对有些安全人士来说,他们都认为仅仅把工作做好还不够,他们认为安全就是一切。

大多数安全问题就是Bug,我们需要尽量避免Bug,但不可能完全消除,和其它项目比起来,我自认为我们在这方面还是做的相当不错的,至少我们不会出现极其愚蠢的编码错误,即使偶尔出现也会很快被发现和修复。我认为将所谓的“安全Bug”和其它Bug隔离开来并没有什么用,因此任何一个Bug都可能成为一个安全Bug。

至于GRSecurity,我们已经开始评估是否要引入内核主线。

通常,实现安全的最好方法是提供多个不同的安全层,你不可能完全消除Bug,但在多层安全保护机制下,一个安全层不能保护的安全问题会被其它安全层轻松保护。

因此,在内核中,我们会在常规层提早进行安全检查,即使在文件系统或驱动中存在一个Bug,也很难利用这个Bug搞破坏。当我们发现溢出漏洞时,我们除了修复溢出漏洞本身外,还会(尽可能)在高层增加检查,避免在第一个环节就发生溢出。因此在许多时候,我们对相同的问题要做多处修复,每一处修复很小,但集合起来的防御能力就很强了。

LinuxFR:你认为安全专家,漏洞利用者与内核开发人员相比,他们的心态不同吗?

Linus Torvalds:是的,特别是某些有趣的漏洞利用方法让我们抓狂,让人印象深刻。我常对安全界的不道德行为感到很沮丧,安全专家有时也是装模作样。

LinuxFR:我曾经采访过GRSecurity作者Brad Spengler,并问了他对你和内核安全的意见,Brad的回答是:“他有时比其它开发人员对安全的理解更好,但安全不是他的主要目标,他对安全的想法已经成了内核开发的官方政策,在修改日志中忽略与安全相关的信息,对所有Bug一视同仁”。你认为应该对所有Bug一视同仁吗?为什么?

Linus Torvalds:我倾向于对所有Bug一视同仁,我既不想挑出,也不想刻意隐藏我们的安全问题。

问题是,安全人员不赞同这种做法,有些人希望完全公开,有些人(厂商和大型金融机构)希望有限制的公开,还有一部分人希望完全保密,避免这些问题泄露给那些编写漏洞利用程序的“黑帽”黑客。

“坏人”也分几种,有的人只是想测试一下,如在校大学生在听说了某个可利用的漏洞后,决定测试一下大学的机器是否真的能崩溃,还有的人属于脚本小子,他们无深厚的技术背景,但他们的所作所为让人讨厌,最后还有一种人非常聪明,他们真的能搞破坏,甚至造成严重的犯罪。

如何解决这些争论呢?我认为无法解决,每个人都有自己的信息公开或封锁方法,你无法左右他们。

我个人的意见是,唯一理智的方法是要知道它不是一个可解决的问题,公正地对待Bug。我们尽量避免Bug,但一旦发生,我们会立即修复它们,对于漏洞的利用方法,我们不会透露细节,也不会让那些想利用漏洞的人轻易得逞,因此我们一般不会在修改日志中列出如何利用漏洞的描述,甚至不会列出相关漏洞的任何描述信息。

安全人员总是支持我们这种做法吗?当然不是!但也有人支持我们这种做法。

LinuxFR:你对OpenBSD的质量有何看法?他们一直高度重视安全,是否从这个项目汲取了一些教训?

Linus Torvalds:我认为任何单一目的的操作系统项目都是失败的,自身安全不是一个值得追求的目标,你需要让用户将安全问题摆在首位。因此,我认为OpenBSD重视安全只会让整个项目失去兴趣。

但同样,这只是我“Bug就是Bug”的思想,我认为安全也很重要,但这个世界不只是有黑色和白色,也没有哪个事情总是比别的事情更重要。

原文出处:https://linuxfr.org/nodes/85904/comments/1230981
译文:http://os.51cto.com/art/201105/262694.htm

 已同步至 DeadFire的微博