我有一个 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 下的权利有何影响。