Chapter 35. Sambaのアップデートとアップグレード
Prev | Part IV. マイグレーションとアップグレード | Next

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

### Jelmer R. Vernooij

The Samba Team

`<jelmer@samba.org>`

### John H. Terpstra

Samba Team

`<jht@samba.org>`

### Gerald (Jerry) Carter

Samba Team

`<jerry@samba.org>`

August 16, 2007

この章では、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 = Yesと`smbpasswd`データベースを使う、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  --input old.ldif --output new.ldif

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

    $ net getlocalsid

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

    $ smbpasswd -S

古い`sambaAccount`スキーマは、 `ldapsam_compat`passdb バックエンドを指定することで 引き続き使っても良い。しかし、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 UID”と“idmap 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との相互運用の問題を 解決する。

Prev | Up | Next
Part IV. マイグレーションとアップグレード | Home | Chapter 36. NT4 PDC からSamba-3 PDCへの移行