如何在不导入权限的情况下将文件和文件夹从 USB ntfs 文件系统复制到内部 ext4?

如何在不导入权限的情况下将文件和文件夹从 USB ntfs 文件系统复制到内部 ext4?

我有一个 USB 磁盘,我用来在不同操作系统的计算机之间同步数据(目前使用一个很好的 GUI 实用程序,称为免费文件同步),其格式为 NTFS(优于 FAT32,因为它更好地支持长文件名以及大小写的使用)。当我将文件从它复制到我的 Linux 计算机时,不幸的是我得到了所有可执行文件(以及可写和可读),这是一个问题。

我该如何解决这个问题?

创建一个 fstab 条目,它将仅有的应用于该 USB ntfs 磁盘(或使用手动命令,即sudo mount ...)以使用 644 等访问权限挂载它,但是还给我对该 USB 磁盘的完全访问权限(即没有 root 所有权)?

使用手动命令(例如,而不是 Nautilus 文件管理器)进行复制(最好是同步)没有导入ntfs权限的文件?我尝试rsync -rltgoD /source/ /target/省略 -p (保留权限)但没有成功。

理想情况下,我更喜欢 GUI 同步工具(例如免费文件同步)它提供了这个选项,但我想那里没有。

如果没有这样的 GUI 工具,我可能会更喜欢类似的东西快速手动调整,在此同步场景中一劳永逸

否则,我现在可用的选项似乎会像往常一样使用 FreeFileSync 继续同步/复制任务,然后运行终端命令find . -type f -exec chmod -R 644 {} \;来解决由于 ntfs 文件系统将所有可读权限也视为可执行文件而引起的问题。

答案1

这是一个非常常见的问题,肯定是重复的。
当您安装 NTFS 时,您可以设置文件权限 - 不是在文件级别。
sudo mount -t ntfs -o rw,auto,user,fmask=0133,dmask=0000 /dev/whatever /mnt/whatever
如果你在 /etc/fstab 中放置了正确的行,你就可以完全使用 GUI。
dmask用于目录掩码(777 - 掩码),fmask用于文件掩码(现在 0777-0133 = 0644)。
数字的含义是:

  • 0(特殊NTFS不使用IMO)
  • 6(所有者权利)
  • 4(右组)
  • 4(任何其他人的权利)。

数字含义:(必须将这些数字相加才能拥有多个权限)

  • 4 - 正确阅读
  • 2 - 写正确
  • 1 - 执行权

目录必须是可执行的才能进入它。

如果您想保留“自动挂载”功能,但想更改文件权限,请在 /etc/fstab 中写入适当的行,例如:
UUID=02C8AE4FC8AE40B1 /mnt/usbntfs ntfs-3g fmask=0111 0 1
含义:

  • UUID :磁盘的唯一标识符。您可以检查sudo blkid
  • 第二个参数是系统自动挂载的位置(不幸的是,移除 USB 后该子目录不会被删除)。
  • 第三个是文件系统类型
  • 第四个参数是您要更改的标志(现在我们只禁止文件的执行位)
  • 第5个和第6个参数在这里不相关,只需输入0 1

问题的其他部分:

permissions在Linux下,如果你添加参数,就可以“玩弄”NTFS分区的权限和所有权,例如
UUID=02C8AE4FC8AE40B1 /mnt/usbntfs ntfs-3g permissions 0 1
注意:这与fmask和dmask不兼容。但我不知道您如何看待,也不知道这对 Windows 下的权利有何影响。

相关内容