Samba 3.0 インストール手順

入手先

libiconv + Windows互換パッチ インストール手順

Samba 3.0以降は国際化対応が成されており、文字コードの変換にはlibiconvを使用している。しかし、glibcに含まれるlibiconvではUnicodeのコード変換テーブルがWindows互換ではない等の問題があるため、Sambaにて使用するにはパッチを適用したlibiconvを下記の手順にて準備する必要がある。

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.11.tar.gz 
wget http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.11-cp932.patch.gz
gzip -dc libiconv-1.11.tar.gz | tar xvf -
cd libiconv-1.11
gzip -dc ../libiconv-1.11-cp932.patch.gz | patch -p1
./configure --prefix=/usr/local
make ; make check
make install

以上により/usr/local配下にlibiconvがインストールされる。
パッチが正常に適用できたかを下記のコマンドにて確認する。

iconv -l | egrep -i '(-31j|-ms)'

下記の文字列が表示されれば正常に適用されている。

EUC-JP-MS
EUCJP-MS

ライブラリパスの追加

sambaをコンパイルする前に/usr/local/libがライブラリパスとして登録されているかを確認する。 /etc/ld.so.confに/usr/local/libが登録されていない場合は記載する。

vi /etc/ld.so.conf
<編集>
include ld.so.conf.d/*.conf
/usr/local/lib

ライブラリパスの追加を反映させる。

ldconfig

sambaインストール手順

以下の手順にてsambaをインストールする。

wget ftp://ftp.samba.gr.jp/pub/samba/samba-3.0.28.tar.gz
tar xfvz samba-3.0.28.tar.gz 
cd samba-3.0.28/source/
./configure --prefix=/usr/local/samba --with-privatedir=/etc/samba --with-configdir=/etc/samba --with-libiconv=/usr/local --with-automount --with-smbmount --with-pam --with-pam_smbpass --with-syslog --with-quotas --with-utmp --with-smbwrapper > configure.log
make
make install

sambaは /usr/local/samba にインストールされる。
設定ファイルは /etc/samba にインストールされる。
動作ログは /var/log/samba に出力される。

  • 確認事項
    configure時にlibiconvが有効になっているか確認する
grep iconv configure.log

下記の出力があれば有効化されている。

checking for iconv in /usr/local/lib... yes

起動設定

インストールだけではsambaを稼動させることができないため、起動に必要な設定を行う。

cp ../packaging/RHEL/setup/smb.init /etc/rc.d/init.d/samba
cp ../packaging/RHEL/setup/swat /etc/xinetd.d/swat
cp ../packaging/RHEL/setup/samba.pamd /etc/pam.d/samba
chmod 755 /etc/rc.d/init.d/samba
cd /etc/rc.d/rc3.d
ln -s ../init.d/samba S91samba
cd /etc/rc.d/rc5.d
ln -s ../init.d/samba S91samba

スクリプト類のパスを書き換えずに動作させるため、プログラムのリンクを作成する。

cd /usr/sbin
ln -s /usr/local/samba/sbin/smbd smbd
ln -s /usr/local/samba/sbin/nmbd nmbd
ln -s /usr/local/samba/sbin/swat swat

以上の手順で自動起動までの設定は完了する。
Sambaの起動・停止制御は下記の手順にて行なう。

/etc/rc.d/init.d/samba start
/etc/rc.d/init.d/samba stop

smb.confを作成した後にSambaを起動する。

SWATへのアクセス権設定

SWAT(Samba Web Administrator Tools)を使用する場合には、スーパーサーバ(この説明ではxinetd)の設定が必要となる。 /etc/xinetd.d 配下にコピーしたswatの起動設定を以下に修正する。

service swat 
{ 
port = 901
socket_type = stream
wait = no
only_from = 127.0.0.1
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no
} 
  • port = 901
    使用するポートを指定。変更不要
  • socket_type = stream
    ソケットタイプを指定。変更不要
  • wait = no
    サービスが使用するスレッドタイプを指定。変更不要
  • only_from = 127.0.0.1
    SWATへのアクセスを許可するホストを指定。要変更
  • user = root
    サービスを実行するUIDを指定。変更不要
  • server = /usr/sbin/swat
    SWATの実行ファイルを指定。swatの配置合わせて変更
  • log_on_failure += USERID
    サービスへの接続に失敗した場合にログに出力する内容を指定
  • disable = yes
    サービスの有効・無効化。yes=無効、no=有効になるため要変更

設定が完了したらxinetdを再起動する。
また、TCP Wappersの設定でのアクセス許可も必要となる。
/etc/hosts.allowに以下を追加する。

swat : [接続許可IPアドレス]

以上の設定を行った上で、webブラウザから以下のアドレスにアクセスする。

http://[IP Address]:901/

認証画面が表示されたら、UID = root、Password = rootのパスワードでログインする。

文字コード設定

Samba3.0以降はsmb.conf内に3種類の文字コード設定が必要となる。

  • unix charset
    UNIX上のファイルシステムに用いられている文字コード
  • dos charset
    Windows側で利用されている文字コード
  • display charset
    SWATの画面に表示される文字コード

指定することが可能な文字コードはCP932/EUCJP-MS/UTF-8の3種類となる。
Windows/Unix上から日本語文字のファイルを正常に読み出すには下記の設定を行なう。

dos charset = CP932
unix charset = EUCJP
display charset = CP932

Unix上にて正常に日本語文字のファイル名を表示させるには、環境変数にLANG=ja_JP.eucJPを設定する。

トラブル対応

sambaのインストールと初期動作に関するトラブル対応。

  • 日本語文字列の文字化け
    比較的よく遭遇するトラブルとして日本語ファイル・フォルダ名の文字化けが発生する。
    これが発生する際には/var/log/samba/smbd.logを確認する。
    sambaの起動時に以下のようなログが出ている場合は原因はパッチ適用したiconvが正しく動作していない状態である。
[2008/01/01 01:27:19, 0] lib/charcnv.c:init_iconv(159)
init_iconv: Conversion from UTF-16BE to CP932 not supported
[2008/01/01 01:27:19, 0] lib/charcnv.c:init_iconv(167)
init_iconv: Attempting to replace with conversion from UTF-16BE to ASCII
[2008/01/01 01:27:19, 0] lib/charcnv.c:init_iconv(159)
init_iconv: Conversion from UTF-16BE to CP932 not supported

過去の事例から以下の様な場合に問題が発生する。

  • パッチを適用したiconvを導入していない
    →手順通りに入れましょう
  • iconvをmake installしていない
    →/usr/local/binおよび/usr/local/libにiconvがあるかを確認
  • sambaがパッチ適用したiconvを読んでいない
    →sambaのconfigureログでiconvが有効になっているかを確認
    →ライブラリパスに/usr/local/libが追加されているかを確認

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS