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のFile Systemの略)と呼ばれるインタフェース層があります。

ファイルシステムタイプはfuseblk、でない、またはntfsでマークされますntfs-3g。が表示されている場合、type fuseblk (some options)括弧内のオプションは次のとおりです。ヒューズオプション、実際のファイルシステムオプションではありません。man 8 fuse詳細については、ご確認ください。

具体的には、これはuser_id=0「このFUSEファイルシステムがルートによってマウントされる」ことを意味し、それ以上ではありません。実際のマウントオプションはファイルシステムドライバプロセスに提供されており、これにより何でもできます。 (allow_otherFUSEオプションを指定しない限り、FUSEはファイルシステムをマウントしたユーザーにのみファイルシステムアクセスを許可します。)

残念ながら、FUSEインタフェース層では、mountFUSEベースのファイルシステムの実際のマウントオプションをコマンド出力に表示することはできません。これは、既存のカーネルベースのファイルシステムが表示するのと同じ方法です。

代わりに実行すると、指定したインストールオプションを含むファイルシステムドライバプロセスと対応するコマンドラインオプションが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シェルスクリプトを使用できます。私はUbuntuを実行しています。

関連情報