FUSE 는 참 재미난 놈이다. 기본적으로는 kernel level 의 file system 관련 부분을 user space 에서 접근 가능하도록 하는 것인데, 쉽게 말하면, 새로운 파일 시스템을 만들려면, 커널 차원에서 만들어야 하지만, 이게 쉽지가 않다. 그래서, 새로운 파일 시스템을 만드는 작업은 만만치 않은 일이다. 하지만, fuse 는 이러한 커널차원의 일을 일반 응용프로그램을 만드는 user level 에서 접근 가능하도록 하여서, 손쉽게 새로운 파일 시스템을 쉽게 만들게 해 준다. 스크립트언어로 바인딩도 많이 되어 있어서, python, ruby, perl 등으로 쉽게 새로운 파일 시스템을 만들 수 있다.
예를들여, youtube 를 파일 시스템 처럼 접근 가능하고, flickr 도 파일 시스템으로 접근 가능하다. 가장 많이 사용되는 것은 ssh 를 파일시스템으로 접근하는 것인데, 이것이 sshfs 이다. fuse 를 이용해서, 마치 sftp 로 마운트 된 것 처럼 만들어 준다.
이게 참 좋다고 생각만 하고 있었는데, 사실 잘 쓰지는 않았다. 이번에 ubuntu 에서 쓸려고 하니 문제가 생겼다.
sudo sshfs username@hostname.com:/path/to/mount /local/mount/path
위와 같이 하면, mount 가 된다. 하지만, ls를 해 보면
d????????? ? ? ? ? ? /local/mount/path
위와 같이 이상하게만 나온다. 문제는 sudo 를 통해서 root 권한으로 mount 하면, root 사용자만 접근 가능하다는 것. 그래서 해결 방법을 검색을 통해서 찾았다.
sudo sshfs -o allow_other username@hostname.com:/path/to/mount /local/mount/path
이제, 문제 없이 마운트 되고, nautilus 에서도 잘 보인다.
아직 한가지 남은 문제는, 시간이 지나면, 접속이 끊어지고, 다시 자동으로 붙지 않는 다는 것이다. 그럼 프로세스를 죽이고 하는 더러운 짓을 해야 한다.
update>
이런 바보같은 포스트가 다 있나! 오늘 sshfs README 를 읽는데, 한문장이 나왔다.
Note, that it’s recommended to run it as user, not as root. For this to work the mountpoint must be owned by the user.
대체 처음에 왜 sshfs 를 할 때, sudo 를 했었는지 기억이 안난다. 그래서, 문득 그냥 해 보니깐, 잘된다!
sshfs username@hostname.com:/path/to/mount /local/mount/path