うちの会社のCentOS 6.8のsamba-3.6.23-35はワークグループのSTANDALONEサーバーとしてファイル共有しています。Windows側で定期的なパスワード変更が必要だったためWindows PCでパスワードを変更してから、CentOS側のsambaもそれに合わせてsmbpasswdコマンドでパスワード変更しようとしたところ以下のような感じになりました。
[foo@linux ~]$ smbpasswd Old SMB password: New SMB password: Retype new SMB password: cli_negprot: SMB signing is mandatory and the server doesn't support it. machine 127.0.0.1 rejected the negotiate protocol. Error was : NT_STATUS_ACCESS_DENIED. Password changed for user foo
で、Windowsからsambaの共有フォルダに接続できません。Password changedと出ていますが、どうもパスワードが変更されていないようです。
アクセスできないのは困るので調べてみるとRed HatのKnowledgebaseがヒットしたのですが、会員でないので解決方法が読めません。CentOSのフォーラムの投稿もあったのですが、どうも解決してなさそうですし。どうやらこの4月頃あったsambaのセキュリティ対応のアップデートが原因のようで、それが今回のパスワード変更でうちの環境で出てきたと。
どうしたもんだろうと、いったん、SMBユーザーを削除と再作成を試してみました。
[root@linux ~]# smbpasswd -x foo Deleted user foo.
と削除して、
[root@linux ~]# smbpasswd -a foo New SMB password: Retype new SMB password: Added user foo.
と作成とパスワードの設定をすると、問題なく共有フォルダに接続できるようになりました。しかし、パスワード変更のたびにユーザーの削除と作成をするのもたいへんだぞ、とさらに調べてみると、以下の投稿を発見。
https://groups.google.com/forum/#!topic/linux.samba/mIgJJDTniaQ
これによると、smb.confに
client ipc signing = auto
を追加することで解決したとのこと。実際うちの環境で試してみて、一般ユーザーのsmbpasswdでパスワード変更できるようになりました。
client ipc signingってなんだろうということなんですが、こちらのページによると4月にあったBadlockの問題修正で追加されたIPC$接続のSMB署名に関するオプションとのこと。ともかくこれで解決してよかったです。