为什么我无法更改挂载 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
,而不是ntfs
或ntfs-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。