在檔案系統中管理許可權
Privilege 是操作系統用來控制特定作業的機制。 如果符合下列兩個條件,每個許可權都有與其相關聯的特定作業,作業的呼叫端可以執行:
- 許可權必須由呼叫端持有。
- 也必須啟用許可權。
這些需求的原則稱為 最低許可權。 最低許可權要求在使用許可權之前啟用許可權,而不是假設許可權。 這項需求可將使用者不小心執行他們不想要的作業的機會降到最低。 例如, SeRestorePrivilege 通常會允許呼叫端略過檔案寫入存取的一般檢查。 例如,系統管理員可能不想在複製檔案時實際覆寫一般安全性檢查;不過,當使用備份/還原公用程式還原同一個檔案時,他們可能會想要這麼做。
對於文件系統,有許多許可權經常用來修改系統的一般行為(特別是安全性檢查)。 這些權限包括:
SeBackupPrivilege 允許擷取檔案內容,即使檔案上的安全性描述元可能不會授與這類存取權也一樣。 已啟用 SeBackupPrivilege 的呼叫端會抹去任何 ACL 型安全性檢查的需求。
SeRestorePrivilege 允許修改檔案內容,即使檔案上的安全性描述元可能不會授與這類存取權也一樣。 此函式也可以用來變更擁有者和保護。
SeChangeNotifyPrivilege 允許右周遊。 此許可權是 Windows 中重要的優化,因為它會移除在路徑中每一個目錄上執行安全性檢查的成本。
SeManageVolumePrivilege 允許特定的磁碟區層級管理作業,例如鎖定磁碟區、重組、磁碟區卸載,以及在 Windows XP 和更新版本上設定有效的數據長度。 檔系統驅動程式會明確地根據 FSCTL 作業來強制執行此特定許可權。 在此情況下,文件系統會決定強制執行此許可權。 判斷呼叫端是否持有此許可權,是由安全性參考監視器作為正常許可權檢查的一部分。
雖然還有其他許多許可權,但文件系統通常不透明,且只有 安全性參考監視器 (SRM) 會解譯它們。
在檔案系統中管理權限的主要 Windows 例程包括:
SePrivilegeCheck 會執行特定一組必要許可權的檢查。
SeSinglePrivilegeCheck 會執行單一特定許可權的檢查;它是 SePrivilegeCheck 的優化版本。
SeAccessCheck 會對物件執行一般存取檢查(通常是文件系統的檔案物件)。
SeFreePrivileges 會釋放先前呼叫 SeAccessCheck 所傳回的許可權區塊。
SeAppendPrivileges 會將已啟用的許可權新增至ACCESS_STATE結構。 一般而言,文件系統會在IRP_MJ_CREATE處理期間使用傳遞給它的ACCESS_STATE。