第1回:Samba2.2→ Samba3.0への移行 (1/4)

samba

read本連載は、Samba3.0を主軸にした各種組み合わせにおける移行について、具体的な手順を解説していくものです。それぞれの移行における要点を実践的な切り口で紹介していますので、特に「これから移行をやってみよう」という方にお薦めです!
Samba移行術
実践! Samba移行術

第1回:Samba2.2→ Samba3.0への移行
著者:会社名  姓 名   2005/1/17
1   2  3  4  次のページ
Samba 2.xとSamba 3.0
   Sambaの最新バージョンは2005年1月14日現在、Samba 3.0.10である。1つ前のバージョンはSamba 2.2シリーズになり、Samba 2.2.12が最新だ。しかしながらSamba 2.2以前のバージョンはすでにSamba Teamによる開発やサポートも2004年9月で終了してしまっている。そのため、セキュリティ対策や機能追加対策のためにも最新のSamba3.0以降にした方がいいだろう。

ページ内目次
a
a
a
a
a
   Samba 2.2で十分満足している方もいるかもしれないが、以前Windows XPのSP2(サービスパック2)を適用したマシンで複数の障害が発生し、Sambaを改良した経緯などもある。今後のWindowsサービスパックによる仕様変更に対処するためにも、最新のSambaに早めに移行しておいた方が良いだろう。そこで今回はSamba 2.2からSamba 3.0への移行方法について解説する。


Samba 2.xからSamba 3.0への移行

   Samba 2.2とSamba 3.0の機能的な差異を表1にあげる。

機能Samba 2.2Samba 3.0





ユーザ情報の格納場所LDAP、簡易DB、テキスト、NISなどが利用可能LDAP、簡易DB、テキスト、NIS,MySQLなどが利用可能
ユーザ情報の格納場所の切り替えソースからモジュールを再コンパイル必須再コンパイルなしに設定だけで切り替え可能
ユーザ情報の複製機能△  LDAPの複製機能を利用△  LDAPの複製機能を利用
ユーザ名マッピング
グループ名マッピング×
グローバルユーザ/ローカルユーザ×
グローバルグループ/ローカルグループ×
ネステッドグループ(ローカルグループの中にグローバルグループを入れ子にするような階層化)×
N
T








ユーザ情報とパスワード移行△  smbldap-toolsにコマンドあり
グループ情報の移行△  smbldap-toolsにコマンドあり
プロファイルの移行×
共有情報の移行×






LANMAN認証
NTLM認証
NTLMv2認証×
Kerberos5認証×△  メンバサーバの時のみ可能
セキュアチャネル×
SMB署名×
SPNEGO(rfc2478で規定されたSimple and Protected NEGOciation)×





ドメインログオン
PDC(プライマリドメインコントローラ)
BDC(バックアップドメインコントローラ)
ログオンスクリプト◎  ログオンスクリプトの動的生成/変更可能◎  ログオンスクリプトの動的生成/変更可能
移動プロファイル◎  読み込み専用プロファイルもサポート
NT4相当のユーザポリシー(NT4/2000/XP)
Win98相当のグループポリシー(95/98/Me)
Win2000/2003相当のグループポリシー××
複雑なパスワードの強制×△  外部モジュールを使って可能
パスワード履歴×
明示的な片方向の信頼関係×
推移的な双方向の信頼関係××













ユーザ/グループによる容量制限◎  ディレクトリ単位にも対処可能◎  ディレクトリ単位にも対処可能
論理ボリュームマネージャ○  Linux OSに依存○  Linux OSに依存
ボリュームシャドーコピー(スナップショット)機能×○  ただし、Linux側でXFSを搭載している必要有り
ゴミ箱機能
マッキントッシュ連携○  Netatalkをインストールすることで可能○  Netatalkをインストールすることで可能
UNIX NFS連携○  カーネルレベルによるOPLOCK連携可能○  カーネルレベルによるOPLOCK連携可能
ユーザホーム機能
MS-DFS(ルートおよびサブディレクトリ)
MS-DFS Proxy×
ACL機能(ユーザ/グループによるアクセス制御)○  Linux OSに依存○  Linux OSに依存
ホスト名によるアクセス制御
日本語ディレクトリ/ファイル名
READ権のないファイルを見えなくする
WRITE権のないファイルを見えなくする×
ユーザモジュールによる共有機能の拡張・カスタマイズ○  標準で監査機能、ウィルスチェックなどが搭載
1つの共有に1つのモジュールだけ
○  標準で監査機能、ウィルスチェックなどが搭載
1つの共有に1つのモジュールだけ
同一サーバに複数のNetBIOS名を付ける○  smb.confで容易に指定可能○  smb.confで容易に指定可能
スプールしながらの印刷××
PDFライター機能○  GhostScriptとの連携○  GhostScriptとの連携
プリンタドライバ配布機能
W
I
N
S

