1. 程式人生 > >NTFS檔案系統的安全屬性

NTFS檔案系統的安全屬性

原文作者:darnis

在Windows平臺上如果你使用的是類NT系統,比如Windows NT/2000/XP/2003……,你可以把你的磁碟分割槽的格式設定為NTFS,從而得到NTFS的安全屬性。為什麼我們有必要使用NTFS?怎麼使用NTFS?這是本文要回答的問題。

FAT、FAT32檔案系統是DOS、Window95/98/ME的產物,FAT是一種相容性(這點也是因為其出現得很早)很強的檔案系統,包括Linux等其它OS都支援FAT,如果你經常有需要在不同作業系統之間進行資料交換的必要,估計你也不是本文閱讀的物件(因為你知道的比我更多了,呵)。
我們都知道目前病毒、木馬、流氓軟體之類的東東是讓人深惡痛絕,作為FAT檔案系統,你只有依賴於防毒、防木馬等專用工具來抵禦侵擾,因為我看到很多同事,在2000/XP/2003上也同樣在系統內安裝一大堆防毒、殺木馬之類的軟體,我對此不持反對意見,因為在沒有熟悉NTFS的安全屬性之前,這些工具是必須的(因為現在辦公環境沒有INTERNET基本是不可能的)。我始終深信這一點:一個好的NTFS安全屬性配置,應該可以讓你不用安裝任何的防防毒或者查殺木馬的軟體。雖然我目前還必須安裝防毒軟體。
使用防毒軟體的使用者都知道,這是要犧牲計算機效能來換得的安全性,而且通常國內好些防毒軟體會令你的作業系統變得奇慢無比,這是最讓我無法忍受的一點(因為我窮,用的PC效能都不是當前最好的,要被這些輔助性工具瓜分PC效能實在覺得很不划算)。
使用NTFS做安全屬性配置,能夠實現病毒的抵禦,使系統處在病毒無法感染的環境下,同時由於NTFS是類NT系統與生俱來的,只是我們會不會使用的問題。當然,已經被感染的情況下,NTFS是不能幫你防毒的,它只能抵禦感染,NTFS不是防毒工具,它只是一種具有安全屬性的檔案系統格式而已。

下面來說說,如何在類NT系統中獲得NTFS分割槽。通常情況下,我們在安裝Window時,它會提醒你,安裝系統的盤是按什麼格式(FAT32還是NTFS)進行格式化,如果你在安裝的時候已經選擇了NTFS,那麼恭喜你,你已經跨入了安全防禦的第一步。如果你沒有選擇成NTFS,或者需要把其它分割槽變成NTFS,不用擔心,系統為你準備了工具convert命令,你可以在Windows已經執行的情況下,點選“開始”“執行”(快捷鍵 win+R)輸入 cmd,回車之後我們來到命令列視窗,這時我們可以輸入類似下面的命令:
Convert  c: /FS:NTFS
如果你的C盤是系統盤,或者你要轉換為NTFS的盤正在被使用(盤上有檔案被開啟),系統會提示你下次啟動時,它會自動執行轉換工作,如果你要轉換的分割槽(分割槽在Bill的系統上就叫X盤啦)沒有任何的使用,轉換工作可以立即執行,這是無損的,不用擔心資料會丟失。如果你用PQMagic進行分割槽格式轉換,你自己要注意備份資料啊。還有建議你不要把NTFS反轉成FAT,因為我被害過啊,轉換不成,檔案全搞丟了,是用的PQMagic,估計是當時功能有限,convert命令好像是不支援反轉成FAT的,反正你可以試試,用軟體就是這點好,可以多動手測試,不怕浪費只要你有時間,我老本行搞機械就不行啦,設計一個東西不行的話,那就是資金浪費啦,呵,題外話。

得到了NTFS的盤,我們就可以通過右健點選該盤上任意檔案、資料夾甚至碟符你在屬性對話方塊中你可以看到“安全”屬性頁(什麼你沒有看到安全頁,那你肯定XP及以上系統而且使用了簡單共享,請在資源管理器“工具”“資料夾選項”中“檢視”頁把“使用簡單共享”這項的選擇去掉就OK,還沒有?那你是不是用了XP HOME版了啊?唉那我記得好像XP HOME對這一功能支援有限,用PRO吧!),會有類似於如下的畫面:
 安全屬性頁
