共用方式為


在檔案系統中管理許可權

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。