2013年5月31日星期五

常见系统端口参考

端口服务协议注释
7echotcp/udp回显服务
9discardtcp/udp丢弃服务
11systattcp查看系统状况
13daytimetcp/udp日期查询
17qotdtcp/udp给连接了的主机发送每日格言
19chargentcp/udp字符生成服务(发送无止境的字符流)
20ftp-datatcpFTP 数据端口
21ftptcpFTP 端口
23telnettcp远程登录服务
25smtptcp简单邮件传输协议
37timetcp/udp时间协议
39rlpudp资源定位协议
42nameservertcp/udp互联网名称服务
43nicnametcpWHOIS 目录服务
53domaintcp/udp域名服务
67bootpsudpBootstrap Protocol Server
68bootpcudpBootstrap Protocol Client
69tftpudp小文件传输协议
70gophertcpGopher 互联网文档搜寻和检索
79fingertcp用户信息查找程序
80httptcp用于万维网(www)服务的超文本传输协议
88kerberostcp/udpKerberos 网络验证系统
101hostnametcpNIC Host Name Server
102iso-tsaptcpISO-TSAP Class 0
107rtelnettcpRemote Telnet Service
109pop2tcp邮局协议(版本2)
110pop3tcp邮局协议(版本3)
111sunrpctcp/udp用于远程命令执行的远程过程调用(RPC)协议, 被网络文件系统(NFS)使用
113authtcp验证和身份识别协议
117uucp-pathtcpUnix到Unix复制协议(UUCP)路径服务
119nntptcp用于USENET讨论系统的网络新闻传输协议
123ntpudp网络时间协议
135epmaptcp/udpDCE endpoint resolution
137netbios-nstcp/udpNETBIOS Name Service
138netbios-dgmudpNETBIOS Datagram Service
139netbios-ssntcpNETBIOS Session Service
143imaptcp互联网消息存取协议
158pcmail-srvtcpPCMail Server
161snmpudp简单网络管理协议
162snmptrapudpSNMP trap
170print-srvtcpNetwork PostScript
179bgptcp边界网络协议
194irctcp互联网中继聊天
213ipxudp互联网络分组交换协议(IPX),被Novell Netware环境常用的数据报协议
389ldaptcp轻型目录存取协议
443httpstcp/udp基于SSL的安全HTTP
445microsoft-dstcp/udp
464kpasswdtcp/udpKerberos(v5)
500isakmpudp互联网安全关联和钥匙管理协议
512exectcp用于对远程执行的进程进行验证
512biffudp异步邮件客户(biff)和服务
513logintcpRemote Login
513whoudpwhod 用户记录守护进程
514cmdtcp无记录的远程shell(rshell)和远程复制(rcp)
514syslogudpUNIX 系统日志服务
515printertcp
517talkudpTalk 远程对话服务和客户
518ntalkudp网络交谈(ntalk), 远程对话服务和客户
520efstcp扩展文件名服务器
520routerudp选路信息协议
525timedudp时间守护进程
526tempotcp
530couriertcpCourier 远程过程调用(RPC)协议
531conferencetcpchat
532netnewstcpNetnews 新闻组服务
533netwalltcp/udp用于紧急广播的 Netwall
540uucptcpUNIX-to-UNIX 复制服务
543klogintcpKerberos login
544kshelltcpKerberos remote shell
550news-rwhoudp
556remotefstcpBrunhoff的远程文件系统(RFS)
560rmonitorudp
561monitorudp
636ldapstcp通过安全套接字层的轻型目录访问协议
666doomtcp/udpDoom Id Software
749kerberos-admtcp/udpKerberos administration
750kerberos-ivudpKerberos version IV
1109kpoptcpKerberos POP
1167phoneudpConferene calling
1433ms-sql-stcp/udpMicrosoft-SQL-Server
1434ms-sql-mtcp/udpMicrosoft-SQL-Monitor
1512winstcp/udpMicrosoft Windows Internet Name Service
1524ingreslocktcp
1701l2tpudpLayer Tow Tunneling Protocol
1723pptptcp点对点隧道协议
1812radiusudpRADIUS authentication protocol
1813radacctudpRADIUS accounting protocol
2049nfsdudpNFS server
2053knetdtcpKerberos de-multiplexor
9535mantcpRemote Man Server

