[README][SONY NEWSでコンパイルを通す][samba日本語対応について]
[INSTALL][日本語INSTALL.TXT][COPYING][Makefile][戻る]
Contributor:	Andrew Tridgell <samba-bugs@samba.anu.edu.au>
Date:		Unknown
Status:		Current
Updated:	August 25, 1997


この日本語マニュアルについてのお問い合わせはtanaka@teleport.comueno@msil.co.jpまでお願いします。


SAMBAのインストールとテスト方法


STEP 0. manを読んでください。
STEP 1. バイナリーの構築
STEP 2. ただ一つの重要なステップ
STEP 3. smbコンフィギュレーションファイルの作成
STEP 4. testparmを使ってコンフィギュレーションのテスト
STEP 5. smbdとnmbdのスタート
Step 5a. Starting from inetd.conf
Step 5b. Alternative: デーモンとして起動する
STEP 6. サーバー上の利用可能なsharesリスト
STEP 7. unixクライアントとの接続
STEP 8. dos/WfWg/Win95/NT/os-2クライアントからの接続
プログラムが動かない場合
DIAGNOSING PROBLEMS
SCOPE IDs
プロトコルレベルの選択
unixからクライアントPCへの印刷
LOCKING
ユーザーネームのマッピング
他のキャラクターセット

STEP 0. manを読んでください。
manにはあなたがSAMBAを スタートするための有用な情報がたくさんあります。manをどうやって 読むのかが分からない場合には以下の様なコマンドを試してみてください。
nroff -man smbd.8 | more
残念ながら、manページはかなり古くなっていて、またかなりのメンテ ナンスが必要となっています。このほかの情報源はsambaのwebサイト http://samba.canberra.edu.au/pub/samba/ から探し出せます。

STEP 1. バイナリーの構築
バイナリーの構築には、まずMakefileの編集を行います。Makefile にはほとんどのUNIXに対するエントリーがあります。ここで、あなたの使用している オペレーティングシステムに対応するものをアンコメントします。

また、Makefileの一番最初の部分にある、インストール先も編集しなければ なりません。Sambaが実行中に必要となるものを探し出せるように、これはコンパイルの 前に行わなければなりません。(特にsmbrun)また、ログファイルをどこに置くかなどの設定もおこないます。 編集に間違いが無いかと、指定したディレクトリが存在するかの確認を行ってください。

make”とタイプすればバイナリーが作成されます。

コンパイルが成功した後で“make install”によってバイナリーとマニュアルページをインストールします。 バイナリーとマニュアルを別々にインストールしたい場合には、“make installbin”または“make installman”を使用してください。

もしあなたがSambaの古いバージョンからアップグレードを行った場合には、古いバージョンのバイナリーは“.old”という拡張子をつけて保存されます。
この場合には“make revert”とする事によって古いバージョンに戻ることができます。このバージョンになにか問題が有った場合に行ってください。

STEP 2. ただ一つの重要なステップ
この段階で、コーヒーや他の飲み物でひと休みしてください。残りのインストールプロセスは時としてトリッキーです。
ここでひと休みした方がいいでしょう。

以前にもsambaのインストールを行った事が有る場合には、このステップはとばしてください。

STEP 3. smbコンフィギュレーションファイルの作成
コンフィギュレーションファイルのサンプルが配布パッケージのexamplesサブディレクトリに有ります。
このサンプルをよく注意して読んでください。そうすれば実際にオプションがどのように使われるかが分かります。
すべてのオプションを見るにはmanページを見てください。

もっとも簡単で有用なコンフィギュレーションファイルはこんなかんじになります。

workgroup = MYGROUP

[homes]
guest ok = no
read only = no

これはサーバーにアカウントを持っているひとであれば誰でもログインネームか“home”をサーバーネームとして使うことによって接続を許可します。
(また、わたしはsambaの含まれるワークグループをセットしました。詳細はBROWSING.txtを見てください。)

make install”はsmb.confファイルをインストールしない事に注意してください。
あなたはsmb.confを作成しなければなりません。Makefileの中でログファイルなどのために設定したパス(たとえば/usr/local/samba)なども作成してください。

smb.confファイルをMakefileのなかで設定したのと同じ場所に置いたことを確認してください。

STEP 4. testparmを使ってコンフィギュレーションのテスト
あなたのsmb.confファイルの有効性をtestparmプログラムによってテストする事は重要なことです。testparmが問題なく走れば、ロードされたサービスのリストが表示されます。もしうまく行かなかった場合には、エラーメッセージを表示します。 testparmが正常に動いて、サービスのリストが正常に見えることを、次のステップに進む前に確認してください。

STEP 5. smbdとnmbdのスタート
smbdとnmbdをデーモンとして動かすかinetdからスタートするのかを選ばなければなりません。両方の設定を同時には行わないでください。smbdとnmbdをinetd.confに置いて、inetdによってスタートするか、コマンドラインから直接または、/etc/rc.localからデーモンとして起動するかのどちらかです。コマンドラインでのオプションに関してはmanページを見てください。 E; もしあなたがNISかNIS+をサービスマップに使用している場合には以下の部分が違ってきます。 /etc/servicesを見てください。port 139/tcp に何も定義されていなかったら以下のような行を追加してください。
netbios-ssn 139/tcp
同様に 137/udp に関しても以下のようにしてください。
netbios-ns 137/udp
次に、/etc/inetd.confを編集して以下のような2行を追加してください。

netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
/etc/inetd.confの正確な文法はunixによってさまざまです。inetd.confの他のエントリーを参考としてください。

注:いくつかのunixシステムではすでにnetbios_nsといったエントリーが/etc/servicesにあります。/etc/serviesか/etc/inetd.confのどちらかを編集してこれらが同一になるようにしてください。

注:いくつかのシステムではインターフェースのIPアドレスとnetmaskを指定するのにsmb.confで“interfaces”オプションを使用しなければなりません。 あなたのネットワークのブロードキャストが分からない場合にはrootでifconfigを実行してください。nmbdは実行時にブロードキャストを決定しようとしますが、いくつかのunixでは失敗してしまいます。 “nmbdのテスト”のセクションにあなたがこれを行わなければならないかの判定方法が有ります。

!!!警告!!! いくつかのunixではinetdのコマンドラインで5個のパラメータまでしか許可して居ません。
これは、オプションと引数の間にスペースを入れるべきではないと言うことです。または、スクリプトを使いinetdからはスクリプトを起動すべきで有ると言うことを意味しています。

inetdを再スターとします。たぶんHUPに送ればOKです。もし、古いバージョンのnmbdがインストールされている場合にはnmbdをkillしなければならないかもしれません。

Step 5b. Alternative: デーモンとして起動する
サーバーをデーモンとして起動するにはこのようなスクリプトを作らなければなりません。たぶん“startsmb“とでも呼ぶのでしょう。
#!/bin/sh /usr/local/samba/bin/smbd -D
/usr/local/samba/bin/nmbd -D
そしてこのファイルを"chmod +x startsmb"で実行可能にします。

これで、あなたはstartsmbを手で起動するか/etc/rc.localから起動するかできます。

Killするにはnmbdとsmbdに対してkillを行ってください。

注:SVR4 style initシステムを使用している場合には、スクリプトexamples/svr4-startupを見てsambaをシステムにフィットさせてください。

STEP 6. サーバー上の利用可能なsharesリスト
smbclient -L yourhostname
サーバー上の利用可能なsharesリストが入手出来ます。
もし、リストが出ない場合にはなにかが正常にセットアップされていません。
この方法は他のLANマネージャークライアント(WfWgなど)においてどのshareが利用可能か調べるのにも使用できます。

もしユーザーレベルにセキュリティーを選んだ場合にはshareのリストを出力する前にsambaがパスワードを要求してきます。
詳細はsmbclient docsを見てください。(コマンドラインのオプションに-U%を加えることによってパスワードなしにshareのリストを得ることが出来ます。これはsamba以外のサーバーでは使えません。)

STEP 7. unixクライアントとの接続
smbclient '\\yourhostname\aservice'
通常"yourhostname"はあなたがsmbdをインストールしたホストの名前になります。
"aservice"はsmb.confファイルに定義したサービスのどれかとなります。 もしsmb.confに[homes]セクションしか無い場合にはあなたのユーザーネームで試してみてください。

たとえば、unixホストはbambiでログインネームがfredの場合には

smbclient '\\bambi\fred'
注:¥の数は使用しているshellによって変わります。shellによっては'\\\\bambi\\fred' と入力しなければなりません。

STEP 8. dos/WfWg/Win95/NT/os-2クライアントからの接続.
ディスクのマウント
net use d: \\servername\service
印刷:
net use lpt1: \\servername\spoolservice print filename
激励、またはバグレポートを送ってください。
Celebrate, or send me a bug report!

プログラムが動かない場合
もし何にも動かなかったり、あなたか“誰がこんなゴミプログラムを書いたんだ”と考え始めたら、あなたが落ちつくまでSTEP2を行う事をおすすめします。 その後、FAQやDIAGNOSIS.txtを読むかもしれません。もし、いぜんとしてスタックしている場合にはメーリングリストやニュースグループ(詳細はREADMEを見てください。)をトライしてみてください。Sambaは世界中で数千のサイトでインストールされています。誰か他の人があなたと同じ問題にぶつかってすでに解決しているかもしれません。また、samba−ダイジェストのバックナンバーを探すのにWWWサイトを利用することも出来ます。 もし、あなたが問題を解決した場合には私にドキュメントのアップデートかまたはソースコードを送ってください。そうすれば次の人はより簡単に解決法を見つけることが出来ます。

DIAGNOSING PROBLEMS
インストールに関して問題が有る場合にはDIAGNOSIS.txtを見て問題を探してください。

