如何从命令行获取文件的所有权?

Joe*_*Joe 34 windows windows-xp ntfs command-line-interface access-control-list

我每隔一段时间就会遇到一个我需要拥有的文件。我通常cacls用于更改 ntfs 权限,但它似乎没有所有权。在 *nix 下,我会运行类似chown me:me <file>. 是否有相当于的窗口chown

Eva*_*son 26

您正在寻找“TAKEOWN.EXE”,它首先在 Windows Server 2003 中作为标准组件出现,而且我相信之前有一个资源包项目。它适用于 Windows 7,或许也适用于更新的系统。

takeown /f <some-file-or-folder> /r
Run Code Online (Sandbox Code Playgroud)

/r对指定文件夹的所有子级递归执行操作。与 不同subinacl,您必须以您尝试拥有所有权的用户身份登录;或者,您可以简单地将所有权分配给“管理员”组。

这是其文档的副本,保存在SS64 上

语法 TAKEOWN [/s Computer [/u [Domain]UserName [/p [Password]]]] /f FileName [/a] [/r [/d {Y|N}]]

Key /s Computer 远程计算机的名称或 IP 地址(不要使用反斜杠)。默认 = 本地计算机。此参数适用于命令中指定的所有文件和文件夹。

/u [Domain]UserName 使用指定用户帐户的权限运行脚本。默认 = 系统权限。

/p [Password] /u 参数中指定的用户帐户的密码。

/f FileName 文件名、UNC 路径或目录名模式。接受通配符 *

/a 将所有权授予管理员组而不是当前用户。

/r 对指定目录和子目录中的所有文件执行递归操作。

/d {Y | N} 取消当前用户对指定目录没有“列出文件夹”权限时显示的确认提示,而是使用默认值:Y:取得目录的所有权。N:跳过目录。请注意,您必须将此选项与 /r 选项结合使用。如果未指定 /a 参数,文件所有权将授予当前登录到计算机的用户。

takeown 命令不支持使用 (? 和 *) 的混合模式。

更改文件/文件夹的所有者后,您可以为文件分配完全权限,然后读取或删除它们。


crb*_*crb 25

subinacl是 Windows 系统管理员的强大工具,用于处理所有与所有权和 ACL 相关的工作。您可以将所有权更改为除您以外的任何人(您无法使用 GUI 执行此操作)。

subinacl /file test.txt /setowner=domain\foo
Run Code Online (Sandbox Code Playgroud)

这使您可以为您喜欢的任何用户设置权限,而无需成为管理员(我相信 takeown.exe 需要)。


小智 17

取得文件夹和其中所有内容的所有权和全部权利:

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T
Run Code Online (Sandbox Code Playgroud)

确保以管理员身份启动命令提示符!

我必须以管理员身份启动命令提示符,它在 Windows 8.1 中对我有用。由于 Windows 8.1 的尴尬,我不得不搜索“命令”,右键单击命令提示符图标。对我来说是为了看到“以管理员身份运行”选项。我有一个命令提示符固定在我的任务栏上,但右键单击它不会显示“以管理员身份运行”选项。

在 Windows 10 中,您应该可以使用“以管理员身份运行”作为右键单击选项。

Takeown 语法

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]
Run Code Online (Sandbox Code Playgroud)

takeown 参考

Icacls 语法

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]
Run Code Online (Sandbox Code Playgroud)

icacls 参考


小智 9

我知道这是一篇老的帖子,但有一种内置于 Windows 7 和更新版本的方法(可能在 Windows Vista 中,但我不确定)。从要重置的文件夹中的升级命令提示符运行以下命令。/t告诉icacls递归执行操作。

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t
Run Code Online (Sandbox Code Playgroud)

第一个命令将所有者重置为通过环境变量登录的人。当然,也可以使用特定名称来代替。

然后,第二个命令强制将权限沿树向下重新继承到所有子文件夹和文件。

希望这对未来的人有所帮助。


Hel*_*ein 6

您可能想看看SetACL,权限管理的瑞士军刀。下面是一个示例,说明如何将驱动器 C: 上所有文件的所有权分配给“管理员”并一次性删除所有子对象的继承保护:

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"
Run Code Online (Sandbox Code Playgroud)

您还可以添加-silent.