クライアントからサーバのファイル/プリンタを使用するために接続する時、ユーザ名とパスワードがクライアントからサーバへ送られますが、この送り方には以下の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つうちいずれかの対処をする必要があります。
望ましいやり方とはいえませんが、緊急に Windows 側で対処する方法で以下のようにします。
この場合、Samba と Windows 間で接続時にパスワードが暗号化されずにネットワーク上を流れます。
そして、この方法には加えて以下の問題があります。
その理由は、WindowsNT は "EnablePlainTextPassword"=dword:00000001
としても、最初は暗号パスワードが送られ、SMBサーバにPlainTextPasswordを要求されて初めて平文パスワードを送りますが
(だから NT は 95 より認証に時間がかかる)
自動再接続などではユーザにだまって PlainTextPassword
を送ったりしないためです。
(パスワードとして保存されているのは、暗号化されたものだからです。)
ダイアログでユーザ名とパスワードを入れた時などには
PlainTextPassword が送られます。
これに対処する本来の正しいやり方を以下に述べます。
対処方法2〜4のいずれかを実施してください。
Samba 側で NT が暗号化したパスワードを認証できるようにします。 以下の方法は、Samba のバージョン 1.9.18以降 での手順です。 (バージョン 1.9.17以前の場合は、以下の方法は適用されません)
[global] セクションに以下の 2 行を追加して下さい。
[global] encrypt passwords = yes |
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 |
# chown -R root /usr/local/samba/private # chmod 500 /usr/local/samba/private # chmod 600 /usr/local/samba/private/smbpasswd |
# /usr/local/samba/bin/smbpasswd -e ユーザ名 |
とする必要があります。
(Samba 1.9.18の環境では上記は必要ありません)
# /usr/local/samba/bin/smbpasswd ユーザ名 New SMB Password: <パスワードの入力> Repeat New SMB Password: <パスワードの再入力> |
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)
この方法は、Samba 2.0以降でないと適用できないので注意下さい。
以下を参照下さい。