当前位置:七道奇文章资讯系统安全Linux安全
日期:2011-03-03 20:42:00  来源:本站整理

<b>其实Unix很简单</b>[Linux安全]

赞助商链接



  本文“<b>其实Unix很简单</b>[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  陈皓
  很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?若何才能学好?并且让我给他们一些学好Unix的经验.在绝大大都时刻,我发现问这些问题的朋友都有两个特点:
  1)对Unix有畏难心理,对其没有信心;
  2)喜好用拿Windows来和Unix做对比.
  两种特点就像两个“心理表示”,表示着自己Unix很不好学,表示着Unix很糟糕,不如Windows好.于是,自己也就被自己的这种长期的“表示”所催眠了.因为,从一开始就有畏难情感,所以也就认为Unix不好,认为非常很吃力,最后还会招致对Unix的讨厌和恶感的情感.所以,为了改正上述朋友们的“心理表示”.我想写下这篇文章,想奉告大家,Unix真的很简单.
  在正式论述“简单的Unix”之前,我想做几点阐明:(免得陷入无意义的争辩)
  1)  本文是站在开辟者的角度来阐明的,所以,假若有朋友差别意我的概念,请也以开辟者的角度来向我提出质问和谈论,本人非常欢送.
  2)  本文不免要用Windows来和Unix做比较.这并不代表我不喜好Windows,也不代表我要叫你放弃Windows.我们也知道这种比较已经没有什么意思了,但因为众多的朋友被Windows先入为主了,所以,我一定要拿Windows来开刀,才能改变那个“心理表示”.仅此罢了.
  OK,言归正传.先说Unix的一个最重要的特点——“高内聚,低藕合”!也就是说,Unix下的各种利用程序都和别人不相关.这就是贯串整个Unix的思维——模块和程序的高度独立性.这样的计划和做法,会让你的系统对比的安定,也会让你的系统分外地简单管理和保护.Unix下的利用程序们就像一支正规军一样布列地整整齐齐,只要司令(内核)还在,系统是不会因为某个部队的丧失而无法自举的.而Windows的利用程序们就像一片树林一样,从地表上看过去,树木们布列地整整齐齐,但是他们的树根在地下却彼此缠绕在一同,剪不断,理还乱,非常地复杂.
  “高内聚,低藕合”的给Unix造成的后果是,其系统中基本上都是功效单一的小程序,这些小程序就像积木一样,当我们需求构造建一个自定义的建筑时,大大都情形下,我们只需求做的只是一个“搭积木”的简单游戏.Windows建立得富丽堂皇,惋惜,别人的“积木”你几近不大概拿到自己的建筑中来.老是要你模拟或重写.
  (插一句:你能否注意到在网上下载Windows软件时,会有一种所谓的“绿色软件”?这就是对Windows的最大嘲讽,Windows下装一个软件,N个DLL放到Windows系统目录下,注册表里写入N个键值,还有很多你不知道的行动.而在Unix装软件,你不用耽忧你的系统目录下会莫明其妙地多出些乱七八糟的文件.就是copy那么简单,那怕是rpm自动安装,安装完后,你也可以查询到软件安装后对系统所做的改变.所以,你在Unix下分发你的软件时,你会认为比Windows下要做得简单了很多很多.)
  再说说Unix的另一个最重要的特点——“全部的设备都可以像文件一样地操作”.简单吧.全部的调备,文件、打印机、显示器、终端、网络、软盘、磁带、USB、CDROM、等等的I/O操作,都以文件描写符的方法举行操作.两个Unix下最重要的系统调用read/write便可以胜任全部设备的I/O了.Unix早就在/dev目录下为你建好了这些文件.利用起来很简单.
  大概很多人都认为Unix的号令行太过复杂.一个号令有着若干的参数,非常地复杂.但之所以本日Unix下的利用程序还在以字符界面为主,这刚好表现了Unix的简单的特点.这也是Unix的另一个特点——“号令的彼此支持性”,号令们通过一个管道或是重定向,可以彼此接洽在一同,再加以Shell脚本的支持,哪怕要实现一些复杂的功效(比方一个小型的文本数据库),也是简单之极.
  假如上面的阐述仍然不能让你信服Unix很简单,那么,让我们来用一些具体地实际的例子来看一下,Unix是若何简单的.让我们试着做下面的这样一个假定:“假如我们在学习编程的时刻一开始是学Unix,然后转去做Windows”,那会是怎么样的一个情形?
  1)  我们在Unix下成立进程,利用fork调用.到了Windows下,我们查了MSDN,发现了一个叫CreateProcess的系统调用可以成立进程,但我们却发现这个系统调用有10个参数.而Unix下的fork却一个参数都没有.这种情形下,你能否会有一种头大的感受?因为,在Unix下,你根本看不到会有10参数这样复杂的系统调用API.
  2)  我们在Unix下操作文件权限很简单,文件权限分三组(本人,同组,别人),每组都是可读,可写,可履行.两个简单的系统调用chmod/chown就搞定.到了Windows下,假如是NTFS,假如要以程序的方法设置文件权限,呵呵,你需求先理解什么是:SID,什么是DACL,什么是SACL,什么是ACE,还有十几相关的系统API函数等着你.(参看我的《以程序操作NTFS文件权限》)你大概会认为这么复杂的安全战略是让系统更安全的底子,可以自从Windows呈现的那一天今后,在安全方面的表现就没有赛过Unix.这无疑让人感到Windows做了一件吃力不奉迎的事.
  (插一句:Unix下的用户切换是相当简易便利的.而Windows下的用户切换会招致你需求退出当前用户的前台程序.这招致了Windows下的用户几近无一例外地城市挑选在超级用户的权限下工作/上网,这美满是让自己的机械在裸奔,所以,Windows下的病毒一旦在系统中运行就为所欲为了.而Unix下,很罕用户会以root身份操作本机,因为切换用户非常便利.)
  3)  在Unix下,用户有ID,用户组有ID,进程/线程都有ID.ID很简单易懂,就像我们的身份证一样.到了Windows下,用户标识叫Token,进程标识叫Handle(其实也就是一个DWORD的范例),我看到网上很多问题都在问Windows下的Handle的概念问题.我一向在想,为什么微软不取一个简单易懂的术语?要获得那么抽象,那么让人很迷惑.固然这让Windows看起很NB,但也会因此加大了学习复杂度.(Windows的开辟学习复杂度要比Unix复杂多了,并且有太多的看似很高深的术语让人一头雾水)
  4)  让我们再来看一下用户管理和程序全部者方面的东西.在Unix下,需求你做的是配置NIS服务器和NFS服务器(以Autofs自动mount),简便,清楚.到了Windows下,与其类似的是一个叫Domain的东西(主域掌握器),首先,为了加入域,你需求重启电脑(Unix下只需求配置/etc/nsswitch.conf文件来奉告本机的用户登录源,无需重启),而对开辟者来说,Unix的这个配置对程序是完好透明的.而Windows的域用户和本地用户需求一个域名来辨别.在程序中切换用户时,Unix只需求setuid/seteuid就行了,Windows对此有三个对比复杂的API:CreateProcessAsUser, ImpersonateLoggedOnUser, LogonUser,其复杂度就不用对比了.别的,在Domain方法下,你的Document and Setting目录下的文件,会全部放到Domain服务器上去,你在别的机械上登录时,需求下载这些文件.最后,我倒不耽忧你和网友的MSN聊天记录会因为你的登录而处处都是,我耽忧的是,你在这么复杂的管理环境中写出来的代码能否能让别人安心?:-(
  5)  在Unix下,要把自己的程序加入系统的启动服务只需求在/etc/init.d中配置就行了.写下一个有启动终止功效脚本,以特别命名的方法链接到差别启动情势目录下就行了.Windows下加一个启动服务,假如你不编写程序,预计对比艰难.
  6)  在Unix下,假如要获得系统的信息.只需求到/proc目录下去cat那堆文件.全部进/线程的状况、号令行、内存/交换区利用情形、翻开的文件描写符,等等,系统的CPU,内存,交换区,内存文件IO,分区,信息,网络,系统运行状况,系统设备,等等,要有多具体就有多具体,并且美满是纯文本的,直接便可以看了.到了Windows下,要穷举系统当行进程的信息,就不是一样很简单的事,更别说要获得别的信息了.
  我很敬佩微软把操作系统搞得那么复杂,又是注册表,又是安全战略,又是OLE,又是COM…….每次翻开regedit.exe时,我根本不敢碰HKEY_CLASSES_ROOT,因为我看着里面那些不计其数个CLSID,我有点晕菜.
  自1995年以来,10来年过去了.微软推出了多种形形色色的技术.我还记得Visual Studio 6.0中还有两个叫做FoxPro和J++的东西,FoxPro来自Foxbase,还有个几年,J++仿佛就没有几年.ActiveX Control美满是一个失利的技术,而那个叫做VB的编程语言,本日看来,它的确毁了很多很有潜力的程序员.在COM呈现的时刻,不知道本日还有多少人还记得一个叫MTS的玩意?本日,不知道还有多少人记得有一个叫ODBC的东西?在这种复杂混乱的Windows世界中,能否让你疲于追赶?本日的.NET不知道又有多少技术会随着时间所沉淀?在Windows上面,我们学习了很多的失利技术或是说是过渡技术.而我们的Unix自从上纪70年代以来,就没有多大的改变,而因为Unix应运而生的C语言直到本日仍然光彩夺目.我相信这个30多年来久经磨练还那么简单的Unix.
  Unix就是这么简单,各位想在Unix下学开辟的朋友,Windows那么复杂的操作系统都过来了,你还会怕这么简单的Unix么?

本文地址: 与您的QQ/BBS好友分享!
  • 好的评价 如果您觉得此文章好,就请您
      0%(0)
  • 差的评价 如果您觉得此文章差,就请您
      0%(0)

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .