在 Windows 中递归地将所有权更改为另一个用户

在 Windows 中递归地将所有权更改为另一个用户

在 Windows(特别是 Windows Server 2012)中,我必须更改包含一堆子文件夹和文件的文件夹的所有权。

这里:递归更改所有者 Windows 7(在其他地方)人们建议使用“takeown”命令。问题是我需要将另一个用户设置为所有者,而不是我自己。但我不知道他们的密码,也不想告诉他们管理员密码,这样他们就可以自己以管理员权限运行此命令。

当我尝试为“takeown”命令指定目标用户时:takeown /S 127.0.0.1 /U someuser /F somedir /R,它响应说用户凭据不能用于本地连接。

如何在 Windows 中递归地将另一个用户设置为目录/文件所有者?

答案1

takeown如果您首先授予用户对对象的“取得所有权”权限,则用户无需管理员权限即可使用。(该权限位于WOicacls 中,并包含在“完全控制”F集中。)

:: Grant "Full Control" (inheritable):
icacls C:\foo /grant "DOM\user:(oi)(ci)f"

:: Or, grant "Write Owner" only (inheritable):
icacls C:\foo /grant "DOM\user:(oi)(ci)(wo,s)"

:: Now the user can takeown the folder.

在较新的 Windows 版本中,您还可以使用icacls /setowner以下方法直接将所有权分配给另一个用户:

icacls C:\foo /setowner "DOM\user" /t /l

这不是takeown因为它通过与仅仅取得所有权完全不同的操作来执行实际更改,并且无论您当前对文件拥有什么权限,都需要管理员权限。

(具体来说,/setowner 需要“备份文件”和“恢复文件”系统范围的权限,默认情况下只有管理员和备份操作员才拥有这些权限。相比之下,takeown 仅使用“获取所有权”系统范围的权限和/或文件级权限。)

相关内容