Kozupon.com    
 
 お産婆2(samba2)からお産婆3(samba3)へ移行する!


sambaがバージョン2系から3系にシフトした。
しかし、どうしても気になるのが旨くsamba2からsamba3へデータが移行できるかという点である。移行できたとしても文字化けとかが気になる。samba3から日本語環境の強化とか、LDAPを用いたWindows環境との統合管理が出来るとか良いことは増えたようだ。
WindowsのActiveDirectryが使えないのでLDAPを用いたドメインの統合管理には私的には興味有る。
だけど、とりあえずsamba2からsamba3へデータ移行が旨くいったので、その方法を説明する。

俺の環境は、PDCがWin2000Server、BDCがsamba3環境である。
OSは、WhiteBOX Enterprise Linux

注意 : インストールの前に、samba2の時の共有フォルダのデータを必ずバックアップすること。


1.お産婆3インストールの前準備

CP932対応のlibiconvモジュール(文字コード変換ライブラリ)が必要なのでインスコする。

1)ソースのゲット

libiconvのソースは、 ここ からゲットする。2005年4月現在では、 libiconv-1.9.2.tar.gz が最新であった。

2)ソースの解凍

# chmod 777 /usr/local/src
# su - xxxxxxx                    
← ユーザアカウント
$ tar zxvf libiconv-1.9.2.tar.gz

3)コンパイル&ビルド

$ cd libiconv-1.9.2
$ ./configure --prefix=/opt/libiconv     
← オプションのprefixでセットアップディレクトリ指定
$ make ; make check
$ su
passwd *********
# make inatall


2.お産婆3インストール

1)ソースのゲット

sambaユーザ会の ここ でソースをゲットする。2005年4月現在で samba-3.0.13.tar.gz が最新であった。

2)ソースの解凍

$ cd /usr/local/src
$ tar zxvf samba-3.0.13.tar.gz

3)コンパイル&ビルド

$ cd samba-3.0.13/source

smbmuntを使うのでwithで使う旨を宣言。

$ ./configure --with-libconv=/opt/libiconv --with-smbmount
$ make
$ su
passwd *********
# make inatall


3.設定

1)smb.confの編集

/usr/local/samba/libにsmb.confを作成する。
samba2とsamba3で設定が大きく変わるところのみ、色分けして右側に説明を追記した。
samba2とsamba3との大きな設定の違いは、ブラウズするときの日本語文字コードに関する点のようだ。青文字がsamba3の文字コードに関する新しい設定である。
ただし、俺の場合はsambaがあくまでもBDCで有るので、この程度の変更であった。sambaがPDCの場合は、この限りではない。

# vi /usr/local/samba/lib/smb.conf
[global]
workgroup = KOZUPON
netbios name = WhiteBoxLinux

; client code page = 932                ← samba2のWindowsクライアント側の文字コード指定
; coding system = euc                 ← samba2のUnixクライアント側の文字コード指定

passdb backend = smbpasswd

unix charset = EUCJP-MS          ← samba3のUnixクライアント側の文字コード指定、Linuxの環境では、主に EUC-JPの環境では" EUCJP-MS " 及び UTF-8環境では" UTF-8 "を指定することになっているようだ
dos charset = CP932              ← samba3のWindowsクライアント側の文字コード指定、日本語環境では日本語Windowsが使われているので、" CP932 "が固定設定となる
display charset = EUCJP-MS        ← samba3のサーバ側でのSWAT、フォルダやファイルの文字コードを指定する、ここは必ずunix charsetと同じ文字コードを指定する
server string = Samba Server
security = user
smb passwd file = /etc/samba/smbpasswd
map to guest = Bad User
hosts allow = 192.168.255. 192.168.1. 127.
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/log.%m
max log size = 50
dos filetimes = Yes
dos filetime resolution = Yes
[homes]
comment = Home Directories
browseable = no
writable = yes
create mask = 0644
directory mask = 0755
[public]
comment = public directories
path = /usr/common
public = yes
browseable = yes
guest ok = no                 
これを設定しないと誰からでも、この共有フォルダにアクセス出来てしまう
writable = yes
directory mask = 0777
create mask = 0777


4.ユーザパスワードの設定
ここでは、smbpasswdを使って直接passwdファイルからユーザ名をゲットしてパスワードを設定する方法をとっている。
これは、実際にはDebian LinuxのバイナリSamba3でのパスワード設定法だ。だけど、多分ほとんど変わらないだろう。

yh:/etc/samba# cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd
yh:/etc/samba# ls -al

total 20
drwxr-xr-x 2 root root 4096 Oct 17 17:46 .
drwxr-xr-x 60 root root 4096 Oct 17 16:13 ..
-rw-r--r-- 1 root root 8 Jul 14 04:27 gdbcommands
-rw-r--r-- 1 root root 777 Oct 17 17:43 smb.conf
-rw------- 1 root root 2848 Oct 17 17:48 smbpasswd

