ファイルサーバ(Samba3.0系)の構築(SuSE編)


SuSE9.2では、SambaのRPM が用意されており、バージョンが3.0系になり日本語環境が使えるようになっています。Samba にはSwat という GUI での設定ツールがあり、SuSE9.2ではこれも日本語化されています。 YaST にも設定ツールがありますが、Swat に比べると非常に貧弱で設定できることが限られるので、こちらは使用しなくてもよいでしょう。

■Samba + Swat のインストール

Samba は SuSE に RPM があるので、YaST でインストールするだけです。

  1. YaST コントロールセンタを起動し、「ソフトウェア」の「ソフトウェアのインストール/削除」を起動する。
  2. 「フィルタ」 を 「検索」 とし検索欄に 「samba」 と入力し 「検索」 ボタンを押す。
  3. 右側に該当するパッケージが出てくるので、その中の赤字のものとYaST関係にチェックマークを入れて 「了解」 を押しておしまい。

■Samba + Swat の環境設定

インストールが完了したら、動作させるためのいくつかの環境設定を行います。

◆Swat の services への登録

/etc/services に下記のエントリがあるか確認し、なければ追加します。SuSE なら既にあるはずです。

swat   901/tcp

◆Samba + Swat の起動設定

ここでは、Samba と Swat の自動起動設定を行います。

  1. Samba の起動設定

    Samba とIP上でのNetBIOS名での名前解決用サービス(nmb)の自動起動スクリプトは上記でインストールされているはずですので、/etc/init.d/smb(nmb) があるか確認し、あれば chkconfig smb(nmb) on して起動できるようにします。

    # chkconfig smb on
    # chkconfig --list smb
    smb    0:off  1:off  2:off  
    3:on  4:off  5:on  6:off
    # chkconfig nmb on
    # chkconfig --list nmb
    nmb    0:off  1:off  2:off  
    3:on  4:off  5:on  6:off

    YaST で設定することもできます。

    1. YaST コントロールセンタを起動し、「システム」の「ランレベルエディタ」を起動する。
    2. 「サービス」 で 「smb(nmb)」 を選択し、 「有効にする」 ボタンを押すと 起動結果が表示されるので確認し、「了解」 ボタンを押す。
    3. 「完了」 ボタンを押すと、設定の保存を確認してくるので、「はい」 を押す。

  2. Swat の起動設定

    続いて、Swat の自動起動スクリプトの設定を行います。デフォルトでは Swat を起動しないようになっているのと、localhost からしかアクセスできないようになっているので、家庭内からはアクセスできるように /etc/xinetd.d/swat を下記のように修正します。(青字は削除、赤字は追加、緑字は変更したものです。)
    こちらも、YaST から設定できますが、only_from オプションは設定できないため、結局直接編集が必要になります。設定ツール類の限界かと思います。

    # SWAT is the Samba Web Admin Tool.
    service swat
    {
            socket_type     =  stream
            protocol        =  tcp
            wait            =  no
            user            =  root
            server          =  /usr/sbin/swat
            only_from       =  127.0.0.1
           
    only_from       =  192.168.1.0/24
            log_on_failure  += USERID
            disable         = 
    no # yes -> noへ変更
    }


  3. SuSEのデフォルトのsmb.confが、/usr/share/doc/packages/samba/examples/smb.conf.SUSE としてあるので、これをコピーして使用すればよいでしょう。

    # cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    # cp /usr/share/doc/packages/samba/examples/smb.conf.SUSE /etc/samba/smb.conf

◆Samba パスワードの設定

Windows2000 や XP では暗号化されたパスワードを使用しており、それに合わせて samba 側でも対応が必要であり、以下の手順で設定します。
  1. Samba 用には別個のパスワードファイルを作成するが、既存の /etc/passwd ファイルをベースに Samba パスワードファイルを作成できるスクリプト(mksmbpasswd.sh)があるのでそれを利用する。このスクリプトは、/usr/share/doc/packages/samba/examples/scripts 配下にあるので、ディレクトリを移動し下記のように入力すれば、システムに登録されたユーザが全て smbpasswd にコピーされる。但し、mksmbpasswd.sh ではパスワードまではコピーされない(ユーザは登録されているが、パスワードが設定されていないので使用できない状態)ので、Samba を使用するユーザの Samba パスワードを別途、登録する必要がある。また、システムユーザもコピーされてしまうので、必要ないので消しておいても良い。

    # cd /usr/share/doc/packages/samba/examples/scripts
    # sh mksmbpasswd.sh < /etc/passwd >> /etc/samba/smbpasswd

  2. root だけが読み取り/書き込みを行えるように Samba パスワードファイルのアクセス権を変更する。

    # chmod 600 /etc/samba/smbpasswd

  3. mksmbpasswd.shではパスワードまではコピーされない(ユーザは登録されているが、パスワードが設定されていないので使用できない状態)ので、Sambaを使用するユーザのSambaパスワードを登録する。コマンド投入後、パスワードを聞かれるので2回投入する。

    # smbpasswd ユーザ名

      

