我正在尝试重置用户目录的权限,并在脚本的最后一步遇到了一些麻烦。 我的脚本基本上取得了整个用户目录的所有权,重置了目录中所有文件和文件夹的权限,显式授予了我需要的权限,停止了从父文件夹inheritance所有权限,为所有文件设置合法的所有者(指定用户)和文件夹,然后删除我给自己的权限,以便我可以在文件上操作。 我需要最后一步将自己从所有文件和子文件夹中删除,但目前它只是将我从%userDir%中删除,并将所有inheritance的权限留在下面。 这是ICACLS的一个明显缺陷。 有谁知道有任何其他方式来完成这个?
set /p userDir=Enter the login of the user's directory you're modifying permissions for. (ie jDoe) TAKEOWN /f "E:\Home Directories\%userDir%" /r /dy 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%"
首先观察一下:每当你阻止inheritance时,你就会从未来的灵活性中解脱出来。 我不惜一切代价避免阻塞inheritance。
如果您需要用户能够列出顶级“E:\ Home目录”文件夹的内容,例如,请考虑以下权限:
最后一个权限不会inheritance到子文件夹中。 在每个子文件夹中,inheritance保持启用状态,您只需指定用户具有“修改”或“完全控制”权限(具体取决于用户在其主目录中设置权限的方式)。 (通常我通过在非“高级”安全性属性表中添加“Authenticated Users”来设置最后一个权限,取消选中“Read”和“Read and Execute”checkbox,然后进入“Advanced”对话框,将该ACE的“应用于”设置改为“仅此文件夹”,就点击次数而言,这是最简单的方法。
然后,你的脚本变成:
set /p userDir=Enter the login of the user's directory you're modifying permissions for. (ie jDoe) TAKEOWN /f "E:\Home Directories\%userDir%" /r /dy 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
我强烈怀疑,我上面描述的“Authenticated Users”权限的添加将inheritance设置为“仅此文件夹”将会给你你正在寻找的function,如果你发现它会给你以后的灵活性您必须设置一个权限,以便将来可能需要inheritance所有用户主目录。
这是我的用户主目录SOP,redirect“我的文档”,“桌面”等文件夹,以及漫游用户configuration文件目录。 它工作很好。
编辑
re:关于BUILTIN \ Administrators访问的评论
我曾经和人们多次讨论过我多年来对BUILTIN \ Administrators的访问权限,我的看法是:
如果你能得到他们的文件,解决某类用户问题就容易得多。 “拥有所有权”是一种痛苦,如果存在大量文件,则会很慢。
正如你在ICACLS看到的,BUILTIN \ Administrators可以“分配”所有权(除了“取”),所以没有“安全”,因为没有BUILTIN \ Administrators可访问的文件。
除非您正在使用审计function(并且筛选可能大量的假阳性条目),否则当BUILTIN \ Administrators用户获取他们不应该访问的文件的所有权时,将不会有审计线索,然后复制它们将文件返回给他们的“合适”所有者和权限。
在微软的世界里,encryption文件系统(EFS)是为了解决保持未经授权的BUILTIN \ Administrators访问的问题。 NTFS ACL不能解决这个问题。 (很明显,EFS并不是城里唯一的展示,无论你如何分割,encryption是解决“限制networkingpipe理员访问”问题的真正答案。)
在我看来,没有指定BUILTIN \ Administrators访问用户主目录(实际上是任何文件夹)意味着你增加了解决问题所需的复杂性和时间,同时提供的实际安全性不足(“小于” “因为在没有安全的情况下它会带来虚假的安全感)。
我已经放弃了试图通过逻辑来赢得人们的争论。 这似乎是一些人的情绪问题。 这就像被放置在Exchange组织根目录的愚蠢的“Deny / Receive As”ACE一样,以防止某些特权组打开用户邮箱。 它没有提供真正的安全性(因为无需审计就可以根据需要删除/重新应用ACE),虚假的安全感,并且在解决实际问题的时候阻碍。
即使你不喜欢我关于BUILTIN \ Administrators有权访问的观点,也希望通过适当的方式使用“仅此文件夹”inheritance来保持inheritance层次。 阻止权限层次结构中的inheritance是一个肯定的信号,表明devise的某些内容被“破坏”(倒转等)。
首先,感谢您的脚本摘录。 我一直在做同样的事情,但卡在一个不同的地方。 在我的SBS 2008盒子里,下面的代码适用于我(当然,假设它运行的是提升的)。 我做了一个由操作系统创build的全新(默认)用户文件夹的icacls%userdir%/ t,并在运行此脚本之后将它与文件夹的icacls%userdir%/ t进行比较,它看起来像所有的“O”和我是“是正确的。 希望它也能为你工作。
set /p userDir=Enter the login of the user's directory you're modifying permissions for. (ie jDoe) TAKEOWN /f "E:\Home Directories\%userDir%" /r /dy ICACLS "E:\Home Directories\%userDir%" /reset /T ICACLS "E:\Home Directories\%userDir%" /grant:r "MYDOMAIN\%userDir%":(oi)(ci)f ICACLS "E:\Home Directories\%userDir%\*.*" /grant:r "SYSTEM":(OI)(CI)F /grant:r "MYDOMAIN\%userDir%":(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%" /t
最好的祝福,
-d