使用 ICACLS 设置用户目录权限

pk.*_*pk. 16 scripting windows permissions

我正在尝试重置用户目录的权限,并且在我的脚本的最后一步遇到了一些麻烦。我的脚本基本上拥有整个用户目录的所有权,重置目录的所有文件和文件夹的权限,明确授予我需要的权限,停止从父文件夹继承所有权限,为所有文件设置合法所有者(指定用户)和文件夹,然后删除我给自己的权限,以便我可以对文件进行操作。我需要最后一步从所有文件和子文件夹中删除我自己,但目前它只是将我从 %userDir% 中删除,并将所有继承的权限保留在下面。这是 ICACLS 的一个明显缺点。有谁知道任何其他方式来实现这一目标?

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%username%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /inheritance:r
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
ICACLS "E:\Home Directories\%userDir%" /remove "MYDOMAIN\%username%"
Run Code Online (Sandbox Code Playgroud)

Eva*_*son 18

首先观察:每次您阻止继承时,您都会与未来的灵活性隔绝。我不惜一切代价避免阻塞继承。

例如,如果您需要用户能够列出顶级“E:\Home Directory”文件夹的内容,请考虑以下权限:

  • SYSTEM - 完全控制 - 应用于此文件夹、子文件夹和文件
  • BUILTIN\Administrators - 完全控制 - 应用于此文件夹、子文件夹和文件
  • BUILTIN\Authenticated Users - 读取和执行 - 仅应用于此文件夹

最后一个权限不会继承到子文件夹中。在每个子文件夹中,继承保持启用状态,您只需指定具有“修改”或“完全控制”权限的用户(取决于您对用户能够在其主目录中设置权限的感觉)。(通常我通过在非“高级”安全属性表中添加“经过身份验证的用户”,取消选中“读取”和“读取和执行”复选框来设置最后一个权限。然后我继续进入“高级”对话框并更改将该 ACE 的“应用到”设置为“仅此文件夹”。就点击次数而言,这是设置它的最简单方法。)

然后,您的脚本变为:

set /p userDir=Enter the login of the user's directory you're modifying permissions for. (i.e. jDoe)
TAKEOWN /f "E:\Home Directories\%userDir%" /r /d y
ICACLS "E:\Home Directories\%userDir%" /reset /T
ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(OI)(CI)F
ICACLS "E:\Home Directories\%userDir%" /setowner "MYDOMAIN\%userDir%" /T
Run Code Online (Sandbox Code Playgroud)

我强烈怀疑添加我在上面描述的“经过身份验证的用户”权限,并将继承设置为“仅此文件夹”将为您提供您正在寻找的功能,并且如果您发现,将为您提供未来的灵活性您必须设置将来可能需要继承到所有用户主目录的权限。

这是我的用户主目录、重定向的“我的文档”、“桌面”等文件夹以及漫游用户配置文件目录的 SOP。它工作得很好。

编辑

回复:您对 BUILTIN\Administrators 访问的评论

多年来,我与人们就我授予 BUILTIN\Administrators 访问权限的看法发生了各种争论,我的看法是:

  • 如果您可以访问他们的文件,那么解决某一类用户问题会更容易。“取得所有权”是一件痛苦的事情,如果存在大量文件,速度也会很慢。

  • 正如您在 ICACLS 中看到的那样,BUILTIN\Administrators 可以“分配”所有权(除了“获取”它),因此首先不能让 BUILTIN\Administrators 访问文件,因此不会增加“安全性”。

  • 除非您正在使用审计(并筛选潜在的大量误报条目),否则当 BUILTIN\Administrators 用户拥有他们不应该访问的文件的所有权时,不会有审计跟踪,复制它们,然后将文件返回给它们的“正确”所有者和权限。

  • 在 Microsoft 世界中,加密文件系统 (EFS) 旨在解决防止未经授权的 BUILTIN\Administrator 访问发生的问题。NTFS ACL 不能解决这个问题。(显然,EFS 并不是镇上唯一的节目。无论您如何切片,加密都是解决“限制网络管理员访问”问题的真正答案。)

在我看来,不指定 BUILTIN\Administrators 可以访问用户主目录(实际上,任何文件夹)意味着您增加了解决问题所需的复杂性和时间,同时提供了几乎没有真正的安全性(“少于无"因为它在没有安全感的地方给人一种虚假的安全感)。

我已经放弃试图通过逻辑来赢得人们的争论。对于某些人来说,这似乎是一个情感问题。这就像愚蠢的“拒绝/接收为”ACE,它被放置在 Exchange 组织的根目录中,以防止某些特权组打开用户邮箱。它没有提供真正的安全性(因为无需审计就可以根据需要删除/重新应用 ACE),一种虚假的安全感,并且在解决实际问题时会造成障碍。

即使您不喜欢我关于 BUILTIN\Administrators 具有访问权限的论点,您也希望通过在适当的情况下使用“仅此文件夹”继承来保持继承层次结构完整。在权限层次结构中阻止继承是一个明确的标志,表明有关设计的某些内容被“破坏”(倒置等)。