## Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル

ハードコピー版(英語)を購入する

目次

| Chapter 6 ユーザ、セキュリティ、ドメイン |

> ## 6.4 パスワード

> パスワードはSambaにとって厄介な問題である。実際これは、Samba をインストールしたほとんどの人が最初に突き当たる大きな問題であり、現在Samba サポートグループに寄せられている質問の中でも一番多い。ここまでの章では、`guest` `ok` オプションを各設定ファイルに記述し、接続の際にパスワードによる認証を不要にすることで、この問題を避けて来た。しかし、そろそろSambaについて深く掘り下げ、ネットワークでなにが起きているかを理解する必要があるだろう。

> 個々のクライアントが送るパスワードは、暗号化されていても、されていなくてもかまわない。もちろん暗号化されたパスワードの方がより安全である。 暗号化されていないパスワードは、 tcpdumpのようなパケットキャプチャプログラムを使えば簡単に読めてしまう (Samba 向けに手を入れたものは、Chapter 3, Windows クライアントの設定 で用いた)。 パスワードが暗号化されるかどうかは、Samba サーバに接続するクライアントのOSに依存する。プライマリドメインコントローラで認証を行なう際、 どのWindows OSが送信パスワードを暗号化するのかは 表 6.5 にまとめた。 クライアントがWindows でないとき、 SMB パスワードが暗号化されているかどうかは、 そのシステムのドキュメントで確認すること。

> 表 6.5: Windows OS と暗号化パスワード
> OS | 暗号化か非暗号化
> --- | ---
> `` Windows 95 | 非暗号化
> Windows 95 (SMB アップデート) | 暗号化
> Windows 98 | 暗号化
> Windows NT 3. x | 非暗号化
> SP`3`より前の Windows NT 4.0 | 非暗号化
> SP 3以降のWindows NT 4.0 | 暗号化

> 実は暗号化には2つの異なる方式がある。1つはWindows 95やWindows 98が用いるもので、Microsoft LAN Managerの暗号化方式を再利用したものである。もう1つはWindows NTのクライアントとサーバが用いるものである。Windows 95と98とはLAN Manager ネットワークソフトウェアから引き継がれた古い暗号化形式を利用しているが、Windows NTのクライアントやサーバは新しい暗号化方式を用いている。

> 暗号化パスワードがサポートされている場合、Sambaは暗号化パスワードを smbpasswdというファイルに格納する。デフォルトでは、このファイルはSamba 配布パッケージの privateディレクトリ(/usr/local/samba/private)に置かれる。一方同時に、クライアントも暗号化されたユーザのパスワードを自らのシステムに保持している。平文のパスワードはどちらにも格納されることはない。どちらのシステムも、パスワードが設定されたり変更される度に、予め定められたアルゴリズムを用いてパスワードの暗号化を自動的に行う。

> クライアントが暗号化パスワードをサポートしているSMBサーバ(Samba や Windows NT等)に接続しようとすると、2台のコンピュータは以下のようなネゴシエーションを行う:

> 1. クライアントはサーバとプロトコルをネゴシエーションしようとする。

> 2. サーバはプロトコルを返し、暗号化パスワードが利用可能であることを伝える。このとき、ランダムに生成された8バイトのチャレンジ文字列がクライアントに返却される。

> 3. クライアントはチャレンジ文字列をキーに用いて、既に暗号化されているパスワードを、(ネゴシエーションの結果決まった) プロトコルで定義されている方式を用いて暗号化する。そしてクライアントはその結果をサーバに送る。

> 4. サーバは、データベースに格納されている暗号化パスワードに対して同様のことを行う。結果が合致したら、パスワードは同じものであるとみなされ、ユーザは認証される。

> 認証の過程で本来のパスワードがネットワーク上を流れることはないものの、 smbpasswd ファイルに格納されている暗号化パスワードは、細心の注意を払って保護しなければならない。パスワードが信頼できないユーザによって持ち出されると、今述べたアルゴリズムの各ステップを再現すればシステムに侵入できてしまう。暗号化されたパスワードは平文のパスワードと同様に注意して扱う必要がある。暗号学の分野では、これは 平文と等価な データと呼ばれる。もちろんクライアント上でも、この平文と等価なパスワードが安全に保護されるよう配慮しなければならない。

> 以下のグローバルパラメータを smb.confに追加すれば、Samba が暗号化パスワードを受け付けるように設定できる。以下ではSamba のパスワードファイルの位置を明示的に指定していることに注意:

