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

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

我时常会遇到需要取得所有权的文件。我通常使用它cacls来更改 ntfs 权限,但它似乎不具备所有权。在 *nix 下,我会运行类似 的程序chown me:me <file>。Windows 上是否有与 等效的程序chown

答案1

亚蛋白是 Windows 系统管理员的强大工具,用于处理与所有权和 ACL 有关的所有事务。您可以将所有权更改为除您之外的任何人(你不能用 GUI 来做这件事)。

subinacl /file test.txt /setowner=domain\foo

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

答案2

您正在寻找“TAKEOWN.EXE”,它最初是 Windows Server 2003 中的标准组件,我相信之前是资源工具包项目。它在 Windows 7 以及可能更新的系统上可用。

takeown /f <some-file-or-folder> /r

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

以下是其文档的副本,保存于SS64

语法 TAKEOWN [/s 计算机 [/u [域]用户名 [/p [密码]]]] /f 文件名 [/a] [/r [/d {Y|N}]]

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

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

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

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

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

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

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

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

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

答案3

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

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

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

我必须以管理员身份启动命令提示符,它在 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}]]

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]]

icacls 参考

答案4

你可能想看看设置ACL,权限管理的瑞士军刀。下面是例子如何将驱动器 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"

您也可以添加-silent

相关内容