利用 FUSE/SSHFS 真是可以作些好棒的壞事。
Windows network (SMB/CIFS) 再怎麼效率不彰,對區域網路中的 Windows 工作站來說還是很方便的系統,可惜 Linux 與其它 Unix-like 系統過去都沒有可與之抗衡的網路磁碟分享機制。NFS 的認證與權限設定太僵化、SMBFS 得用明碼儲存網路分享帳號與密碼。而且最重要的是,無論是 NFS 或 SMBFS,都很難由低權限的一般使用者進行管理操作;如果沒有 root 或 sudo 權限,幾乎沒辦法進行掛載,那便不必談網路磁碟使用了。
FUSE/SSH 可以解決 Linux 所遇到的這個困境。FUSE 是一組 kernel module 與程式庫的集合,把它看成是允許一般使用者直接進行檔案系統掛載操作的機制就可以了。SSHFS 是建基於 FUSE 之上,利用 SSH 協定作為傳輸手段的網路檔案系統。因為 SSHFS 是基於 FUSE 設計的,所以不需特別的權限,便可以直接呼叫使用!
要使用 FUSE/SSH,kernel 的版本要夠新。目前 Debian etch 的 kernel 已經到了 2.6.18,用這個版本最方便。
寫了這麼多,本篇的重點在於使用 FUSE/SSHFS 是常常會遇到問題的。剛剛在 SSHFS 掛載的遠端系統上 svn up 便出現了 svn: Can't move ... : Operation not permitted 的錯誤。解決方法是加上 workaround=rename 的選項 (以 -o 指定)。
以後再遇到這種或其它錯誤時,可以先查詢一下 FAQ。
另外,通常我們利用 SSHFS 連線後使用的遠端目錄,UID 不太可能和本機一樣。此時請使用 idmap=user 選項 (以 -o 指定)。
配合上面的 workaround,我現在連到某台電腦上的 sshfs 指令變成:
$ sshfs username@host: mount/point -o idmap=user,workaround=rename
sshfs(1) 對這些選項都有很詳細的說明。
- Previous: Autocmd 與 modeline @2007/01/11
- Next: boolean/conditional expression @2007/01/12
Please send trackback to: http://blog.seety.org/everydaywork/2007/1/11/633/trackback/.
我想比照 "Mount Remote SSH Filesystem with FUSE"[1] 的寫法,將兄臺的文章與小弟的簡介[2],一併放入 Debian Taiwan wiki[3],這裡先徵求同意以 GNU FDL 授權使用,謝謝!
[1] http://myy.helia.fi/~karte/mount_sshfs.html
[2] http://blog.linux.org.tw/~jserv/archives/001866.html
[3] http://wiki.debian.org.tw/