原著:Eric S. Raymond ([email protected])
翻译:SilentScreamer
为什么写这个文档
作为一个行话档案的编辑,我经常收到许多热心的网络新手的电子邮件,询问“我怎么样学习才能成为一个黑客?”奇怪的是,对于这个重要的问题,好象找不到任何FAQs和Web文件,所以我写了这个文档。如果你正在离线看这个文档的拷贝,现在的版本在以下地址: http://www.tuxedo.org/~esr/faqs/hacker-howto.html
什么是黑客?
行话档案里包含很多关于术语“黑客”的解说,大多数黑客技术熟练、乐于解决问题和克服限制。如果你想知道怎样成为一名黑客,只有两点是真正有关的。
这是一个共享文化的团体,是编程专家和网络天才的社会,追溯它的历史可以回到几十年前第一个分时小型机和最早的ARPA网实验,这个团体的成员发明的术语“黑客”。黑客建立了Internet。黑客做了今天的UNIX操作系统。黑客运转了Usenet,黑客做了互联网的工作。如果你是这个团体的一部分,如果你为它和其他黑客做出了贡献,他们叫你黑客,那么你就是一名黑客。
黑客的心智没有被限制到这个软件黑客文化。一些人用黑客态度对待其他的事情,象电子和音乐–实际上,你可以在任何最高级的科学或艺术中发现这种精神。软件黑客认同这些别的领域类似的精神,也把他们叫做黑客——一些人声称黑客界真正独立于他们工作的特殊媒体。但在这个文档的余下部分,我们讨论软件黑客的技巧和态度,以及共享文化的传统。
另外一些人称自己为黑客,但他们不是。这些人(主要是处于青春期的男性)闯入计算机系统、盗用电话系统。真正的黑客叫这些人是“Cracker”,希望自己和他们一点关系也没有。真正的黑客通常认为CRACKER很懒,不负责任,不够明智。不幸的是,许多新闻记者和作者被愚弄了,用单词“黑客”来描述“Cracker”,这激怒了真正的黑客。
基本的不同之处在于:黑客建立,Cracker破坏
如果你想成为一名黑客,请继续阅读。如果你想成为一个Cracker客,去阅读 alt.2600 新闻组。
黑客的态度
黑客解决问题建立事物,他们信仰自由和自愿的相互帮助。为了成为一个被接受的黑客,你的行为举止必须表现出你有这种态度。为了表现出这种态度,你必须真正相信这种态度。
如果你认为培养黑客态度只是一种在这个团体中获得接受的一种方法,你将无法达到顶点。要成为一个信任这些态度的人,这对你很重要——这有助于你学习和保持你的激情。作为所有创新艺术,成为大师最有效的途径是模仿大师的心智——不仅是智力上的,还有情绪上的。
所以,如果你想成为一名黑客,重复下列事情直到你相信他们:
1、 世界上充满了迷人的问题,等待着被解决。
成为一个黑客有许多乐趣,但这些乐趣要花费很多努力。努力取决于动机。成功的运动员因身体表演的喜悦而,因冲破他们自己身体以前的限制而获得动机。类似的,成为一名黑客,你必须通过解决问题获得基本技巧,使你的技巧纯熟,锻炼你的智力。
如果你不是这种人,感觉这种方法不自然,为了成为黑客,你将需要它。否则,你将发觉你的黑客能量被分心了,例如性、金钱和社会认同。
(你也必须培养一种对自己学习能力的信心——一种信念,即使你也许不知道所有你要解决的问题,如果你抓住一点,从那里开始学习,你将学的足够多来解决下面一点——等等,直到你完成。)
2、 没有人解决一个问题两次。
创新的大脑是有价值的,有限的资源。他们不应该被浪费在重新发明车轮,还有很多迷人的新问题在那里等着解决。
为了举止象一个黑客,你必须相信其他黑客的思考时间是宝贵的——所以共享信息差不多是你道德上的义务,解决问题给出解答方法,以便其他黑客能解决新的问题,不必永远忙着旧的问题。
(你不必相信你有义务放弃你所有的创新产品,虽然黑客的所作所为是得到其他黑客的尊敬。卖出一些来维持你的吃饭、房租和电脑,这和黑客的价值是相容的。用你的黑客技巧维持一个家庭甚至发财至富也是相容的,只要你在做这些事的时候不要忘了你是一名黑客。)
3、 厌倦和苦工是罪恶
黑客(和普通的有创造力的人)永远也不应该无聊或是做那些愚蠢的重复性的苦工,因为这样做意味着他们不在做只有他们能做的事情–解决新问题。这种浪费伤害所有的人。因此,厌倦和苦工不仅另人不愉快,而且实际上是罪恶。
为了举止象一个黑客,你必须相当相信这一点,尽可能自动远离另人讨厌的小东西,不仅仅为你自己,而且为其他人(特别是其他黑客)。
(这显然有个例外。黑客有时做的事对观察者来说是重复的和另人厌烦的,但是那是头脑清楚的训练,或是为了获得某种技巧,或是有某种你不能用另外的方式获得的特殊经验,出于这种选择–没有人应该被强迫做无聊的事情。)
4、 自由是有益的
黑客自然是反独裁主义者。那些给你命令的任何人能够阻止你解决那些让你着迷的问题——这样做,将通常发现一些令人毛骨悚然的愚蠢的原因。所以无论在哪里发现独裁的姿态,必须与之斗争,以免它窒息你和其他黑客。
(这和与所有权威斗争不一样。儿童需要被指导,罪犯必须被拘禁。一名黑客也许赞同接受某种权威,为了得到比服从命令更多的东西。但那是有限的,有意识的廉价品;那种个人的放弃独裁的需要不在出售中。)
独裁使审查和保密兴旺。他们不信任自愿的合作和信息共享——他们只喜欢他们控制的“合作”。所以,为了举止象一个黑客,你必须对审查、保密、暴力的使用和欺骗培养本能的敌意。而且你必须愿意为这种信仰付出行动。
5、 态度不是能力的替代品。
为了举止象一个黑客,你必须培养一些这样的态度。但是抓住一种单独的态度不能使你成为一个黑客,任何更多更好的东西使你象个冠军运动员或是摇滚明星。成为一名黑客,将取决于智力、练习、贡献和努力的工作。
因此,你必须学会不信任的态度和尊重每一种的能力。黑客不会让装腔做势者浪费他们的时间,但他们崇拜能力——特别是黑客的能力,但其他任何能力都是有益的。需要技巧很少人能精通的能力特别有益,这些能力当中,思想敏锐、手工艺、和思想专注集中是最佳的。
如果你尊敬能力,你将乐于培养自己的能力——努力工作和贡献将变成一种激烈的比赛而不是苦工。至关重要的是你将成为一名黑客。
基本黑客技巧
黑客态度是至关重要的,但技巧更重要。态度不是能力的替代品,任何黑客梦想别人叫你黑客之前,你必须拥有某些基本工具包的技巧。
这些工具包随着时间的过去慢慢的改变,技术建立新的技巧,使旧的工具包淘汰。例如,它以前包括机器语言编程,直到最近包括HTML。但是现在,相当清楚,它包括下列:
1、 学会如何编程
这一点,理所当然,这是基本黑客技巧。如果你不懂任何计算机语言,我建议你从Python开始。它设计干净、很好的文档、对初学者友好。尽管是一个好的第一语言,它不仅是个玩具;它非常强大有力,并且有弹性,很适合大的项目。我更详细的描写了它,在[Pythond的价值]。在Python web sit有一份指南。
java也是一种好的学习编程的语言。它比Python难学,但比Python更快的产生代码。我认为它是极好的第二语言。
如果你仅仅知道一两种语言,知道你没有达到黑客的技巧水平或只不过是个程序员——你需要学会怎样用普通的方法思考编程问题,独立于任何一种语言。为了成为真正的黑客,你需要达到这一点,通过相关的手册在几天内学会一种新的语言。这意味着你应该学会几种不同的语言。
如果你进入严肃认真的编程,你必须学C,UNIX的核心语言。C++和C非常相近;如果你知道一个,很容易学另外一个。然而这两种语言都不适合作为你初学的第一语言。
其他语言对于黑客也特别重要,包括Perl和LISP。Perl值得学,有它实际的原因;它广泛的应用于动态网页和系统管理,所以即使你从来没有写过Perl,你也学会读它。LISP值得学,当你最终掌握它,对你有深远的启迪意义,这种经验使你在以后的日子成为一个更好的程序员,即使你从未实际使用LISP。
最佳的,实际上,学会所有这五种语言(Python, Java, C/C++, Perl和LISP)在最重要的黑客语言之间,他们描绘着非常不同的编程途径,每一种途径你都会觉得有价值。
在这里,我不能给你关于怎样学习编程的全部指导——这是一种复杂的技巧。但是我可以告诉你书本和教材上没有教你的——(许多,也许大多数最好的黑客是自学的)你可以学习语言的特征——一点知识——从书本上,但是,使知识变成生存技巧的心智只能通过练习和做学徒来学会。将要做的就是A)读代码B)写代码。
学会编程就象学会用优美的自然语言写作。最好的方法是读一些熟练人写的材料,写一些自己的东西,读多些,写多一点,再读多些,再多写一些,……
找好的代码阅读过去是困难的,因为很少有为初级黑客阅读和修补的大型源程序可利用。现在戏剧性的改变了;开放资源软件、编程工具和操作系统(全是黑客建立的)现在可被广泛的利用。这将我们引入下一个话题……
2、 获得一种开放资源的UNIX,并且学会使用和运行
假设你有一台PC机,或者可以访问到它(今天,孩子们很容易做到)。任何想学到黑客技巧的新手最重要的一步是获得一份LINUX或BSDUNIX的拷贝,安装到机器上,并且运行它。
是的,世界上除了UNIX还有其他操作系统,但是它们都是通过二进制发布的——你不能读源代码,不能修改它。在DOS上、WIN上或MACOS上学习黑客技术,就象戴着枷锁学习跳舞一样。
除此之外,UNIX是INTERNET的操作系统。你不懂UNIX但可以学会使用INTERNET,然而,你不理解UNIX你就无法成为INTERNET黑客。因此,今天的黑客文化相当明显地以UNIX为中心。(这一点不总是正确的,一些以前的黑客仍对这一点不满,但是UNIX和INTERNET之间紧密的共生关系,即使微软也无可奈何。)
所以,装一个UNIX——我自己喜欢LINUX但有别的方法(是的,你可以在同一台电脑上运行LINUX和DOS/WINDOWS)。学习它,运行它,修补它,用它上网。阅读它的代码,修改它的代码。你回得到比微软操作系统上提供的更好的编程工具(包括C、Lisp、Python和Perl),当你成为一个高明的黑客后,当你回顾过去,你将得到快乐,你获得了比你当初想象到的更多的知识。
(注意:如果你是新手,我不推荐安装LINUX或BSD作为单独的方案。对于LINUX,找一个本地LINUX用户组寻求帮助;或者)联系Linux Internet Support Co-Operative。在LISC维护的IRC频道,你可得到帮助)。
3、 学会使用WWW,写HTML。
黑客们建立的大多数东西做一些看不见的工作,帮助工厂、办公室和大学运转,和一个非黑客生活没有明显的冲突。WEB例外,大量黑客玩具正改变世界,连政治家都承认。只为这个原因(还有其他别的原因),你必须学会用WEB工作。
这不仅仅意味着学会怎样用浏览器(任何人都会用),而且要学会写HTML——WEB标记语言。如果你不知道怎样编程,写HTML将教你一些有益的习惯。所以,建立一个主页。
但是只有主页,并不足够使你成为一名黑客。WEB上到处是主页。其中大多数是毫无意义的、毫无内容的,象一堆烂泥——看起来很时髦的烂泥,你要留意,但所有的烂泥都一样。
你的主页必须有内容——对于别的黑客它必须有趣并且/或者有用。
黑客文化的状况
象多数没有货币经济的文化一样,黑客主义涉及名声。你正在试图解决一些有趣的问题,但是它们怎样有趣,你的解答是否真的很好,只有技术权威或高手去判断。
因此,当你开始黑客游戏的时候,通过其他黑客考虑你的技巧,学会保持你的分数(这是为什么直到别的黑客一致叫你黑客的时候你才是个真正的黑客)。这个事实是模糊的,根据黑客的形象是孤独的工作;也由于黑客文化的禁忌(现在逐渐衰退但仍有效)反对承认自我或外部的确认,被卷入一个人动机。
特定的,黑客主义被人类学家称做礼物文化。你获得地位和名声,不是通过对别人专横,不是因为你的美丽,不是因为你有别人想要的东西,只是通过送掉某些东西。特别是送掉你的时间,你的创造,和你技巧的结果。
基本上,你做的五种事情可以得到其他黑客的尊敬。
1、 编写开放资源软件
首先(最重要最传统的)是编写一些别的黑客认为有趣或有用的软件,并把软件的源代码给整个黑客文化使用。
(我们习惯上叫这种作品为“自由软件”,这一点使许多人困惑,他们不能确切的理解“自由”以为着什么,现在我们许多人更喜欢用“开放资源”软件)
黑客主义中最受尊敬的神那些编写了庞大而实用的软件的人,这些软件适应大众广泛的需要,并被散布,所以现在大家都在使用。
2、 帮助测试和调试开放资源软件
他们也为调试开放资源软件的人提供服务。在这个并不完美的世界,我们不可避免地在软件调试阶段花费大多数软件开发时间。这就是为什么任何开放资源软件作者会告诉你,一个好的BETA测试员(他们知道清楚的描述症状,很好的定位问题,能够忍受简陋的发行版中的BUG,愿意应用一些简单的诊断程序)的价值和他体重相同的红宝石一 样!
如果你是新手,找一个你感兴趣的正在开发的软件,做一个好的BETA测试员。从帮助测试程序到帮助调试程序再到帮助修改程序,这是自然的进阶。你会学会很多方法,你会获得好的报应,以后你需要帮助的时候,别人也会伸出手。
3、 发表一些有用的消息。
另一件好事是搜集和筛选有用和有趣的信息,放到网页上或文档里,例如FAQS,使这些信息可被别人使用。
主要的技术FAQs的维护者得到和开放资源软件作者几乎一样的尊敬。
4、 帮助维持下部结构工作。
志愿者使黑客文化(INTERNET的工程开发,对于这些事情)运作。有许多必要但并 UNGLAMOROUS工作需要做来使它保持延续—-管理邮件列表,缓和新闻组,维护巨大的软件档案站点,开发RFCS和别的技术标准。
做这种事情的人也获得很多尊敬,因为每个人都知道这些工作需要花费大量的时间而且不象和代码打交道那样有趣。让他们展示他们的贡献。
5、 为黑客文化服务
最后,你可以为这种文化服务,传播这种文化(例如,通过编写怎样成为黑客的正确的初级读物:-))在你因为做了前面四件事之一而出名之前, 这不是你该做的事。
确切地说,黑客文化没有领导者,但它确实有文化英雄、黑客长辈、黑客历史学家和黑客发言人。当你在这个圈子里足够长时间后,你也会变成其中之一。小心:黑客们不信任他们长辈们流俗的自我,所以,很显然得到那种名声是危险的。你必须给自己定位,再选择一个适度的亲切的黑客身份,这要比努力去获得那些名声好的多。
黑客和怪胎的联系
与通俗的说法相反,成为一名黑客,你不必变成一个怪胎。但是,确实对你有帮助,实际上许多黑客都是怪胎。成为一个被社会遗忘的人,有助于你在真正重要的事情上集中精力——例如思考和黑客技术。
因此,许多黑客引已为傲的是被贴上怪胎的标签甚至刺耳的术语“小丑”——这是他们表明自己独立于正常社会期望的一种方法。更广泛的讨论请看THE GEEK PAGE()
如果你能够适当的专注于黑客技术这事上面, 并且还保有你的生活, 那很好。现在比起70年代我还是个新手那时做到这一点要容易的多。现在主流文化对技术怪胎要友好的多。越来越多的人意识到黑客通常是高质量的情人和配偶。
如果黑客技术吸引你是因为你没有正常生活,这也不错——至少没有麻烦让你分心。也许以后你将拥有一个(生活)。
黑客风格的要点
再次强调,要成为一名黑客,你必须进入黑客的心智。如果你并不玩电脑,那么还是有一些事情可以帮助你. 它们无法替代黑客技术(没有什么可以替代),不过许多黑客做这些事,并认为这些事和黑客技术的本质有某种基本的关连。
* 阅读科幻小说,并参加科环小说的聚会(这是一个遇到黑客和原始黑客们的好方法)。
* 研究禅学,并且(或者)接触战争的艺术。(钢铁般的纪律似乎很重要。)
* 培养耳朵对音乐的分析能力,学会欣赏特殊种类的音乐,学会玩几样乐器或者学唱歌。
* 培养自己对于双关语和文字游戏的欣赏能力。
* 加强你的母语写作能力。(有很惊人数量的黑客,都是不错的作家。这包括所有我所知道的最好的黑客)
你做这些事越多, 那么你就越象是天生的黑客材料。为什么这些事情很特别,现在也不完全清楚,但它们关系到左右大脑技巧的混合,这看起来很重要(黑客既需要理性逻辑也需要……)
最后,有些事情不要做
* 不要使用愚蠢而夸张的代号(user ID)或化名。
* 不要加入用户组的激烈争论(或者其他任何地方的)。
* 不要自称为“cyberpunk”(电脑捣蛋玩家),也不要浪费时间在这么做的人身上。
* 不要寄出一些充满拼写错误和语法错误的文章。
做了这些事的唯一收获是别人的嘲笑。黑客们的记忆力都很好,他们会一直记住你以前犯的错,你可能要花数年的时间才能让他们重新接受你。
你使用的名字或头衔值得进一步讨论。隐藏你的身份是CRACKER幼稚和愚蠢的行为特征。黑客不这么做,他们为他们的所作所为感到自豪,并希望他们的所作所为和他们的真实姓名联系起来。所以如果你有一个头衔,去掉它。在黑客文化里,它把你标记成为一个失败者。
其它的资源
Peter Seebach 也维护了一份很不错的黑客FAQ, 这份文件是专门给不知道如何和黑客 们相处的经理人们看的。 (http://www.solon.com/~seebs/faqs/hacker.html) 如果PETER的站点连不上,下面EXCITE SEARCH你可以发现一份拷贝
Loginataka 有提到一些关于Unix黑客的训练和态度。 (http://www.ccil.org/~esr/faqs/loginataka.html)
我也写了关于黑客历史的简介。 (http://www.ccil.org/~esr/faqs/hacker-hist.html)
我也写了一份 paper「Cathedral and the Bazaar」,上面解释 Linux 文化的运作方式。你可以在我写的文章上找的到。 (http://www.ccil.org/~esr/writings/index.html)
常被提出的问题 (FAQ)
Q: 你能教我如何 hack 吗?
A:自从发表这个文章以来, 我每周都收到很多人来信问”请告诉我所有关于黑客技术的事。 但很不幸的, 我没有这个时间或者是精力去做这件事;我的黑客计划已经用掉我 110% 的时间了。
就算我愿意, 但是基本上, 黑客技术是一种基本上必须自学的态度和技术。你会发现, 当真正黑客愿意帮助你的同时,你将得不到他们的尊敬,若你求他们把会的东西都填鸭式的教给你的话。
首先学一点东西。表现出你正在努力尝试, 你有能力独立学习的。然后再带著你的问题去和黑客见面。
Q:那么这样开始呢?
A:开始最好的方法可能是参加一个LUG(LINUX用户组)聚会。在LDP General Linux Information Page你可以发现这样的用户组;可能离你很近,可能和某个大学或学院有联系。如果你要求,LUG成员可能给你一份LINUX拷贝,理所当然的帮你安装启动。
Q:你什么时候开始的?现在对我来说是不是太晚?
A:任何年龄开始都可以。大多数人在15-20岁时对此感兴趣,但我知道年龄大的人和年龄小的人中都有例外。
Q:学习黑客技术要花多长时间?
A:这由你的天分和努力来决定。如果集中精力,大多数人在18个月到两年里将学会高超的黑客技巧。但是不要以为就结束了,如果你是真正的黑客,你将花你的余生学习,使你的技术达到完美。
Q:VB或DELPHI是开始学习的好语言吗?
A:不是,因为他们不可移植的。这些语言没有实现开放资源,由卖主选择支持的平台,你将被锁在这些平台上。接受这种垄断状态不是黑客的习惯。
VB特别糟糕。它是微软私有的语言,这个事实足够使它丧失资格,象其他BASICS一样,是一种缺少设计的语言,教会你坏的编程习惯。
这些坏习惯之一就是依赖于单一卖主的库、部件和开发工具。通常,任何一种不被三种以上操作系统支持的编程语言,用它来学习黑客技术是不够的。
Q:你愿意帮我攻击系统吗,或者教我怎样攻击?
A:不,任何看过这篇文章后还问这样问题的人太愚蠢了。我不理睬任何通过电子邮件发来的这种请求,或者极端粗暴无礼地回答。
Q:我被攻击了,你愿意帮我挡住进一步的攻击吗?
A:不。迄今为止每次我被问到这种问题,那些人都在运行WINDOWS。不可能有效地保护WINDOWS系统安全对抗CRACKER的攻击;它的代码和结构有太多的漏洞,就象用筛子把漏船里的水舀出去一样。唯一可靠的预防方法是转换到LINUX或其他真正安全的操作系统。
Q:我的WINDOWS软件有问题,你能帮我吗?
A:可以,回到DOS提示符下,键入:“FORMAT C:”。几分钟后,你的问题就消失了。(玩笑)
Q: 我在哪里才能找的到一些真正的可以交流的黑客?
A:最好的方法是找本地的UNIX或LINUX用户组,并参加他们的聚会。(以前我常说,在IRC上找不到任何真正的黑客,但现在我明白,这种情况改变了。显然,一些真正的黑客团体,贴上某些标签,象GIMP和PERL,拥有自己的IRC频道。)
Q:你能推荐和黑客技术有关的有用的书吗?
A:我维护着一个Linux Reading List HOWTO,你可以得到答案。Loginataka也有相关的内容。
Q: 我应该从那一种语言开始学呢?
A:如果你还不懂 HTML 的话, 那就从它开始吧. 外面有很多华而不实的 HTML参考书,很难找到好的。我最喜欢的一本是 HTML: The Definitive Guide。 (http://www.ora.com/catalog/html2/)
但是HTML不是完全的编程语言。当你开始编程时,我建议你冲PYTHON语言开始。很多人会向你建议PERL,PERL确实比PYTHON更流行,但它学起来更难,并且(我个人认为)没有PYTHON设计得好。在网上有些给用PYTHON编程的新手的资源。
C语言是相当重要的,但它比PYTHON和PERL要难学得多。开始时不要学。WINDOWS用户,不要满足于VB。它教你坏习惯,并且不可移植。避免学它。
Q:我需要那种硬件设备?
A:过去PC机内存少功能弱,在黑客的学习过程中造成了许多人为的限制。几年以前这种情况改变了,任何486DX50以上的机器已经足够强大,胜任于开发工作,X窗口和INTERNET通讯,并且现在你能买到的最小容量的硬盘也已足够大了。
选择一台机器学习最重要的一点是,它的硬件是否和LINUX兼容(或BSD兼容)。再说一点,这台机器将是最时髦的机器;唯一不固定的是调制解调器和打印机,有些是为WINDOWS特制的硬件在LINUX下无法工作。
Q:需要我憎恨微软吗?
A:不必。微软很讨厌,但黑客文化比微软的历史长,当微软成为历史的时候,黑客文化仍然是个整体。你憎恨微软所花的任何能量都要比你花费在你热爱的手艺(黑客技术)好的多。编写优秀的代码—-在不破坏你的因果下相当有效地打击了 微软。
Q:但是开放资源软件让程序员无法生存,不是吗?
A:好象不可能—-迄今为止,开放资源软件工业给他们提供的就业机会看起来超过了让他们失业的机会。
无论已经写了多少自由软件,对新的和用户化的应用软件的需求更多。在开放资源页,对这一点,我谈的更多。
Q: 我要如何开始呢? 在那能拿到免费的 Unix 呢?
A:我在这文章内到处都有指向取得 Linux 的地方。要成为一位黑客,你必须要有强烈的动机和主动性和自学的能力。 就从现在开始吧……
因为iptables匹配规则是逐条匹配的所以执行命令的时候有先后顺序。比如仅允许IP 1.1.1.1访问80端口 先禁止访问80端口iptables -I INPUT -p tcp –dport 80 -j DROP再允许1.1.1.1访问80端口iptab…
请登录后发表评论
注册