![]() |
Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly 共著第一版 1999 年 11 月 1-56592-449-5, 注文番号: 4495 416 ページ, 34.95 ドル ハードコピー版(英語)を購入する |
6.4 パスワード
パスワードはSambaにとって厄介な問題である。実際、これはSamba をインストールするとほとんどの場合にまず発生する大きな問題であり、Samba サポートグループにもかなりの質問が送られている。ここまでの章では、
guest
ok
オプションを各設定ファイルに記述し、接続の際にパスワードによる認証を不要にすることで、この問題を避けて来た。しかしここでは、ネットワーク上ではどういうことが行なわれているかを確認するために、Samba について突っ込んで見ていく必要がある。個々のクライアントから送られたパスワードは暗号化されている場合もそうでない場合もあり得る。もちろん暗号化されたパスワードの方がより安全である。暗号化されていないパスワードは、Chapter 3, Configuring Windows Clientsで我々が用いた Samba 用に修正された tcpdumpのようなパケットキャプチャプログラムを使うことで、簡単に読むことが出来てしまう。パスワードが暗号化されるかどうかについてはクライアントがSamba サーバに接続する際に利用しているOS に依存している。 表 6.5ではどのようなWindows OSがプライマリドメインコントローラで認証を行なう際に送信するパスワードを暗号化するかの一覧を示した。クライアントが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台のコンピュータは以下のようなネゴシエーションを行う:
サーバはあるプロトコル定めて応答し、暗号化パスワードを用いることを伝える。このとき、ランダムに生成された8バイトのチャレンジ文字列がクライアントに返却される。
クライアントはチャレンジ文字列をキーに用いて、既に暗号化されているパスワードをプロトコルのネゴシエーションによって指定された方式を用いて暗号化する。最終的にクライアントは結果をサーバに返却する。
サーバは、データベースに格納されている暗号化パスワードを用いて同様のことを行う。結果が合致したら、パスワードは同じものであるとみなされ、ユーザは認証される。
認証の過程で本来のパスワードがネットワーク上を流れることはないものの、 smbpasswd ファイル中に格納された暗号化されたパスワードを信頼しないユーザから保護するように、細心の注意を行なうことが必要である。パスワードが持ち出されると、信頼しないユーザが今述べたアルゴリズムの各ステップを再現することで、システムに侵入することが可能となってしまう。暗号化されたパスワードは平文のパスワードと同様に注意して扱う必要がある。暗号化の世界において、これは 平文と等価な データである。もちろんクライアント上に置いても平文と等価なパスワードが安全に保護されるように気を配る必要がある。
以下のグローバルパラメータを smb.confに追加することで、Samba が暗号化パスワードを受け付けるように設定することが可能である。以下では明示的にSamba のパスワードファイルの位置を指定していることに注意:
[global] security = user encrypt passwords = yes smb passwd file = /usr/local/samba/private/smbpasswdSamba は smbpasswd ファイルが初期化されるまで、如何なるユーザからのアクセスも受け付けない。
6.4.1 クライアント側で暗号化パスワードを無効にする
インターネットを経由しての telnet や rlogin でのアクセス等において UNIX の認証機構は十年近くにわたって利用されて来ているが、これには良く知られたセキュリティ上の問題点がある。平文のパスワードがインターネットを経由して送信され、悪意を持った盗聴者により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 = no6.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
で埋められる。パスワードがない共有に対しては誰でもアクセスすることが可能である。一方パスワードを無効にする場合は、32個の文字X
になる。null
passwords
オプションが設定されていない限り、Samba はパスワードがないユーザに対するアクセスを許可しない。- NT パスワードハッシュ
これはWindows NTクライアントが用いるパスワードを示す32ビットの16進の文字列である。これはユーザのパスワード(16ビットのリトルエンディアンなUnicode文字列で表現されている)をMD4 アルゴリズムを用いてハッシュ化したものである。このパスワードはハッシュ前に大文字に変換されない。
- Account Flags
このフィールドはブラケット([])で囲まれた11文字からなる。以下の文字が順不同で設定される可能性があり、それ以外はスペースである必要がある:
U
このアカウントは通常のユーザアカウントである。
D
このアカウントは現在無効になっており、Samba はログインを許可しない。
N
このアカウントにはパスワードがない。
W
これはマシンアカウント(workstation trust account)を表し、Samba がプライマリドメインコントローラ(PDC)として機能する時に、Windows NTマシンをドメインに参加させるために用いる。
- 最終更新時刻
これは
LCT-
に続いて最終更新時刻を1970年1月1日からの秒数で16進表示した文字列からなっている。6.4.2.1 smbpasswd へのエントリに追加
smbpasswd ファイルに新規エントリを追加するにはいくつかの方法がある:
-a
オプションを付けて smbpasswd プログラムを呼び出すことで、現在サーバ上にUNIXのアカウントを持っているユーザであれば誰でも自動的に追加することが可能である。このプログラムは /usr/local/samba/bin ディレクトリ中に存在する。/usr/local/samba/bin ディレクトリにある addtosmbpassを用いることも可能である。これはシステムのパスワードファイルを解析し、SMBパスワードファイルに追加したいと考えている各エントリのユーザ名とUIDを取り出す単純な awk スクリプトである。残りのユーザのエントリにはデフォルト値を挿入する。これは後程 smbpasswd プログラムを用いて更新することが可能である。このプログラムを用いるには、システムにある awkを正しく指定するようにファイルの1行目を編集する必要があるかも知れない。
どちらの方法も利用できない場合は、 smbpasswd ファイル中にデフォルトのエントリを手作業で追加することも可能である。以下のエントリは1行である。各フィールドはコロンで区切られ、以下のようになっている必要がある:
dave:500:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:これにはシステムパスワードファイルから導き出されるユーザ名とUID、32個の文字
X
からなる2つのフィールド、上記で説明したaccount flags と最終更新時刻が含まれる。このエントリを追加した後で smbpasswd プログラムを使い、ユーザのパスワードを設定する必要がある。6.4.2.2 暗号化パスワードの変更
smbpasswd ファイル中にある暗号化パスワードを変更する必要がある場合も smbpasswd プログラムを利用することが可能である。このプログラムは暗号化パスワードのファイル自身と同じ名前であるため、パスワードファイルとパスワードを変更するプログラムを混同しないように注意すること。
smbpasswd プログラムはUNIXアカウントのパスワードを変更する為に用いる passwd プログラムと基本的に同じように利用できる。このプログラムは(root ユーザでない場合)単純に古いパスワードを尋ね、次に新しいパスワードを2回問い合わせる。画面上にパスワードの文字列は表示されない。
#
smbpasswd daveOld SMB password: New SMB password: Retype new SMB password: Password changed for user daveこのコマンドの実行後に smbpasswd ファイルを参照することで、LAN Manager と NT のパスワードハッシュが適切な位置に格納されていることを確認できる。ユーザがデータベース中のパスワードのエントリを暗号化することで、暗号化パスワードを用いて共有に接続することが可能になる!
6.4.3 パスワードの同期
通常のパスワードとそのパスワードを暗号化したものの両方が存在するため、両方のパスワードを変更しようとすると何かとトラブルが発生する。すべての場合に対応できる訳ではないが、Samba にはパスワードを同期させる為の機能がある。システムの暗号化パスワードが変更されたとき、自動的に通常のパスワードも変更するための設定オプションである。この機能は
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
という文字が続き、これらの文字の間や前後はどんな文字が存在しても構わない文字列の出力を期待していることを示す。これにより、Samba はこの条件を満たす出力があるまでずっと待ち続けることになる。Samba が期待される出力を受け取れないときは、パスワードの変更は失敗する。次の文字グループは、Samba が最初の文字グループに合致する出力を受信した際に、Samba が送信する内容を示す。ここに
%o\n
という記述がある。この返答には二つの内容が含まれている。一つは%o
変数で、古いパスワードを指定しており、\n
改行記号が後に続いている。その為、実際には、古いパスワードがパスワード変更プログラムの標準入力に送信され、その後に「改行」キーが押されたのと同等のことが行なわれることになる。更にそれに対する応答の文字グループがあり、その後にパスワードチャットプログラムへの返信が続く(標準的な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 がパスワードチャットの際に送受信したすべての情報が debug lebel に 100 を指定することで、Samba のログに記録されることになる。そのため、上の例で新しい log level のオプションを入力した。これは非常に大量のエラーログを出力するため、 /bin/passwdに代えて
passwd
program
に独自のスクリプトを設定する際に、パスワードの変更時にどのようにやりとりが行なわれているかを記録するのに用いる。ログファイルには、平文で記述されたパスワードが含まれているため、アクセス権で厳格に保護し、必要な情報を入手し次第削除すること。Samba を実行しているOS によっては、パスワードを辞書攻撃等から守るために、複雑なパスワードが必要な場合もある。パスワードを変更する際には、これらの制限にも注意して行なうことが必要である。
パスワードの同期機能は完全ではないと前述したが、これは標準のパスワードファイルがユーザによって更新されても、 smbpasswdファイル中の暗号化パスワードを同期する方法がないためである。この問題に付いては、多数の対応策が存在しており、NIS や無償で入手できる PAM(pluggable authentication modules) の実装もその一つである。しかし、これらもすべての問題を解決するには到っていない。将来的に Windows 2000 が出荷されれば、LDAP(Lightweight Directory Access Protocol) への対応によって、パスワードの同期問題を過去のものとしてくれるであろう。
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
オプション(described earlier)で指定したプログラムに、ユーザ名と新しいパスワードを渡すことで、標準の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プログラムを指定する。このオプションのデフォルトは、通常 /binディレクトリに存在する 標準の passwd プログラムである。コマンドを実行する際に必要なユーザ名を指定するために、通常%u
変数が用いられる。このプログラムが実行される際の入出力を制御するのがpasswd
chat
オプションである。この章で前述した "Password Synchronization" セクション中でこのオプションの詳細を記述している。6.4.4.4 passwd chat
このオプションは、UNIX チャットスクリプトのように、Samba サーバ上のパスワード変更プログラムとやりとりする際の送信/応答文字列を指定する。この章にある "Password Synchronization" セクションでこのオプションの詳細を記述してある。
6.4.4.5 passwd chat debug
yes
に設定した場合、passwd
chat
debug
グローバルオプションは、パスワードチャットの際に Samba が送受信したすべての内容を記録する。パスワードチャットの際に Samba が送受信したすべての内容は、debug level 100 を指定することで、Samba のログに記録されるようになる。必要に応じて、情報を記録する為にlog
level
=
100
にすること。この章で前述した "Password Synchronization" セクション , で、このオプションに付いて詳細を記述してある。このオプションを設定した場合、デバッグログに平文のパスワードが記録されてしまうため、適切な対処を行なっていないとセキュリティ上の問題が発生することに注意すること。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
オプションと同様、こうしたファイルの利用にはセキュリティ上のリスクが伴う。ネットワークが安全であると確信できる時以外は、このオプションを用いないことを強く推奨する。
© 1999, O'Reilly & Associates, Inc.