2009年3月15日日曜日

Infernoでリモートのファイルシステムをマウント

懸案だったファイルシステムのマウントです。
listen, mountを使った方法はなにげにできていましたが、
認証を利用した方法はできていませんでした。

参考にしたサイトは
http://my.opera.com/csant/blog/show.dml/152654
です。
このページによると、インストールドキュメントに書いてあるとのこと。
まさかそんな所に情報があるとは。

・目的
リモートのInferno(serverとする)のファイルシステムを認証付きで
もう一方のInferno(clientとする)にマウントする。

・手順

- サーバー初回のみ

認証用のパスワード作成
% auth/createsignerkey [名前]
※名前、は何かのIDのようだが、なんなんでしょう。ユーザー名っぽいのをいれてみたが。

認証サービス起動?
% svc/auth
初回でキーを設定するようなので、任意のパスワードを入力

ユーザー作成
% auth/changelogin ユーザー
secretには秘密のパスワードを設定。
expiresには有効期限を。
※expireの書き込みでエラーが発生。無理やり回避した(後述)。

サーバーキー作成
% getauthinfo default
signer: localhost
user: ユーザー名
password: パスワード。たぶんさっきのsecret
save in file: yes

- サーバー運用時

ネットワークサービス起動
% svc/net

認証サービス起動
% svc/auth
初回の時に設定したキーを入力するはず

- クライアント毎回

謎の処理(たぶん接続する時に必須のサービス起動)
% ndb/cs

認証
% getauthinfo tcp!サーバーのIP
signer: サーバーのIP
user: ユーザー
password: secret
save in file: yes (保存すると次回からgetauthinfoしなくて良さそう)

マウント
% mount tcp!サーバーのIP /n/remote
tcp!いらないみたい。

・バッドノウハウ

先ほどの、changeloginでexpireが書き込めない件、力業で乗り切った。

手順
auth/changelogin ユーザー
expiresにpermanentを指定して、とりあえず正常終了させる
 (ただし、expireの書き込みには失敗)

/mnt/keys/ユーザー/expireに適当な数値文字列を書き保存

もう一度auth/changelogin ユーザー
expiresで正しいexpireを指定。たぶん正しい数値がファイルにかかれるはず。

0 件のコメント:

コメントを投稿