2013年5月27日星期一

高效使用Linux的七个习惯

刚开始使用Linux时你也许会感到不习惯,许多高手也都有这样的经历。毕竟,曾经他们也都是新手。但是现在Linux团体已经在为新用户提供有关指南,手册和基本的技术文档来使他们尽快上手方面做的相当出色。三年前我首次接触Linux,很多人通过论坛,在线聊天和电子邮件等帮助我,这些“企鹅”们真是相当热心。 

  对此,我深感应该为无私帮助我的团体做一些力所能及的贡献,我应该给刚使用Linux的朋友写点什么。这里我编译了七个当我刚入门时别人告诉我的七个习惯。我相信如果你运用了这七个习惯,在你使用Linux时你会感觉更安全,便利,学到很多实用的东西,最终你会发现使用Linux也是那样的愉悦。 

  1-不要以根用户登录 

  这是你首先应该注意和遵守的。以前我们可能已经习惯了Windows,我们一直以为权限越高越好,所以我们喜欢以管理员帐户登录。但是这也许是Windows经常被病毒骚扰和不安全的重要原因,现在太多人都在用根用户登录。 

  权限越高责任越大,拥有管理员权限你需要谨慎对待你所做的任何事情,但是错误还是不可避免。我记得我最先使用的是Suse Linux,有很多事项需要管理但是没有图像用户界面我不知道如何做,于是我天真的注销并登录到了根用户的图形界面。根用户图形界面的默认壁纸是一排排的高亮地雷。这些符号在我脑海里盘旋,我很小心没有终于没有做错什么。 

  那么以根用户登录有那些危险那? 
  1.你可以想象你在没有保护网的情况下打秋千,会不会感到害怕?这和你以根用户登录的道理是一样的,你会不经意间毁掉你的系统。 
  2.你可能会不小心运行恶意软件。通常在根用户模式下任何程序的启动都默认给予所有权限的。 
  3.如果你的系统有安全漏洞没有修补,你就可能被别人完全控制。 
  4.这是使用Unix的惯例,除非必须那么不要轻易在根用户下运行任何东西。如果一个不是自己触发的程序请求根用户权限,那么你就要小心了。 

  通常,我们不必登录根用户界面,下面是几条技巧: 
  *使用“sudo”或“su”命令,并在你完成管理时退出 
  *如果你不知道如何使用命令行完成这些,你可以使用“gksu”或“kdesu”。比如,按 Alt+F2并打出“gksu nautilus”,并在你完成时马上结束程序。 

  2-合理的命名你的文件 

  Linux环境下,你可以按照你的意愿命名文件,但是以下两点是不允许的:1)“/”是根目录专用的;2)不要使用无效字符。其它的在技术上都是可以的,但是为了避免以后的麻烦这里有几点经验你可以遵守: 

  *经验上,只使用字母、数字、连接符(-)和下划线(_) 
  *避免使用美元符($),括弧和百分号(%)等特殊字符,这些字符对于shell有着特殊意义,可能会引起冲突 
  *避免使用空格,在终端上处理含有空格的文件是很愚蠢的。你可以用连接符或下划线来代替空格。 

  这些已经基本上成为我的习惯,并且我在使用Windows和Mac时也不自觉的遵守这些准则。 

  3-将你的home目录放在一个独立的分区上 

  这样做会给你很大的灵活性。将home目录放在一个独立的分区上,可以在你重装系统甚至升级你的整个版本而不会丢失你的数据和个人设置。你可以在根目录下重新设置你所需要的而保留home分区。现在你可以将你需要的随意分类而不必担心的数据和个人设置,你可以随时使用它们。 

  如果碰巧在你安装系统之后才懂得这一点,不要失望。你可以按照Carthik在ubantu Blog上的一片名为“Move /home to it’s own partition”的指导道一步步的完成。 

