五千年(敝帚自珍)

主题:关于Linux的推广——普通用户篇 -- 万斤

共:💬381 🌺357
分页树展主题 · 全看首页 上页
/ 26
下页 末页
          • 家园 是啊,这就是linux成为阳春白雪的原因

            我就折腾过好几次。

            自己折腾出来的东西,往往就会觉得有成就感(一定程度上是欺骗自己并与人炫耀)。

            但是对于大多数人来说,易用性最好的微软的视窗尚且经常出毛病,要玩转linux确实太难。

      • 家园 你的USB wireless好像可以用RalinkRT73驱动

        兼容列表在这里:

        http://rt2x00.serialmonkey.com/wiki/index.php/Hardware

        它支持 Linksys WUSB54GR 系列USB无线网卡。你可以检查一下。

        具体安装过程可以看

        https://help.ubuntu.com/community/WifiDocs/Driver/RalinkRT73

        http://rt2x00.serialmonkey.com/wiki/index.php/Hardware

        希望有所帮助

      • 家园 有个MULTIGET.

        类似于老版FLASHGET.

        BT我用TRANSMISSION.

        EMULE我用AMULE.

        播放用MPLAYER/XINE.

    • 家园 关于Linux的推广——优势篇

      本来这个文章的标题叫做管理员篇,可是pdfwold朋友认为我把Linux下面的开发说的过于吓人了。所以我决心在这个帖子里面,着重讨论Linux的优势。

      很多朋友建议使用wine,认为我没有提到wine。我在这里做个简要的说明,我介绍的程序以稳定的生产型工具为主,而wine这方面有很多不足:第一个问题是wine的版本升级非常快,而且小号(minor)版本(比如0.95 - 0.96)之间的区别很大,经常上一个版本可以用的程序,到了新版本反而不能用了。 第二个问题是wine下运行的程序,即使是像photoshop这样相对长期被稳定支持的程序,也经常出现各种奇怪的错误。第三个问题是wine的安装相当复杂,特别是当你想把wine当作一个真正的环境来对待的时候,就不太可能在/home/user/.wine下面安装(否则home目录分区会看起来很诡异)而且多用户配置,也有一定的难度。而它带来的优势却不能抵消这些明显的问题。所以我在这里推荐虚拟机方案。还有一个问题是游戏问题,我个人目前只玩Linux下面有本地版本的游戏。比如id系列,目前我最喜欢的游戏(其实不是游戏)是flightgear,一个飞行模拟器。而其他游戏,我建议还是在windows下面玩。

      我在这里讨论的Linux的优势,不是通常宣传的那些优势,实际上很多优势我觉得是过于夸大其词了。我这里讨论的优势主要是我自己的感受,这种感受是每天能遇到,过几年以后看,有明显区别的优势。基本上,目前国内,包括在这里讨论的朋友,很多都是处于“用windows为主,但是能用Linux”,而我想谈的是指“用Linux为主,同时能用windows”这样的模式下面所带来的区别。我自己同时经历过这两种模式,之间的区别还是非常大的。

      如果你不确定自己是哪种模式,只要问问自己:今天我立刻把windows从机器上彻底删除,明天是不是会遇到很多麻烦?(我绝对不鼓励这么做!)我本人,要是把windows删除,对我就没有什么影响。我家里目前有一个小型的网络,有两台工作站一台服务器,上面不存在任何windows分区,其中一个有vmware下面的windows 2000,但是很少使用。两台笔记本,一台是我女朋友的,一台是我的,我的那台上面也是linux。我女朋友的是学校发的机器,用的是windows,这台机器目前是我们主要用来看电视的场所,偶然也会用它处理点办公什么的。不过她最近对windows比较厌恶,准备转回去用linux。

      其实我的感受,从全局来说,Linux目前基本上是超过了windows,嵌入式系统就不多说了。我本人是做科学计算的,在这个领域,基本上是Unix/Linux系统的天下。而最近几年则基本上是Linux横扫,Linux提供过去Unix下面几乎所有的服务,而且软件包丰富,升级很快。虽然Sun有OpenSolaris,但是目前还是用Linux占多数(当然还有一些用Mac),在我的周围(三维图像领域),软件几乎都是为Linux写的。我个人感觉Linux在这方面的优势主要是 1)这些程序通常运行在从上百个CPU的集群到老式的alpha工作站上。像我们现在的程序经常要处理几十G的数据。计算时间通常跨越若干个星期。Linux提供最佳的伸缩性和系统的稳定性,windows与之相比更像一个个人玩具,除了运行一个demo基本什么都干不了2)Linux下面的科学计算的库非常多,3)Linux下面系统设计比较科学,比如我去年早期就开始使用64位系统。所有程序现在几乎都是64位模式。而windows下面到现在为止都还没有普及64位系统。对于服务器方面,我也不多说,windows下面的服务器很难与之相比。

      对于个人来说,我对linux的优点最突出一点的感受就是突出的稳定性。虽然大家都说linux稳定,但是只有自己长期用过才能真正感受到这个稳定的意义。

      首先运行非常稳定。比如我在单位的机器,和家里的两台台式机一样都用的是Debian Sid版本,(Debian的不稳定版本),但是基本上一年就重启2-3次(主要是因为升级内核,或者更换硬件),到现在为止已经连续运行两三年不关机了。又比如我现在笔记本上面的系统,是从02年一台台式机上拷贝过来的。一直用到现在。这在windows下面也是几乎不可能的。

      其次是操作的稳定,虽然现在linux下面gui有很大的发展,操作变化很大,但是命令行界面一直是非常稳定的。而且基本开发方法,开发工具也是非常稳定的。很多朋友在这里提到很多IDE,而我个人倾向于使用emacs/vim套装(Make/gdb/gcc ...),其中一个原因就是这个方法的稳定性,变化很小。在emacs下我用惯了subversion管理版本,最近转成git,一看操作界面,几乎一样。5分钟就搞定。我相信过20年,只要计算机基本模型还是这样,我估计这个方式也不会有太多改变。

      还有一个稳定就是机器性能稳定性,Linux对不同配置的系统,都能恰如其分地运行,比如我的服务器,是althon xp 2500+,上面运行各种最新版本的服务器没有任何问题。我的笔记本是05年买的,是一个赛扬1.2G的thinkpad,在linux下面运行一直非常稳定,以前什么样,现在还是什么样,(我甚至最近装上了compiz而速度没有任何区别,你能想象在这样的机器上装vista吗?)。而我女朋友的笔记本,core duo 1.8G的机器,XP经常越用越慢,C盘越来越满。经常要查毒,查spyware....。经常一发作硬盘狂响,什么事情都干不了,所以我女朋友现在更倾向于使用linux干活(她本人并不太懂计算机)。

      第四就是安心,windows下面想想即便是Gates都要抱怨流氓软件问题。这个日子不好过啊!而目前Linux相对来说,安全要严格很多。对于一般用户而言把端口封死,定期升级安全补丁即可。

      第二个突出的感受就是省时省事,虽然都说Linux是免费的,但是实际上对一般用户而言,这点可以忽略不计。我突出感受其真正省钱的地方是在后期维护方面节约大量的时间。特别是对于计算机管理方面,方便性是windows没有办法比的。

      我最觉得方便之处就是,Linux下面通常管理一群计算机和管理一台计算机是差不多的,我现在是两台台式机,一台服务器,但是只有一台机器上有两台显示器+鼠标键盘。不管是笔记本,还是台式机,甚至我女朋友的windows机器,只要通过ssh+xforwarding进入任意一台主机,就可以调动所有的相关计算机的全部功能,甚至同时包括学校的服务器和公司的服务器。Windows下面类似功能相比而言要差很多。虽然remote desktop(Linux下面也有类似的东西)。我现在经常是开两三个窗口,每个窗口管理一台计算机。

      第二个方便之处是软件包管理,和现代的linux包管理系统,比如Debian的apt/dpkg系统以及Gentoo的Portage系统相比,windows 的软件包管理简直就是幼儿系统。我自己是把/etc目录,以及dpkg数据库,还有kernel配置文件都用subversion管理起来。我所有的计算机的配置,都处于这个统一配置的管理之下。万一我需要买一台新的计算机,几个简单的命令就能把我当前所有的系统配置拷贝过去(不用cp方法),非常方便。

      第三个是文件系统清晰:/etc下面保存几乎所有的设计,/var下面是具体程序的数据,/home下面是所有用户文档。有一个直接的目录树来管理。而且远程的计算机硬盘可以直接用nfs来挂接到本地目录。多台计算机的数据可以合并成一个总体来进行安排。同时采用文件系统采用LVM+XFS,可以动态增长分区,所以我的硬盘分区一般就两个1)一个2G的开头分区,保存一个基本的Linux系统用来处理特殊情况,2)一个几百G的LVM分区。具体大小再按照各目录使用的情况来动态分配。非常简单。

      第四是不同系统之间同步,备份非常方便,rsync,tar,subversion等等这些工具能够让我各种计算机的数据之间有一个良好的协调性。而且有大量的工具可以进行这方面的维护。这对系统的维护至关重要,而Windows下面类似功能不够强大。

      还有一点就是Linux的核心设计哲学通常都非常简单,比如它的开机过程,一步接一步,我01年花了2天看懂,到现在还记得,非常容易理解。要想做个修改,非常容易。而到现在为止又有多少人知道win开机都做了些什么呢?我现在怎么样才能把xp放到光盘上或者U盘上去运行呢?windows下面由于封闭,做任何简单的任务,都需要大量的专业工具来进行调整,而这些工具之间并没有太多的协作性。远远增加了系统维护的难度。

      第三个突出感受是自主性很强,windows下面,大部分人要做的就是跟着windows从里到外不停地升级。基本上,不管是windows做开发,还是只是使用,win下面都有一些非常清楚的,体现公司意志的主线,而你要做的就是跟着这个主线走。我记得早期的框架叫做OLE,后来叫做dcom,现在又改叫做.net。虽然Linux下面也经历了Corba,dbus等类似的升级,或者GTK 1.0 变成GTK 2.0,但是Linux对此并不是完全强迫性质的。这样,不管是用户,还是开发人员,可以按照自己的思路,独立写库,独立进行开发,受外界影响小。相对来说windows就要严格地多。

      这方面,倒是可以理解,公司的产品,关心的是标准性,交互性。但是带来的一个问题是当比如微软公司的大框架变了,下面所有的软件就要跟着多多少少有变化,很不幸地是,这个变化还相当地剧烈。Linux相对要稳定的多,基本设计变化小。加上源程序公开,库的历史记录清楚,所以很容易维护已经开发的软件的独立性和完整性。

      先打到这里,欢迎批评指正。

      • 家园 这个不能一概而论

        比如qq、比如炒股行情软件,比如windows下的游戏……

        虚拟机不能解决所有的问题的

        linux做服务器优势大大的,但我更推荐freebsd,至于娱乐和许多其他应用,linux可真的比不过windows

      • 家园 Linux 现在最大的问题是动不动死机

        有人要说了,一看你就不懂 Linux。Linux 最大的优势不就是稳定吗?

        说 Linux 稳定是没错。但那是指在不运行任何 图形界面 的情况下。但现在的一般用户又有谁会不用 图形界面 呢?

        用了图形界面就要用到显卡。而现在现在的几个 Linux 的 Distro 对高级显卡的支持极烂。例如 nVidia 的那个 FX 以上 动不动就死机的毛病,都已经出了 n 个补丁了,还是没完没了。 ATI 到还好一点。但那个补丁打上去,您就基本不用干别的了,贼慢。对 Linux 最友好的,或者说 Linux 支持得最好的,倒反而是 Intel 的几代显卡。

        说起来这些问题也不难解决。但就是一直不见解决。归根到底,给 Linux 编程的那帮人主要还是把 Linux 定位为不需要 GUI,整天只需要别人 Telnet 的机器。什么机器是不需要 GUI 的呢? 也就是服务器罢了。

        抱着这种心态,Linux 最终也就是个服务器操作系统罢了。

        • 家园 这个批评很到位,写driver的人太少,几个大厂家

          对linux也重视不够,这个问题很难一下解决,除非几个大厂家专门搞个队伍来写driver.

        • 家园 个人感觉SUSE的显卡支持不错。

          而且界面很漂亮。似乎Solaris也可以的,但是应用软件不太熟悉。其他的似乎比较挑显卡,我的稀奇古怪的电脑和以上两个可以和平共处,另外Debian也可以用,不过显卡驱动似乎不太优秀,分辨率不可以调的很高。3D的支持,似乎都不太好。

        • 家园 Intel的驱动是公开源程序的,AMD现在也是了

          这个和硬件厂商的策略有关。和给Linux编程的人重不重视没有太多关系。不过既然Intel/AMD这么做了,我猜想nvidia也要跟上。

          我一直在用Nvidia的驱动程序,从FX 5600用到现在(7600GT),基本上没有遇到过死机问题。

          顺便,如果你遇到了X的死机问题,我建议你可以通过另外一台计算机ssh登录进去检查具体的原因。根据我的经验,一个通常的问题是采用了内核framebuffer的模块,两者有时候会有冲突。

          • 家园 这个就是Linux的问题了

            你这样的专业人员当然不介意download+compile,因为对你来说,你可以透过C语言代码看到系统工作过程,因此给你源代码可能比二进制安装包还爽。问题是让用户去理解一个.c和video card device driver之间的联系,那可不是一般的困难。

            我是靠linux吃饭的,但是办公、写程序基本不用linux,可能是从DOS一路跟着MS混过来,对MS的东西比较熟悉。我一直觉得linux是个专家系统,意思就是,如果你对系统的莫一方面很了解,那么使用起来是非常方便的,反之就要学习很多东西才能勉强会用。

            反之Windows上你要玩很多花样是很困难的,但是一个一般的用户也可以很快地完成一些工作。可以这么说,这是两个个性不同的系统,每个系统的优点和缺点都是与生俱来的,伴生的。

            瞎说了一通,不对之处请指正。

      • 家园 讲讲我的意见

        我现在的工作主要是做企业内部的Windows管理员,同时要考虑到我们的Linux环境。我们内部的Linux环境在server side大于Windows,在client side小于Windows。上一次跟坛子里另外一位同学谈论这个话题,有些火药味,后来还被点名批评了,所以这次格外小心些,并请大家监督。下面我就楼主的各个论点发表下我的观点 -

        “科学计算领域确实一直是Unix的天下,现在是Linux的天下”

        - 这个领域本来就跟Windows相关的不多。但这个领域是相对狭小的,大大小小的各种工商企业的内部系统才是Windows的主要战场。

        “Linux提供最佳的伸缩性和系统的稳定性”

        - 我同意,别的系统没法自由地customize,

        “windows与之相比更像一个个人玩具,除了运行一个demo基本什么都干不了”

        - 好像说得有些主观了?

        “比如我去年早期就开始使用64位系统。所有程序现在几乎都是64位模式。而windows下面到现在为止都还没有普及64位系统。”

        - Windows下64位一直没有占主流不是个技术问题,而是64位并没有证明其与32位相比,有多大的投资回报优势。Windows的服务器和客户版本早就有64位的了,但系统并没有快到哪里去,大量的第三方软件也都是32位的,没有兴趣写64位版本。另外32位程序可以在64位的系统下运行,这样人们就更没兴趣往64位上搬了。64位比32位强我同意,但技术上的优势需要在投资回报上体现出来,才有其说服力。Linux有没有64位对32位的性能比较数据?

        “首先运行非常稳定。比如我在单位的机器,和家里的两台台式机一样都用的是Debian Sid版本,(Debian的不稳定版本),但是基本上一年就重启2-3次(主要是因为升级内核,或者更换硬件),到现在为止已经连续运行两三年不关机了。又比如我现在笔记本上面的系统,是从02年一台台式机上拷贝过来的。一直用到现在。这在windows下面也是几乎不可能的。”

        - 我同意你对Linux的看法,我认为那是可能的;但你没有论证为什么这在Windows下面是不可能的。

        “第四就是安心,windows下面想想即便是Gates都要抱怨流氓软件问题。这个日子不好过啊!而目前Linux相对来说,安全要严格很多。对于一般用户而言把端口封死,定期升级安全补丁即可。”

        - Windows下服务器和客户端的是完全不同的两套东西,不能像Linux那样混在一起评论。服务器端往往前面有>=1道防火墙和DMZ,Server自己不需要担心太多的安全问题,一个简单的防火墙往往就够了。Linux有iptable,Windows有Windows Firewall和IP过滤。客户系统的安全很大程度上取决于用户,我承认Linux在安全上有先天优势,但很多Windows面对的问题,Linux还没普及到需要考虑的地步。想像一下,一个不懂电脑的用户用上了Linux,没两天就被装上木马了(如果Linux普及到Windows的程度,针对Linux的木马和其它恶意软件肯定会大量出现的。无利不往嘛。),我去看为啥,原来人家从啥啥网站下载了一个精彩小电影播放器,系统当然弹出窗口说这很危险,但他还是运行了,一旦有binary code在本机上运行,Linux还是Windows不都一个样?我说我不能给你sudo的权力了,你啥都不懂。再过两天一看,人家改Windows了,说Linux啥软件都装不上,没法用。这就是Windows客户系统所面对的安全困境。Linux是否能提供一个好的解决方案?如何在安全性和傻瓜性上找到平衡?

        “我最觉得方便之处就是,Linux下面通常管理一群计算机和管理一台计算机是差不多的,我现在是两台台式机,一台服务器,但是只有一台机器上有两台显示器 +鼠标键盘。不管是笔记本,还是台式机,甚至我女朋友的windows机器,只要通过ssh+xforwarding进入任意一台主机,就可以调动所有的相关计算机的全部功能,甚至同时包括学校的服务器和公司的服务器。Windows下面类似功能相比而言要差很多。虽然remote desktop(Linux下面也有类似的东西)。我现在经常是开两三个窗口,每个窗口管理一台计算机。”

        - Windows下面一样有大量的remote management tool,GUI的和命令行的都有。实际上,大规模客户系统的集中管理在我看来是Windows的强项之一,因为这是大多数企业内部系统最需要的功能。

        “ windows 的软件包管理简直就是幼儿系统。” - 说具体些好吗?这样的话太感情化了。

        “第三个是文件系统清晰:.....”- 我同意Linux的文件系统不错,但Windows的也不错啊,不同的地方主要是在"/"和driver letter这上面,还有Linux把所有系统资源都映射到文件系统上这一点。

        “第四是不同系统之间同步,备份非常方便,rsync,tar,subversion等等这些工具能够让我各种计算机的数据之间有一个良好的协调性。而且有大量的工具可以进行这方面的维护。这对系统的维护至关重要,而Windows下面类似功能不够强大。”

        - 类似于rsync的功能Windows下面一样有。关于tar和subversion我没太明白你具体指的是什么。

        “还有一点就是Linux的核心设计哲学通常都非常简单,比如它的开机过程,一步接一步,我01年花了2天看懂,到现在还记得,非常容易理解。要想做个修改,非常容易。而到现在为止又有多少人知道win开机都做了些什么呢?我现在怎么样才能把xp放到光盘上或者U盘上去运行呢?windows下面由于封闭,做任何简单的任务,都需要大量的专业工具来进行调整,而这些工具之间并没有太多的协作性。远远增加了系统维护的难度。”

        - Windows开机过程没什么神秘的,一样是bios-->boot sector-->mbr-->active partition-->boot loader-->kernel-->HAL-->kernel mode drivers-->user mode processes-->display logon screen. Linux高手来看看有啥地方特别不一样的?

        你对Windows的意见过于模糊,我都不知道该怎么评论。

        “第三个突出感受是自主性很强,windows下面,大部分人要做的就是跟着windows从里到外不停地升级。基本上,不管是windows做开发,还是只是使用,win下面都有一些非常清楚的,体现公司意志的主线,而你要做的就是跟着这个主线走。我记得早期的框架叫做OLE,后来叫做dcom,现在又改叫做.net。虽然Linux下面也经历了Corba,dbus等类似的升级,或者GTK 1.0 变成GTK 2.0,但是Linux对此并不是完全强迫性质的。这样,不管是用户,还是开发人员,可以按照自己的思路,独立写库,独立进行开发,受外界影响小。相对来说windows就要严格地多。”

        - 我不再是程序员了,知识老化,不好说太多。但.net也不是强制性的,你一样可以用任何编程语言生成executable在最新的Windows系统下运行。Windows平台高度统一是优点也是缺点,同样的,Linux distro的多样性和自由性也是同时优点和缺点。

        - 总的来说,我觉得你对Linux的东西说得清楚,但在涉及到Windows上的东西的时候往往语焉不详,没有举出让人信服的例子。

        • 家园 非常欢迎你的意见,不用担心火药问题:)

          没有问题,我非常赞同你说的“总的来说,我觉得你对Linux的东西说得清楚,但在涉及到Windows上的东西的时候往往语焉不详,没有举出让人信服的例子。 ”,主要是我2002年以后就切换到Linux上去了,Windows 2000以后的系统基本没有正经用过(而且我个人认为windows 2000是MS系列里面最好的一个系统,很可惜快要不支持了)。所以可能最近windows发展的很快,我没有跟上脚步,听听像您这样的专业人士的意见,我非常高兴。

          1。

          “windows与之相比更像一个个人玩具,除了运行一个demo基本什么都干不了”

          - 好像说得有些主观了?

          在科学计算领域,基本上是这样,我很少听说哪个学校专门去搞一个大规模的windows集群,或者专门培养人去做相关的工作。一个最简单的例子,我上次要跑一个仿真的特大型程序(那个程序可以直接模拟一个核电站,或者卫星之类的设计)。那个程序,我花了半天时间就在Linux装上了,因为它的安装程序本来就是cshell的。但是我有个朋友的同事试图在windows下面安装,搞了1个多月还没有下文。

          我听说现在有很多大型系统都在用windows,比如伦敦证券交易所就在用。不过这个例子太特殊了,我猜想 LSE主要看中的是微软提供的服务。这个就完全是另外一个问题了。

          2。

          “Windows下64位一直没有占主流不是个技术问题,而是64位并没有证明其与32位相比,有多大的投资回报优势。”

          我自己的程序在64位方式下要比32位快大概10%。10%对我们意味着某些计算可以至少节约一天的时间。对于我的领域来说,64位有几个好处,第个是64位的整数所表达的数的范围在很多时候可以取代单精浮点数。第二是寄存器数量比以前多,这样可以把更多的变量放到寄存器内部,核心循环可以减少交换和寻址操作。

          顺便,我认为即便是64位系统对于一般的信息处理没有太大的优势,但是既然现代的CPU都已经加上了这个扩展,Windows平台下面,以及第三方程序就应该利用它。而Linux这方面优点就非常突出。1-2年时间大部分的软件全部都成为64位的了(也和它以前就支持64位系统有关系)。而Windows平台方面反应太迟钝了。

          3。

          - 我同意你对Linux的看法,我认为那是可能的;但你没有论证为什么这在Windows下面是不可能的。

          我认为windows下面也是有可能的,问题在于,现实生活中,几年长期不重启不关机,不重装系统是Linux用户的常态,而经常重启,关机重装系统是windows用户的常态。windows至少有50%以上的补丁,是需要你重新启动计算机的。而windows 几年运行,没有一个service pack供你下载?很多新的程序要求你运行service pack。当然如果你把windows机器独立出来就干一些简单的事情,不理会外界任何改动,那没有问题。但是像我学校的机器,我在上面写程序,玩游戏,升级显卡驱动等等等等一堆事情。windows 要做这些事情,我想还是要重启吧:)

          4。

          “这就是Windows客户系统所面对的安全困境。Linux是否能提供一个好的解决方案?如何在安全性和傻瓜性上找到平衡?”

          在第一篇我就写的非常清楚,我一贯的思路是,我不鼓励甚至不支持什么都不懂,又什么程序都想运行的用户使用Linux。我绝对相信,如果一个什么都不懂的客户,一定要执意运行某种恶意软件,这个谁也拦不住。就像有一个人一定要把强盗骗子往自己家里引,又想拥有所有的权力,这个不是技术问题,而是基本教育问题。

          第二,对于用户而言,如果你赋予它读,写,运行程序的权力,当然这个权力对他来说是绝对必须的,那么你就不能阻止它运行一个恶意程序进行读写操作,运行程序。但是,对于系统管理来说,能做到的是1)系统其他用户不受影响,2)甚至这个用户本身的关键数据不受影响 3)恢复速度足够快。

          我本人并不是管理员,但是我可以提供一些基本解决思路是什么。这里可以简单地写写。这方面,也是Linux的优势。

          第一就是要做好足够的备份工作。这一点Linux下面有很多强大的工具,可以支持非常复杂的备份策略,不多说。而且像Debian这样的系统可以在远程进行瞬间克隆。第二就是可以采用jail方式,或者虚拟机方式运行浏览器。和乱七八糟的小东西。

          其实从我的角度,即便是一个工作站被感染了也不用担心太多问题。我这里提出一个方法,起到抛砖引玉的作用(我猜那些杀毒软件也是采用类似的机制)。

          平时的预防可以用FAM程序来预防,FAM 本身可以监视任何对于系统文件的改动,一般的木马等程序,总是要通过某种系统程序漏洞获得root权限,然后抹去日志,改动相应的系统文件把自己隐藏起来,然后运行自己,并且在远端启动一个shell。但是管理员可以采用FAM可以随时监视当前系统文件的变化,把相关记录输出到服务器上去,并且用脚本立刻采取相关反应:比如立刻杀死所有相关用户进程,杀死所有shell的运行,进入init 1单用户方式等等。书写这样的脚本,并不是非常困难。这样能挡住大部分简单的病毒的感染。

          再者,如果我发现我的机器被感染了,首先检查内核以及相关模组,/lib /bin /sbin 这三个目录下面的每一个程序是否被改动(直接强行拷一份新的也行)。然后用MD5 HASH检查每个文件的整合性。通常只要/etc, /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin 几个地方的程序即可。就算是获得root下面的权力,这个文件,也并不难写。最后检查用户下面的所有可执行文件。如果真的很懒,直接拷贝就可以了:)

          如果实在是担心系统的安全,还可以采用新的内核认证机制(这个我没有用过,一般病毒到不了这个水平)。在这个机制下,即便是root的权限好像也是有限的。

          总之,在Linux下面,总有很多很多方法。而且Linux的开机自动化非常清晰,像流氓软件这种程序,几乎不可能存在。稍有经验的管理员,删除一个流氓软件实在是太容易了:)

          5.

          “- Windows下面一样有大量的remote management tool,GUI的和命令行的都有。实际上,大规模客户系统的集中管理在我看来是Windows的强项之一,因为这是大多数企业内部系统最需要的功能。”

          Linux也可以很轻松地把客户管理集中到一台或者几台机器上,这个功能很早就有了。而且这个管理功能的整合性我不会认为比windows差。像我现在家里,公司的网络(学校有Novell),就是用OpenLDAP集中进行管理。而且这些管理程序,可以按照树型结构用subversion进行版本管理,机器和机器软件包配置的异同。具体什么配置不一样,什么地方一样。用diff就出来了。计算机管理,大部分情况我是用vim和emacs。

          5.

          “ windows 的软件包管理简直就是幼儿系统。” - 说具体些好吗?这样的话太感情化了。

          windows到目前为止,没有一个统一的软件包安装,升级系统。和apt/dpkg这样的完全不是一个量级的。这个不多说,给一个例子。比如我现在要让远端计算机安装和我目前计算机上一样的软件,只要远端计算机下载一个最最基本的安装包,然后同步source.list,用dpkg把我这里安装的文件dump出来直接在那里用apt就可以全部复制。这个软件包列表本身,也是可以采用subversion,或者其他程序进行管理。如果我要知道两台机器哪些软件,哪些配置不一样,一个diff就出来了。(当然我不包括 /usr/local这个目录)

          在这种管理方式下,比如要配置一台新的/已知的客户机,不用从头安装,只要拷贝一套最小化的Debian(100M左右),然后直接从subversion的树下下载所有相关的配置文件,和相关软件包。(这里可以专门为此机器起一个分支)。远程安装就可以了。windows 这方面,还有很长的路要走。

          这个也顺便回答你,"类似于rsync的功能Windows下面一样有。关于tar和subversion我没太明白你具体指的是什么。"具体是什么含义。

          6.

          “Windows开机过程没什么神秘的,”

          很神秘,关键是很难修改。Linux下面定制开机什么程序运行,什么程序不运行,什么程序在本地硬盘运行,哪些在远程系统上下载运行,如何自己定义变量。都很方便。比如,开机的时候,根据分配的IP地址不同定义不同的防火墙设置,这一点不知道windows下面怎么运作的。当然windows可以叫嚣说有工具可以实现这一点。那我可以把这个任务稍微改改:根据GPS给出的地理数据,自动应用相关的防火墙设置。这个对linux来说,实现这一步需要花费的时间很少。而windows就很难说了。

          这个我绝对不是炫耀或者攀比,只是探讨怎么应用的可能性。非常感谢你的评论,而且你对我windows下面知识不足看得可真准啊!:)


          本帖一共被 1 帖 引用 (帖内工具实现)
          • 家园 我来试着回答下...

            谢谢你的回复,这样的讨论有意思。

            Windows在服务器领域基本上是从2003才开始有竞争力的。2000也不错,但更像是个过渡产品,2003则不但稳固了中小企业的市场,而且开始向大型的应用进军。

            “在科学计算领域,基本上是这样,我很少听说哪个学校专门去搞一个大规模的windows集群,或者专门培养人去做相关的工作。一个最简单的例子,我上次要跑一个仿真的特大型程序(那个程序可以直接模拟一个核电站,或者卫星之类的设计)。那个程序,我花了半天时间就在Linux装上了,因为它的安装程序本来就是cshell的。但是我有个朋友的同事试图在windows下面安装,搞了1个多月还没有下文。”

            - 这个领域Windows确实不是好的选择,我基本同意。

            “我听说现在有很多大型系统都在用windows,比如伦敦证券交易所就在用。不过这个例子太特殊了,我猜想 LSE主要看中的是微软提供的服务。这个就完全是另外一个问题了。”

            - Windows 2003虽然有cluster的功能,但的确不是为大型的服务器群的环境设计的,但从cost和服务的角度来讲,确实有些地方开始使用2003来代替原有的main frame或者unix系统。真正的转折点我看在于2008,2008的server core edition把能去掉的瓶瓶罐罐都去掉了,而且有了自己的hyper visor。再一两年应该就能看出点眉目了。

            “我自己的程序在64位方式下要比32位快大概10%。10%对我们意味着某些计算可以至少节约一天的时间。对于我的领域来说,64位有几个好处,第个是 64位的整数所表达的数的范围在很多时候可以取代单精浮点数。第二是寄存器数量比以前多,这样可以把更多的变量放到寄存器内部,核心循环可以减少交换和寻址操作。

            顺便,我认为即便是64位系统对于一般的信息处理没有太大的优势,但是既然现代的CPU都已经加上了这个扩展,Windows平台下面,以及第三方程序就应该利用它。而Linux这方面优点就非常突出。1-2年时间大部分的软件全部都成为64位的了(也和它以前就支持64位系统有关系)。而Windows 平台方面反应太迟钝了。

            - 同意,但Windows世界面对的问题是32上投入的太多,而且floating operation intensive的程序的比重并不大,所以大家没动力。微软自己从2000开始就有64位操作系统了,2003的64位更是和32位在patch和tool各方面都是同步的,但用的还是不多。2008的64位系统是微软在主推的,他们明确建议用户优先选用64位。所以,我的看法是64位是大家都想做到的,Linux由于商业应用少,包袱少,而且很多程序的源代码公开,只要重新compile一下就好了,但Windows方面的情况很不一样,不是微软不做或者做不出来,而是包袱太多,走不动。

            “我认为windows下面也是有可能的,问题在于,现实生活中,几年长期不重启不关机,不重装系统是Linux用户的常态,而经常重启,关机重装系统是 windows用户的常态。windows至少有50%以上的补丁,是需要你重新启动计算机的。而windows 几年运行,没有一个service pack供你下载?很多新的程序要求你运行service pack。当然如果你把windows机器独立出来就干一些简单的事情,不理会外界任何改动,那没有问题。但是像我学校的机器,我在上面写程序,玩游戏,升级显卡驱动等等等等一堆事情。windows 要做这些事情,我想还是要重启吧:”

            - 我不清楚Debian系统去年一年的patch的数量,没法评论。我管理的Windows servers我确实是基本上每个月有没有patch都要重启一遍,成习惯了,而且因为本身在设计的时候就没有single point of failure,重启并不影响用户的使用。他们基本上都不知道服务器啥时候重启了。对于客户端,说关机重装系统是windows用户的常态,我看还是因人而异,别忘了Windows的用户大多数是电脑盲的。我自己的laptop倒是很久没有重启或者重装过了。

            “第一就是要做好足够的备份工作。这一点Linux下面有很多强大的工具,可以支持非常复杂的备份策略,不多说。而且像Debian这样的系统可以在远程进行瞬间克隆。第二就是可以采用jail方式,或者虚拟机方式运行浏览器。和乱七八糟的小东西。”

            - Windows下一样可以。

            “其实从我的角度,即便是一个工作站被感染了也不用担心太多问题。我这里提出一个方法,起到抛砖引玉的作用(我猜那些杀毒软件也是采用类似的机制)...”

            - 木马的目的在于获利。只要它能运行上10秒钟,扫描用户的邮件,通讯录,文件(特别是open format的文件:)),找到有价值的信息,再传送到外面去,目的就达到了。不需要改动系统文件,也不需要常驻。Windows下的病毒和流氓软件现在绝大多数都是这种类型的,病毒制作者本人也不会期望木马能长期存活。像CIH那样损人不利己的病毒已经很少有人搞了。

            “Linux也可以很轻松地把客户管理集中到一台或者几台机器上,这个功能很早就有了。而且这个管理功能的整合性我不会认为比windows差。像我现在家里,公司的网络(学校有Novell),就是用OpenLDAP集中进行管理。而且这些管理程序,可以按照树型结构用subversion进行版本管理,机器和机器软件包配置的异同。具体什么配置不一样,什么地方一样。用diff就出来了。计算机管理,大部分情况我是用vim和emacs。”

            我不清楚Linux下如何达到以下的目的:

            - 我想强制在每台客户机上安装某一固定版本的软件,如果被用户移除则自动重装,Linux下怎么确保?

            - 我想保证有root权限的用户也不能把管理员用来集中管理账户删除,并更改防火墙来拒绝我从远程的控制。

            - 我想拒绝任何用户运行某一版本的某程序,不管是在本地硬盘上,网络上还是USB drive上。怎么办?

            - 我想强制同一间教室的电脑都使用同样的墙纸,不同的教室的墙纸不同。怎么办?

            - 我想把公司所有机器的硬件型号,操作系统,安装的软件等等信息全部收录到一个数据库中,方便查询,并且这些信息要随时动态更新。如何确保?

            - 希望你能说明一下Linux如何对付这些问题。这些都是规模大起来以后常见的问题。

            “windows到目前为止,没有一个统一的软件包安装,升级系统。和apt/dpkg这样的完全不是一个量级的。这个不多说,给一个例子。比如我现在要让远端计算机安装和我目前计算机上一样的软件,只要远端计算机下载一个最最基本的安装包,然后同步source.list,用dpkg把我这里安装的文件 dump出来直接在那里用apt就可以全部复制。这个软件包列表本身,也是可以采用subversion,或者其他程序进行管理。如果我要知道两台机器哪些软件,哪些配置不一样,一个diff就出来了。(当然我不包括 /usr/local这个目录)

            - 早就有了,叫MSI。这东西的历史很可能比apt/rpm还要长。

            “在这种管理方式下,比如要配置一台新的/已知的客户机,不用从头安装,只要拷贝一套最小化的Debian(100M左右),然后直接从 subversion的树下下载所有相关的配置文件,和相关软件包。(这里可以专门为此机器起一个分支)。远程安装就可以了。windows 这方面,还有很长的路要走。”

            - 你应该先看看active directory的功能再下结论,你说的这些功能在AD里面都能实现,而且这还只是Windows自带的,要是算上第三方的工具,那更是只有想不到,没有做不到(买不到?)Windows下超过几百台规模的系统基本上都会用imaging了,一台客户机也就是10分钟,而且甚至不需要有人在机器面前操作。

            这个也顺便回答你,"类似于rsync的功能Windows下面一样有。关于tar和subversion我没太明白你具体指的是什么。"具体是什么含义。

            - DFS-R是Windows自带的和rsync功能相似的工具。

            6.

            “很神秘,关键是很难修改。Linux下面定制开机什么程序运行,什么程序不运行,什么程序在本地硬盘运行,哪些在远程系统上下载运行,如何自己定义变量。都很方便。比如,开机的时候,根据分配的IP地址不同定义不同的防火墙设置,这一点不知道windows下面怎么运作的。当然windows可以叫嚣说有工具可以实现这一点。那我可以把这个任务稍微改改:根据GPS给出的地理数据,自动应用相关的防火墙设置。这个对linux来说,实现这一步需要花费的时间很少。而windows就很难说了。”

            - Windows下的开机过程有全套的documentation,没什么神秘的。还是举个具体的例子才好比较。自动登录并运行程序等都是基本功能。根据ip不同更改防火墙设置用site policy就好了。根据GPS来更改firewall设置的问题是两步,第一步是获取GPS数据并分析,跟操作系统本身无关;第二部是根据第一步的输出来修改防火墙设置,在windows下也就是一个vbscript的事。

            thanks!

            • 家园 继续回答你的问题。

              “早就有了,叫MSI。这东西的历史很可能比apt/rpm还要长。”

              --------

              MSI我看了一眼,严格来说它对应的不是apt,而是dpkg的部分功能(这个历史就悠久了:),因为它既不管理软件包之间的依赖性问题,也几乎不管理包的数据源头的问题。所以apt的功能它几乎没有。举个例子:只需要apt-get update; apt-get upgrade;一个命令,就可以把整个Debian系的系统(包括里面所有的应用程序比如openoffice 统统升级)。而比较我在windows 2000下面如果新装一次系统,刨开那些非官方的包不谈,除了service pack 4(好像是这个版本),以及几十个乱七八糟的升级,比如directx和windows media。至少要被建议重新启动三次。

              Debian的dpkg/apt(包括以前的dselect)系统是可以整体对系统升级的,比如Debian 2.0升级到3。0,我可以一步一步地升级系统。有些部分我可以升级(比如用户界面),有些我可以暂时不升级(比如某个服务器程序)。而windows据我所知就不能从windows 2000采用这样的方式升级到windows xp。

              还有就是active directory的功能问题,首先非常感谢你让我知道active directory这方面强大的功能。我以后如果遇到类似情况就知道如何处理了。其次我要指出,我给出的这个例子在Linux下面思路非常简单,只需要dpkg/apt等基本工具。根本不需要任何服务器端程序的参与,也不要求两台机器在一个域内。基本思路是,dpkg 输出一个本地计算机上所有文件的列表,然后把这个文本列表通过各种方式,比如电子邮件,送给另外一台机器上。运行apt直接读入这个列表,apt就自动下载所有的包装上。如果你只是想确保每台机器只装几个你确定的文件,你自己写这个文件列表就可以了。如果你想AD那样集中把程序在一个地方,甚至可以自己起一个软件仓库,让apt直接定向这个仓库就可以了,这样每台机器都可以自动动态升级。这些都是一些特别基本的功能。

              比如知道我当前的机器装的软件包(我顺手写的,可能不很准确,用的时候别忘了先测试一下!!!):

              dpkg --get-selections > package.txt

              把这个包拷贝到远程计算机,比如叫做 computer2

              scp package.txt computer2:/home/user/

              设置

              dpkg --set-selections < package.txt

              克隆:

              apt-get dselect-upgrade

              比如你上次提出的,让一堆计算机确保安装某个程序,最简单的方法是,把这些机器的名字/IP放在一个文本文件里面比如叫做classroom1.txt,(用DNS也行,好像BIND有这个选项)。一个计算机一行:

              cat classroom1.txt | sed 's,.*,ssh admin@& sudo apt-get --quite --reinstall install package,' | sh

              我这些都是最简单的方法,如果你想严肃一点,或者希望有更好的拓展性的话,你可以用点第三方软件,比如clusterssh什么的:)

              最后,win开机过程我就不多说了:)

              • 家园 我的观点是,

                关于软件deployment的事情,Windows下的商业产品很多,选择也非常多,首先AD自己就能做不少事情了,然后有SMS这样的东西来帮忙,第三方的产品更能提供很多方便的功能,再加上以Citrix/Softgrid为代表的application virtualization的东西,不但有了非常大的灵活性,而且有非常好的控制。我明白你的观点是在Linux下面你一样能通过写脚本来达到同样的目的,我相信是可以的,我自己也做过一些,但一旦被Windows上的这些东西宠坏了,要自己再写东西,首先是重复劳动,而且个人的精力有限,上面我说的所有的东西我自己也都能写出程序来,但那得多久?不过我相信如果Linux能推广开的话,类似于Windows下的很多的第三方工具很快就也会被开发出来的。

分页树展主题 · 全看首页 上页
/ 26
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河