歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> Unix與Windows文件權限控制差異

Unix與Windows文件權限控制差異

日期:2017/2/25 10:13:22   编辑:Unix基礎知識

  Unix操作系統在文件權限控制上,跟Windows操作系統上還是有比較大的差異。簡單的來說,Unix的文件權限控制要比 Windows操作系統復雜的多。雖然其維護起來具有一定的難度,但是這也保證了Unix操作系統的文件控制要比Windows操作系統的文件控制安全的多。下面筆者就對兩個操作系統在文件權限控制上的差異做一些分析。如果有說得不對的地方,還請大家多多批評改正。

  如下圖,無論是微軟操作系統還是Unix操作系統,其權限控制的基本模型就如下圖所示。不過他們在具體的實現上有很大的差異。

  差異一:文件執行權限上的差異分析。

  假設現在有用戶A,其在Unix操作系統上建立了一個文件text。通常情況下,這個用戶A就是文件text的所有者。所有權這對文件具有完全控制的權限,即具有讀、寫、執行的權限。而在Windos操作系統下,則沒有控制的這麼嚴格。在Windows下其權限只有讀、寫的控制,而沒有細化到執行的權限。這就是兩個操作系統在文件權限控制上的一個重要差異。Unix在對文件專門進行了執行權限的控制,這對於Unix操作系統的安全性具有很大的幫助。如現在有一個程序開發小組,其成員包括用戶A與用戶B。他們在開發一個磁盤清理的程序。為了安全起見,這個腳本文件當然不能夠隨意執行。不然的話很可能會造成磁盤文件意外刪除的。為此用戶A就可以控制,用戶B可以查看或者編輯這個腳本文件,但是不能夠執行。要測試的話,必須有用戶A來進行。這就可以保障這個腳本文件不會被未經授權的用戶執行。但是在Windows系統下就沒有這方面的控制。

  差異二:相同的組不同的用戶具有不同的權限。

  在Unix系統中,即使相同組的用戶,默認情況下其對於文件的權限也是不同的。如現在一個組其有用戶A與用戶B。現在用戶A創建了一個test 文件。默認情況下用戶A與用戶B對這個文件具有不同的權限。如用戶A對這個文件具有讀、寫、執行的權限。但是用戶B對這個文件則只有讀寫的權限。但是在 Windows系統下,則這方面不是這麼控制的。在默認情況下,Windows操作系統下同一個組的用戶往往具有相同的權限。

  在Unix系統中,默認情況下組具有文件的讀、寫權限。文件所有者自有一組組權限,它優先於用戶組的組權限。當用戶放棄了文件的所有權之後(如把文件的所有權轉移給了其他用戶),則其就會自動繼承用戶組的組權限。如果現在這個組中的用戶A已經創建了一個文件text。那麼後來加入到這個組中的用戶,也對這個文件具有讀寫的權限。不過要注意,沒有執行權限。也就是說,通常情況下只有root帳戶與文件的所有權者對文件具有執行權限。其他的用戶都不具有這個權限。當然文件的所有者人與root帳戶可以把這個文件執行權限賦予給其他人。這裡要注意,只有文件的所有權人與root帳戶才可以更改文件的權限,其他用戶都不可以。這也是筆者下面要談到的兩個系統的第三個差異。

  差異三:誰可以更改文件的權限。

  在Windows操作系統中,往往只要對這個文件具有寫權限的人就可以這個文件的權限。如用戶A創建了一個文件。同時他允許用戶B對這個文件具有完全控制權限。那麼這個用戶B就可以修改用戶的權限,如用戶B可以讓其他組的用戶也可以修改這個文件。顯然這會給文件帶來一定的安全隱患。

  在Unix操作系統上,這個權限控制就相對安全一點。因為通常情況下,只有文件的所有權人與root帳戶才能夠修改文件的權限。如現在用戶A創建了一個text文件。默認情況下用戶A具有這個文件的讀寫執行的全部權限。而同一個組的用戶具有這個文件的讀寫權限。注意即使用戶B具有文件test的寫權限,其仍然不能夠變更這個文件的權限。如把這個文件的讀權限賦予給其他沒有這個讀權限的用戶。或者說把其他用戶的寫權限取消掉等等,都是不行的。即使用戶A給了用戶B讀、寫、執行等文件的全部權限,用戶B也不能夠更改這個文件的權限,或者把權限賦予給其他用戶。簡單的說,無論其他用戶是否對文件具有完全控制權限,只有root 用戶與文件的所有權者才能夠更改文件的權限。這是Unix系統的一個強制限制。

  另外需要說明的是,在Unix系統下文件權限包括三方面的內容,即所有權者權限、同組其他成員的權限、組用戶的權限。默認情況下,所有權者對文件具有讀寫二個權限。同組其他成員與組用戶都有讀寫文件的權限。不同的Unix版本在這方面可能也有所差異。如有的Unix版本的操作系統,組用戶與其他成員的權限只有讀,而沒有寫。也就是說,後面有用戶加入到這個組,則這用戶對原有的文件也只有讀的權限。也就是說,文件或者目錄創建之後,系統會自動賦予他們一組默認的權限。這組默認的權限是由一個叫做權限屏蔽字的參數所確定的。如筆者現在使用的一個Unix系統,一個文件的默認設置中所有的用戶都具有讀取的權限,但是只有文件的所有權人才具有文件的寫入權限。系統工程師可以根據自己的實際需要更改這個默認設置。如他希望同組的其他用戶也具有文件寫入的權限。為此系統工程師就需要使用chmod命令來改變這個默認設置。

  如果要更改文件的權限,Unix操作系統提供了兩種方式,分別為相對模式與絕對模式。相對模式是在原有的權限基礎上進行修改,chmod權限修改命令只修改命令行中指定的權限,而其他權限將保持不變。而絕對模式則是直接設置文件的最終權限。而在Wincows系統中,則只能夠通過相對模式來更改文件權限(雖然Windows系統中沒有這個相對模式的概念)。在絕對模式中,分別利用三個八進制數字表示三個權限。如4表示讀權限、2表示寫權限、1表示執行權限。如果系統工程師需要為文件設置不同的權限,只需要進行簡單的加減計算即可。如需要給某個用戶某個文件的讀寫執行權限,則就是對他們相加即 4+2+1=7即可。這個權限設計很容易記憶,很很容易實現。故筆者在Unix系統中,基本上都是采用絕對模式來更改文件的權限。利用相對模式還需要先了解原有的權限情況,然後再進行配置,反而操作起來麻煩一點。

  差異四:Unix文件權限控制的漏洞。

  雖然Unix提供了比較復雜的權限控制體系,但是人無完人,其還是存在比較大的漏洞。如現在用戶A創建了一個文件text。其設置只有其自己對這個文件具有讀寫權限,其他用戶都沒有對這個文件具有寫權限。那麼這個文件能否被其他用戶刪除呢?答案是可以的。因為文件權限不僅跟文件本身的權限相關,還跟目錄的權限有關。如果這個目錄允許用戶B具有修改的權限,那麼用戶B即使不具有用戶A創建的文件test的人和權限,其也可以刪除這個文件。為此,如果用戶B懊惱用戶A不給其看文件中的內容,那麼其一氣之下就把這個文件給刪除了。那麼不是會給用戶A造成不必要的損失嗎?其實這種情況不僅Unix系統存在,在Windows操作系統下也存在。

  如在Windows下,用戶A把某個文件設置為只讀,而且還為這個文件設置了密碼。但是只要其他用戶對這個目錄具有修改的權利,那麼其他用戶還是可以在文件所有權者不知情的情況下刪除這個文件。即使其有只讀與文件密碼保護,也照刪不誤。故要做到文件真正的安全,還需要文件權限與目錄權限配合使用才行。

Copyright © Linux教程網 All Rights Reserved