4-合理的灾难管理 

  Linux是比较强大和稳定的,但是任何系统都会崩溃。在你CTRL-ALT-DEL,重启之前,你应该学会如何处理你遇到的事故。你需要知道如何在不重启的情况下轻松恢复你的系统。我个人认为这种情况分为几个不同的层次,如果前一步不奏效的话请转向下一步: 

  1.我将“强制关闭”程序放在我的任务栏上,如果哪个程序出现问题可以单击“强制关闭”图标并结束该程序 
  2.如果上一步不奏效,调用终端,用“ps -A”,记下那个出问题程序的进程号,结束它 
  3.使用“killall”命令,比如“killall Firefox-bin” 
  4.如果整个图形界面都冻结,你已经不可能调用终端,按CTRL-ALT-F1,这样可以转到另一个终端,这样你就可以使用步骤2和3来结束出问题的程序。
  5.还不行的话,你可以使用CTRL-ALT-Backspace组合重启你的图形界面,但是要注意的是,这样会结束你正在运行的GUI程序。 
  6.调用CTRL-ALT-F1再使用CTRL+ALT+DEL这样不会立即重启你的系统,只是按照正常模式重启,所以是安全的(假定你想要重启并且CTRL-ALT-F1可用)。 
  7.如果这一切都不管用,也不用记着按强制重启按钮,尝试Raise a Skinny Elephant 。 

  5-主动尝试 

  你可能对朋友给你设置设计的当前版本和配置很满意,这适合你。这很好,但是可能会有比这更好的。为什么不尝试下Linux和开源的灵活性和丰富性呢?不要害怕尝试不同的程序,图形管理和桌面。实验直到你找到最适合你的。你可以这样想,你现在居住在世界上最好的地方,但是环球旅行也不会有什么坏处的?或许说不定你还可以找到一个更好的居住地,就算不能,你旅行的时间也值得好好品味,你对其它国家,它们的人和风俗,思考方式了解的更多,最终说不定你会喜欢上这样的尝试。你尝试的任何新事物都会增加你的学识,一年左右的时间你将会对Linux和开源世界有一个很好的把握。 

  我个人曾尝试过至少10种分配方式,4种桌面和五种桌面管理。我最近的文章《 Etymology of A Distro》使我对更多的分配感兴趣,象Zenwalk, Foresight和 Sabayon等。朋友,主动尝试,这对你有好处。 

  在你尝试之前,你可以参考以下几点: 

  *设置好你感觉最舒服的系统,因为你需要一个时刻工作的系统。这样你就可以按照下面的几点进行尝试 
  *你可以利用虚拟机来完成。安装一个Vmware或Virtualbox,用它们来做测试 
  *如果你不知道如何运用虚拟机,你可以设置一个独立分区来尝试 
  *最好的,你可以用一个设置好的PC,再有一个当作测试用。这样你就可以随心所欲的进行尝试 

  6-熟悉使用你的命令行 

  虽然我不提倡你一定要学习命令行,有太多的文章一直强调学习命令行的重要性。这里我假设你已经知道他的重要性并且已经知道怎样用它处理一些简单的管理任务。你可以按照指导书和手册做相应的配置。但是不要一味的复制和粘贴。就是说,不止不加思考的执行命令许多有自由天性的人劝诫你要尽量深刻的理解每条命令行的含义,它能做什么。为什么手册上这样做的,而不是那样做?理解你所做步骤的基本原理。 

  过了一段时间你就会感觉你已经能很好的运用它了。最后你会发现它仅仅是种伪装的语言。每条命令可能只是一些词语的首字母,或一个单词的缩写。你希望你的狗理解“Spike fetch ball”这样的长句,为什么不尝试理解下“sudo mv /file1 /file2”那? 

  7-为你的用武之地做些准备 

  我有过很多这样的经历,当有个朋友请求我在他的电脑上做些东西,但是由于他所选择的操作系统会出现糗事。有时候我有急事但是仅有的电脑有很挫的操作系统。不必痛苦,随身戴上你的linux系统,不管是存储在U盘或CD上。有相当多的linux版本很方便的,象Knoppix, DSL和 Puppy Linux等。很惭愧,事实上我自己还没用上这个习惯,我想我也需要言行一致。