>     [global]
>     	security = user
>     	encrypt passwords = yes
>     	smb passwd file = /usr/local/samba/private/smbpasswd

> Samba は smbpasswd ファイルが初期化されるまで、如何なるユーザからのアクセスも受け付けない。

> ### 6.4.1 クライアント側で暗号化パスワードを無効にする

> UNIX の認証機構は十年近くにわたって利用されている。例えばインターネット経由での telnet や rlogin を利用したアクセスがそうだが、これらには良く知られたセキュリティ上の問題点がある。平文のパスワードがインターネットを経由して送信されるので、悪意を持った盗聴者によりTCPパケットから採取される可能性があるのだ。しかし、自分のネットワークが十分安全であり、標準的なUNIXの /etc/passwd による認証を全てのクライアントに対して用いたい場合は、そのようにもできる。その場合、暗号化パスワードを標準的に用いる Windows クライアントでは、それを無効にしなければならない。

> 無効にするには、各システム毎にファイルをインストールして、Windows のレジストリを修正する必要がある。プラットフォームによって異なるが、ファイルの名前は NT4_PlainPassword.reg か Win95_PlainPassword.regである(monyo 訳注: Windows 98 や Windows 2000 用のファイルも現在では存在する)。適切な .reg ファイルを Samba の配布パッケージの /docs ディレクトリからDOSのフロッピーにコピーし、クライアントの「スタート」ボタンから「ファイル名を指定して実行」メニューを指定して実行させればインストールできる。Windows 95 用の .reg ファイルは Windows 98 でも同じように動作する。

> マシンを再起動すると、クライアントはサーバにパスワードを送る際にパスワードのハッシュを暗号化しなくなる。これはネットワークでブロードキャストされるTCPパケット中に平文のパスワードと同等のものが流れることを意味する。ネットワークが安全であると確信できるとき以外は平文パスワードを利用しないことを、再度忠告しておく。

> パスワードを暗号化しないときは、Samba の設定ファイルにも以下のように示しておこう:

>     [global]
>     	security = user
>     	encrypt passwords = no

> ### 6.4.2 smbpasswd ファイル

> Samba は暗号化パスワードを smbpasswdというファイルに格納する。このファイルはデフォルトでは /usr/local/samba/private ディレクトリに置かれている。 smbpasswd ファイルは passwd ファイルと同じように防護しておくべきであり、root ユーザだけが読み書きアクセス可能なディレクトリ中におくべきである。その他のユーザからディレクトリを読めるようにしてはならない。さらにファイルは root 以外のユーザからのアクセスを禁止しておくべきである。

> 暗号化パスワードを用いる前に、各UNIXユーザのエントリを smbpasswd ファイルに作成しておく必要がある。ファイルの構造はUNIXの passwd ファイルに似ているが、異なるフィールドが存在する。 図 6.3 に smbpasswd の構造を図示する。以下のエントリは実際には1行である。

> #### 図 6.3: smbpasswd ファイルのエントリの構造(実際には1行)

> 以下個々のフィールド毎に説明する:

> Username

>   これはアカウントのユーザ名である。これはシステムのパスワードファイルにあるユーザ名に対応づけられる。

> UID

>   これはアカウントのユーザIDである。ユーザ名と同様、システムのパスワードファイルにあるものと対応づけられ、UIDの示すユーザ名との対応づけも一致している必要がある。

> LAN Manager パスワードハッシュ

>   これはWindows 95 や 98 クライアントが用いるパスワードに対応する32ビットの16進文字列である。ユーザのパスワード(最長14バイトまでの文字列を大文字にしたもの)を2回繰り返したものをキーとして、56ビットDESアルゴリズムにより`KGS!@#$%`という文字列を暗号化したものである。ユーザにパスワードがない場合は、ハッシュの先頭11文字が`NO` `PASSWORD` という文字列になり、残りは文字 `X` で埋められる。共有へのアクセスは誰でもパスワードなしに行える (nakano 注??)。一方パスワードが無効にされた場合は、32個の文字 `X` になる。`null` `passwords` オプションが設定されていない限り、Samba はパスワードがないユーザに対するアクセスを許可しない。 (nakano 注: このへん原文からちょっとわかりにくいのですが...)

> NT パスワードハッシュ

