主题:关于Linux的推广——普通用户篇 -- 万斤
没有问题,我非常赞同你说的“总的来说,我觉得你对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 帖 引用 (帖内工具实现)
- 相关回复 上下关系8
压缩 2 层
🙂Intel的驱动是公开源程序的,AMD现在也是了 万斤 字376 2008-03-29 13:00:53
🙂这个就是Linux的问题了 裸飞 字646 2009-04-01 07:19:57
🙂讲讲我的意见 6 bulaohu 字5331 2008-03-27 00:48:13
🙂非常欢迎你的意见,不用担心火药问题:)
🙂我来试着回答下... 4 bulaohu 字6753 2008-03-27 08:11:13
🙂继续回答你的问题。 4 万斤 字2262 2008-03-28 08:20:54
🙂我的观点是, 2 bulaohu 字595 2008-03-28 08:35:01
🙂我可以给出大概的时间 2 万斤 字473 2008-03-28 09:00:58