修复用户目录的所有权 Windows 2012 R2

Fix ownership on user directories Windows 2012 R2

我在未附加到活动目录的 Unix 服务器上有一堆用户目录,但是,几乎所有目录的名称都与它们在 AD 中的用户名相同。我正在将我的文件服务器迁移到绑定到 AD 的 Windows,但权限没有转移。

我需要做的是以某种方式chown (takeown) 将该用户文件夹中的所有目录转移到他们的 AD 用户。在 *nix 中,我会做这样的事情:

cd /home
find * --max-depth 0 -exec chown -R {} {} \;

但我似乎无法找到任何可以执行此操作的 PowerShell。我完成了 90% 的进度,但最终出现无法分配所有权等错误。这可能是由于 SeRestorePrivilege 等原因造成的,但设置这些似乎也无济于事。

有没有人有建议、解决方案等?

文件所有权在 Windows 中并不像在 Linux/Unix 中那么重要,因为 Windows ACL 比传统的 Unix 权限更通用。只需将所有权传递给 Administrators 组,并将完全权限授予 SYSTEM、Administrators 组和目录所在的用户,替换现有权限。使用 takeown and icacls 这样做。

Get-ChildItem 'D:\home' -Directory | ForEach-Object {
  $path = $_.FullName
  $user = $_.Name

  & takeown /f "$path" /r /a
  & icacls "$path" '/grant:r' 'SYSTEM:(OI)(CI)F' 'Administrators:(OI)(CI)F' "DOMAIN${user}:(OI)(CI)F"
}

根据需要为其他 users/groups 添加 read/execute 权限。