如何用Icacls创建自动权限管理解决方案?

日期: 2010-08-29 作者:Greg Shields翻译:Dan 来源:TechTarget中国 英文

作为一种管理工具,Icacls是一把双刃剑。一方面,它的命令行界面有着让人难以置信的强大配置权限。有了它,你几乎可以完成IT行业可能遇到的所有权限管理任务。   但是,为了成为一种“万能”的解决方案,Icacls已经演变得异常复杂。

正如我在上一篇关于Icacls基础的文章中提到,即便是设置最简单的权限也需要极其复杂的语句。只是对文件或文件夹配置基本的权限,语句就必须包括你想设置的权限以及继承信息。即便忘了小部分语法,也会出现意想不到的结果。   这就是为什么上一篇文章着重于一些特例的简单应用,只有这些特殊应用是远远不够的,你会发觉自己需要的是应用广泛的权限管理设置。

  但是,回想一下,此系列……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作为一种管理工具,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:PublicPrivate /inheritance:r /grant:r "Finance Users":(OI)(CI)M

  回想一下,我们正在创建的解决方案开发就是一个批处理文件,并且马上就要运行这个批处理文件了。这意味着,一旦在顶层设置了权限,通过打破该文件夹的继承,下层的文件夹权限都将发生变化,先配置一个新的权限,然后再对下面的文件夹进行继承。这三个步骤确保继承的规则总是按树的顺序遵循的。一个命令行的命令语句就可以完成这三项任务了。

  就是这样了!要创建自动化的解决方案,这两个命令都是必不可少的。需要在同一个文件夹上配置多个用户或组(具有或不具有不同的权限)的情况下,使用第二个语句的变体:

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

  一旦创建好了批处理文件,将其复制到计划任务(Scheduled Tasks)服务器上并对其进行配置,以便可以在你选择的计划上运行。因为每次执行都能完成所有的任务,所以一遍又一遍地重新运行该批处理文件只是为了确保文件结构与脚本结构一直匹配。

  对脚本非常重要的一点是:文件夹结构会随着时间的推移而演变。你需要在其它文件夹上添加文件夹或更改权限。当这些请求发生时,请务必更新解决方案。否则,下一次更新解决方案运行时你就会发现,权限已经被其脚本覆盖了。

一个四层文件夹的例子

  下面我们将通过一个例子来看一下如何最简单地可视化批处理文件。在这个例子中,假设你的文件夹结构始于顶层的C:Public。该文件夹下面有两个子文件夹为C:PublicMarketing和C:PublicFinance。域名用户(Domain Users)对这三个文件夹中的信息都应具有读取权限,而市场营销(Marketing)和财务(Finance)组应具有写入权限。

  另外,这个结构中,第四个文件夹存有敏感信息,c:PublicFinanceSensitive。只有财务(Finance)组才能拥有这个文件夹的写入权限。其它组都没有此权限。

  通过一个批处理文件创建此结构需要四行语句:

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

  这样你就拥有了四行命令,而且文件夹也都准备好执行相应的命令了。

  永远记住,继承可以成为你的朋友。有了像上述这种文件夹结构,就可以确保创建的文件夹与上层文件夹拥有相同的保护力度,这样金融(Finance)和市场营销(Marketing)用户就可以创建自己的子文件夹了。

作者

Greg Shields
Greg Shields

Greg Shields,MCSE(微软认证系统工程师),是Concentrated Technology(www.concentratedtechnology.com)共同创始人和IT技术专家。他拥有近十五年的IT架构和企业管理经验。同时,也是一名IT培训师,并对IT多个技术主题进行演讲,主要包括微软管理、系统管理及监控、虚拟化等。他最近的著作是由SAPIEN出版社出版的《Windows Server 2008: What's New/What's Changed》。

相关推荐