## Windows98 , WindowsNT4.0 , Windows2000からSambaを使用するときの注意事項

### 解説

クライアントからサーバのファイル／プリンタを使用するために接続する時、ユーザ名とパスワードがクライアントからサーバへ送られますが、この送り方には以下の２つの方法があります。

- 平文パスワード(Plain Text Password)
  TELNETやFTPと同じように、ネットワーク上にパスワードをそのまま流します。
  パスワードを盗むことが容易にできます。
- 暗号パスワード(Encrypt Password)
  ネットワーク上にパスワードを暗号化して流します。
  パスワードを盗むことは容易ではありません。

初期のWindows95は、平文パスワード(Plain Text Password)でパスワードを送信していたので、UNIX側の/etc/passwdを使って認証ができました。
しかし、Windows98 , WindowsNT4.0 , Winodws2000 は、暗号化パスワードに変わってしまったで、そのままではSambaの認証ができません。
（UNIX側の/etc/passwdでは認証できません）

例えば、WindowsNT4.0の場合、接続で「そのアカウントは、このワークステーションからのログインを許可されていません」というエラーになります。

この問題は、Windowsをバージョン アップしたり、サービスパック（SP)をあてた時、パスワードの送信方法が平文(Plain Text Password)から暗号(Encrypt Password)に変わると発生するので注意が必要です。

以下に、クライアントを分別します。

- 平文パスワード(Plain Text Password)を使用するクライアント
  - パスワードセキュリティ強化の修正情報を適用していない初期のWindows 95
  - WindowsNT 4.0 SP2 以前のもの
  - WindowsNT 3.51以前
  - Sambaの smbclient と smbsh
  - Winodws3.1 の LANMANクライアント
