一個前のほぼボツエントリで、mail2entryのソースをいじろうと思ったんだけど、FreeBSDのemacs23をscreen上で使うとカーソル位置の表示がおかしくなって、とても開発ができる状態ではない。
せっかくMacのemacsはauto-completeとかも入れて使いやすくなっているので、どうせならmacでソースをいじりたい。
そのためには、macからFreeBSDのディスクが読み書きできる必要がある。
macの/etc/auto_masterを見ると、/netとかあるので、とりあえずFreeBSDの方をNFSサーバにしてみる。(参考にしたのはFreeBSD-NFS - ぷきうぃき)
  1. /etc/exportsを以下の内容で作成
    /var/home       -network 192.168.0
    
  2. /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).          
    
  3. 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みたい
これで、macから /net/sv/var/home (svはFreeBSDのホスト名)にアクセスしてみると、Permission deniedでアクセスできない。
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を以下のようにする。
#+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

コメントする

このブログ記事について

このページは、falseが2011年5月21日 21:03に書いたブログ記事です。

ひとつ前のブログ記事は「画像の回転とExifのOrientation」です。

次のブログ記事は「proxyの内側からmacports」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1