五、系統(tǒng)是如何配置ACL的?——默認ACL分析
出于對安全性和易用性平衡的追求,系統(tǒng)分區(qū)默認即具備一整套嚴密的ACL配置。對部分典型默認ACL的分析,既可為我們解決權限相關問題打下基礎,又可為我們實現(xiàn)基于權限控制的特殊應用需求提供范例。
C盤根目錄
|
所有者:TrustedInstaller
|
權限分配
|
Administrators組
|
完全控制
|
SYSTEM組
|
完全控制
|
Users組
|
讀取和執(zhí)行
|
Authenticated Users組
|
特殊(應用于“僅子文件夾和文件”的遍歷文件夾/執(zhí)行文件+列出文件夾/讀取數(shù)據(jù)+讀取屬性+讀取擴展屬性+創(chuàng)建文件/寫入數(shù)據(jù)+創(chuàng)建文件夾/附加數(shù)據(jù)+寫入屬性+寫入擴展屬性+刪除+更改權限 AND 應用于“只有該文件夾”的創(chuàng)建文件夾/附加數(shù)據(jù))
|
|
|
|
C盤根目錄的權限設置典型特征是,未提權的情況下,普通管理員僅可以創(chuàng)建文件夾或刪除這些之后被創(chuàng)建的文件夾。提權后,普通管理員可以向C盤根目錄寫入、更改、刪除文件。
在之前的文章中我們已經提到,啟用UAC的情景下,非經提權,僅有Administrators組的拒絕權限會應用到普通管理員。這意味著C盤根目錄中Administrators的完全控制權限對未經提權的普通管理員的權限分配沒有作用。此時一個普通管理員的所擁有的權限實際上是Authenticated Users組與Users組權限的集合。當然,普通管理員可以通過提權而獲得Administrators組的完全控制權限。但非經提權的程序將被拒絕向C盤根目錄寫入文件。
Program Files
|
所有者:TrustedInstaller
|
權限分配
|
SYSTEM組
|
特殊(應用于“只有該文件夾”的遍歷文件夾/執(zhí)行文件+列出文件夾/讀取數(shù)據(jù)+讀取屬性+讀取擴展屬性+創(chuàng)建文件/寫入數(shù)據(jù)+創(chuàng)建文件夾/附加數(shù)據(jù)+寫入屬性+寫入擴展屬性+刪除+讀取權限 AND 應用于“僅子文件夾和文件”的完全控制)
|
Administrators組
|
特殊(同SYSTEM)
|
Users組
|
讀取和執(zhí)行
|
Creator Owner組
|
特殊(應用于“僅子文件夾和文件”的完全控制)
|
TrustedInstaller用戶
|
特殊(同Creator Owner)
|
|
|
|
Program Files是系統(tǒng)默認的程序安裝文件夾,它單獨設置了ACL而沒有繼承來自C盤根目錄的權限。Program Files的權限設置典型特征與C盤根目錄較為相似,但普通管理員除“讀取和執(zhí)行”外的操作都需要提權。
Windows\WinSxS
|
所有者:TrustedInstaller
|
權限分配
|
SYSTEM組
|
讀取和執(zhí)行
|
Administrators組
|
讀取和執(zhí)行
|
Users組
|
讀取和執(zhí)行
|
TrustedInstaller用戶
|
完全控制
|
|
|
|
Windows目錄作為系統(tǒng)文件夾,重要性不言而喻,其ACL配置也更為復雜,大量使用非繼承的權限配置設定對象權限。其中,WinSxS目錄是一種典型的高強度權限設置狀態(tài)。普通管理員不能對當中的文件、文件夾作任何添加、更改、刪除,即便提權后也是如此(因為Administrators組也僅擁有“讀取和執(zhí)行”的權限)。
用戶\Contoso
|
所有者:SYSTEM
|
權限分配
|
SYSTEM組
|
完全控制
|
Administrators組
|
完全控制
|
Contoso用戶
|
完全控制
|
|
|
|
相對而言,用戶文件夾的權限設置要寬松很多。比如在我們這里舉例的名為Contoso的用戶文件夾中,SYSTEM組、Administrators組與Contoso用戶本身都享有對文件夾的完全控制權限。僅有其他用戶試圖訪問此用戶文件夾時才會收到權限不足的警告,不過對身為管理員的他們來說,為自己的帳戶分配權限并不是什么難事。
從對默認ACL的分析不難看出,我們可以利用啟用UAC時非經提權僅有Administrators組的拒絕權限會應用到普通管理員的特性來構建特殊的受保護文件夾。這類文件夾的特征是未經管理員批準(即提權),任何用戶、程序不能對該文件夾的內容進行更改。具體的權限配置方法上,即是在用戶所普遍隸屬的Users組上設置普通權限(如讀取和訪問),而在Administrators組上設置高權限(如完全控制)。
六、自己動手,解決權限問題
針對NTFS權限相關問題,網絡上往往流傳著一些“一鍵取得管理員權限”的基于注冊表的簡易解決方案。誠然,這類解決方案在一定程度上簡化了對NTFS權限相關問題的解決,但其副作用也很明顯,如用戶無法恢復原文件夾的ACL設置。當用戶將這種解決方案應用到系統(tǒng)受保護的區(qū)域時,將可能引發(fā)安全性問題。事實上手動解決權限問題并不復雜,在解決的過程中,用戶也可以更好的理解與應用NTFS權限。
例一:如何暫時性的獲取對對象的相應操作權限?
一些時候(如美化),用戶可能因為特殊需求而需要更改受保護的系統(tǒng)文件;另一些時候,用戶可能需要移除卸載應用程序后的殘留文件(如卸載Adobe Reader后其程序目錄中所剩下的一些文件)。但當用戶遇到權限不足的警告時,應當如何去臨時性的獲取對對象的相應操作權限呢?
首先,如果并非是要刪除對象,那么請記錄好原對象的ACL設置情況,如所有者、權限、繼承等;
第二,將對象的所有者更改為當前用戶,可以根據(jù)具體情況考慮是否替換子容器和對象的所有者;
第三,將當前用戶添加到ACL中,為其分配適當?shù)臋嘞?,可以根?jù)具體情況考慮是否使用可從此對象繼承的權限替換所有子對象權限;
第四,進行需要的操作;
第五,如果并非是要刪除對象,那么請比照原對象的ACL設置情況恢復對象權限設置,如刪除之后添加到ACL中的用戶帳戶、重新更改對象所有者等。
概而言之,強行設置所有者+為當前用戶分配權限后,當前用戶即可享有對對象的相應操作權限。
例二:如何去除對象上的小鎖?
嚴格的說這并不是什么大問題,但鑒于經常有朋友提出需要修正這一問題,故而順帶談一談。對象上帶有小鎖圖標,代表該對象設定了指定(而非繼承)的權限,該權限表明對象在非提權的情況下專屬于一個用戶帳戶。如在簡單的通過快捷菜單將對象設置為“不共享”后,系統(tǒng)將為對象分配這樣指定的權限。解決方案也很簡單,既可以將對象設置為繼承父對象權限(包括可從該對象的父項繼承的權限),也可以比照同級對象配置對象權限。當然,并非所有具備小鎖的對象都需要去修正,如用戶文件夾的權限設置就具有指定的用戶專屬權限,這是由對象的定位決定的。
七、結語
這篇文章,算是我迄今為止構思最久、撰寫最久也最為冗長的文章了。想將靈活多變的NTFS權限正確而有意義的表達并不是很容易的事,而我?guī)缀蹩梢钥隙ㄎ恼轮写嬖谥承┪視簳r無法發(fā)現(xiàn)的謬誤。我亦不能確定是否每位讀者都會將冗長的全文通讀(畢竟對用戶最有意義的部分僅僅是章節(jié)六)。然而寫作的過程也是一個自我提高的過程,我亦樂意與讀者分享這提高的樂趣。
以上,5000字了吧。
|