VPN上にsambaサーバー立ち上げて、セグメント毎にパーティション分けて、ネットワークアドレスでアクセスコントロールして、cronで定期的にバックアップうっかり削除なんかも復元できるようにしているサーバーがあるんですが、ひょんなことから特定の人だけで使いたいという要望がでてきました。
特定の人は2拠点に分かれており、その2拠点には大勢の社員がいてるので、ネットワークアドレス(24bitまで)の制御ではダメで、仮に32bitまでみてコントロールさせてもいいのですが手動でそのアドレスさえ割り振っちゃえばその2拠点からなら誰でもアクセスできてしまうので、ちょいと試行錯誤しました。
まずはsmb.confに以下の内容を追記
[passwdFolder]
comment = パスワード制限共有フォルダ
path = /usr/local/share/xxx/yyy
guest ok = no
hosts allow = 192.168.101. 192.168.102. 127.
writable = yes
printable = no
security = user
browseable = no
client ntlmv2 auth = yes
valid users = User1 User2
ポイントはこの3行
1.通常 globalに入れちゃう security = user を[passwdFolder]にだけ適用
2.browseable = no これを入れることによって、フォルダが非表示になるので、フォルダ名まで知っている人だけがわかる。
3.client ntlmv2 auth = yes Vista business,Vista home basic,XP Pro,XP Homeなど様々なOSがあり、動きが異なったので、認証方式を明示。
またすべてのOSで \\192.168.100.1(Sever IP)\passwdFolder\にアクセスすると、なぜかユーザ名が192.168.100.1\Guestになり変更できない…
なので、
Vista business,Vista home basic,XP Pro は
コントロールパネル -> ユーザ
(ログオンするユーザを選択し)ネットワークパスワードの管理に
server 192.168.100.1
ユーザ 192.168.100.1\loginUserName
を登録してしまえばOK。
あとは認証方式を揃えるために、レジストリエディタで以下の値を2に変更。
HKEY_LOCAL_MACHINE>System>CurrentControlSet>Control\Lsa\LmCompatibilityLevel
でもXP Homeにはネットワークパスワードの管理に追加はありません(^^;
でそこでcmd立ち上げて、
net use \\192.168.100.1\passwdFolder /user:User1
と入力すればパスワードを求められますので、 smbpasswd -s User1 で指定したパスワードを入力すればOKです。
この接続が確認できれば、ファイル名を指定して実行から \\192.168.100.1\passwdFolder でアクセスすればフォルダの中身が見えるはずです。
案外こういう運用されて例って少なかったし、Windowsとの相互設定の問題もあったので自己メモとして。