我试图删除一个过时的SID(该帐户显然被删除)。
我试图在服务器(win2003)和客户端(win7)上运行以下内容:
icacls c:\path /remove *S-1-5-21-1883347182-1220252494-433279356-1095 /T
但我总是得到输出
Successfully processed 0 files; Failed processing 0 files
没有它做任何事情。 我怎样才能使它工作?
更新:
我已经使用AccessEnum来获取SID,因为icacls只会说“帐户名称和安全ID之间没有映射已完成”。 但不显示sid。
AccessEnum的输出是:
"Path" "Read" "Write" "Deny" "c:\path" "Administrators, S-1-5-21-1883347182-1220252494-433279356-1095, ..." "Administrators, S-1-5-21-1883347182-1220252494-433279356-1095, ..." ""
我对另一个类似的问题的build议
“也许你正在寻找SUBINACL, 在这里下载
subinacl.exe / help / cleandeletedsidsfrom提供以下内容:
/ cleandeletedsidsfrom =域[= DACL | SACL |业主| primarygroup |所有]
从DomainName中删除包含已删除(无效)SID的所有ACE您可以指定将扫描安全描述符的哪一部分(默认值为全部)如果所有者被删除,则新的所有者将是Administrators组。 如果主要组被删除,则新的主要组将成为用户组。 出现您可以根据需要将它用于/ file或/ share或/子目录
您可以使用SetACL轻松完成此操作 :
SetACL -on C:\Path -ot file -actn trustee -trst "n1:S-1-5-21-1883347182-1220252494-433279356-1095;s1:y;ta:remtrst;w:dacl"
我已经find了使用icacls的/save和/restore函数的最便携和最简单的方法:
icacls C:\ /save D:\creds.txt /T
然后我会使用Vim或其他一些相当于操作文件的gred/sed/awk 。 这使我可以删除SID,replaceSID等等。完成文件后,我就可以完成了
icacls C:\ /restore D:\creds.new.txt /T
那呢。 无需下载其他程序。 不需要学习另一个非标准的命令行语法。 我只是创build一个虚拟文件,使用GUI或任何完全按照我想要的方式制作ACL,使用/save来查看结果ACEstring的样子,然后将该ACEstring复制并粘贴到creds.new.txt 。
为什么不使用GUI? 调出文件夹属性并从安全设置中删除不需要的SID。 这对我来说总是有效的