我每天都会通过 ssh 连接一个远程服务器。我会在服务器上编辑很多文件,所以我习惯sshfs
这样做。
我使用 挂载目录$ sshfs user@host:/var/www/html ~/sshfs/html
。在过去的几个月里,这种方法一直很有效,而且仍然应该现在仍然可以工作。但是,我遇到了一些奇怪的不一致的访问问题。
案例1-Sublime Text:我完全无法使用我选择的编辑器 (Sublime Text) 保存任何内容。我也无法使用另存为来创建新文件~/sshfs/html/
。我可以打开文件,但不能保存。
当尝试保存时,Sublime 在警告框中显示以下消息:
Unable to save ~/sshfs/html/foo
Error: rename(/home/ben/sshfs/html/.subl219.tmp, /home/ben/sshfs/html/foo) failed
errno: 1
案例2——凯特:我尝试在 Kate 中打开一些东西,看看 Sublime 是否只是愚蠢而已。我仍然无法编辑现有文件,但我可以毫无问题地创建新文件在凯特。
当 Kate 尝试保存编辑时,在警告框中显示以下消息:
The document could not be saved, as it was not possible to write to /home/ben/sshfs/html/foo.
Check that you have write access to this file or that enough disk space is available.
案例 3-Vim:事情开始变得不那么合理了。我尝试在本地机器上使用 Vim
$ vim ~/sshfs/html/foo
令人惊讶的是,我使用 Vim 完全没有遇到任何问题。它可以毫无问题地打开、编辑、保存和创建文件。使用 shell 命令(例如)时也没有遇到任何问题touch
。
需要考虑的事情
- 群组访问
- 该组
developers
有权访问我想要编辑的所有文件。 - 我的本地用户是该组的成员
developers
。 - 我的远程用户(我通过 SSH 登录的帐户)是该组的成员
developers
。 - 该组
developers
在服务器和我的本地机器上都存在,并且具有相同的 ID。
- 该组
- 其他事情
- 我在几台服务器上有多个目录,我都是这样使用的。其他服务器上的其他目录都没有给我带来任何问题。
$ ls -l
在挂载点内的本地主机上运行:
输出
drwxrwxr-x 1 root developers 4096 Sep 8 06:47 admin
drwxrwxr-x 1 root developers 4096 Jun 4 2013 agent_submit
-rwxrwxr-x 1 root developers 6605 Jun 4 2013 authorize.php
$ ls -l
通过 ssh shell 在远程主机上运行:
输出
drwxrwxr-x 10 root developers 4096 Sep 8 06:47 admin
drwxrwxr-x 2 root developers 4096 Jun 4 2013 agent_submit
-rwxrwxr-x 1 root developers 6605 Jun 4 2013 authorize.php
答案1
sshfs -o workaround=rename user@host:/var/www/html ~/sshfs/html
资料来源: