Chapter 35. Sambaのアップデートとアップグレード

Jelmer R. Vernooij

The Samba Team

John H. Terpstra

Samba Team

Gerald (Jerry) Carter

Samba Team

August 16, 2007

Table of Contents

アップデート要求の要点
Samba-3.0.xからSamba-3.2.0へのアップグレード
Samba-2.xからSamba-3.0.25へのアップグレード
お手軽移行ガイド
Samba-3.xシリーズにおける新しい機能
Samba-3.2.xシリーズにおける新しい機能
Samba-3.0.xにおける新しい機能
新しい機能

この章では、3.xシリーズのリリースの間に行われた変更の詳細な記録を提供する。この時点で、 このシリーズはGNU GPLバージョン2でライセンスされる3.0.xとGNU GPLバージョン3でライセンス される Samba 3.2.xシリーズがある。

アップデート要求の要点

Sambaは常時発展しているソフトウェアで、リリース間で明確な違いがある時もある。それらの 変更点のいくつかは、公式のMicrosoftパッチとアップデートによるセキュリティか機能の更新の 結果、Microsoft Windows ネットワーククライアントによって使われるプロトコルの変更の結果に よってもたらされる。特に、Sambaそれ自身の内部操作に影響するものについては、Sambaは そのような変更に追従しなければならない。

使用しているSambaのバージョンに、明確に言及している、以下のどのような節をも参照して ほしい。一般的に、新しいリリースに適用されるすべての変更は、それ以降のリリースにも 適用される。例えば、Samba3.0.23における変更は、3.0.25を含むそのあとすべての新しい リリースに適用される。Samba 3.2.xは3.2.0固有の変更が適用される前に、Samba 3.0.25から オリジナルが分割された。3.0.xシリーズの機能が特に無効にされていないのならば、 3.2.xシリーズの動作は、それ以前のパターンに沿うと推測できる。

Samba-3.0.xからSamba-3.2.0へのアップグレード

Samba-2.xからSamba-3.0.25へのアップグレード

この章では、主に、Samba-3.0.25とSamba-2.2.8a間での違いについて取り扱う。 それは、設定パラメーターが変更された点と、2.2.xから3.0.25への簡単なガイドを 提供する。

お手軽移行ガイド

Samba-3.0.25の既定値の動作は、おおよそSamba-2.2.xと同じであるべきである。smb.conf ファイル中に新しいパラメーターpassdb backendが定義されていない 場合の既定値の動作は、encrypt passwords = Yessmbpasswdデータベースを使う、Samba-2.2.xの既定値の動作と同じに なる。

なぜ、動作がおおよそSamba-2.2.xと同じであるべきであると言うのか? なぜならば、Samba-3.0.25は、結果として異なったプロトコルコードパスを取るかもしれない ネイティブなユニコードをサポートするような、新しいプロトコルを使うことが出来るからである。 そのような環境における新しい動作は、古いものとは正確に同じではない。うれしいことに、 ドメインとマシンSIDはアップグレードにおいて保存される。

もしも、Samba-2.2.xがLDAPを使っていて、LDAPデータベースを更新する時間がないならば、 smb.confファイル中でpassdb backend = ldapsam_compat を指定する。その他の点に関しては、動作は多かれ少なかれ同じであるべきである。 その後、Samba-3互換のLDAPバックエンドに切り替える時間があるとき、pdbedit を使って古いLDAPデータベースを新しいものに移行することは可能である。 The pdbeditコマンドを参照のこと。

Samba-3.xシリーズにおける新しい機能

Samba-3.2.xシリーズにおける新しい機能

Samba-3.0.xにおける新しい機能

新機能のうち代表的なものは以下の通り:

  1. Active Directoryのサポート。このリリースはメンバーサーバーとしてADS realmに参加でき、 LDAP/Kerberosを使ってユーザーの認証が出来る。

  2. ユニコードのサポート。Sambaはネットワーク上でUnicodeを使えるようになり、 マルチバイトとユニコード文字セットを扱うための、よりよい基盤を内部にもつ ようになった。

  3. 新しい認証システム。内部の認証システムはほとんど書き換えられた。変更の多くは 内部的なものであるが、新しい認証システムはとても自由に設定できる。

  4. 新しい、ファイル名の短縮システム。ファイル名短縮システムは完全に書き換えられた。 内部データベースは、恒久的に短縮マップを格納する。

  5. 新しいnetコマンド。新しいnetコマンドが追加された。 Windows中のnetコマンドと幾分似ている。結局、たくさんある他の ユーティリティ(たとえばsmbpasswd)をnet中のサブコマンドで 置き換えることを計画している。

  6. Sambaはネットワーク上でNT形式のstatus32コードで通信できるようになった。 これはかなりエラーハンドリングを改善する。

  7. よりよいWindows 200x/XP印刷サポート。Active Directory中にプリンター属性を 公開することを含む。

  8. 新しい、passdbバックエンドと文字セット用の、ローダブルRPCモジュール。

  9. よりパフォーマンスを改善するために、既定値で、winbinddデーモンの二重化をサポート。

  10. Windows NT 4.0ドメインからSambaドメインへ、管理ユーザー、グループとドメインSIDの 移行サポート。

  11. Windows NT 4.0ドメインコントローラーとの信頼関係の確立のサポート。

  12. SIDからUID/GIDマッピングをLDAPディレクトリに格納する事による、 分散Winbindアーキテクチャの新規サポート。

  13. Samba文書構造の大規模な更新。

  14. 既定値のWindows 2003セキュリティ設定との互換を取るために、サーバーと クライアントにおけるSMB署名の完全なサポート。