passwdファイルに登録されていて、mksmbpasswdを行ったユーザに関しては、以下のように -e(ユーザを有効にする) オプションを使って指定ユーザを許可するパスワード設定のみとなる。
yh:/etc/samba# smbpasswd -e xxxxxx
New SMB password:********
Retype new SMB password:********
Enabled user xxxxxx.

ちなみに、無効にするには、
yh:/etc/samba# smbpasswd -d xxxxxx
Disabled user xxxxxxx.

以降、ユーザを追加するたびに、 -a(ユーザを追加する) を実行する。
yh:/etc/samba# smbpasswd -a xxxxxx
New SMB password:********
Retype new SMB password:********
Added user xxxxxx.

ちなみにユーザを削除するには、
yh:/etc/samba# smbpasswd -x xxxxxx
Deleted user xxxxxxx.


5.起動

1)起動スクリプト作成

/etc/init.dに起動スクリプトsmbを作成。

# vi /etc/init.d/smb

#!/bin/sh
# chkconfig: 2345 80 31
# description: Samba Script
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
# Check that smb.conf exists.
[ -f /usr/local/samba/lib/smb.conf ] || exit 0
# See how we were called.
case "$1" in
start)
echo -n "Starting SMB services: "
/usr/local/samba/sbin/smbd -D
/usr/local/samba/sbin/nmbd -D
echo
touch /var/lock/subsys/smb
;;
stop)
echo -n "Shutting down SMB services: "
killproc smbd
killproc nmbd
rm -f /var/lock/subsys/smb
echo ""
;;
status)
status smbd
status nmbd
;;
restart)
echo -n "Restarting SMB services: "
$0 stop
$0 start
echo "done."
;;
*)
echo "Usage: smb {start|stop|restart|status}"
exit 1
esac

2)スクリプトの登録

# chkconfig --add smb

3)スクリプトのアクティブ化

# chkconfig smb on

一応、list確認。

# chkconfig --list

省略

smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
proftpd 0:off 1:off 2:off 3:on 4:off 5:off 6:off
usbmgr 0:off 1:off 2:on 3:off 4:on 5:on 6:off
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
inet 0:off 1:off 2:off 3:on 4:on 5:on 6:off
postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

省略

4)起動・停止・再起動

# /etc/init.d/smb start
# /etc/init.d/smb stop
# /etc/init.d/smb restart


6.samba2の時のデータを移行する

だめだ!起動はしたものの、samba2の時の共有データのディレクトリ及びファイルのインデックス文字が化けた。
どうも以下の手順を踏まないと文字化けは解消しないようである。

1)現状の共有フォルダにあるデータを全て削除する
2)インストール前にバックアップされている共有フォルダのデータを現状のsamba3の共有フォルダにコピーする

俺の場合、この作業を行ったら文字化けが解消された。
◎samba2からsamba3への移行作業を行う場合は、インストールする前にあらかじめ、Windowsクライアント側に共有フォルダのデータをコピーしておくこと。


7.sambaのエラー

現象:logに以下のようなsambaエラーが出る。

Security Events
=-=-=-=-=-=-=-=
Oct 26 09:37:03 localhost smbd[2666]: getpeername failed. Error was
Transport endpoint is not connected
Oct 26 09:37:03 localhost smbd[2666]: getpeername failed. Error was
Transport endpoint is not connected
Oct 26 09:37:03 localhost smbd[2666]: getpeername failed. Error was
Transport endpoint is not connected
Oct 26 09:37:03 localhost smbd[2666]: getpeername failed. Error was
Transport endpoint is not connected
Oct 26 09:37:03 localhost smbd[2666]: Connection denied from 0.0.0.0
Oct 26 09:37:03 localhost smbd[2666]: write_socket_data: write
failure. Error = Connection reset by peer

System Events
=-=-=-=-=-=-=
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:get_peer_addr(1150)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:get_peer_addr(1150)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/access.c:check_access(328)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:get_peer_addr(1150)
Oct 26 09:37:03 localhost smbd[2666]: Denied connection from (0.0.0.0)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:get_peer_addr(1150)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:write_socket_data(430)
Oct 26 09:37:03 localhost smbd[2666]: [2006/10/26 09:37:03, 0]
lib/util_sock.c:write_socket(455)
Oct 26 09:37:03 localhost smbd[2666]: write_socket: Error writing 5
bytes to socket 5: ERRNO = Connection reset by peer

原因:プリンタの設定をしていないにも関わらず、プリンタードライバの自動配布機能が動いてしまうから。

対策:[global]内に以下の2行を入れる。
load printers = no
disable spoolss = yes

以上


 
 
 



Copyright 2005 Kozupon.com.