学习Linux的九条忠告

1. 不要当“传教士”

很多人在讨论区不断的引起 "Linux vs. Windows" 之类的讨论,甚至争的面红耳赤,这是没有必要的。 这种争论是浪费时间而没有任何用处的。对,你花了一下午,用许多事实“捍卫”了 “Linux 比 Windows 好” 这个说法。但是 Windows 的支持者并不会喜欢上 Linux,他们只是稍微退缩一下,然后找一些新的证据来跟你辩论。 世界上的人们都在利用Linux 研究最前沿的科学,我们还在这里讨论 “要不要用Linux” 这种无聊的问题,什么时候才能赶上时代前进的步伐? 什么叫做“Windows 支持者”,什么叫做“Linux 支持者”?我们为什么要支持某一个而反对另外一个?你不需要为 Linux “护法”,不需要成为“Linux 支持者”或者“GNU传教士”,GNU/Linux 已经用事实向世界证明了它们的威力,已经被大多数人接受。你只需要安安静静享受 GNU/Linux 给你的乐趣和自由。 你需要关心的不是你的工具是什么,而是你用它做了什么。精通 Linux 并不说明任何问题,因为它只是一个工具而已。如果你用 Windows 能很好的完成你的任务,那你就没有必要费时间去熟悉 Linux。直到有一天你发现一项任务只有 Linux 才能完成的时候再换也不迟,因为你身边的 Linux 的爱好者一定会很乐意的帮助你。

 工具不是人,不应该对工具有感情。这是你在进行任何对工具的讨论前需要提醒自己的事情。面对一些容易引起争论的东西:Word 和 TeX;Emacs 和 VIM;MAXIMA,Mathematica 和 Maple;Gnome, FVWM 和 KDE;Mutt 和 Pine …… 一定要冷静的对自己说:“我不站在它们任何一边,因为它们不是人。” 各人的需要不同,生活的环境不同。对你来说好的东西,对别人来说不一定好,我们需要尊重别人的选择。如果你当面说别人正在用的程序不好,没有人会乐意接受你的意见。我从来没有建议过我爸爸不用 Windows + WPS,而用 Linux + LaTeX 来处理他的英语试卷。因为 WPS 是我爸爸的选择,他能用 WPS 编辑出很好的试题去测试他的学生,那就足够了。

 我曾经帮我爸爸做了一个 perl 程序,能够自动从一种我自己设计的 markup 语言转化成 LaTeX 格式的英语试卷。可以自动对试题编号,乱序排版选择题的选项,自动生成答案表,生成老师用的显示答案的版本,自动对短文改错题进行优化分段,自动拼写检查,图形化的配置方式…… 我爸爸高兴的用了一段时间,可是后来他想用 WPS 里的一种标题样式,而我不在家,无法为他修改程序。所以他又换回了 WPS。这就像有人送爱因斯坦一罐剃须泡沫一样,刚开始几天,发现他神采飞扬,不断夸这个东西真舒服。过了几天,发现爱因斯坦又开始用白水剃胡子了,因为剃须泡沫用完了,他懒得自己去买那个东西。这只是习惯问题。

2. 不要强迫自己

