为什么 SSHFS 不让我查看挂载的目录?

Jan*_*ard 36 linux permissions fuse sshfs distributed-filesystems

我使用 SSHFS 在远程服务器上挂载一个目录。客户端和服务器上都有一个用户 xxx。两个盒子上的 UID 和 GID 是相同的。

我用

sshfs -o kernel_cache -o auto_cache -o reconnect -o compression=no \ 
      -o cache_timeout=600 -o ServerAliveInterval=15 \
      xxx@yyy.yyy.yyy.yyy:/mnt/content /home/xxx/path_to/content
Run Code Online (Sandbox Code Playgroud)

将目录挂载到远程服务器上。当我在客户端上以 xxx 身份登录时,我没有任何问题。我可以 cd 进入 /home/xxx/path_to/content。

但是当我以另一个用户 zzz 登录客户端时

$ ls -l /home/xxx/path_to
Run Code Online (Sandbox Code Playgroud)

我明白了

d?????????   ? ?    ?        ?                ? content
Run Code Online (Sandbox Code Playgroud)

并在

$ ls -l /home/xxx/path_to/content
Run Code Online (Sandbox Code Playgroud)

我得到

ls: cannot access content: Permission denied
Run Code Online (Sandbox Code Playgroud)

当我做

$ ls -l /mnt
Run Code Online (Sandbox Code Playgroud)

在我得到的远程服务器上

drwxr-xr-x 6 xxx xxx  4096 2011-07-25 12:51 content
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?权限对我来说似乎是正确的。我错了吗?

Jan*_*ard 45

我自己找到了答案。问题是我没有使用选项allow_other。

sshfs -o allow_other -o kernel_cache -o auto_cache -o reconnect \
  -o compression=no -o cache_timeout=600 -o ServerAliveInterval=15 \
  xxx@yyy.yyy.yyy.yyy:/mnt/content /home/xxx/path_to/content
Run Code Online (Sandbox Code Playgroud)

要使用此选项,您必须在 /etc/fuse.conf 中设置选项 user_allow_other。当我这样做时,我遇到了另一个问题。文件 /etc/fuse.conf 在我的 Ubuntu 机器上没有其他用户的读取权限。所以我也改变了它,现在我可以用任何用户访问该目录。

  • /etc/fuse.conf 文件不应该为每个人提供读取选项。目的是将自己添加到保险丝组,以便您可以通过组权限读取它。 (5认同)