(10) クライアントからのNBTの動作確認
Windowsクライアントで以下のコマンドを実行する。
nbtstat -a bigserver
(4)や(6)のping,(9)のnmblookupが問題なく動作するのに,このコマンドが動作しない場合は,Linuxマシン上のファイアウオールでSambaのポートが閉じられている可能性がある。SWATのところでも説明したように,lokkitでファイアウオールを「なし」とするか,Sambaのポート(137/udp,138/tcp,139/tcp)が通過するように設定する。
別の理由として,NetBIOSの名前解決ができていない可能性もある。その場合は以下のいずれの方法を用いる(どれか1つを選ぶ)。
● BIGSERVERをWINSサーバーとして設定し,Windowsマシン側でのネットワーク設定のTCP/IP設定で"wins server"の欄にBIGSERVERのIPアドレスを加える(Windows95では,デスクトップにあるアイコンのネットワークコンピュータのプロパティ-[ネットワークの設定]-[TCP/IP]の設定)
● BIGSERVERとWindowsクライアントで同一のWINSサーバーを使用するように設定する
● ネットワーク設定のTCP/IP設定のDNSセクションで,DNSを利用してNetBIOS名前解決を可能にする。
● SambaサーバーのBIGSERVERのアドレスをWindowsクライアントのlmhostsファイルに加える (WindowsMe/9xでは%windir%\lmhosts,WindowsNT/2000/XPは%windir%\system32\dirvers\etc\lmhosts)。
(11) Linuxマシン上での共有アクセス
Linuxマシンで以下のコマンドを実行する。
smbclient //BIGSERVER/TMP
パスワード入力を要求するプロンプトが表示されるはずだ。パスワードには,smbpasswdコマンドで設定したパスワードを用いる。その他のアカウントでテストしたければ,コマンドラインの最後に"-U username" オプションを付け加えればよい。
(例 ユーザー名を指定してテスト)
smbclient //bigserver/tmp -U watanabe
(例 ユーザー名と一緒にパスワードを指定してテスト)
smbclient //bigserver/tmp -Uwatanabe%masako
パスワードを入力すると,"smb>" プロンプトが表示されるはずだ。プロンプトが表示されない場合は,エラー・メッセージを確認する。
"invalid network name"というエラー・メッセージなら,smb.confの[tmp]共有が正しく設定されていないことが原因である。
"bad password"というエラー・メッセージが表示された場合は,次のような原因が考えられる。
● smbpasswdコマンドでパスワードを設定していない(ユーザー管理方法によって,パスワードの設定コマンドが異なるので注意)
● smb.confでencrypt password = yes としていない
● smb.conf で "valid users"の設定が正しくない
● encrypt password = noのときに大文字小文字を混在したパスワードを設定している。encrypt password = yesの場合はパスワードに英大文字を使用できるが,noの場合は使用できない
● smb.confの"path =" 行が,正しく設定されていない("testparm"を用いて設定を確認すること)
● smbpasswdと/etc/passwdでユーザーのUIDが異なっている
上記に該当する原因が見つからない場合は,詳細な情報がSambaのログ・ディレクトリ(例えば,/vart/log/samba)に作成されるログ・ファイルに出力されているので,その内容をよく確認しよう。
これら対策により問題なく接続された場合は,"dir","get","put"などのコマンドを使えるようになったはずだ。"help <コマンド名>"と入力すれば,コマンドの用例が表示される。"dir"コマンドを実行した際に,ディスクの空き容量が正しく表示されるか確認しておこう。
(12) Windowマシンからのnet view
Windowsクライアントのコマンド・プロンプトから,以下のコマンドを実行する。
net view \\BIGSERVER
Sambaサーバーで利用できる共有サービスの一覧が得られるはずだ。「ネットワークパスが見つかりません」や,それに類似したエラー・メッセージが表示された場合には,NetBIOSの名前解決ができていないか,Sambaが起動していない。エラー・メッセージが返ってきたなら,(8)の"smbclient -L" のテストと同じ解決策が適用できる。
特に,"hosts allow"の行が正しく設定われているか(詳細はSWATのドキュメント・ページを参照)を確認しよう。また,使用しているアカウントがSambaサーバーで有効であることや,アカウント/パスワードに間違いがないかなども確認する。
(13) Windowマシンからのnet use
Windowsクライアントのコマンド・プロンプトから以下のコマンドを実行する。
net use x: \\BIGSERVER\TMP
パスワード入力を求めるプロンプトで,パスワードを入力するとXドライブに共有が割り付けられるはずだ。そうでなければ,Windowsネットワークが正しく設定されていないか,smb.confの設定に誤りがある。smb.confの設定では,特に"hosts allow"やsmb.confの各行の設定が正しいかを念入りに確認しよう。
smb.confでsecurity=shareの場合には,使用しているユーザー名でサーバーに接続できない(smb.confのusernameで指定したユーザーとして接続される)ことがある。この場合には,smb.confの [tmp]セクションに "user = USERNAME"行を追加する("USERNAME"は入力したパスワードに対応しているユーザー名)*2。
(14) ブラウジング
Windowsクライアントで,「ネットワークコンピュータ」や「マイネットワーク」を参照する。Sambaサーバーは,smb.confで指定したワークグループの中に表示されるはずだ。そして,Sambaサーバーのアイコンをダブル・クリックすれば,共有の一覧が得られる。
「ネットワークコンピュータ一覧」にSambaが現れない場合は,「ブラウジング」に問題が発生している。その仕組みを詳細に解説すると,相当数のページを消費してしまうので,省略させていただく。詳しくは,http://www.samba.gr.jp/doc/browsing/を参照してほしい。
なお,Windowsの「スタート」メニューの「ファイル名を指定して実行」において「名前」へ「\\Sambaサーバー名」を入力して実行すればSambaサーバーの共有が現れる場合には,Sambaの設定はほぼ間違いないのだが,セグメント越えなどに課題があると考えられる。以下を調査してほしい。
● セグメントをまたがったブラウジングにはWINSサーバーが必須(LMHOSTSやDNSでは解決できない)なので,WINSサーバーを設置すること
● smb.confで"encrypt passwords = yes"と設定する
● Linuxマシンから,「nmblookup -M ワークグループ名」を実行し,そのワークグループのマスター・ブラウザのIPアドレスが得られることを確認
ブラウジングには,各セグメントにマスター・ブラウザが必要であり,セグメントをまたがったブラウジングにはドメイン・マスター・ブラウザとWINSサーバーが必須である。
smb.confのパラメータ補足
Sambaのアクセス制御を行うパラメータとして利用者が使い方を間違えやすいパラメータについて,補足説明しておこう。
●interfaces = IPアドレス/サブネット
マスク
Sambaが使用するインタフェースを指定する●socket address = IPアドレス
Sambaが接続するソケット・アドレス●bind interfaces only = yes またはno
Sambaがinterfacesに指定したインタフェースを使用しないようにするならYESとする
上記の3つのパラメータは,以下のようなときに指定する。
●複数のLANカードやモデムを利用する場合,Sambaがすべてのインタフェースを認識しないときやサブネットマスクを正しく認識しないとき,またはSambaに接続させるインタフェースを制限したいとき
●1つのLANカードに複数のIPアドレスを割り付ける場合で特定のIPアドレスでのみSambaに接続させたいとき
●1台のマシン上で複数のSambaを同時に起動させたい場合(1台のマシンに複数のIPアドレスを割り付け,それぞれのアドレスに対応したSambaを起動させることができる)
ネットワーク・インタフェースによるアクセス制御を行うには,本来はsocket addressパラメータを使用し,interfacesパラメータは複数のネットワークや正しいサブネットマスクを検知できないOSのために存在するものであった。しかし最近ではアクセス制御の場合を含めてinterfaceパラメータが使われることが多いようだ。
例えば,LANカードが2枚装備されているマシンにおいて,片方だけのLANカード(IPアドレスが192.168.0.1)のみでSambaの接続をしたい場合は
[global]
interfaces = 192.168.0.1/255.255.255.0
bind interfaces only = yes
とすればいいように見えるが,これは誤りである。正しくは,[global]
interfaces = 192.168.0.1/255.255.255.0 127.0.0.1
bind interfaces only = yes
というように,必ずlocalhostのアドレスを指定する必要がある。この設定を忘れると,Windowsクライアントからパスワードを変更できなくなる。なお,hosts allowパラメータを使って,接続できるクライアントを制限することもできる。
[global]
interfaces = 10.0.12.1/255.255.0.0 127.0.0.1
bind interfaces only = yes
hosts allow = 10.0.13.0/255.255.255.0
上記の設定では,10.0.13.0から10.0.13.255のアドレスのクライアントが接続できる*3。それでも解決しないときは
以上のすべての項目を確認,テストした上で,それでも問題が解決しない場合は,Sambaパッケージに含まれている他のドキュメント(SWATの表紙)も見てほしい。どうしても原因が分からない場合は,日本Sambaユーザ会のメーリング・リスト(samba-jp)で聞くのもいいだろう。もし,メーリング・リストで質問するときは,
・ 問題が起こるときの操作方法
・ エラーの場合は詳細メッセージ
・必要に応じてエラー・ログ(/var/log /samba/ *)
・ 設定ファイル(smb.conf)
などを添付して質問してほしい。
メーリング・リストへの参加方法やsambaについての詳細は,日本Sambaユーザ会のホームページhttp://www.samba.gr.jp/に掲載していあるので,参照していただきたい。