さらに多くの改良がある!

設定パラメーターの変更

この節には、Samba-2.2.xシリーズからSamba-3.0.25を含むまでのsmb.confの変更の 簡単な一覧がある。

新規、あるいは変更されたパラメーターについての完全な説明は、smb.conf(5)のマニュアル ページを参照のこと。

Sambaのアップデートあるいはアップグレードをするときはいつでも、Sambaの配布セット の一部である、WHATSNEW.txtというファイルを読むことを強く推奨する。 このファイルは、Sambaのwebサイトの、 右側のカラム、Current Stable Releaseの下で、Release Notesを クリックして入手してもよい。

削除されたパラメーター

アルファベット順で、以下はSamba-2.2.xから3.0.35で削除されたパラメーターの一覧である。

  • admin log

  • alternate permissions

  • character set

  • client codepage

  • code page directory

  • coding system

  • domain admin group

  • domain guest group

  • enable rid algorithm

  • enable svcctl

  • force unknown acl user

  • hosts equiv

  • ldap filter

  • min password length

  • nt smb support

  • post script

  • printer admin

  • printer driver

  • printer driver file

  • printer driver location

  • read size

  • source environment

  • status

  • strip dot

  • total print jobs

  • unicode

  • use rhosts

  • valid chars

  • vfs options

  • winbind enable local accounts

  • winbind max idle children

  • wins partners

新しいパラメーター

以下の新しいパラメーターは、Samba 3.0.25までにリリースされたものである(機能毎にグルーピング:)

リモート管理

  • abort shutdown script

  • shutdown script

ユーザーとグループアカウント管理

  • add group script

  • add machine script

  • add user to group script

  • algorithmic rid base

  • delete group script

  • delete user from group script

  • passdb backend

  • rename user script

  • set primary group script

  • username map script

認証

  • auth methods

  • ldap password sync

  • passdb expand explicit

  • realm

プロトコルオプション

  • add port command

  • afs token lifetime

  • client lanman auth

  • client NTLMv2 auth

  • client schannel

  • client signing

  • client use spnego

  • defer sharing violations

  • disable netbios

  • dmapi support

  • enable privileges

  • use kerberos keytab

  • log nt token command

  • ntlm auth

  • paranoid server security

  • sendfile

  • server schannel

  • server signing

  • smb ports

  • svcctl list

  • use spnego

ファイルサービス

  • allocation roundup size

  • acl check permissions

  • acl group control

  • acl map full control

  • aio read size

  • aio write size

  • dfree cache time

  • dfree command

  • ea support

  • enable asu support

  • fam change notify

  • force unknown acl user

  • get quota command

  • hide special files

  • hide unwriteable files

  • inherit owner

  • hostname lookups

  • kernel change notify

  • mangle prefix

  • map acl inherit

  • map read only

  • max stat cache size

  • msdfs proxy

  • open files database hash size

  • set quota command

  • store dos attributes

  • use sendfile

  • usershare allow guests

  • usershare max shares

  • usershare owner only

  • usershare path

  • usershare prefix allow list

  • usershare prefix deny list

  • usershare template share

  • vfs objects

印刷

  • cups options

  • cups server

  • force printername

  • iprint server

  • max reported print jobs

  • printcap cache time

ユニコードと文字セット

  • display charset

  • dos charset

  • UNIX charset

SIDからUID/GIDへのマッピング

  • idmap backend

  • idmap gid

  • idmap uid

  • username map script

  • winbind nss info

  • winbind offline logon

  • winbind refresh tickets

  • winbind trusted domains only

  • template primary group

