在 Windows(特别是 Windows Server 2012)中,我必须更改包含一堆子文件夹和文件的文件夹的所有权。
这里:递归更改所有者 Windows 7(在其他地方)人们建议使用“takeown”命令。问题是我需要将另一个用户设置为所有者,而不是我自己。但我不知道他们的密码,也不想告诉他们管理员密码,这样他们就可以自己以管理员权限运行此命令。
当我尝试为“takeown”命令指定目标用户时:takeown /S 127.0.0.1 /U someuser /F somedir /R
,它响应说用户凭据不能用于本地连接。
如何在 Windows 中递归地将另一个用户设置为目录/文件所有者?
答案1
takeown
如果您首先授予用户对对象的“取得所有权”权限,则用户无需管理员权限即可使用。(该权限位于WO
icacls 中,并包含在“完全控制”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 仅使用“获取所有权”系统范围的权限和/或文件级权限。)