为什么我无法更改挂载 ntfs 驱动器的所有权?
我在我的文件中给出uid=1000,gid=1000,
了 etc /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 驱动器的所有权?
您正在使用 NTFS-3g,一个用户空间NTFS 文件系统驱动程序。
在内核和任何此类用户空间文件系统驱动程序之间,有一个称为 FUSE 的接口层(USERspace 中的 Filesystem 的简称)。
请注意,文件系统类型被列为
fuseblk
,而不是ntfs
或ntfs-3g
。当您看到type fuseblk (some options)
时,括号内的选项是FUSE 选项,而不是实际的文件系统选项。看看man 8 fuse
你是否想知道更多细节。具体来说,
user_id=0
意思是“这个 FUSE 文件系统是由 root 安装的”,仅此而已。实际的挂载选项被交给文件系统驱动程序进程,它可以对它们做任何事情。(FUSE 只允许挂载文件系统的用户访问它,除非allow_other
指定了 FUSE 选项。)不幸的是,FUSE 接口层不允许在
mount
命令输出中显示基于 FUSE 的文件系统的实际挂载选项,这与经典的基于内核的文件系统显示它们的方式相同。相反,如果您运行
pgrep -a ntfs-3g
,您将看到ntfs-3g
文件系统驱动程序进程及其命令行选项,其中将包括您指定的挂载选项。例如,在我的系统上,我有这些行
/etc/fstab
:所以,我会看到这些过程: