Web の記事を読むと CIFS は SMB over IP の名称変更のような印象を受けるが、cifs は TCP/445 ポートを使用するのに対して SMB は TCP/139 を使用している。単なる名称変更であればポート番号を変更する必要はないので、基本的な違いが存在するのであろう。
筆者は以下のクライアントから動作を試した。
OS | 結果 |
---|---|
WinXP | OK |
Win2000 | OK |
Win98 | NG |
MacOSX | NG |
CFLAGS=$INC $CFLAGS $XCFLAGS
CFLAGS=$CFLAGS $XCFLAGS
mk install
tcp=cifs port=445
/n/local
を作成しておく。cd /tmp aquarela -p
-p
は標準出力にもログを出すオプションである。aquarela -p -d allcmds
You can 1. type \\server\local into a browser window 2. type start \\server\local into a command shell 3. type net use z: \\server\local into a command shell
server
はサーバの名称であり、local
は共有名であるが、共有名は aquarela では local
や dump
などが指定できる。C:\WINNT\system32\drivers\etc\hosts
hosts
と言う。) 筆者の場合には筆者の運営するサーバを登録している。(192 で始まる IP は家庭内 LAN におけるサーバである。)
127.0.0.1 localhost 202.250.160.40 ar 202.250.160.71 hera 202.250.160.122 plan9 192.168.1.1 nx 192.168.1.2 pc 192.168.1.4 mac
特に、家庭環境では登録しないとサーバ名が使えないことに注意すべきである。
start \\pc\local
net use z: \\pc\local
接続時のサーバからの応答は、クライアントが Win2000 と WinXP とでは異なる。
Win2000 では「\\pc\local
のパスワードを入力してください:」
と言われる。どうやらユーザ名はクライアントとサーバ側で共通であると考えられているらしい。(これは大変使いにくい)
WinXP ではユーザ名とパスワードの入力が求められる。インターネットレベルでのクライアントとサーバの関係は、ユーザ名の共通化をはかれない場合が多いのであるから、XP の方がまともである。
成功すれば \\pc\local
には サーバ上の /
以下のディレクトリが見えるはずである。
The dynamic stuff will add in things which 9fs adds in. For example c> net use z: \\cpu\dump c> z: z> dir/w 2000 2001 2002 2003
local
以外(例えば dump
)を指定した場合には Aquarela はサーバ上で(例えば)9fs dump
9fs dump
を実行してみればわかる。) fossil の archive が見えるように /rc/bin/9fs
を次のように書き換えることとした。case dump mount /srv/fossil /n/dump main/archive # mount /srv/boot /n/dump dump >[2]/dev/null || # mount /srv/boot /n/dump main/archive || # mount /srv/boot /n/dump dump # again to print error
ネットワークプレスの追加ウィザードの場所(Win2000)
ネットワークプレスの追加ウィザード場所(WinXP)
「ネットワークプレスの追加ウィザード」を起動すると次の画面が表示される。ネットワークプレスの追加ウィザード(Win2000)。WinXP も同じ。
このやり方では、ネットワークプレースをあらかじめ指定しておかねばならないのがつらい。「ネットワークプレスの追加ウィザード」を使用しないやりかたもある。「コンピュータの検索」を利用する方法である。(WinXP と Win2000 共に使用できる)
しかしこの方法ではコンピューター名しか指定できない。
WinXP の「探索」アイコン
をクリックすると「コンピュータ名」の入力を求められ、探索に成功するとさらに「ユーザ名」と「パスワード」の入力を求められる。(下図)家庭から大学の ar への接続1 (WinXP)
もちろん、hosts
に ar
が登録されていれば単に ar
で構わない。
hosts
に ar
が登録されている場合のコンピュータ名の指定
家庭から大学の ar への接続2 (WinXP)
接続に要する時間はイライラするほど長い。Plan 9 の軽快なネットワークになれた筆者にとっては苦痛である。昼に接続しなかったのは大学のネットワークが混み合っていたからか?
Win2000 も WinXP も一旦接続を行うと、ユーザ名もパスワードも改めて聞かれることはない。他のユーザ名で接続を行う場合には一旦ログオフをするか NET
コマンドで /DELETE
の指定をしなくてはならない。次の図は NET
コマンドを用いた接続の取り消しの例である。
C:\>net use * /delete これらのリモート接続が存在します: \\Pc\local \\ar\IPC$ 続行すると、接続は取り消されます。 この操作を続行しますか? (Y/N) [N]: C:\>net use \\pc\local /delete \\pc\local が削除されました。
C:>net use z: \\pc\local システム エラー 53 が発生しました。 ネットワーク パスが見つかりません。原因: そもそも相手のポートに届かない時にこのエラーがでるらしい。例えば
pc
が hosts
に登録されていない。pc
の cifs ポートが塞がっている
不思議な事に aquarela は ユーザ none のデモンを生成するオプシヨンを持っていない。hostowner の権限での aquarela の実行は危険が伴うので none としてサービスを実行すべきであろう。ユーザ none の権限でサービスを行うには
@{cd /tmp; auth/none aquarela&}とでもすればよい。
cifs ポートには多数の、時には凄まじい数の不正アクセスが発生する。例えば昨日(2005/05/23)の不正アクセス件数は 385 件であり、つぎのようなものもある。
ar May 23 02:03:30 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:31 445 220.170.56.209 ar May 23 02:03:32 445 220.170.56.209 ar May 23 02:03:32 445 220.170.56.209 ar May 23 02:03:33 445 220.170.56.209 ar May 23 02:03:33 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:34 445 220.170.56.209 ar May 23 02:03:35 445 220.170.56.209 ar May 23 02:03:35 445 220.170.56.209 ar May 23 02:03:36 445 220.170.56.209 ar May 23 02:03:36 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:37 445 220.170.56.209 ar May 23 02:03:38 445 220.170.56.209 ar May 23 02:03:38 445 220.170.56.209筆者の場合には IP アドレスのレベルでも保護が掛かっているのでサーバは保っているが、そうでなければサーバが保たないかもしれない。
Windows のコマンド net は外部コマンドであり、ファイル名は net.exe である。従って OS とは独立に作成する事ができる。誰かが CIFS 対応の Win98 用の net.exe を作っていてもよさそうであるが、今のところ見つかっていない。