LDAP

  • ldap delete dn

  • ldap group suffix

  • ldap idmap suffix

  • ldap machine suffix

  • ldap passwd sync

  • ldap replication sleep

  • ldap timeout

  • ldap user suffix

一般的な設定

  • eventlog list

  • preload modules

  • reset on zero vc

  • privatedir

変更されたパラメーター(動作が変わったもの)

  • acl group control (新しい既定値は No, 廃止されるパラメーター)

  • change notify timeout (スコープが変更)

  • dos filemode (既定値で無効に)

  • dos filetimes (既定値で有効に)

  • enable asu support (既定値で無効に)

  • enable privileges (既定値で有効に)

  • encrypt passwords (既定値で有効に)

  • host msdfs (既定値で有効に)

  • mangling method (既定値でhash2を設定)

  • map to guest

  • only user (廃止)

  • passwd chat

  • passwd program

  • password server

  • restrict anonymous (整数値)

  • security (新しくadsが追加)

  • strict locking (既定値でautoに)

  • winbind cache time (5分に増加)

  • winbind enum groups (既定値で無効に)

  • winbind enum users (既定値で無効に)

  • winbind nested groups (既定値で有効に)

  • winbind uid (idmap uidのために廃止に)

  • winbind gid (idmap gidのために廃止に)

  • winbindd nss info

  • write cache (廃止)

新しい機能

Samba-2.2.xシリーズからの主要な動作の変更点は、この節に記述してある。現在の Sambaリリースのサポート期間中に行われた変更に関連する詳細情報を得るためには、 各Sambaリリースに同梱されるWHATSNEW.txtを参照してほしい。

TDBデータファイル

インストール、第一章, 第一章に、Samba-3データファイルに関連する、 その配置とサーバー移行、アップデートとアップグレードにおいて保持しなければ ならない情報があるので、参照してほしい。

