Sambaの設定で作らせない
Sambaのファイル共有には、アクセス出来ないファイルやディレクトリを指定するvetoオプションが用意されていて、 smb.conf に次のように拒否したいファイル名を / 区切りで列記指定することで、 .DS_Store の作成を拒否することが出来ます。(下記は全共有に適用する場合)。
1 2 3 |
[global] veto files = /*.DS_Store/Thumbs.db/ delete veto files=yes |
LinuxベースのSynology NASでは、DSMのWebUI上で設定が可能です(以下はDSM6.2.4の動くDS212Jでの例)。「コントロールパネル」から「ファイルサービス」を選び、SMBタブの詳細設定の中にある「ファイルを拒否」を有効にして、ファイル名条件をを入力して適用すると、ファイル共有サービスが再起動して設定が反映されます。
ただ、 delete veto files=yes に相当する項目は見当たらないので、コンソールから設定しておきます。Synology DSMの /etc/samba/ 内は、次のような構成になっていて少し特殊です。
1 2 3 4 5 6 |
$ ls -l /etc/samba drwxr-xr-x 2 root root 4096 Mar 5 22:31 private -rw-r--r-- 1 root root 287 Dec 4 15:32 smb.conf -rw-r--r-- 1 root root 4711 Feb 24 2017 smb.conf.bak -rw-r--r-- 1 root root 84 Mar 5 22:31 smbinfo.conf -rw-r--r-- 1 root root 4296 Dec 4 15:32 smb.share.conf |
smb.conf には基本的な項目しかなく、先ほど設定した veto files 項はその下の smbinfo.conf にあったので、ここへ追記しておくことに。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ cat /etc/samba/smbinfo.conf [global] veto files=/*.DS_Store/ smb2 leases=yes enable veto files=yes $ sudo vi smbinfo.conf [global] veto files=/*.DS_Store/ smb2 leases=yes enable veto files=yes delete veto files=yes ←【追記】 |
このままコンソールからSambaサービスを再起動して設定を反映させます。
1 2 3 4 5 |
$ sudo synoservice --restart samba $ sudo synoservice --status samba Service [samba] status=[enable] required upstart job: [smbd] is start. |
試しに.DS_StoreファイルをUbuntuから投げつけてみると、次のようなメッセージでブロックされました。
OpenWRTのSambaで作らせない
OpenWRTにおいてconfファイルは一般的に、システムやサービスの起動時に /etc/config/ にある設定ファイルを元に生成されるものなので、これを直接編集しても意味が有りません。今回の設定に当たっては、OpenWRTのSambaの仕組みがとても丁寧に解説されているこちらの記事が大変参考になりました(鳴謝!!)。
smb.conf が生成される流れはおおよそ次の通りなので、グローバルな設定に適用させるなら雛型となるテンプレートファイルを編集するのが良さそうです(UCI設定に記述する方法も試しましたが、何故か smb.conf に反映されず)。
1 2 3 4 |
- /etc/samba/smb.conf.template # 雛型 - /etc/config/samba # UCI設定 | +----> /etc/samba/smb.conf # confファイル |
テンプレートファイルに以下の追記して、
1 2 |
veto files = /*.DS_Store/ delete veto files = yes |
サービスを再起動後、再生成された smb.conf の中に追記されているのを確認。
1 2 3 4 5 6 7 |
# /etc/init.d/samba restart # cat /etc/samba/smb.conf [global] -略- veto files = /*.DS_Store/ delete veto files = yes -略- |
/etc/config/ にある設定ファイルと異なり、 /etc/samba/smb.conf.templete はシステム設定バックアップの対象外なので、このままではファームウェアアップグレード時に引き継がれません。OpenWRTのWebインターフェイスLuCIで次の遷移を辿り、
1 |
SYSTEM >> Backup / Flash Firmware >> Backup file list |
編集したテンプレートファイルをフルパスと共に追記して適用しておくことで、バックアップの対象に加えることが出来ます。
Windows Serverで作らせない
Windows Serverでは、ファイルサーバリソースマネージャ(FSRM)を使って、登録したファイル名のファイル作成を拒否することが出来ます。インストールされていない場合は、「Windows Serverのロールと機能の追加」から追加インストールしましょう。
サーバマネージャ右上のツールからFSRMを起動。
今回利用するのはファイルのスクリーニング機能です。まず左ペインのファイルグループを選び、右側の何もないところで右クリックして新規ファイルグループの作成を選択。適当な名前とブロックしたいファイル名を列記して保存します。
そしてファイルスクリーン項で、新規もしくは既存のファイルスクリーンに先ほどのファイルグループを追加します。スクリーンタイプはパッシブでは監査のみなので、ブロックを伴うアクティブを選択する必要があります。
別のWindows PCから.DS_Storeファイルを投げつけてみますが、アクセス拒否でエラーになりました。