WINSサーバ
WINSクライアント
WINS複製××
WINS静的マッピング○  wins.datの直接編集○  wins.datの直接編集
WINSとDDNSとの連携○  wins hook機能○  wins hook機能





ドメインマスタブラウザ◎  ワークグループ構成でも可能◎  ワークグループ構成でも可能
リモートアナウンス◎  任意のワークグループ、ドメインにも可◎  任意のワークグループ、ドメインにも可
ポテンシャルブラウザ

表1:Samba 2.2とSamba 3.0機能比較


   ここでは詳細な違いを解説しながら、バージョンアップの方法を解説しよう。現在Samba2.x以前のバージョンを利用している状態からSamba3.0へ移行するには、Sambaパッケージの置き換えに加え、以下の作業を行う必要がある。

  • smb.confの変更
  • パスワードデータベースの変換
  • ファイルシステム(ファイル名)の変換

   以降の章にてそれぞれの作業方法を解説する。


図1:Samba 2.2から3.0への移行作業


smb.confの変更

   Samba2.xの時のsmb.confをそのままSamba3.0で利用することはできない。表2にSamba3.0で削除されたパラメータをあげたので、これらのパラメータを使用している場合は削除し、必要に応じて代替パラメータを指定する必要がる。また、表3に新しく追加されたパラメータを、表4に規定値や動作(振る舞い)に変更のあったパラメータをあげる。現在指定している内容にあわせてパラメータを見直して欲しい。

重要度:A:対処必須、B:要確認、C:利用を推奨されなかったパラメータ
smb.confパラメータ重要度意味代替機能、
代替パラメータ
character setCUNIX側で利用する文字セットunix charset
client codepageAクライアントで利用するコードページdos charset
code page directoryCコードページファイルの置き場所iconv関数で文字コード変換
coding systemAUNIX側で利用する文字コードunix charset
domain admin groupBドメイン管理者グループの指定net groupmapで設定
domain guest groupBドメインゲストグループの指定net groupmapで設定
force unknown acl userC不明なSIDの自動マッピング 
nt smb supportCNT SMBのサポートサポートが必須のため廃止
post scriptC(NT3.51から)印刷時のPSデータを強制最近のクライアントでは不要
printer driverBプリンタドライバ名を指定プリンタドライバの自動ダウンロード方式が変更になったため不要
printer driver fileBプリンタドライバを設定したファイルのパス
printer driver locationBプリンタドライバをダウンロードするための共有
read sizeBファイルの読み込みサイズ最大値が自動設定
statusCステータスファイルに記録するかどうかを指定必ず記録する
strip dotCファイル名内のドッドを削除削除が不要になった
total print jobsCシステム全体で 同時に受け付け可能な印刷ジョブの最大数無制限に変更
use rhostsCホームディレクトリにある .rhosts ファイルによる接続許可セキュリティホールとなるため廃止
valid charsCファイル名として有効とみなす文字の追加指定iconv関数で文字コード変換するので不要
vfs optionsCVFSモジュールのオプションを指定VFSモジュール:パラメータ=オプションで指定

表2:Samba3.0で削除されたパラメータ