喜欢电脑的人总是有某些心理强迫倾向。有的人说:“键盘比鼠标快。我不要用鼠标。这样才有高效率。” 所以他在编辑器里无论什么时候总是用 20w, 10j 这样的命令到达目的点。他甚至觉得图形界面是多余的,干脆 Xwindow 都不装。 全部用键盘看起来的确比让手离开键盘去拿鼠标,再回来“快” 多了,但是快的击键频率不等于工作的高效率,对你的健康更没有什么好处。这只能把你变成打键盘的机器。 当你正在检查你的文章或者程序,思维正在随着字符的含义流动,突然 20w, 10j 这样的东西出现在你的脑子里,是不是会打断思路?不?那说明你当时思考的问题比较简单,这些干扰还不会起到副作用。

 其实很多人用电脑的时候,思想都受到某种教条的束缚,上面这个只是众多教条中的一种。某些人制造了很多这种教条,用他的工作方式来要求别人,嘲笑方式跟他不一样的人。比如有的人嘲笑其它人写 C 程序不按 8 字符缩进,嘲笑别人在 vi 里用方向键,嘲笑别人不知道 PVM 是什么,嘲笑其它人用 JAVA, C# 这种由 GC 回收内存语言…… 你不用管各种各样的教条,电脑只是你的奴隶,你想怎么用就怎么用。没有人能够约束你,没有人可以嘲笑你的工作方式。电脑明天就不再是这个样子,所以今天你不用完全了解它。你没有必要知道别人创造的一切,因为你需要留点时间自己创造些东西。Just have fun! 当你下次修改文章的时候,不妨试试悠闲的用鼠标在你眼睛看到的地方轻轻点一下。

3. 不要“玩 Linux”

很多人用 Linux 的时候会感觉很迷茫,该用哪个发行呢?是不是我少装了什么?怎么升级这么快啊!怎么这么不稳定!每当遇到新的软件他就想试用,每当新的版本出现,他就更新,然后用鼠标在新的菜单里选择从来没见过的程序来用用。 其实你是为了Linux而使用Linux,而没有找到正确的理由来利用 Linux。你首先要明确用电脑的目的,你用它是为了解决你的实际问题,而不是为了学习安装操作系统,不是为了测试哪个版本好用,不是为了“赶上潮流”,更不是因为你硬盘太大了,你想多占点空间。 如果你启动了电脑之后不知道应该干什么,那么最好先不要用电脑,因为你可能有更重要的事情需要做。

4. 不用挑剔发行版本

很多人刚开始用 Linux 的时候,总是在怀疑别的发行版本是否比自己正在用的这个好,总是怀疑自己以后时候会失去支持,不得不换用别的发行。所以很多人今天是 Redhat,明天又换成了 debian, 一会儿又是 gentoo, …… 甚至有的人在一台机器上装了两个版本的 Linux,然后比较哪一个好。 其实你完全没有必要这样做,任何发行,只要你熟悉了,你在上面的工作方式几乎是不会受到任何影响的。

我以前一直用的 Redhat,当我有一天在我的一台新机器上安装 debian 时,我发现使用 Redhat 的经验完全没有浪费。我用了一个下午就配置好了 debian,使它服服贴贴的听我的话,就跟没有换发行一样。 Debian, TurboLinux, SuSE, Redhat, Gentoo, ... 任何一个版本都是不错的。很多人认为自己攒一个 LFS 是高水平黑客的象征,但是不是每个人都有精力去了解所有细节。 如果你是用于个人的日常事物和科研,可以试试 debian。它是我见过的最方便的一个发行。

5. 不要盲目升级

