#結論
[global]
map archive = no
#詳しいこと
Windowsでファイルを保存すると、「アーカイブ属性」という属性が自動的に付く。この属性は、xcopyコマンドなどでファイルをコピーする際に「アーカイブ属性が付いたファイルだけをコピーする。そしてアーカイブ属性を解除する」という挙動をするために使われる。つまり、増分バックアップを取るための属性である。
ところがこの属性、現代においてはあまり使われることは無い。なぜならCPUもハードディスクも十分に速いので、ほとんどのバックアップソフトはファイルの更新日時と先頭数KBのハッシュなど、別のやり方で増分を検出しているからだ。
##なぜ実行属性が付くのか
そこで、このあまり使われていないアーカイブ属性に目を付けたのが、sambaだ。unixには実行属性があるが、windowsには無い。無いなら、アーカイブ属性と実行属性を相互変換してしまえば良いではないか、ということである。
つまり、
Windowsでファイルを新規作成、または上書き保存する。
↓
ファイルにアーカイブ属性が付く。
↓
sambaがアーカイブ属性を実行属性に変換して受け取る。
↓
unixファイルシステム上のファイルに、実行属性が付く。
と、こういう仕組みになっている。
#解決策
そこで、smb.confにはmap archiveというフラグが用意されている。これは「アーカイブ属性と実行属性を相互変換するか、しないか」という、そのまんまのフラグである。
このフラグをnoにセットすることで、アーカイブ属性は無視されるようになる。
##map archive=noなsambaでr+xなパーミッションを設定したい
ちなみに、NTFSが扱えるシステムであれば、Everyoneと、グループと、オーナーのセキュリティ権限を変えることで、ちゃんと実行属性や書き込み属性に反映が出来る。WindowsXP以降であれば、「読み取りと実行」の権限がr+xに該当する。フルコントロールにすればrwxになる。map archiveをnoにしていても、ちゃんとパーミッションの設定は可能だ。