SCOPE IDs
デフォルトではSambaはblank scope IDを使っています。よって、すべてのウインドウはblank scope IDを持っていることになります。もし、あなたがblank scope IDをどうしても使いたくないと言うことで有れば、-i オプションをnmbd,smbd,smbclientに対して使用してください。これを動かすにはすべてのPCで同じ設定が必要となります。私はscope IDはおすすめしません。
プロトコルレベルの選択
SMBプロトコルはたくさんの方言が有ります。現在ではsambaは5つの方言(CORE, COREPLUS, LANMAN1, LANMAN2, NT1)をサポートしています。 smb.confファイルをサポートするのに最適なプロトコルを選択することが出来ます。デフォルトはNT1で、これはほとんどのサイトでベストのものです。 古いバージョンのsambaではCOREPLUSを使用しなければならないこともあります。 COREPLUSを使用しなければならなくなる場合の制限は今ではほとんどが修正されています。LANMAN1以下の物を使わなければならなくなることは今ではほとんどありません。COREPLUSを使うアドバンテージはいくつかの曖昧な理由からです。このプロトコルでWfWgがパスワードの大文字/小文字を保持する事によります。LANMAN1、LANMAN2やNT1ではパスワードは送る前にすべて大文字に変換されます。この場合には "password level=" オプションを使わなければなりません。 LANMAN2とNT1の主な利点はいくつかのクライアントに於いて長いファイル名をサポートする事です。 (eg: smbclient, Windows NT or Win95). 詳細についてはsmb.confのマニュアルページを参考にしてください。 注:プリントキューレポートをサポートするためにはWfWgにおいてTCP/IPを使用しなければなりません。何らかの理由でデフォルトをNetbeuiのままにしておくといくつかのシステムではプリントキューレポートを破壊してしまうかもしれません。これはWfWgのバグであると思われます。

unixからクライアントPCへの印刷
unixホストからsmb−basedサーバーで使用できるプリンターを使う場合には、smbclientプログラムのコンパイルが必要となります。
その後、“smbprnt”スクリプトのインストールが必要です。smbprintのインストラクションを参照してください。

smbprint.sysvというSYSV 形式のスクリプトも全く同じ働きをします。このファイルにはインストラクションも含まれています。

LOCKING
ときどきトラブルを起こすことがあるのはロッキングです。
SMBサーバーによって行われなければならないロッキングには2種類有ります。 最初のものは"record locking"で、これはクライアントがオープンファイルのいくらかのバイトをロックすることを許可するもです。 もう一つは"deny modes"で、ファイルがオープンの時に設定されます。

Sambaはfcntl()unixシステムコールを使って "record locking"をサポートしています。 これはしばしばファイルシステムを所有しているrpc.lockedプロセスに対してrpcコールを使って行われます。 残念ながらたくさんのrpc.locked手法は非常にバッギーです。(バグバグです???)特に他のベンダーのバージョンと交信する場合には不安定です。 クラッシュに関してはrpcロックドではしばしばクラッシュが起こります。

PCクライアントが出した32ビットのロックリクエストをほとんどのunixがサポートする31ビットに変換する際にも問題が有ります。 困ったことにたくさんのPCアプリケーション(OLE2アプリケーションなど)がトップビットセットをセマフォセットとして使用しています。 Sambaはこれらのアプリケーションをサポート使用と試みていました。そして、変換は非常にうまくいっています。

SMBサーバーはファイル上のロックをファイルの読み書きごとにチェックしなければなりません。 しかしながら、 fcntl()の動作上、これはとてもスローでrpc.lockedに過剰にストレスをかけます。また、それはほとんどいつも必要ではないのです。 なぜならば、クライアントは必要で有れば独立にロッキングコールを行うことが出来るからです。 デフォルトではSambaはクライアントから要求されたときにのみロッキングコールを行います。 しかし、"strict locking = yes"と設定すればファイルの読み書き動作ごとにロッキングコールを行います。

また、"locking =no"とする事によってレンジロッキングも無効にする事が出来ます。 これはCD−ROMのようにロックを必要としない物に関して有効です。 このようなケースではSambaはクライアントに対して偽りのリターンコードを発生して、クライアントに正常であることを伝えます。

2つめのロックは"deny modes".です。これはアプリケーションによってファイルを開けるときにファイルオープン状態でどういった同時アクセスが許容されるかが決定されます。 クライアントはDENY_NONE, DENY_READ, DENY_WRITE ,DENY_ALLなどのリクエストを出します。また、 DENY_FCBやDENY_DOSといった特別互換モードも有ります。

"share modes = no"を使って共有モードを無効にすることも出来ます。これは負荷の重いサーバーで共有モードのコードが非常に遅い場合に有効です。 共有メモリーを使った高速共有モードに関してはMakefileのFAST_SHARE_MODESオプションを見てください。(ただしOSがサポートする場合のみ)

ユーザーネームのマッピング
PCとunixで異なるユーザーネームを持っている場合には"username map"オプションを参照してください。 詳細はsmb.confのmanページを見てください。

他のキャラクターセット
ドイツ語、フランス語のようにファイルネームにアクセントの付いた文字が使われている場合には、smb.confの"valid chars"オプションを見てください。また、 examplesディレクトリーのvalidcharsパッケージも参考にしてください。