不知道这是心理作用还是什么,有的人看到比较大的版本号,就会很想换成那个。很多人的 Redhat 本来配置的很舒服了,可是一旦 Redhat 发行新的版本,他们就会尽快下载过来,然后选择升级安装。结果很多时候把自己原来修改得很好的配置文件给冲掉了。新的软件又带来了新的问题,比如有一次我的 rxvt 升级到 2.7.8 就跟 miniChinput 冲突了,升级到 Redhat 8.0,发现 xmms 居然缺省不能放mp3了,XFree86 的 xtt 模块在 I810 上有新的 bug,会导致 Mozilla 突然退出。 如果你已经配置好了一切,千万别再整体升级了,这会浪费你很多很多时间的,不值得。有句话说得好:"If it's not broken, don't fix it." 如果你的程序能够完成你需要做的事情,你何必升级呢?

6. 不要配置你不需要的东西

如果你只想做一个像我这样的普通用户,主要目的是用 Linux 来完成自己的科研任务和日常工作,那就可以不用系统管理员或者网络管理员的标准来要求自己,因为当一个系统和网络管理员确实很辛苦。普通用户学习那些不经常用到的复杂的维护系统的工具,其实是浪费时间,学了不用是会很快忘记的! 我不是一个合格的网络管理员,我的服务器都只设置了我自己需要的功能,设置好 ssh, ftp 已经足够了,那样可以省去我很多麻烦。我从来不过度考虑“安全”,因为 Linux 缺省已经很安全了。我没有磁带机,就不用管 tar 的那些稀奇古怪的参数了,czf, xzf, ztf 已经可以满足我所有的需要。sed, awk, ... 我也只会几种常用的命令行。

7. 不要习惯的使用 root 帐号。

在需要的时候才 su! 这是很多刚接触 UNIX 类操作系统的人常见的现象,他们不喜欢在管理系统的时候才 su, 而是一直用 root 帐号干所有事情,配置系统,安装程序,浏览网页,玩游戏,编程 …… 结果有一天,他不小心在某个系统目录使用了 rm * ... 后果不堪设想……

8. 不要用商业的眼光来看 Linux。

 Linux 不是商业软件,所以不要用要求 Solaris, Windows 那样的眼光来看 Linux. 自由软件的作者们从来不拉拢用户,他们对用户不负有任何责任。实际上在自由软件的世界里,“开发者”和“用户” 并没有明确的界限,大家是朋友。 自由软件很可能只是满足作者和他的朋友的需要,甚至是为了好玩而创造的。自由软件不是完美的,自由软件承认自己有缺点,它不会自吹自擂,蒙蔽“用户”的耳目。这种对作者责任的解脱激发了作者的创造力,他们不用过分考虑“向上兼容”,他们往往比背上重重包袱的商业软件结构更合理,技术更先进。 所以当你用某个自由软件遇到困难的时候,不应该埋怨软件的作者,因为他们对你并没有义务。

你不应该把自己当成一个挑剔的顾客,而要把自己作为这个软件的顾问和一个和蔼的建议者,这样你才能理解作者写这个程序时的快乐,在遇到问题时向作者反映,帮助他完善这个软件,成为一个快乐的参与者。就像你的哥哥送你一个他用旧了的自行车,你应该珍惜这份友情,而不要在车坏了,或者骑车摔了一交的时候大骂你的哥哥。如果你真的不能使用这种合作的心态,那么最好不要使用这个软件。 这是一种先进的文化,它包含了互相合作,科学创新的精神。理解这一点不是很容易,很多人往往是因为不能理解这种文化而离开自由软件。这对于作者来说并没有什么损失。

9. 干你的正事去

 很多人跟我说,你的网页浪费我好多时间来配置这配置那,一会儿是 FVWM,一会儿是 Mutt …… 嗯……那些东西都是我有空的时候一点一点积累的,如果你想一次性搞定所有那些东西,恐怕得花你几个星期甚至几个月的时间!并不是一定要搞定所有这些东西你才能正常工作的。除非你真的非得利用某个程序,或者你闲着没事,否则你可以不管这些东西。

10. 上面几条仅供参考 以上只是个人意见,不一定适合所有人。取舍由你了!