2008年04月12日

[Vista] 使用iCACLs.exe快速變更檔案的存取權限

由於使用檔案總管變更記事本的安全性步驟繁複,因而查詢到了一篇Replacing notepad.exe in Vista 使用takeown.exeicacls.exe直 接使用DOS命令變更內建檔案的使用權限設定。TakeOwn很好理解,就是取得所有權,但iCACLs就較困難些了。iCACLs在以前的 Windows版本裡相對應的指令名稱是CACLs:Change Access Control Lists 的縮寫(開頭的C也有寫成Control的);而在Windows Server 2003 SP2與Windows Vista裡又出現加強版(Improved) 的CACLs,即 ICACLs.exe。以下我們就使用iCACLs.exe和C:\Windows\hh.exe來實驗如何用指令變更存取權限設定。

我們由檔案總管右鍵功能表開啟hh.exe的內容視窗→安全性頁籤→〔進階〕檢視hh.exe的使用權限,再以指令 icacls  hh.exe 檢 視其輸出,二者做個比對就能比較了解iCACLs顯示的縮寫含義了。

Vista Security
C:\Windows>icacls hh.exe
hh.exe NT SERVICE\TrustedInstaller:(F)
       BUILTIN\Administrators:(RX)
       NT AUTHORITY\SYSTEM:(RX)
       BUILTIN\Users:(RX)

已 順利處理 1 個檔案; 0 個檔案處理失敗

由對照可知:
  • (F)是完全控制(Full Control)
  • (RX)是讀取與執行(Read and Execute)
內建檔案只有TrustedInstaller具有完全控制的權限,透過iCACLs的 /grant 使用者:(F) 參數可以把完全控制權限授權給指定的使用者,首先用TakeOwn命令把hh.exe的擁有者變成登入的使用者,再變更存取權限:

C:\Windows>takeown /F hh.exe

成功: 檔案 (或資料夾): "C:\Windows\hh.exe" 目前已經由使用者 "JERRYTP\jerry" 擁有。

C:\Windows>icacls hh.exe /grant jerry:(F)
已處理的檔案: hh.exe
已順利處理 1 個檔案; 0 個檔案處理失敗

C:\Windows>icacls hh.exe
hh.exe JERRYTP\jerry:(F)
       NT SERVICE\TrustedInstaller:(F)
       BUILTIN\Administrators:(RX)
       NT AUTHORITY\SYSTEM:(RX)
       BUILTIN\Users:(RX)

已順利處理 1 個檔案; 0 個檔案處理失敗

由上面的紅色字體可以看到使用者jerry針對hh.exe已具有完全控制的權限了,往後不管是對 hh.exe 做改名、覆蓋或刪除操作才能成功。

iCACLs.exe命令頗為複雜,有時間再來仔細研究清楚。

另外,由於Google到的資料以英文居多,想讓DOS視窗的字碼頁由950(Traditional Chinese Big5)變成437(United States)應如何操作呢?

只要用debug.exe就 可以了。當debug.exe的減號提示符號出現後按 q 和 Enter回到DOS後,其編碼就變成437了。

##




Posted by emisjerry at 樂多Roodo! │21:04 │作業系統備忘
樂多分類:網路/3C 共同主題:作業系統 工具:編輯本文
Ads by Roodo!