Samba 3.xインストール手順
http://extstrg.asabiya.net/pukiwiki/index.php?Samba%203.x%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%BC%EA%BD%E7Samba 3.0 インストール手順 †
入手先 †
- samba配布元
http://www.samba.gr.jp/
- libiconv配布元
http://www.gnu.org/software/libiconv/
- libiconvパッチ配布元
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.9.1-cp932-patch.html
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が登録されていない場合は記載する。
echo "/usr/local/lib" >> /etc/ld.so.conf ldconfig
sambaインストール手順 †
以下の手順にてsambaをインストールする。
wget ftp://ftp.samba.gr.jp/pub/samba/samba-3.0.28a.tar.gz tar xfvz samba-3.0.28a.tar.gz cd samba-3.0.28a/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へのアクセスを許可するホストを指定。要変更
セグメント全体へのアクセスを許可する場合には以下の書式で設定する。(192.168.0.0 → 192.168.0.0/24全体のアクセスを許可) - 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が追加されているかを確認 - libiconvのバージョンを上げる →libiconv-1.13を導入して試みる
- samba起動時のエラー samba 3.2にて起動時に以下のエラーが発生する
# /etc/init.d/samba start SMB サービスを起動中: smbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory [失敗] NMB サービスを起動中: nmbd: error while loading shared libraries: libtalloc.so.1: cannot open shared object file: No such file or directory [失敗]
libtalloc.soが見つけられないとのエラーである。
libtalloc.soはsambaのインストールディレクトリのlib配下にインストールされているため、/etc/ld.so.confにパスを追加してldconfigを実行する。
echo "/usr/local/samba/lib/" >> /etc/ld.so.conf ldconfig