我有一个双启动系统,在同一台物理机器上安装了 Ubuntu Server 和 Windows Server,并带有多个其他驱动器(一个 SSD 和 2 个 HDD)。它们都安装了相同的驱动器,但是由于驱动器最初是在 Windows 上创建的,并且我无法在 Windows 中对这些驱动器授予“所有人”“完全控制”权限,我想允许我的 Ubuntu 操作系统的根用户“完全控制” ' 我所有的 NTFS (msftdata) 分区,所以我可以为 Linux 帐户单独创建所需的权限。
与 NT-AUTHORITY/SYSTEM 始终可以完全控制驱动器的方式相同,即使在 Windows 计算机上不存在 NTFS 权限中列出的 Windows 用户,也可以通过利用 NT-AUTHORTY/SYSTEM 帐户的权限来恢复数据,因为它是跨 Windows 机器的通用 SID(安全标识符)。
有没有办法可以将 FULL-CONTROL 权限授予 Linux 系统的 root 用户对我所有的 NTFS 驱动器?在 Windows 中创建一个名为 root 的特定帐户,可能具有 LDAP 属性?
请记住,这些操作系统不能同时运行,因为它们在同一个物理系统上并且没有以任何方式虚拟化。我在启动时启动 Windows 或启动 Linux。
谢谢 :)
您实际上不需要这样做——Linux 上的 root 始终具有忽略所有本地文件权限的特权,这也适用于 NTFS。这意味着 root 不需要在 ACL 中列出来修改它
setfacl
:它总是可以这样做。(权限和 ACL 不由文件系统本身强制执行 - 它们仅由正在访问它的操作系统强制执行。文件系统只是一个数据结构,不能主动阻止操作系统在方便时完全忽略它。当调用者时,Windows 将忽略它们有 SeBackupPrivilege,当调用者有 CAP_DAC_OVERRIDE 时,Linux 会忽略它们,依此类推。
例如,默认情况下,Linux NTFS-3G 文件系统驱动程序并不完全强制执行 NTFS ACL,而是提供对所有Linux UID 的相同访问权限,合成文件模式完全基于挂载选项。如果您看到在 Linux 上强制执行 NTFS ACL,那就是您启用了!)
也就是说,
setfacl
使用起来肯定不方便,因为它是用来控制 POSIX ACL 而不是 NT ACL,所以你可能应该做的是告诉 NTFS-3G 如何将每个 Linux UID 映射到 Windows SID:.NTFS-3G
在 NTFS 卷的根目录下创建一个目录。在该目录中,创建一个名为
UserMapping
(无文件扩展名)的文本文件,其内容类似于:使用映射文件,Linux NTFS-3G 驱动程序将能够将您的 Linux 帐户视为与您的 Windows 帐户相同的实体,就文件权限而言。(帐户名称不需要匹配。)
如果您想授予对仅存在于 Linux 上的帐户的访问权限,您仍然可以以 root 身份使用 chown/chmod/setfacl - 或者您可以在 Windows 上创建虚拟帐户,在文件中为其 SID 添加映射,并能够授予访问权限通过 Windows ACL 编辑器。
只要 SYSTEM 本身存在于它们的 ACL 中。如果您从文件的 ACL 中删除 SYSTEM,则在此帐户下运行的用户空间进程将失去对该文件的访问权限,就像任何其他帐户一样。
嗯,这是一种可能的方法,但是将进程提升到 SYSTEM 并不是 Microsoft 直接支持的,最终需要各种“神奇”工具。此外,您实际上不能依赖它——如果有人从 ACL 中删除了管理员,他们同样可以从 ACL 中删除 SYSTEM。
取而代之的是,Windows 中的大多数“恢复”操作都基于具有操作系统级别权限的管理员来更改文件所有权而不管 ACL (SeTakeOwnershipPrivilege),以及允许文件所有者设置新 ACL 而不管现有 ACL 的标准 ACL 逻辑。文件管理器甚至会提供为您执行此操作。
替代方法包括激活 SeBackupPrivilege,这是另一个完全绕过读取操作权限检查的操作系统级权限;还有一个用于写操作。默认情况下,所有管理员都可以按需使用此权限(尽管与 Linux 上的 root 不同,它并非始终处于活动状态)。