![为什么我可以在 2K12R2 上使用 icals 设置所有权,但不能使用 set-acl 设置所有权?](https://linux22.com/image/695413/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%202K12R2%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20icals%20%E8%AE%BE%E7%BD%AE%E6%89%80%E6%9C%89%E6%9D%83%EF%BC%8C%E4%BD%86%E4%B8%8D%E8%83%BD%E4%BD%BF%E7%94%A8%20set-acl%20%E8%AE%BE%E7%BD%AE%E6%89%80%E6%9C%89%E6%9D%83%EF%BC%9F.png)
为什么get-acl -Path 'C:\Program Files' | set-acl -Path 'D:\Program Files'
以管理员身份使用时告诉我不允许设置所有权,但使用icACLs "C:\Program Files" /save Perms.txt
时却icACLs D:\ /restore Perms.txt
没有错误?
答案1
您偶然发现了安全令牌。
微软已经使用了一段时间TokenPrivilege
来管理更深层次的权利,例如“取得所有权”请参阅此代币权利列表
我认为icACLs
无需您这样做即可正确获取这些令牌。在 Powershell 中,您需要自己获取这些令牌。
网上有很多 HowTo。我个人用的是这个:https://www.raydbg.com/2017/Token-Privileges-in-PowerShell/
它的工作原理是加载一些默认的 Windows dll(kernel32.dll 和 advapi.dll),并使用这些 dll 为当前进程提供所需的 TokenPrivileges。这些 dll 包括
SeTakeOwnershipPrivilege
:SeRestorePrivilege