重要度:A:対処必須、B:該当機能を利用するときは重要、C:必要に応じて設定
分類smb.confパラメータ重要度意味
リモート管理
abort shutdown scriptCマシンの強制シャットダウンスクリプトの設定
shutdown scriptCマシンのシャットダウンスクリプトの設定
ユーザ/グループの管理
add group scriptBOSのグループ追加のためのスクリプト
add machine scripBマシンアカウント追加のためのOSユーザ追加スクリプト
add user to group scriptBユーザをグループに追加するためのスクリプト
algorithmic rid baseCRIDを割り付けるための基準値
delete group scriptBOSのグループ削除のためのスクリプト
delete user from group scriptBユーザをグループから削除するためのスクリプト
passdb backendAパスワードデータベースの種類を設定
set primary group scriptBユーザのプライマリグループ設定のためのスクリプト
認証
auth methodsB認証方法の順序指定
realmBActiveDirectoryのKerberos認証のためのレルムを指定
プロトコルオプション
client lanman authBクライアントのLANMAN認証を使用するか(規定値はYes)
クライアントにWin95/98/MeがなければNoにできる
Noにするのがセキュリティ的に推奨値
client NTLMv2 authBクライアントのNTLMv2認証を使用するか(規定値はNo)
クライアントにWin95/98/Me/NTがなければYesにできる
Yesにするのがセキュリティ的に推奨値
client plaintext authBクライアントが平分パスワードを送信するか(規定値はYes)
Noにするのがセキュリティ的に推奨値
client schannelCクライアントがセキュアチャネルを使用するか(規定値はAuto)
client signingCクライアントがSMB署名を使用するか(規定値はAuto)
client use spnegoCクライアントがSPNEGO(rfc2478で規定されたSimple and Protected NEGOciation)を使用するか(規定値はYes)
disable netbiosBNetBIOS機能を無効にする(規定値はnoでNetBIOS有効)
ntlm authBSambaサーバのNTLM認証を許可するか(規定値はYes)
lanman authとntlm authの両方をNoにすればNTLMv2のみの認証になる。
クライアントにWin95/98/Me/NTがなければこれがセキュリティ的に推奨される
paranoid server securityC問題(バグ)のあるNT4サーバの接続を拒否する
server schannelBnetlogon schannelを受け付ける(規定値はauto)
server signingBSambaサーバがSMB署名を強制するか(規定値はAuto)
smb portsCSMBサービスで利用するポート(規定値は139と445)
use spnegoCSambaサーバがSPNEGO(rfc2478で規定されたSimple and Protected NEGOciation)を使用するか(規定値はYes)
印刷
cups optionsBCUPSに渡すオプションを指定する(RAWなど)
max reported print jobsC表示できる印刷キューの最大数を指定する(規定値は無制限)
UNICODEと文字セット
display charsetASWATなどで使用する表示用文字コード。Unix charsetと同じものを指定する。
dos charsetAWindowsクライアントで指定する文字コードを指定。日本語では必ずCP932を指定する。
UNIX charsetAUNIX上のファイルシステムで使用する文字コードを指定する。
日本語を利用するならEUCJP-MS、UTF-8、CP932のいずれかを指定する。
SIDとUID/GIDとのマッピング
idmap backendBSIDとUID/GIDとのマッピングを保存するデータベースを指定する。
idmap gidBSIDをGIDにマッピングする時のGIDの範囲を指定
idmap uidBSIDをUIDにマッピングする時のUIDの範囲を指定
winbind enable local accountsCWinbindでローカルユーザ/ローカルグループの管理を行う
winbind nested groups BWindowsと同様のグループの階層化をサポートする(規定値はNo)
winbind trusted domains onlyC信頼するドメインのメンバだけの利用に制限する(規定値はNo)
template primary groupCローカルユーザを作成した時のプライマリグループの規定値を指定する
enable rid algorithmCRIDの生成アルゴリズムを有効にする(開発者向けパラメータ)
LDAP
ldap delete dnBSambaユーザ削除時にLDAPのエントリも削除する(規定値No)
ldap group suffixBLDAPにグループを登録する時のサフィックスを指定する
ldap idmap suffixBLDAPにSIDとUIDのマッピングを保存する時のサフィックスを指定する
ldap machine suffixBLDAPにマシンを登録する時のサフィックスを指定する
ldap passwd syncBSambaユーザのパスワードを変更したときにLDAPのパスワードも変更する。
ldap replication sleepBSambaがスレーブLDAPを利用している時、更新時の複製を待つ時間をミリ秒単位で設定(規定値は1000ミリ秒)
ldap user suffixBLDAPにユーザを登録する時のサフィックスを指定する
その他、一般設定
preload modulesCクライアントの接続スピード向上のために予めロードしておくライブラリモジュールを指定する。
privatedirCパスワードやシークレットファイルの格納ディレクトリを指定

