用icacls創建自動權限管理解決方案

  作爲一種管理工具,icacls是一把雙刃劍。一方面,它的命令行界面有着讓人難以置信的強大配置權限。有了它,你幾乎可以完成IT行業可能遇到的所有權限管理任務。

  但是,爲了成爲一種“萬能”的解決方案,icacls已經演變得異常複雜。正如我在上一篇關於icacls基礎的文章中提到,即便是設置最簡單的權限也需要極其複雜的語句。只是對文件或文件夾配置基本的權限,語句就必須包括你想設置的權限以及繼承信息。即便忘了小部分語法,也會出現意想不到的結果。

  這就是爲什麼上一篇文章着重於一些特例的簡單應用,只有這些特殊應用是遠遠不夠的,你會發覺自己需要的是應用廣泛的權限管理設置。

  但是,回想一下,此係列是真正在致力創造一個“可審計的自動權限管理解決方案”。這裏的關鍵詞是解決方案,因爲實際上,你最終想要的是單一的批處理文件。在批處理文件中,是你要爲文件夾結構配置的權限,一行命令對應一個文件夾。

  有了這樣一種批處理文件,設置樹中的每個權限就可以簡單完成了……然後運行該批處理文件。同樣也適用於固定權限。最後,當然也是最重要的,將批處理文件作爲日常(最好是這樣)計劃任務來運行,可以每天晚上都能自動確保每個權限的正確性。

  聽起來太好了,似乎不像真的?這的確是真的,只是需要做一些準備工作。

第1項工作:Excel

  首先要做的是列出文件夾結構。Microsoft Excel就是一款完成此任務的方便工具。進入文件夾結構中“主要”文件夾裏的Excel電子表格。當用戶從上到下瀏覽時,這些主要文件夾的權限結構會發生變化。對於每一個文件夾,都要包括你想要設置的權限。記住,在這裏設置的每個權限都會被它的所有子文件夾所繼承。

  icacls具有一種可將這些權限可視化的機制。你可以獲得每個文件和文件夾的報告並在C:/Public目錄下使用下列語句:
icacls C:/Public /T

  就本人而言,我很討厭這個報告。可以肯定的是,它很全面-實際上它過於全面了。你不用改變C:/Public目錄下所有文件夾的權限,絕大多數都可以通過繼承上層文件夾權限的簡單方式來實現。正是由於這個原因,我不太喜歡用上面的命令來創建Excel電子表格,而是選擇自己來創建的方式。

  如果你的結構太複雜而無法獨立完成此項任務,考慮下載Microsoft Sysinternals工具AccessEnum。這個免費的工具將有助你在複雜的結構中更好地可視化權限。我用它來幫助我找出與上層文件夾不同的子文件夾。

  上述Excel電子表格的創建過程將需要一些時間,但要認識到,創建Excel電子表格的同時也創建了最後批處理文件的結構。你往電子表格寫入的信息-文件夾路徑、文件夾權限和權限繼承——恰好也是icacls需要的信息。請讓我再重複一次上述聲明,因爲它確實非常重要,一定要牢記:當用戶從上到下瀏覽時,只有將需要做出權限改變的文件夾輸入電子表格才能產生改變。繼承的規則將適用於其它的所有文件夾。

第2項工作:Icacls

  一旦做好了第1項工作,接下來要做的就只需要創建兩個icacls命令結構了。第一個命令結構是在一個文件夾上直接配置權限。在結構頂層你會用到此權限。語句如下:
icacls C:/Public/ /grant:r "Domain Users":(OI)(CI)M

  這個語句上是爲Domain Users組直接配置C:/Public目錄下的文件夾修正權限,替換任何現有的訪問控制列表(ACL)。同時,它還對繼承C:/Public目錄下的所有文件夾的的權限進行配置。

  對於低於頂層的文件夾,要用第二個語句:

icacls C:/Public/Private /inheritance:r /grant:r "Finance Users":(OI)(CI)M

  回想一下,我們正在創建的解決方案開發就是一個批處理文件,並且馬上就要運行這個批處理文件了。這意味着,一旦在頂層設置了權限,通過打破該文件夾的繼承,下層的文件夾權限都將發生變化,先配置一個新的權限,然後再對下面的文件夾進行繼承。這三個步驟確保繼承的規則總是按樹的順序遵循的。一個命令行的命令語句就可以完成這三項任務了。

  就是這樣了!要創建自動化的解決方案,這兩個命令都是必不可少的。需要在同一個文件夾上配置多個用戶或組(具有或不具有不同的權限)的情況下,使用第二個語句的變體:

icacls C:/Public/Private /inheritance:r /grant:r "Finance Users":(OI)(CI)M "Accounting Users":(OI)(CI)R "IT Admins":(OI)(CI)F

  一旦創建好了批處理文件,將其複製到計劃任務(Scheduled Tasks)服務器上並對其進行配置,以便可以在你選擇的計劃上運行。因爲每次執行都能完成所有的任務,所以一遍又一遍地重新運行該批處理文件只是爲了確保文件結構與腳本結構一直匹配。

  對腳本非常重要的一點是:文件夾結構會隨着時間的推移而演變。你需要在其它文件夾上添加文件夾或更改權限。當這些請求發生時,請務必更新解決方案。否則,下一次更新解決方案運行時你就會發現,權限已經被其腳本覆蓋了。

一個四層文件夾的例子

  下面我們將通過一個例子來看一下如何最簡單地可視化批處理文件。在這個例子中,假設你的文件夾結構始於頂層的C:/Public。該文件夾下面有兩個子文件夾爲C:/Public/Marketing和C:/Public/Finance。域名用戶(Domain Users)對這三個文件夾中的信息都應具有讀取權限,而市場營銷(Marketing)和財務(Finance)組應具有寫入權限。

  另外,這個結構中,第四個文件夾存有敏感信息,c:/Public/Finance/Sensitive。只有財務(Finance)組才能擁有這個文件夾的寫入權限。其它組都沒有此權限。

  通過一個批處理文件創建此結構需要四行語句:

icacls C:/Public/ /grant:r "Domain Users":(OI)(CI)R
icacls C:/Public/Marketing /inheritance:r /grant:r "Domain Users":(OI)(CI)R "Marketing Users":(OI)(CI)M
icacls C:/Public/Finance /inheritance:r /grant:r "Domain Users":(OI)(CI)R "Finance Users":(OI)(CI)M
icacls C:/Public/Finance/Sensitive /inheritance:r /grant:r "Finance Users":(OI)(CI)M "Executive Users":(OI)(CI)M

  這樣你就擁有了四行命令,而且文件夾也都準備好執行相應的命令了。

  永遠記住,繼承可以成爲你的朋友。有了像上述這種文件夾結構,就可以確保創建的文件夾與上層文件夾擁有相同的保護力度,這樣金融(Finance)和市場營銷(Marketing)用戶就可以創建自己的子文件夾了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章