<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Linux與Unix二大操作系統(tǒng)編程的安全

          Linux與Unix二大操作系統(tǒng)編程的安全

          作者: 時(shí)間:2007-05-08 來(lái)源:網(wǎng)絡(luò) 收藏
          在考慮操作系統(tǒng)的繼承安全性的時(shí)候,有一個(gè)常常被忽略了的問(wèn)題(這到符合微軟的口味):如果你為Windows平臺(tái)編程,那么你的軟件就只能夠在有限的操作系統(tǒng)、版本和補(bǔ)丁層上運(yùn)行。而UNIX和Linux則相反,它們包括很多開(kāi)放源代碼、商業(yè),以及政府開(kāi)發(fā)的版本,而且應(yīng)用程序常常跨很多不同平臺(tái)自由發(fā)布,而這些平臺(tái)都有相當(dāng)不同的安全特性。

            由于有些讀者只在Windows上工作,所以這里要介紹一下*nix。UNIX和Linux的劃分在于其內(nèi)核以及用戶(hù)空間上。大多數(shù)程序都可以在用戶(hù)空間里的內(nèi)核之上運(yùn)行。剛剛接觸Linux的程序員,尤其是有經(jīng)驗(yàn)的UNIX開(kāi)發(fā)人員,有時(shí)候無(wú)法意識(shí)Linux并不只是是免費(fèi)版本的UNIX;事實(shí)上,兩者的確存在一些很大的不同之處。從安全的角度講,大多數(shù)版本Linux都非常相似,因?yàn)樗鼈兌蓟谙嗤膬?nèi)核和C庫(kù)。一個(gè)顯著的不同之處是,Linux對(duì)按需動(dòng)態(tài)加載內(nèi)核模塊提供了專(zhuān)門(mén)的支持。

            除了UNIX和Linux以上的不同之處,不同版本的UNIX之間也存在很大的安全差別。對(duì)于轉(zhuǎn)到UNIX的Linux開(kāi)發(fā)人員來(lái)說(shuō),這些差別不太明顯,但是很重要。例如,有些和UNIX類(lèi)似的操作系統(tǒng)會(huì)進(jìn)行強(qiáng)制的訪問(wèn)控制,而有的則不會(huì)。

            還有一個(gè)緊密相關(guān)的平臺(tái):Free Software HURD宏內(nèi)核的*nix,它有自己的安全特性。

            有些UNIX平臺(tái),其中最顯著的是,在進(jìn)行缺省安裝的時(shí)候本身就要比其它的操作系統(tǒng)更加安全;如果為它們所寫(xiě)的應(yīng)用程序還會(huì)運(yùn)行在其他一些版本的UNIX系統(tǒng)上,那么這些應(yīng)用程序仍然需要實(shí)現(xiàn)它們自己的安全特性,并遵照一些好的編程慣例。

            對(duì)于開(kāi)發(fā)人員而言,理解線程和進(jìn)程是尤其重要的。在UNIX的變體里,線程常常會(huì)被單獨(dú)處理,而執(zhí)行則由系統(tǒng)來(lái)計(jì)劃安排。而在Linux里,進(jìn)程和線程事實(shí)上沒(méi)有區(qū)別。在UNIX里,同一個(gè)進(jìn)程里的線程會(huì)共享內(nèi)存,但是Linux的進(jìn)程會(huì)創(chuàng)建另外的進(jìn)程,并能夠定義哪些資源可以被共享,而哪些不能。Linux的開(kāi)發(fā)人員常常會(huì)用到“任務(wù)(task)”這個(gè)詞,而他們事實(shí)上是在談?wù)撨M(jìn)程。為了以最安全的方式讓?xiě)?yīng)用程序能夠被移植,開(kāi)發(fā)人員應(yīng)該堅(jiān)持使用標(biāo)準(zhǔn)的線程庫(kù)。

            特別的,如果你希望應(yīng)用程序能夠被移植,那么就要使用“fork”調(diào)用來(lái)創(chuàng)建新的進(jìn)程。要注意,如果可能的話(huà)要堅(jiān)持使用fork,這一點(diǎn)很重要。不要使用“vfork”,它是由BSD開(kāi)發(fā)的一個(gè)優(yōu)化版本的fork(因此被廣泛使用),而且出于兼容性的考慮,也被引入了Linux。其原因很簡(jiǎn)單:vfork會(huì)讓子進(jìn)程共享(或者更準(zhǔn)確地說(shuō),接管)父進(jìn)程的內(nèi)存和控件,這會(huì)導(dǎo)致子進(jìn)程和父進(jìn)程之間的相互沖突。在有些版本的Linux里,vfork在特定情況下會(huì)被黑客攻破。

            盡管Windows有這樣或者那樣明顯的和著名的問(wèn)題,從某種角度上講,微軟的開(kāi)發(fā)人員實(shí)現(xiàn)編程安全要相對(duì)容易一些,因?yàn)樗麄兯ぷ髌脚_(tái)的多樣性受到了限制。

            UNIX和Linux的開(kāi)發(fā)人員,尤其是跨平臺(tái)的開(kāi)發(fā)人員,可能對(duì)安全具有特別的敏感性,因?yàn)樗鼈兊牟僮飨到y(tǒng)可能在缺省的條件下就更加安全;但是,不同版本的UNIX之間在安全上有很多的不同,其差別甚至要比UNIX和Linux之間的還要大。它們之間眾多的相同特性常常掩蓋掉了這些差別,而可移植性的因素則加劇了這些差別。沒(méi)有哪個(gè)Windows下的C或者VBASIC程序員,會(huì)認(rèn)為他的或者她的應(yīng)用程序會(huì)一成不變的只運(yùn)行在UNIX平臺(tái)上,或者相反;但是在UNIX/Linux社區(qū)內(nèi)部,要記住,由于應(yīng)用程序可能會(huì)運(yùn)行在不同的平臺(tái)上,所以它可能無(wú)法運(yùn)行在相同的安全級(jí)別上,這一點(diǎn)很重要。


          關(guān)鍵詞: OpenBSD

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();