■ファイヤウォールの設定(SuSEfirewall2の場合)

YaSTのファイヤウォール(SuSE firewall2)で設定を行っている場合は、Swat および Samba を動かす前に設定が必要になります。設定は、YaSTのファイヤウォールから行っていくとファイルサーバとしてSambaサーバがあり、これをチェックすれば使えるように思えますが、YaSTにバグ?(yast2-firewall-2.10.13-2.1。何故かUDPを使うnetbios-ns/netbios-dgmも含めて、全てTCPを開放している。)があり、sambaサーバの開放がうまくできません。また、SuSE Firewall2ではブロードキャストに対するフィルタがデフォルトで設定されているため、NetBIOSでの名前解決ができなくなっていますので、以下の手順で設定してください。なお、下記はサーバにLANカードを1枚挿して、ルータ配下に設置している時の例である。(「セキュリティとユーザ」の「ファイヤウォール」を使わず、「/etc/sysconfigエディター」で全て設定して、ランレベルエディタでSuSEfirewall2を起動する方法でもよい。が、下記は手抜きの方法でも問題はない。)なお、Swat および Samba で使用しているプロトコルとポートは以下のとおりです。

プロトコル ポート番号 名 称 備 考
TCP 139 netbios-ssn  
445 microsoft-ds Windows2000/XPは、139の代わりにまずこちらでトライするので開けたほうがよい。
901 swat  
UDP 137 netbios-ns  
138 netbios-dgm  

  1. YaST コントロールセンタを起動し、「セキュリティとユーザ」の「ファイヤウォール」を起動する。

  2. 「ファイヤウォールの設定:基本設定」で、外部インタフェースとして、「eth-id-aa.bb.cc.dd.ee.ff」のように表示されているLANカードを選択し、内部インタフェースは「なし」に設定し、「次へ」を押す。

  3. 「ファイヤウォールの設定:サービス」 で 「Sambaサーバ」 をチェックせず、下にある付加サービスの「エキスパート」を選択して、上表のとおり、「TCPサービス」に「139 445 901」と設定ポートを空白で区切り設定し、「UDPサービス」に「137:138」と通し番号を「:」で区切って設定し(2ポートなので空白区切りでも可)、「了解」 ボタンを押す。

  4. 以降、フィーチャやログオプションを設定(基本的はデフォルトのままで可)して、最後に、「続行」 ボタンを押して設定を保存してファイヤウォールを起動する。

  5. 続いてブロードキャストフィルタを開放するため、「システム」の「/etc/sysconfigエディター」を起動する。

  6. 「Network」->「Firewall」->「SuSEfirewall2」と開き、「FW_ALLOW_FW_BROADCAST」の設定を「yes」とし、「完了」->「続行」 ボタンを押して設定を保存してファイヤウォールを起動する。

■SwatによるSambaの設定

上記で、Swat および Samba を動かす基本的な設定は完了したので、これから Samba の設定を行っていきます。Samba の設定は、/etc/smb.conf にパラメータを設定しますが、Swat を使用することにより設定が簡単にできます。まずは、下記で Swat を起動できるようにします。xinetd を再起動したら、一応、netstat -ln で901番ポートが listen 状態になっているか確認しておきましょう。

# /etc/init.d/xinetd restart
ブラウザから、http//:Sambaのサーバ名(またはIPアドレス):901/と入力するとログイン画面が出ますので、ユーザ名:root、パスワード:rootのパスワードを入力すると、Swatが起動します。

◆システムポリシー

Sambaは、以下の前提条件で動かすことにしました。
  1. セキュリティはユーザ名とパスワードで制御する。
  2. ファイル共有は、家庭内全体での共有(public)と各自のホームディレクトリアクセスを許容する。万が一のオペミスに備え、ゴミ箱を設置する。
  3. プリンタ共有は、行わない。(cupsでプリントサーバとして動作させるので不要)

