つい先日、自宅の Windows 7 で Samba の共有領域内にあるディレクトリのシンボリック・リンクにアクセスすると、「アクセス許可がない」 と言って参照先にアクセスできなくなっていることに気が付いた。Samba で共有設定をしてある領域ではあまりシンボリック・リンクを使っていないのでしばらく気付かなかったが、共有フォルダー単位で follow symlinks = yes/no を意識して使い分ける設定は変えていないし、no にしてある場所以外では、以前は普通にアクセスできていた。

最初はまた Windows 7 固有の問題かと思ったが、Windows XP でも同様に拒否されること、少し前にファイル・サーバーの Samba を 3.4.5 → 3.4.7 にアップグレードしていることから原因は Samba にあると踏んで探してみると、案の定だった。

この一連のやり取りにあるように、まずシンボリック・リンクを利用した Samba の攻撃手法が明らかになり、その対策として Samba 3.4.6 で施された措置と、設定のデフォルト値が変わったことが原因のようだ。3.4.6 のリリースノートで言及されているし、3.5.0 でも同様とのこと。

今回の不具合の具体的な対策としては、smb.conf の global セクション内で、以下の設定を追加 (または変更) する。

unix extensions = no
wide links = yes

これで今まで通り、シンボリック・リンクの参照先にアクセスできるようになった。ただ僕の環境で軽く検証した限りでは、ユーザーのホーム・ディレクトリの中でのシンボリック・リンク等、場所によっては上記の設定変更をしなくても参照先にアクセスできるケースもあったので (ソースを追う程のスキルも気力もなし)、変更前の状態で問題がないなら、当面はそのままでもいいかもしれない。

しかし問題の Samba は 3.4.5 から 3.4.6 を飛ばして 3.4.7 にしたが、ちょうど飛ばしたバージョンでこう言う変更が加わっていたとは・・・。今回の教訓は、「飛ばしたバージョンの変更点も (面倒くさがらず) ちゃんと確認しましょう」 か。

Leave a Reply

*