!== !== UNIX_INSTALL.txt for Samba release 2.0.7 26 Apr 2000 !== 翻訳者: 斯波和広 佐藤文優 校正者: 中野武雄 更新日: 1999/02/25 SAMBA のインストールとテスト方法 ================================ ステップ 0. マニュアルを読んでください -------------------------------------- Samba を立ち上げるための有用な情報がたくさんあります。マニュアルの読み方が わからない人は、たとえば次のようにするとよいでしょう。 nroff -man smbd.8 | more ほかの情報源としては、Samba の Web サイトが挙げられます。 http://www.samba.org/ 日本語による情報をお求めなら、 http://www.samba.gr.jp/ ステップ 1. バイナリを構築する ------------------------------ 構築にはまず、source ディレクトリで ./configure プログラムを実行します。 このプログラムは、お使いのオペレーティング・システム用に Samba を 自動的に構成します。必要であれば、最初に「./configure --help」を 実行し、利用できる特殊なオプションを調べるとよいでしょう。 まず source/Makefile ファイルを編集します。Makefile には、ほとんどすべて の UNIX に対応したエントリがありますので、 Samba を動作させる オペレーティング・システムのコメントを外してください。 次に「make」と打ってください。バイナリが作成されます。 コンパイルに成功したら、「make install」でバイナリとマニュアルを インストールします。バイナリとマニュアルを別々にインストールしたいなら、 「make installbin」と「make installman」を使います。 以前のバージョンの Samba からアップグレードする場合には、古いバージョンの バイナリが「.old」という拡張子で保存されていることを知っておくと良い でしょう。もし新しいバージョンで障害が起こった場合には、「make revert」 とすれば元のバージョンに戻すことができます。 ステップ 2. すべての段階で重要なステップ ---------------------------------------- この段階で、コーヒーなど元気が出る飲み物を頂きましょう。インストール時の 適当な休憩の取り方にはこつがあります。たぶんここで必要となるでしょう。 Samba をインストールしたことのある人はこのステップはいりません。 ステップ 3. Samba の設定ファイル smb.conf を作る ------------------------------------------------ 見本となる設定ファイルが配布ディレクトリの examples サブ・ディレクトリに あります。これらを注意深く読めば、オプションがどのような機能を果たすか わかると思います。 なんらかの役に立つ設定ファイルのうち、一番単純なのは以下のようなものに なるでしょう。 [global] workgroup = MYGROUP [homes] guest ok = no read only = no これで、サーバにアカウントがある人なら、誰でもどこからでも接続する ことができます。サービス名にはユーザのログイン名か「homes」の どちらかが使えます。(Samba が属するワークグループの設定に注意して ください。手順については BROWSING.TXT をご覧ください。) 「make install」では smb.conf はインストールされません。自分で作る 必要があります。また、ログなどのために Makefile で指定したパスを 作成する必要もあります。(たとえば /usr/local/samba など) Makefile で指定した通りの場所に smb.conf ファイルを確実においてください。 文書 UNIX_SECURITY.txt を読んで、[homes] 共有におけるセキュリティの 設定について、より情報の情報を得ておいてください。 ステップ 4. testparm を使って Samba の設定ファイルをテストする -------------------------------------------------------------- smb.conf ファイルが正しく記述されているかを testparm プログラムを使って テストします。これは重要なことです。testparm が検査して正しければ、 設定されているサービスの一覧が表示されます。でなければ、エラー・メッセージを 吐きます。 先に進む前に、testparm で smb.conf のテストを行い、サービスが適切に 設定されていることを確認してください。 ステップ 5. smbd と nmbd を起動する ----------------------------------- smbd と nmbd をデーモンとして起動するか inetd から起動するかを決めます。 両方を行ってはいけません! smbd と nmbd を inetd.conf に記述し、要求に 応じて inetd から起動するか、コマンドラインや /etc/rc.local などの 起動スクリプトからデーモンとして起動することができます。 コマンドラインのオプションについての詳細はマニュアルを参照してください。 Samba を起動する際に必要となるユーザ権限に関しては、特に注意して 解説を読むようにしてください。ほとんどの場合は root 権限が必要と なるでしょう。 デーモンとして smbd と nmbd を起動させることの主な利点は、最初の 接続要求に対する応答が少々速いことです。しかし、これは大した 差ではありません。 ステップ 5a. inetd.conf から起動する ------------------------------------ 注意:NIS や NIS+ などの分散サービス・マップを利用している環境では、 以下の手順と異なる場合があります。 /etc/services を見てください。ポート 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/services と /etc/inetd.conf で一致するように、どちらかを編集 しなくてはなりません。 注意:多くのシステム上では、smb.conf の「interfaces」オプションを使って インタフェースの IP アドレスとネットマスクを指定しなければなりません。 ネットワークのブロードキャストがわからなければ、root で ifconfig を 実行してください。nmbd は実行時にブロードキャスト・アドレスを決定しようと しますが、UNIX の種類によっては失敗することがあります。 ブロードキャスト・アドレスを調べる方法が知りたいなら、 「nmbd をテストする」の節を参照してください。(訳注:どこにあるんだ?) *** 警告 *** ほとんどの UNIX は、inetd のコマンドラインに 5 つまでの パラメータしか受け取りません。これは、オプションと引数の間に空白を 使わないようにするか、スクリプトを用意して inetd からスクリプトを 起動するようにしてください。 inetd を再起動してください。再起動するには inetd に HUP シグナルを 送るなどします。以前に古いバージョンの nmbd をインストールしていたなら、 nmbd を終了してください。 ステップ 5b.デーモンとして起動させる ------------------------------------ デーモンとして起動するには、以下のようなスクリプトを組んでおく必要があります。 スクリプト名は「startsmb」にしておけばいいでしょう。 #!/bin/sh /usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D できたら「chmod +x startsmb」として startsmb を実行可能にしてください。 このスクリプトは手動でも実行できますし、/etc/rc.local などの起動スクリプト からでも実行できます。 終了したいときには、すべての nmbd と smbd プロセスに kill シグナルを 送りましょう。 注意:SVR4 形式の init システムを利用している場合、Samba をそのシステムに 適用するには examples/svr4-startup スクリプトを見るとよいでしょう。 ステップ 6. サーバで利用可能な共有の一覧を表示する -------------------------------------------------- smbclient -L yourhostname これでサーバ上の共有の一覧が得られます。うまくいかない場合は、どこか設定が 間違っています。この方法は、ほかの LanManager クライアント (WfWg など) で どんな共有が利用可能かを見るのにも使えます。 Samba がユーザ・レベルのセキュリティであるなら、共有一覧を示す前に パスワードを要求してきます。詳しくは smbclient のドキュメントを見てください。 (コマンドラインに -U% オプションを追加すれば、パスワードなしで強制的に 共有を表示させることができます。Samba 以外のサーバでは、このオプションは 機能しないでしょう。) ステップ 7. UNIX のクライアントで接続してみる ---------------------------------------------- smbclient //yourhostname/aservice 通常、「yourhostname」は smbd を実行しているホストの名前です。 「aservice」は smb.conf に定義した任意のサービス名を入れてください。 smb.conf に [homes] セクションが定義してあるなら、サービス名に ユーザ名を指定して試してみましょう。 例えば、UNIX のホスト名が「bambi」でユーザのログイン名が「fred」の場合は、 smbclient //bambi/fred とします。 ステップ 8. DOS, WfWg, Win95 ,NT, OS/2 のクライアントから接続してみる --------------------------------------------------------------------- ディスクをマウントしてみましょう。コマンドラインから、 net use d: \\servername\service と入力します。 プリンタを使う時は net use lpt1: \\servername\spoolservice print filename とします。 うまく動けばおめでとう。動作がおかしければ設定を見直し、 それでもおかしければバグ報告を送ってください。 動かないときは? =============== うまく動作せず、「誰がこの役立たずの文書を書いたのか」などと思い始めたなら、 心が落ち着くまで再びステップ 2 を行うことをお勧めします。 それから DIAGNOSIS.txt と FAQ を読むとよいかも知れません。それでも動かないなら、 メーリング・リストやニュースグループ (詳細は README を参照) に質問を投げて みましょう。Samba は世界中で何千というサイトにうまくインストールされています。 ですから、誰かがすでにその問題に直面し、解決してしまっているかもしれません。 WWW サイトで samba-digest を見返してみることもできます。 問題を解決したなら、更新したドキュメント (またはソースコード) を添えて 是非私に送ってください。次の人が問題を楽に解決できるようになります。 問題の診断 ========== インストールに関する問題があれば、DIAGNOSIS.txt を読んで問題を見つけて ください。 スコープ ID =========== Samba が既定で使用するスコープ ID は空白 (なし) です。よって、すべての Windows ホストでも空白のスコープ ID を設定しなければなりません。実際にスコープ ID を 指定するには nmbd、smbd、smbclient に -i <スコープ ID> オプションを使います。 動作するには、すべての PC でも同じ設定になっている必要があります。 これはすべての PC でも同じ設定になっている必要があります。スコープ ID の指定は 推奨しません。 プロトコル・レベルの選択 ======================== SMB プロトコルにはたくさんの方言があります。Samba は現在 5 つ、 CORE、COREPLUS、LANMAN1、LANMAN2、NT1 と呼ばれているものをサポート しています。 どのレベルまでのプロトコルをサポートするかは smb.conf ファイルで選べます。 既定値は NT1 で、これは大半のサイトでの最良の選択です。 Samba の古いバージョンでは、COREPLUS を使う必要があるかもしれません。 この制限はほぼ修正されています。現在では、LANMAN1 より下のレベルを使うことは あまりないでしょう。COREPLUS に唯一残された利点は、このプロトコルでは WfWg がパスワードの大文字/小文字を維持する点にあります。理由はわかりません。 ほかのプロトコル LANMAN1、LANMAN2、NT1 では、WfWg はパスワードをサーバに 送る前にすべて大文字に変換してしまいます。そのような場合、 「password level=」オプションを使わなければならなくなります。 LANMAN2 と NT1 の主な利点は、いくつかのクライアントで長いファイル名が サポートされる点にあります。(たとえば smbclient、WindowsNT、Windows 95 など) 詳しくは smb.conf のマニュアルを見てください。 注意:WfWg でプリント・キューのレポートをサポートするには、WfWg の既定の プロトコルに TCP/IP を選ばなければなりません。なんらかの理由で NetBEUI を 既定にすると、システムによっては印刷モニタが壊れます。これはおそらく WfWg のバグです。 UNIX から PC への印刷 ===================== UNIX ホストから SMB ベースのサーバを介してプリンタを利用するには、smbclient プログラムをコンパイルし、「smbprint」スクリプトをインストールする必要が あります。詳細は examples/printing/smbprint スクリプト内に説明があります。 SYSV 形式のスクリプト smbprint.sysv もあり、同じように使えます。これにも解説が 含まれています ロック ====== 時々トラブルを起こすのがロックです。 SMB サーバによって行われるロックには 2 つの種類があります。1 つは 「レコード・ロック (record locking)」です。クライアントは、オープンしている ファイルの中をバイト範囲でロックすることができます。もう 1 つは「拒否モード」 です。これはファイルをオープンするときに指定します。 Samba は、UNIX のシステムコール fcntl() を使って「レコード・ロック」を サポートしています。これは大抵、ファイルシステムを持つシステム上の rpc.lockd プロセスへの RPC 呼び出しを使って実装されています。あいにく、 多くの rpc.lockd の実装には非常にバグが多く、特にベンダーが異なる rpc.lockd を用いるとひどいものです。rpc.lockd がクラッシュするのは別に 珍しいことではないです。 また、ほとんどの UNIX では、31 bit 範囲までのロックしかサポートしていない ことも問題となります。PC クライアントは 32 bit 範囲のロック要求を行うため、 これを変換する必要があります。あいにく、多くの PC アプリケーション (特に OLE2 アプリケーション) は、セマフォを設定するのにバイト範囲の 先頭ビットを利用しています。Samba はそのようなアプリケーションをサポート するために変換を施し、変換が完全に成功することを保証します。 SMB サーバはファイルを読み書きする前に、厳密にロックの状態を検査しなければ なりません。残念ながら fcntl() を利用する方法は遅く、rpc.lockd に負荷を かけてしまいます。クライアントにとってロックが重要である場合、読み書きの 前には必ずロック要求を行うものと考えられるため、Samba による読み書き時の ロック状態の検査はほとんど不必要と考えられます。既定で Samba は、 クライアントから明示的に問い合わせされた時だけロック呼び出しを行います。 「strict locking = yes」と設定すると、すべての読み書きにおいてロック検査の 呼び出しが行われます。 範囲によるロック (レコード・ロック) は「locking = no」と設定することで 完全に無効にすることができます。これは、共有でロックをサポートしないときや ロックする必要がない (CD-ROM など) ときに役に立ちます。この場合、 Samba はロック呼び出しの戻り値を偽り、常にロックに成功したとクライアントに 知らせます。 もう 1 つのロックの種類「拒否モード」は、アプリケーションがファイルを オープンするときに設定します。このモードは、オープンしたファイルへの 同時アクセスとして、どのような種類の操作を許可するかを決定します。 クライアントは DENY_NONE、DENY_READ、DENY_WRITE、または DENY_ALL を 問い合わせることができます。また、互換性のためのモード DENY_FCB と DENY_DOS もあります。 共有モード (拒否モード) は「share modes = no」を使って無効にすることが できます。共有モードのコードが遅いために負荷が高いサーバに使うのが よいでしょう。共有メモリを使った非常に高速で完全な共有モードを行う方法も あります (お使いの OS が共有メモリをサポートしているなら)。詳細は、 Makefile の FAST_SHARE_MODES を参照してください。 ユーザ名のマッピング ==================== PC と UNIX サーバで異なるユーザ名を使用している場合は「username map」 オプションを使用してみてください。詳しくは smb.conf のマニュアルを ご覧ください。 他 (英語圏外) の文字セット ========================== アクセント文字などが入っているファイル名で問題が起きた場合、 (ドイツ語、フランス語、スカンジナビアなどの文字セット) smb.conf に「valid chars」オプションを用い、examples ディレクトリにある validchars パッケージを利用して設定しましょう。 訳注:日本語を扱うクライアントに対応するには、smb.conf の [global] に [global] client code page = 932 coding system = euc などとします。coding system オプションに指定できる値は docs/README.jis を 参照してください。ただし、このドキュメントは記述がやや古いです。 現在の Samba では、コンパイル時の KANJI オプションは必要ありません。