一個前のほぼボツエントリで、mail2entryのソースをいじろうと思ったんだけど、FreeBSDのemacs23をscreen上で使うとカーソル位置の表示がおかしくなって、とても開発ができる状態ではない。
せっかくMacのemacsはauto-completeとかも入れて使いやすくなっているので、どうせならmacでソースをいじりたい。
そのためには、macからFreeBSDのディスクが読み書きできる必要がある。
macの/etc/auto_masterを見ると、/netとかあるので、とりあえずFreeBSDの方をNFSサーバにしてみる。(参考にしたのはFreeBSD-NFS - ぷきうぃき)
FreeBSDのmessagesを見ると、
mac側で man mount_nfs すると、resvportと言うオプションを発見。早速 /etc/auto_masterの/netの行に追加
FreeBSD側は日本語のファイル名をEUC_JPにしているので、当たり前の様に日本語のファイル名は文字化けするが、今回の用途では問題ないので無視する。
さて、ここで問題発覚。FreeBSD側の書き込みたいディレクトリのオーナーはuid1000で、mac側のuidは501。書き込めない...(汗)。
まあ、どうせmacはクライアントOSだし、目的のユーザのホームディレクトリに書ければ良いや〜と、FreeBSD側の /etc/exportsを以下のように変更。
しかし、NFSって今から見るとあまりにセキュリティ的に弱い仕様だよなあ。もうちょっとディレクトリを絞るか、mapallするuidを工夫した方が良いかもしれない。
これで、macのemacsからFreeBSDのファイルがアクセスできるようになったけれど、git管理下のファイルを開いてもvcモードにならない。
試しに、M-x vc-dirとかやってみると、
せっかくMacのemacsはauto-completeとかも入れて使いやすくなっているので、どうせならmacでソースをいじりたい。
そのためには、macからFreeBSDのディスクが読み書きできる必要がある。
macの/etc/auto_masterを見ると、/netとかあるので、とりあえずFreeBSDの方をNFSサーバにしてみる。(参考にしたのはFreeBSD-NFS - ぷきうぃき)
- /etc/exportsを以下の内容で作成
/var/home -network 192.168.0
- /etc/rc.confに以下を追加(rpcbindは元々有効にしていた)
mountd_enable="YES" # Run mountd (or NO). nfs_server_enable="YES" # This host is an NFS server (or NO). nfs_reserved_port_only="YES" # Provide NFS only on secure port (or NO). rpc_lockd_enable="YES" # Run NFS rpc.lockd needed for client/server. rpc_statd_enable="YES" # Run NFS rpc.statd needed for client/server. rpcbind_enable="NO" # Run the portmapper service (YES/NO).
- NFSのサービスを起動(rpcbindは起動済みだった)
# /etc/rc.d/nfsserver start # /etc/rc.d/rpcbind start # /etc/rc.d/mountd start # /etc/rc.d/nfsd start # /etc/rc.d/lockd start
※ 最後のlockdだけ、参考サイトの FreeBSD5.0ではnfslockingだったみたいだけど、FreeBSD8.2ではlockdみたい
FreeBSDのmessagesを見ると、
May 21 10:09:20 sv kernel: NFS request from unprivileged port (192.168.0.59:62636)のようなエラーが出ている。rc.confに nfs_reserved_port_only="YES" としているので、mac側もそれなりの設定をしないといけないらしい。
mac側で man mount_nfs すると、resvportと言うオプションを発見。早速 /etc/auto_masterの/netの行に追加
/net -hosts -nobrowse,hidefromfinder,nosuid,resvportしかし、一度mountのリクエストを出しているせいか、automount -cvでは成功しなかったので、macを再起動したら繋がるようになった。
FreeBSD側は日本語のファイル名をEUC_JPにしているので、当たり前の様に日本語のファイル名は文字化けするが、今回の用途では問題ないので無視する。
さて、ここで問題発覚。FreeBSD側の書き込みたいディレクトリのオーナーはuid1000で、mac側のuidは501。書き込めない...(汗)。
まあ、どうせmacはクライアントOSだし、目的のユーザのホームディレクトリに書ければ良いや〜と、FreeBSD側の /etc/exportsを以下のように変更。
/var/home -network 192.168.0 -mapall=1000これで、mountさえできればuid1000の権限で書けるようになった。
しかし、NFSって今から見るとあまりにセキュリティ的に弱い仕様だよなあ。もうちょっとディレクトリを絞るか、mapallするuidを工夫した方が良いかもしれない。
これで、macのemacsからFreeBSDのファイルがアクセスできるようになったけれど、git管理下のファイルを開いてもvcモードにならない。
試しに、M-x vc-dirとかやってみると、
apply: Searching for program: No such file or directory, gitとかエラーが出ている。どうも、Emacs.appはユーザの環境変数PATHとか見てくれないようなので、~/.emacsに以下を追加した。
(add-to-list 'exec-path "/opt/local/bin")これで、無事にgit管理下のファイルがemacsで扱えるようになった。
追記
やっぱり、家庭内とは言えNFSはセキュリティ的にあまりにあまりな気がしたので、もうちょっと調べる。
NFSv4と言うのを使うと、ユーザIDのマッピングができたり、少しましになりそうなんだけど、Mac側が標準では対応していないらしい。
結局、sambaを使うことにする。
/etc/auto_masterの/net共有の代わりに、/homeを使うことにして、/etc/auto_homeを以下のようにする。
NASの方の /Share は同じ感じでアクセスできているので、何が違うんだろうと /etc/auto_masterを眺めたら、nobrowseとhidefromfinderのオプションが付いているのが違うので、試しに外してみた。
さらに追記(2011/6/4)
どうも、しばらく放置してからアクセスしようとすると、アクセスできなくなる。
automountされていない状態から、自分でアクセスすると、自分の権限でmountされるのでアクセスできるが、それがタイムアウトでumountされた後、root権限で再度mountされてしまい、アクセスできなくなるようだ。
TeraStationの共有フォルダでは、rootでmountされても問題なくアクセスできるのだが、FreeBSDの共有フォルダだと駄目だ。
sambaの設定の違いを調べてもいまいちわからなかったのだが、とりあえずFreeBSD側では unix extensions = no の行があったので、yesに変えたら少し挙動が変わったけど、rootでマウントされるとアクセスできない問題は解決せず。
rootでマウントされてしまうのは、AntiVirusか何かインデックス系のサービスが動いているせいだろう。
両方とも解決できなかったので、暫定で以下の手を打ってみた。
やっぱり、家庭内とは言えNFSはセキュリティ的にあまりにあまりな気がしたので、もうちょっと調べる。
NFSv4と言うのを使うと、ユーザIDのマッピングができたり、少しましになりそうなんだけど、Mac側が標準では対応していないらしい。
結局、sambaを使うことにする。
/etc/auto_masterの/net共有の代わりに、/homeを使うことにして、/etc/auto_homeを以下のようにする。
#+auto_home # Use directory service ←コメントアウト ユーザ名 -fstype=smbfs ://ユーザ名:パスワード@sv/ユーザ名んで、automount -vc して、ls /home/ユーザ名 とかやってみると、Operation not permitted とか言ってアクセスできない。
NASの方の /Share は同じ感じでアクセスできているので、何が違うんだろうと /etc/auto_masterを眺めたら、nobrowseとhidefromfinderのオプションが付いているのが違うので、試しに外してみた。
#/home auto_home -nobrowse,hidefromfinder /home auto_homeすると、無事にアクセスできるようになったので、当面これで行くことにする。
さらに追記(2011/6/4)
どうも、しばらく放置してからアクセスしようとすると、アクセスできなくなる。
automountされていない状態から、自分でアクセスすると、自分の権限でmountされるのでアクセスできるが、それがタイムアウトでumountされた後、root権限で再度mountされてしまい、アクセスできなくなるようだ。
TeraStationの共有フォルダでは、rootでmountされても問題なくアクセスできるのだが、FreeBSDの共有フォルダだと駄目だ。
sambaの設定の違いを調べてもいまいちわからなかったのだが、とりあえずFreeBSD側では unix extensions = no の行があったので、yesに変えたら少し挙動が変わったけど、rootでマウントされるとアクセスできない問題は解決せず。
rootでマウントされてしまうのは、AntiVirusか何かインデックス系のサービスが動いているせいだろう。
両方とも解決できなかったので、暫定で以下の手を打ってみた。
- /etc/auto_masterの/homeの行に -nobrowseを復活
- /etc/autofs.confの AUTOMOUNT_TIMEOUT の値を3600から300に変更
トラックバック(0)
このブログ記事を参照しているブログ一覧: macでFreeBSDのホームディレクトリをオートマウントする
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/2639
コメントする