清除以前安装的 Windows 中数据文件的 NTFS 权限

清除以前安装的 Windows 中数据文件的 NTFS 权限

我最近在新的 SSD 上全新安装了 Windows 10,并将我的旧数据文件恢复到驱动器上。问题是,尽管我告诉备份程序不要恢复权限,但最终它们还是被搞乱了。

我已经执行了takeown /f c:\src /r /d Y

我尝试进入 Explorer 的属性 -> 安全,添加我的用户,并赋予其对文件夹的“完全控制”权限,然后将其应用于子文件夹。Windows 运行了半个小时,据说这样做了,但属性:“只读”仍然被填满了一个方块。

我清除了“只读”框,并递归应用它,Windows 又运行了 15-20 分钟……但 fscking 框仍然被填满。

我认为我需要使用 ICACLS……但我害怕在没有指导的情况下使用。实际上,我过去每次使用 ICACLS 尝试解决这种情况时,结果都是问题变得更糟。我完全理解 Unix 风格的权限和所有权,但每次我犯了与 NTFS 权限纠结的错误时,我都会被 NTFS 权限打败。

过去,我曾使用传统的解决方法通过蛮力来解决这个问题:启动 Linux,递归地将目录(保存时间戳)复制到 FAT32 卷,重新启动 Windows,从 NTFS 卷中删除原始目录,然后从 FAT32 卷复制回来,清除 NTFS 权限。我现在不能这样做了……目录中包含太多 4 GB 以上的文件。

那么...我怎样才能实现类似的目标(大概使用 ICACLS)?

解决方案:

根据以下答案,以下是有效的方法。

icacls c:\src /reset /T /L /Q

takeown /f c:\src /r /d Y(为了以防万一,我在 icacls 之后重新运行了 takeown)

attrib -r -h -s c:\src /s /d

事实证明,这个答案,这只是 Windows 资源管理器的 UI 设计非常差的一个案例。简而言之,Windows 永远不会报告文件夹的内容“不是只读”。您可以使用复选框尝试清除或设置文件夹中包含的文件的只读状态,但复选框的状态本身并不表示有关其当前状态的任何有意义的信息。

显然,微软的理由是,每个 Explorer 文件夹都包含一个隐藏的系统文件,从用户的角度来看,该文件是只读的(如果该文件不存在,Explorer 会假装存在)。因此,每个文件夹都至少包含一个只读文件,即使用户故意放在那里的文件都不是只读的。唉。

无论如何,我的问题现在解决了。Gradle 和 Android Studio 能够构建文件而不会因权限错误而死机,因此重置 ACL、取得所有权以及清除只读和系统标志(如果存在的话)解决了该问题。

答案1

“属性:[✔] 只读”首先不是 NTFS 权限标志。它是一组完全独立的文件标志 - 通常称为“MS-DOS 属性”。(比较 Linux chattr。)

此属性以及“隐藏”、“系统”和“存档”实际上源自 DOS FAT 文件系统,因此您无法通过将文件复制到 FAT32 卷并复制回来而删除它们。

要以递归方式删除它们,

  1. 您必须拥有这些文件和文件夹的“写入属性”权限。

  2. attrib -r -h -s c:\src /s /d


这些属性可以在 Linux 上作为 xattr 访问system.ntfs_attrib_be,例如:

setfattr -n system.ntfs_attrib_be -h -v 0x00000020 <filename>

相关内容