 |

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

| | 実践! 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以降にした方がいいだろう。
|  | |
|
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.2 | Samba 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 set | C | UNIX側で利用する文字セット | unix charset | | client codepage | A | クライアントで利用するコードページ | dos charset | | code page directory | C | コードページファイルの置き場所 | iconv関数で文字コード変換 | | coding system | A | UNIX側で利用する文字コード | unix charset | | domain admin group | B | ドメイン管理者グループの指定 | net groupmapで設定 | | domain guest group | B | ドメインゲストグループの指定 | net groupmapで設定 | | force unknown acl user | C | 不明なSIDの自動マッピング | | | nt smb support | C | NT SMBのサポート | サポートが必須のため廃止 | | post script | C | (NT3.51から)印刷時のPSデータを強制 | 最近のクライアントでは不要 | | printer driver | B | プリンタドライバ名を指定 | プリンタドライバの自動ダウンロード方式が変更になったため不要 | | printer driver file | B | プリンタドライバを設定したファイルのパス | | printer driver location | B | プリンタドライバをダウンロードするための共有 | | read size | B | ファイルの読み込みサイズ | 最大値が自動設定 | | status | C | ステータスファイルに記録するかどうかを指定 | 必ず記録する | | strip dot | C | ファイル名内のドッドを削除 | 削除が不要になった | | total print jobs | C | システム全体で 同時に受け付け可能な印刷ジョブの最大数 | 無制限に変更 | | use rhosts | C | ホームディレクトリにある .rhosts ファイルによる接続許可 | セキュリティホールとなるため廃止 | | valid chars | C | ファイル名として有効とみなす文字の追加指定 | iconv関数で文字コード変換するので不要 | | vfs options | C | VFSモジュールのオプションを指定 | VFSモジュール:パラメータ=オプションで指定 |
|
表2:Samba3.0で削除されたパラメータ
|
重要度:A:対処必須、B:該当機能を利用するときは重要、C:必要に応じて設定
|
| 分類 | smb.confパラメータ | 重要度 | 意味 | | リモート管理 | | abort shutdown script | C | マシンの強制シャットダウンスクリプトの設定 | | shutdown script | C | マシンのシャットダウンスクリプトの設定 | | ユーザ/グループの管理 | | add group script | B | OSのグループ追加のためのスクリプト | | add machine scrip | B | マシンアカウント追加のためのOSユーザ追加スクリプト | | add user to group script | B | ユーザをグループに追加するためのスクリプト | | algorithmic rid base | C | RIDを割り付けるための基準値 | | delete group script | B | OSのグループ削除のためのスクリプト | | delete user from group script | B | ユーザをグループから削除するためのスクリプト | | passdb backend | A | パスワードデータベースの種類を設定 | | set primary group script | B | ユーザのプライマリグループ設定のためのスクリプト | | 認証 | | auth methods | B | 認証方法の順序指定 | | realm | B | ActiveDirectoryのKerberos認証のためのレルムを指定 | | プロトコルオプション | | client lanman auth | B | クライアントのLANMAN認証を使用するか(規定値はYes) クライアントにWin95/98/MeがなければNoにできる Noにするのがセキュリティ的に推奨値 | | client NTLMv2 auth | B | クライアントのNTLMv2認証を使用するか(規定値はNo) クライアントにWin95/98/Me/NTがなければYesにできる Yesにするのがセキュリティ的に推奨値 | | client plaintext auth | B | クライアントが平分パスワードを送信するか(規定値はYes) Noにするのがセキュリティ的に推奨値 | | client schannel | C | クライアントがセキュアチャネルを使用するか(規定値はAuto) | | client signing | C | クライアントがSMB署名を使用するか(規定値はAuto) | | client use spnego | C | クライアントがSPNEGO(rfc2478で規定されたSimple and Protected NEGOciation)を使用するか(規定値はYes) | | disable netbios | B | NetBIOS機能を無効にする(規定値はnoでNetBIOS有効) | | ntlm auth | B | SambaサーバのNTLM認証を許可するか(規定値はYes) lanman authとntlm authの両方をNoにすればNTLMv2のみの認証になる。 クライアントにWin95/98/Me/NTがなければこれがセキュリティ的に推奨される | | paranoid server security | C | 問題(バグ)のあるNT4サーバの接続を拒否する | | server schannel | B | netlogon schannelを受け付ける(規定値はauto) | | server signing | B | SambaサーバがSMB署名を強制するか(規定値はAuto) | | smb ports | C | SMBサービスで利用するポート(規定値は139と445) | | use spnego | C | SambaサーバがSPNEGO(rfc2478で規定されたSimple and Protected NEGOciation)を使用するか(規定値はYes) | | 印刷 | | cups options | B | CUPSに渡すオプションを指定する(RAWなど) | | max reported print jobs | C | 表示できる印刷キューの最大数を指定する(規定値は無制限) | | UNICODEと文字セット | | display charset | A | SWATなどで使用する表示用文字コード。Unix charsetと同じものを指定する。 | | dos charset | A | Windowsクライアントで指定する文字コードを指定。日本語では必ずCP932を指定する。 | | UNIX charset | A | UNIX上のファイルシステムで使用する文字コードを指定する。 日本語を利用するならEUCJP-MS、UTF-8、CP932のいずれかを指定する。 | | SIDとUID/GIDとのマッピング | | idmap backend | B | SIDとUID/GIDとのマッピングを保存するデータベースを指定する。 | | idmap gid | B | SIDをGIDにマッピングする時のGIDの範囲を指定 | | idmap uid | B | SIDをUIDにマッピングする時のUIDの範囲を指定 | | winbind enable local accounts | C | Winbindでローカルユーザ/ローカルグループの管理を行う | | winbind nested groups | B | Windowsと同様のグループの階層化をサポートする(規定値はNo) | | winbind trusted domains only | C | 信頼するドメインのメンバだけの利用に制限する(規定値はNo) | | template primary group | C | ローカルユーザを作成した時のプライマリグループの規定値を指定する | | enable rid algorithm | C | RIDの生成アルゴリズムを有効にする(開発者向けパラメータ) | | LDAP | | ldap delete dn | B | Sambaユーザ削除時にLDAPのエントリも削除する(規定値No) | | ldap group suffix | B | LDAPにグループを登録する時のサフィックスを指定する | | ldap idmap suffix | B | LDAPにSIDとUIDのマッピングを保存する時のサフィックスを指定する | | ldap machine suffix | B | LDAPにマシンを登録する時のサフィックスを指定する | | ldap passwd sync | B | Sambaユーザのパスワードを変更したときにLDAPのパスワードも変更する。 | | ldap replication sleep | B | SambaがスレーブLDAPを利用している時、更新時の複製を待つ時間をミリ秒単位で設定(規定値は1000ミリ秒) | | ldap user suffix | B | LDAPにユーザを登録する時のサフィックスを指定する | | その他、一般設定 | | preload modules | C | クライアントの接続スピード向上のために予めロードしておくライブラリモジュールを指定する。 | | privatedir | C | パスワードやシークレットファイルの格納ディレクトリを指定 |
|
表3:Samba3.0で新しく追加されたパラメータ
|
重要度:A:対処必須、B:該当機能を利用しているときは重要、C:必要に応じて設定
|
| smb.confパラメータ | 重要度 | 意味 | | encrypt passwords | A | 暗号化パスワードの利用。従来Noが規定値だがYesに変更。Yesの利用が望ましい。 | | mangling method | A | 8.3形式のSFN(DOS用の短いファイル名)生成方法の指定。従来hashが規定値だったが、hash2に変更 | | passwd chat | B | unix password sync=yesとしてOSのパスワードと同期するときのエラーチェックが強化され、従来はpasswd programがpasswd chat通りに応答を返さなくてもSambaパスワードが変更されていたが、エラー時にはSambaパスワードが変更されなくなった。 | | passwd program | B | | password server | C | security=ADS(ActiveDirectoryによる認証)の時にLDAPポートによる認証をサポート | | restrict anonymous | C | サーバへの匿名アクセスを制限。 従来はYes/Noが指定でき、No(匿名接続を拒否しない)が規定値だったが、0,1,2の3つの値から選択できるようになった。 Windowsのレジストリ HKEY_LOCAL_MACHINE\SYSTEM \CurrentControlSet\Control \LSA\RestrictAnonymous と同じ意味を持ち、0は匿名接続を許可、1は匿名接続を拒否、2はWin2000/XP/Samba以外の接続を拒否 | | security | B | security=ADS(ActiveDirectoryによる認証)をサポート | | strict locking | B | 従来はファイルのロックはアプリケーションまかせ(No)であったが、強制ロック(Yes)が規定値になった。 | | winbind cache time | C | 結果のキャッシュ保存時間の規定値が15秒から300秒へ変更 | | winbind uid | B | idmap uidパラメータに置き換え | | winbind gid | B | idmap 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 | 機種依存文字の 変換必要性 | 変換が必要な文字 | | sjis | cp932 | 必要 | 図5の13文字 | | euc | eucJP-ms | 必要 | 図6の374文字 | | euc3 | eucJP-ms | 必要 | 図6の13文字 | | utf8 | utf-8 | 不要 | | | hex | cp932 + VFS hexモジュール | 必要 | 図5の13文字 | | cap | cp932 + 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を得意分野とする。現在、企業業績管理、管理会計などデータ分析ソリューションの短期導入を可能にするテンプレートやパッケージの開発を行っている。
|
|
 |
|
 |
|
 |
|
 |
|