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

解説

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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: <パスワードの再入力>

     

対処方法3. 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ワークステーションでも1台だけでもOK)

 

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

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

以下を参照下さい。

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


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