ファイルサーバ(Samba)の構築


家庭内でのファイル共有(デジカメの写真等)のため、Sambaでファイルサーバを構築してみました。SambaにはSwatというGUIでの設定ツールがあるようなので、今回はこれを使ってみることにしました。
ネットワーク構成の変更により、サーバがルータ超えになりSambaにアクセスできなくなったのでWINSサーバを動かし、クライアント側にも設定しました。(2003.05.07)

■Samba+Swatのインストール

但し、おやじが使用しているRedHat 8.0のSwatは日本語表示ができないので、日本 Samba ユーザ会のホームページから、別途、ソースをダウンロードして入れ替えることにしました。

◆samba+swatのrpmの削除

rpmコマンドを使用し下記手順で、インストールされているパッケージ名を調査し、samba-xxxxxというパッケージを全てアンインストール(-eオプション)します。

 # rpm -qa | grep samba
 samba-client-2.2.5-10
 samba-common-2.2.5-10
 samba-swat-2.2.5-10
 # rpm -e samba-client-2.2.5-10
 # rpm -e samba-common-2.2.5-10
 # rpm -e samba-swat-2.2.5-10


◆Samba+Swatのインストール

日本 Sambaユーザ会のホームページからソース(おやじがダウンロードしたのは、samba-2.2.7b-ja-1.0.tar.gz)をダウンロードしてきます。
ダウンロードしたファイルを適当なディレクトリに置き、解凍後、sourceディレクトリに移動しコンパイル、インストールします。configureのオプションについては、日本Sambaユーザ会にあるドキュメントを参考にしました。ベースは、解凍した中にある samba-2.2.7b-ja-1.0/packaging/SambaJPディレクトリ下にあるsamba.spec.v3です。

 # tar zxfv samba-2.2.7b-ja-1.0.tar.gz
 # cd samba-2.2.7b-ja-1.0/source
 # ./configure \
 --prefix=/usr \
 --exec-prefix=/usr \
 --bindir=/usr/bin \
 --sbindir=/usr/sbin \
 --sysconfdir=/etc \
 --includedir=/usr/include \
 --libdir=/etc/samba \
 --localstatedir=/var \
 --with-fhs \
 --with-privatedir=/etc/samba \
 --with-lockdir=/var/lock/samba \
 --with-piddir=/var/run \
 --with-swatdir=/usr/share/swat \
 --with-codepagedir=/usr/share/samba/codepages \
 --with-automount \
 --with-smbmount \
 --with-syslog \
 --with-pam \
 --with-pam_smbpass \
 --with-quotas \
 --without-smbwrapper \
 --with-msdfs \
 --with-utmp \
 --with-i18n-swat
  # make
  # make install

 

■Samba+Swatの環境設定

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

◆Swatのservicesへの登録

/etc/servicesに下記のエントリがあるか確認し、なければ追加します。RedHatでSambaをインストールしてあったなら既にあるはずです。

 swat   901   /tcp

◆Samba+Swatの起動設定

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

  1. Sambaの起動設定

    Sambaの自動起動スクリプトは上記でインストールされているはずですので、/etc/rc.d/init.d/smbがあるか確認し、あればchkconfig smb onして起動できるようにします。

     # cd /etc/rc.d/init.d
     # chkconfig smb on
     # chkconfig --list smb
     smb    0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ


     なければ、解凍したsamba-2.2.7b-ja-1.0/packaging/RedHatディレクトリ配下に、smb.initというSambaの自動起動スクリプトがあるので、これを下記のように/etc/rc.d/init.d/smbとしてコピーし、chkconfigしておけば、ランレベル3、4、5で起動、停止が可能となります。

     # cp samba-2.2.7b-ja-1.0/packaging/RedHat/smb.init /etc/rc.d/init.d/smb
     # chmod 755 /etc/rc.d/init.d/smb
     # chkconfig --add smb
     # chkconfig --list smb
     smb    0:オフ 1:オフ 2:オフ 3:オン 4:オン 5:オン 6:オフ


  2. Swatの起動設定

    続いて、Swatの自動起動スクリプト(samba.xinetd)を/etc/xinetd.d/swatとしてコピーします。

     # cp samba-2.2.7b-ja-1.0/packaging/RedHat/samba.xinetd /etc/xinetd.d/swat

    コピー後、デフォルトではSwatを起動しないようになっているのと、localhostからしかアクセスできないようになっているので、家庭内からはアクセスできるように/etc/xinetd.d/swatを下記のように修正します。(青字は削除、赤字は追加、緑字は変更したものです。)

    # default: off
    # description: SWAT is the Samba Web Admin Tool. Use swat \
    #       to configure your Samba server. To use SWAT, \
    #       connect to port 901 with your favorite web browser. 
    service swat
    {
            port            = 901
            socket_type     = stream
            wait            = no
            only_from       = 127.0.0.1
            only_from       = 192.168.1.0/24
            user            = root
            server          = /usr/sbin/swat
            log_on_failure  += USERID
            disable         = no # yes -> noへ変更
    }

  3. Swatでの認証のための/etc/pam.d/sambaファイルがあるか確認します。無い場合は、パッケージのsamba-2.2.7b-ja-1.0/packaging/RedHat配下にあるsamba.pamdをコピーしておきます。

     # cp samba-2.2.7b-ja-1.0/packaging/RedHat/samba.pamd /etc/pam.d/samba

  4. 日本語環境用のデフォルトのsmb.confが、パッケージのsamba-2.2.7b-ja-1.0/packaging/SambaJP配下にあるので、これをコピーして使用すれば設定も簡単です。

     # cp samba-2.2.7b-ja-1.0/packaging/SambaJP/smb.conf /etc/samba/smb.conf

◆Sambaパスワードの設定

RedHat8.0では、暗号化されたパスワードがデフォルトで使用可能なため、以下の手順で設定します。
  1. Samba用には別個のパスワードファイルを作成するが、既存の/etc/passwdファイルをベースにSambaパスワードファイルを作成できるスクリプト(mksmbpasswd.sh)があるので、今回は、この方法で行った。このスクリプトは、samba-2.2.7b-ja-1.0/source/script配下にあるので、ディレクトリを移動し下記のように入力すれば、システムに登録されたユーザが全てsmbpasswdにコピーされる。但し、mksmbpasswd.shではパスワードまではコピーされない(ユーザは登録されているが、パスワードが設定されていないので使用できない状態)ので、Sambaを使用するユーザのSambaパスワードを別途、登録する必要がある。また、システムユーザもコピーされてしまうので、必要ないので消しておいても良い。

     # cd samba-2.2.7b-ja-1.0/source/script
     # sh mksmbpasswd.sh < /etc/passwd > /etc/samba/smbpasswd

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

     # chmod 600 /etc/samba/smbpasswd

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

     # smbpasswd ユーザ名

      

■ログファイルの作成とlogrotateの設定

sambaのログを採るためには、あらかじめディレクトリ(/var/log/samba)を作成しておかなければなりません。合わせてログを定期的に切り替えるためには、パッケージのsamba-2.2.7b-ja-1.0/packaging/RedHat配下にあるsamba.logを/etc/logrotate.d配下に下記のようにsambaとしてコピーしておけば、他のlog同様、1週間毎にlogrotateされます。

 # mkdir /var/log/samba
 # cp samba.log /etc/logrotate.d/samba

■SwatによるSambaの設定

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

 # /etc/rc.d/init.d/xinetd restart
ブラウザから、http//:Sambaのサーバ名(またはIPアドレス):901/と入力するとログイン画面が出ますので、ユーザ名:root、パスワード:rootのパスワードを入力すると、日本語版Swatが起動します。
901番ポートがListen状態なのにうまく繋がらない場合は、ファイヤウォール設定で接続が拒否されている可能性があります。その場合、「lokkit」もしくは「セキュリティレベル(Xの場合)」で下記ポートが通過するように設定します。

   137:udp 138:udp 139:tcp 901:tcp

SwatはLinux版Netscapeからアクセスするとsmb.confファイルが壊れることがあるようでなので、Windows版のMSIEかNetscapeでのアクセスが推奨されています。

Sambaの設定については、Swatの表紙にドキュメントがありますので参考にしてください。また、日本Sambaユーザ会にもいろいろドキュメントがありますので、そちらを参考にするといいでしょう。ここでは、おやじの設定だけに着目して概略を示します。なお、上記で日本語版のsmb.confをコピーしておけば、ほとんど設定は不要です。

◆システムポリシー

Sambaは、以下の前提条件で動かすことにしました。
  1. セキュリティはユーザ名とパスワードで制御する。
  2. ファイル共有は、家庭内全体での共有(public)と各自のホームディレクトリアクセスを許容する。
  3. プリンタ共有は、行わない。(プリントサーバがあるので不要)
  4. CD-ROMは、あまり意味はないがとりあえず共有できるようにしておく。

◆全体設定(GROBALS)

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

No. パラメータ 概  要
1 coding system = euc  Linux上で漢字ファイル名を扱う場合。
2 client code page = 932 クライアントが日本語Windowsの場合の指定。(S-JIS)
3 workgroup = WORKGROUP Windowsのワークグループ名を指定(Windowsクライアントと同じもの)
4 server string = %L: Samba %v on %h ネットワークコンピュータで表示時のサーバの説明に表示される内容。%LはNetBIOS名、 %vはSambaのバージョン、 %hはホスト名に置き換えられて表示される。
5 security = USER ユーザ名とパスワードでのアクセス制御。必ずUNIXアカウントが必要。
6 encrypt passwords = Yes 暗号化パスワードを使用。
7 update encrypted = No 初めから暗号化パスワードを使用するのでNoのままとする。
8 unix password sync = Yes No UNIXパスワードは同期させない。
9 guest account = nobody guest account は取り敢えずデフォルトのままとした。
10 load printers = Yes No プリンタ共有は行わない。(プリントサーバがあるので不要)
11 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 バッファサイズの指定で、デフォルト値はNT Serverと同じ設定でありそのままとすること。
12 wins support = Yes nmbdプロセスを WINS サーバとして機能させる。
その他は、デフォルトのままでファイル共有だけなら取り敢えず使用できます。必要に応じて設定変更すればいいと思います。

■SwatによるSambaの起動

上記で、SwatおよびSambaを動かす基本的な設定は完了したので、動作状況から、smbdとnmbdを起動します。後は、マイネットワークからアクセスしたり、必要に応じてクライアントでネットワークドライブに割当てることもできます。


Top Pageへ