圖  安全屬性頁
看到了吧,名稱列表框列出了所有當前物件的可訪問物件(使用者)列表,如果不在列表框的有可能不能訪問該物件(如果沒有新增Everyone);下面的許可權內容也是我們研究的物件。在做進一步的設定之前我們先來說說NTFS的一些使用原則(純屬個人使用經驗,不對的請使用指正)。
原則一,NTFS安全屬性的拒絕許可權優先於允許許可權。也就是說,你同一個使用者你在不同的兩個組中,一個組你設定的允許刪除,而另一個組你又設定拒絕刪除,那麼它的綜合許可權是拒絕刪除。這一點你在設定拒絕的時候,往往系統會善意地提醒你,你需要知道這意味什麼,因為如果你不小心為系統盤設定了everyone完全拒絕,那意味著什麼呢?我沒有做過測試,估計是系統沒搞了,不過你級段夠高的話,估計還是可以有辦法來修正。我的經驗告訴我,everyone不要做拒絕設定,除非你明白這是在幹什麼。
原則二,不要隨意用管理員的身份登入使用系統。這裡說的管理員並不是單純地說是Administrator這個使用者,而是在你的安全屬性表中你給予了最大許可權的使用者。那……我豈不是很不自由?為了效能,而且你真正需要做系統維護(安裝、解除安裝……)時間應該是很少的,建議你多用 run as。

我們在實際進行安全屬性設定和使用系統時都應該牢記以上兩點,安全意識你自己必須永不懈怠。要知道安全始於防範,再安全的系統,如果連維護使用者都不注意安全的話,根本不存在安全的系統,畢竟計算機不是人啊,她工作需要你為她指定路線。

說了這麼半天,NTFS怎麼防毒啊?別急下面的內容我就一步一步教你怎麼把系統做到防毒、防木馬、防……,防不了利用OS BUG的入侵(所以Bill才需要不斷改進,不斷地發補丁)。
通常情況下,我們最需要防的是系統盤的Winnt(2000)/Windows(XP/2003)和Program Files這兩個資料夾,因為我們平常的活動基本集中在這兩個資料夾中,雖然你感覺不到。一般病毒感染,也都往你Winnt和Winnt/System32下面作怪,要麼生成檔案,要麼修改你的系統檔案,在我遇到過的情況中,木馬基本100%都往winnt及winnt/System32下面植入它的程式,病毒就比較氾濫,只要是EXE不管哪兒都有可能被感染,甚至不是EXE也一樣感染。我們就以Winnt目錄為例,其它就雷同了。
這裡先作一些約定,系統盤是C:盤。先增加使用者組 Public,BHS(你中意的名稱啊)。再增加一個使用系統的使用者darnis(你中意的名稱呵,這是我的En. Name),他歸屬於 Power Users、BHS使用者組,以後你就用 darnis這個使用者登入系統了啊。進行許可權設定時應確保你登入的使用者具備設定該物件許可權的許可權,有點繞,反正你要有許可權設定才能進行下面的工作。
通常情況下,如果是2000我們由FAT轉成NTFS時,系統盤通常是everyone 完全控制,這意味著跟FAT差不多,還沒有進行任何的安全限制。我們利用安全屬性的繼承性,先為整個系統盤定義一些共用的安全屬性,通常我會把C盤上許可權進行限制,然後在需要開放許可權的檔案或者資料夾上開放許可權給特定的使用者,這叫寧可錯殺一千也不可放過一個,有點黑,。這安全屬性要是可以匯出來就好了,就是我還沒有發現怎麼匯出來,我下面還是一個一個地貼一下安全屬性,以便於你看清楚,怎麼實施。
我們先把Administrators、System、Public、Power Users、BHS、Guests新增到使用者列表中,看起來像下圖所示。
 C盤安全屬性
