WindowsからSambaサーバ(VM)に繋ごうとしたときにクソハマったのでそのお話。
事象
- Sambaユーザでログインしないと利用できないリソースを作りたい
- Windowsのユーザ名・パスワードがSambaのユーザ名・パスワードと異なる
という状態の時にSambaサーバにブラウジングすると…
- 認証プロンプトすら出ずにネットワークエラーのログインプロンプトが出て、ログインできない。
- Windowsのクレデンシャルと異なるので認証プロンプトは出てほしい。
- map to guestの値を
Bad User
にするとSambaサーバにアクセスできてpublicなフォルダに関しては閲覧できるが、ユーザ制限をかけているフォルダにアクセスすると認証プロンプトが出るものの、正確なクレデンシャルを入力してもログインできない。
という現象に陥ってしまいました。
原因と対応方法
色々調べた結果、以下が原因でした。
- Sambaサーバにアクセスしようとすると、Windowsが勝手に現在ログインしているユーザ名、パスワードでログインしようとする
- IPC$がある場合は「ネットワークエラー」が出て認証プロンプトが出ない。IPC$がない場合は認証プロンプトが出る。
- 認証プロンプトが出た場合に何故かusername mapの設定が効かずログインに失敗する
- Sambaのユーザ名、パスワードだとログインは成功する
Bad User
だとログイン出来ているように見えるけど認証失敗していることによるGuestログインをしているだけなので、認証を必要とする共有フォルダにはアクセスできない。
IPC$が存在しない状態でWindowsプロンプトを使って以下のコマンドでログインするとusername mapが効きました
net use \\<server name>\ipc$ /user:<username> <password>
ちなみに、IPC$を削除してからログインしないと
同じユーザーによる、サーバーまたは共有リソースへの複数のユーザー名での複数の接続は許可されません。
サーバーまたは共有リソースへの以前の接続をすべて切断してから、再試行してください。
っていうエラーが出ちゃうのでIPC$を一回一回削除する必要があります。
IPC$を削除する場合は
net use \\<server name>\ipc$ /delete
とWindowsのプロンプト上でコマンドを打てばOK。
今回私がハマったのは、Sambaをいじる過程でIPC$ファイルが作成されてしまい、以降、「ネットワークエラー」のプロンプトしか出ない状態になった感じなんでしょうね…。
username mapの設定が効かないところなど色々と腑に落ちないところはありますが、とりあえずSambaのユーザとパスワードでログインは出来たし、コマンド使えばusername mapの設定通りに動きました。
色々と面倒なのでWindowsのパスワードとSambaのパスワードはなるべく同一のものにした方が良さそうっす。