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


34

我使用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

将目录安装在远程服务器上。在客户端上以xxx身份登录时,我没有任何问题。我可以CD到/ home / xxx / path_to / content。

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

$ ls -l /home/xxx/path_to

我明白了

d?????????   ? ?    ?        ?                ? content

继续

$ ls -l /home/xxx/path_to/content

我懂了

ls: cannot access content: Permission denied

当我做

$ ls -l /mnt

在我得到的远程服务器上

drwxr-xr-x 6 xxx xxx  4096 2011-07-25 12:51 content

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


以xxx用户身份登录,并向我们提供输出ls -ld /home/xxx/path_to/content
量子

Answers:


42

我自己找到了答案。问题是我没有使用选项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

要使用此选项,您必须在/etc/fuse.conf中设置选项user_allow_other。当我这样做时,我还有另一个问题。文件/etc/fuse.conf在我的Ubuntu盒子上没有其他用户的读取权限。因此,我也进行了更改,现在我可以与任何用户一起访问目录。


5
/etc/fuse.conf文件不应为所有人提供读取选项。目的是将您自己添加到保险丝组中,以便您可以通过组权限进行读取。
Jherico 2012年

1
确认从用户相同的UID和GID访问服务器时,我的用户需要在客户端的etc / fuse.conf中启用user_allow_other,才能访问我的主目录之外的文件夹。在客户端的保险丝组中足以让我在Ubuntu上读取/etc/fuse.conf,因为我发现文件设置为rw_r______ root:fuse

1
如果您打算像上面的答案所建议的那样使用allow_other挂载选项,请注意Linux内核有一个尚未解决的安全漏洞,会影响FUSE。见github.com/libfuse/libfuse/issues/15
MountainX
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.