◆全体設定(GROBALS)

ここで、Samba全体の設定をする。ほとんどデフォルトのままであり、ポイントのみを示す。Swatを使用すると、各パラメータの説明を見ることができるので設定も容易である。(下記は、一部、詳細表示にしないと設定できない項目もある。)

No. パラメータ 概  要
1 dos charset = CP850 CP932

Windows側で利用されている文字コードを指定。Windowsの場合は「CP932」。

2 unix charset = UTF-8 UNIX上のファイルシステムの文字コードを指定。SuSE9.2は「UTF-8」。
3 display charset = LOCALE SWATの画面に表示される文字コードを指定。システムデフォルトを指定。
4 workgroup = WORKGROUP Windowsのワークグループ名を指定。(Windowsクライアントと同じもの)
5 server string = Samba 3.0.9-2.1-SUSE
 (%L: Samba %v on %h)
ネットワークコンピュータで表示する時のサーバの説明に表示される内容。(変更するなら、%LはNetBIOS名、 %vはSambaのバージョン、 %hはホスト名に置き換えられて表示できるので利用しても良い。)
6 security = USER ユーザ名とパスワードでのアクセス制御。必ずUNIXアカウントが必要。
7 encrypt passwords = Yes 暗号化パスワードを使用。
8 update encrypted = No 初めから暗号化パスワードを使用するのでNoのままとする。
9 unix password sync = No UNIXパスワードは同期させない。
10 passdb backend = smbpasswd smbpasswdで認証。
10 guest account = nobody guest account は取り敢えずデフォルトのままとした。
11 load printers = Yes No プリンタ共有は行わない。(cupsでプリントサーバとして動作させるので不要)
その他は、デフォルトのままでファイル共有だけなら取り敢えず使用できます。必要に応じて設定変更すればいいと思います。

◆ゴミ箱の設定

Sambaの3.0系(2.2.x系でも後半の日本語版では使用できるらしい?)ではゴミ箱機能が使えるので、今回はおやじのオチョコチョイ対策として動作させた。なお、これらの設定は詳細モードにしても設定できない項目が多いため、smb.conf を直接修正していきます。
  1. VFSモジュール関係の追加設定

    下記設定を /etc/samba/smb.conf のゴミ箱を使用したいディレクトリ毎( [public]等 ) に追加するか、全てのディレクトリに適用するなら、/etc/samba/smb.conf の [global]に下記設定を追加する。

    [public]
       comment= Public area
       path = /var/spool/samba/public 
       writable =yes
       browseable = yes

       vfs objects = recycle
      (recycle:repository = .recycle)
       recycle:keeptree = yes
       recycle:noversions = yes


    ・vsf objects : 使用するVFSモジュールを指定する。複数の記述が可能であるが、今回はゴミ箱のみ指定。
    (・recycle:repository : ゴミ箱ディレクトリへのパスを指定。敢えて.recycleから変更する必要がないなら不要。) 
    ・recycle:keeptree : 削除時にディレクトリ構造を維持(1)するか、削除されたファイルはゴミ箱に別に保存(0)するかを指定。
    ・recycle:noversions : 同名の二つのファイルが削除されたとき、 新しく削除されたファイルをゴミ箱に保存する指定。

    パラメータの詳細は、下記を参照してください。

    http://www.samba.gr.jp/project/translation/3.0/htmldocs/VFS.html#id2571679

  2. 共有ディレクトリへのゴミ箱フォルダの作成

    共有ディレクトリの場合はゴミ箱フォルダを予め作成しておかないと、最初に削除行為をしたユーザ用としてゴミ箱が作成されてしまい他のユーザが扱えなくなってしまうので、事前にパーミッション777のゴミ箱フォルダを作成しておく。当然、ユーザディレクトリはそのままの自動生成で良い。

    # cd /var/spool/samba/public
    # mkdir .recycle
    # chmod 777 .recycle

■Swat による Samba の起動

上記で、Swat および Samba を動かす基本的な設定は完了したので、動作状況から、smbd と nmbd を起動します。後は、マイネットワークからアクセスしたり、必要に応じてクライアントでネットワークドライブに割当てることもできます。
なお、SuSE9.0から9.2に移行する場合、サーバ間でデータ転送すると文字化けしてしまうので、一旦Windowsクライアントを介して転送するようにしてください。


Top Pageへ