2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

お産婆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

以上

コメント