>   これはWindows NTクライアントが用いるパスワードを示す32ビットの16進の文字列である。これはユーザのパスワード(16ビットのリトルエンディアンなUnicode文字列で表現されたもの)をMD4 アルゴリズムを用いてハッシュ化したものである。このときのパスワードはハッシュ前に大文字に変換されない。

> Account Flags

>   このフィールドはブラケット([])で囲まれた11文字からなる。以下の文字を任意の順序で指定でき、それ以外はスペースで埋める:

>   U

>   このアカウントは通常のユーザアカウントである。

>   D

>   このアカウントは現在無効になっており、Samba はログインを許可しない。

>   N

>   このアカウントにはパスワードがない。

>   W

>   これはマシンアカウント(workstation trust account)を表し、Samba がプライマリドメインコントローラ(PDC)として機能する時に、Windows NTマシンをドメインに参加させるために用いる。

> Last Change Time

>   これは`LCT-`に続けて、エントリの最終更新時刻を1970年1月1日からの経過秒数で16進表示した文字列である。

> #### 6.4.2.1 smbpasswd にエントリを追加する

> smbpasswd ファイルに新規エントリを追加するにはいくつかの方法がある:

> - smbpasswd プログラムを `-a` オプションを付けて呼び出せば、現在のサーバ上にUNIXのアカウントを持っているユーザを誰でも自動的に追加できる。このプログラムは /usr/local/samba/bin ディレクトリにある。

> - /usr/local/samba/bin ディレクトリにある addtosmbpass を使ってもよい。これはシステムのパスワードファイルを解析し、SMBパスワードファイルへ追加したいエントリのユーザ名とUIDを取り出す単純な awk スクリプトである。ユーザエントリの残りのフィールドにはデフォルト値を挿入する。これは後で smbpasswd プログラムを用いて更新すれば良い。このプログラムを用いるには、ファイルの1行目を編集して、システムにある awk を正しく指定する必要があるかも知れない。

> - どちらの方法もうまくいかなかった場合は、 smbpasswd ファイルにデフォルトのエントリを手作業で追加しても良い。エントリは1行に全部を書く。各フィールドはコロンで区切り、以下のようにする:

>     dave:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U          ]:LCT-00000000:

> これはシステムのパスワードファイルで指定されているユーザ名とUID、32個の文字 `X` からなる2つのフィールド、上記で説明した Account Flags と Last Change Time からなる。このエントリを追加したら、 smbpasswd プログラムを使ってユーザのパスワードを設定する。

> #### 6.4.2.2 暗号化パスワードの変更

> smbpasswd ファイルにある暗号化パスワードを変更するときも smbpasswd プログラムが利用できる。このプログラムは暗号化パスワードファイルと同じ名前であるため、パスワードファイルとパスワードを変更するプログラムとを混同しないように注意すること。

> smbpasswd プログラムは、UNIXアカウントのパスワード変更で用いる passwd プログラムとほとんど同じように利用できる。このプログラムは (root ユーザでなければ) 単純に古いパスワードを尋ね、次に新しいパスワードを2回問い合わせる。画面上にパスワードの文字列は表示されない。

>     # smbpasswd dave

>     Old SMB password:
>     New SMB password:
>     Retype new SMB password:
>     Password changed for user dave

> このコマンドの実行後に smbpasswd ファイルを参照すれば、LAN Manager と NT の各パスワードハッシュが適切な位置に格納されていることが確認できるだろう。データベース中に暗号化パスワードを含むエントリが置かれれば、そのユーザは暗号化パスワードを用いて共有に接続することが可能になる!

> ### 6.4.3 パスワードの同期

> あるパスワードに対して、暗号化したものとしないものとが存在する場合、その両方を変更しようとすると何かとトラブルが発生する。すべての場合に対応できるわけではないが、Samba にはパスワードを同期させるための機能があり、システムで暗号化パスワードが変更されたとき、自動的に通常の Unix パスワードも変更するようにできる。この機能は `unix` `password` `sync` グローバル設定オプションで有効にできる:

>     [global]
>     	encrypt passwords = yes
>     	smb passwd file = /usr/local/samba/private/smbpasswd

>     	unix password sync = yes

> このオプションを有効にすると、Samba は smbpasswdによって暗号化パスワードが変更されたときに、ユーザの通常のパスワードを (`root` 権限で) 変更しようとする。ただし、この機能を動作させるには、さらに2つのオプションを適切に設定しておく必要がある。

