授予 NTFS(msftdata)驱动器权限,以允许 Linux 用户读取、写入和执行

授予 NTFS(msftdata)驱动器权限,以允许 Linux 用户读取、写入和执行

我有一个双启动系统,在同一台物理机上安装了 Ubuntu Server 和 Windows Server,并配有多个其他驱动器(一个 SSD 和 2 个 HDD)。它们都安装了相同的驱动器,但是由于这些驱动器最初是在 Windows 上创建的,我无法在 Windows 中授予“每个人”对这些驱动器的“完全控制”权限,因此我想允许我的 Ubuntu OS 的根用户对我的所有 NTFS(msftdata)分区进行“完全控制”,以便我可以为 Linux 帐户单独创建所需的权限。

即使 NTFS 权限中列出的 Windows 用户不存在于 Windows 计算机上,NT-AUTHORITY/SYSTEM 也始终对驱动器拥有完全控制权,同样,由于它在 Windows 计算机上具有通用 SID(安全标识符),因此可以利用 NT-AUTHORTY/SYSTEM 帐户的权限恢复数据。

有没有办法可以授予 Linux 系统的 root 用户对我的所有 NTFS 驱动器的完全控制权限?也许可以在 Windows 中创建一个名为 root 的特定帐户,并具有 LDAP 属性?

请记住,这些操作系统无法同时运行,因为它们位于同一物理系统上,并且未以任何方式虚拟化。我在启动时要么启动 Windows,要么启动 Linux。

谢谢 :)

答案1

我想允许我的 Ubuntu 操作系统的 root 用户对我的所有 NTFS(msftdata)分区进行“完全控制”,这样我就可以为 Linux 帐户单独创建所需的权限

您实际上不需要这样做 – Linux 上的 root 始终具有忽略所有本地文件权限的权限,这也适用于 NTFS。这意味着 root 无需在 ACL 中列出即可使用 进行修改setfacl:它始终可以这样做。

(权限和 ACL 不由文件系统本身强制执行 - 它们仅由访问它的操作系统强制执行。文件系统只是一个数据结构,无法主动阻止操作系统在方便时完全忽略它。当调用者具有 SeBackupPrivilege 时,Windows 将忽略它们,当调用者具有 CAP_DAC_OVERRIDE 时,Linux 将忽略它们,等等。

例如,默认情况下,Linux NTFS-3G 文件系统驱动程序不会完全强制执行 NTFS ACL,而是将相同的访问权限授予全部Linux UID,具有完全基于挂载选项的合成文件模式。如果您看到 NTFS ACL 在 Linux 上强制执行,那就是您启用了此功能!)

话虽如此,但setfacl它使用起来肯定不方便,因为它是用来控制 POSIX ACL 而不是 NT ACL 的,所以你应该告诉 NTFS-3G 如何将每个 Linux UID 映射到 Windows SID

  1. .NTFS-3G在 NTFS 卷的根目录下创建一个名为的目录。

  2. 在该目录中,创建一个名为(无文件扩展名)的文本文件,UserMapping其内容类似于:

    <uid>:<gid>:<sid>
    1000:1000:S-1-5-21-1833069642-4243175381-1340018762-1002
    

有了映射文件,Linux NTFS-3G 驱动程序将能够将您的 Linux 帐户视为同一实体就文件权限而言,作为您的 Windows 帐户。(帐户名称无需匹配。)

如果您想授予仅存在于 Linux 上的帐户访问权限,您仍然可以以 root 身份使用 chown/chmod/setfacl - 或者您可以在 Windows 上创建虚拟帐户,在文件中添加其 SID 的映射,并能够通过 Windows ACL 编辑器授予访问权限。

即使 NTFS 权限中列出的 Windows 用户在 Windows 计算机上不存在,NT-AUTHORITY/SYSTEM 也始终对驱动器拥有完全控制权,

仅当 SYSTEM 本身存在于其 ACL 中时才有效。如果从文件的 ACL 中删除 SYSTEM,则在此帐户下运行的用户空间进程将失去对该文件的访问权限,就像任何其他帐户一样。

由于 NT-AUTHORTY/SYSTEM 帐户在 Windows 机器上具有通用 SID(安全标识符),因此可以利用其权限恢复数据。

好吧,这是一种可行的方法,但将进程提升到 SYSTEM 权限并不是 Microsoft 直接支持的方法,最终需要各种“神奇”工具。此外,您实际上不能依赖它 - 如果有人从 ACL 中删除了管理员,他们同样可以从 ACL 中删除 SYSTEM。

相反,Windows 中的大多数“恢复”操作都基于管理员拥有操作系统级别的权限来更改文件所有权(无论 ACL 如何)(SeTakeOwnershipPrivilege),以及允许文件所有者设置新 ACL(无论现有 ACL 如何)的标准 ACL 逻辑。文件管理器甚至会主动为您执行此操作。

替代方法包括激活 SeBackupPrivilege,这是另一种操作系统级别的权限,可以完全绕过读取操作的权限检查;写入操作也有一个权限检查。默认情况下,所有管理员都可以按需使用此权限(尽管与 Linux 上的 root 不同,它并非始终处于活动状态)。

相关内容