圖 C盤安全屬性
這個對話方塊拉不長,名稱列表裡面還有Public和System以及Power Users。在這一頁上我們可以預先進行一些許可權設定,以方便我們細調。選中 Administrators 在許可權中選中完全控制的允許項,System一樣也是允許完全控制,把Guests和Public使用者組的完全控制的拒絕項選中,這就意味著歸屬於Guests和Public使用者組的使用者不能訪問C盤。下面為BHS使用者組指定初步的許可權把寫入的拒絕項選中,選中讀取及執行和列出資料夾目錄、讀取這三項的允許選中看起來就像下圖。
 BHS使用者組的安全屬性
圖 BHS使用者組的安全屬性
這裡everyone我們需要減少它的許可權選項如下圖所示。
 everyone安全屬性
圖 everyone安全屬性
再來設定Power Users的許可權,如下圖。
 Power Users組許可權
圖 Power Users組許可權
這樣初步的安全設定就可以了。哈,可以防毒了!…… 別急,還要繼續這只是初步的。我們繼續點選“高階…”按鈕,進入安全屬性的細部調整。
點選高階之後看起來就像下圖。
 高階安全屬性對話方塊
圖 安全屬性高階對話方塊
這樣子看起來是不是更人性化一些呢(呵,有鎖標呢),這裡面我們主要設定“許可權”頁的內容。需要做細調的在首先是BHS的拒絕屬性。選中拒絕型別的BHS(就是前面有鎖的那個BHS行啦),再點“檢視/編輯”,這時看起來就像下圖一樣。
BHS使用者組的許可權詳細情況 
圖 BHS使用者組的許可權詳細情況
核對一下你的BHS拒絕許可權是不是跟我這邊一致,當然你也可以不一致,這裡把建立檔案/寫入資料以及相關寫入、刪除等操作全部拒絕就是要防止當前使用系統的使用者操作不會有意或者無意地破壞系統檔案(因為你的登入使用者歸屬於這個組)。
在BHS組的拒絕調整完成後,我們再來調整Power Users組的許可權。調整後的Power Users組的許可權看起來如下圖所示。
 Power Users組許可權詳細情況
圖 Power Users組許可權詳細情況
Power Users組我們只設定允許許可權,沒有拒絕。

確認所有設定之後我們可以做一些簡單的測試,看我們的許可權設定是否成功。首先換登入使用者為darnis,然後在C盤上新建一個目錄,會得到如下圖的提示。
 無法建立資料夾"新建資料夾"拒絕訪問
圖 新建目錄測試結果
再來嘗試刪除一下檔案,會得到如下圖所示的提示。
 無法刪除PkgClnup:拒絕訪問
圖 刪除檔案測試結果
這樣我們的目的結果達到,保護了C盤根目錄的安全。這樣就行了啊?這麼簡單?回答是別急,你再驗證一下容易被病毒和木馬感染的 Winnt和System32這兩個目錄。結果一樣,恭喜你中獎了,實際上也許會不一樣,跟沒有設定安全屬性一樣,可以新建目錄,可以刪除檔案。暈了,那是怎麼回事?其實是這樣,Bill出於系統管理的需要,通常會自己設定Winnt和Program Files以及 Documents and Settings的相關屬性,以方便不同使用者使用時的管理。我估計他是考慮到不同使用者安裝應用程式時會往Winnt及Program Files資料夾中拷貝或者更新檔案,但是這是有安全隱患的,特別是現在的流氓軟體根本你還不知道在安裝它,結果就安裝上了,汗死了,而且無法解除安裝。這裡只需要做一些簡單的設定你就可以把Bill為你“人性化”考慮的設定給同化掉。
右擊Winnt目錄,安全屬性對話方塊跟C盤的看起來應該差不多,注意安全頁的最下方多了一項選項“允許將來自父系的可繼承許可權傳播給該物件”,同樣的選項在高階框中也出現了。我們這一步在高階對話方塊中進行設定。這時我們把“允許將來自父系的可繼承許可權傳播給該物件”勾選住,然後在許可權專案列表中刪除不必要的安全選項,實際上按拒絕優先的原則,我們可以不用管了,因為BHS的拒絕已經被從C盤的許可權從“傳播”到了C:/Winnt。在高階設定框中“允許將來自父系的可繼承許可權傳播給該物件”的下面是“重置所有子物件的許可權並允許傳播可繼承許可權”把這個選項勾選住後,按“應用”,這時會出現下圖所示的設定程序指示圖。
 重置所有子物件的許可權程序指示