> 簡単な方は `passwd` `program`である。このオプションには、ユーザの通常のシステムパスワードを変更するUNIXコマンドを指定するだけである。これはデフォルトでは `/bin/passwd` `%u` に設定されている。UNIXシステムによってはこのまま変更する必要がない場合もあるが、Red Hat Linux のように、 /usr/bin/passwd を用いているものもある。また、将来これを別の場所にあるスクリプトやプログラムに置き換えることもできる。例えば、ユーザのパスワードを変更するために `changepass` というスクリプトを使おうとしている場合を考えてみよう。現在の UNIX ユーザ名の指定に `%u` という変数が使えることを思い出そう。よって以下のようになるだろう:

>     [global]
>     	encrypt passwords = yes
>     	smb passwd file = /usr/local/samba/private/smbpasswd

>     	unix password sync = yes
>     	passwd program = changepass %u

> `unix` `password` `sync` オプションが `yes` に設定されていれば、このプログラムは`root` ユーザで呼び出されることに注意すること。 これは Samba がユーザの変更前のパスワードを平文で保持していないためである。

> 設定が難しいほうのオプションは `passwd` `chat` である。 `passwd` `chat` オプションは、UNIX のチャットスクリプトのように動作する。 このオプションでは、`passwd` `program` オプションで指定されるプログラムとの間で送受信されるべき、 一連の文字列を指定する。例えば、デフォルトの `passwd` `chat` は以下のようになっている。各文字列のグループを区切るデリミタ(区切り文字)はスペースになっている:

>     passwd chat = *old*password* %o\n *new*password* %n\n *new*password* %n\n *changed*

> 最初の文字グループは、パスワード変更プログラムから送られてくる内容である。これにはワイルドカード(*) を含めることができ、チャットプログラムが似たようないろいろの出力に対応できるようになっている。この `*old*password*` では、Samba がパスワードプログラムから期待する文字列は`old` の後に `password` が続くもので、この 2 つの間や前後にはどんな文字が存在しても構わない。これにより、Samba はこの条件を満たす出力があるまでずっと待ち続ける。Samba が期待される出力を受け取れないときは、パスワードの変更は失敗する。

> 次の文字グループは、Samba が最初の文字グループに合致する出力を受信した際に、Samba が送信する内容を示す。ここでは `%o\n` となっている。この返答には二つの内容が含まれている。一つは `%o` 変数で、古いパスワードを指定しており、`\n` 改行記号が後に続いている。(nakano 注: 前述の root 権限云々の記述と矛盾するような?) 従ってこれは、パスワード変更プログラムの標準入力に古いパスワードを「タイプ」し、その後に「改行」キーが押すのと同じことになる。

> 続いてこれに対する応答の文字グループがあり、さらにその後にパスワード変更プログラムへの返信が続く(標準的な UNIX の チャット スクリプトではこれが延々続くことになる)。スクリプトは、最後の文字グループがマッチするまで続く。[2]

> > [2] このスクリプトは、Red Hat Linux のように、パスワードプログラムが "Password changed." ではなく "All authentication tokens updated successfully," と応答する環境では動作しない。これに対する対応方法はこの章の後ほどで示す。

> パスワードプログラムから送信される文字列に合致させる際には、 表 6.6 にある文字が使える。 またパスワードプログラムへの返信を作る際には、 表 6.7 にある文字が使える。

