fusermount 权限被拒绝

fusermount 权限被拒绝

我曾在 Linux Mint 机器上使用 sshfs 挂载了互联网上另一台机器上的目录。这开箱即用。

然后我在 Ubuntu 机器(Ubuntu 22.04.3 LTS)上尝试了完全相同的命令,并收到此错误:

~$ sshfs -v <some machine on the interwebs> ~/fusessh/
fusermount3: mount failed: Permission denied

这些是我的 Ubuntu 机器上的主目录中的权限:

drwx------ 27 my_user group_a    4096 Sep 15 14:36 .
drwx------  2 my_user group_b  4096 Aug 23 13:06 Desktop
drwx------  2 my_user group_b  4096 Aug 23 13:06 Documents
drwx------  2 my_user group_b  4096 Aug 23 13:06 Downloads
drwx------  2 my_user group_b  4096 Sep 12 14:04 fusessh

my_user 同时在 group_a 和 group_b 中。

~$ groups thsi
my_user : group_b sudo group_a

根据评论进行编辑:

~$ ls -l /bin/fusermount3
-rwsr-xr-x 1 root root 35200 Mar 23  2022 /bin/fusermount3

在沙盒模式下:

~$ unshare --map-root-user
~# ls -l /bin/fusermount3 
-rwsr-xr-x 1 nobody nogroup 35200 Mar 23  2022 /bin/fusermount3

答案1

运行id以仔细检查本地和远程系统上帐户的用户和组 ID。我猜它们是不同的,即使名称相同。在这种情况下,就other权限而言, FUSE 正尝试以用户身份修改本地挂载点chmod。因此,您需要chmod o+rx ~/fusessh。此挂载点的模式(权限)将由您挂载的文件系统的根模式修改,否则如果没有挂载任何内容,目录应该为空,因此授予other读取和执行权限不会带来太大的安全风险。

为了卸载,每个目录在挂载路径中需要具有执行权限。运行realpath ~/fusessh,然后确保该路径中的每个目录都已设置执行位other(仍然假设每个系统上的 UID/GID 不同)。

注意:我现在发布这篇文章是因为我今天遇到了完全相同的问题。老实说,我不知道 FUSE 的底层工作原理。在我的例子中,两个系统上的 UID 相同,但 GID 不同。尽管如此,在我授予权限之前,什么都没有起作用other。我尝试了uidgiddefault_permissionsmount 选项,但这些选项都没有解决问题。在我看来,这些 mount 选项只改变了它们各自的属性文件系统已挂载,但 FUSE 在远程系统的 UID/GID 下运行坐骑最终确定。再次强调,这只是推测,但它符合行为。

相关内容