圖 重置所有子物件的許可權程序指示
如果在應用過程中出現提示你可以按你實際情況進行回答,一般情況下為了保證安全被應用,都選擇“繼續”。
這樣Winnt及子目錄的所有許可權都設定好了,再來做測試,你就會發現跟在C盤根目錄下一樣,都拒絕操作了。呵,至此,算是大功告成。其它需要增加安全性的地方,你再根據你自己的需要來增加安全設定,操作過程可以按上述的過程。

實際上,上述的操作都是為了規避惡意的程式碼在系統盤上留下作惡工具,也就起到了阻止病毒和木馬入侵的作用。當然,黑客的攻擊,也許這是不起作用的,因為他們利用了你作業系統的BUG,它可能取得系統的管理員許可權,這時他是可以作任何事情的,所以你需要及時地打安全補丁,以避免遭受黑客的攻擊。

防範是做好了,但是問題也來了。

1.我如何安裝應用程式啊?
簡單的答覆是使用管理員登入進行安裝,後再換回到普通使用者進行使用。如果有些應用程式它有臨時檔案需要放到安裝目錄下,而安裝目錄又位於安全管制範圍,那麼你可以為它開放許可權,簡單的做法是從安全列表中刪除 BHS 的安全控制(操作上應用先把“允許將來自父系的可繼承許可權傳播給該物件”項取消選擇,詢問的時候選擇“複製”,這樣這後才可以刪除)。這樣這個使用者又是從屬於Power Users的,那麼沒有被拒絕(BHS沒了),而允許又被開放(Power Users允許了),綜合許可權就是允許做相應的操作,如果你擔心病毒侵擾,你可以再把執行檔案單獨設定拒絕許可權,以達到不可侵擾的目的。
另外一些小的應用程式安裝如果你嫌煩的話,你可以按住Shift鍵再右擊安裝程式的執行檔案,你選擇“執行方式……”,這時會彈出登入為對話方塊,這裡你輸入管理員帳號,這個安裝過程就可以按管理員身份進行安裝了。這種方式要有有效,需要系統服務中Run as 服務要在啟動狀態才行,通常情況下,也是啟動的。

2.如果我重灌了系統,以前我其它盤也設定了安全許可權,這時以前的使用者組全變成一串字元(SID)了,而且糟糕的是我只給他開放了許可權,其它任何使用者都不可訪問,這該怎麼辦啊?資料很重要的!
關於這個問題你也不用擔心。Bill為你考慮了很多,就是重新安裝過的話,你可以使用管理員身份把這個檔案或者資料夾先把所有權獲取,再進行安全屬性設定就可以了。當然如果你加了密,那……我沒有那樣做過,幫不了你,一般我也不會對一些檔案進行加密,如果你的檔案確實很機密,估計你會有其它的解決之道。
如何取得所有權?這也是通過安全屬性頁的高階對話方塊裡面進行操作的。
安全屬性之所有者 
圖 安全屬性之所有者
你選中Administrators再把下面“替換子容器及物件的所有者”選中,估計選中在應用的時候會有很多提示,如果最終執行不下去,你就可以一級一級(目錄)地來,先把當前目錄的所有者取到再確定之後,再來設定許可權,設定的時候都把子容器選中,不行再重複,當然重複是指到下一級目錄進行(別笨笨地只在當前目錄做啊,根據提示來)。
如果已經是目錄的所有者,那麼你就可以重新設定它的許可權。當然子目錄有可能還不行,就按上面說的再遞迴操作吧,估計可以編個程式來做,不過我對WIN32API不熟,做不了呵。