无法更改安装 ntfs 驱动器的所有权

无法更改安装 ntfs 驱动器的所有权

为什么我无法更改挂载 ntfs 驱动器的所有权?

uid=1000,gid=1000,在我的文件中给出了等/etc/fstab,但发现它不起作用。所以我在命令行上测试它:

root@host:~# mount | grep /mnt/tmp1 | wc
      0       0       0

root@host:~# mount -o uid=1000 /dev/nvme0n1p4 /mnt/tmp1/

root@host:~# mount | grep /mnt/tmp1
/dev/nvme0n1p4 on /mnt/tmp1 type fuseblk (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096)

root@host:~# umount /mnt/tmp1

root@host:~# mount -o user_id=1000 /dev/nvme0n1p4 /mnt/tmp1/

root@host:~# mount | grep /mnt/tmp1
/dev/nvme0n1p4 on /mnt/tmp1 type fuseblk (rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096)

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 21.10
Release:        21.10
Codename:       impish

$ apt-cache policy mount
mount:
  Installed: 2.36.1-8ubuntu1
  Candidate: 2.36.1-8ubuntu2
  Version table:
     2.36.1-8ubuntu2 500
        500 http://archive.ubuntu.com/ubuntu impish-updates/main amd64 Packages
 *** 2.36.1-8ubuntu1 500
        500 http://archive.ubuntu.com/ubuntu impish/main amd64 Packages
        100 /var/lib/dpkg/status

我错过了什么吗?
为什么我无法更改挂载 ntfs 驱动器的所有权?

答案1

您正在使用 NTFS-3g,用户空间NTFS 文件系统驱动程序。

在内核和任何此类用户空间文件系统驱动程序之间,有一个称为 FUSE 的接口层(USERspace 中文件系统的缩写)。

请注意,文件系统类型列为fuseblk,而不是ntfsntfs-3g。当你看到时type fuseblk (some options),括号内的选项是保险丝选项,不是实际的文件系统选项。看看man 8 fuse你是否想了解更多细节。

具体来说,这user_id=0意味着“这个 FUSE 文件系统是由 root 挂载的”,仅此而已。实际的挂载选项将交给文件系统驱动程序进程,该进程可以对它们执行任何操作。 (FUSE 仅允许安装该文件系统的用户访问它,除非allow_other指定了 FUSE 选项。)

不幸的是,FUSE 接口层不允许在mount命令输出中显示基于 FUSE 的文件系统的实际挂载选项,就像经典的基于内核的文件系统显示它们一样。

相反,如果您运行pgrep -a ntfs-3g,您将看到ntfs-3g文件系统驱动程序进程及其命令行选项,其中将包括您指定的安装选项。

例如,在我的系统上,我有以下几行/etc/fstab

UUID="A268B5B668B599AD" /win/c          ntfs-3g defaults,windows_names,inherit,nofail   0   0
UUID="56A31D4569A3B7B7" /win/d          ntfs-3g defaults,windows_names,inherit,nofail   0   0

因此,我将看到这些过程:

$ pgrep -a ntfs-3g
775 /sbin/mount.ntfs-3g /dev/nvme0n1p3 /win/c -o rw,windows_names,inherit
1008 /sbin/mount.ntfs-3g /dev/sdb2 /win/d -o rw,windows_names,inherit

答案2

这是我的 FSTAB 条目。请注意执行选项:

UUID=66D6934FD6931DFD /mnt/SeagateExpansionDrive ntfs-3g auto,users,permissions,exec,x-gvfs-show 0 0

通过以上内容,我可以 chown、chmod 和 exec shell 脚本。我正在运行Ubuntu。

相关内容