一般ユーザで smbpasswd コマンドが使えない

提供: Samba-JP
J16から転送)
移動先:案内検索
KB番号 J0016
最終更新日 2002/04/02
作成者 たかはしもとのぶ
最終更新者

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.2.x
  • Samba 2.0.x
  • Samba 1.x

状況

一般ユーザが smbpasswd コマンドを利用してパスワードの変更を行なおうとすると、以下のようなエラーが発生して変更できません。 ただし root 権限のあるユーザで変更することは可能です。

原因

smbpasswd コマンドで Sambaのパスワードを変更する際、コマンドを呼び出したのが root かどうかで内部的な動作が異なります。root から呼び出した場合は直接 smbpasswd ファイルをアクセスしてパスワード(正確にはパスワードのハッシュ値)を書き換えます。

一般ユーザで呼び出した場合は、127.0.0.1 で待受けている smbd とTCP/IPで通信を行なってパスワードを変更します。ただし、-r <ホスト名>オプションで指定したホスト上のパスワードを変更する場合は、root であっても smbd と通信を行なってパスワードの変更を行ないますので、これは、-r オプションで localhost を指定した場合でも同様です。

以下、説明の便宜上前者を root 権限でのパスワード変更、後者を一般ユーザ権限でのパスワード変更と呼称します。

問題の事象は、root 権限でのパスワード変更と一般ユーザ権限でのパスワード変更とで内部的なロジックが異なることが原因で発生します。

最も多いのは一般ユーザ権限でのパスワード変更を行なおうとした際に、

$ smbpasswd
Old SMB password:
New SMB password:
Retype new SMB password:
machine 127.0.0.1 rejected the session setup. Error was : Not listening for calling name.
Failed to change password for smbuser

のようなエラーが発生する場合です。このような出力が発生する場合は、hosts allowやhosts denyオプションの設定で、127.0.0.1 へのアクセスを拒否してしまった場合が考えられます。これらのオプションを設定する際は、必ず 127.0.0.1 からのアクセスを許可するように設定してください。

root 権限で smbpasswd コマンドを利用する場合は、直接 smbpasswd ファイルを書き換えてしまうため、この問題は顕在化しません。

なお、適切なパスワードを入力しても以下のように出力されてしまう場合については、J0400: unix password syncが機能しないを参照してください。

$ smbpasswd
Old SMB password:
machine 127.0.0.1 rejected the password change: Error was : The specified password is invalid.
Failed to change password for smbuser
$ 

この技術情報は samba-jp:12565 からの一連のスレッドの議論などを元に作成されています。