> 表 6.6: パスワードチャットで受信時に利用できる文字
> 文字 | 定義
> --- | ---
> `*` | 任意の文字の0文字以上の繰り返し
> `" "` | スペースを含む文字列をマッチングの対象とするために用いる。アスタリスク(*文字)は、クオート("文字)の内部にあってもワイルドカードとして機能する。クオート中に何も含めなければ (つまり "" とすれば)、応答がないことを示す。

> 表 6.7: パスワードチャットで送信時に用いることが出来る文字
> 文字 | 定義
> --- | ---
> `%o` | ユーザの変更前のパスワード
> `%n` | ユーザの新しいパスワード
> `\n` | 改行(linefeed)文字
> `\r` | 復帰改行(carriage-return)文字
> `\t` | タブ(tab)文字
> `\s` | スペース

> 例えば、パスワードチャットは以下のようにも変更できる。これは、変更前のパスワードを入力しなくても良い場合を扱うものである。また Red Hat Linux が送信する`all` `tokens` `updated` `successfully` という文字列にも対応している:

>     passwd chat = *new password* %n\n *new password* %n\n *success*

> 繰り返すが、デフォルトのチャット定義は多くのUNIXでうまくいくはずだ。うまくいかない場合は、パスワード変更プログラム用に独自のチャットスクリプトを設定することになるが、その際には `passwd` `chat` `debug` グローバルオプションを用いると良いだろう。`passwd` `chat` `debug` オプションはパスワードチャットを行なう際のすべてのやりとりをログに記録する。このオプションには以下のように真偽値を与える:

>     [global]
>         encrypted passwords = yes
>         smb passwd file = /usr/local/samba/private/smbpasswd

>         unix password sync = yes
>         passwd chat debug = yes
>         log level = 100

> パスワードチャットのデバッグ機能を有効にすると、Samba がパスワードチャットの際に送受信したすべての情報が Samba のログに記録される。ただしこれにはデバッグレベルを 100 にする必要がある (そのため上の例では log level オプションも新たに加えた)。 これは大抵ものすごくたくさんのエラーログを出力するので、 `passwd` `program` オプションを使って /bin/passwd の代わりに独自のスクリプトを設定し、パスワードの変更時にどのようにやりとりが行なわれているかを記録する方が効率的かもしれない。ログファイルには、平文で記述されたパスワードが含まれるため、アクセス権で厳格に保護し、必要な情報を入手し次第削除すること。

> Samba を実行しているOS によっては、パスワードを辞書攻撃等から守るために、複雑なパスワードが必要な場合もある。ユーザがパスワードを変更する際には、これらの制限について知らされていないとまずいだろう。

> 先にパスワードの同期機能は完全ではないと言ったが、これは標準のパスワードファイルの方がユーザによって更新された時に、 smbpasswdファイルの暗号化パスワードを同期する方法がないためである。この問題に付いては多数の対応策がある (例えば NIS や PAM (pluggable authentication modules) のフリー版を使うとか)。しかし、いずれもすべての問題を解決するには到っていない。将来 Windows 2000 が出荷されれば、LDAP (Lightweight Directory Access Protocol) への対応がより良くなるはずだから、パスワードの同期問題を過去のものとしてくれるであろう。(nakano 注: そうなんですか? :-)

> ### 6.4.4 パスワード設定オプション

> 表 6.8 中のオプションは、Samba のパスワード関連の設定を変更するものである。

> 表 6.8: パスワード設定オプション
> オプション | パラメータ | 機能 | デフォルト | 範囲
> --- | --- | --- | --- | ---
> `encrypt passwords` | 真偽値 | 暗号化パスワードを有効にする | `no` | グローバル
> `unix password sync` | 真偽値 | `yes`の場合、Samba は暗号化パスワードが変更された際に、標準のUNIXパスワードデータベースも更新する。 | `no` | グローバル
> `passwd chat` | 文字列 (chat コマンド) | パスワード変更プログラムに送られる応答の文字列を設定する | このオプションに付いては、前述したセクションを参照のこと | グローバル
> `passwd chat debug` | 真偽値 | パスワード変更処理のデバッグログをログファイルに記録する (ログレベル 100 が必要) | `no` | グローバル
> `passwd program` | 文字列 (UNIX コマンド) | パスワード変更に用いるプログラム | `/bin/passwd %u` | グローバル
> `password level` | 数値 | クライアントのパスワードを認証する際に、この数だけ大文字への置き換えを試みる | なし | グローバル
> `update encrypted` | 真偽値 | `yes`の場合、Samba はクライアントが共有に対して平文パスワードで接続した際に、そのユーザのパスワードを暗号化して暗号化パスワードデータベースに書き込む | `no` | グローバル
> `null passwords` | 真偽値 | `yes` の場合、Samba はパスワードがないユーザのアクセスを許可する | `no` | グローバル
> `smb passwd file` | 文字列 (フルパス名) | 暗号化パスワードファイルの名前を指定する | `/usr/local/samba/private/smbpasswd` | グローバル
> `hosts equiv` | 文字列 (フルパス名) | パスワードなしで接続できるユーザやホストを記述したファイルの名前を指定する | なし | グローバル
> `use rhosts` | 文字列 (フルパス名) | パスワードなしで接続できるユーザを記述する rhosts ファイルの名前を指定する | なし | グローバル

> #### 6.4.4.1 unix password sync

> `unix` `password` `sync` グローバルオプションは、ユーザが暗号化パスワードを変更したときに、標準のUNIXパスワードファイルも更新するかどうかを指定する。暗号化パスワードは Samba サーバの smbpasswd ファイルに格納される。このファイルはデフォルトでは /usr/local/samba/private に置かれる。この機能を有効にするには以下のように設定する:

>     [global]
>     	unix password sync = yes

> このオプションが有効な場合、Samba は暗号化パスワードを変更すると同時に、`passwd` `program` オプション (前述) で指定したプログラムにユーザ名と新しいパスワードを渡し、標準のUNIXパスワードも変更しようとする。パスワード変更プログラムは`root`権限で実行されるため、Samba がユーザの平文パスワードを知っている必要がないことに注意。[3] UNIX 側のパスワード変更が何らかの理由で失敗すると、SMB パスワードも変更されない。

> > [3] ここで通常用いられる UNIX の passwd プログラムは、`root` 権限で実行する場合には、ユーザの変更前のパスワードを入力せずにユーザパスワードを変更できるからである (一般ユーザの場合にはセキュリティ上の要請から古いパスワードを入力する必要がある)。

> #### 6.4.4.2 encrypt passwords

> `encrypt` `passwords` グローバルオプションは、Samba の認証に平文パスワードと暗号化パスワードとのどちらを使うかを切り替える。このオプションを `yes`にすると、クライアントからは暗号化パスワードが送出されるという前提で動作するようになる:

>     encrypt passwords = yes

> Windows NT 4.0 の Service Pack 3 以上や Windows 98 は、デフォルトではネットワークに暗号化パスワードを送出する。暗号化パスワードを有効にしている場合は適切な smbpasswd ファイルを置き、暗号化パスワードを用いて認証したいユーザの認証をそちらに移動する必要がある (この章で前述した Section 6.4.2, smbpasswd ファイル を参照のこと)。また Samba は smbpasswd ファイルの位置を知っている必要があるため、デフォルトの位置(通常 /usr/local/samba/private/smbpasswd) 以外に置く場合は、 `smb` `passwd` `file` オプションを用いて明示的にファイルの位置を指定する必要がある。

> 管理者が望むなら、`update` `encrypted` オプションを用いれば、クライアントが非暗号化パスワードで接続した際に、 smbpasswd ファイルに暗号化パスワードを書き込むように設定できる。

> 暗号化パスワードを用いた認証が必要なホストが、確実にこの認証を受けられるようにするには、`include` オプションを用いるのがよくあるやり方だ。これを用いれば、OSタイプ(`%a`) やクライアント名(`%m`)毎に設定ファイルを作成できる。こうしたホスト毎、OS毎の設定ファイルに `encrypted` `passwords` `=` `yes` オプションを含めれば、特定のクライアントがサーバに接続したときだけ、このオプションを有効にできる。

> #### 6.4.4.3 passwd program

> `passwd` `program` は、Samba が暗号化パスワードの更新と同時に標準システムパスワードファイルも更新する場合に、利用する Samba サーバ上のUNIXプログラムを指定する。このオプションのデフォルトは、 標準の passwd プログラムである (通常 /binディレクトリに置かれる)。 コマンドを実行する際に必要なユーザ名を指定するには、通常`%u` 変数が用いられる。このプログラムが実行される際の入出力の制御は `passwd` `chat` オプションによって行われる。このオプションの詳細は、この章の「パスワードの同期」のセクションで前述した。

> #### 6.4.4.4 passwd chat

> このオプションは、Samba サーバのパスワード変更プログラムとやりとりする際の送信/応答文字列を、UNIX チャットスクリプトのように指定する。このオプションの詳細は、この章の「パスワードの同期」のセクションで記述してある。

> #### 6.4.4.5 passwd chat debug

> `yes` に設定すると、 `passwd` `chat` `debug` グローバルオプションは、パスワードチャットの際に Samba が送受信したすべての内容を記録する。パスワードチャットの際に Samba が送受信したすべての内容は、デバッグレベルを 100 にするとSamba のログに記録されるようになる。つまり情報を記録するには `log` `level` `=` `100` とする必要がある。この章で前述した「パスワードの同期」のセクションで、このオプションの詳細を記述してある。このオプションを設定した場合、デバッグログに平文のパスワードが記録されてしまうため、適切な対処を行なっていないとセキュリティ上の問題が発生するので注意すること。

> #### 6.4.4.6 password level

> SMB では暗号化されていない(平文の)パスワードは大文字で送られる (前述したユーザ名の場合と同じ)。しかし多くのUNIX ユーザは大文字と小文字の混在したパスワードを用いている。Samba はデフォルトでは、パスワードをすべて小文字にして認証を行い、先頭の文字を大文字に変えたりはしない。

> `username` `level` の場合と同様に、`password` `level` オプションを用いれば、パスワード中の大文字と小文字の組合せ方を様々に変更して認証を行なうことができる。このオプションには、共有への接続時に送信されたパスワードのうち、何文字までを大文字にして接続を試みるか、数値で指定する。このオプションは以下のように設定する:

>     [global]
>     	password level = 3

> この場合、Samba はパスワード中に大文字が3文字含まれる(monyo 訳注 3文字以下も含む)すべての組合せを試みる。数値が大きくなるほど、Samba がパスワード認証の際に行なう演算が増加し、共有に接続する際の速度が遅くなる。

> #### 6.4.4.7 update encrypted

> 暗号化パスワード形式に移行しようとしているサイトのために、Samba には移行を手助けするオプションがある。`update` `encrypted` オプションを使うと、サイトの平文パスワードから暗号化パスワードへの移行が簡単になるなる。このオプションを有効にするには以下のようにする:

>     [global]
>         update encrypted = yes

> こうすると誰かが共有に接続する度に、各ユーザのUNIXパスワードを暗号化したものを smbpasswd ファイルに格納する。このオプションを有効にするときには、`encrypt` `passwords` オプションは`no`にして、クライアントが Samba に平文パスワードを渡すようにしなければならない (この平文パスワードを用いてファイルが更新される)。各ユーザが少なくとも1回接続を行ったら、`encrypted` `passwords` `=` `yes`に設定して、暗号化パスワードのみを利用するようにすればよい。このオプションを機能させるには、予め smbpasswd ファイルにユーザのエントリを作成しておく必要がある。

> #### 6.4.4.8 null passwords

> このグローバルオプションは、Samba が (暗号化、非暗号化に関わらず) パスワードなしに設定されたアカウントからのアクセスを許すかどうかを制御する。デフォルト値は `no`である。以下のようにして設定を変更できる:

>     null passwords = yes

> このオプションがシステムに及ぼすセキュリティリスクに付いて熟知している場合を除き、このオプションは用いないことを強く推奨する。例えばシステムのパスワードファイルでシステムアカウント (binなど) をうっかり空パスワードにしていると、 このアカウントでアクセスが行われてしまう。

> #### 6.4.4.9 smb passwd file

> このグローバルオプションは暗号化パスワードデータベースファイルの位置を指定する。デフォルトは、 /usr/local/samba/private/smbpasswdである。以下のようにすれば設定を変更できる:

>     [global]
>     	smb passwd file = /etc/smbpasswd

> これは多くの Red Hat 系ディストリビューションにおけるデフォルトの位置である。

> #### 6.4.4.10 hosts equiv

> このグローバルオプションは、標準的なUNIXの hosts.equiv ファイルの位置を指定する。このファイルを使うと、ホストやユーザがパスワードなしで共有に接続可能になる。以下のようにしてファイルの位置を指定する:

>     [global]
>     	hosts equiv = /etc/hosts.equiv

> デフォルトでは如何なる hosts.equiv ファイルも設定されていない。このファイルを利用すると、本質的に非常に大きなセキュリティリスクが生じるからである。ネットワークが安全であると確信できる時以外は、このオプションを用いないことを強く推奨する。

> #### 6.4.4.11 use rhosts

> このグローバルオプションは、標準的なUNIXのユーザ用 .rhosts ファイルの位置を指定する。このファイルを使うと、別のホストからパスワードなしでアクセス可能になる。以下のようにしてファイルの位置を指定する:

>     [global]
>     	use rhosts = /home/dave/.rhosts

> デフォルトでは如何なる .rhosts ファイルも設定されていない。前述した`hosts` `equiv` オプションと同様、こうしたファイルの利用にはセキュリティ上のリスクが伴う。ネットワークが安全であると確信できる時以外は、このオプションを用いないことを強く推奨する。

6.3 認証とセキュリティ |  | 6.5 Windows ドメイン

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.