表3:Samba3.0で新しく追加されたパラメータ


重要度:A:対処必須、B:該当機能を利用しているときは重要、C:必要に応じて設定
smb.confパラメータ重要度意味
encrypt passwordsA暗号化パスワードの利用。従来Noが規定値だがYesに変更。Yesの利用が望ましい。
mangling methodA8.3形式のSFN(DOS用の短いファイル名)生成方法の指定。従来hashが規定値だったが、hash2に変更
passwd chatBunix password sync=yesとしてOSのパスワードと同期するときのエラーチェックが強化され、従来はpasswd programがpasswd chat通りに応答を返さなくてもSambaパスワードが変更されていたが、エラー時にはSambaパスワードが変更されなくなった。
passwd programB
password serverCsecurity=ADS(ActiveDirectoryによる認証)の時にLDAPポートによる認証をサポート
restrict anonymousCサーバへの匿名アクセスを制限。
従来はYes/Noが指定でき、No(匿名接続を拒否しない)が規定値だったが、0,1,2の3つの値から選択できるようになった。
Windowsのレジストリ
HKEY_LOCAL_MACHINE\SYSTEM
\CurrentControlSet\Control
\LSA\RestrictAnonymous
と同じ意味を持ち、0は匿名接続を許可、1は匿名接続を拒否、2はWin2000/XP/Samba以外の接続を拒否
securityBsecurity=ADS(ActiveDirectoryによる認証)をサポート
strict lockingB従来はファイルのロックはアプリケーションまかせ(No)であったが、強制ロック(Yes)が規定値になった。
winbind cache timeC結果のキャッシュ保存時間の規定値が15秒から300秒へ変更
winbind uidBidmap uidパラメータに置き換え
winbind gidBidmap gidパラメータに置き換え

表4:Samba3.0で規定値や動作(振る舞い)に変更のあったパラメータ



パスワードデータベースの変換

   Samba 2.2では、基本的に利用されるパスワードデータベースはコンパイル時に決定されていたため、ほとんどのユーザはsmbpasswdファイル(テキストファイル)を利用しているだろう。Samba 2.xのユーザ管理データベースとしてsmbpasswdファイルを使用していて、そのままSamba3.0でもsmbpasswdを利用したい場合は、"passdb backend = smbpasswd"とすることで継続利用が可能だ。

   しかし、Samba 3.0では設定で自由にパスワードデータベースが変更できる。Samba 3.0の新機能やドメイン機能を利用する場合はsmbpasswdではなく、「TDBSAM」もしくは「LDAPSAM」に変更することが望ましい。用途は以下のように使い分けるといいだろう。

  • TDBSAM
    スタンドアロンサーバで、かつ小規模サーバの場合。(ユーザ数が200人程度まで)
  • LDAPSAM
    ドメインコントローラ、もしくは中・大規模サーバの場合。(ユーザ数が200人以上の場合。)

smbpasswd →TDBSAMの場合

   これまでsmbpasswdを利用しており、新たに「passdb backend = tdbsam」としたい場合は、以下のコマンドでデータ移行が可能である。

# pdbedit -i smbpasswd:/etc/smbpasswd -e tdbsam:/etc/samba/passdb.tdb

smbpasswd →LDAPSAMの場合

   また、Samba2.2でパスワードデータベースとしてsmbpasswd(とOSの/etc/passwd)を使用しており、Samba3.0でLDAPに変更したい場合は、既存の/etc/samba/smbpasswdや /etc/passwd ファイルからLDAPへ移行することも可能だ。

   RPMを使ってOpenLDAPをインストールすると、/usr/share/openldap/migrationディレクトリには、/etcファイルやNISなどの古い認証情報をLDAPフォーマットに移行するための一連のシェルとPerlスクリプトが含まれている。(これらのスクリプトを使用するには、システムにPerlがインストールされている必要がある。)以下、手順を説明します。

   最初にmigrate_common.phファイルを修正し、ドメインを反映させる必要がありますが、デフォルトのDNSドメインは以下のようになっている。

$DEFAULT_MAIL_DOMAIN = "padl.com";

これを、たとえば以下のように変更する必要がある。

