samba の料理方法

Microsoft Windows 系のネットワーク・プロトコル SMB を使用して Solaris をサーバーとしてファイルやプリンタを共有しましょう。

最終更新日 : 1998 年 12 月 01 日


  1. 料理の方法

    Microsoft WindowsNT 4.0 + Service Pack 3 よりパスワードが DES 暗号化されました。それに対応した samba を作成する場合には緑色の場所も行ってください。
    DES への対応が必要が無い場合は読み飛ばしてください。
    また、 WinNT4.0 側で対応する場合は、赤色を行ってください。

  2. 材料

    • Solaris[ developper ]以上ががインストールされたコンピュータ。
      今回は Solaris2.6 / Ultra1 を素材にしました。

    • GNU gcc の実行環境

    • GNU gzip の実行環境

    • samba のソースコード

    • DES のソースコード

  3. 材料の入手

    ソース・コードを入手しないと話になりませんので、誰かにもらうかお買い物に行きましょう。
    下記の場所や雑誌の付録から入手してください。

    Web siet だと総本山 http://samba.anu.edu.au/samba/ にありますし、 ftp ミラーサイトだと ftp://ring.asahi-net.or.jp/archives/net/samba/ とか ftp://ring.aist.go.jp/archives/net/samba/ とか ftp://ftp.win.ne.jp/pub/network/samba/ があります。
    今回は、 ftp://ftp.win.ne.jp/pub/network/samba/ より samba-1.9.18p10.tar.gz をもってきました。

  4. DES の下拵え

    DES ライブラリの用意をします。DES ライブラリの料理方法 を参考に作っておいてください。
    DES ライブラリで samba に必要な以下のもの ( libdes.a, des, des.h ) を適当なディレクトリにまとめておきます。 ( libdes は /usr/local にインストールされ、まとめて置くパスは /usr/local/libdes にしています。 )

    # cd /usr/local
    # mkdir libdes
    # cd libdes
    # ln -s ../lib/libdes.a
    # ln -s ../bin/des
    # ln -s ../include/des.h

  5. 下拵え

    まず材料を解凍します。
    パスは[ /usr/bin /usr/sbin /usr/ccs /usr/ccs/bin /usr/openwin/bin /usr/openwin/bin/xview /usr/local/bin . ]に貼ってあります。

    # cd /usr/local/compile
    # gzip -dc samba-1.9.18p10.tar.gz | tar xvf -
    # cd samba-1.9.18p10
    # cd source

  6. さてコンパイル

    Makefile を OS と環境に合わせて変更しましょう。
    gcc を使うように設定して、 Solaris2.6 なので Solaris2.4 and later の場所の GLAGSM, LIBSM, AWK をコメントアウトし、日本語ファイルを扱うために FLAGSM に -DKANJI=\"euc\" を追加します。
    WORKGROUP の設定もありますが後で smb.comf で変更できるようなので、ほっておきます。

    DES の設定も追加しておきます。

    # vi Makefile

    # CC = gcc → CC = gcc

    # This is for SUNOS5.4 and later (also known as Solaris 2.4 and later)
    # contributed by Andrew.Tridgell@anu.edu.au
    # FLAGSM = -DSUNOS5 -DSHADOW_PWD -DNETGROUP -DFAST_SHARE_MODES
    # LIBSM = -lsocket -lnsl
    # AWK = nawk

    # This is for SUNOS5.4 and later (also known as Solaris 2.4 and later)
    # contributed by Andrew.Tridgell@anu.edu.au
    FLAGSM = -DSUNOS5 -DSHADOW_PWD -DNETGROUP -DFAST_SHARE_MODES -DKANJI=\"euc\"
    LIBSM = -lsocket -lnsl
    AWK = nawk
    DES_BASE = /usr/local/libdes
    DES_FLAGS = -I$(DES_BASE)
    DES_LIB = -L$(DES_BASE) -ldes
    PASSWD_FLAGS = -DUSE_LIBDES -DSMB_PASSWD=\"$(BINDIR)/smbpasswd\" -DSMB_PASSWD_FILE =\"$(BASEDIR)/private/smbpasswd\"

    # make

  7. さぁ、盛り付け 1

    Makefile に install オプションがあるのでそれを使いましょう。デフォルトだと /usr/local/samba にゴシャゴシャ盛り付けられます。違う場所を望む場合は Makefile の中の BASEDIR の値を変更して一つ戻る。オイオイ


    # make install

    mksmbpasswd.sh というのが残ってしまいますので、コピーしておきます。

    # cp mksmbpasswd.sh /usr/local/samba/bin

  8. 盛り付け 2

    設定ファイルのサンプルを所定の場所にコピーします。

    # cp ../examples/simple/smb.conf /usr/local/samba/lib
    # cd /usr/local/samba/lib

    基本的な設定だけおこないます。 [ global ] [ homes ] [ printers ] [ public ] と雛形設定があるのでそれをベースに設定します。
    コメントアウトは、セミコロン [ ; ] です。
    WORKGROUP は tamatama にしました。

    # vi smb.conf

    [ global ] 全体に対する設定

    • workgroup = tamatama : ワークグループ名をここで指定しました。
    • printing = sysv : Solaris.x なので SYSTEM V なので sysv 。 ( bsd/hpux/aix ... )
    • princap name = lpstat : /etc/printcap は無いので lpstat 。
    • guest account = nobody : サービスにアクセスするユーザー名。
    • password level =8 : パスワードは 8 文字まで有効なので、承認に失敗した時、そのなかで大文字小文字の組み合わせを自動でやってくれるようになるそうです。
      1 だと ABCD -> Abcd, aBcd, abCd, abcD を試してくれるそうです。
      2 だと 1 に加え ABCD -> ABcd, AbCd, AbcD, aBCd ... などまで試してくれるそうです。
    • coding system = euc : euc モードで漢字を使用するので Makefile で -DKANJI で指定したものと同じものを指定しましょ。
    • log file = /usr/local/samba/var/log.%m : どこでもいいですけど、ログが必要ならそれを収めるディレクトリです。
    • encrypt passwords と security は DES の設定です。
    [global]
    printing = bsd
    printcap name = /etc/printcap
    load printers = yes
    guest account = pcguest
    ; This next option sets a separate log file for each client. Remove
    ; it if you want a combined log file.
    log file = /usr/local/samba/log.%m

    [global]
    encrypt passwords = yes
    security = user
    workgroup = tamatama
    printing = sysv
    printcap name = lpstat
    load printers = yes
    guest account = nobody
    password level = 8
    ; This next option sets a separate log file for each client. Remove
    ; it if you want a combined log file.
    log file = /usr/local/samba/var/log.%m
    log level = 1
    coding system = euc
    [ homes ] ホームディレクトリに対する設定
    • create mode = 0640 : 作成されるファイルのパーミッションだけ変更しました。
    [homes]
    comment = Home Directories
    browseable = no
    read only = no
    create mode = 0750

    [homes]
    comment = Home Directories
    browseable = no
    read only = no
    guest ok = no
    create mode = 0640
    [ printers ] プリンターに関する設定
    • path = /tmp : スプール用テンポラリディレクトリを /tmp にしてみました。
    [printers]
    comment = All Printers
    browseable = no
    printable = yes
    public = no
    writable = no
    create mode = 0700

    [printers]
    comment = All Printers
    path = /tmp
    guest ok = yes
    print ok = yes
    available = yes
    browseable = no
    printable = yes
    public = yes
    writable = no
    create mode = 0700
    [ public ] パブリックディレクトリに関する設定
    • path = /export/home/public : chmod 777 で作成された誰でもアクセスできるディレクトリです。
    • create mode = 0666 : ここでの作成されるファイルのパーミッションでやんす。
    ;[public]
    ; comment = Public Stuff
    ; path = /usr/somewhere/public
    ; public = yes
    ; writable = no
    ; printable = no
    ; write list = @staff

    [public]
    path = /export/home/public
    public = yes
    only guest = yes
    writable = yes
    printable = no
    create mode = 0666
    #

  9. 盛り付けの確認

    smb.conf がちゃんと書けたかチェックするツールが付属していますので、これを起動してエラーが出るかどうか見てみましょう。


    # ../bin/testpram

    チロチロとメッセージが出ます。ここで warning とか error が無ければとりあえず大丈夫じゃないでしょうか。で、 [ Return ] すると設定がバラバラバラと表示されます。設定された内容を確認してみましょう。もし、 warning とか error があったらどこでエラーになっているか確認して smb.conf を修正しましょ。
    ただのスペルミスなんかだったりしますです。

  10. 盛り付け - 2

    samba 用のパスワードファイルを作成します。

    # cd /usr/local/samba/bin
    # mkdir /usr/local/samba/private
    # cat /etc/passwd | /usr/local/samba/bin/mksmbpasswd.sh > /usr/local/samba/private/smbpasswd
    # chmod 600 /usr/local/samba/private/smbpasswd

    samba へのパスワードの設定をおこないます。
    /usr/local/samba/smbpasswd を使用します。ログイン名 pochi さんで設定する場合には、引数としてログイン名を与えるようです。

    # cd /usr/local/samba/bin
    # ./smbpasswd pochi
    New SMB password:
    Retype new SMB password:
    Password changed

    /usr/local/samba/private/smbpasswd を確認するとちゃんとパスワードが設定さえているのが確認できると思いますよ。
    使用する人全部のパスワードを設定しましょうね。

  11. 味見 1

    さて daemon として起動してみて Windows 系マシンで見えるか試してみましょう。


    # cd ../bin
    # smdb -D
    # nmdb -D

    これで samba の daemon が起動しました。後は Windows の方の設定になります。

  12. 味見 2

    [ コントロールパネル ]-[ ネットワーク ] で、

    • Microsoft ネットワーククライアント
    • TCP/IP プロトコル
    • ネットワークカード
    • Microsoft ネットワーク共有サービス
    を設定しておきましょう。

    Windows のログイン名と同じログイン名が Solaris 側の /etc/passwd にあることを確認しましょう。 Solaris 側でのパスワードが必要になります。
    [ ネットワークコンピュータ ]-[ ネットワーク全体 ] をダブルクリックしてみましょう。 samb で設定したワークグループ名が見えると思います。
    それをダブルクリックすると Solaris のホスト名のコンピュータが見えると思います。
    それをまたダブルクリックすると、プリンターやパブリックのフォルダーや自分のホームディレクトリのフォルダーが見えると思います。
    パブリックのフォルダーはダブルクリックすると、承認なしで開くでしょ ?
    ホームディレクトリはダブルクリックすると、パスワードを要求してくると思います。 Solaris 側のパスワードを入力してみてください。開くでしょ ?
    プリンタをクリックするとプリンタの設定ウィンドウが開くと思います。その指示に従いドライバなどをインストールすると使用できるようになります。

    問題無く動けば OK !!
    プリンタなど試したていたら削除しておきましょう。
    Solaris 側では daemon 化している smdb と mndb を ps -A で探して kill して味見はおしまい。

  13. 味見 3

    WinNT4.0 での対応策で、 WinNT4.0 側でDES 暗号化しないように設定しちゃいましょ。
    samba を作り替えなくていいですもんね。:)

    1. レジストリ・エディタを起動します。
    2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters を探します。
    3. プルダウンメニューで [ 編集(E) ]-[ 値の追加(V) ] をします。
    4. 以下のような設定にします。
      Value Name EnablePlainTextPassword
      Data Type REG_DWORD
      Data 1

    これで WinNT4.0 をリブートしてみてください。 samba にログインできるようになるはずです。きっとなるよなぁ。

  14. 食事

    ちゃんとコンピュータ起動時に samba も起動するようにしましょう。
    rc2.d に置くためのスクリプトのサンプルが /export/home/compile/samba-1.9.18p10/examples/svr4-startup に samba.serverという名前で置かれてあります。これをベースに変更しましょう。
    サンプルは /opt/samba にインストールすることを前提としているみたいですね。これを /usr/local/samba に変更しましょ。
    samba のログはどこがいいのでしょうね ? 今回の例では samba をインストールしたディレクトリに var なんて作ってますが、他のログもある /var の下に samba なんてディレクトリを作った方が管理が楽そうな気がしますです。ログファイルのパスは smb.conf で指定するか、この S99samba.sever で smbd と nmdb に起動時のオプションで指定できます。起動時のオプションの方が採用されるようですね。


    # cd /export/home/compile/samba-1.9.18p10/examples/svr4-startup
    # cp samba.server S99samba.server
    # vi S99samba.server

    /opt/samba/bin/smbd -D -s/opt/samba/smb.conf

    /usr/local/samba/bin/smbd -D -s/usr/local/samba/lib/smb.conf

    /opt/samba/bin/nmbd -D -l/opt/samba/log -s/opt/samba/smb.conf

    /usr/local/samba/bin/nmbd -D -l/usr/local/samba/var/log -s/usr/local/samba/lib/smb.conf

    # cp -i S99samba.server /etc/rc2.d

    これでコンピュータの起動時に samba が起動するようになります。
    /etc/rc2.d にコピーする前に試したい時は、

    スタート : # S99samba.server start
    ストップ : # S99samba.server stop

    で、試してくださいな。

  15. 後片付け

    ソース・コードなどはバックアップしておいて作業した生ごみは必要がなければ消してしまいましょう。

    # cd /usr/local/compile
    # rm -r samba-1.9.18p10 samba-1.9.18p10.tar.gz

  16. 味付け - 1

    マウントした時点でクライアントにメッセージを送るようにします。つねに接続しているようなクライアントの使い方だと意味が無いですねぇ。
    クライアント側では、 WindowsNT の場合 message service というサービスが動いていること、 Windows95/98 の場合 c:\windows\winpopup.exe が起動している事が条件になります。
    方法としては、 /usr/local/samba/bin/smbclient を smb.conf から起動します。
    /export/home/public が共有フォルダとします。
    まず、送るメッセージの内容を共有フォルダに作成します。

    # vi /export/home/public/.messages

    Welcome to samba directory.
    #

    次に /usr/local/samba/lib/smb.conf の [public] セクションに preexec を追加します。

    # vi /usr/local/samba/lib/smb.conf

    preexec = sh -c '/usr/local/samba/bin/smbclient -U %h -M %m < /export/home/public/.messages'&
    #

    これで samba を再起動してフォルダをマウントするとメッセージが送られてくるようになります。
    マニュアルで UNIX 側から送るには sbmclient に直接メッセージを放り込みます。

    # sbmclient -M ホスト名 < メッセージファイル

  17. 味付け - 2

    WINS client にしちゃいます。当然ですが srever 機能はなくなります。
    /usr/local/samba/lib/smb.conf の [global] セクションに設定します。

    # vi /usr/local/samba/lib/smb.cnf

    wins support = no
    wins server = IPaddress_of_WINSserver
    #

    これでいいと思います。実は試してませんです。:)


[ Solaris 料理コーナー ] [ トップページ ]

BEKKOAME//INTERNET で公開していたページです。
作成: 1999 年 05 月 23 日〜 Copyright (C) 1999 Katsauki Shimizu <katsuaki-s @_nifty.com> All rights reserved.

access counter