ファイルを見えなくする設定は注意が必要 (vetoとか) [netatalk]
samba及びnetatalkには、サーバ側にある任意のファイルをクライアント側から見えないようにする設定があります。
何となく見えると気持ち悪いから、という理由で設定している人もいるようですが、これは運用上の安定性やセキュリティも絡む事ですから、あまり軽い気持ちで扱うべきではないでしょう。
一覧に表示されないだけなのか、存在しない事になっているのか、この区別は重要です。
単に一覧に表示されないだけの場合、ユーザは気付かなくても確実にファイルは存在しています。フォルダを丸ごとローカルディスク上にコピーした場合、その中にある見えないファイルも一緒にコピーされる事に注意してください。それをアーカイブしてお得意先にメールで送るかもしれません。見えないファイルに機密事項が含まれていたらどうしますか。
全く存在しないことになっている場合、クライアントからはそれにアクセスする手段は存在しません。フォルダを丸ごとコピーしてもそのファイルはコピーされません。逆に、それがクライアントに必要な情報を含んでいる場合、何らかの問題が発生することは容易に想像出来ます。
sambaの場合
DOSの時代より、hiddenというファイル属性があります。これはその名の通り、存在するにも関わらず表示されなくする属性です。dir
コマンドの場合、/ah
オプションを付けることで表示出来ます。Windowsのエクスプローラの場合は、フォルダオプションの表示タブですべてのファイルとフォルダを表示する
を選べば表示出来ます。
sambaでは、smb.conf
に設定項目があります。
hide dot files =
- ドットファイルをhidden属性にする。
hide files =
- 指定した名前のファイルをhidden属性にする。
veto files =
- 指定した名前のファイルを存在しない事にする。一覧することもアクセスすることも出来ない。
隠したくなるファイルやフォルダには以下のようなものがあります。
これらにはnetatalkが作るものとクライアントが作るものがあります。クライアントであるMacOSのバージョンによって、作るフォルダが違うところが面倒です。
.AppleDB
.AppleDouble
.AppleDesktop
Network Trash Folder
.DS_Store
.VolumeIcon.icns
Icon^M
.FBCIndex
.FBCLockFolder
TheFindByContentFolder
TheVolumeSettingsFolder
Temporary Items
.TemporaryItems
netatalkが作るものは、veto files =
に設定すべきでしょう。事情を知らないsambaユーザがヘタにいじると、netatalkの動作が不安定になります。
MacOSXがsamba経由で作る._
で始まるファイル、すなわちAppleDouble Header Fileは、veto files =
に設定すべきではないでしょう。MacOSXからsambaにコピーした途端、AppleDouble Header Fileにアクセス出来なくなります。これにはリソースフォーク等のMacにとって必要な情報が含まれています。
Icon^M
はクセものです。最後にコントロールコードがついており、veto files =
で設定するにはワイルドカードを使ってIcon?
にする必要があります。この設定をすると、Icona
とかIconB
みたいなファイル名もアクセス出来なくなります。この点をなんとかするパッチがあります。(私は試してませんが)
Sambaでveto files=/Icon\015/と書けるようにするパッチ
netatalkの場合
MacOSにはinVisibleというファイル属性があります。これはDOS/Windowsのhidden属性と同様で、Finderで表示出来なくするだけのものです。
MacOSXからはinVisibleだけでなくドットファイルもFinderに表示されません。ただしTerminal.appからls
コマンドを使えば前者は表示されます。-a
オプションを付ければ後者も表示出来ます。
netatalkでは、AppleVolumes.default
に設定項目があります。
veto:
- 指定した名前のファイルを存在しない事にする。一覧することができない。
ただしバグがあります。一覧に出てこないので存在しないように見えますが、やろうと思えばアクセス出来ます。(netatalk 2.0.5で直った)
sambaのveto files =とは違う事に注意してください。
デフォルトのnetatalkの場合、クライアントはサーバ側のドットファイルに全くアクセス出来ません。
クライアント側からドットファイルを作った場合、サーバ上では:2e
で始まるファイル名になるので、本来のドットファイルと別扱いになります。
ただし、usedots
オプションを使うと、両者の区別がなくなります。
ありがとうございます。
近々、修正いたします。
いつもとても勉強になっています。
これからもよろしくお願いします。
by なか (2007-04-27 17:42)