$DEFAULT_MAIL_DOMAIN = "miraclelinux.com";

デフォルトのベースは以下のようになっている。

$DEFAULT_BASE = "dc=padl,dc=com";

これも、例えば以下のように変更する必要がある。

$DEFAULT_BASE = "dc=miraclelinux,dc=com";

次に、表5に記載されたスクリプトを使用して移行を行う。

既存のネームサービスLDAPは動作しているか意味
/etcフラットファイルはいmigrate_all_online.sh
/etcフラットファイルいいえmigrate_all_offline.sh
ネット情報はいmigrate_all_netinfo_online.sh
ネット情報いいえmigrate_all_netinfo_offline.sh
NIS(YP)はいmigrate_all_nis_online.sh
NIS(YP)いいえmigrate_all_nis_offline.sh

表5:LDAP移行スクリプト


/usr/share/openldap/migration にあるREADMEとmigration-tools.txtに、情報の移行方法に関する詳細が記載されているので、必要に応じて参照して欲しい。

   続いて以下のpdbeditコマンドを実行することで移行が実行される。

# pdbedit -i smbpasswd:/etc/smbpasswd -e ldapsam:ldap://localhost

上記のコマンドを実行するには、smb.confを、LDAPSAMを使ったPDC用に設定し、"smbpasswd -w"を実行してLDAP管理者のパスワードを設定しておく必要がある。

   またSamba2.xでLDAPを使ったPDCを構築している場合は、LDAPデータをいったんLDIFデータファイルにエクスポートし、以下のコマンド(samba-3.0.0のソースファイルの中"examples/LDAP/convertSambaAccount"コマンド)を使用することで、Samba3.0の新しいスキーマに変換できる。

convertSambaAccount --sid=<Domain SID> --input=<input ldif>
--output=<output ldif> --changetype=[modify|add]

OUTPUTで出来たLDIFファイルを、またLDAPに投入すれば移行は完了だ。実行手順は以下の通りだ。

Samba 2.xでのLDAPデータ取り出し
    「ldapsearch -x -W -D 管理者識別子 -LLL」

実行例)
# ldapsearch -x -W -D "uid=Administrator,ou=Users,dc=miraclelinux,dc=com" -LLL > samba2.ldif
ドメインSIDの確認
    以下のコマンドでSamba2.xでのドメインSIDを記録する。

# rpcclient Samba2.xのPDCマシン名 -U Administrator%パスワード -c 'lsaquery'

-Uにはドメイン管理者として登録されているユーザ(Administratorなど)を指定する。

LAPデータの変換

# convertSambaAccount --sid="S1-12345-124"
--input=samba2.ldif --output=samba30.ldif
--changetype=add

LDAPデータの投入

LDAPサーバを停止し、slapd.confのdirectoryパラメータで指定した「/var/lib/ldap」 にあるデータファイルをすべて削除する。その後LDAPサーバを起動してから、新たにデータを投入する。

実行例)
# ldapadd -x -W -D "uid=Administrator,ou=Users,dc=miraclelinux,dc=com" -f samba30.ldif

以上でユーザ情報、グループ情報に関しての移行に関しては終了だ。


ファイルシステム(ファイル名)の変換

   Samba3.0では日本語ファイル名(機種依存文字)に使用するコードが変わったため、Samba2.xからSamba3.0へ移行するには、同じEUCやSJISを使う場合でもファイルシステム(ファイル名)の変換をする必要がある。(Samba 2.2ではWindows 95互換のコード体系を利用し、Samba 3.0ではWindows NT互換のコード体系に変更された。)

   もしSamba2.xとSamba3.0のマシンが別マシンであるならば、Windows2000/XP/2003マシンを使って(Win95/98/Meは不可)ファイルコピーをすれば、変換は自動的に完了する。一方、現在Samba2.xで利用しているマシンをそのままSamba3.0で利用するには、以下のWebで公開されているsmbchartoolを使って変換作業を行う必要がある。

   http://www.miraclelinux.com/technet/samba30/migration.html

   移行が必要なケースは表6の通りだ。一般に機種依存文字と言われる図2のすべてが問題になるわけではないので、注意して欲しい。

