僕らが作業させていただいたものじゃないが、お付き合いのあるお客さんから「社内のSambaサーバのアクセスできなくなった」と相談を受けた。
プライベートでも可愛がってもらっているから、ちょっと拝見させていただくことに・・・。
現状
Sambaのファイルサーバに共有ディレクトリを作成していて、クライアントはWindows。
基本的にネットドライブとしてSambaサーバを設定していて、端末によってはショートカットをデスクトップに設置している。
簡単に共有サーバにアクセスできるような状態を作っているってことかな。
- クライアント: Windows8、Windows7、Windows Vista、Windows XP
- サーバ: CentOS 6.6
- Samba: Samba 3.6.23-12.el6
問題
Windows XPのみ、ネットワークドライブもしくはショートカットを設定してクライアントを再起動すると、接続できなくなってしまう状態。
アイコンをクリックしても、IDやパスワードを入力するダイアログも開かず、「接続できないよ~」とエラ-ダイアログがでてくるだけ。
ただ、エクスプローラーのアドレス部に、直接共有ディレクトリへのPATHを入力するとアクセスできるようになる。
Sambaの設定
Sambaサーバは以下のルールとなっていた。
ユーザーは以下のディレクトリにアクセスできるようだ。
- ユーザー固有の専用ディレクトリ
- ユーザーが所属しているグループディレクトリ
- 社員全員がアクセスできるディレクトリ
設定ファイルはグループ名で作られていた。
例えばこんな感じ。
- admin 管理者グループ【/etc/samba/admin.conf】
- group1 グループ1【/etc/samba/group1.conf】
- group2 グループ2【/etc/samba/group2.conf】
- group3 グループ3【/etc/samba/group3.conf】
/etc/samba/admin.conf
[global] include = /etc/samba/group1.conf include = /etc/samba/group2.conf include = /etc/samba/group3.conf include = /etc/samba/group4.conf include = /etc/samba/group5.conf
/etc/samba/group1.conf
[group1] comment = Group1 Directory path = /var/samba/group1/ read only = no create mode = 0666 directory mode = 0777 writable = yes
設定ファイルがいけないのか
基本的に問題なさそうだったのだが、設定ファイルを一つにまとめてあげると今回の問題がひとまず解決した。
グループのアクセス制限は以下みたいに追加してあげることで問題ないかな。
/etc/samba/smb.conf
[group1] comment = Group1 Directory path = /var/samba/group1/ read only = no create mode = 0666 directory mode = 0777 writable = yes valid users = @group1 @admin
WindowsのIDとSambaのIDが違う場合
再起動して共有にアクセスしようとすると、IDとパスワードを入力する必要がある。
これはまぁ仕方がないことだけど、これも簡略化したいとのこと。
どちらにしろ Windows XP Home Edition であれば入力する必要もあるし、対応を考えてみた。
マイクロソフトのサイトに「Windows XP でネットワーク ドライブの接続および切断を行う方法」というページがあった。ここを参考に以下バッチファイル作成し、スターツアップフォルダに置くことで解決できた。
ちなみに「user1」というユーザーのパスワードは「userpw」で、グループは「group1」に属している体で。
起動後時間をおかないとうまく接続できないようなので「再起動する度にネットワークドライブにログインなんて… 」のpingのアイデアを利用させてもらった。
@echo off ping localhost -n 30 > nul net use z: /y \\xxx.xxx.xxx.xxx\group1 userpw /user:user1
これで問題なく接続ができた。
そもそも未だにWindows XPをメインと使っている会社様には新しいPCの購入をオススメしていて、基本的にはそういった会社様の仕事は受けないスタンスなんだけど・・・対応しちゃったわけね。
まぁ費用的に移行ができない会社もあるわけで、でも基本的にはそういった会社の対応はしたくないわけで・・・。