動態庫在不同作業系統中的不同意義

2021-08-25 06:38:44 字數 1761 閱讀 9418

「unix 至少設立了三層內部邊界來防範惡意使用者或有缺陷的程式。一層是記憶體管理:unix 用硬體自身的記憶體管理單元(mmu)來保證各自的程序不會侵入到其它程序的記憶體位址空間。第二層是為多使用者設定的真正許可權組——普通使用者(非 root使用者)的程序未經允許,就不能更改或者讀取其他使用者的檔案。第三層是把涉及關鍵安全性的功能限制在盡可能小的可信**塊上。在 unix 中,即使是 shell(系統命令直譯器)也不是什麼特權程式。」----《unix程式設計藝術》:小即是美,這個詞有兩個例子可以證實,乙個是古希臘的城邦,另乙個是unix的程序設計原則。小,對於協作,可以最大化最簡易地排列組合(dna/兩儀-四象-八卦);對於故障,可以最小化的影響其它;對於恩惠,可以最小化聚集和最大化擴散...小,可以更容易地由簡入繁,由繁化簡,在功能強大之後更簡單地尋求高效。

unix/linux中的pam機制是通過動態庫來實現的,之所以採用動態庫是因為它的「可替換性」,然後同樣的事情在windows卻成了盡量要避免的了,很多windows上開發的軟體都有認證功能,很多有經驗的人都會建議說,不要用dll實現認證,因為惡意者會替換掉這個實現認證的dll,這種說法也不無道理,看起來動態庫認證的可替換性在unix/linux和windows上的價值截然不同,乙個因之使用它而另乙個卻因之避免使用它,這就不得不扯到兩類系統的設計原則。unix/linux有著嚴格的使用者/組-許可權的對映,而windows要麼不實現,要麼實現得很弱,如果不談使用者群習慣的話,這裡已經可以說明windows的設計弊端了,可是深入研究一下就會發現,windows如此實現還是有道理的,那就是使用者體驗簡單。windows的使用者主要個人使用者,使用作業系統的人很多時候就是乙個人,而微軟在設計windows的時候並沒有將網路考慮在內,最起碼沒有在網路上花太大的力氣,因此windows中的使用者當然就不包括那些通過網路連線進來的人們了,微軟作業系統的使用者的概念就是那個正在使用計算機的人的抽象,而unix中使用者卻只是乙個抽象的執行者,想 建立檔案,讀檔案,寫檔案,遠端登入等都需要乙個合法的使用者,在這等意義上,windows當然就沒有必要去完善使用者-許可權的映**,如果說unix/linux是和網路繫結在一起的話,那麼windows則是和不聯網的單台計算機繫結在一起的,所以一般的人都會使用administrator來登入機器,甚至計算機主人的朋友也會得到這個使用者的密碼,甚至windows機器是可以不設定密碼就可以登入的(linux則必須輸入root密碼)。因此在windows上工作,學習或者娛樂,如果你拔掉網線,然後查殺一下病毒和木馬,接下來的經歷將是美好的,如果你插上了網線,那幾乎是噩夢的開始,任何東西都是不安全的,這是因為如此,實現認證的dll才會被輕易的替換掉,如此一來,可替換性反倒成了乙個容易攻破的漏洞了。在unix/linux上工作時,由於這作業系統在設計和改良之初本身就整合了網路,因此使用計算機的使用者可就不僅僅是機器前面的那個人了,早在unix設計之初,終端的意義非常之大,實現乙個分時的作業系統目的就是讓很多使用者可以通過終端連線在一台處理機上,可見unix的使用者概念的永續性和重要性,linux就更不必說了,後來者的優勢在於省去了當初unix整合tcp/ip時的那些爭論,在unix/linux上,使用者,許可權,程序間通訊,套接字,網路這些概念是一體的,而不是分離的。既然unix/linux中有如此強大的使用者-許可權對映功能,那麼「可替換性」也就是成了一種靈活性而不是乙個漏洞了。

在unix/linux中,如果你刪除/修改乙個檔案失敗,那麼原因幾乎就是乙個「無許可權」,而在windows中,答案就是「此檔案正在被使用」了,被誰使用呢?哪個程序,當前是哪個使用者使用了它?...總之,很多因素揉在了一起。同樣乙個機制,在設計原則不同的情況下,乙個系統視此機制為禍,而另乙個系統卻視此機制為福...兩類系統有時也會相互影響,比如用慣了windows的人總受不了linux的限制,於是他們總是使用root來登入系統。

作業系統中不同的鎖

鎖是執行緒同步時的乙個重要的工具,然而作業系統中包含了多種不同的鎖,各種鎖之間有什麼不同呢?1 訊號量 semaphore 訊號量分為二元訊號量和多元訊號量,所謂二元訊號量就是指該訊號量只有兩個狀態,要麼被占用,要麼空閒 而多元訊號量則允許同時被n個執行緒占有,超出n個外的占用請求將被阻塞。訊號量是...

mysql在不同作業系統下的區別

mysql在不同作業系統下的區別 mysql在linux下資料庫名 表名 列名 別名大小寫規則是這樣的 1 資料庫名與表名是嚴格區分大小寫的 2 表的別名是嚴格區分大小寫的 3 列名與列的別名在所有的情況下均是忽略大小寫的 4 變數名也是嚴格區分大小寫的 mysql在windows下都不區分大小寫。...

不同作業系統上遮蔽oracle的作業系統認證方式

windows系統上 如果不想使用者通過作業系統驗證方式登入,可以修改 sqlnet.ora檔案,把 sqlnet.authentication services nts 前面加 注釋掉就可以了。linux系統上 如果不想使用者通過作業系統驗證方式登入,可以建立乙個 sqlnet.ora 檔案,加上...