Mount

無法更改安裝 ntfs 驅動器的所有權

  • November 16, 2021

為什麼我無法更改掛載 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,而不是ntfsntfs-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

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

引用自:https://unix.stackexchange.com/questions/677682