- 暗号パスワード(Encrypt Password)を使用するクライアント
  - Windows 95に以下のパスワードセキュリティ強化修正情報を適用したもの
    (http://www.microsoft.com/japan/win95/security/ )
  - Windows 98
  - Windows2000
  - Windows NT 4.0 SP3以降

暗号化パスワードを使用するWindows98 , WindowsNT4.0 , Winodws2000 などから、Sambaを使用できるようにするには、以下の４つうちいずれかの対処をする必要があります。

### 対処方法１． Windows 側でパスワードを暗号化せずに送信するようにする

望ましいやり方とはいえませんが、緊急に Windows 側で対処する方法で以下のようにします。

- Windows NT の場合
  Samba ソースを展開してできる samba-xxxx/docs/NT4_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。
- Windows 98 または Windows 95 の場合
  Samba ソースを展開してできる samba-xxxx/docs/Win95_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。
- Windows 2000 の場合
  Samba ソースを展開してできる samba-xxxx/docs/Win2000_PlainPassword.reg をエクスプローラから実行するかREGEDITで取り込みます。

この場合、Samba と Windows 間で接続時にパスワードが暗号化されずにネットワーク上を流れます。

そして、この方法には加えて以下の問題があります。

- WindowsNTおよびWindows2000で Samba のホームディレクトリをネットワークドライブに割り当て、「ログイン時に再接続」チェックを有効にしても、Windows を再起動してネットワークドライブにアクセスしようとすると、エラーになったり、パスワードが違います、と言われてしまいます。
  あるいは Samba プリンタの使用で毎回パスワードの入力が必要になります。

その理由は、WindowsNT は "EnablePlainTextPassword"=dword:00000001 としても、最初は暗号パスワードが送られ、SMBサーバにPlainTextPasswordを要求されて初めて平文パスワードを送りますが (だから NT は 95 より認証に時間がかかる) 自動再接続などではユーザにだまって PlainTextPassword を送ったりしないためです。
(パスワードとして保存されているのは、暗号化されたものだからです。)
ダイアログでユーザ名とパスワードを入れた時などには PlainTextPassword が送られます。

これに対処する本来の正しいやり方を以下に述べます。

対処方法２〜４のいずれかを実施してください。

### 対処方法２． Samba 側で暗号化されたパスワードを扱うことができるようにする

Samba 側で NT が暗号化したパスワードを認証できるようにします。 以下の方法は、Samba のバージョン １．９．１８以降 での手順です。 （バージョン　１．９．１７以前の場合は、以下の方法は適用されません）

1. smb.conf を変更する

   [global] セクションに以下の 2 行を追加して下さい。

   `[global] encrypt passwords = yes`

2. パスワードファイルを用意する

   encrypt passwords = yes とした場合、Samba側のユーザ認証は UNIX の認証方法を用いず、 WindowsNTと同じ方法で行います。その為、Samba専用のパスワードファイルを用意する必要があります。

   コンパイル時に SMB_PASSWD_FILE で指定したファイルを作成します。
   （デフォルトは、/usr/local/samba/private/smbpasswd　です）

   UNIX のパスワードファイルから、Samba 用のパスワードファイルを作成するスクリプトが用意されています。
   作成は root ユーザになって、Samba の source/script ディレクトリにある mksmbpasswd.sh を使って行います。

   # cat /etc/passwd | sh mksmbpasswd.sh > /usr/local/samba/private/smbpasswd

   これにより、smbpasswd ファイルとして以下の様な内容のファイルが生成されます。
   （＊注：Samba 1.9.18と2.0では以下の形式が異なります）

       foo:111:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:user foo:/home/foo:/bin/csh
       bar:112:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:user bar:/home/bar:/bin/sh

3. smbpasswd ファイルはrootユーザ以外からはアクセスできないようにする

   # chown -R root /usr/local/samba/private # chmod 500 /usr/local/samba/private # chmod 600 /usr/local/samba/private/smbpasswd

4. Samba 2.0での注意事項
   Samba 2.0の環境でmksmbpasswd.sh を用いて smbpasswd ファイルを作成すると、デフォルトではSambaに接続できません。
   ユーザがSambaを使用できるようにするには、smbpasswd コマンドの "-e" オプション（enable）を使って

   # /usr/local/samba/bin/smbpasswd -e ユーザ名

   とする必要があります。
   （Samba 1.9.18の環境では上記は必要ありません）

5. smppasswdファイルを作成したら、各ユーザのパスワードを設定
   パスワードの設定を行うには、SMB_PASSWD で指定したパスワード変更プログラムにより、各ユーザのパスワードを設定します。
   （デフォルトは、/usr/local/samba/bin/smbpasswd　です）

   # /usr/local/samba/bin/smbpasswd ユーザ名 New SMB Password: `<パスワードの入力>` Repeat New SMB Password: `<パスワードの再入力>`

### 対処方法３． WindowsNTにユーザ認証をしてもらう

Sambaではユーザ認証をせずに、WindowsNT（サーバでもワークステーションでもOK)に認証してもらう方法です。

Sambaは、パスワードをNTにそのまま渡すだけなので、encrypt passwords = yesとする必要はありませんし、/usr/local/samba/private/smbpasswdも作成する必要もありません。

(NTマシンに登録されておらず、Sambaマシンに登録されているUNIXユーザで認証するなら、encrypt passwords = yesとして、/usr/local/samba/private/smbpasswdを作成する必要があります）

/usr/local/samba/lib/smb.confの[global]セクションを以下のように変更します。

security = server
workgroup = DOM
password server = DOMPDC DOMBDC1 DOMBDC2

ここで、DOMはNTドメイン名、DOMPDCはNTのプライマリ・ドメイン・サーバ名、DOMBDC1 DOMBDC2はバックアップ・ドメインコントローラ名です。（NTワークステーションでも１台だけでもOK)

### 対処方法４． NTドメインにSambaサーバを参加させる

この方法は、Samba 2.0以降でないと適用できないので注意下さい。

以下を参照下さい。

Samba 2.0 ドメイン・クライアント・サポート

小田切 耕司odagiri@samba.gr.jp
http://www.samba.gr.jp/