Samba-3にアップグレードする前に、存在している${lock directory}/*tdbをバックアップ する事を忘れないでほしい。もしも必要ならば、Sambaはオープンされているように データベースをアップグレードする。Samba-3から2.2へのダウングレードか、 最新版のSamba-3より前のバージョンへの変更は、サポートされない手順である。

古いSamba-2.2.xのtdbファイルは次のテーブル で説明されている。

Table 35.1. Samba-2.2.xのTDBファイルの説明

名前説明バックアップ必要?
account_policyユーザーポリシーの設定yes
brlockバイトレンジファイルロック情報no
connections

クライアント接続情報

no
locking一時ファイルロックデータno
messages

smbdによって生成されたメッセージの一時的な記憶場所

no
ntdrivers

プリンター毎のドライバー情報を格納

yes
ntforms

プリンター毎のフォーム情報を格納

yes
ntprinters

プリンター毎のdevmode設定情報を格納

yes
printing/*.tdb

印刷サービス毎に作成されたlpqコマンドからのキャッシュされた出力

no
registry

読み取り専用のSambaレジストリスケルトンで、winreg RPC経由で種々の データベーステーブルをエクスポートする機能を提供する。

no
sessionid

その他のセッション情報のための一時的なキャッシュ。

no
share_info共有のACL設定。yes
unexpected

どのプロセスもリッスンしていないパケットの受信用。

no
winbindd_cache

NT4かADSドメインから受信した識別情報のキャッシュ。

yes
winbindd_idmap

SIDからUNIXのUID/GIDへの新しいIDマップテーブル。

yes

動作の変更点

以下の問題はSamba-2.2とSamba-3の間で、特定のインストール状態におけるSambaの動作の 変更点として知られている。

  1. 操作がWindowsドメインのメンバーの場合、Samba-2.2は、もしもUIDがgetpwnam() 呼び出し経由で得られなかった場合、guest accountに、リモート DCによって認証された任意のユーザーをマップする。Samba-3は、 NT_STATUS_LOGON_FAILUREというエラーメッセージで接続を 拒否する。Samba-2.2の動作を再度確立するための現時点での回避策はない。

  2. Samba-2.2で制御されたドメインにマシンを追加するとき、 add user scriptはマシン信頼アカウントのUNIX識別子を 作成するのに使われる。Samba-3では新しい add machine scriptという、この目的のために指定しなければ ならないスクリプトを導入している。Samba-3は、 add machine scriptがない場合に、 add user scriptを使うように切り替える事はしない。

passdbバックエンドと認証

Samba-3に移動するときにSamba管理者が知っておくべきいくつかの新しい変更が ある。

  1. 暗号化されたパスワードは、Windowsクライアントをそのまま使える事との 相互運用性を向上させるために、既定値で有効になった。これは、(a) Sambaアカウントは各ユーザー毎に作成する必要があるか、(b) encrypt passwords = noを明示的に smb.conf中で定義する 必要があるということである。

  2. ネイティブなWindows Kerberos 5とLDAPプロトコルを使う、Active Directory ドメインとの統合のための、新しいsecurity = ads オプションの包含。

Samba-3は、認証方法を複数設定できる機能(auth methods) と、アカウント格納バックエンドを複数設定できる機能(訳注:現在は無効) (passdb backend)がある。詳細は、smb.confマニュアル ページとアカウント情報データベースを参照して ほしい。両方のパラメーターが妥当な既定値を仮定している間、Sambaの動作を実際に どの値が正しくさせているかを理解する必要があることはありえる。

smbpasswdの特定の機能は、新しいsmbpasswd ユーティリティ、netツールと新しいpdbedit ユーティリティの間で分割された。詳細は、それぞれのマニュアルページを参照のこと。

LDAP

この節では、Samba/LDAP統合に影響する新しい機能の概要を説明する。

新しいスキーマ

新しいオブジェクトクラス(sambaSamAccount)が古いsambaAccountを置き換える ために導入された。この変更は、他のベンダからの属性を破壊するのを防ぐための、 属性の変更を支援する。LDIFファイルを新しいスキーマに変更するための変換 スクリプトがexamples/LDAP/convertSambaAccountにある。

例:

		$ ldapsearch .... -LLL -b "ou=people,dc=..." > old.ldif
		$ convertSambaAccount --sid <DOM SID> --input old.ldif --output new.ldif
		

<DOM SID>は以下を、Samba PDC上で、rootで動かすことで入手できる。

$ net getlocalsid <DOMAINNAME>

Samba-2.x下では、ドメインSIDは以下を実行することで得られる:

$ smbpasswd -S <DOMAINNAME>

古いsambaAccountスキーマは、 ldapsam_compatpassdb バックエンドを指定することで 引き続き使っても良い。しかし、sambaAccountと関連する属性はスキーマ ファイルの歴史的セクションに移動済みで、もしも必要な場合、使う前に コメントアウトしなければならない。sambaAccount に対するSamba-2.2オブジェクトクラスの定義は、Samba-3の samba.schemaファイル中では変更されていない。

他の新しいオブジェクトクラスとそれが使うものは以下の通り:

  • sambaDomain 必要に応じて ユーザーとグループのRIDを割り当てるために使われるドメイン情報。 もしもidmap UID/GIDの範囲が設定され、ldapsam passdbバックエンドが選択された場合、属性は ldap suffixディレクトリエントリ中に、 自動的に追加される。

  • sambaGroupMapping は、posixGroupとWindowsのグループ/SID との間で関連づけを行うためのオブジェクト。これらのエントリは ldap group suffix中に格納され、 net groupmapコマンドによって管理される。

  • sambaUNIXIdPool ldap idmap suffixエントリ中に自動的に作成され、 次に有効なidmap UIDidmap GID を格納している。

  • sambaIdmapEntry SIDとUNIXのUID/GID間でのマッピングを格納するオブジェクト。 これらのオブジェクトは必要に応じてidmap ldapモジュールにより 作成される。

検索のための新しいサフィックス

以下の新しいsmb.confパラメーターは、 passdb backend = ldapsam://...が指定された時に 特定のLDAPクエリを指示するのを支援するために追加された。

  • ldap suffix ユーザーとコンピューターアカウントを検索するのに使用。

  • ldap user suffix ユーザーアカウントを格納するのに使用。

  • ldap machine suffix マシン信頼アカウントを格納するのに使用。

  • ldap group suffix posixGroup/sambaGroupMappingエントリの位置。

  • ldap idmap suffix sambaIdmapEntryオブジェクトの位置。

もしも、ldap suffixが定義されていた場合、これは残りの subsuffixパラメーターに追加される。この場合、smb.conf中のサフィックスの 記述順序は重要である。常時、他のものよりも前に、 ldap suffixを記述すること。

Sambaのsmb.conf解析の制限により、引用符でドメイン名を囲ってはいけない。

IdMap LDAPサポート

Samba-3はidmapサブシステムにもLDAPバックエンドをサポートしている。以下の オプションは、Sambaにidmapテーブルを、ディレクトリサーバー onteroseの ou=Idmap,dc=quenya,dc=org部分に格納する事を指示する。

[global]
...
idmap backend = ldap:ldap://onterose/
ldap idmap suffix = ou=Idmap
idmap uid = 40000-50000
idmap gid = 40000-50000

この設定では、UID/GID名前空間を複数のサーバー上で共有するWinbindの利用が 出来るようになり、Samba-2.2で存在していた、NFSとの相互運用の問題を 解決する。