Samba 2.x
coding system
Samba 3.0
unix charset
機種依存文字の
変換必要性
変換が必要な文字
sjiscp932必要図5の13文字
euceucJP-ms必要図6の374文字
euc3eucJP-ms必要図6の13文字
utf8utf-8不要 
hexcp932 + VFS hexモジュール必要図5の13文字
capcp932 + VFS capモジュール必要図5の13文字

表6:変換が必要な文字


図2:一般的な機種依存文字



図3:IBM拡張文字(115区) から NEC特殊文字 (13区)へ変更になったため
変換が必要な大文字のローマ数字, No., TEL, (株)



図4:変換が必要な機種依存文字374文字(NEC選定IBM拡張文字 89〜92区)


   もちろん、上記以外の文字コードの変更をする場合も必ず変換が必要となる。だがこれらもすべてsmbchartoolで変換が行える。例えばSamba2.xで"coding system=euc"としていた場合、Samba3.0へ移行する前に以下の手順を実施する事で変換が行なえる。

ファイル名の変換手順
$ mv 共有ディレクトリ 共有ディレクトリ.samba2
$ mkdir 共有ディレクトリ
$ cd 共有ディレクトリ.samba2
$ smbfnconv -f euc -t eucjp-ms -p ../共有ディレクトリ .

1   2  3  4  次のページ


アイエイエフコンサルティング
著者プロフィール
株式会社アイエイエフコンサルティング  平井 明夫
日本DEC(現hp)、コグノス、日本オラクルを経て現職。一貫してソフトウェア製品の開発、マーケティング、導入コンサルティングを歴任。 特に、データウェアハウス、BI、OLAPを得意分野とする。現在、企業業績管理、管理会計などデータ分析ソリューションの短期導入を可能にするテンプレートやパッケージの開発を行っている。


INDEX
第1回:BIの世界を体験する−イントロダクション   オープンソースBIツールOpenOLAP
はじめに
 Viewerによるデータ分析操作
 その他のViewerの機能
 OpenOLAPの入手と問合せ方法
システム企画担当者のためのBIシステム導入の勘所
第1回BIの世界を体験する−イントロダクション  オープンソースBIツールOpenOLAP
第2回BIシステムの特性を知る−基礎知識編(1) BIシステム導入の目的
第3回BIシステムの特性を知る−基礎知識編(2) BIシステムのアーキテクチャ
第4回BIシステムの特性を知る−基礎知識編(3) データベースとBIツール
第5回BIシステムの特性を知る−基礎知識編(4) BI構築プロジェクトの進め方
第6回BIシステムをつくってみる−実践編(1)設計−導入計画と要件定義
第7回BIシステムをつくってみる−実践編(2)設計と構築
第8回BIシステムをつくってみる−実践編(3)続・構築フェーズ
第9回BIシステムをつくってみる−実践編(4)構築フェーズ〜プロジェクト評価フェーズ
第10回BIシステムをつくってみる−実践編(5)機能拡張プロジェクト
第11回BIシステムの構成を決める−製品選択編(1)BIツール選択のポイント
第12回BIシステムの構成を決める〜製品選択編(2)BIツール選択(続き)とデータベース選択のポイント
関連記事 : BIツール選択に失敗しないために
第1回BIツール選択の基本は、分類すること
第2回分析ツールの選択〜パワーユーザに必要な機能をチェック(前半)
第3回分析ツールの選択〜パワーユーザに必要な機能をチェック(後編)
第4回レポーティング・ツールの選択〜大量ユーザのサポートに必要な機能をチェック(前半)
第5回レポーティング・ツールの選択〜大量ユーザのサポートに必要な機能をチェック(後半)
第6回モニタリング・ツールの選択〜経営者が必要とする表現力をチェック(前半)
第7回モニタリング・ツールの選択〜経営者の必要とする表現力をチェック(後半)
関連記事 : 統合化が進むBIツール
第1回なぜ今、BI統合化なのか
第2回データを中心に統合化するOracle
第3回オープンアーキテクチャを採用した「Cognos 8 BI」
第4回ビジネス・パフォーマンス・マネジメントが実現する経営管理サイクル
第5回End To Endの包括的なBI・EPMを提供するBusinessObjects XI
第6回統合マネジメントシステムを実現するBIプラットフォーム
第7回統合化のメリットと各社の特徴

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored